首页区块链 正文
  • QQ空间
  • 回复

比特镇魂曲06(上)众筹雇佣杀手的智能合约

文章来源: 2018-12-30 09:07:00

比特镇魂曲06(上)众筹雇佣杀手的智能合约

▐ 撰文/素为

本集关键词:中本聪骰子、存证、存在性证明、OP_RETURN、脚本、染色币、联合挖矿、51%攻击、概率安全、公证通、合约币、万事达币、侧链/跨链、闪电网络、瑞波币、私有链、联盟链、R3CEV、IPFS、Filecoin

️ 主人,你可玩过“中本聪骰子(Satoshi Dice)”?

骰子?听名字似乎与赌博有关。

️ 说好听的是娱乐,娱乐!

切~

️ 要知道,“中本聪骰子(Satoshi Dice)”可是最早的也是最经典的区块链应用之一哟!

是比特币发明人中本聪搞的吗?

️ 不是,只是用比特币进行投注,所以起了这么个名字而已。

果然是赌博!那这个“中本聪骰子”具体与区块链有什么关系?

️ 它用比特币作为筹码进行投注,具体玩法是:通过向特定账号发送一定数额的比特币,来代表押注某个条件(例如开奖数字不大于64),接着就坐开奖好了,如果符合押注的条件就能赢得翻倍的比特币奖励。

比特镇魂曲06(上)众筹雇佣杀手的智能合约

“中本聪骰子”截图

我怎么知道这个赌博网站是不是骗人的啊?

️ 所有的操作过程都是系统自动运行的,关键是,谜底文件的哈希值已经事先放在了比特币区块链上,事后任何人都可以进行验证,因此,它可以做到童叟无欺。简单的玩法,技术确保公正,使得这个赌博网站以旺盛的生命力一直存在至今。

把谜底文件的哈希值放在比特币区块链上,为啥不直接把谜底文件放区块链上呢?

️ 你傻呀!谜底文件的明文放区块链上了,大家事前都能看到了,还赌什么呀?

哦~所以只是放谜底文件的哈希值,但哈希值能保证谜底文件是没有篡改过的吗?

️ 你忘了,原文与哈希值之间是唯一对应的,从原文可以算出哈希值,但由哈希值却无法得到原文,那么,它如何伪造和篡改呢?

嗯,这套机制真是绝妙!怎么把哈希值刻到比特币区块链上?

️ 因为“中本聪骰子”出现的非常早,在早期,在比特币区块链上刻下印记,是挖矿矿工的特权,只有矿工可以通过设定好的程序将内容刻在“币基”上。

币基?

️ 就是CoinBase,你知道挖矿,对吧?挖矿可以得到一定数量的比特币,这些比特币是由系统发送的,所以每个被打包的区块中的第一笔交易与普通交易的区别是,第一笔交易是没有发送人的,这样的交易名为CoinBase交易。

哦,就像古代的铸币师可以悄悄的在金属钱币中留下记号。

️ 哈哈,道理类似,但在古代,铸币师如果悄悄这样做,被发现是要杀头的。

那现在呢?“中本聪骰子”是用的币基刻字技术吗?

️ 当然不是,现在比特币区块链上留下信息已经方便很多了,用SDK一行代码就能搞定,而且存储的位置也不是币基了。

愿闻其详。

️ 历史和技术都是一步步发展演变的,罗马从来不是一天能建成的。在比特币0.9版之前,比特币其实都没有提供一个正式的用于存储信息的位置,那时“中本聪骰子”为了证明其公平性,用交易的数额承载信息,具体做法是:将谜底文件的哈希值分割成16个4位十六进制数,分别转化为最多5位的十进制数,将这5位数分别作为输出金额的末尾数字(比特币的计量单位小数点后有8个0,因此每笔输出金额不超过0.00100000比特币),构造一笔包含16个输出的交易(输出金额不超过0.016比特币),将收款指向自己的账户,这样实际上只需要花费非常少的矿工费,就可以实现永久的存在性证明效果。

