深度解读比特币原理.docx
- 文档编号:7633718
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:5
- 大小:21.51KB
深度解读比特币原理.docx
《深度解读比特币原理.docx》由会员分享,可在线阅读,更多相关《深度解读比特币原理.docx(5页珍藏版)》请在冰豆网上搜索。
深度解读比特币原理
深度解读比特币原理
一个需要第三方支持的点对点电子现金支付系统是没有价值的,这容易和传统上的p2p形成误解,很多p2p系统其实是需要一个第三方支持的,比如有些p2p系统需要一个或多个索引服务器。
比特币以及其他竞争币就可以一句话进行概括了,一个去中心化的p2p支付系统,既然是支付系统就当然要解决双花问题,这和是否是去中心化没有关系,只是中心化的系统更容易解决双花问题而已。
比特币系统要解决的两个主要问题,一个是去中心化的p2p系统,一个是支付要解决的双花问题。
要解决双花问题就必须记账核对,那么如何在一个没有中心的p2p系统中记账又受到认同呢,比特币引入了基于时间戳的随机散列,并且让其形成前后文相关的序列,这就是为什么称之为区块链的原因。
记账且不可更改是一个比特币的副产品,首先区块链记账不可更改是有前提的,这经常被称为51%攻击,除非重新完成全部的工作量证明,形成的交易记录将不可更改,由于采用了复杂的POW工作量证明计算,更改交易记录将非常的耗时和需要大量运算,从客观上实现了“不可更改”的目的,但是从业务设计的角度,这是一个缺陷,如果更改是交易双方认同的而且合法的,或者说被绝大多数节点认同的呢?
由于技术的限制比特币系统进行了取舍,所以不得不保留了这个缺陷。
其实比特币后来的一些事实证明,比特币的滥用也是因为这个缺陷,基于暗网的非法交易,网络勒索,包括黑客盗用比特币,“门头沟”交易所跑路等,都是利用了这个缺陷,其实根据“多数人正义“这点来讲,这些交易都应该撤销,但是这个要回滚交易的代价实在太大,大到不可实现(需要分叉),看到这里你就知道比特币系统不是你想象中那么完美了吧。
比特币系统的一个重要特点是这个系统本身需要的基础设施非常少,因为没有了中心化的服务器存在,相关的维护、备份、容灾、管理等成本会大大降低。
通过密码原理代替中心化中介信用(金融机构)使交易达成是革命性的,这也是比特币最有研究价值的地方,这里面需要注意的是比特币系统代替的是中心化中介的信用,并不能保证交易双方的信用,相反一旦交易的某一方出现信用问题这笔交易是无法撤销的,对于初次接触比特币的人一定要尤为注意,也就是说和传统银行交易不同,一旦你确定支付,哪怕对方是骗了你,你的交易损失是无法追回的。
这里面又一个悖论,你是信任中心化中介的信用还是信任你的交易对方的信用,这就要仁者见仁了,如果你选择后者那么比特币系统是你的好选择,如果你选择前者,那么传统的中心化支付是你的选择。
总之你需要一个去中心化中介,并且主要保护卖家的系统,如果你需要保护买家,你任然需要一个第三方担保机制。
而对于系统的安全性完全通过攻击算力成本保障,这是一种算力的比拼,你可以简单的理解为,正常的算力是大于想作恶的算力这个前提的。
了解了这一点,你就会知道如何选择合适的数字货币,避免山寨币陷阱了。
比特币的交易记录方式,是一个基于时间序列的链式结构,如果说是链式结构可能有人理解起来有困难,你可以把每笔交易想象成一条记录,这条记录记录了付款人和收款人以及交易数据等重要信息,如果您有数据库基础,那么这每条记录是非常容易理解的,如果没有数据库技术,你可以想象成为是纸上记录的条目,比如“王二麻付给大鱼2块钱”
有意思的来了,我们还是用简单语言来举例,如果是数据库或者纸上的记录,那么很容易更改,所以必须用加密的方法保障这条记录不被更改,于是比特币系统采用不对称加密算法对这条记录进行加密,不对称加密算法有个特点,公钥(publickey)可以公布出去让所有人知道,这也就是常说是比特币钱包地址(当然比特币钱包地址会对公钥重新编码不影响实质),那么“王二麻付给大鱼2块钱”这条记录就是王二麻同学用大鱼的公钥进行了加密,其内容只有大鱼用私钥才能解开,换言之也就是大鱼拥有了这条“记录”
那么如何证明这条记录是王二麻创建的呢,这里面稍微有点绕,因为王二麻在创建这条记录的时候通过自己的私钥对这条记录进行了签名(一串HASH数据),同时又在交易末尾公布了自己的公钥,如果你熟悉不对称加密算法就知道,通过王二麻的公钥进行计算,如果得到的值和签名一样,你就知道这是王二麻用自己的私钥创建的数据了,因为别人是不知道王二麻的私钥的
一枚电子货币(anelectroniccoin)是这样的一串数字签名,很容易让人误解的是这里的电子货币是个具体数字,其实它是一条加密的记录(数据),也就是说你拥有的交易记录才是你的数字资产,这里面你需要注意的是,这条记录里面没有你的姓名、身份证号等这些中心化系统中常见的识别所有者的字段,唯一表示你身份的是你的公钥(钱包),证明你所有权的是你的私钥(密码)
当你拥有支付一条记录时,你就拥有了一定数量的所谓比特币。
这时候你就可以创建一条新的记录把它花出去,你需要用别人的公钥创建一条新的新的记录,这里需要注意的是,这条新的记录里面包含了你从别人那里收到这条记录的信息,如此循环往复形成了一个交易链条
通过公开公钥就可以知道这条记录的来路,直至最终到最初的所有者(很多改良的数字货币为了强调匿名交易和不可追踪,修改了交易结构,让这个过程无法进行),这就是我们说的上下文相关,如果你要篡改记录是很困难的,你需要修改所有这个链条上的交易,而且这些交易记录都是加密的,且在数字加密上是循环相关的。
那么第一笔交易如何来的呢,这就是我们说的“挖矿”这是对矿工进行POW工作量证明的奖励,简单讲就是不停的进行HASH计算碰运气了,得到最原始的“随机数列”。
在比特币系统中存在功能不同的节点,如果你参与到交易的验证过程中那么你也就是一名“矿工”了,通过矿工模型你不但可以挖到新的比特币,也可以参与验证计算获得奖励,这就是为什么比特币交易过程中你需要花费手续费的原因了。
比特币的交易是一个时间序列的链条,在产生一条新的交易记录时永远有先后顺序,即便是双花你总有先后顺序,你不可能同时创造两笔交易,那么我们只需要证明其中一条是有效的即可,并且将其记录到交易链条上即可,那么其他的交易就是无效的了(这也就是比特币的交易确认原理,交易确认是需要时间的)。
要证明其中一条是有效的又不允许中心化从存在,那么只有一个办法了,就是发动所有的人参与这项活动,进行“多数人的正义”。
如果你不公布交易信息,其他人怎么进行交易验证呢。
比特币就是在交易创建时将信息公布出去,如果有多数人优先确认并将其记录下来,这个过程就完成了,举个简单地例子,比如5个人在一起同时用纸记录一个交易,现在有人说“王二麻给大鱼2块钱”,这里面有三个人都同意这件事并将其记录下来,并把记录的纸复印5份,人手一份,那么他们就有唯一受到认可的记录了,也不知道这个比喻是否恰当。
时间戳服务器通过对以区块(block)形式存在的一组数据实施随机散列而加上时间戳,加上时间戳容易,但是如何取得时间呢,如果是加上本机时间,那么每个节点的时间都不统一,况且有人恶意更改本机时间呢?
那么如何获得一个去中心化的时间呢,其实方法很简单,还是利用“多数人的正义”,时间来自于连接的其他节点(node)时间的中位数(mean,是个数学概念,比平均值更不受极端数字影响),要求连接的节点(node)数量至少为5,中位数和本地系统时间差别不超过70分钟,否则会提醒你更新本机的时间。
同时,在接收到新的block时会拒绝时间与自己差距+2小时和-(前11个block时间中位数)的block。
由此我们知道了这个时间的正确来源了,还是利用大多数人的机器时间,其实比特币的核心理念一直是认为多数人是正义的,我一直在想如果从一开始比特币的系统时间就比实际时间快1年的话,其实对整个系统是没有影响的,原因很简单后加入的节点都会按照前面多数人的时间中位数更改自己的节点时间,最后成为比特币系统自有的时间模式,好在比特币系统运行刚开始,时间还是比较准确的,不过我一直认为这个时间机制有漏洞可以钻。
了解比特币时间戳的机制后,后面的就容易理解了,将一段时间内,准确的说是,两个区块的产生间隔中的所有交易进行Hash运算,再盖上时间戳,这样我们就有了一个按时间序列产生的所有交易的记录了,区块链就这样形成了。
因为时间是线性增长的,所以区块链是按照时间先后顺序组织起来的,所以核心代码中关于时间的机制异常重要,我认为这是安全上比较脆弱的环节。
我们知道了比特币的时间戳机制,可能还是有人有疑虑,虽然比特币取多个节点和前几个区块的中位数时间作为标准,但是还有一个问题就是,如果有人恶意更改时间,同时修改比特币源码造跳过时间检测机制怎么办或者恶意构造交易实现双花,这就需要一个机制来保证 。
这个机制就是POW工作量证明,简单讲就是提升作恶的成本,当然这样也让正常的操作要付出更多的计算成本,初学者大可不必去了解哈希现金原理,这里我来举个更简单的例子,一般论坛会引入人机识别机制,就是常见的图片验证码,这些验证码你可以想象成是一种提升作恶成本的机制,所不同的是人识别这些东西会很快,而机器是识别需要更复杂的算法或者在某些领域这些机器识别技术还无法完成,这就完成了“真人证明”,这个机制的后果就是,恶意发帖的人,说能发帖的频率和真人一样了,那么在一个大多数人正常的论坛,干扰信息就是少数,保证了正常信息的发布。
比特币的POW证明思路一样,需要一种机制来保证正常节点和恶意节点付出一样的成本来生成区块,而不同于“真人证明”的是,我们面对的都是运行的程序,这就牵涉到如何保证正常的程序和恶意程序付出一样的多的成本,程序的复制和传输不需要太多的成本,要让程序运行最大成本就是硬件(CPU、内存)和消耗(电力),所以比特币引入SHA256算法(你可以不用了解原理),你只需要知道进行SHA256运算需要消耗大量的CPU时间和电力,这不像进行加法运算那样在一瞬间就可以完成。
POW利用了信息安全的另一个特点,就是安全和成本相关性,这是我以前文章一再强调的,这个世界没有绝对安全一说,安全有三个延伸层面可管理、可察觉、攻击成本,比特币的系统利用了其中两个可管理与攻击成本,通过随机散列值以一个或多个0开始。
那么随着0的数目的上升,找到这个解所需要的工作量将呈指数增长实现可以管理,通过SHA256碰运气实现攻击成本提升,所以比特币并不关注可察觉性,你可以作恶但这不重要,因为没有人会花100块钱去获取1块钱,这属于经济学原理。
可能有人会问,如果大多数人都作恶呢,我可以举个例子,比如骗子的存在是为了骗好人的钱,假设每个骗子需要花1块钱去骗好人1块钱,需要5个骗子才能达成骗1个好人,那么每次每个骗子需要花1块钱去获得0.2元钱,这样的系统有意义吗?
说个题外话我以前看过一篇生物学文章,讲的是在进化过程中其实是存在一种可以无限分裂的长寿细胞,也就是说存在过一种长生不老的生物,为什么这种生物不存在了呢,是因为老的生物永远不死,挤压了新生代的生存空间,同时没有变异最后被自然界淘汰,而现存的癌细胞是典型的可以无限分裂的细胞遗留,结果是癌细胞无限分裂最后导致个体死亡,癌细胞也就over了。
这和比特币系统多么类似啊,如果一个51%攻击达成,攻击者会达成目的,但是整个系统的价值会崩溃掉,那么攻击中获取的比特币也没有任何意义了,攻击者付出的大量硬件投资和电费就没有意义了,所以发动51%攻击的人要考虑的是,是否要把自己变成癌细胞最后导致系统死亡。
同时,该工作量证明机制还解决了在集体投票表决时,谁是大多数的问题。
如果决定大多数的方式是基于IP地址的,一IP地址一票,那么如果有人拥有分配大量IP地址的权力,则该机制就被破坏了。
而工作量证明机制的本质则是一CPU一票。
“大多数”的决定表达为最长的链,因为最长的链包含了最大的工作量。
如果大多数的CPU为诚实的节点控制,那么诚实的链条将以最快的速度延长,并超越其他的竞争链条。
如果想要对业已出现的区块进行修改,攻击者必须重新完成该区块的工作量外加该区块之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。
其实基于CPU也是有缺陷的,比特币诞生后的大量竞争币也是着重改良了POW机制包括引入POS机制力求完善数字货币,到目前为止,我认为前期POW机制+后期POS机制是一个比较好的选择(个人观点),可以有效避免算力集中实现藏富于民;这也是为什么现在比特币BU的争议需要争取获得大量矿场的支持,而普通比特币用户基本上属于吃瓜群众的原因了,等什么时候一个数字货币需要听取每一个用户的声音时,那么DAC就真的实现了。
比特币区块链只认可最长的那条链(交易记录),因为这是一开始正义的人构造的,后来者需要付出指数级的成本才能更改,验证了POW的有效性。
运行该网络的步骤如下:
1)新的交易向全网进行广播;
2)每一个节点都将收到的交易信息纳入一个区块中;
3)每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明;
4)当一个节点找到了一个工作量证明,它就向全网进行广播;
5)当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性;
6)其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区快的随机散列值。
节点始终都将最长的链条视为正确的链条,并持续工作和延长它。
如果有两个节点同时广播不同版本的新区块,那么其他节点在接收到该区块的时间上将存在先后差别。
当此情形,他们将在率先收到的区块基础上进行工作,但也会保留另外一个链条,以防后者变成最长的链条。
该僵局(tie)的打破要等到下一个工作量证明被发现,而其中的一条链条被证实为是较长的一条,那么在另一条分支链条上工作的节点将转换阵营,开始在较长的链条上工作。
所谓“新的交易要广播”,实际上不需要抵达全部的节点。
只要交易信息能够抵达足够多的节点,那么他们将很快被整合进一个区块中。
而区块的广播对被丢弃的信息是具有容错能力的。
如果一个节点没有收到某特定区块,那么该节点将会发现自己缺失了某个区块,也就可以提出自己下载该区块的请求。
我们约定如此:
每个区块的第一笔交易进行特殊化处理,该交易产生一枚由该区块创造者拥有的新的电子货币。
这样就增加了节点支持该网络的激励,并在没有中央集权机构发行货币的情况下,提供了一种将电子货币分配到流通领域的一种方法。
这种将一定数量新货币持续增添到货币系统中的方法,非常类似于耗费资源去挖掘金矿并将黄金注入到流通领域。
此时,CPU的时间和电力消耗就是消耗的资源。
另外一个激励的来源则是交易费(transactionfees)。
如果某笔交易的输出值小于输入值,那么差额就是交易费,该交易费将被增加到该区块的激励中。
只要既定数量的电子货币已经进入流通,那么激励机制就可以逐渐转换为完全依靠交易费,那么本货币系统就能够免于通货膨胀。
激励系统也有助于鼓励节点保持诚实。
如果有一个贪婪的攻击者能够调集比所有诚实节点加起来还要多的CPU计算力,那么他就面临一个选择:
要么将其用于诚实工作产生新的电子货币,或者将其用于进行二次支付攻击。
那么他就会发现,按照规则行事、诚实工作是更有利可图的。
因为该等规则使得他能够拥有更多的电子货币,而不是破坏这个系统使得其自身财富的有效性受损。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 深度 解读 比特 原理
![提示](https://static.bdocx.com/images/bang_tan.gif)