bitcoin的技术原理

标签: IT技术 bitcoin 虚拟货币 | 发表时间:2011-06-07 08:00 | 作者:zhiqiang Yunchao
出处:http://zhiqiang.org/blog

博客 » IT技术 » bitcoin »

最近bitcoin很火,我也是最先从云风那里了解到的,后来发现李笑来&霍炬对其都有涉及。不过他们对其具体技术原理的描述还是不够细致,所以我自己把bitcoin wiki又重新看了一遍。 看完之后,疑惑挺多,我对这个体系远没有前面三位这么乐观。诚然,它会成为"Geeks "手中的玩物甚至灰色交易的工具,但要说的达到“一出天下反”的程度,那还需要解决一些技术和金融方面的问题。

这里先谈技术原理,技术和金融缺陷等下篇再谈。要想了解bitcoin的技术原理,首先需要了解两个重要的密码技术:

  • HASH码:将一个长字符串转换成固定长度的字符串,并且其转换不可逆,即不太可能从HASH码猜出原字符串。bitcoin协议里使用的主要是SHA256
  • 公钥体系:对应一个公钥和私钥,在应用中自己保留私钥,并公开公钥。当甲向乙传递信息时,可使用甲的私钥加密信息,乙可用甲的公钥进行解密,这样可确保第三方无法冒充甲发送信息;同时,甲向乙传递信息时,用乙的公钥加密后发给乙,乙再用自己的私钥进行解密,这样可确保第三者无法偷听两人之间的通信。最常见的公钥体系为RSA,但bitcoin协议里使用的是lliptic Curve Digital Signature Algorithm

和现金、银行账户的区别?

bitcoin为电子货币,单位为BTC。在这里,它也指

和在银行开立账户一样,bitcoin里的对应概念为地址。每个人都可以有1个或若干个bitcoin地址,该地址用来付账和收钱。每个地址都是一串以1开头的字符串,比如我有两个bitcoin账户,1911HhKdLbnsffT5cRSiHgK3mdzMiyspXf和1JSUzrzMk7f6iymfVkvqLBJDBZXBopyfZK。一个bitcoin账户由一对公钥和私钥唯一确定,要保存账户,只需要保存好私钥文件即可。

和银行账户不一样的地方在于,银行会保存所有的交易记录和维护各个账户的账面余额,而bitcoin的交易记录则由整个P2P网络通过事先约定的协议共同维护。

我的账户地址里到底有多少钱?

虽然使用bitcoin的软件可以看到当前账户的余额,但和银行不一样,并没有一个地方维护每个地址的账面余额。它只能通过所有历史交易记录去实时推算账户余额。

我如何付账?

当我从地址A向对方的地址B付账时,付账额为e,此时双方将向各个网络节点公告交易信息,告诉地址A向地址B付账,付账额为e。为了防止有第三方伪造该交易信息,该交易信息将使用地址A的私钥进行加密,此时接受到该交易信息的网络节点可以使用地址A的公钥进行验证该交易信息的确由A发出。当然交易软件会帮我们做这些事情,我们只需要在软件中输入相关参数即可。

网络节点后收到交易信息后会做什么?

这个是整个bitcoin系统里最重要的部分,需要详细阐述。为了简单起见,这里只使用目前已经实现的bitcoin协议,在当前版本中,每个网络节点都会通过同步保存所有的交易信息。

历史上发生过的所有交易信息分为两类,一类为"验证过"的交易信息,即已经被验证过的交易信息,它保存在一连串的“blocks”里面。每个"block"的信息为前一个"bock"的ID(每个block的ID为该block的HASH码的HASH码)和新增的交易信息(参见一个实际的block)。另外一类指那些还"未验证"的交易信息,上面刚刚付账的交易信息就属于此类。