用交易的数额承载信息,而且还是分几笔组合记录,这也太折腾了。

️ 还有一种折腾的方法是,在交易广播前将“OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG”中pubKeyHash这里的40个0替换成拟存证的信息。

这,这是名副其实的见缝插针呀!

️ 没办法啊!那时候大家并没有意识到比特币是一项区块链技术,早期,大家只被比特币的货币属性所吸引,大多数人还没有意识到,比特币上可以承载货币金融以外的更广阔范围的数据,并且能保证这些数据牢固不可篡改,所以没有提供专门的存证功能,因此并没有太高效便捷的方法。

像流通的金融票据一样,开一个备注栏就好了嘛!

️ 如你所说,确实如此,一旦想到,便可做到,这就是现代信息技术。从0.9版开始,比特币专门新增了交易附言位置OP_RETURN,使得通过脚本进行存证变得非常简单直接。

什么脚本?什么存证?

️ 哈哈,“脚本”是编程术语,就是Script,你可以把它理解为一条条计算机命令的集合,脚本不一定能胜任大型程序,但对于一些小的程序,用脚本来进行编程,是非常快捷高效的。

所以,OP_RETURN的出现,让刻字到比特币区块链上变得很容易了,对吗?

比特镇魂曲06(上)众筹雇佣杀手的智能合约

素为2016年测试SDK时在OP_RETURN上刻了个暴露年龄的“天马流星拳!”见 https://www.blockchain.com/btc/tx/1649008f22e7f56e6cc94f254ab9f805c5345c1041e84b99f497d8b383d14c84

️ 是的。你所谓的“刻字”就是“存证”,全称是“存在性证明”,Proof of Existence。

飙术语、飙英语……我要弃聊了……

️ 好,好,我们来聊点别的,聊你最感兴趣的娱乐八卦!

这还差不多~

️ 2013年6月,香港媒体称“成龙高楼坠亡”,而且两天连续报道……

好拙劣的谣言。

️ 于是,成龙顺手拿起了一份报纸,指着上面的日期拍了一张照片,昭告天下,他还活得好好的。

报纸能证明他今天还活着,这样说他前天坠亡的谣言就不攻自破了。

️ 因为报纸是按照日期出版的,某种意义上,是难以伪造的,加上同样难以伪造的照片,就形成了一套可信任的体系。

比特镇魂曲06(上)众筹雇佣杀手的智能合约

成龙用报纸日期证明自己还活着

哦,我知道区块链上的Proof of Existence的含义啦!

️ 不,你只是一知半解。存在性证明分两种:一种是向前证明,一种是向后证明。成龙证明此时还活着是一种向前证明,而区块链上的存证是向后证明。

什么向前向后,弄的我糊里糊涂的。

️ 你看,2009年1月3日,中本聪在启动比特币网络时,在其“创世区块”也就是第一个区块的币基中刻了一段文字:“The Times 03/Jan/2009 Chancellor on brink of second bailout forbanks”,翻译过来就是:“《泰晤士报》2009年1月3日,财政大臣正处于实施第二轮银行紧急援助的边缘”。见 https://www.blockchain.com/btc/tx/4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b?show_adv=true。

表明那时候恰逢金融危机。

️ 没那么简单,这是当天《泰晤士报》的头版文字标题。

哦~

️ 这样,就是一个向后的证明,把这段内容记录在比特币的创世区块中,在后来人看,它就可以证明比特币的创世不会早于2009年1月3日。

那我如果要用比特币或其它区块链来存还没有公开的作品的文档哈希值呢?

️ 你今天存上链的东西,将来也只能证明这个东西在今天之后是存在的,但今天之前的状态则不能证明,这就是向后证明。

哦,明白了。

