密码极客 | 国内最权威的区块链技术创投社群

一文告诉你,Tezos 新提案Babylon都有哪些内容!

云上春野云上春野 2019-08-02 23,005 次 收藏0
Cryptium Labs发布新提案——Babylon。这是Tezos第三次链上投票,如果顺利结束,3个月后将成功从当前的雅典协议转移为巴比伦协议。

此次更新与Cryptium Labs和Marigold团队合作完成。在功能方面,巴比伦比雅典更完美——

 

 

四个主要更改:

· 使用新共识算法Emmy+,更安全也更便于分析;

· 添加新的Michelson功能;

· 账户重组,在账户(tz1, tz2 and tz3)和智能合约(KT1)之间建立明显区别;

· 改进法定人数公式,修改提案法定人数为5%。

 

此次只制定了一份提案,但提出的功能修改都是Tezos未来需要实现的。

与雅典提案一样,Babylon中包含一张500XTZ的发票。

本文介绍了下载和查看代码、自行计算哈希、检查当前协议修改的方法。最后给出了面包师投赞成票的方法。

 


 

获取提案源代码


提案源代码可查看tar存档文件。

你可以使用以下的tezos协议编译器,计算哈希,输出结果应该为:

PsBABY5nk4JhdEv1N1pZbt6m6ccB9BfNqa23iKZcHBh23jmRS9f。

 

mkdir proposal


curl http://blog.nomadic-labs.com/files/babylon_005_PsBABY5n.tar | tar -x


tezos-protocol-compiler -hash-only babylon_005_PsBABY5n/lib_protocol

 


如果您想研究巴比伦与当前雅典提案的区别,可以用diff从主网源代码的proto_004_Pt24m4xi文件夹中查找资料,除了从protocol 003更新到protocol 004过程中移除的代码以外,所有更改项都放在changes栏目下。

 


 

如何给提案投赞成票?

 


创建和签署选票最简单的方式是用命令行Tezos客户端,如下:

 

如果你投赞成票:

则输入命令行:tezos-client submit proposals for

 

在Protocol 004中实现的共识算法Emmy,在Protocol 005对此算法改进,并命名为Emmy+。主要更改:

· 区块的背书越少,被认定为有效的时间就越长;

· 区块的适应值就是它在链中的高度;

· 区块和背书奖励的优先级大于0。

 


 

Michelson

 

Protocol 005改进了Michelson智能合约语言。

主要更改:

· 智能合约现在支持入口点;

· 合约支持创建、存储和传输任意数量的big_map;

· 关闭了比较类型的产品(比如对构造函数,the pair constructor);

· 用新的指令CHAIN_ID,区分测试网和主网;

· 集成gas检测,禁用STEPS_TO_QUOTA 。

 

方便Michelson编译的新指令——Marigold


为了将Michelson编译为高级语言,我们添加了一些新指令。新指令有DIG n、DIG n、DIP n {code}、DROP n,允许简化常用模式。

新指令APPLY允许对lambda执行参数的部分应用(partial application)。

 

账户重组


由于帐户简化,需要进行一些更改。

· 取消CREATE_ACCOUNT(账户创建)指令,

· 更改CREATE_CONTRACT(合同创建)类型。

 

提案的法定人数


在提案阶段,得票最多的提案进入测试投票阶段。在Protocol 004中,提案可以获得任意数的选票,即使是1票,只要其他提案低于1票就行。在Protocol 005中,针对提案阶段引入最小法定人数5%的条件限制,满足此条件方可进入测试投票阶段。反之,则提案返回到第一阶段。

 

法定人数上限


在测试投票阶段,参与人数需要达到法定人数,才算投票成功。法定人数根据过去投票的参与情况随之调整。在Protocol 004中,法定人数曾达到非常高的值,使新提案有大量人接受却难以通过。而如果参与人数过少,法定人数则达到非常低的值。在Protocol 005中引入上限来防止最高和最低的情况。法定人数设定在20%~70%之间,这一更改将在以后的更新中实现。此外,即将更新的法定人数采用了参与率指数移动平均线的公式。

 

使隐式帐户可委托


在Protocol 004中,只有KT1地址(表示受托人地址或智能合约)可以委托,且只有tz账户可注册为受托人。在Protocol 005中,未注册为受托人的tz账户,可以委托那些注册为受托人的tz账户,这项更改不影响KT账户现有受托人。

将取消限制:一旦tz账户注册为受托人,就无法取消注册。反过来也就是说,注册的委托人如果不想成为委托人,无法委托给他人。如今唯一的解决方案是将资金转移到新创建的tz账户中,从新账户委托。

 

manager.tz脚本代替KT1账户


在protocol 004中,KT1地址可以是委托的无脚本账户,或者带有代码的智能合约。因为在protocol 005中,可以从tz帐户委托,所以不建议用无脚本的KT1帐户。现在用manager.tz智能合约取代KT1账户,它们都实现相同的语义,前者也已通过Mi-Cho-Coq的正式验证。

 

虽然迁移后的帐户保留了所有功能,但这将改变钱包和其他应用程序与账户交互的方式。接下来几天,我们将发布关于迁移此类应用程序的详细说明。

 


 

奖励环节部分:如何获取Babylon协议的哈希?


协议哈希是由其源代码计算而来的唯一标识符。一旦我们更改源代码中一个字符,哈希便也会发生改动。要获得特定的哈希,或特定格式的哈希,唯一的办法是生成大量的源代码,直到哈希与源代码匹配。

 

于是我们调整Tezos编译器,使其在Babylon的源代码中加入一个小的(不重要的)的随机数,并检测协议在Base58中呈现的以baby开头的哈希,如果搜索main.ml,你会看到一条注释行 (* Vanity nonce: 1260059503 *)。

 

这个小技巧非常有帮助,这样一来,人们在搜索RPC结果时,可以快速地从哈希中识别出协议。

 

同样,通过运行命令gen vanity keys,你可以用命令行客户端对自己的Tezos地址执行类似操作。当然这将在您的磁盘上生成一个编码密钥,但它不如硬件钱包安全。在这样的设备上创建虚拟密钥,只是供读者练习罢了。

 

 

密码极客是一群来自前阿里、蚂蚁金服的技术人员与阿里创业帮一起发起的区块链技术创投社群,也是杭州最大的区块链技术创业社群,截止7月,社群技术人员超过2000位,社群成员超过10万。

 

 

本文系作者个人观点,转载请注明出处!
喜欢 0
支付宝扫码打赏
微信打赏

相关文章

更多

发布评论

共0条评论