当前位置: 首页 > news >正文

Bitcoin虚拟货币原理

Bitcoin 是最近热议的话题,不过中文资料非常少,这篇文章不会评论 Bitcoin 的意义和利弊,只希望以尽简单的方式介绍什么是 Bitcoin,让更多人了解到这个有趣且了不起的创意。同时笔者不断修正或补充内容,尽量做到当有人问到“什么是Bitcoin”时,只需把这篇文章的 网址发给他就可以了。

  初步认识Bitcoin

  Bitcoin 是一种网络虚拟货币,跟腾讯公司的Q币类似,你可以使用Bitcoin购买一些虚拟的物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,你也可 以使用Bitcoin购买现实生活当中的物品。跟Q币不同的是,Bitcoin的发行、流通和管理权不属于某一个人、组织、公司或者国家,或者换一句话 说:它是平等地属于参与其中的每一个人。每个人只要有一台能接入互联网的计算机,然后通过运行一个自由的开放源代码的软件都可以参与其中,所有参与的人当 中不存在所谓的管理员、中心节点或者特权人员,是一个平等的点对点(P2P)的系统,统称 Bitcoin 系统。

虚拟货币Bitcoin

  为什么有人愿意使用Bitcoin?

  Bitcoin系统目前能保证如下几点:

  1、Bitcoin在某一个时间点上总数量是确定的;

  2、Bitcoin的数量以缓慢的速度增长,不会突然增加;

  3、Bitcoin最终会增长到一个总量,不会无限增长;

  4、以上几个特征是由一个公认的数学公式来提供保证,不需要任何人、组织或国家来提供保证。

  5、Bitcoin的流通不需中间机构,转账过程不受干预。

   从上面的特征可以看到Bitcoin具有作为一般等价交换物的潜质,某些方面甚至比黄金更为理想。刚开始的时候Bitcoin可能用于交换低价值的虚拟 物品,比如实现不同网站(/游戏)之间的积分、虚拟物品等交换,可以打通所有网站(/游戏)的虚拟金融系统,可能后来有人为了得到虚拟物品而在网上拍卖自 己的现实物品(比如旧数码产品、球鞋等)以收取Bitcoin,而另外一些人为了购买这些现实物品但手头上没有Bitcoin,可能会使用现实中的货币去 兑换Bitcoin,如此一来,Bitcoin就开始流通,于是就开始拥有了“价值”。

  Bitcoin如何获得?

  只要有一台能接入互联网的计算机,从这个网站下 载 Bitcoin 程序,首次运行会产生一个数字账号,然后保持运行,这个程序就会一直不停地计算上面提到的数学公式所产生的一系列“数学题”,当你成功地计算完“一道数学 题”之后,就有可能得到一定数量的Bitcoin,但并不是每次计算都一定能获得Bitcoin,还要看你的计算是否首个完成以及对整个系统的贡献程 度。(这里所说的“数学题”只是一个形象比如,它的作用是用于验证整个 Bitcoin 系统的每一笔交易是否有效的,因为没有中心节点,所以这个验证需要耗费大量的计算资源,而Bitcoin就是系统对你的付出的奖励)。这个“不劳动无收 获,一分耕耘并不一定有一分收获”的过程非常像挖金矿,所以挂机运行 Bitcoin 程序的过程被称为“挖金矿(mining)”,而 Bitcoin 程序自然被称为“挖矿机”或者“矿工(miner)”。

  挖金矿是人人机会平等的,然而收获却不是平均的,性能越好的计算机“解决数学 问题”的速度越快,就越有机会获得Bitcoin。那么什么样的计算机速度最快呢?超级计算机?不是,是你用来玩3D游戏的显卡,现在中高档的显卡都带有 GPU具有运算功能,一块高档显卡顶得上200台主流CPU的速度(具体原理这里有说明,各种显卡性能对比列表),所以参与挖金矿的人还得有一张中高档的显卡。

   另外随着参与的人数不断增加,其中有不少程序员还进行各种衍生品的开发,于是各种各样的矿工程序随之出现,比如有使用纯JavaScript实现的挖金 矿程序(比如 http://bitp.it/),你可以把它挂在博客里,当读者们阅读你的文章时,他们的计算机会不知不觉地帮你挖金矿。

  获取Bitcoin的成本

   Bitcoin 系统会控制Bitcoin的增长速度,现在整个系统大概保持每10分钟增加50个Bitcoin的增长速度,这个速度并不会随着参与人数的增加而加快。也 就是说,假设整个 Bitcoin 系统有100个人参与,那么平均每人一小时能获得 3 个Bitcoin,同理假如有 10000 人参与,平均每人一小时只能获取 0.03 个Bitcoin。而目前的情况是,使用普通计算机即使挖了一年时间,可能连1个Bitcoin都获取不了(因为参与的人数很多),考虑到所消耗电能的成 本,挂机挖矿行为实在不值得推广。当迫切需要Bitcoin时可能更多人宁愿使用现实货币去兑换而不会亲自去挖。

  更不幸的是获取Bitcoin的成本将会越来越高,因为 Bitcoin 的数学公式确定每21万Bitcoin增长速度就会减半,到 2140 年左右基本上就不增长,到时Bitcoin总数量大概维持在  2000 万左右。目前总量为 600 万,见这里,估计大部分都集中在创始者以及最先加入游戏的一批人手中。

   因为获取Bitcoin的难度高,一些“矿场(mining pool)”网站就产生了,矿场的作用是集中零散的个人力量一起挖金矿,以增加获取Bitcoin的机会。共同获得的Bitcoin会根据其中每个人的贡 献量平摊,一般矿场还会收取2%左右的佣金用于维持自身的运作。

  Bitcoin能买什么?

  这里有一个接受Bitcoin支付的网站商店列表,可见现在已经可以用它来购买音乐、书籍、软件、服务等等,列表当中还有一些货币兑换网站,从中可以了解Bitcoin跟美元等现实货币的汇率以及汇率走势等。

  一些有趣的猜想

   因为Bitcoin的流通不受控制,所以很明显各个国家不会让它进入市场,甚至会屏蔽它不让百姓访问,不过也正因为它不受控制的特点而可能得以长期在民 间低调流通;坚持天天挂机挖金矿的朋友可能会因为高昂的电费而最终放弃游戏;也有可能在若干年后,随着Bitcoin的获取成本越来越高以及部分人囤积导 致它升值几倍,某些精英或者国家料到这种情况现在就已经开始投资挖矿;当然也有可能过了几年大家的热情消退了,没有人玩了,最终Bitcoin变成一场闹 剧。究竟将来如何没人能意料得到,只知道越多人了解和参与将会使情况变得更加有趣。

  无论Bitcoin前途如何,无可否认它是一个非常有趣并且了不起的创意,而且最起码它能带给人一些思考和谈资。

  参考资料:

  [1] Bitcoin 官方FAQ https://en.bitcoin.it/wiki/FAQ

  [2] Bitcoin 的基本原理 http://blog.codingnow.com/2011/05/bitcoin.html

  [3] Bitcoin P2P 货币,有史以来最危险的项目:http://www.36kr.com/dangerous-bitcoin-p2p-currency/

  其他中文资料汇集(仍添加中):

  [1] 此物一出天下反:话说BitCoin http://www.lixiaolai.com/index.php/archives/10589.html

  [2] 关于bitcoin若干问题我的看法 http://blog.devep.net/virushuo/2011/05/23/bitcoin.html

  [3] 如何快速挖到Bitcoin比特币? http://blog.chicheng.me/2011/05/how-to-mining-bitcoin/

相关文章:

  • 典型用户及用户场景分析
  • 接口和子接口
  • 如何做一个简洁风格的PPT模板
  • PHP学习笔记(2)-语法和数据类型
  • 选择下拉列表最大索引值 Select From List By Max Index
  • WCF技术的不同应用场景及其实现分析
  • OC开发_代码片段——代码编写简单的tableViewCell
  • Log4j 配置最全说明
  • Cisco CCIE LAB 考试的详细解说一
  • Javascript 笔记与总结(2-5)window 对象
  • JQuery插入新的元素结点方法汇总
  • 刷访问量程序
  • Dede 查询附加表
  • LAMP自动化安装脚本
  • verilog实现的VGA显示自反弹移动小方块
  • JavaScript-Array类型
  • JavaScript的使用你知道几种?(上)
  • JavaScript类型识别
  • Java知识点总结(JavaIO-打印流)
  • JWT究竟是什么呢?
  • MySQL几个简单SQL的优化
  • Spring声明式事务管理之一:五大属性分析
  • vuex 学习笔记 01
  • Vue全家桶实现一个Web App
  • 干货 | 以太坊Mist负责人教你建立无服务器应用
  • 关于extract.autodesk.io的一些说明
  • 记录:CentOS7.2配置LNMP环境记录
  • 少走弯路,给Java 1~5 年程序员的建议
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 关于Android全面屏虚拟导航栏的适配总结
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​力扣解法汇总946-验证栈序列
  • ​一些不规范的GTID使用场景
  • #传输# #传输数据判断#
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (过滤器)Filter和(监听器)listener
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (论文阅读11/100)Fast R-CNN
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (排序详解之 堆排序)
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)程序员技术练级攻略
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET开发者必备的11款免费工具
  • .NET是什么
  • .net与java建立WebService再互相调用
  • .ui文件相关
  • @RequestBody与@ModelAttribute
  • @RequestParam @RequestBody @PathVariable 等参数绑定注解详解
  • [《百万宝贝》观后]To be or not to be?