️ 中本聪刻在创世区块中的这个标题,将伴随比特币网络成为一个永久的记录,除了揶揄当年金融危机中政府的束手无策,也是在宣称,比特币区块链拥有不可篡改的存证能力,并且由全网协议的唯一“时间戳(timestamp)”为记录加上了时间维度。

比特镇魂曲06(上)众筹雇佣杀手的智能合约

比特币创世区块的CoinBase里记录着一段话

比特镇魂曲06(上)众筹雇佣杀手的智能合约

2009年1月3日的泰晤士报

我在翻查区块链浏览器,发现很多交易的OP_RETURN里都有内容,只不过很多都不是明文。

️ 现如今,OP_RETURN已经广泛运用起来了,但关于OP_RETURN,其实比特币基金会在文档中说,OP_RETURN特性的加入并不代表对比特币区块链可以作为分布式数据存储的认可。

这话说这么绕干嘛!

️ 嗯,无论如何,利用OP_RETURN存储信息的区块链存证应用早已遍地开花,一项名为“染色币(ColoredCoins)”的技术被提出。

又不是美术课,搞什么染色呀?这又是什么竞争币吗?

️ 染色币不是一个具体的币种,而是一项技术的统称。当人们发现可以往区块链中刻字的时候,特别是利用OP_RETURN往比特币中存储信息变得容易之后,人们开始将现实世界中的事物与虚拟世界区块链上的币进行锚定,比如一辆车的所有权,可以写在某个币的属性之中,如此,拥有这个币,就等于拥有了这辆车的所有权了。

给原本无差别的币加上某种备注和属性,就是“染色”啰?

️ 对,标注你拥有一辆车的比特币可以是非常少的0.0001个币,因为重要的不是币本身的面值,而是币上承载的产权。

染色币技术主要考虑的是比特币区块链上记载内容的不可篡改特性。

️ 你get到了,就是这样,所以,染色币技术为实体财产进入虚拟世界打开了一条通道,运用区块链技术,可以在不需要权威第三方的情况下,实现财产的保存和流转。

我突然想到,“不需要权威第三方”就能对产权进行确权,进行流转,区块链对于现有的法律证据认定体系、公证机制都是一种革命性的冲击呀!

️ 这样的服务在四、五年前就已经大规模出现了。率先提供存在性证明的服务网站非常直白的就叫“Proof Of Existence”,上传一个电子文件,网站不会记录文件本身,而只提取文件的哈希值,然后需要你向某个比特币账号打入较小数额的费用,就能够将这个哈希值存储到比特币区块链上了。

比特镇魂曲06(上)众筹雇佣杀手的智能合约

Proofofexistence.com 网站部分截图

为什么只存哈希值呢?

️ 因为早期OP_RETURN只能存储40个字节的数据,所以一般只是把文件的32位哈希值存储到链上。这样做,只能单向检验文件真伪,并不能逆向还原文件,用户仍需要在本机电脑上妥善保存文件的原件。

啊?那多不方便呀!我就是想存全部文件,可不可以呀?

️ 在信息技术的世界里,没有不可以,就是成本高低的问题嘛!如果你想在比特币区块链上存储全文,就把它拆分成若干份hex字串,然后分段存储,需要取用的时候再按照一定的顺序组装回来嘛,

呃~太麻烦,太低效了,不是长久之计。

️ 对呀,而且内容也不保密,没必要把冗长的全文都存在链上。

重要的内容直接全文上链,不重要的就只在链上存哈希值,那么,中等重要程度的文件呢?是不是可以有某种既较为安全又成本没那么高的解决方案?

️ 有的,“公证通(Factom)”是一个瞄准区块链存证市场的老牌应用,同时,它自身也是一个区块链网络,只是它这个链与比特币区块链进行了锚定。

什么是“锚定”?

️ 因为直接把内容写入到比特币区块链中,成本较高,所以Factom就先把需要存证的内容写到自己的链上,然后再把自己链生成的区块的哈希值写到比特币的链上,这样的锚定。