当一个网络节点接收到新的未验证的交易信息之后(可能不止一条),由于该节点保存了历史上所有的交易信息,它可以推算中在当时每个地址的账面余额,从而可以推算出该交易信息是否有效,即付款的账户里是否有足够余额。在剔除掉无效的交易信息后,它首先取出最后一个"block"的ID,然后将这些未验证的交易信息和该ID组合在一起,再加上一个验证码,形成一个新的“block”。

上面构建一个新的block需要大量的计算工作,因为它需要计算验证码,使得上面的组合成为一个block,即该block的HASH码的HASH码的前若干位为1。目前需要前13位为1(大致如此,不确定具体方式),此意味着如果通过枚举法生成block的话,平均枚举次数为16^13次。使用CPU资源生成block被称为“挖金矿”,因为生产该block将得到一定的奖励,该奖励信息已经被包含在这个block里面。

当一个网络节点生成一个新的block时,它将广播给其它的网络节点。但这个网络block并不一定会被网络接受,因为有可能有别的网络节点更早生产出了block,只有最早产生的那个block或者后续block最多的那个block有效,其余block不再作为下一个block的初始block。

对方如何确认支付成功?

当该笔支付信息分发到网络节点后,网络节点开始计算该交易是否有效(即账户余额是否足够支付),并试图生成包含该笔交易信息的blocks。当累计有6个blocks(1个直接blocks和5个后续blocks)包含该笔交易信息时,该交易信息被认为“验证过”,从而该交易被正式确认,对方可确认支付成功。

一个可能的问题为,我将地址A里面的余额都支付给地址B,同时又支付给地址C,如果只验证单比交易都是有效的。此时,我的作弊的方式为在真相大白之前产生6个仅包括B的block发给B,以及产生6个仅包含C的block发给C。由于我产生block所需要的CPU时间非常长,与全网络相比,我这样作弊成功的概率微乎其微。

网络节点生产block的动机是什么?

从上面描述可以看出,为了让交易信息有效,需要网络节点生成1个和5个后续block包含该交易信息,并且这样的block生成非常耗费CPU。那怎么样让其它网络节点尽快帮忙生产block呢?答案很简单,协议规定对生产出block的地址奖励BTC,以及交易双方承诺的手续费。目前生产出一个block的奖励为50BTC,未来每隔四年减半,比如2013年到2016年之间奖励为25BTC。

交易是匿名的吗?

是,也不是。所有BITCOIN的交易都是可见的,我们可以查到每个账户的所有交易记录,比如我的。但与银行货币体系不一样的地方在于,每个人的账户本身是匿名的,并且每个人可以开很多个账户。总的说来,所谓的匿名性没有宣称的那么好。

但bitcoin用来做黑市交易的还有一个好处,它无法冻结。即便警方追踪到了某个bitcoin地址,除非根据网络地址追踪到交易所使用的电脑,否则还是毫无办法。

如何保证bitcoin不贬值?

一般来说,在交易活动相当的情况下,货币的价值反比于货币的发行量。不像传统货币市场,央行可以决定货币发行量,bitcoin里没有一个中央的发行机构。只有通过生产block,才能获得一定数量的BTC货币。所以bitcoin货币新增量决定于:

1、生产block的速度:bitcoin的协议里规定了生产block的难度固定在平均2016个每两个星期,大约10分钟生产一个。CPU速度每18个月速度加倍的摩尔定律,并不会加快生产block的速度。

2、生产block的奖励数量:目前每生产一个block奖励50BTC,每四年减半,2013年开始奖励25BTC,2017年开始奖励额为12.5BTC。

综合上面两个因素,bitcoin货币发行速度并不由网络节点中任何单个节点所控制,其协议使得货币的存量是事先已知的,并且最高存量只有2100万BTC(目前每周增加约5万BTC)

更多信息可参考bitcoin wiki


© zhiqiang for 张志强, 2011. | 链接 | 0条评论

相关 [bitcoin 技术 原理] 推荐:

bitcoin的技术原理

