Wormhole黄皮书

简介

Bitcoin Cash(BCH)在区块高度478,558上产生,一直致力于为世界带来一种可靠的电子现金,履行最初的比特币作为「点对点数字现金」的承诺。其具有全球无缝流通、无许可(Permissionless)创新等特点。在Bitcoin Cash如何实现发行通证(Token),众多的开发者已经有过不少的研究,比如染色币的方案Colored-Coins,之后Andrew Stone 提出了Enable representative tokens via OP_GROUP on Bitcoin Cash,提议增加OP_GROUP的操作码来实现发Token的方案。OP_GROUP方案需要修改Bitcoin Cash的共识规则才可以实现。更具体地说,类似于在Ethereum网络上广受欢迎的ERC20协议所具备的那些功能。

凡是需要更改共识才能实现的通证发行技术提议,都不可避免地会遇到问题。首先是技术上的风险,其次是对这种风险的顾虑常常引发技术开发社区甚至整个经济生态都陷入巨大的争议。争议中的反对方,其顾虑很可能也确实是真实的。不论这样的争议中谁对谁错,结果常常是有争议的提议无法被实现。这样的困难可以被视为一种保险机制,让具有的风险更改很难被添加到协议之中,保证协议的稳健与安全;但是,协议的创新就面临了着巨大的困难。导致了Bitcoin Cash社区独立的区块扩容大争论,旷日持久而没有共识的产生,就是一个更加令人不能回避的社会心理学证据。

快速活跃的创新,需要一种无需许可的环境。我们也一直在探索无许可创新的方法,在不需要改变共识的情况下,在Bitcoin Cash的区块链上实现智能合约。经过研究,我们关注到了OmniLayer协议,它是一种利用OP_RETURN操作码实现通证发行的方案。这个方案是广受欢迎的泰达币(USDT)日常发行和流通的技术基础。Omni Layer是运行在Bitcoin的区块链之上的。Omni Layer协议采用了MIT开源许可证。我们Fork了Omni Layer的协议,在Bitcoin Cash的区块链上实现了发行通证的技术方案。我们将这种技术方案命名为Wormhole协议,协议中的原生代币命名为Wormhole Cash。

安全模型和执行流程

Wormhole 节点

节点认知

Wormhole节点是Bitcoin Cash 节点的超集,是在Bitcoin Cash客户端上增加了Wormhole协议的实现。

Wormhole客户端既可以作为一个Wormhole全节点使用,同时也可以作为Bitcoin Cash全节点使用,它实现了Bitcoin Cash协议与Wormhole协议。

Wormhole节点接收的交易

  • 既可以接收,验证Wormhole交易,也可以接收,验证Bitcoin Cash交易。

节点运行

[图片上传失败...(image-320119-1534417741420)]

Wormhole节点启动后,会与网络中其它节点(包含:Bitcoin Cash节点)通信,接收区块及交易消息;当从网络中收到一个新区块时:进行如下操作

  • 先使用Bitcoin Cash协议检测该区块及块中的所有交易,符合协议规则,就继续向下执行,否则,丢弃该区块;
  • 接着使用Wormhole协议检测该区块中的每个交易,使用符合Wormhole规则的交易来构建节点中的Wormhole数据集;
  • 当区块中的所有交易处理完毕后,会对当前节点的Wormhole数据集做镜像,并写入磁盘文件。

Wormhole交易

Wormhole交易本质上来说一种特殊的Bitcoin Cash交易,利用了Bitcoin Cash脚本中一个特殊的操作码OP_RETURN,将Wormhole协议附加在该操作码后面。

Wormhole交易与Bitcoin Cash交易具有如下关系

  • Wormhole交易是Bitcoin Cash交易的子集

Wormhole交易在块链中具有两种状态,并且处于这两种状态的交易都是正确的Bitcoin Cash交易。

  • 有效:Wormhole交易满足该交易类型所需的条件;
  • 无效:Wormhole交易不满足该交易类型所需的条件;
  • Wormhole交易类型所需的条件见:Wormhole-Spec

基于上述前提:只要是正确的Bitcoin Cash交易,Wormhole节点就会接收,并打包验证,因此区块链上会存在状态失败的Wormhole交易。

示例:当创建了一笔Wormhole交易,处理流程如下:

[图片上传失败...(image-635b7a-1534417741420)]

Wormhole账户与Bitcoin Cash地址

Wormhole协议采用的是账户模型,每个Bitcoin Cash地址是一个账户,每个账户可以含有多种类型的Token。

WHC基础货币

Wormhole系统创建了一种基础货币WHC,为未来智能合约Gas收费,链上去中心化交易所,以及创建各种Token提供交易媒介。