哦,自己弄一个链,这样成本就降低了;同时,自己链又与比特币的链进行某种锚定,如此又能确保信息可靠不被篡改,这就是我刚刚期望的安全且较低成本的存证解决方案吧!

️ 是的,Factom以比特币OP_RETURN为锚定基础,通过创建一条自己的链,构造出了较低成本且相对高效的存储层,抓住了行业痛点,因而占据了存证产业的先机。记得2015年时,有报道称Factom曾帮助政局动荡的洪都拉斯用区块链技术登记土地所有权,一时风光无限。

如果存证体系完备了,那么用区块链技术就可以完美的搭建出电子证据、知识产权、身份验证、婚姻登记、土地登记、食品溯源各个领域的新生态、新规则。

️ 因为区块链存证已经几乎没有什么门槛了,所以这些年,相关的应用爆发,有做食品药品溯源的,有做奢侈品防伪的,有做学历认证的,也有搞慈善和公益资金使用记录的……

我有点开脑洞,既然可以用染色币来表达现实财产,那么也可以用这项技术来表达另一种数字货币。

️ 你不是异想天开,是有一些竞争币确实就这么做的,他们称之为“联合挖矿”:合约币(Counterparty)和万事达币(MasterCoin)曾运用“多签名公钥空位(OP_CHECKSIGVERIFY)”对寄生在比特币区块链上的币种交易情况进行存证记录。

哦~听起来就感觉,链和链之间有着某种纠缠不清的暧昧关系一样,不是那么舒服……

️ 联合挖矿的优点是,让低币值的链(如factom)可以依附高币值的链(如bitcoin),无需额外消耗算力,让前者获得后者同等的安全性,这样可以有效避免51%攻击带来的威胁。但联合挖矿的缺点是,因为寄生关系会在高币值的链的区块中负载大量的垃圾信息,就好像我们把借款信息写在人民币纸币上一样,这虽然会让这笔借款更安全,但对人民币纸币来说却是个灾难。

所以比特币基金会是反对所谓的“联合挖矿”的,对吧?

️ 是的。

你刚才提到“51%攻击”是什么意思?

️ 在大众看来,“51%攻击”是一把悬在区块链网络头顶上的达摩克利斯之剑,它警告着世人:区块链以密码学技术为底层创建的这条坚固的数据链条,号称安全可靠,但实际上只是一种“概率安全”。

比特镇魂曲06(上)众筹雇佣杀手的智能合约

达摩克利斯之剑

概率安全?

️ 还记得我们之前讲挖矿时提到的,比特币网络如何防止“双花”吗?就是如何防止1个币被花掉两次。

哦,记得,两个不同节点打包的区块会产生竞争,最终哪一个区块上后续的链更长,哪个便胜出成为主链,主链有且只有一个,而竞争失败的那个链就失效了,泯灭在漫漫的历史之中。

️ 此刻,我问你,如果我突然发明了很牛很牛的矿机,算力可以压倒现有全网算力,我试图拯救那个在几十分钟前竞争失败的链,试想,接下来会发生什么?

或许,原本竞争失败的链会晋升为主链,而原本的主链会变成失败的链。

️ 那么,原来主链上被打包的交易呢?

会失效,取而代之生效的是新晋主链里的交易变成了生效的了。

️ 好,我现在告诉你,我有一个非常牛非常牛的矿机,就跟灭霸打个响指似的,瞬间碾压全网算力,我可以从2009年1月3日比特币诞生之日开始在较短时间内生成一条新主链把所有已经确定的交易及UTXO全部改写……

这,这不可能吧?

️ 目前来说,没有这么牛的算力的矿机,这是事实,但比特币区块链网络永远不是100%的安全,哪怕99.9999……后面已经是无数位的9,也永远没有到达绝对不可更改的地步。这便是“概率安全”的含义。

讨论这个可能没有意义吧?

