比特币区块链比特币是诈骗吗难吗,竟然初中生一看也能明白的

说实话,关于比特币以及区块链的介绍,目前是太偏金融了,市面上好多本书在IT人眼里都是索然无味,猛一看作者或者译者,全是都是标准的中年西装领带皮鞋短发的金融精英男,或者大龄未婚套装豪车的金融精英女,IT界的关注者则是清一色源码分析的有房有车有贷款的两点一线…毕竟是两个圈子,两种生活,隔行如隔山。可能拖鞋T恤短裤的IT程序员并不关心那些经济现象背后的东西,只是希望能看到代码是怎么实现的,或者了解下自己怎么怎么样可以在各类投资中不赔钱,仅此而已,IT人如今收入多多,必然投资多多,学会Step by step的Howto操作,必然炉火烧得通红。
这是金融和IT融合的最佳时期。金融终于可以用IT来表达了,IT终于可以表达金融了!
在去年,我写了一篇《》:
感觉还不错,后面也收到了一些反馈,但是还是觉得文章太长了。于是今天正好有时间就把它缩短一点再试试看。
本文前面会以技术开始,逐步过渡到一些非技术的方面,我觉得非技术的东西才是典型,才是本质,技术往往只是完成某种目的的手段。
比特币的核心我认为就三个,分别属于以下三个范畴:
数字签名技术
签名和验签利用离散对数难题(针对ECC算法而言)保护了每一次交易。在线破坏交易难。
这是技术范畴,不是你不想,是你做不到。
哈希技术构建了区块链,即全局公共账本,使既有交易不可抵赖,未来的UTXO消费可承诺。离线破坏交易难。
这是技术范畴,不是你不想,是你做不到。
纳什均衡的稳定状态保证了没有节点可以通过不诚实的行为获得更高的回报。作恶成本高。
这是非技术范畴,你权衡了一下,根本就不想作恶了。
账户与钱包
首先要明确账户和钱包的区别。
属于一个人,包含此人能支配的钱以及维护此人之前的所有交易记录。
属于一个人,只包含此人能支配的钱。
在比特币的世界,没有属于个人的账户的概念,只有比特币钱包,所谓的比特币钱包,其实可以简单理解为一个公钥。由于电子计算机内的任何东西都是可以零成本复制的,所以就必须采用非对称密码技术解决这个问题。
简单点说,一个钱包的含义就是“任何人都可以放钱进去,但只有你自己可以拿钱出来”,你之所以比别人多一个拿钱出来花的权力,是因为你持有和钱包公钥对应的私钥!请务必记住,私钥就是你打开钱包花钱的钥匙,一旦被别人窃取,钱也就是别人的了,一旦丢失或者销毁,钱包里的钱也就相当于跟着销毁了,就好像现实中你把纸钞撕毁焚烧了一样。
既然没有账户的概念,我怎么知道我还有多少比特币可以花费呢?
在比特币世界,所有能花费的钱被统一表示成UTXO(即Unspent Transaction Output),该UTXO和一个钱包地址关联,你要想知道你还有多少钱可以花,你只能遍历你所拥有的钱包,然后把和该钱包关联的UTXO累加在一起,结果便是你的“账户余额。所有的这一切信息,全部分布式存储在已经达成全网共识的区块链里,这个后面会再说咯。
这里一般会问,自己的UTXO从哪里来的呢?非常简单,它就两个来源:
别人转给自己
自己挖矿所得
除了这两个途径,不会有其它途径可以让你拥有UTXO。
UTXO是比特币世界基本的消费单位,就像我们日常的人民币面值一样,你无法将一张10块钱撕开成两半花,你若买一个5块钱的东西,你必须付出整个10块钱,然后接受找零的5块钱,当然,你也可以说“不用找了!”
比特币交易
那么,什么是UTXO呢?先看个图:
类似上面这张单子,就是UTXO,它生成于一笔针对自己钱包的一个交易,在上图的例子中,依旧使用经典的Alice,Bob来举例。
请注意锁定的概念。所谓的锁定就是,当Alice转比特币给Bob的时候,只有Bob本人才能接收并在将来的某个时间消费,为了保证这一点,比特币系统采用了非对称密码技术,使用Bob的公钥来对一笔交易向Bob钱包的比特币输出进行锁定,这样一来,按照非对称密码技术的原理,只有Bob拥有的私钥才能解锁。
在此,我们回顾一下非对称密码技术的两个要点:
公钥加密,私钥解密
确保信息的接收者只能是确定的人。
私钥签名,公钥验签
确保信息的发送者只能是确定的人。
好的,比特币正是利用了这个原理,但是并没有明确用公钥加密和私钥解密来锁定特定的接收者,而是采用了和传统交易一致的松散被动方案:
锁定输出,形成UTXO
交易输出仅仅附带一个接收者公钥,但并不验证该公钥确实对应接收者本人。
如果你要花钱,你必须确保这笔钱确实是自己拥有的,即来自于从来的某一个锁定的输出,该锁定的输出附带自己的公钥,此时自己用私钥将其解锁即可使用。
下面的图示展示了上面的论述:
非常类似我们在银行填写的那种转账单据,有人会问,这合理吗?为什么对输入要求很严格,还要各种验证,而对输出只要求填写对方的钱包地址即公钥即可呢?
这很合理。试想你去银行转账的场景,如果你卡上根本没有那么多钱,银行铁定不会让你继续转账,然而银行并不在意你把钱转给了谁,更不会帮你确认这个人是不是骗子,是不是还活着,把钱转入骗子账户的人很多,这并不是漏洞,这是一种最合理最有效的方案。Why?
答案就一句话:能证明一个人是否拥有某种属性的,只有他本人!只有他本人可以发起证明自己的行为,然后其它人来确认该证明是否有效。之所以说它有效,是因为,自己证明自己以及别人验证是一件很简单的事情,反过来,别人证明自己这件事本来就是图灵完备的,搞不好会无限循环而无所终。
我们知道,比特币系统依托一个全球范围的七层P2P网络,在你转账给某人到全网确认共识的时刻,时间并不确定,甚至说,当你转账给某人时,此人并不一定在线,他自己便无法证明自己是自己。这件事在现实中很麻烦,但是在网上就很简单,只要拿出私钥check一下即可,然而实时确认有个前提,即双方必须同时在线,然而这并无法保证。
不管你将锁定和解锁理解为钥匙和锁的故事,还是古时候皇帝和将军之间对虎符的故事,其实都差不多,都是在证明自己拥有某种能力或者属性,对于比特币,总结一句就是:
花钱的时候,必须先解锁这笔封存在区块链里的钱,再上锁发往它的目的地。依此循环不止,整个世界的比特币交易从中本聪创世开始,输入/输出的解锁/锁定关系就形成了下面的有向无环图:
注解:锁定与解锁脚本
在上面的解释中,我为了方便,使用私钥签名,公钥验签来说明了解锁的锁定的过程,在比特币的实现中,这实际上是由一种叫做脚本的东西完成的。
注意,这里说的脚本并不是类似Linux bash那样的脚本,而是一种简单的虚拟机语言,类似JVM那般,它内置了一个微型的指令集,可以执行诸如数值运算,比较,签名验签等简单操作。
所谓的解锁操作,其实就是将解锁脚本和之前的锁定脚本拼接在一起,并且执行它,如果结果为TRUE,则认为可以解锁成功。
也许你会问,锁定机制为什么不是直接把公钥放进去而解锁机制为什么不直接置入一个签名呢?我感觉这就是比特币系统设计里比较灵活的一面,如果仅仅放进去公钥和私钥,那么验证就只能是验签这么一个操作,如果是放进去一个脚本,那么就能实现更加灵活的策略了。为了安全性和简便性,直接放进去一台机器,岂不更爽?嗯,比特币的锁定和解锁脚本就是这么一台机器-虚拟机!
由于本文只是一个科普性质的简介,这里就不再赘述细节了,详情请参看网上汗牛充栋的其他人写的介绍。
引入区块链
到目前为止,我来总结一下要想让这个系统运行起来的要点:
花钱时要解锁输入
能花的钱来自于之前别人或者自己(找零的情况)针对自己的一个输入,该输入针对自己上了锁,自己必须解锁才能证明自己可以拥有这笔比特币。
花钱时要锁定输出
输出输入是衔接的,锁定输出是为了确保只有收款人才能解锁,如果锁定时使用的锁不正确,这笔钱要么转入陌生人账户,要么转入黑洞被销毁。
输入/输出组成的交易单不能被篡改
这是核心!核心!核心!UTXO其实并不物理存在,它衍生自交易单,如果交易单可以被随意篡改,那么这个系统将失去公信力,完全不可用,如何保证交易单的权威性呢?
将所有的交易单交给中央银行是一个不错的选择,或者至少交给一家靠谱的商业银行也不错,这确实是我们使用了几千年的方法,完全依赖一个中心机构或者个人来调解一切,现在比特币系统采用了一种完全不同的思路,即去中心化。
忘掉UTXO,忘掉交易单,还是从需求出发,我们的目标是:
既有的交易不能抵赖,即备案
自己钱包里的钱未来确实可以花出去,即承诺
该区块链登场了!
区块链技术之所以可以完美Cover比特币面临的各种问题,其解决方案并不是纯技术的,而是采用了一种社会学博弈的激励措施,这些措施形成了一种典型的负反馈效应,最终让作恶变得成本高昂。
先看看什么是区块链:
嗯,是个吊链树结构,Intel的网卡队列也是这么设计的…这种环环相扣的结构,使得在这种链条形结构中稍微修改哪怕一个比特,都会牵一发而动全身,也许你会说,大不了我就一改全改呗,那你就错了。我们说哈希技术解决了这个问题,是因为每生成一个区块都是在付出高昂代价解决一个数学难题:
这意味着任何人无法修改区块链中每一个比特,如果你真的这么做了,就意味着你要把上图中的数学难题解答<span class="MathJax" id="MathJax-Element-1-Frame" tabindex="0" style="position:" data-mathml="n" role="presentation">nn遍,这里的<span class="MathJax" id="MathJax-Element-2-Frame" tabindex="0" style="position:" data-mathml="n" role="presentation">nn指的是从修改的区块到当前的最新的区块的区块数量,解答一次这个难题就要消耗巨大的成本,何谈解答<span class="MathJax" id="MathJax-Element-3-Frame" tabindex="0" style="position:" data-mathml="n" role="presentation">nn遍…
简单解释一下这个题为什么难。
考虑数字0X00FF,它生成的概率有多大?对于一个16位的数字,要求它的高8位为0,低8位无关紧要。运用排列组合和概率相乘就能解答:<span class="MathJax" id="MathJax-Element-4-Frame" tabindex="0" style="position:" data-mathml="1212" role="presentation">12121212…这种问题非常难,需要你花钱买昂贵的硬件,并且日夜不停运行赌概率,这意味着除了买硬件你还要交电费,长期的运转产生不可忍受噪音意味着你需要要么把设备搬到一个无人区,要么自己买一套别墅利用它的地下室…
我们来看看区块链是怎么保护交易单的。把上面的那个图放大了看,我们看一下每一个区块里面都包含了什么:
我们看到,区块链中的每一个区块实际上是若干个交易单的容器,到底是多少个取决于效率和消耗之间的权衡。如果每一笔交易都要用掉一个区块,总体消耗就会非常大,如果1亿个交易单用掉一个区块,等待确认的时间就会非常久,所以呢…区块里包含了交易单据,这意味着你无法修改交易任何已经被区块纳入的交易单据。
然而区块是如何纳入交易单据的呢?
比特币挖矿
当你生成一张交易单据并且广播至全网时,世界上可能很多人都在这么做,也就是说,交易单是在源源不断地生成的。与此同时,在世界的某些角落里,总是有勤劳的比特币矿工在搜罗这些交易单,将其纳入自己生成的一个区块并将该区块链接到唯一的区块链上。
我们知道,只有交易单被纳入到了区块链以后,它才是有公信力的,是安全的,它才会因此而产生价值,而正是这些比特币矿工在试图将其纳入区块链,它们确实在挖掘一些可以产生价值的东西,所以说,他们确实在挖矿。
就像《闯关东》里面演的那般,你越勤劳,越肯冒险,付出越多,就越有可能得到高额的回报,注意是有可能,同时也有血本无归的风险,这是一个概率问题。和《闯关东》看起来不一样的是,那些淘金客淘到的金子自己可以保留一些,那么比特币矿工勤劳解决数学难题挖掘区块的动机是什么?
答案非常明确,技术解决不了的问题,经济学来接力:
挖矿会有确定的比特币奖励
中本聪设计,为了彻底远离中心化,比特币的发放不是集中的,而是按照每4年为半衰期逐步发放,这保证了两点:
比特币终究有一个总量,即它会发放完毕
在比特币发放完毕之前,每一个出块的矿工都会得到发放额的比特币奖励
挖矿会得到交易小费
如果交易者好心,同时也是为了自己优先得到矿工的服务,即他希望自己的交易单优先被确认纳入到区块链,交易者给点小费是应该的。比特币系统规定,一张交易单的所有输入和所有输出之间的差额即小费,一个矿工出块后,该区块包含的所有交易单的小费即交易费,归该矿工所有。
貌似问题解决了,然而,矿工们与其如此打工,不如来点小动作赚的更多。抛开人与人之间勇气和胆量之间的差异,假设所有人都一样,到底是什么在抑制这些小动作的发生呢?是技术难题在阻碍吗?
我认为,技术问题是最简单的问题,要说难,社会学才更难,心理学则最难。以上这两者均可以归结为经济学问题:我干坏事我能得到什么好处呢?
社会学博弈论
去中心化最根本的特征在于,消除了信息的不对称!而犯罪的根源则在于,利用了信息的不对称。推而广之,越是扁平化的结构,在空间维度上就越不容易看到系统内的低熵体,但是多给点时间,低熵体必然会出现,我认为,低熵体来自于时间维度,而不是空间维度!扁平化的结构越大,低熵体形成的就越快,因为盘子大了,乌合大众供给的能量就越多…
如果你和我知道的信息一模一样实力相当,我便不会铤而走险去做损你利我的事情,因为这是最差的选择!Why?
如果你是个诚实的人,那么我能得到利益,但这对我来讲是唯一的好事情,如果你跟我一样龌龊,那么我们两败俱伤,如果你比我更龌龊,我净赔本。算算概率,合算吗?反之,如果我们均遵守规则,我们便可以得到稳定的收入,这既是双赢,也算利己!
这并不是一个零和的游戏,话说比特币的技术原理以及激励机制助力了博弈的偏向,人们自然而然会为了这种激励带来的利益去做诚实的事情,不是因为人之初性本善,而是因为:
做诚实的事情相比作恶更简单-技术因素
做诚实的事情可能会得到奖励-非技术因素
哈哈,很帅,不需要惩罚!
比特币到底如何抵御攻击
比特币在设计之初就希望在不动用警察军队等暴力机关的前提下让攻击者自己觉得攻击毫无意义。事实上它确实做到了。
接下来面对技术痴汉这些,所能采用的手段只能是技术手段了,这里不再赘述,详见其它的文章或者我去年写的这篇:
《比特币与区块链的大众科普文》中的“区块链技术如何避免攻击”一节:
这里仅仅举例说明几个典型的攻击行为:
偷取比特币
别人转给他的钱必须有私钥方能解锁花费。
伪造比特币
任何比特币不能无中生有,来源就两个!伪造者将无法解锁。
比特币世界的负反馈
比特币系统构成了两个负反馈系统,我仔细想了一下,嗯,是的。
挖矿收益负反馈
是的,有人投资了大量的矿机,希望通过挖矿来获得收益,这本身无可厚非,比起那些买房不住以及炒股散户来讲,做比特币矿工高尚多了!但高尚的代价就是收益薄。如果挖矿的收益还不足以负担电费,谁还挖矿?如果过挖矿的收益远高于电费,便会吸引大众前来,此时便会降低每一块出块的收益,要知道,你花费的可是现实中的货币啊,它和比特币的汇率一直在抖动!!就像淘金热的社会,黄金更多作为一种商品而不是货币一样的道理。因此,挖矿的收益将会越来越不显现,红利期早已过去。
交易费负反馈
100多年以后的2140年之后,比特币发放完毕。此后做矿工还有意义吗?毕竟金子已经没有了!十分有意义,因为比特币矿工挖取的不仅仅是比特币,而是价值!如果再也不发放新币了,那就只能赚取交易小费了。问题是大家都不想付小费怎么办?结果就是大家都延迟服务。总有希望尽快获得服务的去付更多的小费!大城市闹市区路边摆个摊,说,谁先来我给谁个棒棒糖,你信不信会有一大帮穿着西装皮鞋的体面人士去抢,人,就是这样,总想比别人强比别人快,哪怕自己明明不喜欢吃棒棒糖。
对比特币区块链的误解
这是一篇文章《》,这篇文章信息并不多,我对它非常赞同。
现在大家一窝蜂涌向区块链,完全就是冲着概念,完全被带傻了,绝大多数人对区块链的理解就是各种币,这是极其肤浅的。
区块链不是比特币!区块链是构建互联网信任机制的一种基础设施。关键就是这个“信任模型”,几千年来我们的文明社会已经进化到不需要政府的认证就可以放心从邻居那里借扳手,从小店那里买可乐。。。但是互联网世界还不行,然而以后当你完全使用了区块链就可以了。
接近90%的跟风者完全不懂区块链的设计原理和理念,剩下的10%中又有80%以上的人仅仅知道各种操作步骤,知道几个项目,就像很多“会写一手好inet socket程序代码的完全不懂网络”的人一样。
觉得自己知道几个“币”就自诩自己站在了风口的,无异于自己会调socket API就说自己精通网络编程的人一样,极其令人反感。
明眼人自古就很少没几个。我也不是自诩自己就很懂比特币区块链,但至少我是系统研究过某些算法细节的,至少我知道那些个共识,算法是怎么起作用的,有兴趣咱们可以共同讨论一下以发现一些新东西,而不是一窝蜂炒作就想着投机赚钱,如果你连是什么都不懂,根本谈不上要怎么做。
为什么现在大家一窝蜂的对诸如比特币之类的各种币有感,那是因为现如今这些东西都不是货币,它们具有货币的属性,却不是货币,它们简直就像商品一样,并且还是跟我们的日常生活毫无关系的商品,它完全不像菠菜,洗发水那样,甚至它都不如股票真实。即便你说100年后我的后代会用比特币买可乐,但这跟我没关系啊,我的目标是100年后让我的后代去卖可乐赚钱!所以,很显然,我现在要不惜一切手段去搞钱,嗯,比特币,是个途径,get it!无懈可击!然而我怕这种投机毁了比特币。
如果90%的人都是肤浅的人,另外10%的人还装什么高尚呢?
有什么不一样
比特币靠一种共识机制做到了去中心化。但是和中心化相比,有什么不一样呢?
其实,没什么不一定。如果你觉得耗费那么多的电力去计算一个数学难题仅仅为了确认几笔交易这样做很浪费,那么请解释:
银行的大楼为什么都盖的那么气派?要花多少钱?是不是随便一个能遮风挡雨的场所就能完成同样的职能?
为什么银行的雇员都穿着昂贵的套装,开着豪车,领着搞出平均工资好多倍的薪资?这笔钱是不是能省下?
同样都是毫无意义的损耗,为什么银行的大楼以及雇员的装备就可以让人觉得理所当然呢?这就是思维定势。
只要你耗费了能量,你就必须接着损耗。熵的流向是不会变的。你造了豪华的房屋,你就必然要花费更多的财力和精力去维护,不然它就还是会朝着高熵体前进,最终成为一片废墟…换个思路,如果你把造豪华大楼的能量平铺到了整个P2P网络,这就是区块链最振奋人心的发力之处,详情请了解矿池的概念。
如果你想通过献血保持新陈代谢,又不想让自己的血用于他人,那么你自然可以想办法让卫生无毒的针管抽取你足量的血液后,将它倒掉!
量子计算如何应对
我们再次回顾一下比特币系统所依托的技术因素:
数字签名技术
之所以不谈社会学这种非技术因素,是因为我认为人的心智在几千年甚至几万年都没什么大的改变。我之所以存在,可能是因为在我的祖先还是野人的时候,杀死了自己的兄弟吃到了救命的食物,这种事,在我们的身边依然在上演,是为卡涅阿德斯船板…
我们考虑技术因素,因为技术每过很短一段时间就会发生质变,且间隔貌似是指数级缩短的!从旧石器到新石器十几万年,从新石器到农业革命一两万年,从农业革命到工业革命几千年,从工业革命到信息革命一百多年,然后就是我们现在了。我们是如此的看好比特币,看到AI,看好我们当代这些所谓的大师大牛们想到的一切,殊不知这些依然是建立在前一代文明的根基上的优化或者改进,如果放到了下一代文明中,将会在触摸式打击下,灰飞烟灭。
这绝对不是危言耸听。你看看美索不达米亚或者埃及的新石器文明面对青铜文明时,商面对周时,迦太基面对罗马时,哥特面对阿拉伯时,美洲人面对欧洲人时,准噶尔面对清军时,清军面对欧美日时的那种怂样,这是时代的对抗!我就不信这种日光之下意在上演的故事会在我们的时代终结。
我们的非对称密码技术,哈希技术所利用的数学难题完全建立在线性的现代电子计算机基础之上,万一量子计算机出现怎么办??量子物理本身就是非确定性的,本身就是完全玩概率的,它可以同时干很多事情,它可以生死抉择一瞬间而双赢,它不再需要一个接一个地去尝试nonce去解决比特币区块链的那个数学难题,它可以一瞬间将它解决,因为它可以同时尝试很多的数字,然后观测分布即可。
量子计算便可以打破所有基于现代密码学的一切假设,为什么不恐慌呢?不过,在技术之外还有强大的非技术力量,这给了我们一点时间。
通货紧缩如何应对
和通货膨胀前大家拼命要把手里的钱花出去相反,紧缩型货币会抑制消费吗?毕竟明知道这个货币的绝对总量会越来越少(再过100多年,比特币将不再发币,然而期间可能会由于丢失,发送到黑洞地址造成比特币损毁…总量会减少),肯定会升值,与其花出去,不如留着啥也不买!
如何破局?假设百年以后,全世界的统一货币就是比特币,假设比特币还是一如既往地失而不能复得,怎么办?
个体死亡如何应对
公钥/私钥对是和其它的公钥私钥对无关联的。如果一个人突然死亡,其子女如何证明其有权持有死者的公钥私钥对,即便法律上认可这种继承,技术上如何实现?敢问穿西装的人能破解ECDSA吗?
与因特网同根生
我本来是不想写这一节的,但是现在看来时间还够,就再写几笔。
如今很多人都对比特币,区块链这种概念存在非常深的误解,以为挖矿就是为了证明,以为发一种币就能发财,很多人也都无法解释,然而更多的人选择不解释,而是把他们代入到一种编程环节,给他们足够多的源代码,足够多的工程,这样他们就没时间考虑技术以外的关于设计方面的细节了,此后各种API层出不穷,各种技术讨论资料汗牛充栋…然后极其少数的新一代精英就起来了,就像当年的乔布斯,盖茨一样…大部分的人都成了烧锅炉的,因为他们除了代码之外,什么都不懂…
幸运自己不是搞区块链的,非常之幸运。偶然回忆起书上看到的因特网刚兴起的那年头,也就是上个世纪90年代吧,是不是跟现在很像呢?更早一点的例子,就是TCP/IP分组交换网络了吧,当人们第一次抛弃电话网络中心的时候,世界就已经走上了去中心化的不归路,且越走越远!是时候再读一遍凯文·凯利的《失控》了!
PS:最后两个配图,盗图所得,侵删。
二,区块链理论(定义及特性)
区块链定义
区块链是一种基于互联网的分布式点对点协议,通常又被称为一种分布式的加密账本,可以将加密后的数据(称之为一个区块)按照时间序列叠加成一个链式结构。 百度百科中对区块链做如下定义:
区块链的技术原理
上一章讲到了记账,切换到区块链的技术层面,对应如下:
1、 每个账房先生对应的是每个网络节点,如果一个节点有改变,会广播通知其他的节点(这种互相通信的功能叫做“网络路由”)
2、 前一章的“掷骰子...
区块链教程、区块链指南、区块链中文手册、区块链原理
区块链的技术有望以一个更低的成本解决更广泛的信任问题所以被受人关注。维基说了那么长一串还是没有说清楚区块链到底是什么,又有什么用。我在一篇36Kr的文章《未来十年,Blockchain会如何互联网世界...
区块链-3:区块链底层架构
区块链基础架构分为6层,包括数据层、网络层、共识层、激励层、合约层、应用层。每层分别完成一项核心功能,各层之间互相配合,实现一个去中心化的信任机制。
一、数据层-描述区块链技术的物理形式
一个故事告诉你比特币的原理及运作机制
比特币攻击
比特币原理整理(一)
前几天研究了一下比特币,对这几天的研究结果做一个总结,里面有些内容是我自己的一些理解,如果有错误望指正,谢谢。
现在比特币这个词有多种含义,可能指代的是一种数字货币,也可能指代的是其底层的存储方式-区...
用人话解释比特币原理(转载)
究竟是什么让一枚虚拟货币的汇率在3年间翻了25000倍,是什么力量让央行副行长“感兴趣”但“不承认”,抛开投机与商业欺诈比特币作为一种工具究竟有没有价值?欢迎收看今天的走进“伪”科学——用普通人也能理...
区块链Btc98说明比特币的原理及运作机制
Btc98比特币运作原理与运作机制学习
没有更多推荐了,关于区块链和比特币,你想知道的都在这里!
目录:几个月前,一个教分布式系统的教授开玩笑地跟我说,现在风口都是AI了,啥时候轮得上计算机系统?现在看来,这个风口真的来了, 还来得很猛烈,可惜的是大家关注的并不是分布式系统。比特币疯涨,区块链大热,各种加密货币ICO(Initial Coin Offering)层出不穷,新闻媒体争相报道,各界人士跳出来说区块链将塑造未来,潜力无限。事实上不少人都在雾里看花,所以我想尝试一下用简单易懂的方法帮大家扒开这一层雾。我并不是专家,如有出错和不准确的地方,欢迎指出和讨论。Let’s make bitcoins and blockchain uncool again!比特币,区块链概论简单来说,比特币是一种去中心化(decentralized)的加密货币(cryptocurrency),区块链是一个分布式(理论上完全的P2P)数据库。&比特币通过区块链这一技术来实现“去中心化”和解决“双重支付问题 (double-spending problem)”。比特币是2008年由一个署名为中本聪(Satoshi Nakamoto)的人提出(),其构想是一个完全去中心化,不需要权威/第三方参与,用户对用户的电子货币。比特币的实现主要由两个部分组成:数字签名(Digital Signature): 加密支付区块链(Blockchain): 记载交易顺序,建立整个P2P网络的连贯性(consistency)和一致性(consensus)数字签名,加密支付想象一下,如果小明现在想支付小芳2个币,于是他写了“小明 支付 小芳 2币”,同理, 如果A想向B支付N个币,A可以写“A 支付 B N币”。那问题就来了,如果小明非常不老实,他可以随意冒名写“小芳 支付 小明 20币”。如何来保证支付的可靠性呢?比特币或者其他加密货币通过数字签名来加密支付。&当用户加入比特币生态系统的时候,每个用户会得到一个比特币地址(Bitcoin Address)和比特币钱包(Bitcoin Wallet),钱包里其实是一对密钥(a pair of keys), 包括公钥和私钥(public & private key),私钥用来生成数字签名,和公钥一起使用进行不对称加密。&简单来说, 不对称加密能够保证小明的比特币只有小明本人(本质上是拥有小明私钥的人)能拿来进行支付。所以,与其说小明的比特币,不如说小明私钥的比特币,这也是为什么比特币是匿名的原因之一。另外一个原因是比特币网络的用户是由比特币地址组成的,也就是说当你要支付的时候,比特币网络记录的是“[某个比特币地址] 支付 [某个比特币地址]”,而不是直接记录“某某 支付 某某”。地址的拥有者是由其私钥证明的。所以,保护好自己的私钥非常重要。事实上,私钥是可能因为各种原因(电脑废了,内存丢了等等)而消失的,当私钥消失的时候,所对应的比特币再也不可能被找到了。区块链,记载交易顺序好了,现在我们通过不对称加密保证了支付的可靠性,也就是说现在不论小明有多少坏水,他都不能冒名小芳写“小芳 支付 小明 20币”。小明转念一想,虽然他不能伪造支付,但他可以双重支付他所拥有的币。比如,小明写了“小明 支付 小芳 1币”, 小明又写了“小明 支付 小李 1币”,但事实上小明身上总共也就只有1个币。如何防止像这样的“双重支付问题”的发生?在中心化货币(比如实体货币,又或者是Q币)的世界里,权威第三方(比如银行,腾讯的数据库)能够确认支付者有足够的支付数量,因为第三方记录了整个交易系统的交易,也包括了交易顺序。难道我们也要引入权威第三方吗?那“去中心化”的构想就毫无意义了。我们需要一个系统,这个系统里的每一个参与者要同意一个唯一正确的交易历史,包括交易顺序。&简单来说,每个参与者(其实不是每个节点,而是网络里的矿工,下文会解释)都会记录整个网络的交易历史,交易顺序,而这个交易记录是一致唯一的(consistency & consensus)。这个系统/网络是什么呢?它就是现在被吹得神乎其神,“将要改变每个行业”的区块链(block chains)。从技术上讲,其实区块链就是一个“高容忍拜占庭失败”(high tolerance of Byzantine failures)的P2P网络(Peer-to-Peer network),这个网络里的Peer(其实就是矿工,下文会详细解释挖矿和矿工)储存着整个网络唯一的交易历史。P2P网络是分布式系统的一种。分布式系统又是啥?举个例子,Snapchat的用户那么多,一个电脑/服务器能储存的数据是有限的,而且肯定不够啊,那咋办呢?一个电脑不够,千千万万个电脑总够了吧(其实可能也不够,这里只是举个例子)?这千千万万个电脑,通过网络交流彼此的数据,就形成了分布式系统(distributed system)。P2P网络,通俗一点来说就是网络里的每一个用户是对等的,享有同样的权利和义务(现实中完全的去中心化的P2P网络几乎不可能存在)。“拜占庭失败”,简单来说就是网络里的用户偏离了自己规定的表现,比如宕机,叛变,不诚实。“高容忍拜占庭失败”对比特币很重要,因为容忍性直接决定了整个区块链网络的稳定和可靠性。像这样的P2P网络并不是什么新科技,高容忍的P2P网络不少(比如像),&比特币最大的发明在于新的确定的比特币交易是由挖矿(bitcoin mining)记录的。如果你已经被上面大堆的术语绕晕了,没关系,不影响理解。下面让我们来详细看一下区块链,看完之后你就会发现这玩意儿理解起来并不复杂:Hash要理解区块链,首先要弄懂一个概念叫Hash。Hash这里指的是Cryptographic Hash。简单来说,Hash将输入变成长度定量的二进制数字。&比如,输入“小明 支付 小芳 2币”,输出hash是“….00”。只要两个输入不一样,输出Hash就不会一样。&Hash还有一个特性是计算输出Hash容易,由输出Hash反推输入字符串几乎不可能。&挖矿也和Cryptographic Hash息息相关,下文会解释。比特币挖矿使用的是double SHA-256。区块区块链(block chains)的最基本单元是区块(block)。&每一个区块由区块头(block header)和区块体(block body)组成。(实际上在中本聪的论文中,下图左,并没有提到区块体,这里加以区分只是为了便于理解。)&区块体记录交易(transactions),区块头记录了关于这个区块的一些信息,比如区块的Hash,上一个区块的Hash,Nonce和Root Hash(又叫 Merkle Root)。每个区块Hash是不同的,相当于区块的身份证号码。通过保存上一个区块的Hash,这个区块就可以跟上个区块连起来,网络里的区块连在一起就形成了区块链。&所以一个朴素不浮夸不装逼的区块链示意图如下:区块Hash是如何计算的呢?请看下面的拟代码:Root&Hash&=&Cryptographic&Hash(区块交易数据)区块Hash&=&Cryptographic&Hash(区块高度,生成时间,上个区块Hash,Root&Hash,&Nonce)严格意义上讲,root hash的计算不像上面代码那样写得那么简单,但这样写是为了证明Root Hash是依赖于区块的交易数据的,而区块Hash又是依靠于Root Hash的,所以结论就是区块Hash取决于其记录的交易数据。交易数据一旦被写入区块,就不能被更。&因为一旦被更改,区块Hash就会随之改变,为了保持这个被更改的区块在整个区块链中,就要改变这个区块之后的所有区块。&这就是“牵一发而动全身”。看到这里,我们来总结一下:区块链的基本单元是区块每个区块有自己的区块头和区块体,区块体记录交易数据,区块头记录自己的区块Hash和上一个区块的Hash区块连着区块形成了区块链区块链中的区块不可更改挖矿:新区块的诞生上面说到用数字签名可以保证交易的真实性,但在比特币网络里,确定交易真实性还不够。一笔交易要成功,这笔交易必须是要被记录在区块里才算确认。&新区块的诞生就叫做挖矿(bitcoin mining)。挖矿的过程是这样的。矿工们记录网络里的交易,同时也在计算下一个区块Hash,下一个区块Hash是怎么计算的呢?就是上文提到的拟代码里那两个公式。在同一时间,有可能有很多个矿工都在挖矿, 如何决定哪个矿工挖到下一个区块呢?比特币的开发者决定,当矿工计算的区块Hash恰巧达到某个正确数值的时候,这个区块就被成功挖到了,这个区块所记录的交易也就正式被确认。挖矿的难点: 工作量证明正确的区块Hash需要以“足够的零”开头。&比如,下一块Hash需要3个零开头,那么矿工计算的区块Hash就必须像“000….”这样的形式。需要开头的零越多,计算困难就越大,计算量就越大。上面提到的Nonce记录了这个区块尝试了计算Hash多少次才成功。比如现在的区块一般要9亿次计算才能有可能挖到矿,当然,尝试几万次也是有可能成功的。挖矿需要很大的计算量,也相当耗时,耗电。计算这个正确的Hash的过程叫“工作量证明 (proof-of-work)”。&因为Hash的特性,“工作量证明”的特点是很难计算出正确结果,但很容易验证正确结果。很多人将这一过程称为“解难题”,但计算正确的Hash并不需要脑力投入,只是需要电脑不停地计算新的Hash直到猜中。一旦有矿工挖到了下一个区块,这个矿工会告知整个网络(broadcast), 整个网络都会承认和同步这个新生成的区块,&正在计算这个区块的其他矿工也不得不放弃进行到一半的计算,投身到计算下一区块中。如果恰巧几个矿工同时挖到了下一个区块,其他矿工会把新的区块都保存下来,直到某一个区块分支比其他区块分支都长,这个时候就承认最长的分支为正式的区块链。新区块生成时间。&如果网络中有越来越多的矿工,或者新区块生成速度变快,那么计算到正确Hash的难度就会自动上升。比特币的开发者规定,新的区块生成平均需要10分钟。这个10分钟规定有两个目的:确保网络中的其他矿工有足够时间同步交易记录,也就是同步区块链。更新速度太快的话,可能会导致矿工之间的区块链不同步。确保恶意矿工不能伪造区块/区块链。如果区块生成时间太快,恶意矿工可以快速地生成假的区块链,比其他诚实矿工生成的真实区块链都长。防止恶意攻击。&如何防止恶意攻击区块链?举个例子,现在区块链网络里有4个矿工(小明,小芳,小李,小张),小明正好挖到下一个区块,这个区块里记录着一条交易“小明 支付 小芳 20币”,然后他并没有告知全网络,而是只告诉了小芳,这时小芳就会立刻更新自己的区块链,并接着挖下一个区块。所以这个时候,小芳会误以为“小明 支付 小芳 20币“这个交易已经确认,但其他矿工并不会这么认为。但由于小芳还是会听到其他矿工的新区块通知,小明为了让小芳继续相信自己的假区块,就必须比其他矿工更快地挖掘出新的区块来维持自己的假区块链,而这基本不可能,除非小明掌控了整个网络中51%以上的计算能力。(这样的造假实际上是有可能的,请看下文)潜在的恶意攻击。&上面提到,除非恶意的矿工掌控了区块链网络中51%以上的计算能力,否则就不可能攻击整个网络。实际操作上,一般来说,只要攻击者的区块分支长度达到6,也就是说恶意攻击者能赶在其他矿工之前抢先连续生产6个区块,那么他假造的区块就成功了。连续抢先生产6个区块是非常非常困难的,但一个叫“BTC Guid”的采矿池(mining pool)就曾成功抢在他人之前连续生产6个区块。&采矿池(mining pool)顾名思义,就是把一堆矿工集合在一起采矿,因为矿工自己一个采矿的计算能力有限。试想一下,如果矿池的计算能力集中了整个网络的51%,那这个矿池就完全掌握了比特币网络。除了上面提到的潜在攻击,区块链潜在的安全漏洞,发现的,没发现的,肯定都是存在的。比特币恶意攻击事件也是存在的,比如比特币交易速度。&上面提到,只有被正式写入区块的交易才能被确认成功。一个区块的大小为1M,也就是说最多也只能记载2000多笔交易。每10分钟才记载2000多笔交易,也就是说比特币的交易处理速度是3~7笔每秒,跟VISA每秒2万4千笔交易速度比起来,简直是弱爆。&不少炒作加密电子货币的人说,要是货币真的开始跌了,就赶紧抛啊。但买卖电子货币的延时可能还挺长的。等你的交易真的被区块确认的时候,比特币的价格可能也不是你当初点击抛售的那个价格了。挖矿的奖励。&为了鼓励矿工(如果没有矿工,交易就无法被确认),比特币的开发者规定,新区块的生成会奖励挖矿者一定量的比特币。2008年开始的时候是50个比特币,每四年减半,到现在2018年是12.5个比特币。这样推算下来,到2140年的时候,全球的比特币就会停止增长。全球最多会有两百多万比特币。目前20%的比特币都已经被挖出来了。到2140年,新的区块还是会生成,但新生成的区块不会奖励矿工新的比特币了。那矿工还有什么方式可以进行收益吗?有!矿工可以收取手续费。因为每一笔交易不会被正式确认直到矿工把这笔交易写进自己的区块里,如果你给矿工的手续费给少了,那有可能矿工就不会把你的交易写进去,这样你的交易被确认就要等很久,直到有矿工把你的交易写进去。矿挖的疯狂。&挖矿的收益算起来还是很可观的,也正是因为这样,吸引了非常多的人变身矿工。挖矿其实很简单,买相应的硬件,和下载现成的挖矿软件就可以进行挖矿。挖矿最大的支出是电费,所以很多矿工甚至跑到了加拿大,瑞士挖矿,因为他们电便宜。偷电(比如特斯拉充电站,建筑工地电源)也屡见不鲜。根据摩根士丹利预测,2018年挖矿的用电量将等于2025年全球电动车的总耗电量。有人不禁问,消耗这么多人类资源就是为了拿到电子货币,有意思吗?(作者抱怨一下:挖矿使得GPU价格疯涨,正儿八经玩游戏的人都要买不起GPU了)对于比特币/加密货币的思考作者的主观思考,仅供参考比特币和其他加密货币到底有没有可能成为未来的一种世界货币?&我们可以说一句永远正确的废话:万事皆有可能。如果不说废话,首先我们得讨论是什么令美元成为了世界货币?简单来说,美元能成为世界货币是因为美元的背后有美国在撑腰,大家相信美国,美元自然有可信度,有流通性。我们可以拿美元去其他国家直接消费,但如果我们拿柬埔寨的货币去其他国家消费呢?所以,成为世界货币的条件是可信度,大家信任这个货币。那比特币和其他加密货币的可信度怎么样?从其构想来说,比特币是一个完全去中心化,不需要权威/第三方参与,用户对用户的电子加密货币。我们可以从技术层面的加密和可靠性考虑比特币和其他加密货币的可信度。货币的”去中心化“,”匿名性“就一定是一种优势吗?&我个人认为,比起去中心化的加密匿名货币,我更相信有第三方权威担保的中心化货币。加密货币的去心中化和匿名性,从另一方面也意味着,如果货币被偷盗,无法负责。举个例子,如果你的信用卡被盗刷了,你可以向银行申请refund,但如果加密货币被盗刷了,那你就只能认栽了。(或许买个加密货币保险?新行业?) 有人会说,相信国家发行的货币,要是国家倒了怎么办?比特币和加密货币可以作为一种规避这种风险的手段。但我个人认为,除非是战乱时期,这种风险发生的几率还是比较小。要真是在战乱,比特币的中心服务器可能早被炸了。简单来说,比起本来就脆弱的网络,我还是更相信权威第三方。技术上的“去中心化”并不等同于现实中的“去中心化”。&全球的大量比特币可能被控制在非常少的几百个人手里,这几百个人可以联合起来控制市场走势,而因为比特币的匿名性,他们可能不会收受到任何惩罚。技术上的“去中心化”,可能反而保证了现实中的绝对“中心化”。区块链本质是P2P的分布式网络,而分布式网络做到完全地去中心化是几乎不可能的。也要考虑到区块链的潜在安全风险。投机炒作多。&把比特币和其他加密货币推到风口的不是参与者对其成为未来货币的期望,而是跟风把其当成一种纯粹的投机,炒作手段。从这一点来看,加密货币现在的可信度就得打个问号。区块链有没有其他应用场景?&除了加密货币系统,区块链还有没有其他应用场景?你们说呢?无论比特币,ICO和区块链是未来的塑造者,还是昙花一现的骗局,唯一可以肯定的一点是,有人会在这波风口里赚得盆满钵满,有人也会在这波风口里亏得血本无归。参考资料:原稿地址:https://danqi7.github.io/jekyll/original//make-blockchain-uncool-again.html
申请试用 提交后工作人员会尽快与您联系进行功能演示
提交 不了,谢谢
技术咨询已转移到管理后台,请先登录 即时通讯云使用者请在应用详情页面咨询客户互动云使用者请进入管理员模式咨询
提示:技术咨询已转移到管理后台,请先登录 即时通讯云用户请在应用详情页提交工单,同时提供论坛互助支持服务。客户互动云用户请进入管理员模式在线咨询。

我要回帖

更多关于 比特币是区块链吗 的文章

 

随机推荐