系统中WHC的来源是通过燃烧BCH生成;通过构建一笔燃烧交易,获取相应金额的WHC

燃烧交易的要求如下:

  • 第一个交易输出(索引为0):必须为燃烧输出,即向燃烧地址转BCH,金额必须 >= 1 BCH 。
  • 第二个交易输出(索引为1):必须为Wormhole交易的载荷数据,标识该交易为燃烧BCH获取WHC类型的交易。
  • 注意:
    • 直接向燃烧地址地址转账是不会生成WHC,会造成转账的BCH丢失;
    • 向燃烧地址转账的BCH金额 < 1 BCH 时,也不会生成WHC,会造成转账的BCH丢失;

兑换比例如下:

  • 1 BCH = 100 WHC; 1 WHC = 100,000,000 C ;

燃烧地址:

  • 主网:bitcoincash:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqu08dsyxz98whc
  • 测试网:bchtest:qqqqqqqqqqqqqqqqqqqqqqqqqqqqqdmwgvnjkt8whc
  • 回归测试网:bchreg:pqqqqqqqqqqqqqqqqqqqqqqqqqqqqp0kvc457r8whc

WHC的成熟度:在创建燃烧交易后,相应的WHC不会立即达到发送者的账户,需要经过一定的确认时间(成熟度),WHC才会到达发送者的账户。

燃烧成熟度:

  • 主网:在1000个区块确认后,相应的WHC会到达发送者的账户;在随后的区块中,允许对这笔到账的WHC进行花费或转账等。
    • 示例:在区块高度500时,确认了1笔有效的燃烧交易(tx1),此时燃烧成熟度为1;在区块高度1499时,该笔燃烧交易(tx1)被确认了1000次,此时燃烧成熟度为1000,WHC到达发送者的账户。在区块高度1499后,允许对这笔燃烧得到的WHC进行花费。
  • 测试网:在3个区块确认后,相应的WHC会到达发送者账户。
  • 回归测试网:在1个区块确认后,相应的WHC会到达发送者账户。

Wormhole节点处理区块的流程

在Wormhole的节点中,每个接收的新区块需要被链接到主链,此时会有两种情况出现;

  • 将接收的区块追加到当前主链的尾部;
    • 当节点接收新区块后(未发生链重组),先对该区块中的所有交易进行Bitcoin Cash协议的检查,不符合Bitcoin Cash协议规则的区块会被丢弃;符合Bitcoin Cash协议规则的区块会进行Wormhole协议的检查,在这步,遍历区块中所有的交易,找到符合Wormhole规则的交易并进行验证,更新Wormhole节点的Wormhole数据记录,当区块中的所有交易都处理完毕后,会将当前系统中的Wormhole数据写入磁盘文件,作为当前区块高度的镜像。
  • 接收新块后,发生块链重组;
    • 当节点处于链重组状态时,Wormhole节点会先删除内存中重组区块高度后的所有数据,然后加载分叉点区块的磁盘镜像文件,如果加载成功,则从分叉点重新扫描新链的区块,构建Wormhole数据集,每个区块处理完后,将当前系统的状态写入磁盘,作为当前区块高度的镜像;如果加载镜像文件失败,Wormhole系统删除内存中所有的Wormhole数据集,然后从部署该功能的区块高度开始,重新扫描主链上的所有区块数据,构建Wormhole数据集。

Wormhole的安全模型

Wormhole的安全有两层保护。

第一层是Bitcoin Cash的交易安全,Bitcoin Cash采用POW的挖矿算法作为去中心化的时间戳服务器,该算法已经稳定运行将近10年,UTXO模型有以下的一些好处:

  • UTXO无需维护余额
  • UTXO是独立的数据记录单位,可以提升验证交易的速度
  • UTXO模型无需关心事务问题,只关心锁定脚本和解锁脚本
  • UTXO在处理交易的时候具有很高的性能

Wormhole协议复用了整个Bitcoin Cash中UTXO的安全模型,使用了Bitcoin Cash的去中心化时间戳服务器模型。

第二层保护是运行Wormhole协议的节点,不符合Wormhole协议的数据不会被Wormhole协议的节点解析,每个节点都有能力通过重新解析交易数据,计算出Wormhole的最近的合法最终状态。

未来方向

Wormhole 路线图 : https://github.com/copernet/spec/blob/master/whcwhitepaper.md#wormhole路线图

结论

智能合约的缺失一直是基于UTXO模型的公链的一大弱点,Wormhole协议可以在完全复用UTXO的安全可靠等特性的情况下,增加了账户模型,来实现智能合约,将会给Bitcoin Cash带来更多的可能性。

本文由 Wormhole团队 姚永芯 写作,转载无需授权。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容