️ 不,有意义,不要低估这把悬在头顶的达摩克利斯之剑,“51%攻击”只是一个通俗的、不那么准确的说法:并非只有到了51%的算力才会使已确认的区块被改写。事实上,只拥有48%的全网算力就能够有85%的概率逆转10个已被确认的区块;就算只能操控40%的全网算力,也意味着有50%的概率去推翻之前的6次确认……

啊!这么不确定呀?

️ 这也是业界拼命想改进区块链算法、试图避免矿池导致的算力垄断的根本原因,毕竟,区块链是一个承载着价值的网络,其安全性与链上的个人财富密切相关啊!

好吧,比特币能存活十年,真心不容易!

️ 比特币是一个奇迹,它有最多的算力为之投入背书,为之安全加固。但那些竞争币就很惨了,它们一旦显山漏水,便很快就被来自“黑暗森林”中的大算力给51%攻击掉了。

惨!

️ 所以,有些竞争币最终成为了山寨币乃至空气币,也是有原因的,并不一定一开始运营团队就想诈骗,而是能力不足、算力不足,导致他们预料不到这样赔了夫人又折兵的惨淡结局。

Factom在比特币区块链上锚定一个自己的链,Counterparty、MasterCoin与比特币联合挖矿,这些,我是不是能把它理解为“侧链”技术?

️ 看不出来,你还蛮懂咧!虽然有的观点把“侧链”的概念限制在较小的范围内,有严格的定义和限制,但是在我看来,区块链作为一个仍处于早期探索期的技术,没必要设置那么死板的条条框框,那不利于技术创新。在我看来,凡是能实现链与链之间交互的技术,都可归为“侧链”的范畴。

链和链交互……难道是某种网络“协议”,用它可以织链成网!

️ 没错,首次提出侧链(SideChain)技术白皮书的,就是一家协议区块链协议公司BlockStream,具体的提出人是我们之前提到过多次的亚当·巴克,Adam Back。

哦,就是发明HashCash(哈希现金算法机制)的那位大神。

️ 就是他在2014年10月提出的“侧链”。如果你不去想织链成网那么复杂的问题的话,那么实际上,所有的侧链都可以抽象为两个链之间的交互,其中一个是主链,另一个是侧链。由此可见,侧链也只是相对而言,两条链在不同的语境下互为侧链。

所以,这项技术更准确的叫法,应该是“跨链”技术。

️ 主人,我看你是渐入佳境呀!

比特镇魂曲06(上)众筹雇佣杀手的智能合约

比特币区块链与侧链的关系

我也不能老听你一点点讲,这几天我也查了些资料,进行了一番学习。

️ 不错不错!

其实,后来在2015年2月,“闪电网络”的提出也应该是受到了跨链技术的启发。

️ 我认为是的,因为所谓“闪电网络(Lightning Network)”,包括后来不同叫法实则是差不多事物的“雷电网络(Raiden Network)”,本质上都是通过建立一个侧链通道,把具体的“交易”放到侧链里去完成,而最终的“结算”则是待价值交换结果传回主链后进行。

日常小额的交易在闪电网络或雷电网络中进行,而在比特币网络中只进行最终的结算,这样做,既能确保日常交易的速度,又能保障价值网络的安全。

️ 哈哈,运用这项技术,用比特币买一杯咖啡再也不用等几十分钟、等六个确认啦!

——————————————————————

《素为求智录》第二季 回顾链接

——————————————————————

《素为求智录》第一季1-15集 回顾链接

欢迎互动

《比特镇魂曲》明天将继续连载,欢迎添加“小素机器人”的个人微信号 Lawup1,找到志同道合的小伙伴,大家一起来聊‘法律与区块链、人工智能等信息科技’,您的真知灼见将有机会出现在后续的连载中哦~

比特镇魂曲06(上)众筹雇佣杀手的智能合约

文章点评
相关新闻