- Yunchao - 张志强的网络日志
博客 » IT技术 » bitcoin ». 最近bitcoin很火,我也是最先从云风那里了解到的,后来发现李笑来&霍炬对其都有涉及. 不过他们对其具体技术原理的描述还是不够细致,所以我自己把bitcoin wiki又重新看了一遍. 看完之后,疑惑挺多,我对这个体系远没有前面三位这么乐观. 诚然,它会成为"Geeks "手中的玩物甚至灰色交易的工具,但要说的达到“一出天下反”的程度,那还需要解决一些技术和金融方面的问题.

深入分析 Bitcoin 的原理和技术实现

- iFunbox - FeedzShare 1天最热
来自: Hippo notes - FeedzShare  . 发布时间:2011年05月31日,  已有 9 人推荐.     Bitcoin 是一种虚拟电子货币,上周我写过一篇介绍性质的文章《通俗易懂讲解什么是 Bitcoin 虚拟货币》(http://ivarptr.blogspot.com/2011/05/bitcoin.html),当时主要参考了官方和民间的介绍材料,并没有深入了解 Bitcoin 的技术细节.

Bitcoin 的基本原理

- 靛海幽蓝 - 云风的 BLOG
昨天读到了 Bitcoin 的中文介绍,觉得非常有意思. 不过上面这篇文章解释的非常不靠谱,我花了一晚上去Bitcoin的官方网站 仔细研究了一下,总算理解了其原理. 感觉非常有启发,尤其是对虚拟货币的流通和发行有许多借鉴意义. 货币就是商品(包括服务)交换的媒介. 现在我们通行的货币是由有信誉的银行发行的,基本上是由其信誉来担保的.

Bitcoin虚拟货币原理

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

对BITCOIN的几点想法

- wuwu - 郭凯经济笔记
有人问我对BITCOIN有什么看法,我还没时间仔细想这个东西,但是粗略的了解了一下之后,有以下初步的想法,总结起来就是:神奇的技术,但优点可能被夸大,缺点可能很致命. 技术的部分我就不评价了,不懂更没资格评价. BITCOIN的优点中最被强调的就是:这是一个不需要中央银行的P2P的货币体系,因此不会有滥发钞票的风险.

BitCoin for Ubuntu 11.04 客户端

- Riku - Wow! Ubuntu
BitCoin 最近很热,大量的媒体、Blog ,甚至叽喳上都在谈论此物. 那么 BitCoin 到底为何物. [以下引用自 ivarptr 的文章,详情请看“通俗易懂讲解什么是 Bitcoin 虚拟货币”一文]. Bitcoin (为了便于书写和理解,下面如果是表示 “Bitcoin币”意思的地方我称呼其为“贝壳币”,取粤语相近的音译)是一种网络虚拟货币,跟腾讯公司的Q币类似,你可以使用贝壳币购买一些虚拟的物品,比如网络游戏当中的衣服、帽子、装备等,只要有人接受,你也可以使用贝壳币购买现实生活当中的物品.

Bitcoin被用于毒品交易

- Albert - Solidot
半岛电视台报导,最近颇受关注的P2P虚拟货币bitcoin被拍卖网站用于交易可卡因,大麻和其它毒品. 两位美国参议员要求联邦当局打击接受虚拟货币的在线毒品市场. 匿名的网上社区Dark Web交易海洛因,可卡因和甲基苯丙胺等毒品,它已经秘密运行了几个月. 两位参议员要求美国司法部和毒品管制局关闭和调查该网站.

通俗易懂讲解什么是 Bitcoin 虚拟货币

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

现在买高端 GPU 挖 Bitcoin 不划算

- XsLiDian - fcicq's blog-beta
除非 BTC 汇率有大幅提高, 而这是所有 BTC 持有者的共同期望.. 首先要知道, Pool mining 的利益分配方法.. 在 propotional 模式下, 两个 block 解之间, 解出的所有有效的, difficulty = 1 的 hash 算 1 share.. (过期 share 属于 stale.