Web3 Developer
Web3 Developer

Subscribe to yewlne

Subscribe to yewlne
<100 subscribers
<100 subscribers
Share Dialog
Share Dialog
1、万字长文说透 Polkadot 架构 https://www.chainnews.com/articles/510042529116.htm 本次分享的主标题是 Polkadot 架构解析,副标题是下一代 DApp 开发技术评述。其实副标题更能概括本次分享,因为我们不只讨论Polkadot,而是要相对全面地评述平台型公链,包括以太坊 2.0、Cosmos 等,当然 Polkadot 是重点。 我希望讲清楚 DApp开发技术的走向。这是区块链行业发展的核心问题之一,它不仅对开发者重要,而且会影响到其他行业参与者。因此我尽量讲得直白浅显,争取让非技术背景的听众也能大体听懂。
DApp 为何重要? 我先从 DApp 本身说起,因为来龙去脉很长。最后还是决定简要地谈谈,否则逻辑上不完整。 DApp 是 Decentralized Application 去中心化的互联网应用。例如比特币就是一个DApp,它是去中心化的价值存储型加密货币。去中心化的概念比较复杂,V 神有篇文章说明了去中心化有架构、治理和逻辑三个维度,大家可以找来看看。 从使用者的角度看,去中心化可以简单理解成,不能被个别或者少数参与者所控制,因此值得信任的应用属性。区块链是实现 DApp 的主流技术手段,或者说区块链是DApp 的基础设施。 App 和普通的互联网应用的差别就在于去中心化。那么去中心化为什么重要?为什么值得众多 IT互联网从业者参与其中?它是不是个伪需求伪概念? 回答这个问题最清楚的,是 a16z 的合伙人 Chirs Dixon,他在 2018 年 2 月发表文章题为《Why Decentralization Matters》,就是去中心化为什么重要。 要理解他的观点,首先要了解什么是网络效应。网络效应是指产品或服务的效用随着用户增长而增加的机制。例如微信,用得人越多,它的功能就越强大,越不可或缺。互联网应用的核心就是建立并维持网络效应,谷歌、亚马逊、BAT等巨头的业务,都是建立起了强大的网络效应,使得后来者难以逾越。 Chirs认为互联网平台要建立网络效应,都是要千方百计的吸引用户、吸引开发者和商家等等。但是在突破了关键规模之后,平台的吸引力越来越强,它的控制力也越来越强。比如现在做电商,如果不依托于天猫、京东或者微信,几乎不可能成功。因为他们已经形成了巨大的网络效应,用户和商户都被锁定了。互联网平台的运营方都是企业,企业的使命就是利润最大化。当用户和商户离不开平台的时候,平台跟用户商户之间的关系就就发生变化。我们看上面这张图,平台最开始是吸引用户,形成网络效应之后,就开始尽量从用户头上赚钱。 平台跟开发者、内容创造者和商户之间,也从合作逐步走向竞争。例如大家都知道百度搜索结果不是按信息的真实性和重要性排序,而是谁给的钱多就排在前面。最早百度广泛联系各家公司,让大家把信息提交给他,方便用户搜索。现在如果不交钱,公司的官网在百度上就搜不到。百度为了赚钱,把病患导流给莆田系医院。但国内的用户明知如此,还是离不开百度,因为百度的数据最多,对用户也最了解,想想是不是很可怕。 DApp 可以改变互联网平台垄断的局面。因为 DApp是去中心化的,靠公开透明的共识维持的经济体。网络的参与者贡献越大,相应的权利也就越大,但是没有个体能控制全局。 任何参与方要损害其他人的利益,要么是行不通,要么就会引发分叉。DApp 可以长期保持开放、公平,所以大家不用担心过河拆桥,所有人都尽自己最大努力参与建设,并获得回报。有点类似于各尽所能、按劳分配的社会理想。 这才是真正的开放网络,是互联网不应忘记的初心。所以众多互联网大咖都对 DApp 以及实现 DApp 的区块链技术情有独钟,并寄予厚望。 DApp 发展困境 去中心化应用承载着重塑互联网的伟大理想,但是其发展现状非常窘迫,这个也大家都清楚,我简单提一下。 首先是用户极少,例如预测市场 Auger,DApp 领域的明星项目,融资数千万美元,开发历时三年多,上线之后日活用户几十人,而且 Auger 不是个案。 以太坊 DApp 日活用户的前 5 名,最高的也只有千用户级,而互联网的顶级应用日活用户可以达到数亿,差距是 5个数量级。 为什么 DApp 情况如此可怜?主要是因为区块链基础设施不给力,使得 DApp 使用门槛高、用户体验差。就好比以太坊是一条村级公路,收费高而且拥堵,当然就没人愿意走。 以太坊的利用率,可以看到从 2017 年底到现在,以太坊一直是接近满负荷运转。也就是说 DApp又慢又贵,但基础设施已经全力以赴了,没有再提升的空间。 在这样的困境下,DApp 要突破关键规模、创造出网络效应、跟中心化互联网应用竞争,是不可能的,所以必须升级区块链基础设施。
又慢又贵的原因——区块链极度冗余结构 DApp 又慢又贵的根源是区块链平台的架构限制。这个架构限制可以简单概括为:区块链是极度冗余的计算架构。 冗余就是重复,让多台计算机重复执行相同的计算、重复存储相同的数据。冗余是有意为之的,不是浪费。适当的冗余在企业计算和互联网都普遍存在。 最典型的是主从结构,两台差不多的计算机一主一备,执行相同的计算、存储相同的数据。主机出现故障,备机迅速顶上。虽然两台机器干了一台的工作,但是提高了系统的可用性。 但为什么说区块链是极度冗余呢?因为区块链把冗余推到了极限,网络中所有的计算机,不论是几百台还是上万台。都执行相同的计算,存储相同的数据。冗余的程度无以复加。极度冗余意味着极度高昂的成本,成本高到什么程度?V 神给出过估算,就是在以太坊上执行计算或者存储数据,比在商业云平台上完成相同计算或者存储同样的数据,成本高 100 万倍。也就是在普通云服务上花费 100块钱能完成的计算,放到以太坊上去做,需要 1 个亿的成本。所以在考虑什么业务可以做成 DApp,一定要考虑到成本。 但是高可用性显然是不够的,因为它只需要适度冗余就能实现,不需要极度冗余。极度冗余带给我们的新属性就是去中心化。具体地说,去中心化对用户意味着trustless、permissionless 和 censorship ressistancy,就是去信任、无许可和抗审查。 无许可很好理解,任何人想要使用比特币、以太坊,都不需要向别人申请。 抗审查也很清楚,没人能阻止你使用区块链。比如维基解密,世界上最强大的国家恨它入骨,欲除之而后快,但是维基解密仍然能获得比特币捐款。 含义比较模糊的是去信任,英文是 trustless、trust free 或者 trust minimal。我认为最准确的说法是 trust minimal信任最小化。使用去中心化应用,其实隐含了对区块链网络整体的信任。例如使用比特币和以太坊,就要信任比特币和以太坊不会被 51% 攻击。使用 Cosmos 和 Polkadot 就要相信恶意验证人少于1/3。所以去信任的准确含义是,在信任整个区块链网络的前提下,可以不必信任个别矿工或者验证者,也无需信任交易对手。 对于某个应用,如果用户从去信任、无许可和抗审查这三个方面获得的好处,值得花费 100万倍的成本,那么这个应用放在区块链上就是合理的。有这样的应用吗?就我自己来看,目前能值这个成本的,只有价值存储一项需求。 著名的比特币最大化主义者 Jimmy Song说,比特币会成功,而法币和所有的竞争币都会失败。原因是中心化的货币干永远不过去中心化的货币,而去中心化的产品永远干不过中心化的产品。 隐含的逻辑就是,相同的互联网服务产品,成本差 100 万倍,当然干不过。他这个说法是有道理的,但是过于僵化。因为 100万倍的成本差距不是必然的,是可以改变,可以拉近的。 能不能把 DApp 和中心化互联网应用的成本差距,从 100 万倍拉近到 10 万倍,1 万倍,甚至 1千倍。同时仍然保持去信任、无许可和抗审查这三大好处。回答是完全可能,只要降低冗余的程度,就能降低成本。
方法有三类,也就是区块链扩容的三个思路——代议制、分层和分片。 三类扩容思路 1——代议制 第一个扩容思路——代议制,源于人类的古老政治智慧。即民主是好的,但是全民直接民主效率太低。英国脱欧采用了全民公投的方式来决定,但是显然不能所有的议题都搞全民公投。 代议制是人民选出代表,再由代表来议定法律或者重大决议。代议制提升决策效率有两个原因,第一是参与共识的人数大为减少,第二是代表通常是专职政治家,他们有更多的资源和知识来议定国家大事。 用代议制的方式来做区块链扩容,最典型的是采用 DPoS 共识的 EOS。EOS 通证的持有者选出超级节点,21个超级节点轮流出块。跟以太坊相比,参与共识的计算机数量下降了 3 个数量级。 而且以太坊的节点计算能力高低不齐,协议参数设定要兼顾低端计算机。而 EOS 超级节点主机硬件配置和网络带宽有同一的高要求。所以毫不奇怪,EOS 能达到数千tps,远高于以太坊。 EOS 从诞生之日起,就一直处于风口浪尖。加密社区的一部分人严厉地批评 EOS,说它中心化的,甚至认为它根本不算区块链。而支持者认为EOS 的去中心化程度是足够的。用户仍然能够享有去信任、无需许可和抗审查等好处。 那么 EOS 的去中心化程度是否足够呢?我的看法是:有些情况下够,有些情况下不够。取决于是什么应用,谁在使用。 用户和用户差别巨大,只从国籍分,就有美国人、中国人、伊朗人、朝鲜人等等。还有性别、年龄、种族、地域、职业、宗教等等差别。 另外就是一个特定用户,他的需求也是多样化的,例如社交、娱乐、金融、协作等等。大类又分成很多小类,金融里仅仅对货币就有价值存储需求、大额转账需求、小额支付需求等等。 如果把是大部分身家都用加密货币来做长期价值存储,我首选比特币。如果是小额支付,或者打麻将、掷骰子,用 EOS当然也没问题。在区块链世界,从去中心化程度最高的比特币和以太坊,到中心化程度最低的 EOS 和波场。 可以看成是去中心化谱 decenralization spectrum。每条公链,包括后面重点介绍的 Polkadot 和Cosmos,都在谱中占据特定位置,都有机会适用于特定需求。不存在 one chain fit all 一链打遍天下的可能性。 做架构设计就是做折中,有所选择必然就有所放弃。本次分享的核心理念,就是未来的区块链世界是异构的、多链共存的。当然,我也不认为需要几百上千条公链,因为合理的可选位置没那么多。在定位大体相似的情况下,网络效应会消灭弱者。 三类扩容思路 2——分层 分层也称为二层扩容或者链下扩容,就是把一部分交易放到在区块链以外执行,同时仍然保障交易安全。分层有状态通道和侧链两类技术。还有一类二层技术,是把计算密集型任务转移到链下执行,这块与分享主题无关,不再提及。 状态通道和侧链是不同的技术隐喻,但是到了实现层面,其实非常相似。由于 Cosmos 和侧链有很深的内在联系,所以我在这里花点时间,讲讲侧链的原理。 要理解侧链,首先要明白 SPV 证明,SPV 是 Simplified Payment Verification简单支付验证的缩写。为了让计算和存储能力有限的设备能够使用比特币的问题,才有了 SPV,或者叫轻客户端或者轻节点。 手机钱包就是轻客户端,它不必同步全部区块,只需要同步区块头,传输和存储的数据量缩小了 1000 倍。左侧图是 SPV证明的原理,利用了梅克尔树。看不懂没关系,只要记住梅克尔树是区块链最重要的数据结构。 利用它可以只需存储极少的数据,就可以证明大量的事实曾经发生过,而且属于特定集合。就区块链来说,就是只存储区块头,未来就可以验证交易是否存在于某个区块。 侧链方案就是把主链资产通证锁定,在侧链上对应地创造出通证承兑汇票,汇票交易在侧链执行,在侧链上得到汇票的人可以兑换主链通证。具体来看右图的以太坊Plasam MVP 侧链方案。 首先要在以太坊主链上部署 Plasma 智能合约,假定有 Alice 和 Bob 两个侧链用户。Alice 发起主链交易把通证存入 Plasma合约,通证被合约锁定。 侧链的 Operator 发现 Alice 存入了通证,就会在侧链里创建出侧链通证,也就是主链通证的承兑汇票。 请注意侧链本也是区块链,它有自己的共识协议和矿工。 在 Plasma MVP 方案中侧链采用的共识是 PoA 权威证明,就是一个 Operator 说了算,由它记账出块。PoA 当然不是唯一选择,Loom 的Plasma 侧链采用的 DPoS 共识。 存入之后,Alice 就可以在 Plasma MVP 链使用通证,进行支付或者转账。例如她可以跟 Bob玩游戏,输赢通证,可能很快就玩了很多局,产生了大量转账交易。侧链交易只需要侧链的节点达成共识。而侧链的规模通常比主链小得多,因此交易执行更快,成本也低。 侧链区块的区块头,都会由 Operator 提交给主链的 Plasma 合约。不论侧链一个区块含有多少笔交易,是 1千笔还是 1 万笔,主链只发生了记录区块头一笔交易。所以主链上的 Plasma 合约,相当于是侧链的 SPV轻节点,它存储了区块头,从而可以验证侧链交易是否存在。 例如 Alice 在侧链上把通证转给了 Bob,Bob 就可以向 Plasma 合约发请求,包含侧链交易的 SPV 证明,表示 Alice已经把这些通证给我了。 Plasma 合约可以验证转账交易在侧链确实存在,从而满足 Bob的取款要求。这个例子说明了分层方案如何把大量交易转移到链下执行,或者说转移到二层网络执行。
三类扩容思路 3——分片 第三个扩容思路是分片,原理很简单,就是别让所有的节点都执行所有的交易。把节点分成很多组,或者说分成很多片。多个分片可以并行处理交易,总体的处理能力就提高了。 当然还需要一条特殊的链来看管所有的分片,这条一般称之为主链,它要做很多工作,后面再详细介绍。粗略的解释是,如果没有主链,多个分片之间没有联系,那就是完全独立的多条区块链,跟扩容无关了。 分片扩容的基本思路非常简单,但实际做起来则面临很多复杂难题。 分片的难题——验证人选择 首先就是分片之后,每个分片都需要一组验证人。大家看一下这张示意图。 如果在单链上,恶意验证人超过一半,可以攻击系统。分片之后,只要在一个分片内占据多数,就可以攻击这个分片。所以片分得越多,攻击成本越低,也就是安全性降低。 解决的方法是,分片的验证人分组不是固定的,而是随机选取,而且每隔一段时间就重新分组。这样恶意的验证人不能事先知道自己被分到哪个组,而贸然发送攻击会受到惩罚,因此系统的安全性就不会随着分片数量上升线性的下降。 验证者随机动态分组的关键,是要有可靠的随机数,随机数一直是计算机科学中复杂而有趣的问题。去中心化地拜占庭容错地产生可靠随机数难度非常大,也是区块链研究的热点问题。 分片的难题——跨片交易完整性 图片: https://uploader.shimo.im/f/i8g448dGSQKChSxB.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0
在分片的方案中,每个分片上可以运行一到多个 DApp,不论 DApp在不在同一分片,都要能互操作。首先要明确什么是跨片互操作?因为分片也都是区块链,所以跨片等同于跨链。 大家知道区块链可以看成是分布式共识维护的状态机,状态机通过交易执行完成状态转移。跨链的互操作应该引发双方的状态转移,也就是两个互操作的链都执行了交易,而且执行交易之后的状态具有一致性。 或者说一个跨链交易要引起两条链乃至多条链的状态改变,而且这些改变要么都成功,要么都不成功,不存在中间状态。这跟企业计算里分布式交易的概念上非常类似。 只不过传统分布式交易的参与者通常是多个数据库,而跨链交易的参与者是多条区块链。非技术背景的同学可能不熟悉状态机和分布式交易的概念。因为跨链交易的概念对理解本次分享的结论很重要,我再用非技术语言解释一下。 假设你要从工行账户转 1 万块钱到建行账户,这笔转账交易其实就是从工行账户上减掉 1万,在建行账户增加一万。工行和建行各自都有数据库存储账户余额,那么就要有一个机制,保证两个数据库的操作,一加一减,在任何情况下要么都成功,要么都失败。 如果没有这样的保证,工行账户减掉了,建行账户没加上,你少了 1 万块钱,你肯定不干。如果工行账户没减掉,建行账户加上了,你多了 1 万块,银行肯定不干。 这就叫分布式交易的完整性或者原子性。简单吧?其实做起挺难的,因为不论是工行建行哪家的服务器停电、断网、软件崩溃等等,各种极端条件,都要保证交易完整。在区块链上,转账变成了转通证。 某通证发行在 A 链上,通过跨链转 10 个通证到 B 链,跨链交易完成后,A 链上的 10 个通证被冻结了,B 链上多了 10个通证。这两个状态改变在任何条件下,要么都成功,要么都失败。 由于区块链可能分叉,跨片交易要比传统的分布式交易更复杂。如果跨片交易在分片 1 上的部分是在 A 块里被打包,在分片 2 上被 X’块打包。两个分片都可能出现分叉,A 块和 X’ 块也就可能成为被废弃的孤块。也就是跨片交易可能部分成功部分失败,完整性被破坏。 造成跨链交易完整性被破坏的根本原因是,交易的多个部分被打包进区块,但是链可以重组,块可以变成孤块。 说白了就是交易进了区块,但是靠不住,有可能反悔,正式说法是没有明确最终性。最终性 finality 就是区块必然被包含进区块链。 在比特币区块链上,某个区块后面连的区块越多,它被逆转或者说放弃掉的可能性就越低,但是永远不能100% 确定,所以称为概率最终性或者渐进一致性。解决这个问题的办法就是,要有机制让区块具有明确的最终性,不能含糊。
分片的难题——最终性 VS 活性 图片: https://uploader.shimo.im/f/K3cPtCh7CaS8RXoq.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 finalize 就是使区块具有最终性,我翻译成敲定。要使区块具有最终性。简洁的方法就是出块即敲定。Cosmos 的 Tentermint共识就是这样。但是这个做法在特殊情况会出问题。 我们看图,某条 Tendermint 共识的区块链原本正常出口。突然海底光缆断了,互联网被分成了两部分。两部分各自包含一般验证人节点。Tentermint共识要求收集到 2/3 以上的验证人签名才能出块。 被断开后,两部分网络都最多收集到一半验证人签名,所以出块停止了,或者说区块链丧失了活性liveness。有人认为这可以容忍,本来就是特殊情况嘛,那就先停下来,等网络恢复正常再继续工作。 海底光缆断了,上网、打电话、视频会议都受影响,凭什么区块链就不能暂停呢?还有人认为停止出块不可接受,要始终保持区块链的活性。那怎么办呢?办法就是把出块和敲定分开,也称为混合共识。 在刚才说的网络中断情况,在两个分开的网络,节点可以继续出块,但是没有足够的验证人参与进来,所以不能敲定。等网络恢复了,再决定哪些块被敲定,从而活性和最终性兼得。 而且混合共识可以让个别节点轮番快速出块,于此同时,敲定过程可以慢一些,让大量节点参与进来,确保去中心化,提高攻击和共谋的难度,也就是保障了安全。所以混合共识也兼顾了性能和安全。以太坊2.0 和 Polkadot 都采用混合共识。
分片的难题——交易有效性 图片: https://uploader.shimo.im/f/orb1XbzZzXCKalic.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 还有个分片难题是交易有效性。交易有效性问题就是防止无效交易进入区块,成为区块链维护的历史真相的一部分。 举比特币的例子,假如我是超级大矿工,掌握了大部分算力。我想伪造一笔交易,把别人地址上的比特币转给我,能不能做到呢?答案是做不到。 因为这笔交易没有地址对应的私钥签名,是无效的,包含这笔交易的区块也是无效的,不会被其他节点所接受。即便我掌握了大部分算力,可以挖出最长的链,但也只是构建了一个很长的分叉。 众多的比特币钱包、交易所都不会认可我这个分叉。所以 51% 攻击,并不能把谁的 btc 偷走,或者凭空创造出比特币。最多是双花攻击,双化不展开谈了。总而言之,比特币网络不存在交易有效性问题。 那么这样一个十年前就被完美解决的问题,怎么又会出现呢?原因是 btc等公链的节点都拥有全部数据,因此能完全独立地验证交易有效性。现在变成了多个分片,节点只存储部分数据,也就无法独立验证交易有效性。 我们看左侧的图,有两个分片,分片 1 已经被恶意的验证人所控制,在 B 区块里打包了无效交易,例如给自己的地址上凭空创造了很多通证。在下一个区块C,攻击者发起跨片交易,要把通证转到分片 2 上的 DApp,可能是去中心化交易所。分片 2 看到的 C 区块里面的交易都没有问题,而且分片 2 也没有 C区块之前的数据,所以无法验证交易有效性。 下面我们介绍一个在分片环境下解决交易有效性的方案,叫举报奖励。其实还有别的方案,但跟主题无关,就略去不提。 看右侧图,分片 1 虽然被恶意验证人控制了,但是还有至少一个诚实的验证人。分片 2 不能验证跨链交易的有效性,就选择相信分片 1,打包了跨链交易。这时候分片1 里的诚实节点可以要跳出来举报,说区块 B 是非法的,我有证据。 系统接受了举报,就会惩罚分片 1 里的恶意验证人,没收他们质押的通证,并向举报者提供奖励。所以为什么有的区块链,验证人要收回质押的通证,都需要等几个月。主要的原因就是给举报和证实举报留出足够的时间。 以上我们介绍了四个分片的难题,和相应的解决方案。其实分片扩容的难题不止这些,限于时间,就不再列举了。
以太坊正朔——Serenity 图片: https://uploader.shimo.im/f/KS08lrRHLexgrXEu.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 下一代以太坊的 lay1 扩容思路就是分片。关于下一代以太坊,信息很混乱,连名称都不统一,有以太坊 2.0、Serenity、Shasper、Casper以太坊等,我们统一称为 Serenity。 大家看 Serenity 架构图,是台湾资深以太坊研究员王韶为女士制作的。从上往下看,最上面是 PoW 主链,也就是目前运行的以太坊。Serenity不会取代掉 PoW 链,而是以侧链的方式上线部署。 但是长期而言,Serenity 并不依赖 Pow 链,PoW 下面的三层都属于Serenity,而且恰好对应 Serenity 演进的三个阶段。 首先是 Beacon Chain 信标链,主要功能是管理验证人。信标链上线后,如果希望成为 Serenity 的验证人,就把 eth 从 Pow链转入信标链。还是用侧链的方式,信标链在 PoW 主链上部署智能合约。 eth 转入信标链是单向的,不能再从信标链转回 PoW 链。在信标链上拥有 eth,进行质押并运行节点,就可以成为验证人。为了达到充分的去中心化,做Serenity 验证人的门槛很低,只需要质押 32 个 ETH,验证人集合会很大,可以达到几万到几十万这个数量级。 信标链还负责产生随机数,用于验证人分组和出块人选择。信标链执行 PoS共识协议,包括它自己的共识和所有分片链的共识,对验证人进行奖励和惩罚。还有就是作为跨片交易的中转站。信标链预计在今年年底或明年年初上线。 目前有多个团队在进行信标链节点软件开发,有几个团队已经部署了测试网。下一阶段会部署公共的、长期运行的测试网,把各团队开发的节点放在一起进行测试。 信标链往下是多条分片链,图上画的是 100 个 分片。分片链被看成 Serenity的数据层,负责存储交易数据,维护数据的一致性、可用性还有活性,也就是确保总是能出块,不会被锁住。分片链的上线时间还不确定。 分片链的下方是虚拟机,虚拟机负责执行智能合约和转账交易,改变状态,也就是对分片链数据进行读写。Serenity 很重要的设计决策是把数据层分片链和逻辑执行引擎虚拟机解耦。 解耦带来了很多好处,例如可以分头开发,单独上线或升级等等。Serenty 虚拟机将用 wasm,可以提高性能,并支持多种编程语言。 Serenity 如何前面所说的四个分片难题呢?首先是在信标链上管理验证人池,为每个分片链随机指定一组验证人。采用混合共识,验证人轮流出块,采 CasperFFG 敲定最终性。用举报奖励方法保障交易有效性。
Gavin Wood 的新征程——Polkadot 在 web3 基金会和 Polkadot 等项目文档中,对 web3 愿景的文字表述不太一样。但是都包含两层意思。 第一层:web3 是无服务器的、去中心化的互联网。serverless 无服务器也是去中心化的意思,因为在 web3憧憬的网络计算架构里,参与者或者说节点是平等的,没有服务器和客户端的区别,所有节点都或多或少参与网络共识的形成和记录。去中心化的互联网有什么用呢? 就是 web3 的第二层含义:每个人都能掌握自己的身份、资产和数据。 掌握自己的身份,意味着不需要其他人或者组织赋予身份,其他人或者组织也无法冒用或者冻结身份。掌握自己的资产,意味着不会被剥夺资产,可以自由处置资产。掌握自己的数据,意味着每个人可以按自身的意愿生成、保存、隐匿、销毁个人数据,未经他的允许,任何人任何组织都不能使用其个人数据。 web3 愿景并非 web3 基金会或者 Polkadot项目所独有。很多区块链项目,包括比特币、以太坊,都有类似的愿景。名称五花八门,包括开放网络,下一代互联网等等。叫什么名字不重要,你应该思考 web3愿景的内涵,那是不是你想要的互联网? 甘地说过:Be the change you want to see in the world. 我翻译成:迈向你想要的世界。如果 web3也是你认同的愿景,那么就参与进来,为之努力。 Polkadot 是 web3 的骨干网,是 web3 的基础设施,是 Gavin Wood 和 web3 基金会指出的,通向 web3 愿景的道路。 Substrate 是 Polkadot 项目开发过程中形成的开源区块链开发框架,可以用来搭建 Polkadot 生态,也可以用于构建其他目的的区块链。
Polkadot 架构 图片: https://uploader.shimo.im/f/zJUTPrGsBg9MDhq9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 接下来我们介绍 Polkadot 架构,这两张图片都来自于岳利鹏翻译的 Polkadot 白皮书中文版。 先看右边的大图,Polkadot 的基本网络结构是星型的,或者称为轮辐型。星型的中心是 Polkadot Relay 中继链,外围是众多的Parachain 平行链。 再看左侧的小图,Polkadot 网络的参与者有四种角色:Validator 验证人、Nominator 提名人、Collator收集人或者核对人,Fisherman 钓鱼人或者渔夫。 DApp 可以是部署在平行链上的智能合约,或者整个平行链就一个 DApp。用户在平行链发起交易,交易被收集人收集,打包成区块,交给一组验证人去验证。 这组验证人并不是来自平行链,而是来自中间链统一管理的验证人池,通过随机分组指定给平行链。每条平行链都有一个出口队列和一个入口队列。如果用户发起的是跨链交易,交易就会被放进出口队列。再被目标平行链的收集人放入其入口队列。 目标平行链的收集人执行交易,生成区块,由验证人组敲定。Polkadot 采用混合共识协议,出块协议的英文缩写是 BABE,小孩子;敲定协议的缩写是GRANDPA,老爷爷。 刚才讲混合共识,有同学可能会问:出块快、敲定慢,那等待敲定的区块会不会越来越多?不会的,GRANDPA每个轮次可以敲定多个区块,从而追上进度。所以小孩子是活泼好动、步履轻盈;老爷爷是大步流星、一言九鼎。一老一小相得益彰。 除了平行链,还有两类外围区块链接入中继链。一类是转接桥,它把现存的、不能直联的区块链接入中继链,例如以太坊和比特币等。从中继链的角度看,转接桥是一条平行链。 从以太坊或者比特币的角度看,转接桥是一条侧链。此外,为了让系统具有无限的可扩展性,还可以有二级中继链。不过二级中继目前还只是设想,没有具体的设计。 我们已经介绍了收集人和验证人在系统中的作用,那么提名人和渔夫是做什么的呢?提名人是 Polkadot 基础通证 DOT 的持有者,他希望质押 DOT获得收益。但是要么是因为 DOT 数量少,要么是缺少运行维护验证人节点的专业技能。 因此系统提供了另一个参与途径,就是持币者选择他信任的验证人,把自己的 DOT 通过验证人来质押,分享验证人收益。这样做的好处是,提高整体质押比例,提升系统安全性,同时也使收益分配更加公平。关于 Polkadot的经济模型,是个很复杂很有趣的话题,我们就不多说了。 刚刚介绍过分片架构的交易有效性问题,以及举报奖励的解决方案,所以渔夫的作用不难理解。他就是监控和举报非法交易,赚取奖金的角色。听起来挺简单,但是做起来极其复杂。 可能有些同学想象中的举报是这样的:给 web3 基金会发邮件:我发现有人打包了非法交易,证据见附件,盼复。过些天 web3基金会回信:您的举报已被证实,作恶者已伏法,奖金将发到你的地址,非常感谢您对我们工作的支持。 但区块链上的举报完全不是这个样子。渔夫是个软件进程,它监控网络上的非法行为,一旦发现就会向区块链提交举报交易。举报交易也要经过共识过程,通过 2/3以上验证人验证,打包进区块,惩罚和奖励也都是区块链交易。 整个过程是自动地、去中心化地执行。这里就有很多复杂问题,例如如何对渔夫提供激励。渔夫就像警察,你可能会认为那很简单,抓住一个坏人就发一笔奖金。 那么有一堆警察天天盯着网络,没人敢作恶,警察就一直拿不到奖金。警察有运营成本,要验证并存储大量的数据,没有收入就干不下去了。警察全改行了,坏人就会出现。那你可能会想,给警察发工资吧,底薪加提成。 好,那我可以声明自己做警察,领一份底薪。但是我根本不验证和存储交易数据,成本就是0,底薪就是我的利润。等坏人出现的时候,我说抱歉哈,我没看到,或者说我硬盘恰好坏了,那么系统应该怎么惩罚我呢? 还有就是不能随便举报,系统处理举报需要成本,随便举报就成了可以粉尘攻击的漏洞。另外能否对举报交易进行举报,应该怎么处理等等。所以在去中心化环境中,举报机制很复杂。Polkadot的渔夫工作机制,目前我还没看到具体的说明。 在 Polkadot 网络中,平行链各自承担交易执行、数据存储,同时平行链之间能够互操作,也就实现了分片的目标。因此我把 Polkadot看成是分片扩容方案。可以跟 Serenity 初步比较一下。你会发现 Polkadot 比 Serenity 在技术上更复杂。 Serenity 的分片是同构,采用相同的共识协议,容量也整齐划一。就像是提供给 DApp 使用的标准集装箱,规格都一样,开发者选一个分片,把自己的DApp 放进去就好了。 Polkadot 是 web3骨干网,它不能也不应该要求平行链是整齐划一的。平行链可以自行决定使用什么共识协议、什么样的经济模型和治理模型,自己决定硬件和网络配置等等。简而言之平行链是自治的,Polkadot可以看成是平行链的联盟或者联邦。 Polkadot 中继链要支持异构的平行链接入,进而实现互联互通,复杂度超过 Serenity的信标链。这一技术复杂度带来的好处是,平行链开发的灵活性,无需千链一面,可以根据具体的需求和约束,设计开发最优的平行链。
殊途同归——Cosmos 下面我们来介绍 Cosmos,从侧链开始谈起。看左上方的图,A 和 B 是两条链互为侧链。也就是说,A 链包含 B 链的 SPV 轻客户端,从而 A 链能验证 B 链的交易。反过来 B 链也包含 A 链的 SPV 轻客户端,从而 B 链能验证 A 链的交易。 互为侧链的结果是,发行在 A 链和 B 链上的通证可以互转。如果从两条链扩展到多条链,A 和 B 变成A/B/C/D/E/F,一种外推的想法是仍然沿用两两互为侧链的做法,就形成了左下方的结构。 但是这样做会到来很多问题,每条链都要内置其他所有链的轻客户端,同步其他所有链的区块头,这当然是很大的负担。而且每增加一条链,都需要在其他所有链上做修改。随着区块链数量的增加,复杂度以n*(n-1)/2,指数型增长,这显然是不可行的。 解决的办法就是改成右上方图片显示的结构,中间放一个 Hub,Hub 本是也是区块链,它跟其他所有链都互为侧链。就是说,每条链上的通证都可以转到 Hub上,然后通过 Hub 转到其他链上,网络互联的复杂度跟区块链数量是线性关系。 这就是 Cosmos 的做法,在 Cosmos 的定义里,接入 Hub 的链称为 Zone 分区。分区要接入 Hub 需要两个条件,第一是符合 Cosmos标准协议,即 IBC 链间通信协议。第二是要求 Zone 具有即时最终性,以确保跨链的一致性。 而且 Cosmos 可以支持多个 Hub 的互联。对于现存的公链,可以通过协议适配接入 Cosmos Hub,Cosmos 把协议适配网关称为 Peg Zone 锚定分区。最终形成的结构就是右下方图片展示的样子。 我们从侧链出发推演 Cosmos 架构。但是回过头来看,Cosmos分区各自承担交易执行、数据存储,同时分区之间还能够互操作,也实现了分片的目标。因此我也把 Cosmos 看成是分片扩容方案。 可能有人对会对这样分类不赞同。但是没有关系,Cosmos 就是Cosmos,分类是为了更好地理解它。从不同角度理解和阐释,可以用不同的分类方法,没有绝对的对和错。 Cosmos Hub 以及其他用 Cosmos SDK 开发的分区都采用 Tentermint 共识协议,出块和敲定过程是合一的,只要出块,就是得到了2/3 以上验证人的签名验证。这样做的好处是简洁快速,出块时间可以达到秒级甚至亚秒级,而且具有即时最终性。 但是在网络发生分区的情况下,Tentermint 共识有可能暂停出块。Cosmos Hub 和分区都有各自的验证人组,不需要验证人动态随机分组。那么Cosmos 如何保障跨链交易有效性呢?根据我的理解,Cosmos 回避了这个问题。 Hub 并不能验证交易有效性,只能验证存在性。如果某个分区被恶意验证人控制,那么用户在这个分区上的资产是不安全的,可能被盗取。但是这不应该看做是Cosmos 的漏洞,而是它的设计选择。
Cosmos 经常被拿来跟 Polkadot 比较,但其实 Polkadot 与 Serenity在架构上更为相似。前几天橙皮书的文章做了三个村庄的比喻,非常贴切。但是从 DApp 开发的角度,尤其是今年和明年的重量级 DApp 开发,主要会从Polkadot 和 Cosmos 二选一。 从技术上说,Cosmos 要比 Polkadot 或者 Serenity简单得多。我这里说的简单并非贬义,在满足需求的前提下,技术方案应该是越简单越好。那么 Cosmos 用相对简单的方案也实现了分片扩容的目的,不是很好吗? 确实很好,因此我也很看好 Cosmos,它会非常适合某些类型的 DApp。但是正如我们反复强调的,有所得,必有所失。Cosmos选择了简洁,但在安全性上有所牺牲。PoS 区块链的安全等级是由总市值和质押比例决定。 Polkadot 上线之后,假设 Dot 总市值是 10 亿美元,其中一半质押在网络上,那么要对 Polkadot 主网进行双化攻击,理论上最少需要 1.67亿美元,实际需要的会多得多。显然是一笔巨款,因此 Polkadot 网络非常安全,跨链交易有很高的安全保障。 Cosmos 主网上线之后,Atom 通证也会很高的市值,但是网络质押的Atom,只保证 Cosmos Hub 的安全。分区和其他 Hub 会发行自己的通证来建立经济模型,获得安全保障。 但是分区通常是特定的去中心化应用,其应用规模和市值达不到 Cosmos/Polkadot 这样的大平台的等级。因此可以预期,Cosmos分区的安全等级会低于 Cosmos Hub。 你在 Cosmos 上执行跨链交易。需要信任交易的发起分区,目标分区和 Hub,如果跨链交易中间经过多个 Hub,那么经过的每个 Hub 都要值得信任。 一方面是需要信任的区块链变多了,而且其中有些链的安全等级可能不高。所以说 Cosmos没有做到信任最小化。安全水平降低了,但是降低之后够不够用?也许够也许不够,还是因人而异、因应用而异。 Cosmos当然了解自身的短板,据说会在未来版本为分区提供安全保障。但是实现难度会很大。要为分区提供安全保障,需要大量的验证人,只能修改共识协议,把出块和敲定分开,当然还要处理验证人随机动态分组、交易有效性等问题。这一番改动下来,Cosmos和 Polkadot 的复杂度也就差不多了。
对 DApp 的支持对比 图片: https://uploader.shimo.im/f/MVw3azcNppxwFdeM.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 那么 Serenity、Polkadot 和 Cosmos 哪个更适合做 DApp 开发呢?我们来比较一下。 首先 DApp 开发方式,三个链都可以用智能合约。Polkadot 和 Cosmos 带来了新的 DApp 开发方式,就是开发特定应用的区块链。Cosmos为应用链提供的工具是 Cosmos SDK,目前支持 Go 语言开发。Polkadot 为应用链提供的工具是 Substrate,目前支持 Rust语言开发。 Substrate 是完整的应用链开发工具,具备完整的应用链框架,Gavin Wood 演示了在一台全新的电脑上,15分钟发布出一条应用链。另外,Substrate 所有模块都可以定制或者替换,功能强大而且非常灵活。 相比较而言,Cosmos SDK 要单薄一些,它主要提供 Tendermint 共识引擎、IBC 链接通信协议和通证等核心模块,大部分上层建筑需要自行开发。 关于性能,Serenity 每个分片大约是 100 tps,仍然是优先处理 gas price 高的交易。Polkadot Hub 应该能达到上千tps,平行链可以自己决定共识算法、硬件和网络,理论上说没有性能限制。Cosmos Hub 和绝大多数分区都采用 Tendermint,能够达到数千 tps。 关于互操作。Serenity 跟以太坊 1.0 是一样的,智能合约可以相互调用。Polkadot 平行链通过 Relay 与其他平行链互操作,通过Bridge 与其他链互操作。 Cosmos 分区通过 Hub 可以互转通证,通过锚定分区与其他链互转通证。IBC消息也数据字段,就像电子邮件的附件,通过扩展数据字段,分区之间也可以传递通证以外的数据。 接入方式 Serenity 跟以太坊 1.0 相同,开发者自行部署智能合约。Polkadot Relay 接入要拍卖插槽,质押数量不菲的DOT。Cosmos 与 Polkadot 类似,是质押 Atom 拍卖接入资格。 然后是安全性,前面说过 Serenity 的分片就像是标准集装箱,DApp 放进就行了,安全性由系统保障。与之相对的是 Cosmos,应用链不论是否接入Hub,都是自己保障安全。Substrate 开发的应用链是两个选项,要么接入 Relay 成为平行链,由 Polkadot 保障安全;要么独立运行,自己保障安全。 最后是 DApp 升级,Serenity 和以太坊 1.0一样,不支持智能合约升级。可能很多人对此已经习惯了,但我认为不支持升级是很大的缺陷,而且可能带来严重的安全问题。首先是代码不可能没有 bug。 Solidity 等智能合约开发语言对形式化验证并不友好,即便做形式化验证,达到 100% 的逻辑路径覆盖也不现实。其次 DApp是互联网应用,互联网应用应该随需应变、迭代进化。 有人会认为智能合约是约定,所以不能改。其实真实世界的合同,都有经双方同意可以取消或者修改的条款。想想两个公司签了合同,现在双方都同意修改合同,结果合同本身限制了不可更改,是多么荒谬的情形。 更不要扯什么代码即法律,法律也不是一成不变,可以废止可以修订,代码反而不行,不是很奇怪吗?结果就是很荒谬,一方面 DApp有强烈的升级需求;另一方面平台不支持升级。于是开发者自己想办法,用 delegateCall 等 rudimentary的方法,别别扭扭地实现了可升级,还美其名曰可升级设计模式。 有了这个办法,开发者可以不经过用户同意,甚至在用户不知情的情况下修改智能合约。那么代码即法律还有什么意义?用户怎么才能知道智能合约可升级还是不可升级,哪些逻辑会变哪些不会变?只能自己看代码。所以难怪以太坊只有这么少的用户。反正我自己不够格使用以太坊DApp。fomo3d 的合约我研究过,就没看出来有随机数漏洞。 Parity 的多重签名钱包合约的一个小 bug,锁住了上亿美元资金,坑了自己和好多人。如果要透彻研究代码才能信赖并使用 DApp,那全世界的 DApp目标用户,大概也就是数以千计吧。 要开发能够跟中心化互联网应用竞争的 DApp,可升级是必须的。而且必须是平台支持的规范的升级,不能 DApp 各显神通。类比 Android 平台,手机App 就经常升级,但是用户必须知情并同意,新版本 App 增加了权限需求,要显示给用户。 这些都是平台控制的,手机 App 只能遵循不能饶过。DApp 的升级应该更加规范也更加严格,因为 DApp管理的是加密资产,而且没有可信任的中心。Polkadot 和 Cosmos 都允许应用链升级,Cosmos 的分区是自己处理升级,Polkadot的平行链可以安全升级。 Polkadot 如何实现平行链安全升级,我还没搞明白。几周前 Gavin wood 中国行,讲了 Trust Wormhole可信虫洞,我也没太听懂。谁了解这部分内容希望能指点一下我。 总而言之,在去中心化的区块链上,实现规范的安全的应用升级非常困难,但是没有别的选择,必须支持升级,而且是平台保障的规范的安全的升级。我认为在可升级性方面,只有Polkadot 的方向选择是正确的。
网络拓扑比较 图片: https://uploader.shimo.im/f/JPf3heKpeXn9EejQ.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 下面来谈谈,Serenity、Polkadot 和 Cosmos这三个区块链生态在充分发展之后,会形成什么样的网络拓扑。注意逻辑网络,不是物理网络。另外网络充分发展需要时间,这里讨论的是大概 5年后的图景,有些内容是根据架构设计所做的推测。 首先看左侧,Serenity 网络像是一个仪仗队方阵。信标链是旗手或者领队,方队的每列是一个标准分片。每个分片都可以承载一些 DApp。中间的图是Polkadot。Polkadot 网络是一颗树,树根是中继链,可连接多个平行链。平行链可能是特别业务的应用链,也可以是支持智能合约的 DApp 平台。 另外其他类型的区块链可通过桥接入中继。分析 Polkadot架构可知,由于验证人数量等限制,单个中继能支持的平行链数量有限。大概是几十到一百这个量级,很难达到几百个。 当然即便达到几百,也不能充分实现 Web3 愿景。所以 Polkadot未来会支持中继级联。也就是一级中继接入根中继,二级中继接入一级中继,从而具有无限扩展能力。 右侧图是 Cosmos。Cosmos 的多个 Hub 可以互联,每个 Hub 连接多个分区。还有锚定分区对接其他类型的区块链。Cosmos 网络拓扑与Polkadot 粗看上去很像,都是树形结构。但是 Cosmos 的 Hub 和 Hub 之间,没有谁向谁提供安全保障的问题,所以没有层级高低。 如果把层级关系看作是连接的方向,那么 Polkadot 是有向无环图,Cosmos 是则是无向无环图。其实 Cosmos网络拓扑是可以成环的,应该是为了避免出现跨链消息路由选择问题,选择了无环的设计。 相比较而言,我认为 Serenity 的增长方式和资源分配有点僵化。系统是自上而下式的增长,通过迭代支持更多的分片。DApp选择哪个分片上,面临一些不确定性。例如某个 DApp 非常成功,它需要的处理能力超出了单一分片的容量上限怎么办? 目前看是没有办法。另外,DApp 上线的时候你选择了一个相对空闲的分片。结果同一分片土壤出现特别受欢迎的 D App,那么你的用户就只能忍受高成本和拥堵。 简单概括就是区块链计算资源做不到对 DApp 按需分配。Cosmos 和 Polkadot的增长是自下而上的,不断有新应用链加入,也会有应用链退出,资源分配也更加灵活。 Cosmos 跟另外两个平台的最大区别是不共享安全性,一定程度上牺牲了信任最小化,这个在前面已经讲过了。这么说 Polkadot兼具了共享安全和自下而上式地有机增长,是不是就是最好的?Polkadot 确实有这些优点,但是它也有自己的劣势。 最大的问题我认为就是平行链的接入门槛会很高。按照目前公布的拍卖计划,到 2020 年底,只有 24个接入插槽。你如果开发平行链,希望明年上线,就要跟全球众多团队竞争这 24 个名额。 当然,未来 edgeware 等智能合约平台上线后,能够一定程度上降低 DApp 门槛。相比之下,在 Serenity 上部署 DApp没有门槛。Cosmos 也会好很多,因为 Cosmos Hub 可以支持更多插槽,另外生态系统中会有多个 Hub,形成卖方市场竞争。 从更大的图景上看,Serenity、Polkadot 和 Cosmos 互联是可行的,也一定会发生。EOS 等采用 DPoS的区块链也都可以连接进来,再加上侧链等二层网络,异构区块链的互联网络将会形成。
辨析“跨链” 图片: https://uploader.shimo.im/f/HxxVseUAEbTtQ4mm.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 本次分享已经接近尾声了,我们才开始讨论跨链概念。原因是我认为“跨链”概念有歧义,容易产生误导。至少我自己被误导了很长时间。以前看关于 Cosmos 和Polkadot 的 材料,都是把它们当作跨链方案来介绍。 我就想为什么要跨链?跨链能干什?虽然现在有几百上千公链,但是有几个有用的?比特币算一个,有人会加上以太坊 / EOS,有人会加上ZCash/Monero,反正也就是三五条吧。 就这么几条有用的链,有什么可跨的?感觉就是脱了裤子放屁——多此一举。所以以前我看到介绍 Cosmos 和 Polkadot 的文章,扫一眼标题就过去了,不点进去看。 直到去年 Gavin Wood 在慕尼黑演示 Substrate,我才弄明白 Polkadot 是分而治之的新一代公链架构,是 DApp 的新形式。从那以后,我才开始关注这个领域。 Polkadot 和 Cosmos 设想的区块链未来图景,不是 one chain fit all 一链打遍天下,也不是 one chain rule them all 一链君临天下,而是由众多异构区块链互链形成的网络。互联就是区块链之间能够跨链交易,所以跨链是异构区块链互联网的基础能力。 比特币、以太坊等公链加入到区块链互联网,是成果之一,而不是跨链的全部内涵。所以我的看法是,跨链概念没有错,但是如果理解成为跨而跨,就没有抓住重点。 把异构区块链实现跨链交易定义为跨链。那么我们来说说什么不是跨链,或者说市面上有哪些所谓的跨链是在挂羊头卖狗肉。首先跨链必须是参与的两条或者多条区块链的状态发生了一致性的改变,都是写操作。 如果一边是读,另一边是写,或者说是根据一个区块链的数据去修改另一个区块链的状态,这不叫跨链。当然从多个链读数据,更加不是跨链。 还有一个要求,不但要实现跨链交易,而且跨链交易应该是去信任的。还是拿 Cosmos 通证跨链转帐举例,从 A 分区经过 Hub 转 10 个通证到 B分区,你需要相信 A 分区、Hub 和 B 分区三个区块链网络。 这三个网络到底值不值信任呢?你需要自己判断,如果去中心化程度高, PoS 质押通证的总价高,被攻击的难度大,就值得信任。有些所谓的跨链方案,Hub本身不是区块链,而是个网关,那么网关值得信任吗? 答案是不知道,网关是单一实体运营的计算设备。信任网关的前提是信任运营实体。例如我们把钱存在工商银行,通过支付宝来花钱,也没什么不妥。阿里和工商银行都值得信任,所以他们运营的网关也值得信任。 但是无论网关是否值得信任,都不属于我这里所谈的跨链。我们说的跨链,Hub 要采用分布式账本技术,而且是去中心化的运营,从而实现信任最小化。 以后再看到所谓的跨链项目,可以自行分辨,是不是支持异构区块链的去中心化跨链交易。如果不能支持,那么它所说跨链跟 Cosmos 和Polkadot 不是同一类概念。
下一代 DApp 开发技术 图片: https://uploader.shimo.im/f/7sRRSKps9rASAdPg.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 我个人认为目前已经落地的 DApp 只有一个,就是比特币。比特币是去中心化的价值存储型货币,或者叫数字黄金。因为是价值存储型的,所以它对性能的要求很低。 在未来几年,去中心化的支付结算型货币和交易所很有可能落地。支付结算型货币的币值,应该跟直接或者间接地跟购买力挂钩。那么现在usdt、tusd、摩根大通币,以及未来的 facebook 币、央行加密法币,都是中心化的。做不到去信任、无许可和抗审查。 闪电网络和 MakerDAO 是重要的尝试,有可能带来突破。货币、借贷、资产发行、资产交易、保险、衍生品…我们离颠覆传统金融、改变世界也只隔着几个真正落地的 DApp。随着区块链扩容,基础设施给力了,DApp 就可能迎来真正的爆发。 程序员要怎样才能成为 DApp 弄潮儿,我们梳理下一代 DApp 开发技术。注意 DApp 是互联网应用。互联网开发的后端、前端、移动端、浏览器、桌面端技术仍然有效,但不在讨论范围之内,我们只谈实现去中心化的技术。 三个扩容思路,每个都有多种实现,我只列出代表性项目。代议制扩容的代表是 EOS 和波场。分层扩容分为状态通道和侧链两个分支,状态通道的方案有 Celer Network、Counterfactual 等,侧链有 Loom、OmiseGo 等。分片的三个典型方案,Serenity、Polkadot 和Cosmos 已经逐一介绍过了。 这么看来,下一代 DApp 开发技术似乎有很多中。其实不是,DApp 开发目前只有种,就是智能合约。智能合约有两个主流的方案,EVM 和Wasm。我们列出的项目,基本都支持 EVM,现在或者未来会支持 Wasm。 EVM 的主力开发语言是 Solidity,围绕 Solidity 已经形成生态,包括 Truffle/Remix/OpenZepplin等工具、大量的技术资料、实例、社区讨论答疑等等,而且也有相当一批程序员会 Solidity 语言。所以掌握了 Solidity,可以确保在大多数公链上开发DApp。 目前唯一的例外是 EOS,EOS 不支持 EVM,而是一步到位使用 wasm。wasm 会是未来智能合约开发的标准,可以支持用多种编程语言开发智能合约,包括java\c++\go\rust 等等。 Cosmos 和 Polkadot 提供了开发 DApp的第二种方式,就是开发应用区块链。与智能合约相比,应用链的优势是具有极大的灵活性。开发者可以自行选择或者定制共识算法、治理模型、经济模型等等,并根据实际需求配置硬件和网络。 但是另一方面,应用链开发、运营的成本会显著高于智能合约。例如要部署 Cosmos 的分区链,至少需要 4 台以上的主机,而且要质押相当数量的 Atom通证,才能接入 Hub。可以预计,达到一定规模的团队,才有足够的资源开发并运营 Cosmos 或者 Polkadot 的应用链。 简单总结就是:下一代 DApp有两类开发技术,轻量级的智能合约,和重量级的应用链。个人或者小型创业团队会主要使用智能合约。大型企业或者有充裕资源支持的创业项目,会使用应用链。 还有一种合理的做法是,先用智能合约实现 DApp,在获得验证和反馈之后,再开发功能更完善、使用体验更好的应用链。
开发者如何选择? 图片: https://uploader.shimo.im/f/aNhzFXcN6rH1Aqy9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 后端或者全栈工程师如何选择 DApp 开发技术呢?我认为未来的区块链世界会是异构区块链互联的网络,多个平台都有会各自的生存空间,不必轻言谁将取代谁。 所以我的建议是:主要考虑当下的条件来选择技术路线,例如当前可用平台的能力,团队成员的技能等等。而不必过于纠结未来的不确定性。 如果项目已经启动,那就沿既定路线继续走下去。如果还未开始,首先明确是开发公链 DApp 还是开发企业解决方案。如果是开发公链 DApp,那么是否需要跟现存 DApp 互操作。如果是,那么应该选择在现存 DApp 相同的公链上开发。 就是说你需要互操作的 DApp 在以太坊上,你就在以太坊上开发。在 EOS 上,你就在 EOS上开发。有人可能会问,不是可以跨链吗?跨链是非常复杂的技术,而且肯定不是免费的。在满足需求的前提下,实现方案应该尽量简单。所以能避免跨链,当然应该避免。 那如果不需要与现有的 DApp 互操作呢?这里隐含了一个问题是,你的 DApp 会不会跟未来的 DApp 互操作?或者别人的 DApp 会不会要跟你的DApp 互操作。 举个例子,你开发一个通证合约,作为公司业务积分系统。如果你们公司的积分使用范围很大,是不是可以在去中心化交易所进行交易,是不是可以作为资产抵押给贷款 DApp?成功的 DApp 应该尽量融入价值互联网的大生态。所以 DApp 互操作不是一个选项,而是 DApp 的基本需求,只是不一定要跟现存的 DApp互操作。 下一个问题是:DApp 是不是只需要管理加密通证?如果回答是肯定的,应该优先选择 Cosmos,如果回答是否定的,则应该选择Substrate。为什么呢?我们前面讲过,Cosmos 能够实现跨链通证转移,而 Polkadot 能实现任意形式的 DApp 互操作。 有人可能会说,Polkadot 多强大灵活啊。这个我同意,但是大家应该理解,世界是公平的,没有免费的午餐。强大灵活的代价就是复杂和高成本。 Cosmos 在架构上比 Polkadot 要简单很多。因此我可以有把握地推断,至少在前期 Cosmos 会比 Polkadot更可靠,而且使用成本更低。所以如果 Cosmos 满足需求,就应该选它。 如果业务需求超出了加密通证的范畴,可以选择 Substrate。另外前面有个分支,就是开发企业区块链应用,或者说开发联盟链应该选什么?我认为也应该选择Substrate。 为什么不选 Hyperlegder Fabric或者以太坊呢?因为商业公司推动的技术平台,注定竞争不过主流的开放平台。至于说用以太坊开发联盟链,我认为灵活性不够。 企业业务通常很复杂,对性能、可管理性等有很高的要求,而且常常需要快速迭代。Substrate 是完整的区块链框架,高度模块化和可定制化。Rust语言侧重安全和性能,也非常适合开发关键业务系统。
Rust 语言 图片: https://uploader.shimo.im/f/aLJ39J4nyw6i0Mzn.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 做 Polkadot/Substrate 开发,绕不开的问题是 Rust语言。在我二十多年的开发生涯中,遇到过极少数能快速掌握新语言的程序员。但是绝大多数程序员,包括我自己,掌握一门开发语言,熟悉标准库和开发框架,都需要很长时间。 所以学习一门新语言,对我来说,是个艰难的决定。近些年涌现出了很多开发语言,其中 Rust 语言以学习曲线陡峭而著称。到底值不值得花大量的时间来学习掌握Rust 语言呢?作为一名 Rust 语言的初学者,我谈谈自己的看法。 首先是 Rust 语言很棒,但是尚未流行。这不是我个人的看法。2019 年 Stack Overflow 的调查显示,按流行程度排名,Rust 只能排在第21 名,左边这张图只显示了前 16 名,所以看不到 Rust。 另外 Tiobe 编程语言指数排名,Rust 目前排在第 34 名。再看右边的图,在 Stack Overflow调查最受程序员喜爱的开发语言排行榜上,Rust 高居第一。而且这是 Rust 第连续四年排名第一,考虑到 Rust1.0 版是 2015才发布,可以说 Rust 正式面世以来,一直是最受程序员喜爱的语言。 而且大家知道,一门编程语言,追求高性能,和让开发者轻松惬意,通常不可兼得。比如 Java 和 Python程序员不需要考虑内存管理,当然降低了学习和开发的负担,但是系统就要处理垃圾回收,带来性能上问题。 反之,c/c++需要程序员自己管理内存,性能可以达到最优,但是前提是要把程序写对,增大了开发的难度。但是 Rust似乎鱼和熊掌兼得,即达到了跟 c/c++相同等级的性能,还能受到程序员的喜爱。 第二个看法是,Rust 语言适合高级程序员开发平台型的项目。Rust语言非常重视性能和安全,它试图通过语言规范,或者说编译器,来引导程序员写出高效安全的代码。熟悉了 Rust 的用法,能自然而然地开发出高性能和高度可靠的系统,不妨称为 Rust 之道。 Rust 之道认为实现某个目的通常有一种最好的方式,Rust 试图在语言级别引导或者强制你采用最好的方式。如果不按照 Rust之道来编码,它就让你连编译都通不过。不像 Javascript 等语言,总是有很多种选择,可以按自己的习惯,怎么写都可以。 当然代码质量可能良莠不齐,而且可维护性很差。学习并掌握 Rust之道,需要理解一些重要的编程概念,比如对象的所有权等等。没有坚实的开发经验,很难掌握。这也就是大家认为 Rust 语言学习曲线陡峭的原因。 如果不是开发对性能和安全要求很高的平台级项目,用 Rust 有点杀鸡用牛刀。因为项目在性能和安全上的收益,不一定能抵消采用新开发语言导致的成本。 如果要开发平台级系统或者关键业务系统,Rust 就值得考虑。另外学习 Rust语言可以带动自己加深对内存、线程、异步、闭包、函数式等高级开发概念的理解,对开发能力的提升有莫大好处。 所以简单总结一下,就是如果你有一定的开发经验,未来可能或者有志于开发平台型的系统,当然就包括区块链开发,那么 Rust 语言就值得你投入时间去学习掌握。 我用罗素的名言作为本次分享的结束语——须知参差多态,乃幸福本源。真正理解并欣赏 Polkadot 和 Cosmos设计理念的人,都不会是最大化主义者,也不会认为 Polkadot 的目标是替代以太坊。 至少以太坊基金会和 Parity 公司都不这么认为。Parity 公司一直是以太坊生态的重要支柱之一,他们也在积极参与 Serenity 开发。 前些时候,以太坊基金会向 Parity 公司支付了 500 万美元,即是对 Parity多年支持以太坊的感谢,也是资助他们继续开发维护以太坊节点软件。我对比特神教已经见怪不怪了,至少我能理解他们为什么那么想那么说。 但是现在以太坊生态里,也开始出现以太神教的趋向,就有点不可理喻。开放是以太坊愿景的基础,以太坊也带领我们看到了去中心化价值互联网的可能性。所以我认为支持以太坊,但是反对其他区块链,是一种自相矛盾。 前面也谈过,人们对去中心化应用的需求是多样化的。Serenity、Polkadot、Cosmos 和 EOS,还有其他 DApp平台公链,都做了不一样的设计选择,或者说是不同的折中。因此他们会非常适用于某些需求,而不太适用于其他需求。 互联互通是大势所趋,任何一个生态如果选择孤立发展,就会被区块链互联网产生巨大的网络效应所挤压,最终被淘汰。因此我们可以期待,区块链的未来会百花齐放,更加参差多态,希望区块链和去中心化应用成为人类的幸福之源。
2、万字说透跨链:DApp 赋能、信任来源、治理机制与现实挑战 https://www.chainnews.com/articles/354516373522.htm Polkadot/Cosmos 的出发点不是连接现有的公链,而首先在于支持开发者快速低成本地开发出新区块链。新区块链可以是应用平台(支持智能合约),但更多的新区块链会是去中心化应用,例如以独立区块链形式存在的去中心化预测市场、TCR、稳定币、借贷市场、交易所等等,我们不妨称之为应用链。 Polkadot/Cosmos 不但为开发应用链提供工具(Substrate/Cosmos SDK),而且为应用链之间实现可信互操作提供基础设施(Polkadot Relay/Cosmos Hub)。由此可见,Polkadot/Cosmos 的跨链,核心在于 DApp 的新形态——应用链,以及应用链之间的可信互操作。
SDK 开发的应用链可以很容易地达到 1000 tps 以上的处理能力,而且成本很低,能够满足大多数 DApp 的需求。 另一个变化是 DApp 治理,治理不像性能问题那样显而易见,但却是制 DApp 发展一大瓶颈。 用激进的方式表述本文主题就是:智能合约混淆了去中心化和可验证两个不同的概念,误导了开发者,令 DApp 在长达 4 年的时间里几乎在原地打转。Polkadot/Cosmos (尤其是 Polkadot)赋予了 DApp 链上治理能力。通过解除性能和治理两大发展瓶颈,跨链技术有望释放 DApp 创新潜力,引发去中心化应用的第三次浪潮。
第一部分:Web3 与 Polkadot 是什么 在 Web3 基金会和 Polkadot 等项目文档中,对 Web3 愿景的文字表述不太一致。但是都包含两层意思。 第一层:Web3 是无服务器的、去中心化的互联网。Serverless 无服务器也是去中心化的意思,因为在 web3 憧憬的网络计算架构里,参与者或者说节点是平等的,没有服务器和客户端的区别,所有节点都或多或少参与网络共识的形成和记录。去中心化的互联网有什么用呢? Web3 的第二层含义:每个人都能掌握自己的身份、资产和数据。掌握自己的身份,意味着不需要其他人或者组织赋予身份,其他人或者组织也无法冒用、剥夺或者冻结身份。掌握自己的资产,意味着不会被剥夺资产,可以自由处置资产。掌握自己的数据,意味着每个人可以按自身的意愿生成、保存、隐匿、销毁个人数据,未经他的允许,任何人任何组织都不能使用其个人数据。在数字时代,掌握了自己身份、资产和数据的人,也就掌握了自己的命运。 Web3 愿景并非 Web3 基金会或者 Polkadot 项目所独有。很多区块链项目,包括比特币、以太坊,都有类似的愿景。名称五花八门,包括开放网络,下一代互联网等等。 为实现 Web3 愿景,世界需要去中心化的互联网应用,即 DApp。从使用者的角度,去中心化可以简单理解成,不能被个别或者少数参与者所控制,因此值得信任的应用属性。具体地说,去中心化对使用者意味着有三个重要属性:trust minimal、permissioness 和 censorship resistant,也就是信任最小化、无许可和抗审查,三个属性跟 web3 愿景一脉相承。通过众多的去中心化应用,互联网用户可以控制自己的数字身份、资产和数据,从而实现 Web3 愿景。区块链是实现 DApp 的主流技术手段,或者说区块链是 DApp 的基础设施。
以太坊 /EOS/ 波场三大智能合约公链上已经有上万个 DApp。但是除了少数昙花一现的菠菜游戏和资金盘以外,用户极少、而且活跃度很低。甚至已经有人在质疑:去中心化应用是不是个伪概念?我认为出问题的不是去中心化应用,而是智能合约平台。可以说在智能合约平台上开发去中心化应用已经走入了死胡同。原因有两个,第一个是性能和交易执行成本限制。性能低和交易执行成本高是一个硬币的两面。例如以太坊全网只有 15 tps 的处理能力,为保证公平同时抵抗女巫攻击,只能是交易费用竞价。用户体验到的就是 DApp 很慢,而且一用都要花钱。整个行业对公链性能的关注由来已久,也很多团队正在探索通过代议制、分层和分片三种思路进行扩容。拙作《万字长文说透 Polkadot 架构》整理了扩容的技术路线、遇到的问题和解决方案,以及主要的项目实现,并把 Polkadot/Cosmos 归入分片扩容。简而言之就是,跨链技术通过分而治之的方式,在保持互操作性的同时,实现了扩容。本文仍将简述这部分内容,已经阅读过《说透》一文的读者可以跳过随后的三个小节。
但是性能 / 成本并不是智能合约对 DApp 的唯一限制。EOS 通过代议制的方式,已经能够达到数千 tps 的处理能力,比以太坊 1.0 的性能提升了两个数量级,而且交易执行成本由开发者负担,让 DApp 摘掉了又慢又贵的帽子。但是 EOS 主网上线一年了,也在公链治理等领域做了大量有益的探索,但是并没有引发应用层的创新。这不禁让人怀疑,到以太坊 2.0 全面落地的时候(大概还需要 1-2 年时间),DApp 的春天是否就真能到来? 经过很长时间的反复思考,我认为除了性能 / 成本约束以外,DApp 还面临智能合约平台第二个重要局限:去中心化治理缺位,而且为了保护合约的可验证性,阻碍了去中心化治理的实现。而跨链技术(尤其是 Polkadot)在实现扩容的同时,为实现有效的去中心化治理提供了技术基础和模版范例。通过解除性能和治理两大发展瓶颈,跨链技术有望释放 DApp 创新潜力,引发去中心化应用的第三次浪潮。
Polkadot 是 GavinWood 和 Web3 基金会提出的 Web3 技术方案。这两张图片都来自于岳利鹏翻译的 Polkadot 白皮书中文版。 先看右边的大图,Polkadot 的基本网络结构是星型的,或者称为轮辐型。星型的中心是 PolkadotRelay 中继链,外围是众多的 Parachain 平行链。 再看左侧的小图,Polkadot 网络的参与者有四种角色: Validator 验证人、Nominator 提名人、Collator 收集人或者核对人,Fisherman 钓鱼人或者渔夫。DApp 可以是部署在平行链上的智能合约,或者整个平行链就是一个 DApp。用户在平行链发起交易,交易被收集人收集,打包成区块,交给一组验证人去验证。这组验证人并不是来自平行链,而是来自中继链统一管理的验证人池,通过随机分组指定给平行链。每条平行链都有一个出口队列和一个入口队列。如果用户发起的是跨链交易,交易就会被放进出口队列。再被目标平行链的收集人放入其入口队列。目标平行链的收集人执行交易,生成区块,由验证人组敲定。Polkadot 采用出块过程和敲定过程分开的混合共识协议。 除了平行链,还有转接桥把现存的、不能直联的区块链接入中继链,例如以太坊和比特币等。我们已经介绍了收集人和验证人在系统中的作用,那么提名人和渔夫是做什么的呢?提名人是 Polkadot 基础通证 DOT 的持有者,他希望质押 DOT 获得收益。但是要么是因为 DOT 数量少,要么是缺少运行维护验证人节点的专业技能。因此系统提供了另一个参与途径,就是持币者选择他信任的验证人,把自己的 DOT 通过验证人来质押,分享验证人收益。这样做的好处是,提高整体质押比例,提升系统安全性,同时也使收益分配更加公平。渔夫的是监控和举报非法交易,赚取奖金的角色。在 Polkadot 网络中,平行链各自承担交易执行、数据存储,同时平行链之间能够互操作,实现与分片扩容非常类似的目标。
第二部分:Cosmos 是什么 说完 Polkadot,再介绍 Cosmos。在图的左上方,A 和 B 是两条链互为侧链。也就是说,A 链包含 B 链的 SPV 轻客户端,从而 A 链能验证 B 链的交易。反过来 B 链也包含 A 链的 SPV 轻客户端,从而 B 链能验证 A 链的交易。互为侧链的结果是,发行在 A 链和 B 链上的通证可以互转。如果从两条链扩展到多条链,A 和 B 变成 A/B/C/D/E/F,一种外推的想法是仍然沿用两两互为侧链的做法,就形成了左下方的结构。但是这样做会到来很多问题,每条链都要内置其他所有链的轻客户端,同步其他所有链的区块头,这当然是很大的负担。而且每增加一条链,都需要在其他所有链上做修改。随着区块链数量的增加,复杂度以 n*(n-1)/2 指数型增长,这显然是不可行的。 解决的办法就是改成上图右上方显示的结构,中间放一个 Hub,Hub 本是也是区块链,它跟其他所有链都互为侧链。就是说,每条链上的通证都可以转到 Hub 上,然后通过 Hub 转到其他链上,网络互联的复杂度跟区块链数量是线性关系。这就是 Cosmos 选择的架构,在 Cosmos 的定义里,接入 Hub 的链称为 Zone 分区。分区要接入 Hub 需要两个条件,第一是符合 Cosmos 标准协议,即 IBC 链间通信协议。第二是要求 Zone 具有即时最终性(最好采用 Tendermint 共识),以确保跨链的一致性。而且 Cosmos 可以支持多个 Hub 的互联。对于现存的公链,可以通过协议适配接入 Cosmos Hub,Cosmos 把协议适配网关称为 Peg Zone 锚定分区。最终形成的结构就是右下方图片展示 Cosmos 架构。 Cosmos Hub 以及其他用 Cosmos SDK 开发的分区都采用 Tentermint 共识协议,出块和敲定过程是合一的,只要出块,就是得到了 2/3 以上验证人的签名验证。这样做的好处是简洁快速,出块时间可以达到秒级甚至亚秒级,而且具有即时最终性。但是在网络发生分区或者验证人大面积停机等情况下,Tentermint 共识有可能暂停出块。 图片: https://uploader.shimo.im/f/hKo2tAeMQCge1Hlc.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 我们把 Serenity 也就是以太坊 2.0、Polkadot 和 Cosmos 放在一起比较一下。三者都是未来几年重要的 DApp 平台。 DApp 开发方式:三个链都支持智能合约。Serenity 还是智能合约平台,而 Polkadot/Cosmos 网络中会有支持智能合约的平行链和分区链。除此之外,Polkadot 和 Cosmos 带来了全新的 DApp 开发方式,就是开发特定应用的区块链。Cosmos 为应用链提供的工具是 Cosmos SDK,目前支持 Go 语言开发。Polkadot 为应用链提供的工具是 Substrate,目前支持 Rust 语言开发。Substrate 是完整的应用链开发工具,具备完整的应用链框架,Gavin Wood 演示了在全新的电脑上,15 分钟用 Substrate 发布出一条应用链。另外,Substrate 所有模块都可以定制或者替换,功能强大而且非常灵活。相比较而言,Cosmos SDK 要单薄一些,它主要提供 Tendermint 共识引擎、IBC 链接通信协议和通证等核心模块,大部分上层建筑需要自行开发。 性能:Serenity 每个分片大约是 100 tps,仍然是优先处理 gas price 高的交易。Polkadot Hub 应该能达到上千 tps,平行链可以自己决定共识算法、硬件和网络,没有严格的性能上限。Cosmos Hub 和分区都采用 Tendermint,能够达到上千 tps。 互操作:Serenity 跟以太坊 1.0 是一样的,智能合约可以相互调用。Polkadot 平行链通过 Relay 与其他平行链互操作,通过 Bridge 与其他链互操作。Cosmos 分区通过 Hub 可以互转通证,通过锚定分区与其他链互转通证。IBC 消息也有 data 字段,就像电子邮件的附件,通过扩展数据字段,分区链之间可以传递任意数据。 接入方式:Serenity 跟以太坊 1.0 相同,开发者自行部署智能合约。Polkadot Relay 接入要拍卖插槽,质押数量不菲的 DOT。Cosmos 与 Polkadot 类似,是质押 Atom 拍卖接入资格。 安全性:Serenity 的分片就像是标准集装箱,DApp 放进就行了,安全性由系统保障。与之相对的是 Cosmos,应用链不论是否接入 Hub,都是自己保障安全。Substrate 开发的应用链是两个选项,要么接入 Relay 成为平行链,由 Polkadot 保障安全;要么独立运行,自己保障安全。 DApp 升级,它跟后面要重点讲的去中心化治理密切相关。在这里我们简单地概括为 Serenity 不支持 DApp 升级、Polkadot 支持 DApp 的安全升级。Cosmos 的分区链是可升级的,但是 Cosmos SDK 并没有内置对升级的支持,需要 DApp 开发者自行实现升级。 Polkadot/Cosmos 最大的创新在于提供了新的 DApp 开发方式,也就是为开发应用型区块链提供了支持。应用链可以通过跨链协议互操作,而且每条应用链都可以独享 1000 tps 以上的处理能力,DApp 的性能瓶颈被解除了。 下面重点讲述 Polkadot/Cosmos 如何解决去中心化治理问题。在此之前,首先要解释去中心化治理的作用,为什么去中心化治理是除性能之外的 DApp 创新的另一大瓶颈。
第三部分:智能合约的信任来源是什么? 以太坊开创的区块链智能合约是开发可验证应用的技术。智能合约内部状态都是公开可见的,平台不支持隐匿数据,我称之为状态可验证。另外智能合约应该公开代码。代码公开不仅是开源,而是由平台保障合约源代码和执行代码对应。使用者可以查看合约代码,从而验证开发者所声称的处理逻辑与实际实现一致,即处理逻辑可验证。而且智能合约不能调用随机数、当前系统时间,也不能直接访问链下数据,从而确保执行的确定性(Determinism)。由此可见,智能合约是开发可验证应用的通用性技术。
为了保护处理逻辑可验证,平台通常不允许智能合约进行升级,原因在于开发者单方面修改智能合约会破坏可验证的公平性。但不可升级给应用开发造成了巨大的困难。应用程序几乎不可能保证没有缺陷。智能合约运行在公链平台上,任何人都可以无需许可地匿名访问。再加上智能合约常常用于处理加密资产交易,任何微小的缺陷都会被黑客利用。TheDAO、Parity 多重签名钱包、美链 1CO 等智能合约,都因为微小的程序缺陷,导致了巨大的经济损失。 另一方面,互联网应用和移动应用常常快速迭代,不断适应用户需求、增强功能、改进体验。如果区块链应用只能“以不变应万变”,要在竞争中胜出难于登天。 图片: https://uploader.shimo.im/f/bmwclep7l2puHlXc.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0
为了突破智能合约不可升级的限制。开发者用 delegateCall 等方法,绕过平台,实现了智能合约可升级设计模式,如上图所示。可升级智能合约通常由三个部分:代理合约、状态合约和处理逻辑合约。状态合约存储所有需要持久化的数据。代理合约负责将外部服务请求转发给处理逻辑合约。代理合约保存了处理逻辑合约的地址指针。通过部署新版本的处理逻辑合约,修改代理合约的地址指针,就能够实现处理逻辑升级。 可升级设计模式使得智能合约具有了可升级性,代价是破坏了智能合约的处理逻辑可验证。开发者可以不经过用户同意,甚至在用户不知情的情况下修改智能合约。那么用户是否仍然可以信任智能合约呢?答案是需要个案分析。在协议可变的前提下,是否可信取决于协议的控制者是否可信。例如 Paxo/GUSD 等合规稳定币,我们知道 Paxo/GUSD 的运营实体是受纽约金融局监管的合规企业,其稳定币的法币储备有定期的正规审计。虽然这些稳定币的运营商可以随时升级(修改)智能合约,但是用户并不会因此而产生疑虑。但是大家应该注意,合规稳定币的信任并不是区块链制造的,而是把链外的信任延伸到了链上。例如 eher 公司通过区块链发行 USDT,只是利用区块链技术的可及性和快捷清算能力。USDT 的信用不是区块链制造的,而是由Tether 公司提供的。 另外一种情况是,掌握智能合约升级权利的不是个人或者企业,而且去中心化匿名组织(DAO),例如 MakerDAO、Aragon 等。他们通过去中心化的治理流程(通常也用智能合约实现),由利益相关人通过投票决定协议规则的修改。在这种情况下,智能合约的可信性取决于 DAO 的可信性。稍后我们会继续延伸这个话题。 总结一下本小节的内容。智能合约是开发可验证应用的技术,状态可验证+处理逻辑可验证创造出可证明的公平性,智能合约菠菜的流行大抵源于此。可验证和可升级是一对矛盾。可升级智能合约破坏了可验证性,其信用之源是合约的运营主体。
第四部分:比特币的信任来源 我们把比特币产生信任的方式跟以太坊智能合约进行比较,可以发现比特币的可信既不是源于代码可验证,也不是因为比特币核心开发者具备信用。包括我在内的比特币绝大部分用户都没有看过比特币节点的代码,也并不关注代码,而且比特币协议是可以修改的(分叉)。对于由谁决定比特币协议的升级,中本聪的初始的设想是算力投票。理由在于算力是不可伪造的,而且矿工是比特币的主要的利益相关群体。但是很有可能,中本聪没有预见到专用 ASIC 矿机出现,将个人电脑完全挤出了挖矿竞争,并形成了几大矿池垄断算力的现状。比特币的利益相关群体主要有四个:矿工、开发者、用户和企业(交易所、钱包厂商、区块链浏览器、社区、媒体等)。他们有一致的利益,也有相互冲突的利益。例如几乎全部参与者都受益于比特币长期价格上涨。但是用户希望交易费越低越好,而矿工希望交易费越高越好。由于利益冲突,各方对比特币协议演进会出现不同的意见,而且四方都有影响协议研究的能力和途径。基于比特币分叉博弈的历史,目前普遍认为对协议演进影响里最大的是比特币核心(开发者),而不是矿工。那么我们是否是因为信任比特币核心才信赖比特币呢? 最近有矿圈的大佬声称,比特币核心早晚会取消比特币 2100 万的发行上限。作为把 btc 用于长期价值存储的用户之一,我是否应该担心呢?说实话我并不担心,并不是因为大佬的逻辑有问题(我甚至没花时间研究他的逻辑),也不是因为我信任比特币核心。我甚至不知道现在的比特币核心由几个人组成,他们都是谁。但是从第一次购买 btc 到现在 6 年多的时间,我知道有大量跟我利益诉求一致的比特币用户。我们都把 BTC 当作自己可以完全掌握的资产(还记得 Web3 愿景吗?),是最可靠的价值存储。假设比特币核心处于某种原因要牺牲比特币的稀缺性,那必然要通过硬分叉来实施。我只需要保留有稀缺性保证的 BTC,卖出没有稀缺性保证的分叉币(也许叫 Bitcoin Uncapped?)就行了。也就是用我的币做了支持谁不支持谁的投票。我相信比特币社区会有千千万万人(不是也无需是全体)会跟我做相同的选择。而且也一定会有开发者维护稀缺比特币的代码(组成新的核心?)。一番折腾下来,除了原来的比特币核心被边缘化以外,我看不出还会有其他可能的结果。 所以我对比特币的信赖源于影响比特币协议演进的力量是多方的,而且由于区块链可以分叉,不同利益诉求的群体可以分道扬镳,然后由广大的比特币用户来选择支持 / 不支持 / 同时支持哪个分叉。所以比特币的信任来源是广泛参与的治理和可分叉性,与智能合约非常不同,这就是本文所说的去中心化治理。
第四部分:深入探讨去中心化治理问题 图片: https://uploader.shimo.im/f/yOkFQfm71OXlXeUE.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 除了可证明的公平性,区块链应用创造信任的源泉是去中心化治理。而且只有通过去中心化治理产生信任的应用,才是真正的去中心化应用。 这一小节我们介绍去中心化治理的一般过程和发展现状。 以比特币为例,治理的基础是广泛参与的讨论,在 bitcointalk、reddit 的网络社区、大大小小的会议、众多的媒体上发表看法、讨论甚至争论问题。研究者会针对某个特定专题,例如隐私、性能或者更一般化的签名方案、P2P 通信协议等,进行研究,并发表研究成果。对比特币协议的改进建议以 BIP (Bitcoin Improvement Proposal 比特币改进提案)的形式呈现。重要的 BIP 会引发比特币社区的关注,并引发更为广泛的讨论。开发者(不一定是 Core,也不一定是提案发起人)可以实现某个 BIP。目前比特币没有正式的对开发者进行资助的流程。Dash/Monero 等加密货币社区,有标准的流程来决定是否以及如何对开发者提供资金支持。在协议改进实现之后,就来到去中心化治理最关键的步骤:由谁以及如何决定 BIP 部署上线,成为比特币协议的一部分。 比特币的治理在这一关键环节非常含混不清,大致可以描述为核心开发者根据已经达成的广泛社区共识来决定是否上线 BIP。什么才是广泛的共识?是否已经达成了广泛共识?没有明确的标准,这在持续近三年之久的大区块 vs. 隔离见证的争议中表现得尤其明显。以太坊的治理过程与比特币非常类似,可能唯一重要的区别在于 V 神在以太坊社区的巨大影响力,使得 V 神支持的协议改进更容易达成共识。由于这一类的治理过程的最终结果是实施协议分叉,不妨称之为分叉治理。分叉治理虽然实现了治理去中心化的目标,但是具有明显的缺陷。最大的问题是治理过程含混不清,因此效率很低、难于改进而且很容易陷入争议。例如以太坊围绕 ProgPoW 的冗长肥皂剧就是混乱无序治理的必然结果,没有清晰的治理过程,类似的肥皂剧就会反复上演。 针对分叉治理的缺陷,Decred 首创了链上治理。也就是 Decred 通证的持有人通过链上交易对提案进行投票表决,表决通过的提案才能部署上线。EOS 和 Tezos 也对链上治理做了大量有益的探索。上图右侧对去中心化治理的现状划分的象限。比特币和以太坊采用分叉治理方式。EOS 和 Tezos 区块链采用链上治理。但是就我所知,EOS 和 Tezos 并没有为平台上运行的智能合约提供治理支持,因此还是没有解决 DApp 治理的问题。Decred 很可能是目前唯一的具备完整链上治理的去中心化应用。但是 Decred 的治理也有明显缺陷。首先 Decred 是 PoS+PoW 混合共识,通证持有者和 PoW 矿工都是网络的利益相关人,但是 PoW 矿工不能直接参与链上治理,他们的利益诉求被忽略了。另外 Decred 的提案是持币者直接投票,相当于是每个决策都是全民公决,这样做效率很低,而且最明显的问题是实际投票率很低。虽然有些提案有百分之几十的通证参与投票,但是看按持币地址的参与率,就低到可怜了。这两个问题在一些纯 PoS 链得到了很好的解决。PoS 的治理基础就是 Staking,Staking 代表了长期的利益绑定,治理的目的是为了让加密协议不断进步,最大化长期利益,因此参与 Staking 的持币者参与治理非常恰当。另外就是新一批的 PoS 都实现了某种代理机制,DPoS/BPoS/NPoS,相当于实现了代议制。日常的治理可以由当选的验证人来进行,他们相当于是议会。验证人通常跟加密网络有巨大的共同利益,他们有动力为治理投入资源。另外重大的表决,尤其是验证人和委托人利益有冲突的提案,仍然可以也应该交由持币者公决。 第五部分:Polkadot 的治理机制 Polkadot 的治理是前所未有的全过程链上治理,基于最前沿的区块链技术实现。被表决的提案不仅仅是对协议修改的描述,而且可以是新协议本身,即被编译称 wasm blob 的可执行程序。链上投票通过后,新版程序通过区块链分发给验证人节点,并且自动启用。升级过程中不会出现分叉。基于令人叹为观止的技术,Polkadot 在链上治理方面可以说是一骑绝尘,正在进行大量的创新和探索。 Polkadot 治理仍然处在快速进化之中。5 月 24 日 Polkadot宣布 PolkaDAO 上线,PolkaDAO 把对提案进行资助的决策流程搬到了链上(目前是以太坊,未来应该会迁入 Polkadot)。在主网上线之前,乃至于主网上线后的相当一段时期内,进化不会减速。因为 Polkadot 的优势并不在于它已经找到了行之有效的治理方式,而在于它建立起了可以支持快速进化的过程和技术。根据我的观察,在主网上线前和上线后的一段时期内,开发者仍然拥有 Polkadot 的控制权。他们会充分利用这一权利,将 Polkadot 快速推进到自洽状态,然后退居幕后,把治理权交给社区。这也是 Block.One 对 EOS 所做的。Polkadot 多出了两年行业发展经验(后发优势),而且开发了更好的链上治理技术。有理由相信 Polkadot 的开发者能做得更好。所以现在讨论 Polkadot 的治理,不必对细节太过关注,因为都可能会变掉。需要关注的是:完全可编程的链上治理大概会是什么样子,能做到哪些?而且 Polkadot 治理代码是开源项目的一部分,DApp 开发者可以把 Polkadot 治理当作模版范例,定制开发符合自身项目情况和需求的治理过程。 Polkadot 这个词在不同的语境下有不同的含义(范围),有时候我们用它来代表 W3F 发起的整个 Web3 生态,有时候代表 Polkadot 项目(包含 Substrate),有时候特指 Polkadot Relay 这条特定的区块链。本小节所说的 Polkadot 治理,是 Polkadot Relay 区块链的治理,再具体的说是 Polkadot Relay 的 PoC-3 阶段实现的链上治理。 整个治理过程围绕提案和投票展开。提案可以由普通的持币者提出,也可以由理事会提出。理事会是持币者选出的,持币者可以给任意多的理事候选人投票。每个选举周期的冠军进入理事会,替换任职时间最长的理事,亚军票数保留,其他候选人选票清零。每个理事都有对理事会提案的否决权,但是不能连续使用。理事会通过提案进入全民公决,而且只有得到多数反对才会被否决。普通持币者的提案进入队列,等待其他持币者的支持。每隔一段时间,支持数最高的提案进入全民公决。但是普通持币者的提案要获得多数支持才能通过。在全面公决投票中,持币者可以选择锁仓系数,范围从 1-6,所投出的票数是持有的 DOT 数量锁仓系数。如果投票结果跟投票者的选择一致(通过 / 否决),那么投票者的 DOT 将被锁定,锁定时间= 常数锁仓系数。如果投票结果跟投票者的选择相反,则无需锁仓。这样的计票方式,有助于让(未来的而不是过去的)长期持币者获得更大权重。
第六部分:去中心化应用的未来之路 图片: https://uploader.shimo.im/f/muRPw083cc2HPlaX.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 前面讲述的全部内容可以归纳为去中心化应用的三次浪潮。 第一次是比特币引发的去中心化电子现金(加密货币)的创新浪潮,围绕“更好的加密货币”主题展开,方向主要有三个:隐私、治理和支付。这三个方向也都针对比特币的“不足”。Zcash/Monero/Dash 等力图巩固加密货币的可互换性和私密性;Decred/Dash 等探索了混合共识和更规范更有效的治理;Litecoin/XRP/BCH 致力于成为更好的支付 / 转账加密货币。大家知道在 2012-2015 年,开发 DApp 的主要方式是 fork 比特币的代码,做定制修改,然后运行独立的区块链。再到后来直接 fork 比特币区块链,借力比特币的网络效应。这一轮创新是开天辟地试的,它开启了去中心化应用的大门,使每个人都可以自行认领数字身份(私钥 / 地址),而无需被授予。并实现了最普遍使用的资产——货币的去中心化。但是除了最大化主义者或者对现代金融一无所知的人,恐怕没有人会认为仅靠去中心化货币就能支撑起 web3 理想的大厦。但是由于当时开发去中心化应用的技术单一,都源自比特币。而比特币的架构设计扩展性不足,使得开发非货币类应用难度很大。而且当时也没有跨链技术,DApp 是彼此独立的区块链,之间不能互操作,无法形成 DApp 生态。这一轮创新浪潮给只是行业留下了几个各具特色、但独立运行的加密货币。 在比特币区块链上实现其他资产的发行和交易是可行的(例如 ColorCoin/MasterCoin 等早期尝试),但严重受制于比特币区块链的限制。V 神正是由此出发,提出并领导实现了以太坊。以太坊是开放的创新平台,它引入了图灵完备的虚拟机 EVM,推出了 Solidity 等智能合约开发语言,并且支持智能合约相互调用(互操作),极大地降低了区块链应用开发的门槛,引发了第二轮创新浪潮。但是如前所述,由于以太坊基础设施的限制,导致应用性能差、成本高,用户体验很差。而且智能合约实质上是可验证应用开发技术,并没有为 DApp 所必须的去中心化治理提供支持,甚至为了保护可验证性限制了应用的升级,给 DApp 演进造成了很大困难。由于这些限制,虽然以太坊主网上线已经 4 年多了,全世界也有几十万智能合约开发者。但是以太坊上没有一个真正落地(百万级活跃用户)的去中心化应用。当然第二次创新浪潮不是毫无收获,期间产生了大量的可验证应用,包括可以验证的资产发行和转移、可验证的菠菜等等。另外有成百上千个 DApp 在智能合约平台进行了尝试,开发出了 MVP。在性能、治理等瓶颈解除之后,这些项目团队有最好的机会开发出真正落地的 DApp。 Polkadot/Cosmos 等跨链技术是对以太坊等智能合约平台的换代。他们继承了以太坊图灵完备、规范应用程序开发和互操作支持等优点,又解除了去中心化应用的性能和治理两大瓶颈,将引发 DApp 创新的第三次浪潮。我们前面重点介绍了 Polkadot 的治理。那么用 Cosmos SDK 开发的应用链,也可以实现类似 Cosmos Hub 和 Tezos 的链上治理。关于跨链技术的局限是什么,我还不敢说现在已经看到了,但是有一些疑惑要交给时间去验证。在第三次创新浪潮中,我们有理由期待出现大量的 DApp 创新,能够包括去中心化匿名组织 DAO、去中心化交易所 DEX,以及众多 Defi 去中心化应用。最优秀的一批 DApp 很可能获得成百上千万的用户,跟对中心化互联网服务竞争而不落下风,将互联网向实现 Web3 愿景推进一大步。
第七部分:Polkadot 的现实问题 图片: https://uploader.shimo.im/f/hdloscqrt3IrPfy9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 谈过 DApp 创新的远大前景,再来说说现实的困难。 首先是 Polkadot/Cosmos 跨链技术落地尚须时日。Polkadot 目前的进展是 PoC4 已经稳定运行了近两个月。但是 PoC4 并不包含跨链协议。跨链协议 ICMP 将包含在 PoC5 里面。目前 Polkadot 主网上线目标时间点是今年年底。但这在一切顺利的情况下的预期。开发过复杂软件项目的同学都知道,一切顺利通常只存在于幻想之中。虽然 Polkadot 开发团队的能力有目共睹,但是如果 Polkadot 如期上线,我还是会比较意外。 Cosmos 虽然主网已经上线,但是 IBC 跨链协议还未实现,也是预计在今年年底实现。考虑到 Cosmos 的各种跳票已是家常便饭,如果年底 Cosmos Hub 就开始接受分区链接入,对我来说是也个很大的惊喜。但是希望大家理解,DApp 不一定要依赖跨链。应用链形态的 DApp 可以自己构成业务闭环,并且提供跟中心化互联网应用类似的用户体验。因此我呼吁区块链行业的创业者,不要再等待观望,或者在智能合约平台上继续撞南墙。从现在开始认真考虑、积极准备采用应用链实现 DApp 创新。等到跨链技术落地,再接入到 Polkadot/Cosmos,融入 DApp 生态圈。
第二个现实障碍是应用链的开发者奇缺。由于 Substrate 和 Cosmos SDK 都是不久之前出现的新技术,而且 Substrate 开发使用比较小众的 Rust 语言,因此国内具有实践经验的应用链技术团队极少。目前用 Substrate 开发过产品的国内团队,就我所知只有 ChainX 一家。而且应用链开发还面临一个很大的难题,就是 Substrate 和 Cosmos SDK 应该选择哪一个?两个开发工具的开发语言不同,都有比较高的学习成本,而且未来对应的是两个不同的 DApp 生态。一旦选定之后再更换,会造成资源投入和项目进度的重大损失。我比较过两个开发工具,Substrate 比 Cosmos SDK 功能更完整更强大。所以最佳方案是 Substrate 能兼容 Cosmos,也就是用 Substrate 可以开发 Cosmos 分区链,形成统一的独立于 Polkadot 的 Substrate 开发工具生态。Substrate 是开源软件,采用模块化的设计,把 Tendermint/IBC 封装成可以被 Substrate 使用的协议组件,在技术上肯定是可行的。我和几个做开发的朋友正在研究这个问题,也欢迎对此感兴趣的同学加入进来。Substrate 是应用链开发的首选工具。为了在国内开发者中推广 Substrate,一块链习社区打造了全球首个 Substrate 线上开发课。主讲是 Bryan 陈锡亮老师,Bryan 是 Centrality 资深架构师、Polkadot 社区大使、Substrate 和 Polkadot 代码贡献者。 Gavin Wood 给课程写的推荐语是:Bryan 是 Substrate 的杰出贡献者。我推荐中国区块链开发者参与他的课程,学习使用 Substrate 开发区块链项目。首期课程 6 月 2 号开课,学费 1299 元。所有按时完成作业的同学将获得一半学费返还。课程评价前 3 名的同学学费全额返还,还有额外奖励。课程是不盈利的,这个不多说了,懂的人自然明白。我会义务担任首期课程的助教,期待跟大家一起学习。 还有就是 DApp 的治理还没有最佳实践。前面也介绍了 Decred 等治理实践以及遇到的问题。很有可能五年以后,DApp 创业者能够找到很多成功的范例和失败的教训可资借鉴。但是现在,一切才刚刚开始。只有几条基本的原则是清楚的,首先就是 DApp 要长期成功,需要设计出长期激励相容的机制。使开发者(项目方)、验证人、服务提供商、用户和投资者的长期利益一致,并且能够约束各方追求自身短期利益、牺牲整体长期利益的行为。 开发者应该钻研技术和商业、建立并维系社区,从长期币价上涨和技术服务收入获利。对于验证人,他首先应该选择真正具备交易成本优势的 DApp,因为验证人是最长期的投资者,他不但要付出资金,还有付出很高的人工成本去参与 DApp 治理。因此陷入庞氏骗局或者资金盘,是专业的验证人首先要避免的。决定参与 DApp 经济体之后,验证人应该积极参与治理,避免共谋,从长期币价上涨和领权收益获利。加密货币的投资者,这里指长期价值投资者,不包括短期投机者、量化或者趋势投资者,应该深入研究 DApp 的基本面,将通证委托给有治理能力的验证人,并持续保持关注,通过长期币价上涨和 Saking 获利。另外,DApp 协议的服务提供商和用户非常有可能作为投资者甚至验证人参与到 DApp 去中心化治理之中。
3、Gavin Wood解析平行链的四大优势:无法中断、可升级性、不受限和无手续费 https://news.huoxing24.com/20211015220925333419.html Substrate 带来的改变 首先来讲讲 Substrate 和平行链模型的作用。 Substrate 是 Polkadot 项目开发过程中形成的开源区块链开发框架,可以用来搭建 Polkadot 生态,也可以用于构建其他目的的区块链。
基于 Substrate 的平行链有以下四个特点 —— 无法中断、可升级性、不受限和无手续费,我会把每一点稍微展开讲讲,让大家清楚地了解我们为什么要这么做。 (1)无法中断 基于 Substrate 的平行链,或者任何基于 Substrate 的链,至关重要的一点就是它们是真正去中心化的。相比之下,一些其他的区块链项目并不是完全去中心化的,它们可能是被设计成有一点点去中心化。 在 Substrate,我们真正追求点对点、去中心化,这就让链无法中断。比如全节点保存所有数据,要在一条 Substrate 链上成为验证人也很容易,我们也投入了大量精力去保证轻节点的可用、高效和高性能。所以说,我们在努力去达到可扩展性,同时又保证去中心化,我们不会在去中心化程度上做妥协,来换取可扩展性。 (2)可升级性 第二点就是可升级性。虽然这一点你们很多人可能都耳熟能详了,但是还是有必要再强调一下。它是 Substrate 和 Polkadot 的重要口号和核心精神,Substrate 链和基于 Substrate 创建的 Polkadot 都是元协议(Meta Protocal)。所以它让我们可以高效地升级、更新和吸收新技术。 这两张图可以形象地展示。我们看到一些链就像是在泥地里挣扎前行,而我们就像是在玩风筝冲浪。 (3)不受限 Substrate/平行链模型和智能合约模型的一个很大的区别,就是 Substrate 链是不受限的。这个问题我经常被问到,如果你是一个想成为平行链的团队,你可能也想问这个问题,所以我会把它讲清楚。 Substrate/平行链模型是一种 “自由执行模型”,也就是说你是租用一整段时间的一定量的分布式 CPU。这种模型和智能合约模型有本质上的不同,智能合约模型是交易执行模型,也就是用户可以付费来让你的代码为他们执行。 作为自由执行模型,会确保你在时间区间里被调度,而且确保在一个规律的间隔调度一次,比如对于 Polkadot 平行链来说每 6 秒。这种模型给了你很大的自由,你可以决定你的应用应该怎样工作,并且根据你的需要来实施它。很重要的是,对于哪些交易得到执行,是你说了算,而不是像智能合约模型中一样是由交易说了算。如果出于某种原因,你或者你的用户无法进行一笔交易,那么你的应用就很难增长,这一点对应用能做的事会产生巨大的不同。 这里列举了自由执行模型能够带给你的好处:链上调度、交易优先级排序等等。简单来说,runtime 升级、on_initialize、on_finalize 等一些在以太坊型的智能合约平台上不支持的事情,你在 Substrate 里都能轻易获得。 (4)无手续费 最后一个特点是无手续费。这里不是指它字面的意思,因为显然有很多 Substrate 链都设有手续费。这里的无手续费有两个含义: 第一是对于基于 Substrate 的平行链,只要你获得了一个平行链插槽,那么你就不用让你的用户去接触 DOT/KSM 或者甚至任何一种 token 了。当然,很多团队会有自己的 token,他们会想在自己的链上使用这些 token 来对用户收取手续费,这是没问题的。但是这完全取决于你的链的决定,理论上说,你不需要强制地让你的用户去使用任何交易手续费。 你可以将用户交易限制在一定的数量,或者一定的范围内,而且完全不需要引入 token。比如说,你可以有对用户发放认证,通过一个预言机检查用户拥有足够的个人特质,证明他们无法进行 DDoS 攻击,有很多方法可以做到类似的检查。这就开启了一种可能性,让无手续应用可以在平行链上运行,而这是一个非常有趣的进步,因为我认为这会开启一扇吸引大众的门,而目前我们只能吸引那些不介意拥有 token,或者已经有 token 的人,我认为这对走向大众是一种阻碍因素。 各方面技术进展汇报 接下来是对一些和 Substrate 和 Polkadot 相关的开发进展的汇报。 (1)桥 首先是桥,这可以让 Substrate 链团队把自己的独立链(solo chains)连接起来,如果出于某些原因,它们还不想成为平行链,还是处于独立链的状态。独立链会有更少的安全保障,会稍微有点延迟,但是可以获得和中继链的连接性。桥也是我们明年想做的一些事情的很重要的组件。 那么桥的进展就是,桥方面的代码审计还有大概两周完成,这实际上是第二次审计了,所以主要是一些小调整。很快会部署一个桥,那就是从测试网 Rococo 到桥测试网 Wococo 的桥,来测试一下可行性。在今年之前,我们还希望能部署中继链到中继链的桥,也就是 Polkadot 和 Kusama 之间的桥,当然前提是剩下的两周审计工作中不会发现太多重大问题。平行链到平行链之间的桥希望在明年年初能部署。 (2)XCM XCM v2 已经交付了,它是 Polkadot 0.9.11 的一部分,这个版本包含了大部分我们要做的功能。 异步错误处理程序,也就是你可以有链上代码运行,以防有一些错误发生在远程链上,而且这个功能是用一种比较好的方式来实现的,全部都带有 Dispatchables 和状态报告,允许一些 XCM 指令的状态能被报告回其他的链,鉴于其他链可能会想用代码处理器来注册该状态。 资产捕获,本质上就是在 XCM 消息结束时记住保持寄存器的内容,很多时候,不管是经过错误或者只是意外发生的,可能是伴随一条在消息执行结束时没有做好的消息,一些资产被遗留在了保持寄存器中。这个功能让这些内容能被记住,之后就可以再去拿。 Exeption handling,XCM 的语言模型中现在有 Exeption handling 了,目前我们使用的是一个虚拟机模型,我觉得是比以前更易于理解和可扩展。还有版本管理,它允许不同的 XCM 版本去同时存在于一个多链网络中。v2 的规范也写好了。 (3)平行链 下面就是平行链的进展了,我知道今天的很多观众都很关心这个方面。 目前平行链代码的功能已经完成,也就是所有的 Polkadot 规范中的安全机制都已实现、测试并审计过了。没错,审计已经完成了,对于审计中提出的修改意见,应该能在 11 月前完成一半。并且我们确实期待很快完成这些功能的初始部署,把安全性代码补充到 Kusama 上。在真正把代码投入生产环境前,我们会留出三周,但是我们认为代码不会有什么重大的问题了。所以说,根据这个就可以推算出 Polkadot 平行链上线的时间表。 我们的观点 我们自己对于代码状态的评估是,12 月平行链就能从技术上达到可用状态,可以期待一下在 10 月底部署到 Kusama 上。所以从技术的角度来说,Polkadot 目前已经可以开始准备 Lease 6 到 Lease 13 的 Auction 了。 我们还认为 Polkadot 上的平行链数量应该保持在最多为 Kusama 数量的 75% ,Kusama 是 Polkadot 的金丝雀网络,所以至少在代码成熟之前,都会保持这个比例。直到我们了解目前的架构可以处理的平行链数量、交易吞吐量、消息吞吐量。 我们认为在最初的平行链扩张期,采取更短的拍卖周期会比较合理,所以我们会继续采用之前宣布的周期,那就是每个大概每场拍卖进行两周。 未来展望 展望未来,我想稍微聊一下对近期一些行业内发生的事情和趋势的看法,以及这些事情将怎样影响 Substrate,在未来的 1 年左右你们可能会看到哪些变化。 我注意到的一件事是,为了追求高交易吞吐量,有不少的链忽视了一个事实,那就是去中心化和安全性并不是可有可无的功能,虽然如果你牺牲网络的去中心化可以拥有更高的交易吞吐量。 这也是为什么 ETH 2.0 升级用了这么长的时间,其实有很多原因,其中一个原因就是他们跟我们一样,不愿意牺牲网络的去中心化程度。如果你不愿意去这么做的话,那么网络的架构、设计,特别是安全性方面的设计,就需要更加深思熟虑。所以当你看到一些网络声称自己是有很高 TPS 的公链,那么在很多时候,这些链和一些真正的去中心化网络之间就不再是同类的比较了。 如果我们去看一下监管近况,我们会发现一些要点。我在之前一些报道中也提到过这一点,虽然我不是这方面的专家,当然也不是律师,但是我还是说说自己对一些政策文件的看法。如果我们去看 FATF,它是个国际化实体,我记得大概相当于 G20 国家联盟,他们出过一个比较清晰的政策。 查看 Gavin 对监管的看法:《Gavin Wood:监管是去中心化的驱动力》、《Gavin 专访:十年后 Web3.0 世界是怎样的?》 好消息是软件开发和运行、维护网络是无可指摘的,应该允许继续进行,无需进行监管限制,因为这就是我们开发者的生计,如果人们想去部署这类点对点的网络,那么很重要的一点就是这类活动应该是自由和不受制约的。 不过,很明显全球的监管者正在以非常严厉的眼光来审视一些其他的活动,而我觉得这些活动在大部分的点对点网络和去中心化项目中都多少有涉及,其中一些网络非常倚赖这些活动。一类是服务提供,比如 RPC、钱包、app 网站。第二类是多重签名,比如 DAO,或者你有几个指定的人可以从 DAO 金库中花钱,在 Polkadot 和 Kusama 中也存在这种情况。还有就是托管,托管钱包、非点对点的稳定币都属于这一类。最后一类我叫它便捷功能,比如一些钱包/应用,通过中心化的手段让去中心化应用更易使用,但是这一类在我观察看来应该是较晚受到监管的。 服务提供是这里面最有意思的,因为显然点对点的网络,比如以太坊,仍然高度依赖中心化 RPC 服务,有些时候还会用中心化钱包和网站去托管去中心化应用,通过观察监管者的语言,我觉得这一块应该会在不久的将来就纳入监管范围。 不过有一件事我觉得是确定的:你越中心化,就有越大的可能被监管者盯上,并严正要求你取得相关许可证;你越点对点和去中心化,这种可能性就越低,所以朝着点对点的方向发展似乎是一个合理的选择。 我在阅读这些文件的时候的另一个感想就是,似乎那些被不够点对点的、比较中性化的加密项目,会需要取得许可证,我觉得这类许可有可能会跟银行法规的标准类似。如果真的是这样的话,那么就说明大部分的加密项目,在一两年之内,可能都无法以其目前的形式继续存在了。我觉得监管可能会在两到三年内落到实处,但是早做准备总是好的。尤其是当你需要用来降低风险的技术还挺难实现的时候。 在 Parity,我们致力于将所有东西都点对点化,我们希望确保我们的技术会被划到不需要监管的那一类。这就意味着我们有很多需要着重注意的点,尤其是在去中心化方面做得不够的地方,比如说 Boot Node、RPC 节点都有中心化的成分,我们会把它朝轻客户端、类浏览器客户端方面转。在治理方面,我们会确保我们采用链上去中心化治理方式,不会触犯任何多签监管条款。还有隐私机制,比如 Mixnet。 我想强调的一点是,基于 Substrate 建立的解决方案应该是真正的 Web3.0 解决方案,应该是真正点对点的。类似的,对于 Polkadot,我们会把它打造成第一个点对点的、安全的、可扩展的自由执行平台。
4、Polkadot 系列谈之六 | 波卡白皮书深度解读:一种异构多链架构的畅想 https://www.chainnews.com/articles/300118785646.htm Polkadot 是被誉为“以太坊隐形大脑”的 Gavin Wood 领军的项目,是 Web3.0 版图上不可或缺的板块。 Polkadaot 独特的跨链机制旨在将当下各自独立的区块链网络串联起来,让不同链间可以进行通信和数据传递,或将成为下一代价值互联网的基石。 除了更为宏大的区块链技术框架,在实现更公平的点对点数字交易等方面,Polkadot 都意义非凡。 加密谷长期关注 Polkadot 项目,此前曾从不同维度对其进行过深度介绍。我们将持续关注项目发展进程,陆续刊载系列文章,敬请期待。 “系列谈”此前篇目请见: 《独家编译 | 区块链互操作性深度解读:Cosmos vs.Polkadot (上)》 《独家编译 | 区块链互操作性深度解读:Cosmos vs.Polkadot (下)》 《独家深度 |一文读懂七大区块链项目基金会运作模式》 《Polkadot 系列谈之一 |「地表最强」跨链项目的缘起与沿革》 《Polkadot 系列谈之二 | 一文读懂 Cosmos 和 Polkadot五大差异》 《Polkadot 系列谈之三 |跨链机制或将引发去中心化应用的第三次浪潮》 《Polkadot 系列谈之四 | NPoS 创新共识下的 Staking经济》 《Polkadot 系列谈之五 | 波卡创始人 Gavin Wood眼中的加密世界》
2介绍 区块链已经承诺了它的伟大意义,能够应用于包括物联网(IOT)、金融、治理、身份管理、去中心化互联网和资产追踪等多个领域。然而抛开这些技术承诺和大话,我们还没有看到现有技术下,出现重大的关于现实世界的应用部署。我们相信这是因为现有技术的5 个关键缺陷:
伸缩性(Scalability):全球范围内花费了多少计算、带宽和存储的资源,来处理单个交易?峰值情况下能处理多少交易?
隔离性(Isolatability):多参与方对于应用的差异化需求,能否在同一个框架下接近最优程度地满足?
开发性(Developability):工具的工作效果有多好?APIs 是否已满足开发者的需求?教程资料是否可用?是否集成权力?
治理性(Governance):网络是否保留了能够随着时间进化和适应的灵活性?制定决策能否高度地包容、合理和透明,来提供去中心化系统的高效领导力。
应用性(Applicability):技术是否真的解决了用户的刚性需求?是否需要其他的中间件来嫁接真实的应用? 当前的工作,我们主要面向前两个问题:伸缩性和隔离性。也就是说,我们相信 Polkadot 架构可以在这两个方面,提供有意义的改进。 当前,例如 Parity 以太坊客户端这样的高性能区块链实现,已经可以在消费级高速硬件上每秒处理超过 3000 笔的交易。然而现实世界的区块链网络却限制在30笔交易每秒的情况下。这种限制主要是源于目前同步(synchronous)的共识机制,需要充分的计算缓冲时间来安全地处理,也就加重了其必须对于慢速硬件的支持。这归咎于其底层的共识架构:状态转换机,或者这种让所有参与方校对和执行交易的方式,在本质上将其逻辑绑定在了共识一致性(canonicalisation)的设计上,或者需要让所有参与方都同意所有的可能性、有效性和历史。 这种说法即适用于类似 BTC 和以太坊这样的工作量证明(POW)系统,也适用于 NXT和比特股这样的权益证明(POS)系统,他们都本质上受制于同一个障碍,但这些共识算法却是个能让区块链成功的简单策略。然而,在一个协议里紧密捆绑这两个结构,我们也就捆绑了多个不同风险偏好、不同伸缩性需求、不同隐私需求的角色和应用。一种特征满足不了所有人的需求。因为这种场景,产生了很多次的广泛呼吁,但网络只能倾向于更保守,服务于少数人,最终导致在创新能力、性能和适应性方面的失败,非常戏剧化。 有一些系统例如公证通(Factom),整个地去除了状态转换机。然而大多数应用场景都需要依赖一个共享的状态机,来支持状态转换的功能。去除它只是隐藏了问题,却没有给出真正替代性的解决方案。 现在看起来清楚了,因此一个合理的方向是:像路由对于可伸缩去中心化计算平台那样,解耦共识组件和状态转换组件。而且不出意外的话,这也是 Polkadot解决伸缩性问题的策略。
2.1 协议、实现、网络 和 BTC、以太坊一样,Polkadot 希望一开始的时候只是个网络协议,并且是运行这一协议的主要公有网络(目前假设)。Polkadot倾向于是个免费和开放的项目,协议在一个知识共享的许可证上制定,代码托管在 FLOSS许可证下。这个项目以一种开放的状态开发,接收各方面有用的捐助。一个微意见提交系统(RFCs),但不像 Python改进议程那样,会提供一种公众协作参与协议修改和升级的方式。 我们对 Polkadot 协议的初始实现,将称为 Parity Polkadot Platform,会包含协议的完整实现和 API 接口。像其他Parity 的区块链实现一样,PPP会设计成通用目的的区块链技术栈,并不限定于公有网络、私有网络或联盟网络。目前为止的开发已经被包括英国政府在内的几方资助。 但是,这篇论文还是在公有网络的场景下。我们在公有网络下预见的功能,是一个完整设想(比如私有或联盟网)的子集。另外在这个场景下,可以清晰地描述和讨论Polkadot 的所有方面。这也是说读者需要知道,在非公有(有权限的)场景下,一些特定的机制(比如和其他公有网络的交互)并不直接和Polkadot相关。
2.2 前人工作 从状态转换中解耦底层的共识,已经私下讨论了两年,在以太坊的最早期的时候 Max Kaye 就提议过。 一个更复杂的可伸缩方案叫做 Chain fibers,这要回溯到 2014 年 6 月,在那年底也发表了。它创造了一个关于单个中继链(relay-chain)和多个同构链,可以透明地跨链执行的先例。退相干性(Decoherence)通过交易延迟(latency)来实现,这就使需要更长时间,来处理需要协调系统多个部分的交易。Polkadot借鉴了很多它的架构以及随后跟很多人的讨论,虽然跟它的设计和规定也很不一样。 然而目前并没有运行在生产环境下的系统可以和 Polkadot相比,有的也只是提出了些相关性功能,很少有本质层面的细节。这些提议可以归纳为:丢弃或减少状态机全局相关性的系统、试图通过同构分片提供全局相关性的单例状态机系统、目标仅是异构性(heterogeneity)的系统。 2.2.1 没有全局状态的系统 公证通(Factom)演示了个没有有效性的一致性系统,能够高效地记载数据。由于没有全局状态和其带来扩展性问题,它可以被看做是一个可伸缩的方案。然而前面也提到了,严格上来说它只解决了很少的问题。 Tangle是个关于共识系统的概念性尝试。不把交易排序再打包到区块中,而是通过串联的共识得出一个全局的一致性状态改变排序,它在很大程度上抛弃了高度结构化的排序想法,而是推出一个有向无环图,后续的有依赖的交易通过明确的指向,来帮助前面的交易达成一致。对于任意的状态改变,这个依赖图就会很快地变得无法处理,然而对于更简单的UTXO 模型,立即就变得合理了。因为系统总是松散地连贯,而且交易通常是相互独立的,大规模的全局并发变得非常自然。使用 UTXO 模型确实可以让Tangle定位成价值转移的货币系统,而并没有其他的更多通用和可扩展的功能。因为没有了全局依赖性,而和其他系统的交互又需要确定性地知道其状态,这种方法就变得不切实际了。 2.2.2 异构链系统 侧链是个支持 BTC 主链和附属链之间去信任交互的提案。但并没有任何和侧链进行富(rich)交互的具体规定:交互被限定在允许和侧链之间相互托管对方的资产,也就是行话所说的双向锚定(two-way peg)。最终也是为了做个框架,通过锚定 BTC 链和 其他链,允许在 BTC 协议之外进行外部交易,为 BTC 添加附属的外围功能。从这方面讲,侧链系统更多着眼于可扩展性而不是可伸缩性。 根本上讲,侧链确实没有关于有效性的条款,从一条链(比如 BTC)的代币转到另一条链上,安全性只是寄希望于侧链能否激励矿工来一致性地验证交易。BTC 网络的安全性无法简单地在其他链上起作用。进而一个确保 BTC 矿工联合挖矿(复制他们的一致性算力到侧链上),并且同时验证侧链交易的协议也被提出来了。 Cosmos 是个延续侧链思路提出来的多链系统,替换中本聪的 PoW 共识算法为 Jae Know 的 Tendermint共识算法。本质上,它包含多个使用独立 Tendermint 实例的区块链(在空间 zone中运行),和一个使用去信任通信的中心(hub)链。跨链通信仅限于转移数字资产(也就是代币),而不是任意信息,然而这种跨链通信是可以返回数据和路径的,比如给发送人通知转账的状态。 和侧链一样,空间链上验证人的经济激励问题也没有解决。一般的假设是每个空间链会各自持有通胀增发的支付代币。设计仍然还比较早期,现阶段的也缺乏在全局有效性上建立可伸缩一致性的经济手段细节。然而相比于那些需要强耦合的系统,为了空间链和中心链间的松耦合性,需要给空间链的参数添加更多灵活性。 2.2.3 Casper 目前关于 Casper 和 Polkadot 之间,还没有完整的讨论和比较,即使是公平和彻底(也不准确)地描述两者。Casper 是正在重塑 PoS的共识算法,它研究如何让参与方在最终会确定的分叉上押注。本质上,需要考虑即使是长程攻击的情况下,也要保证应对网络分叉的健壮性,还需考虑基础以太坊模型上的可伸缩性。因此,在本质上Casper 协议的目标比 Polkadot和以往项目要复杂的多,也偏离了基础的区块链模型。它仍然还没有做出来,不知道将来如何运作,也不知道最终会开发出来的样子。 然而 Casper 和 Polkadot 都代表了有趣的新一代协议,对于以太坊的争论,本质上也是他们的终极目标和实现路径上的差异。Casper是以太坊基金会主导的一个项目,只是被设计用来作为 PoS协议的替代,没有从本质上打造可伸缩区块链的意愿。关键还需要一次硬分叉来升级,而不能时可扩展的,因此所有的以太坊客户端和用户都需要升级,否则就得留在原来的前途不明朗的分叉上。因此,这类协议在去中心化系统上的部署会很困难,需要紧密的协调。 Polkadot 在几方面上不同;首先而且也是最重要的,Polkadot将被设计成完全可扩展和可伸缩的区块链开发、部署和交互测试平台。他将被设计为面向未来的、可以吸收最新的可用区块链技术的平台,且不需要过于复杂的去中心化协调和硬分叉。我们已经预见到了几个应用场景,例如高度加密的联盟链和低区块时间的高频链等,它们不太可能在近期的以太坊上实现。它们最终和以太坊之间的耦合度也会很低,以太坊上也没有支持两者间非信任交互的想法。 简言之,尽管 Casper / 以太坊 2.0 和 Polkadot有一些相似点,我们相信从本质上它们最终的目标是不一样的,并非竞争,在可预见的将来,两个协议会大概率地并存。
3概要 Polkadot 是一个可伸缩的异构多链系统。这意味着不像以往那些专注于不同程度潜在应用功能的单个区块链实现,Polkadot本身被设计成不提供任何内在的功能应用。 Polkadot 提供了中继链(relay-chain),在其上可以存在大量的可验证的、全局依赖的动态数据结构。我们称这些平行的结构化的区块链为平行链(parachains),尽管也不要求它们必须是一条链。 换句话说,Polkadot 会被设计成一个独立链的集合(例如包含以太坊、以太坊经典、域名币、BTC),除了两个非常重要的点: *合并的安全性 *去信任的跨链交易性 这两点也是我们称 Polkadot 为可伸缩的原因。从原则上,一个问题在 Polkadot上被彻底解决了:可以向外扩展,会有非常大数量的平行链。尽管每条平行链在各方面都通过不同的网络模式进行平行管理,但这个系统却有可伸缩的能力。 Polkadot提供了一个尽量简单的架构,把大部分的复杂性都放在了中间件上。这是个刻意的决定,为了试图减少开发的风险,使必备的软件可以在短时间内开发出来,还能对安全性和健壮性持有信心。 3.1 Polkadot 的哲学 Polkadot需要提供一个绝对坚实的基座,来在其之上建设下一代共识系统,覆盖从生产级别的成熟设计到初期想法的所有风险。通过对安全性、隔离性、通信能力提供强有力的保证Polkadot 能够允许平行链从一系列特性中选择适合它们自己的。的确,我们预见了各种实验性的经过考虑的区块链特性。 我们看到,传统的高市值区块链(例如 BTC 和 Zcash)、低市值的概念性区块链和接近零手续费的测试网,是并存在一起的。 我们看到,全加密的暗黑联盟链和高功能性的开放区块链(例如以太坊)也并存在一起,甚至还为之提供服务。 我们看到,实验性的新虚拟机区块链,比如主观时间计费的 Wasm 区块链,在将难度计算问题从类似以太坊的区块链方式,修改成类似 BTC 的区块链方式。 为了管理区块链升级,Polkadot 将内生支持某种形式的治理结构,很可能基于现有的稳定政治体系,会有一个两院结构,类似于 Yellow Paper Council。底层权益代币持有者作为最高权力机构,会有全民投票控制权。为了反映用户的需求、开发人员的需求,我们期望建立一个合理的两院结构,采纳用户的意见(由绑定的验证人决定)、主要客户端开发者和生态系统玩家的意见。代币持有者会保留最高的合法权,可以形成一个最高法庭来参政、议政、替换或解散这个架构,还有那些我们不怀疑的最终需求。 借用一句马克吐温的谚语:“政府和尿布都得经常换,而且理由都一样”。 然而在大范围共识的机制下组织参政会很琐碎,更多关于替换和新增的质的改变,希望既不是通过非自动的弱法令(例如通过块高度和新协议的形式化证明文档的哈希)来达到一致性,也不是通过在核心共识算法中包含一个高效的高级语言,来改变他自身可能需要改变的各个方面。后者是一个最终目标,然而为了落实一个合理的开发路线图,更可能选择前者。 Polkadot 看重的主要原理和规则有: *最小:Polkadot 需要有尽可能少的功能性。 *简单:只要他们可以推给中间件、放在平行链、或用下面要讲的一种优化手段,就不在基础协议里添加多余的复杂性。 *通用:没必要在平行链中添加任何要求、约束或限制;Polkadot 需要成为共识系统开发的基石,要尽量通过给模型加入最具适应度的扩展和优化。 *健壮:*Polkadot 需要提供一个稳定的基础层。为了经济稳定性,需要采用分散的方法,来降低高额奖励这个攻击向量可能引发的问题。
4Polkadot 的参与方 有四个基本的角色在维持 Polkadot网络:收集人(collator)、渔民(fisherman)、提名人(nominator)、验证人(validator)。在 Polkadot的一个可能实现里,最后一个角色有可能会被拆分成两个:基础验证人和可用保证人(guarantor),将会在 6.5.3 节讨论。 图片: https://uploader.shimo.im/f/CwxKq04Sa7BWM2Zo.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 图 1. Polkadot 四个角色的交互
4.1 验证人 验证人有最高权限,帮助在 Polkadot网络里打包新区块。验证人需要抵押足够多的押金,因为我们允许其他有资金的提名人推举一个或多个可以代表他们的验证人,所以验证人一部分的押金并不是他们自己所拥有的,而是属于提名人的。 一个验证人必须在高可用和高带宽的机器上运行一个中继链的客户端。每个区块上,节点都必须准备接收一个已提交的平行链上的新区块。这个过程涉及接受、验证、再发布候选区块。验证人的任命是确定性的,但实际上也很难预测。因为不能期望验证人拥有所有平行链的全同步数据,所以他们希望把这个提议平行链新区块的工作指派给第三方,也就是收集人。 不同的验证人小组一旦都确定性地批准了自己所属平行链的新块,他们就必须开始批准中继链自身的区块。这包括更新交易队列的状态(也就是从一条平行链的出口队列转移到另一条平行链的入队列)、处理已批准的中继链的交易集合、批准最终的区块、吸收平行链的最终改变。 在我们选择的共识算法下,会惩罚一个没有履行他们职责的验证人。最开始如果不是有意的错误,就只是会扣留他们的奖励,但如果是重复的错误会扣减他们的押金(通过烧毁),例如双向签名(double-signing)或合谋提供一个非法区块等可证明的恶意行为,会导致他们丧失全部的押金(烧毁一小部分,大部分奖励给信息提供方和诚实的验证人)。 在某种程度上,验证人和目前 PoW 区块链的矿池相似。 4.2 提名人 提名人是一个拥有权益的群体,他们把安全性押金委托给验证人。他们没有更多的角色,除了通过有风险地投放资本来表示:他们信任某个特定的验证人(或群体)可以代表他们维护整个网络。按照他们的入金比例,他们也会受到和验证人总押金同样比例的奖励和扣减。 和下面的收集人一样,提名人和目前 PoW 网络的矿工相似。 4.3 收集人 交易收集人是帮助验证人制造有效的平行链区块的群体。他们会运行一个特定平行链的全节点,这也意味着他们有全部的必要信息,可以打包新块并执行交易,就跟目前 PoW区块链的矿工一样。在正常情况下,他们会收集并执行交易,并创建一个”未密封”(unsealed)的区块,再加上一个零知识证明一起提交给一个或多个当前负责提议(proposing)该平行链区块的验证人。 关于收集人、提名人、验证人的精确关系可能还会修改。起初,我们希望收集人和验证人能够紧密合作,因为可能只有一些(甚至一个)交易量很小的平行链。最初的客户端实现会包含一个RPC接口,来支持一条平行链的收集人节点把可证明的有效平行链区块,无条件地提供给一个(中继链)验证人节点。由于维持所有的全同步平行链的成本越来越高,所以我们设计了附加的结构,有助于分离独立的、经济驱动的、和其他的参与者。 最终,我们希望看到收集人群体为了更多手续费,竞争性地去收集信息。在一段时间内,为了持续增长的份额收益奖励,这些收集人可能只服务于特定的验证人群体。或者自由职业(freelance)的收集人也可以简单地创建一个市场,提供有效的平行链区块,而不是获得立即支付的竞争性份额奖励。同样地,去中心化的提名人群体也会允许多个有抵押的参与者来协调和分担验证人的职责。这种能力保证了参与的开放度,有助于成为更加去中心化的系统。 4.4 渔民 不像其他的两个参与方,渔民并不直接和区块打包的过程相关。他们是独立的 “赏金猎人 “,激励他们的是一次性的大额奖励。 准确地说,由于渔民的存在,我们才能减少恶意行为的发生,即使发生希望也只是因为私钥不小心泄露了,而不是故意的恶意企图。起这个名字的出发点是考虑到他们期望收益的频率和最终奖励的大小。 渔民只要及时举报并证明至少一个有抵押的参与方存在非法行为,他们就能获得奖励。非法行为包括对两个有相同父块的不同区块进行签名,或在平行链上批准一个无效区块。为了预防由于私钥泄露给渔民所导致的过渡奖励,渔民上报关于单个验证人的非法消息签名的基础奖励是从最小开始的,这个奖励会随着其他渔民上报更多的非法签名而逐渐增加。依据我们基本的安全性假设:至少三分之二的验证人是诚实的,渐近线将设置在66%。 渔民某种程度上和目前区块链系统的全节点相似,他们所需要的资源相对较少,也没必要承诺稳定的在线时间和大的带宽。渔民有如此大的不同,所以他们只需要提交很少的押金。这个押金用于预防浪费验证人计算时间和计算资源的女巫攻击。它是立即可以提现的,很可能不会比等值的几个美金更多,但如果监测到一个不当行为的验证人,可能会收获很大的奖励。
5设计综述 本章试图给出一个系统的全局完整描述。对系统更加深入的解释会在接下来的一章中给出。 5.1 共识 在中继链上,Polkadot 通过一个现代的异步(asynchronous)拜占庭容错(BFT)算法达成对有效区块的相互共识。算法受简单的Tendermint 和 HoneyBadgerBFT 启发。后者在有任意网络缺陷的架构下,只要满大部分验证人是诚实的,就能提供了一种高效的容错算法。 也许一个权限证明(PoA)模式的网络就足够了,然而 Polkadot是个可以在全开放和公开的场景下部署的网络,不需要信任任何特殊的组织和当权者来维护它,因此我们需要一种管理验证人群体并且激励他们守法的方法。我们选择使用以PoS 为基础的共识算法。 图片: https://uploader.shimo.im/f/Y5wiT7tzuGJdeHcc.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 图 2:Polkadot 的概括性原理图 图 2展示了收集人收集并且广播用户的交易,也广播候选区块给渔民和验证人。展示了用户提交一个交易,先转移到平行链外部,然后通过中继链再转移到另一条平行链,成为一个可以被那里的账户执行的交易。 5.2 权益证明 我们假设网络可以度量每个账户有多少权益(stake)。为了更轻松地和现有系统对比,我们把度量单位称为“代币(tokens)”。不幸的是由于它仅仅能作为对账户简单的价值度量,也没有任何个性化,因此多种原因使这个术语并不那么理想化。 通过一个被提名的权益证明(Nominated Proof-of-Stake NPos)结构,我们猜想验证人的选举不会很频繁(很可能是一个季度一次,最多一天一次)。通过按比例分配的增发出来的代币(很可能大约 10%,最多每年100%)和收集到的交易手续费来进行激励。虽然货币增发一般都会造成通胀,但因为所有代币持有者都有公平参与的机会,所以代币持有者的资产不会随着时间而遭受损失,他们会很开心地参与到该共识机制中来。全网权益证明的开展所需的抵押必须达到一个特定的最小比例。会根据市场机制,达到有效的代币增发这个目标。 验证人严重依赖他们抵押进来的权益。现存验证人的押金会从他们离职的时候开始,要再保留更长时间(也许 3个月左右)。这么长的押金冻结期是为了还能惩罚将来的不当行为,直到区块链周期性的检查点到来。不当行为会遭到例如减少奖励等的惩罚,如果是故意破坏网络的完整性,验证人将会损失部分或全部的权益,转移给其他验证人、信息提供者或全部权益持有者(通过烧毁)。例如一个验证人试图同时批准不同分叉上的两个分支(有时也被称为短程攻击),就会被后面的方法鉴别并遭到惩罚。 检查点锁定器(checkpoint latch)能规避长程 “无权益抵押”(nothing-at-stake)攻击,防止比一般长度更长的高度危险的链重构(chain-reorganistation)发生。为了保证最新开始同步的客户端不会被误导进错误的链,网络会出现定期的“硬分叉”(最长也就是验证人的押金冻结期),把最近检查点区块的哈希值硬编码(hard-code)进客户端。将来通过逐步递减有限链的长度(finite chain length),或周期性地重置创世块(genesis-block),这种方法会运行得很好。 5.3 平行链和收集人 每条平行链将给中继链提供同样的安全性保证:平行链的区块头会被包含进中继链的区块中,还跟着一些确认信息,用来保证不会发生链重构或双重花费(double-spending)。类似于 BTC 侧链和联合挖矿的安全性保证,Polkadot也强力保证平行链状态交易的有效性。会依据密码学算法,把验证人随机地分成很多个组。一条平行链对应一组,甚至每个块的组也都可能不一样。这个设置意味着中继链至少也要和平行链的出块时间一样短。本文不讨论分组的特定决定方式,可能要么是围绕类似RanDAO 的提交 - 披露(commit-reveal)框架,要么结合平行链前一个区块的密码学哈希值。 这样的验证人组需要提供平行链的候选块,还要保证它们是有效的(否则损失押金)。有效性围绕两个重要的点:第一,它是内生有效的,所有的状态转换被公正地执行,包括引用的外部数据也被公正执行(比如交易)。第二,参与方需要可以简便地访问候选块的任何外部数据,例如外部交易等,然后就可以下载这些数据并手工执行候选块。验证人可以提交没有包含任何外部交易数据的空块(null),如果他们这样做,就要承受奖励减少的风险。他们和收集人在平行链的一个gossip 协议上工作,收集人把交易收集到块里,并且要提供一个非交互的零知识证明(noninteractive zero-knowledge),用来证明本子块的父块是有效的(为该工作收取任何手续费)。 防止垃圾(spam)数据的方法留给了平行链协议自身:中继链本质上不规定 “计算资源计量” 和 “交易费”。本质上也不强制平行链规定相关协议(尽管权益持有者不太可能愿意接纳一个没有提供合理机制的平行链)。这里明确地说明了并不会都像以太坊的手续费规则,也可以类似 BTC 的区块链手续费模型,或其他任何还没有提出来的垃圾预防模型。 Polkadot 的中继链本身将很可能存在一个类似以太坊的账户和状态模型,可能是 EVM的衍生版本。因为中继链节点将需要做大量的其他计算,将会通过提高手续费尽量减小交易吞吐量,我们的模型还会包含块大小的限制。 5.4 跨链通信 Polkadot 最关键的部分是跨链通信。因为在平行链间可以存在某种信息通道,我们才说 Polkadot 是可伸缩的多链系统。在 Polkadot中,通信可以很简单:一条平行链中的执行交易的时候(依据那条链的逻辑),可以给第二条平行链或中继链转发一个交易。目前生产环境中的区块链外部交易,都只能是完全异步的,他们并没有给它的来源方返回任何信息的原生能力。 图片:
5.5 Polkadot 和以太坊 归功于以太坊的图灵完备特性,至少在简单的可论证的安全性边界内,我们期望 Polkadot 和以太坊有丰富的交互可能性。简而言之,我们预想到了,从Polkadot 出来的交易,可以让验证人先签名,然后再喂给以太坊,在那里通过一个交易转发(transaction-forwarding)合约来解释和执行。反方向,我们也预想到了,从以太坊上的一个 “外向合约”(break-outcontract)中的特殊格式日志,可以快速地证明一个消息是否真的要被转发。 5.5.1 从 Polkadot 到以太坊 通过选择一个拜占庭容错算法,验证人经由授权投票产生的一系列权益持有者组成,我们能够获得一个安全的共识机制,用不经常更改的合适数量的验证人。在一个总共有144 个验证人的系统内,4s 出块时间和 900 个块的最终性(允许举报、惩罚、修复类似双向投票的恶意行为),一个区块的有效性可以合理地考虑为用最少 97个签名证明(144 的三分之二再加一), 然后跟着的是 60 分钟无风险注入的验证时间。 以太坊可以包含一个控制和维护 144 个签名的 “内向合约”(break-in contract),由于椭圆曲线数字签名的验签操作只要花费 EVM 3000gas 的计算量,而且因为我们只希望验证操作发生在大多数的验证人里(而不是全体),以太坊确认一个从 Polkadot 来的指令的基础花费不会超过300,000 gas—— 仅仅是区块 550 万 gas 限制的6%。增加验证人的数量(只有在处理数十个区块链的时候才必要)不可避免地会增加成本,然而很明显可以期望到随着以太坊技术的成熟和架构的改进,交易吞吐量会随着时间而增加。另一个事实是不是所有的验证人都会参与(例如只有最高押金的验证人才会做这个任务)这种结构的限制会比较合理。 假设这些验证人每天轮换(更保守的、更可能接收的是每周,甚至每月),网络给维持这个以太坊转接桥的成本大约是 540,000 gas 每天,或者按照当前的gas 价格,45 美金一年。一个通过转接桥的基本转发交易会花费大约 0.11美金;当然另外的合约计算会耗费更多。通过缓存和捆绑多个交易,内向的交易花费可以简单地分担,减少每个交易的花费。如果一次转发需要凑够 20个交易,那么转发一笔基本交易的花费会降低到大约 0.01 金。 在这个模型中,Polkadot的验证人节点除了签名消息之外只需要再做很少的事情。为了能够把交易路由到以太坊网络里,我们假设任何一个验证人需要属于以太坊网络,更可能的只需提供很少的奖励给第一个在网络上转发消息的人(奖励会支付给交易发起人)。
5.5.2 从以太坊到 Polkadot 使用一个叫做日志的概念,把交易从以太坊上转发到 Polkadot 上。当一个以太坊合约希望派生出一个交易给 Polkadot上面的某一条平行链,它只需简单地调用一个特殊的 “外向合约”就好。那个外向合约会索取任何必须的费用,然后生成一个日志打印指令,以便于通过梅克尔树和有块头哈希来证明它的存在。 在下面的两个情况中,可以非常简单地证明有效性。原则上,唯一的要求是每个 Polkadot节点都要运行一个全同步的标准以太坊节点。然而这本身就是非常重的依赖。一个更轻量的方法是提供一个简单的证明,仅需要包含正确执行该交易所必须知晓的以太坊的那部分状态树,然后再检查日志的有效性。这种类似简单支付验证(SPV-like)的证明不需要提供大量的信息。更方便的是,验证人可能完全不需要自己运行节点,Polkadot内的押金系统能支持第三方参与者来提交块头,因为其他第三方(也就是所说的渔民)也可能提供一个他们块头是无效的证明(具体地说就是状态根和回执根是错误的),所以这些人也冒着损失他们押金的风险。 在一个类似以太坊这样的无最终确定性(non-finalising)的 PoW网络上,不可能存在最终可证明的一致性。为了适应这个,程序需要依赖一定的块确认数量,或者直到那个依赖的交易已经在链内某一特定深度了。在以太坊上,这个深度从最脆弱的1 个块(网络都还不完全知道)延伸至 1200 个块(从 Frontier 上线到以太可交易)。 在 Homestead 的稳定版本上,大部分交易所选择了 120 个块这个数字,我们也可能会选择相近的参数。所以我们可以想象 Polkadot这边的以太坊接口有一些简单的功能:可以接受以太坊网络的新块头,并能验证它的 PoW,可以结合一个有足够深度的块头(还有 Polkadot内转发的相应信息),来验证从以太坊那边的外向合约打印出来的特定日志的证明,还可以接收关于之前收到的但还没有确定的块头里包含无效的回执根的证明。 需要有一个转发激励机制,才能够真正地在 Polkadot 网络里得到以太坊块头的数据(还有任何关于有效性和一致性的 SPV证明)。这可能设计成只是个简单的支付行为(由在以太坊那边收集的手续费资助),转给任何能够提供一个有效块头的人。为了能够应对分叉,验证人需要保留最近几千个块的信息,要么由协议原生支持,要么通过中继链上的合约。 5.5.3 Polkadot 和 BTC Polkadot 和 BTC 的交互是非常有挑战性的:从两边的网络角度考虑,一个所谓的 “双向锚定”架构会非常有用。然而由于 BTC 的局限性,如何提供一种安全性的锚定个是非常艰难的任务。可以使用类似以太坊的流程,从 BTC 转发一个交易到Polkadot:由一个受 Polkadot 验证人控制的 “外向地址”(break-outaddress)来托管转账过来的代币(和附属的数据)。可以通过结合一个确认期,来激励先知(oracles)提供 SPV证明,先知们通过标识一个非一致性的区块,来证明一笔交易存在双花的可能。任何在外向地址里托管的 BTC 原则上也被相同的验证人群体控制。 问题是如何保证这些 BTC,是被轮换的验证人集合所控制的。相比于以太坊那样可以根据在合约内任意组合签名规则的方法,BTC 的局限性就更多了,大部分的 BTC 客户端只接受最多3 方的多重签名。扩充至 36个或者大家希望的最高至上千个的终极提议,在现有的 BTC 协议里还不可能实现。一个选择是修改 BTC 的协议来支持这个功能,然而硬分叉在 BTC 的世界里非常难以安排和讨论。另一个可能性是使用门限(threshold)签名的方法,用密码学的结构来构造一个被被多个私钥片段共同控制的公钥地址,要制造一个有效的签名需要这些人的大部分或全部人都参与。不幸的是,和 BTC 的ECDSA 相比,门限签名计算起来非常耗资源,而且是多项式级别的复杂度(polynomial complexity)。 由于入金的安全根本性由有抵押的验证人决定,所以另一个选择是减少多重签名的私钥持有人数量至只有重度质押的验证人才能参与,这样门限签名就变得可行了(或者最糟糕的情况,也可能直接用 BTC 的原生多重签名)。由于要预防验证人的非法行为,这个方法会降低可托管的 BTC 总量。然而这是一个优雅的妥协,可以简单地设置能够安全地在两个网络里的转移的基金总额上限(验证人攻击失败可能会受到的押金损失,和攻击成功可能的会收到的 BTC 潜在收益对比)。 因此,我们认为在现有的 BTC 框架下,开发出一个能够在两个网络间安全转移 BTC 的平行链是不现实的,尽管如此,BTC 的持有者还可以在不确定的将来协调这些工作。
6协议细节 本协议可以大致分为三个部分:共识机制、平行链接口、跨链交易路由系统。 6.1 中继链操作 中继链会类似以太坊,也是基于状态的,包含一个账户信息到状态存储的映射关系,其中信息主要包含余额和交易计数器(防止重放)。把账户系统放在这里的目标是:记录每个身份在系统里控制了多少权益。但还有一些值得注意的差异: *不能通过交易部署合约;这是为了让中继链尽量缺乏功能性,不支持公开部署合约。 *没有资源计数器(gas);因为公众能够调用的一些功能是固定的,gas 记录系统的原理就不适用了。因此在所有功能中,会使用一个更通用的手续费标准,这样就能更高效地执行那些动态代码,交易格式也会更简单。 *会有一些包含特殊功能的默认合约,他们管理交易的自动执行和网络消息的输出。 中继链会有一个基于 EVM 的虚拟机,但为了最大程度地简化会做很多修改。它会有一些内置合约(类似于地址在 1-4之间的那些以太坊合约)运行平台的特定功能,包括共识合约、验证人合约、平行链合约。 如果不用 EVM,很有可能会选择 Web-Assembly (Wasm);这样的话,所有结构还是相似的,但是这些基于 Wasm的内置合约使用的是通用功能的语言,而不再是 EVM 上面的那些带有很多限制的不成熟语言。 还可能借鉴目前以太坊上衍生出来的其他方面的概念,例如在 Serenity版本中提出来一些改变,比如为了能在一个块里并行执行那些没有状态冲突的交易,将交易的回执格式简化等。 Polkadot 有可能会部署一个类似于 Serenity的纯净(pure)区块链系统,它不包含链的任何基础协议。但我们觉得这会带来更多的复杂性和开发不确定性,所以不太值得在目前阶段就去实现这么一个更高效且简洁的伟大协议。 为了管理共识机制,需要很多小片儿的功能:验证人集合、验证人机制、平行链等。这些都可以放在一个整体的协议中。然而为了实现模块化,我们会把这些描述成中继链的合约。这意味着他们都是中继链共识机制管理的对象(类似面向对象语言),但不一定是类似EVM 的字节码,也不一定能通过账户系统寻址。 6.2 权益合约 这个合约管理着验证人集合: *哪些账户是验证人; *哪些在短期内可以变成验证人; *哪些账户为了提名验证人而质押了权益 *每个人的属性,包括余额、可接受的押金比例、地址列表、会话(session)身份 它让账户在想成为验证人的时候可以来注册(需满足某些要求)、也可以提名某用户、在想退出验证人角色的时候还可以来退出。它自身还包含了一些用于验证和达成一致性的功能。 6.2.1 权益代币的流动性 通常我们希望能从网络中把尽可能多的权益代币都抵押进来,因为这关系到抵押权益的总市值和网络的安全性。这可以很简单地通过货币增发和收益分发来激励验证人。然而,这么做会出现一个问题:如果代币都被抵押在权益合约里,用于防止作恶,那么如何保证代币在一定程度上的基本流动性,进而支持价格发现呢? 一种方法是提供一个前向衍生合约来管理由抵押代币衍生出来的二级代币。但这在非信任的情况下很难实现。这些衍生代币无法等值交易,原因就和欧元区的不同政府发行的债券一样:抵押的代币有可能被扣减而价值降低。至于欧洲政府,他们还可能会违约。对于由验证人质押而来的代币,要考虑到验证人的恶意行为可能会遭到惩罚的情况。 基于我们的原则,我们选择了一种更简单的方案:不能把所有的代币都质押进来。这意味着一部分(可能20%)代币会被强制保持可流通的状态。尽管从安全的角度上讲,这个方案不完美,但也没有从根本上影响网络的安全。相比于 100% 的质押,也将只可能没收 80%的权益作为赔款。 我们还将会使用一个反向拍卖机制来公平地决定质押代币和流通代币的比例。有兴趣成为验证人的代币持有者可以给权益合约提交一个请求,说明他们希望支付的最小比例。每次会话(会话可能每个小时算一次)开始的时候,系统会根据每个意向验证人的押金和支出比例来填满验证人的插槽。一个可能的算法是从提交押金的验证人中,选择那些押金满足如下条件的人:押金不高于“总押金目标 / 插槽数量” 且不低于 “次低押金” 的一半。如果不够填满这些插槽,那么我们会迅速降低这个 “次低押金” 来满足条件。 6.2.2 提名 用户可以把手中的权益代币非信任地交给一个已激活的验证人,让他们来履行验证人的职责。提名通过一个 “批准 - 投票”系统来完成。每个准提名人可以给权益合约提交一个声明,指出他们信任的可以履行职责的一个或多个验证人的身份。 在每个会话期间,提名人的押金会散布给一个或多个代表他们的验证人。这些验证人的押金是等额分配的。提名人的押金用于验证人承担他们的责任,将能够获得利息或承受相应的扣减。 6.2.3 押金没收 / 烧毁 验证人的某些行为会导致惩罚性地没收他们的押金。如果押金降低到允许的最小值,会话就会提前结束,另一个会话开始。一个不完整的将导致惩罚的行为列表: *属于一条平行链的验证人小组,却不为该平行链的区块提供合法性验证; *签名了该平行链一个不合法的区块; *不去处理出口队列中被投票为已生效的消息; *不参与到共识流程中; *在中继链两个竞争性的分叉上同时签名。 有些行为会威胁到网络的完整性(例如签名不合法的平行链区块,或者签名多个分叉),为了驱逐这些验证人,会没收他们的押金。另外还有一些不那么严重的行为(例如不参与到共识流程中)或者那些无法清晰判别的行为(例如处于一个低效的小组),只会导致一小部分的押金被处罚。在后一种情况中,可以采用一个二级小组的搅拌功能来让恶意节点遭受到比正常节点更多的惩罚。 因为实时同步每条平行链的区块是个非常大的工作,所以在某些情况下(多叉签名和不合法签名),验证人无法很方便地检测到自身的不当行为。在这里有必要指出验证人之外的一些参与方也可以举报这些非法行为,并从中获得奖励,但他们和渔民还不太一样。 因为有些情况非常严重,我们希望可以很简单地从没收的押金里支付奖金。我们通常倾向于使用烧毁代币的方法进行重分配,而不是采用批量转账的方法。烧币可以从整体上增加代币的价值,也就可以补偿整个网络而不仅是涉及到的特定几方。这主要是作为安全防范机制,只有非常恶劣的行为才会到会非常大金额的惩罚。 很重要的一点是奖金必须足够高才能让网络觉得验证工作是值得做的,当然也不能比成本高太多,否则会招致那些足够有钱的、精心策划的国际级别的犯罪黑客攻击那些不幸的验证人,迫使他们做出非法行为。 规定的奖金也不能比恶意验证人的押金高太多,否则会不正当地激励非法行为:验证人为了奖金自己举报自己。解决方法是要么直接限制成为一个验证人的最小押金量,要么间接教育提名人:如果验证人押金太少,他们可能没有足够的动机来遵守规则。 6.3 平行链的注册 这个模块用于记录系统中的每条平行链。它是个相对简单的类似数据库的结构,管理着每条链的静态信息和动态信息。 静态信息包括链的索引(一个整数)和验证协议的标识。协议标识用于区分不同的平行链,只有这样,验证人才能运行正确的验证算法,然后提交合法的候选块。一个最初的概念验证版本会关注于如何把一个新的验证算法放在客户端中,这样每增加一个新种类的区块链,就需要一次硬分叉。然而在保证严格和高效的情况下,还是有可能不用通过硬分叉就能让验证人知晓新验证算法。一个可能的实现方法就是用一种确定的、本地编译的、平台无关的语言来描述平行链的验证算法,例如WebAssembly 等。为了验证这种方法的可行性,我们还要做更多的调查,毕竟如果能够避免硬分叉还是会有很大优势的。 动态信息涉及交易路由系统,比如必须对平行链的的入口队列进行全局共识(在下一节讨论)。 必须通过全民公投才能注册新的平行链。这本来可以直接内部管理,但通过一个外部的全民公投合约会更好,因为这个合约还可以用于更多其他场景的治理。关于平行链投票注册系统的具体参数(例如法定人数、多数派的比例)会用形式化证明做成一个不常更新的“主宪法” 系统,当然初始阶段也可能只是用传统的方法。具体的公式不在本文的讨论范围内,例如占 2/3 的多数派通过,并且全系统 1/3的代币都参与了投票才算通过。还有一些暂停和删除平行链的操作。我们希望永远不要暂停一条平行链,但这个设计是为了能应对平行链的一些紧急情况。最明显的情况是由于验证人运行了平行链的多种客户端实现,导致可能无法对某区块达成共识。我们也鼓励验证人使用多种客户端实现,以便能尽早检测到这类事情,防止押金被扣减。 因为暂停操作是个紧急措施,所以会采用验证人动态投票的方式,而不是通过全民公投。对于重启操作,可能直接通过验证人投票,也可能通过全民公投来完成。 删除操作平行链只能通过全民公投来进行,而且要提供一个宽松的平滑退出过渡期,能让它们成为一个独立的区块链或变成其他共识系统的一部分。这个期限可能是几个月,而且最好由平行链根据自身的需求来制定。 6.4 打包中继链区块 区块打包的过程本质上是共识的过程,也是把基本的数据变得有意义的过程。在一个 PoW链里,打包有一个同义词叫挖矿。在本方案里,它涉及收集验证人对于区块有效性、可用性、一致性的签名,这些区块包括中继链区块和它所包含的全部平行链的区块。 底层的 BFT共识算法也不是当前的工作范围。我们不描述它,而是使用一种原语描述一种由共识推动的状态机。最终我们希望能受到一些现有共识算法的启发:Tangaora (Raft的 BFT 变体)、Tendermint 和HoneyBadgerBFT。共识算法需要并发地对多条平行链达成共识。假设一旦共识达成,我们就可以不可辩驳地记录哪些人参与了其中。我们也可以在协议内把不正当行为的人缩小到一个小组中,里面仅包含哪些恶意参与者,这样就可以在惩罚时可以降低附带伤害。 以签名声明形式存在的这些证明、中继链的状态树根和交易树根一起存储在中继链的块头里。 对于中继链区块和平行链区块的打包过程是在同一个共识生成机制中,两类块共同组成了中继链的内容:平行链并不是由他们的小组隔离地进行 “提交”之后再被收集的。这虽然导致中继链的流程更加复杂,但也让我们可以在一个阶段里就完成整个系统的共识,能够将延迟最小化,并且能支持更加复杂的数据可用性,这在路由流程中将会很有用。 可以用一个简单的表格(二维的)来建模每个参与共识机器的状态。每个参与方(验证者)都有一系列以签名形式存在的来源于其他参与方的信息,描述着每条平行链的候选块和中继链的候选块。这些信息有两部分数据: 可用性(Availability):对于出口队列里这个块的已提交交易,验证人是否有足够的信息以便在下一个块正确地验证平行链的候选块?他们可以投 1 (知道)或 0 (不确定)。当他们投了 1,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。 有效性(Validity):平行链的区块是否有效,是否包含了引用的所有的外部数据(比如交易)?这和验证人对平行链的投票相关。他们可以投1 (有效)、-1 (无效)或 0 (不确定)。只要他们投了非 0,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。 所有验证人都必须投票;在上面的规则限制下,还可以重新提交投票。共识流程可以像很多标准 BFT共识算法那样来建模,每条平行链是并行的。除了有很小的概率把少数恶意参与者都被分配到了同一条平行链小组之外,共识算法在整体上还是能支撑网络,最坏的情况也不过只是出现一个或多个无效平行链区块而死锁的情况(何对责任人进行的惩罚)。 判断一个独立区块是否有效的基本规则(允许全部的验证人作为一个整体达成共识,然后这些平行链区块就成为中继链上具有一致性的数据引用): *需要有至少三分之二的验证人投票 “是”,并且没人投 “否”。 *需要超过三分之一的验证人对出口队列消息的可用性与否投票 “是”。 对于有效性而言,如果至少有一个 “是” 且至少有一个 “否”投票,一个特殊的条件就开启了,整个验证人就必须投票决定是否有恶意参与者,或者是否产生了意外的分叉。除了有效和无效之外,还支持投第三种票,等效于同时投了“是” 和 “否”,表示这个节点有相互冲突的意见。这可能是因为节点所有者运行的多种客户端实现而产生了分歧,也预示着平行链协议可能存在不清楚的地方。 当所有验证人的票都被记录过后,发现赢的那个意见少于一定数量的票(详细参数最多可能是一半,也许更少),那就可以假设平行链发生了意外的硬分叉,这条平行链的共识就会被自动暂停。否则,我们假设就是有恶意行为发生,并惩罚那些给输的那个意见投了“是” 票的验证人。 结论是只有足够的签名票数才能达成一致性,然后中继链的区块就打包完成了,开始打包下一个区块。 6.5 中继链区块打包的改进 打包区块的方法确保着系统的正常运行,因为每条平行链的关键信息都要由超过三分之一的验证人来保证可用性,所以它并不能很好地伸缩。这意味着随着更多平行链的增加,每个验证人的工作也会增加。 在开放的共识网络中,如何保证数据的可用性还是个有待解决的问题,然而还是有一些方法可以缓解验证人节点的性能瓶颈。一个简单的方案是:验证人只负责验证数据的可用性,那他们就没必要自己真正地存储、通信和复制数据。第二个方案是数据隔离,这个方案很可能和收集人如何组织数据相关,网络可以对收集人有一定的利息或收入激励,让他们保证提供给验证人的数据是可用的。 然而,这个方案也许可以带来一点伸缩性,但仍没有解决根本问题。因为添加更多平行链通常需要增加验证人,网络资源的消耗(主要是带宽)以链总数的平方的速度增长,长期来看这是不可持续的。 最终,我们可能会思考对于保证共识网络安全的根本限制,网络对带宽的需求增长速度是验证人数乘以消息总进入数。我们不能信任那些将数据分开在不同节点存储的共识网络,因为这会将数据和运算分离。 6.5.1 延迟性介绍 简化这个规则的方法是先了解即时性的概念。33% + 1的验证人最终(eventually)需要对数据的有效性进行投票,而不是立刻(immediately)投票,我们可以更好地利用数据指数级传播的特性,来帮助应对数据通信的峰值。一个合理的等式(尽管未证明): (1)延迟 = 验证人数∗区块链数 在目前的模型下,系统的规模只有随着链的个数而伸缩,才能保证数据的分布式运算;因为每个链至少需要一个验证人,对于可用性投票的复杂度,我们把它降到了只和验证人个数呈线性关系。现在验证人数可以和链个数类似的增长,不再是: (2)延迟 = 数量 ^2 这意味着随着系统增长,网络内带宽和延迟性的增长是可知的,但达到最终确定性所需的区块数目仍然是以平方增长。这个问题将会继续困扰我们,也可能迫使我们打造一个 “非平层”(non-flat)的架构,也就是会有很多按层级结构排列的 Polkadot 链,通过一个树形的结构来路由消息。 6.5.2 公众参与 微意见(micro-complaints)系统是一种可以促进公众参与的方式。可以有一些类似于渔民的外部参与方来监管验证人。他们的任务是找到提供了非可用数据的验证人。他们可以给其他的验证人提交一个微意见。这个方案需要用PoW 或押金机制来防止女巫攻击,否则它会让整个系统失效。 6.5.3 可用性保证人 最终的一个方案是从验证人里提名出第二个小组作为可用性保证人(Availability Guarantors)。他们也需要和普通验证人那样交押金,而且有可能来源于同一个组(会在一个长周期里选择他们,至少也是一个会话周期)。和普通验证人不同的是,他们不需要在各条平行链间切换,而只需要形成一个单一的小组,监管所有重要跨链数据的可用性。 这个方案还有个优势是能缓解验证人数和链个数之间的等式关系。链个数可以最终增长(与原始链的验证人小组一起),然而各参与方仍可以保持次线性增长或常量增长,尤其是那些参与数据可用性验证的人。 6.5.4 收集人设置 系统需要保证的一个重要方面是:合理地选择那些制造平行链区块的收集人。如果一条平行链由某个收集人控制了,那么外部数据是否可用就会变得不那么明显,这个人就可以比较简单地发动攻击。 为了尽可能地广泛分配收集人,我们可以用伪随机的方法来人工衡量平行链区块的权重。在第一个示例中,我们希望验证人倾向于选择权重更大的候选块,这是共识机制的一个重要部分。我们也必须激励验证人找到最大权重的候选块,验证人可以把他们的奖励按比例分配给这些候选块。 在共识系统里,为了确保收集人的区块被选中的机会是平等的,我们用一个连接所有收集人的随机数生成器来决定每个候选块的权重。例如用收集人的地址和一些密码学安全的伪随机数做异或(XOR)运算来决定最优的块(获胜票)。这给了每个收集人(更准确地说是每个收集人地址)随机公平地打败别人的机会。 验证人通过女巫攻击来生成一个最接近于获胜票的地址,为了阻止这种情况,我们会给收集人的地址加上一些惰性。一个很简单的方法是需要他们的地址有基本的余额,另一个更优雅的方式是综合考虑地址的余额来计算获胜的概率。这里还没有完成建模,我们很可能会让很少余额的人也可以成为收集人。 6.5.5 区块超重 如果一个验证人集合被攻击了,他们可能会生成一个虽然有效但要花费大量时间来执行的区块。这个问题来源于一些特定的难解数据题,比如大质数因式分解难题等,验证人小组可能需要非常长的时间才能解出答案,如果有人知道一些捷径,他们的候选块就有巨大的获胜优势。如果一个收集人知道那个信息,而其他人都在忙着计算老的块,那么他就有很大的优势让他的候选块获胜。我们称这种叫超重(overweight)块。 为了防止验证人提交这些大幅超出普通区块的超重块,我们需要添加一些警告:因为执行一个区块要花费的时间是相对的(根据它超重的程度),所以最终可能的投票结果会有三种:第一种是这个区块绝对没有超重,超过2/3 的验证人声明他们可以在一定时间内算完(例如出块时间的 50%);另一种是这个区块绝对超重了,超过 2/3的验证人声明他们无法在限定的时间内执行完这个区块;再一种就是意见分歧基本持平,这种情况下我们会做一些惩罚。 为了保证验证人能预测他们提交的区块是否超重,他们可能需要公布自己在每个块上的执行表现。经过一段时间后,他们就可以通过和其他节点的比较来评估自己处理器的性能。 6.5.6 收集人保险 还有一个问题留给了验证人:为了检查收集人区块的有效性,他们不能像 PoW网络那样,而是必须自己计算里面的交易。恶意收集人可以填充非法或超重的区块给验证人,通过让他们受害(浪费他们的资源)来获取大量的潜在机会成本。 为了预防这个,我们为验证人提供了一个简单的策略。第一:发给验证人的平行链候选块必须要用有钱的中继链账户签名,如果不这么做,验证人会立即丢弃这个块。第二:会用组合算法(或乘法)对这些候选块进行排序,因素包括高于一定限额的账户余额、收集人过去成功提交的区块数(除去那些有惩罚的)、和获胜票的接近程度。这里的限额应该等于提交非法块的惩罚金。 为了警示收集人不要发送非法或超重的交易给验证人,任何验证人都可以在下一个区块中打包一个交易,指出那个非法的区块,并将那个收集人部分或全部的余额都转给那个受害的验证人。这种交易的优先级高于其他交易,使得收集人不能在惩罚之前转走他的余额。惩罚金额可能是动态决定的,也很可能是验证人区块奖励的一部分。为了阻止验证人任意没收收集人的钱,收集人可以对验证人的决定进行上诉,成立一个由验证人随机组成的陪审团,并交一些押金。如果陪审团发现验证人是合理的,那这笔押金就给陪审团了。如果是不合理的,押金退回给该收集人,而验证人要受到惩罚(因为验证人是核心角色,惩罚会比较重)。 6.6 跨链交易路由 跨链交易路由是中继链和其验证人的核心功能。这里管理着主要的逻辑:一个提交的交易(简言之为“提交”)是如何从一个来源(source)平行链的出口被强制地路由到另一个目标(destination)平行链里,而且无需任何信任人。 我们很小心地选择了上面的词语;在来源平行链里,我们无需一个明确约束这个提交的交易。我们模型里的唯一约束是:平行链必须尽力按照全部的出口能力打包,这些提交就是他们区块执行的结果。 我们用一个先进先出(FIFO)的队列组织这些提交。作为路由基准(routing base)的队列个数可能在 16个左右。这个数字代表着我们可以直接支持的平行链性能,而不用采用多相(multi-phase)路由。Polkadot一开始会支持这种直接路由,然而我们也可能会采用一种多相路由操作(超路由 hyper-routing)作为将来系统伸缩的方式。 我们假设所有参与方都知道下两个区块 n,n+1 的验证人分组情况。概括而言,路由系统有如下阶段: *收集人 s:合约成员中的验证人 V [n][S]。 *收集人 s:FOR EACH 小组 s:确保合约里有至少一个验证人 V [n][S]。 *收集人 s:FOR EACH 小组 s:假设出口 [n-1][s][S] 是可用的(上个区块里所有对 S 提交的数据) *收集人 s:为 S 构造候选块 b:(b.header, b.ext, b.proof, b.receipt, b.egress)。 *收集人 s:发送证明信息 proof [S] = (b.header, b.ext, b.proof, b.receipt, b.egress)。 *收集人 s:确保外部交易数据 b.ext 已经对于其他收集人和验证人可用了。 *收集人 s:FOR EACH 小组 s:发送出口信息 egress [n][S][s] = (b.header, b.ext, b.receipt, b.egress) 给下个区块的接收方小组的验证人 V [n+1][s]。 *验证人 v:预连接下一个区块的同一个组的成员:让 N = Chain [n+1][V];连接所有的验证人使 Chain [n+1][v] = N。 *验证人 v:收集这个块所有的入口数据:FOR EACH 小组 s:检索出口 egress [n-1][s][Chain [n][V]],从其他验证人 v 获得使 Chain [n][v] = Chain [n][V]。可能是通过随机性地选择其他验证人的证明数据。 *验证人 v:为下个块接收候选块的出口数据:FOR EACH 小组 s,接收 egress [n][s][N]。对区块出口的有效性投票;在意向验证人间重新发布使 Chain [n+1][v] = Chain [n+1][V]。 *验证人 v:等待共识。 egress [n][from][to] 代表:在区块 n 里,从来源 from 平行链到目标 to 平行链的当前出口队列信息。收集人 s 是属于平行链 S的。验证人 V [n][s] 是平行链 s 在区块 n 时的验证人小组。相反地,Chain [n][s] 是验证人 v 在区块 n所属的平行链。block.egress [to] 是从平行链区块 block 发送给目标平行链 to 的出口队列。 收集人因为希望能够采纳他们出的块,所以收集(交易)手续费作为激励,并保证下一个区块的目标小组成员都能知晓当前块的出口队列。验证人的激励是达成中继链区块的共识,所以他们并不关心最终采纳哪个收集人的区块。一个验证人原则上可以勾结一个收集人,合谋减少采纳其他收集人的概率,然而因为平行链的验证人是随机分配的,所以这也很难得逞,而且还可能会遭到手续费减免,最终影响共识流程。 6.6.1 外部数据可用性 如果要在一个去中心化的系统里完成分布式的全部流程,一个长年的遗留问题是:如何确保一条平行链的外部数据都是可用的。这个问题的核心原因是:不可能生成一个关于可用性与否的非交互式证明。在一个拜占庭容错的系统内,我们需要依赖外部数据才能验证任意交易的有效性。假设我们能容忍的最多的拜占庭节点数为n,我们一共至少需要 n+1 个节点才能证明数据的可用性。 Polkadot是个希望可以伸缩的系统,这带来了一个问题:如果必须由一个固定比例的验证人来证明数据的有效性,并且假设他们真会存储这些数据来用于判断,那么我们如何避免随着系统的增长而带来的对带宽/ 存储空间等需求的增长。一个可能的答案是成立一个验证人小组(就是保证人),他们的数目随着 Polkadot 整体的增长而线性增长。这在 6.5.3里提到了。 我们还有第二个技巧。收集人有内在的激励去确保所有数据的可用性,否则他们就不能再生产后续区块了,也就不能再获得手续费了。收集人也可以形成一个小组,成员复杂多样(因为平行链验证人成员的随机性),很难进入。允许最近的收集人(可能是最近几千个块)对某条平行链区块的外部数据发起挑战,来获取一点验证人的奖励。 验证人必须联系这些有明显进攻行为的小组,这些小组会举证、获取并返回数据给收集人,或者直接通过证明数据的非可用性来升级事态(作为原告方直接拒绝提供数据记录,不当行为的验证人会直接断开连接),并联系更多的验证人一起去测试。在后一种情况中,收集人的押金会被退回。 一旦超过法定个数的验证人都证明交易的非可用性,验证人小组就可以解散了,非法行为的收集人小组会被惩罚,区块被回退。 6.6.2 路由 “提交” 每条平行链的头部都包含一个出口树根(egress-trie-root)。这个树根包含了一个路由信息的格子列表,每个格子里都有一个串行(concatenated)结构的出口提交。可以在平行链的验证人之间提供梅克尔树证明,这样就能证明某条平行链的区块对应着另一条平行链的出口队列。 在开始处理平行链区块之前,每条平行链指定区块的出口队列会被并入我们区块的入口队列。假设密码学安全的伪随机数(CSPR)能用来保证公平地对平行链区块进行配对。收集人计算新队列,并根据平行链的逻辑抽干出口队列。 入口队列的内容会被明确地写入平行链区块。这么做有两个目的:第一,平行链可以独立地进行非信任同步,而不用依赖其他链。第二,如果整个入口队列无法在一个块内处理完,那么这种方法可以简化数据逻辑;验证人和收集人可以继续处理下面的区块而不用再做数据引用了。 如果平行链的入口队列超过了区块处理的阈值,那么在中继链上就会被标记为已满,在队列清空之前不会再接收新的消息。使用梅克尔树来证明收集人在平行链区块里的操作是可信的。 6.6.3 弊端 这个架构的小瑕疵是可能发生后置炸弹攻击(post-bomb attach)。所有的平行链给另一个平行链发送最大数量的提交,这会瞬间塞满目标链的入口队列,不造成任何伤害地进行了 Dos 攻击。 正常情况下,假设有对于 N 条平行链和一系列正常同步的非恶意的收集人和验证人,那么总共需要 N x M 个验证人,每条平行链 L个收集人,每个块可能的数据路径(data path)有:
验证人:M-1+L+L:M-1 代表平行链集合里的其他验证人,第一个 L 代表每个收集人提供了一个平行链候选块,第二个 L代表下一个块的全部收集人需要放入出口队列的前块数据。(后一种情况可能会更糟,因为收集人之间会分享这些数据)。 收集人:M+kN:M 代表和每个平行链区块相关的验证人的连接数,kN代表着下一个区块播种(seeding)到每个平行链验证人小组的出口队列的负载(很可能是一些很受喜爱的收集人)。 因此,每个节点数据路径的可能性随系统的复杂度的增长而线性增长。这也是合理的,当系统伸缩到上百上千个平行链的时候,通信的延迟也会变大,进而降低复杂度的增长速度。在这种情况下,会用一个多级的路由算法来减少峰值期的数据路径,但需引入缓存和交易延迟。 6.6.4 超方路由(Hyper-cube Routing) 超方路由(Hyper-cubeRouting)是一种可以建立在上面描述的基础路由方法上的一种新机制。对节点来说,他们的连接数从需跟平行链和节点小组数一起增长,变成了只跟平行链个数的对数增长。这样就可能需要经过多个平行链的队列才能最终传送 “提交”。 路由本身是简单和确定性的。我们从限制入口 / 出口队列的格子数开始;平行链的总数目是 routing-base (b),这个数字会随着平行链的改变而修正,增长为 routingexponent (e)。在这个模型下,我们的消息总量以 O (be)增长,而数据路径保持为常量,延迟(或传递需要的块数)以 O (e) 增长。 我们的路由模型是一个 e 维的超方体,每个立方体的面有 b 种可能位置。对于每个块,我们围绕一个轴来路由消息。为了保证最坏情况下的 e个块的传递延时,我们用 round-robin fashion 来轮换每个轴。 作为平行链处理的一部分,只要给定当前的块高度(路由维度),入口队列里外部范围的消息就会立即路由给合适的出口队列的格子。这个过程需要在传送路由上发送更多数据,然而这会是个问题,也许可以通过一些替代性的数据负载发送方式解决,比如只包含一个引用,而不是在提交树(post-trie)里包含全负载。 一个拥有 4 条平行链的超方路由系统示例,b = 2、e = 2: 阶段 0,对于每个消息 M: *$sub0:如果 M{dest} ∈ {2,3}$ ,那么 sendTo (2) ,否则保留 *$sub1:如果 M{dest} ∈ {2,3}$ ,那么 sendTo (3) ,否则保留 *$sub2:如果 M{dest} ∈ {0,1}$ ,那么 sendTo (0) ,否则保留 *$sub3:如果 M{dest} ∈ {0,1}$ ,那么 sendTo (1) ,否则保留 阶段 1,对于每个消息 M: *$sub0:如果 M{dest} ∈ {1,3}$ ,那么 sendTo (1) ,否则保留 *$sub1:如果 M{dest} ∈ {0,2}$ ,那么 sendTo (0) ,否则保留 *$sub2:如果 M{dest} ∈ {1,3}$ ,那么 sendTo (3) ,否则保留 *$sub3:如果 M{dest} ∈ {0,2}$ ,那么 sendTo (2) ,否则保留 这里的两个维度很容易看做是目标索引的前两位(bits)。第二个块处理低序的位。一旦全部发生(任意顺序),提交就会被路由。
6.6.5 最大化随机性(Serendipity) 一个对基本提议的修改是把验证人数固定为 c^2-c 个,每个小组 c−1个验证人。摒弃原来每个区块时都在平行链间松散地分配验证人的方案,而改成对于每个平行链小组,在下一个区块时,会分配每个验证人到唯一的不同平行链小组。这导致了两个区块之间的不可变性,对于任意配对的平行链,都会有两个验证人调换他们的职责。然而我们不能用这个来确保绝对的可用性(单个验证人可能时常掉线,即使是非恶意的),但可以优化这个方案。 这个方案也会有后遗症。平行链需要重组验证人集合。进而验证人的数量会被绑定在平行链数量的平方级别,从很少开始最终快速增长,在 50条平行链时就会变得无法承受。这些都不是什么本质问题,对于第一个问题,本来也需要频繁重组验证人集合,无论验证人集合的数量多少。当集合数很少的时候,多个验证人可能被分配到同一条平行链,那么对于全部平行链影响的因素是常量的。对于在很多平行链时的需要很多验证人的问题,可以用在6.6.3 里讨论的这个多阶段的超方路由机制来缓解。
6.7 平行链的验证 验证人抵押了大量的保证金,他们的主要目标就是校验平行链区块是否有效,包括但不限于:状态转换、囊括外部交易、执行等待在入口队列的提交、执行出口队列的最终状态。这个过程本身是比较简单的。验证人一旦完成了前一个区块的打包,他们就可以自由地为后面的几轮共识准备平行链的候选块。 验证人一开始通过平行链收集人(下面介绍)或他的某个副验证人找到一个平行链区块。平行链候选块的数据包含区块头、前块头、外部数据输入(对于以太坊和 BTC,这些数据被称为交易,然而他们也可能是任意结构、任意目的)、出口队列数据、状态转换有效性的内部证明数据(对于以太坊,这可能是用来执行每个交易的很多状态/ 存储树节点)。实验性的证据显示对于目前的以太坊区块,这个数据集最多有几百 K 字节(KiB)。 如果校验没有完成,验证人会尝试从前一个块的转换中获取相关信息,从前一个块的验证人开始,之后到所有签名了这个数据的验证人。 一旦一个验证人接收到了这么一个候选块,他们就在本地验证它。验证过程包含在平行链这个大类的验证人模块里,这个需要共识的软件模块必须写在所有的 Polkadot实现里(原则上可以在多个实现里共享一个 C ABI 的库,但这会降低安全性,因为他们只是单一实现的引用)。 这个过程会提取前块头,然后用刚达成共识的中继链区块中记录的哈希值来检验。一旦父块头的有效性得到了验证,就会调用平行链类中特定的验证函数。这是个会接收很多数据项(大概就是目前给出的几种)的函数,返回值是对于区块是否有效的简单判断。 大多数这种验证函数都将首先检查头部的数据项,这些数据都可以直接从父块衍生出来(例如父块哈希、高度)。之后为了处理交易或提交,他们会尽力填充内部数据结构。 对于以太坊这样的区块链,需要执行全部的交易才能往梅克尔树填充这么大量的数据。其他类型的区块链可能有其他的处理措施。 一旦完成验证,入口提交和外部交易(或代表的其他)都会根据链的规则而被固定。(一个可能的默认方式是需要所有入口提交都在服务外部交易之前处理,然而这应该由平行链的逻辑决定)。通过这个规定,一系列的出口提交都会被创建,而且确实符合收集人的候选块要求。最终会一起检查合理填充的块头和候选块头。 验证人完成了对候选块的校验后,就对块头哈希进行投票,并发送必要的验证信息给小组里的其他副验证人。 6.7.1 平行链收集人 平行链收集人不需要交押金,他们完成的是类似目前区块链网络里矿工的任务。他们属于特定的平行链。为了开展工作,他们必须要有完全同步的中继链和平行链。 完全同步的精确含义取决于平行链的种类,尽管它们都包含平行链入口队列的当前状态。在以太坊这个例子中,它还至少要有最近一些块的梅克尔树数据库,但也可能包含非常多的其他数据结构,例如证明账户存在的Bloom 过滤器、遗传(familial)信息、日志输出、和对应高度区块的分叉回退表单。 为了保持两条区块链的同步,他们必须维护一个交易池来“钓取”(fish)交易,并接收公网上正确验证的交易。有了链和交易池,收集人就可以为每个块的被选验证人(由于同步了中继链所以知道他们身份)打包新的候选块,再附属一些必要信息(例如从节点网络来的有效性证明等),然后提交给验证人。 他们收集所有交易的手续费作为回报。这里有很多经济激励手段。在一个激烈竞争的市场中,如果收集人有富余的话,还可以跟平行链验证人分享手续费,以激励他们打包特定收集人的区块。同样地,一些收集人可能提高所需支付的手续费,使区块对于验证人更有吸引力。在这种情况下,正常的市场机制会使那些更高手续费的交易跳过队列,并能更快地打包到链里。
6.8 网络设计 以太坊和 BTC 等传统区块链中的网络设计需求一般比较简单。所有的交易和区块都未受引导地用 gossip 广播。同步模块中牵涉到的东西会更多一点,以太坊就可以根据不通类别做出不同的响应,但现实中这更多是节点的策略,而不是协议本身的内容。 以太坊基于 devp2p 协议改进了目前的网络协议,支持在单一节点连接中进行多个子协议的多路复用,因此同时支持多个 p2p协议,但以太坊的协议仍然相对比较初级,而且它还没有完成例如支持 QoS 等重要功能。当初创造一个无所不在的 “web3”协议的愿望基本上失败了,只剩下从以太坊众筹出来的几个项目。 Polkadot 的需求更加根本。相比于一个完整的统一网络,Polkadot有很多种参与方,每方都有不同的需求,参与方需要有很多不同的网络信道来交换数据。从本质上讲,这意味着需要一个能支持更加层级化的网络结构的协议。另外为了促进更多新类型的区块链来扩展网络,也需要有一个新的层级结构。 对于网络协议更深层面的探讨不在本论文范围内,我们需要更多的需求分析。我们可以把网络参与者分为两类(中继链、平行链),每个都有三小类。每条平行链的参与方之间相互通信,而不和其他链通信: *中继链参与方 *验证人:P,为每条平行链分割成多个子集 P [s] *可用性保证人:A (在基础协议里由验证人代替) *中继链客户端:M (每条平行链的成员) *平行链参与方: *平行链收集人:C [0],C [1],… *平行链渔民:F [0],F [1],… *平行链客户端:S [0],S [1],… *平行链轻客户端:L [0],L [1],… 通常我们认为网络成员和他们的设置间会发生如下几种通信: *P | A <-> P | A:为了达成共识,验证人 / 保证人必须连接。 *P [s] <-> C [s] | P [s]:每个作为平行链成员的验证人会和其他成员连接来发现区块并分享区块,例如收集人。 *A <-> P [s] | C | A:每个可用性保证人将需要从验证人那里收集签过名的共识相关的跨链数据;收集人可以广播给保证人来优化对他们区块的共识。一旦完成,数据会广播给其他保证人来促进共识。 *P [s] <-> A | P [s’]:平行链验证人将需要从前一个验证人或可用性保证人集合收集额外的输入数据。 *P [s] <-> A:当需举报时,渔民公告给任何参与方。 *M <-> M | P | A:中继链客户端输出数据给验证人和保证人。 *S [s] <-> S [s] | P [s] | A:平行链客户端输出数据给验证人和保证人。 *L [s] <-> L [s] | S [s]:平行链轻客户端从全客户端获取数据。 如果为了保证高效的传输,那种每个节点无差异的平层网络(类似以太坊 devp2p)就不再适应了。协议里很可能扩展引入一个合理的节点选择和发现机制,还可能计划一些前瞻性的算法,保证节点的顺序在适当时候是 “偶然” 连接的。 各类不同参与方节点的具体策略会不一样:对于一个能伸缩的多链系统,收集人要么需要持续地重新连接被选的验证人,要么连接一个验证人小组来保证他们永不断线,即使大多数时间他们对于自己是无用的。收集人也会保持和可用性保证人集合的一个或多个稳定连接,来确保需要共识数据的快速传播。 可用性保证人将保持相互连接,还要保持与验证人(为了共识和需共识的平行链数据)、一些收集人(为了平行链数据)、一些渔民和一些全节点(为了缺失的信息)的稳定连接。验证人倾向于寻找其他验证人,特别是那些在同一个小组里的,还有那些可以提供平行链区块的收集人。 渔民和一般中继链或平行链客户端会倾向于和验证人或保证人保持一个连接,但和他们相似的很多节点却不这么做。平行链轻客户端除了连接其他轻客户端外,也会连接一个平行链全客户端。 6.8.1 节点轮换的问题 在基础协议的预案里,每个块的验证人小组随机变换,验证人被随机分配去验证某条平行链的交易。如何在不相关的节点间传递数据会是一个问题,这就必须依赖一个全分布式并且连接良好的节点网络,才能保证所需的跳跃距离(最坏的延迟)只按照网络规模(一个类似的Kademlia 的协议会有帮助)的 log 级别增长,要么就必须延长区块时间,来支持必要的连接谈判,建立能够满足该节点当前通信需求的节点集合连接。 这些都不是好的方案:强迫变成更长的出块时间会让网络无法支持一些特定的程序或区块链。即使是一个完美公平的网络连接也会导致带宽浪费,因为要推送大量数据给不相关的节点,所以会影响到网络的伸缩功能。 然而这些方向都会促进问题的解决,一个可以降低延迟的优化方案是降低平行链验证人集合的易变性,在一段区块后才重新分配(比如 15 个区块,如果是 4 s的区块时间,那么只需要每分钟才重新连接),或者一段时间内只轮换一个验证人(例如如果有某条平行链分配了 15个验证人,那么平均情况是一分钟内才全部轮换)。通过提高平行链局部的可预测性,来降低节点轮换的次数,并仍然保证连接的优势,我们就可以保证节点间连接的随机性。 6.8.2 通往高效网络协议的路径 最高效和合理的开发方向是专注于改造一个现有协议而不是自己从头开发一个。我们将会探讨的几个点对点协议包括:以太坊的 devp2p、IPFS 的libp2p、GNU 的GNUnet。关于这些协议的全面介绍、以及其中关于如何打造一个能支持特定结构的模块化节点网络、动态节点转换、可扩展子协议等内容,本文也不做过多介绍,但这会是实现Polkadot 的重要一步。
7协议的可实践性 7.1 跨链交易支付 我们去除了以太坊那样的计算资源统计的 gas 机制,这虽然带来了更多的自由和简便性,但也引出了重要的问题:没有了gas,一条平行链如何防止其他平行链逼迫他们做运算?然而我们可以依赖 “交易提交”的入口队列缓存来阻止一条链给另一条链塞满交易数据,我们还没有提供其他相同效果的防垃圾机制。 这是个更高层面的待解决问题。由于链可以在 “交易提交” 中附属任何数据,我们需要保证在开始之前就支付计算费用。类似于以太坊 Serenity版本中的一个提案,我们可以想象平行链有一个 “内向”(break-in)合约来给验证人提供保证,付费换取特定数量的计算资源预分配。这些资源可能用类似 gas的机制来度量,但也可能用完全不一样的概念模型,比如主观计算时间模型或类似 BTC 的一般计费模型。 无论 “内向” 合约定义什么价值模型,我们都不能简单假设链下调用器对他们是可用的,所以这个方案的用处也不大。然而我们可以想象在来源链里的第二个 “外向”(break-out)合约。这两个合约形成一个桥梁,相互认识并且提供等值交换(相互之间的权益代币可以用来支付结算)。调用其他链意味着要用这个桥梁做代理,可以通过谈判来协商如何支付目标平行链的计算资源消耗。
7.2 添加链 添加一个平行链是相对比较便宜的操作,但并不免费。平行链越多意味着每个平行链的验证人就越少,更多的验证人又意味着每人的押金也会变少。通过渔民缓解了强迫一条平行链的问题。由于共识机制本身的问题,增长中的验证人集合本质上导致了更高的延迟。将来每条平行链都可能给不幸的验证人造成很大的验证算法负担。因此,验证人和/ 或其他权益持有者将会对添加一条新链来定价。这个链的市场要么是如下两种: *对网络没有净贡献的链(通过锁币或烧毁权益代币的方式,比如联盟链、Doge 链、特定应用链); *通过提供一些别的地方没有的功能,能给网络带来更多价值的链(例如隐私性、内部伸缩性、内置服务) 我们最终会激励社区的权益持有者来添加子链 —— 通过经济手段或根据给中继链添加功能的意愿程度。 可预期的是刚添加进来的新链会有一个短暂的移除期,这就允许新链可以先试验,无需任何妥协和长期价值风险。
8结论 我们提出了一个异构多链协议的可能方向,它是可伸缩的且能够向后兼容目前已存在的区块链网络。在这个协议下,各参与方为了自身利益共同创造了一个完整系统,它可以用非常自由的方式来扩展,而且没有目前那些普通区块链对用户的固有成本。我们给出了这个架构的大体轮廓,包括需要的参与方角色、他们的经济激励模型和他们需要做的操作。我们已经弄清楚了一个基本的设计,并讨论了它的优势和限制;我们未来的方向就是消除这些限制,向完全可伸缩的区块链方案迈进。 8.1 遗漏的材料和开放问题 网络设计一般都是从协议实现中分离出来的。还没有完全讨论网络如何从这种实验性的条件中恢复。网络需要一个确定性的非零时间,他们从中继链分叉中恢复过来应该也不是个大问题,然而需要小心地集成入共识协议中。 本文也没有具体探讨押金的没收和对应的奖励规则。目前我们假设提供的是赢者全拿(winner-takes-all)的奖励原则:但可能给渔民最好的激励。一个短周期的提交 -披露流程支持很多渔民来索取赏金,进而达到一个更公平的奖励分配制度,但这个举报恶意行为的流程也将会引入更大的延迟。
5、波卡如何实现价值捕获?从经济模型说起 https://www.chainnews.com/articles/036690323130.htm
6、波卡双11插槽拍卖在即,一文解读拍卖方式及意义 https://news.huoxing24.com/20211105160259119908.html 波卡和平行链:解决去中心化协调和硬分叉问题 在了解波卡平行链之前,我们需要进行简单的了解什么是波卡、为什么会出现波卡平行链。 首先,波卡链(Polkadot)是一条公链,它与比特币网络、以太坊网络以及诸多公链一样,是为了解决区块链信息交互及价值交互而存在的不同性质的公链。 如同比特币网络,解决的是非信任情况下的“点对点的交易”问题,而以太坊公链是解决的“多币未来”和智能合约的应用问题,波卡链则是解决的区块链过于复杂的去中心化协调和硬分叉问题。 为了解决上述问题,Polkadot在设计之初就堵死了公链扩展的道路,从而通过产生大量的平行链实现不同网络模式下的平行管理。
举个例子,以前的区块链每出现一个问题需要解决,就只有通过硬分叉或重新创建一条公链。医疗问题的解决需要创造医疗链、产品溯源问题的解决需要创建溯源链、而信息存证方面的问题需要创建信息存证公链。 这样一来,公链的概念不断增多,公链的种类和不同共识、模式的公链也就越来越多。这个问题是由区块链的去中心化格式决定的,公链之间的信息孤岛极难打破。 以太坊网络尽管也在跨链问题上作出了一定的贡献,但以太坊的结构并不理想,拥堵和复杂成为了难以彻底解决跨链信息交互的症结,而波卡要做的就是创立一个中枢核心,然后通过嫁接或创建不同共识、不同特点的公链作为波卡的平行链并接入核心,一次来做到不同公链之间的数据交换,达到跨链的目的。 有了波卡平行链之后,区块链项目将不再只能从同一个区块链网络中去寻求支持者(例如以太坊项目只能寻求以太坊网络中的用户作为支持者,其他公链用户如果想参与该项目就必须先成为以太坊的用户),而可以把项目生态扩展至更多公链。项目本身也无需为了生态建设进行“多链布局”和“多链计划”,只需要对接波卡链即可。 另外,波卡平行链提供了清晰的、可升级的、可扩展的平行链标准。利用 XCM 和 XCMP(链间信息传输协议)等工具和其他平行链交流和互操作,并由诸多平行链共同的连接点——波卡链本身作区块链网络所有信息交互的门户。 既然我们已经了解了波卡以及波卡平行链是什么之后,就可以进行下一个问题的讨论——波卡为什么要拍卖平行链插槽。
为什么要拍卖平行链插槽? 最大只能支撑100个平行链的跨链通信 图片: https://uploader.shimo.im/f/be5x4t7Pt4o9dx5R.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 在了解了波卡链的平行链结构之后,我们就发现,波卡主链就像是一个有着很多插孔的插排,任何家用电器都能插在插排上获取算力、和其他公链的信息。而完成这些操作的插排就被称为中继链(Relay Chain),任何平行链(比特币网络、以太坊、波场等)都能够通过中继链进行链接。 我们知道,家里的家用插排上的插孔数量是有限的,少的可以插1~3个插头,多的可以插10个左右。那如果无限扩展插头的数量是否可行呢? 答案是不行,因为家用电的进户电线的承载力有限,过多的接入电器插口或同时开启大量的高耗能电器有可能烧毁电器甚至引发电路起火。 波卡平行链的“插槽”与波卡主链链接,受限于区块链技术和现有计算机技术的限制,其插槽数量仍然是有限的,根据波卡官方发布的数据,波卡最大只能支撑100个平行链的跨链通信。 那么就意味着享受这种跨链服务的就只能有100个公链。目前全球公链数量没有2000也有1000了,谁才能有机会享受与其他公链跨链通信的服务呢?
波卡链想出的办法就是拍卖! 波卡生态的拍卖又称首次平行链发行,即 Initial Parachain Offering。我们可以把全球公链想象成漂浮在大海里的无数个互不相连的岛屿。 由于资金限制,现在波卡链只能为全球所有的小岛修建一个可以容纳100个小岛的公路网络,打通100个小岛之间的交通。当然,这种建设是需要成本的,波卡掌握了修路的技术,可这路究竟修到哪个岛,就看哪个岛出的“修路费”更多。 当然,“修路费”是一笔庞大的费用,一个小岛存在的生命周期也有限,于是波卡就通过竞拍获得该公路的使用权,在获得该公路的使用权之后,究竟是通过该公路方便“岛民”的出行,还是借由这条路收取过路费就看竞拍者自己的意愿了。 根据波卡官方透露的规则,每个插槽的使用周期从6个月到2年,周期不等。时间一到,如果没有“续费”或再次取得100个小岛的公路使用权的话,波卡就将切断该平行链与其他公链的通信权利。 因此,通过这一点也可以看出,波卡链中的平行链数量可能是稳定的,但100家平行链中到底包括谁是不固定的,各个小岛也会为了公路的使用权尽可能的“砸钱”。 不过,与一般认知的拍卖行为中拍卖结束后资金归售卖一方不同,波卡平行链插槽拍卖最终竞拍者的所使用的资金将被锁仓,直到插槽使用期限结束后返回给竞拍者。 也就说,竞拍者最终并没有花一分钱就得到了插槽的免费使用期限。
插槽竞拍方式:蜡烛拍卖、众贷模式 值得一提的是,波卡插槽竞拍并没有采用固定时间内价高者的形式,来对插槽租期进行拍卖,反而采用了一种随机性和投机性最大蜡烛竞拍的方式,来调动竞拍者的参与积极性。 这些印证了今年4月份,波卡团队高管所说的“期待混乱”的预期。 蜡烛竞拍是17世纪盛行的英式拍卖方式,拍卖大厅中会由主办方点燃一根蜡烛,然后拍卖场中的竞价者开始出价,直到蜡烛熄灭前一刻出价最高的人将赢得拍卖,蜡烛熄灭后,任何人再出价都视为无效。 而在波卡插槽的拍卖中,“蜡烛”是一组运算的函数,有更多的不确定性。极有可能第一个人出价之后,该“蜡烛”就熄灭了。 这一点也是为了让竞拍者把每一次出价都当做最后一次竞标,鼓励竞拍者给出更为合理的价格的方式。整个竞拍过程如下: 第一步:参与竞拍团队上传他们的平行链代码,首先选择以6周为单位的租期,然后确定租期后在选定的租期期间锁定的 KSM 数量开始竞标。 第二步:拍卖期间会持续进行公开竞价。团队可以看到其他项目的出价,并随着时间的推移提高他们的出价,以在整个拍卖过程中保持竞争力。 第三步:在拍卖结束时,拍卖结束的确切时刻由可验证随机函数(VRF) 随机确定。 第四步:中标团队竞标的 KSM 数额在租期内保持锁定,到期后可解锁。平行链在租期开始时自动接入中继链。 第五步:团队可以在当前的租期结束前通过赢得另一次拍卖来延长租期。 尽管波卡平行链插槽拍卖的蜡烛拍卖模式增加了竞拍结果的偶然性,但这并不代表每一个人都是“天选之子”,在第一次出价时就可以中标。因此,仍然要准备大量的DOT用于与其他平行链竞拍者进行竞争。 大部分竞拍者的资金有限,部分由于受区块链生态影响急于扩展生态但本身资金储备不足的竞拍者,为了在竞拍中占据更为有利的地位必然要进行借代。 波卡平行链插槽竞拍是全球性的,参与的项目、公链不知凡几,所以竞拍者不太可能从同行筹借到更多的资金,那么只能向用户筹集,向更为广大的用户借代。 因此,产生了波卡平行链插槽拍卖的众贷模式。简单来说项目方为了获得用户支持,会给在竞拍成功后给予用户一定的Token奖励作为利息。 从这方面来看,波卡平行链插槽拍卖并不太像是单纯地购买产品,与我们熟知的艺术品、古董、大宗商品的拍卖是两回事,波卡平行链插槽拍卖更像是一种锁仓空投形式。 插槽使用本身并不占据多少成本,前面我们已经说过,竞拍失败和使用租期到期后的所有竞拍费用都会返回给竞拍者。项目方所需要考虑的是DOT的机会成本,以及在智能合约的监督之下,这一切不会出现违约的情况。 当然,用户借给项目方的资金仍有盈利/亏损的可能,比如租期为6个月,我们假设在竞拍时的DOT为30美元。竞拍金额为10000DOT。 项目方从用户手中借到了价值5000DOT(约合15万美元)的资金,6个月后,如果DOT的价格涨到了100美元,当项目方租期到期从波卡平行链的竞拍系统中得到该笔竞拍资金10000DOT时,该笔DOT就价值100万美元,而用户借给项目方的资金也自然从15万美元涨到了50万美元。 反之,如果DOT的价格跌了10美元,那么当项目方租期到期从波卡平行链的竞拍系统中得到该笔竞拍资金10000DOT时,该笔DOT就价值20万美元,而用户借给项目方的资金也自然从15万美元跌了5万美元。 众贷机制让 DOT 持有者不仅可以塑造波卡网络的未来,还能在快速发展的波卡生态中分得一杯羹。 小结 从技术角度分析波卡平行链插槽拍卖,可以看作是一个区域性的跨链技术的应用落地,区块链行业从单条链的发展正式进入局域网络发展(100条平行链),并将继续向真正的区块链网络前进,对波卡本身还是区块链行业来说都将是一个利好消息。 从普通用户的角度来说,波卡平行链插槽拍卖是行业中增加了一种周期性的资金托管方式,这种资金托管方式较之期货、DeFi更加平缓且具有长期效果。 而对于波卡而言,通过波场平行链插槽拍卖能够获得来自100条平行链的完整生态和用户,是挑战以太坊网络的最佳时期,或许有可能借此开启新一轮的跨链技术研发。
7、全面解析波卡平行链插槽拍卖:形式、流程与商业模式 https://www.panewslab.com/zh/articledetails/1636342389519831.html 2021 年 3 月 2 日,波卡官方转推了 PolkaBTC 测试网正式启动的消息,这意味着用户可以测试 1:1 将比特币支持的资产铸造到 Polkadot (即 PolkaBTC)上,并能在去中心化交易所、稳定币和贷款协议中使用它们。 对于那些资深波卡粉丝来说,该消息预示着他们等待已久的波卡平行链插槽拍卖即将到来,或者说接近真正意义上的里程碑,因为按照之前的计划,当这些公益平行链(如 PolkaBTC)上线后,下一步就是 Kusama 的平行链插槽拍卖,随后便是波卡插槽拍卖。 我们相信到现在为止,稍微了解波卡的人一定或多或少听说过,那个被称为最高光环的「平行链插槽拍卖」,但我们也相信绝大部分人还不了解波卡插槽拍卖的全貌,因此,我们尝试以更全面、更客观的视角来为大家分析波卡平行链插槽拍卖的精彩故事,以此真正了解插槽拍卖的价值和意义。
什么是波卡平行链插槽拍卖?什么是平行链插槽? 首先,我们需要回顾下波卡的架构。波卡本质上是一个可扩展的异构多链区块链,由一个协作的去中心化区块链网络组成,这个网络也可以叫做中继链。中继链与并行运行的分片链(也就是平行链)交互,这些平行链可以看作是中继链的客户端,中继链的目的是保护平行链顺利运行。 波卡允许多条专用区块链在安全的、无信任环境中相互沟通,从而实现了区块链的可扩展性。平行链与中继链相连,这就需要平行链插槽。只有获得插槽,才能成为真正意义上的「波卡平行链」,因为插槽能够提供波卡共享的安全性、跨链互操作性、链上治理、无分叉链上升级、扩容性、低手续费等优势。 简单地理解,好比是平行链是生活中的各种电器,而波卡中继链的插槽就好像是通电的插座一样,只有当电器接上插座通电,才能发挥真正的作用。
什么是平行链插槽拍卖? 然而一个中继链所能承载的平行链是有限的,平行链插槽自然便成了稀缺资源,那么众多项目都想要接入波卡,自然是僧多粥少的情况了,那要怎么办才能让插槽公平公正的分配出去呢?这种情况最适合的解决方案就是竞拍了。 于是波卡官方顺理成章地设计了平行链插槽拍卖的机制。为了确保公平分配平行链的插槽,波卡利用蜡烛式拍卖的方式进行平行链插槽竞拍。 蜡烛拍卖是公开拍卖的一种形式,投标人提交的出价越来越高,在一个随机确定的拍卖时间结束时出价最高的投标人被视为获胜者。在波卡平行链插槽拍卖中,任何人都可以参与,拍卖在区块链上进行,具有可追溯确定的随机结束时间,如果有谁(个人或智能合约)赢得了拍卖,不需要任何许可就可以来部署他们的平行链,波卡平行链插槽拍卖本质上是去中心化的。 由于任何人都可以参与的特点,截止到平行链竞拍正式开始,我们都无法确定具体参与竞拍的项目(或个人)的数量和情况。可竞拍一旦开始,所有参与数据都在链上公开可查,官方会公布竞拍具体开始时间和结束时间。 除了大家都知道的结束时间,波卡系统会生成一个随机结束时间,这个时间会被转换成区块数,而这才是决定最终赢家的关键。未赢得插槽的团队可以参与下一轮插槽拍卖,一般来说每两周会进行一次。 所有参与者需要确定两个信息:参与竞拍的 token 数量、竞拍的插槽时间。竞拍的插槽时间根据生态项目所需来确定,并非一定是越长越好。另一个需要讨论的是参与竞拍的 token 数量,毕竟不是越多越好,也不能少的上不了「及格线」。 平行链插槽竞拍太贵,可以 「众贷」 波卡平行链插槽竞拍需要 DOT,如果项目方没有足够的 DOT,也想参与竞拍怎么办呢?官方也想了解决办法,提出了 Crowdloan (PLO)也被称为「众贷」的方式。 想要参与竞拍平行链卡槽的团队通过发起 PLO,向市场进行去中心化、无差别的众贷,用筹集到的 DOT 参与竞拍。若竞拍成功,在平行链插槽租赁期间 PLO 中的 DOT 将被锁定,PLO 发起方将因此奖励给参与众贷的投资者该生态项目的 Token。租赁期结束后,DOT 会回到投资者手中,并可以流通。与众筹是把钱投资给项目不同,众贷是锁定到智能合约中,是借给了项目方,既不会损失自己的本金,反而会获得项目方的 Token 作为资金利息。 当然,如果从另一个角度来看,PLO 实质上也是一种分发自己 Token 的方式,是一种互惠互利的融资方法,它赋予了竞拍平行链卡槽团队更加机动灵活的竞拍资金,同时给了拥有 DOT 的市场投资者一种无损本金的投资方式。 插槽没拍上,平行线程来救场 如果项目方参与波卡平行链插槽拍卖失败了,也不用担心自己的项目享受不了波卡的跨链功能。波卡提出了一个平行线程(Parathread)的机制,来满足这样的需求。 这里我们要着重说一下平行线程。平行线程的加入不需要参与平行链插槽拍卖,只需要支付 10-100 个 DOT 的储备金,在其数据被波卡处理时,按区块付费。平行线程的收费和出块验证机制本质上和平行链是相同的,其费用结构由交易手续费和来自平行线程的赞助两部分构成,并且同样需要竞拍才能获得区块的优先使用权。 然而,我们不得不承认平行线程是目前加入到波卡生态系统中最方便且前期投入较低的方法之一,受到了很多项目方的喜爱。如果项目方没有无时不刻使用平行链区块的诉求,只需要在必要时将处理的数据打包进区块中,就很适合使用平行线程。平行线程和平行链具有同样的底层代码和计算模型,可以进行跨链互通,也可以按需相互转换。 做个简单的比喻,平行链就好比是我们手机的无限流量套餐,支付月份便可以使用无限流量,而平行线程则像是根据你使用的流量来计算你的话费。 平行链插槽拍卖和平行线程的使用都非常重要,两者各有个的优势,需要项目方根据自己的需求来进行选择。在目前有众多的明星项目还没有公布其平行链竞拍计划的当下,平行链插槽的拍卖依旧是我们关注的焦点之一。 尽管区块链系统的设计空间是无限的,但中继链能承载的平行链却是有限的,基于目前的设计,波卡大概会产生 100 个平行链插槽。 而这 100 条平行链,并不会全部用于插槽拍卖,实际上,官方对于波卡整个生态所需要的一些基础功能还是特定保留了一些专用插槽来满足必要的需求,这十分契合计划经济+市场经济的思路。 目前平行链插槽具体分为公共利益链插槽、平行链插槽、平行线程池。 图片: https://uploader.shimo.im/f/hhU4KoK5yt23TXKK.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 按照波卡官方博客公布的对「公共利益平行链」介绍,表明将通过公投的方式来决定为公共利益平行链注册插槽。公共利益链分为两类,用于 Staking 和理事会的选举、治理和身份,用于余额的「系统平行链」,以及以桥、通用的资产链和 DOT 计价的智能合约平台为代表的「公共功能平行链」,大概预留 10-30 条公共利益平行链。 除此之外,一部分插槽被称为租用插槽,就是这部分的插槽将要用于平行链插槽拍卖中去。波卡平行链插槽拍卖获得的是租赁权益,其使用期限是有限的,以 6 个月为单位,最长 2 年,提供给需要持续网络吞吐量资源和波卡生态系统全部功能的一般平行链项目。 最后剩下的部分就是平行线程池了,平行线程池是一个通过在开放的平行链插槽中竞拍区块的动态使用权的集合,每个区块最多承载 50 个平行线程。 平行链的上线流程究竟怎样的? 来自 Gavin 博士去年年底的回答,具体为: 上线 Rococo v1 并等待其稳定运行; 上线 Kusama 的 system (公共利益性质) 平行链; 开启 Kusama 上的竞拍; 上线 Kusama 上竞拍成功的平行链; 在审计完成后,上线 Polkadot 的公共利益性质平行链; 开启 Polkadot 上的竞拍; 上线 Polkadot 上竞拍成功的平行链。
波卡平行链插槽拍卖的意义 前面我们了解到了波卡平行链插槽拍卖的具体情况,那么插槽拍卖对于整个波卡生态来说究竟有什么意义呢,以及这会给参与到平行链拍卖的项目怎样的价值,下面我们重点讲述下。 对于波卡的意义 首先平行链插槽拍卖是波卡是对平行链项目的一次炼金石!这个机制,其实也是一个优胜劣汰的选择机制。 如何理解呢? 平行链插槽拍卖是需要非常多 DOT 的,而竞拍的情况意味着要体现项目方对插槽的真实估值,出价最高的竞标者得,这就需要比拼项目的硬实力了。这第一个门槛就是判断项目方本身是否十分优质,可以融到足够的资金来参与平行链插槽拍卖。 如果募资不够的项目,假如他们本身的运营能力或者项目本身也还不错,也可以利用 PLO 的方式吸引到足够多的人支持自己参与竞拍,这也是考验项目的第二个关卡。 还有第三个考验,这也是官方之所以用插槽这个定义的原因,因为插槽的形容十分的形象,既然是插槽,自然是可以插上,也可以拔出,所以官方故意把平行链插槽设置成为有限时间的使用权,最多可以使用两年,其目的在于,如果这两年项目发展后续不行,就得自动让出插槽的位置,让外强中干的项目早早地退出。 其次,插槽拍卖可以为波卡生态带来真正的活力,当插槽拍卖常态化后,是大约两周会有一次拍卖,如果许多知名项目都想要加入波卡生态,岂不是每过两周就有一次利好吗?而且知名项目参与插槽拍卖,会把自身的热度和本身的用户都带入波卡生态,不管是从关注度还是从资金层面,都会为波卡带来一波热潮。而运营一个项目的时候,是十分需要这样的运营节奏,持续的让它发光发热。 最后,插槽拍卖也是对波卡团队过去努力数年的检验,毕竟在跌跌撞撞的岁月里,人们依然对波卡充满了怀疑,哪怕如今热度高涨但也不乏怀疑论者,而插槽拍卖成功与否更像是一次大阅兵,对波卡自身来说也是一次意义非凡的证明。 对于波卡生态项目的意义 上面我们谈到的是关于波卡本身来说平行链插槽拍卖的意义,但对其中参与的项目方来说,同样意义非凡,那些为插槽拍卖摩拳擦掌的项目方可谓铆足了劲在为这一天到来做准备,有的甚至已经跟随波卡努力了数年,还有异军突起但同样「功力深厚」的新兴项目,他们都是插槽拍卖的主力军。 插槽拍卖对波卡是练军,对波卡生态项目方来说同样如此,他们翘首以盼的等待,只为成为波卡平行链中的一份子,毕竟平行链的光环不仅可以让他们走上新的台阶,甚至可能成为下一代区块链基础设施服务的提供者,这是集荣耀和价值为一体的「皇冠」,自然值得他们争取。其中,通过 PLO 能众贷到多少 DOT 以支持这些项目方获得平行链插槽,就是对他们的一个最好的体现。 同时,参加插槽拍卖,也是对自身项目的一次很好的活动策划,因为 PLO 的机制也可以理解为一种 Token 分发机制,也会吸引到众多参与者,所以插槽拍卖也可以相当于是另类的公募,为自己的项目宣传和造势。 只是从我们 Polkadot 生态研究院的角度来看,客观来讲,对于有些项目方来说,宣传作用远大于实际作用,有可能会抢到了平行链插槽,而实际自己的项目对于跨链的需求可能早期来说并没有那么大的需求,但若是为此付出了巨大的成本,是否会得不偿失呢? 不同的项目,发展的节奏不一样,比如 DeFi 类的项目如果获得了平行链插槽,它们可以很快的落地,并运用起来。但是对于一些基础设施类的项目,当下还在完善自己的基础设施,还没有什么应用落地,即便早早地获取了平行链插槽,也没有多大实际作用。不妨考虑下,就用平行线程作为早期过渡,等到自身发展成熟,生态开始做起来了,再考虑去竞拍平行链插槽,是否会更合算一些呢? 对于生态参与者的意义 而谈到波卡生态社区的建设者,对于那些从几年前就开始关注波卡的人来说,一方面插槽拍卖可能会拉高 DOT 价格,另一方面也可以通过 PLO 的方式为自己看好的波卡项目投上一票,不仅可以收获价值,还能成为项目背后真正的「币东」(类似于股东)。 插槽拍卖采用的 PLO 方式对于普通用户而言,可以说是真正意义上的「价值选择」,因为相较于两三年前的 IXO 方式,PLO 不会让我们损失手上的筹码,仅仅是沉没成本的风险,毕竟「赔了夫人又折兵」的买卖实在不受待见。 综合来说,波卡插槽拍卖让波卡、波卡生态项目和波卡生态参与者都能在其中找到一些意义,而这些意义和价值又会映射到波卡整个发展中,这也是为什么插槽拍卖能够大红大紫的原因,我们相信这将成为一次「三赢」的盛宴。 平行链插槽拍卖可能会带来的新商业模式 波卡平行链插槽拍卖是一种新的机制,会带来新的供需关系以及利益分配,我们认为未来会围绕这个机制诞生出许多新的商业模式,也会带来一些新的功能和商业形态,据此我们可以推演出一些可能会带来的现象,以供参考。 平行链插槽使用权租赁 随着波卡的价格一路攀升,成为平行链所需要的资金体量会非常高,让许多想要使用跨链功能的项目难以竞争上,又或者望而却步,选择平行线程。而另一方面,对于一些有资金优势的项目能够抢到平行链插槽,但并不意味着这些项目对跨链需求很大,由此也会带来供需不匹配的问题,导致旱的旱死,涝的涝死。 这样的情况其实在现实中也有,比如房地产,有人有多套房子,有人还没买房,但是对住房的需求又是刚需,于是便出现了租房的情况。同样,对于波卡来说,或许今后会出现一些新的机制或工具,帮助那些对于跨链功能用的不多而又已经拍下插槽成为平行链的项目方,将使用跨链功能的资源再分配出去,也可获得额外的收益。 值得注意的是,尽管官方也有平行线程让许多没能竞拍到插槽的项目提供同样安全可靠的跨链功能,但是平行线程是按区块收费,成本比平行链插槽要更贵一些。所以,已经获得插槽的平行链可以打一打价格战,将资源转化为收益,这是一个十分值得考量的商业模式。 释放锁在插槽拍卖中 DOT 流动性的机制 要获得波卡平行链插槽是需要锁住 DOT 的,对于这部分 DOT 来说,本身只是损失锁仓期间的机会成本和流动性。那么,这部分 DOT 真就只能这样一直锁住了吗? 其实不然,在现实生活中,像这种已经有明确资产或者资金流水的前提下是完全有解决办法来释放流动性的。最简单的就是抵押借贷,证明你自己的资产是被智能合约锁在了波卡上,就好比是拿着房产证证明自己有房产一样,这样便可以找金融机构做房产抵押借贷。 因此,如果有项目方专门做这个解决方案,或者 DOT 持有者所参与的这条平行链的项目方也提供了这样的解决方案,对于 DOT 持有者来说,将锁住的 DOT 支付一点资金成本便可释放流动性,如此将自己资金的使用率做到更大,并从容的管理自己的资产是十分有必要的。 未来,如果波卡的价格节节攀升,平行链数量越来越多,被插槽拍卖机制锁住的 DOT 的价值也越来越高,而释放这部分 DOT 流动性的功能所涉及到的资金体量很可能达到千亿级别,这应该会成为许多波卡生态项目盯上的一块大肥肉。 平行线程相关场景 平行线程的机制,简单来说每个项目方可以根据自己使用跨链的情况而支付成本,随用随付,这个机制同样需要一定数量的 DOT (当然它远小于平行链所需的 DOT),因此,平行线程里的 DOT 也会有流动性的需求,适用于我们刚刚提到的第二种商业模式。 另一方面,平行线程的机制又与平行链不同,它是随用随付,具体来说,是将所需的跨链交易打包进区块,但是每个区块又只能执行有限的数量,所以,这里也存在一个小小的竞拍,价高者优先,对于不那么急切的人则可以选择慢一点但是便宜一点,这里就存在一个新的市场,通过判断竞拍中的价格和排队情况,来辅助大家根据自己的需求来选择怎样的费用和转账速度。(这部分详见官方 wiki,具体情况有待波卡的落地和进一步的发展) 联合竞拍插槽 如果选择平行线程虽然门槛低,总体价格便宜,但是它是随用随付,按单笔交易来计算,单价是比较贵的,如果项目方对于跨链需求高,但是又没有竞拍到插槽,那么用平行线程的方式也是一笔不小的费用。 所以,也许以后大概率会出现几个项目方组成一个小联盟,联合竞拍一个插槽,这样会更划算一些。 围绕 PLO 的中心化与去中心化博弈 鉴于平行链插槽拍卖所需的 DOT 比较多,一些早期投资人或者在二级市场大量购买 DOT 的人,逐渐成为 DOT 巨鲸,这些人有的会长期看好波卡,选择将 DOT 去做 Staking ;有的人看好波卡生态项目,会选择自己看好的项目去参与其 PLO,但是也有的更看重流动性,会选择自己组建一个 DOT 池,满足各类项目方对 DOT 的需求。 这可以理解为成立一个 DOT 的银行,而对 DOT 有需求的项目方则好比是想向银行贷款的企业一样,而这样的中心化组织可以形成合力,获得更强的势能和信用,并借此可以获得一些稀缺的筹码,好比是银行做理财或者银行去做投资一样。 这是有利于生态发展的,但是这里也有一些问题,如果这样的 DOT 池只是少数巨鲸组合起来的,那么对于那些想要 DOT 去实现 PLO 的项目来说,自己项目的 Token 就很难惠及更多的人,不那么去中心化。 事情的发展往往阴阳相生,一定会有一批更崇尚去中心化的开发者,开发出一些机制使得 PLO 尽量做到去中心化,与中心化的机制博弈,最终可能会演变成 PLO 的常用工具。 小结 以上只是我们主观的观察和推测,实际情况如何还要看后续的发展,不过我们依然愿意分享出来,一方面可以帮助有心的开发者或者参与者提供一些思路,另一方面如果真有这些情况发生,也丰富和完善了波卡生态,这是皆大欢喜的。 当然,对于持有 DOT 的人来说,如果有发现这些现象发生了,也可以提前布局,获得一些红利,比如某个项目真的去实现了如我们所说的一些商业模式,并发行了自己的 Token,那么看过本文的朋友便可以更清晰的了解这些商业模式背后的市场规模如何,可以提前参与获得早期红利。
8、波卡平行链插槽拍卖明日开启,万字攻略教你如何正确参与? https://news.huoxing24.com/20211110192824633672.html 6月15日,波卡的金丝雀网络Kusama迎来了第一次平行链插槽拍卖,随着长达五个月Kusama平行链的运营和研究,我们终于迎来了波卡平行链插槽拍卖的重要时刻。 10月,在波卡上开启平行链拍卖的motion 118被Polkadot理事会投票通过,从2021年11月11日开始,我们将开启第一次波卡平行链插槽拍卖。这是一个极具有里程碑式历史意义的事件,标志着波卡生态系统结束了漫长的探索期,Web3.0时代不再仅仅是一个理想的蓝图,波卡构想的“万链互联”也会在未来的一年里进入飞速的发展。 而对于生态的众多探索团队来说,通过连接具有前瞻性技术的波卡主网,不仅可以享受到中继链所带来的共享安全性及与其他链的互通性,还可以获得庞大的用户社区和数十亿的价值流动性。 毫不夸张的说,波卡平行链插槽拍卖是在万众期待下开启的。然而对于波卡生态项目的用户而言,虽然“插槽拍卖”并不陌生,但是参与其中的项目始终带着些许“神秘面纱”。为此我们希望通过简单的介绍,让大家对本次波卡平行链插槽拍卖及参与方有一个初步的了解。 插槽拍卖的规则是怎样的? 有了Kusama之前的插槽拍卖示范,波卡平行链插槽拍卖的规则似乎更加的易于理解。 本次平行链插槽拍卖共分为两轮: 第一轮:共5次拍卖,从2021年11月11日开始,每次为期7天,每7天开启一次新的拍卖,租赁期为Lease 6到Lease 13(Lease 6从12月15日开始)。 第二轮:共6次拍卖,从12月23日开始,每次为期7天,每14天一次,租赁期为Lease 7到Lease 14(Lease 7从2022年3月9日开始)。 一次拍卖期会经历7天的时间,前两天是出价期,后5天则是随机结束的蜡烛期。一旦拍卖开启,参与平行链插槽拍卖的团队的Crowdloan模块就会自动出价,Polkadot JS的页面会显示出当前区块出价最高的平行链项目,社区用户可以在整个拍卖期间对支持的项目进行贡献以帮助项目在拍卖期间赢得插槽。 波卡平行链插槽拍卖与Kusama有何差异? Kusama作为先行网是为波卡去打好基础的,所以波卡与Kusama在代码层面上基本没有什么差异,但是我们关注这次的平行链插槽拍卖并不只是简单的看波卡插槽拍卖规则上的一些差异,更多的还应该看项目方、市场情况、筹码分布等场外因素的差异,明辨这些差异,才能更好地参与这次平行链插槽拍卖。 1.规则上的差异 首先是波卡平行链插槽拍卖规则上的差异,这里差异并不多,主要体现在平行链租期上,每个波卡平行链插槽的时长是两年(96周),被分为8个租赁期,每个租赁期为3个月,所以波卡平行链插槽的租赁期时间是三个月到最多两年。 而Kusama上的租赁期会短一些,也是分为8个租赁期,但是每个租赁期只有6周,所以Kusama平行链插槽的租赁期时间是6周到最多1年。之所以Kusama会更快一些,也是因为官方希望这些平行链的状态转换发生的更快一些,这样才能作为先行网提前验证一些情况,以确保波卡能顺利运行。 而Kusama的后续安排也为波卡的平行链插槽拍卖提供了一个前瞻。Kusama上目前暂定的是总共会有48个通过拍卖分配的平行链同时运行,按照每周进行一次插槽拍卖,48个平行链是48周,刚好是一年的时间,此时第一个和第二个Kusama平行链插槽就刚好到期,正好可以接着新一轮的拍卖。 波卡是否会采取同样的方式呢?从目前来看是很有可能的,因为尽管第一轮的插槽拍卖是5个插槽每7天一次,但是第二轮的插槽拍卖则是每14天一次,每次拍卖7天,第二轮总共6个插槽。根据Kusama的情况来看,波卡以后也会很可能遵循第二轮的规则,每14天一次,每次拍卖7天,以两年为周期运行,正好可以让第一个插槽到期。 不过Parity推荐了一种保守的平行链推出方法,建议合理的方法是确保在代码成熟之前,加入波卡的平行链总数不超过75%在Kusama上运行的数量。如果出现任何意外和重大问题,波卡可能需要暂停拍卖,直到这些问题得到解决。所以,更有可能的是,波卡运行的平行链数量会暂定为36个。 另外,Kusama平行链插槽拍卖算是一次先行试水,当第一轮5个插槽开始拍卖的时候,大部分人都认为短时间内就只有这么多个插槽,所以在竞拍第一轮前五个的时候,许多项目Crowdloan的参与者基本都是全情投入的状态, 以至于前五个插槽的竞拍数量差异很大。等到第二轮的第6-10个插槽时,才更显得势均力敌。 并且,KSM最初是早期DOT持有者以1比1空投的方式发放的,所以KSM与DOT的分发方式和筹码分布都不同,DOT筹码分布会更加分散。同时,许多参与者并不打算参与先行网的平行链插槽拍卖,而是只等着参与波卡的平行链插槽拍卖。 这些基本情况的差异决定了Kusama平行链插槽拍卖的结果会与波卡的情况有许多不同之处。因此,如说按照Kusama的排行来预估波卡上参与平行链插槽拍卖的项目的排行可能就会有一些误差了。 2.项目方情况的差异 (1)参与的项目方不同 参与竞拍的项目也有不同的情况,一些项目方只打算参与Kusama或者波卡的平行链插槽拍卖,而不是两者都参加。又或者经历过Kusama平行链插槽拍卖后,有了前车之鉴,并不打算去竞争,所以可能会选择避其锋芒不在前几个插槽上过度竞争,而是在后续的插槽拍卖中再参与。 (2)项目方的激励方式不同 与波卡一样,大部分项目方在波卡的平行链Token是有融资的,但是在Kusama的先行网上的则不同,又或者,项目在早期是并没有想过做一个Kusama上的先行网,于是在之前就把波卡上的Token通过一些机制比如锁仓挖矿等等,分发出过一部分筹码,因此这些项目方也会有筹码分布不同的情况。 其次,各项目方在Kusama先行网上的拍卖策略并不一定是最优,会吸取在Kusama上的教训,并在波卡平行链插槽拍卖上做出一些调整。 另外,获得插槽拍卖并不只有Crowdloan这一种方式,也可以是团队自己的DOT来参与,一些项目方本就是波卡的早期投资者,所以这些项目方手上的DOT也会是他们成功获得插槽的保证之一。 因此,基于以上几个原因,各项目方在波卡上的平行链Token拿出来作为Crowdloan激励的比例不一样,也可能方式上也不一样,需要注意其差别。 (3)市场反馈的差异 这次插槽拍卖会有更多的聚光灯效应,也就是会获得更多的关注。首先从交易所的热情程度也看得出来,以Binance、OKEx为代表的一众交易所开始推出各种活动和机制大力支持这一次波卡的平行链插槽拍卖,并根据自身的优势,推出了一系列的AMA、Crowdloan模块和相应的激励政策,Binance还为参与者提供释放流动性的BDOT机制。 其次,由于之前赢得Kusama平行链插槽的一些项目已经将一些Crowdloan奖励发给参与者了,并且这些先行网的Token也已经上线可以交易,很自然的参与者们是能体会到Crowdloan所带来的红利,同时,参与者也能直观地感受到哪个项目给到他们的红利会更多,这会激励更多的人在波卡平行链插槽拍卖时参与其中。 或许跟波卡在许多人眼中是一个更正式的版本而Kusama是先行网有关,波卡的平行链插槽拍卖所带来的热度比Kusama的声势要更加宏大。不过不管怎样,对于参与其中的人和项目方来说,经过Kusama上的初次实践后,波卡上的平行链插槽拍卖总会显得更加游刃有余,心里也更有数,基于此,我们再来看看参与波卡平行链插槽拍卖应该采取怎样的策略。 波卡平行链插槽拍卖的策略 1.收益的计算 首先我们需要明确,收益的多少取决于怎么计算。 简单的计算方式是假如参与插槽拍卖的项目获得了插槽,如果参与该项目的Crowdloan所获得的Token在价值上是超过DOT在这两年锁仓期内的Staking收益,那么参与该项目的Crowdloan就是明确的选择。如果这个项目的Token没有跑赢Staking收益,那参与该项目的Crowdloan就是亏损。 如果参与了某项目的Crowdloan,但是该项目没有获得插槽,那么会损失这段时间以来如果将这部分DOT拿去Staking的收益,但不会损失DOT本身。 不过,还有更复杂的计算方式,就是要把时间的因素考虑的更细以及更多的奖励机制考虑进去。 大部分项目对于Crowdloan的激励会采取线性释放的方式,或者是先释放一部分,剩下的一部分选择线性释放。 所以,复杂的方式就要考虑是等到Crowdloan的Token在两年后全部发出来之后再去变现,还是说在初期累计一定量的线性释放后的Token就提前通过变现的方式回笼奖励,以及将参与Crowdloan的DOT通过一些释放流动性的机制变现一部分,将这两部分的资金进行再利用。 比如用于新的平行链插槽拍卖,参与之后,可以继续利用这些释放流动性等操作再将一部分资金释放出来,以此类推。 不过这种连续释放流动性的方式会在无形之中增加自己资金的杠杆,以及中途带来的一些损耗,所以还需要酌情使用。 比如Acala就可以释放参与Crowdloan的DOT的流动性,获得lcDOT,lcDOT可以兑换成dot,进而进行更多的操作,不过目前Acala仅支持参与Acala贷Crowdloan的DOT的流动性释放,后面极有可能会开通支持其他项目Crowdloan的DOT的流动性释放。 另外,还要考虑一些项目方与其他平台合作所带来的额外的收益。比如通过一些第三方的平台参与Crowdloan,会获得额外的这些第三方提供的Token或者其他激励,这就需要针对性去找自己心仪项目的客服去了解具体参与的渠道有哪些,各渠道的奖励有哪些,然后再看不同的奖励所带来的收益如何。 2.参与的标的选择 ①如果只是想短期获利,就要多考虑短期有热度,能够确定拍中插槽,并且有初期释放Crowdloan奖励的项目。不过需要稍微注意下,这些项目的筹码分布,早期投资机构的Token解锁机制是怎样的,项目早期是否有额外的筹码释放等等。 ②但如果想要长期获利,就要考虑项目在两年的发展后会达到什么样的高度。这就需要进一步对项目进行尽调,要了解项目的基本情况,团队实力,资本支持,以及当下的运营情况,运行的数据等等。 尽量选择定位的赛道很广,发展空间很大,有很强的可扩展性的项目,以确保该项目的上限比较高。同时,也要选择其中团队实力强劲,运营能力很强,资源比较广,资本实力雄厚的项目,以确保该项目的下限不低。如此便能更好地保证自己获得不错的红利。 目前来说,能够支持EVM的智能合约平台类型的公链风格,都算是可扩展性很强的项目,这里不能看各个项目的宣传是怎样的定位是怎样的,要更多的看它是如何实现的,比如像Acala尽管定位是DeFi中心,但是它是支持EVM的,也可以支持链游和NFT,所以Acala是属于公链的逻辑。 不过也有一些项目是走的应用链的风格,这就要多考虑一下它的应用方向有多大的市场,是否有技术门槛,是否其他项目也能做,项目方的运作是否能够增强项目的可扩展性。以此来判断应用链类型项目的前景。 (有的朋友会嫌麻烦,但是将自己的DOT锁仓两年,这还是一个比较重要的事,多花点心思是十分有必要的。)
3.参与的时机 至于参与的时机,我们在之前Kusama平行链插槽拍卖后做了一个复盘,对于想要拍到插槽的朋友来说,第一轮的头两天最重要。回顾一下我们在文章《详解Kusama第二轮插槽拍卖的机遇与策略,哪些团队值得重点关注?》中的观点: 波卡和Kusama网络是采用的“2+5”的蜡烛拍卖机制,拍卖以两天的初始竞标期和五天的结束期开始。前两天的竞标期是正常的出价时间段,之后的第三天到第七天是一个长达五天的结束期,这一段时期执行的是蜡烛拍卖的机制,也就是说在后面五天内,虽然也可以增加筹码,但是拍卖可能随时结束。 结束时间是在最后一天才可以知道,是随机的通过追溯在最后五天结束期的哪一个区块截止,在结束前获得最高票数的项目方会成为赢家。 所以,对于项目方来说,要想赢得插槽拍卖,最好的方式便是在一开始就把自己所有的子弹全部打完,将手中的筹码在竞拍开始的第一时间就投进去,因为前两天的竞标期也是有个展示效应的,第一时间的排行会影响那些还没有参与Crowdloan但是打算参与Crowdloan的人们手中的DOT的,所以第一时间秀肌肉是很有必要的。 但是对于打算参与Crowdloan的人来说,最合适的参与时机则是在第一个插槽拍卖的前两天的最后几小时,因为此时,项目方不仅已经把该亮的底牌全亮完了,找额外的外援也基本上落实到位了,所以在前两天最后几小时的排名,会是决定前几个插槽花落谁家的一个预告版,此时再在其中选择排名靠前的项目,基本就能稳稳获得插槽。 最后,打算参与Crowdloan的参与者可根据自己的实际情况,基于上述三点得出自己专属的波卡平行链插槽拍卖的策略。
平行链插槽拍卖参与方式? 我们在上文详细的介绍了波卡平行链插槽拍卖的规则与现状。那么除了官方参与方式和钱包类参与方式,普通用户该如何参与其中呢?我们对当前较为高效的方式进行了梳理,分为中心化和去中心化两大类分别为大家进行简单的介绍。 1.中心化参与方式 首先,用户可以通过诸如Kraken、Binance、OKEx、Kucoin、Gate、MEXC等中心化交易所参与Crowdloan,并获得交易所给予用户的双重奖励。随着波卡平行链插槽拍卖的临近,众多交易所开启了预热活动。 OKEx为Acala、Astar、Moonbeam等三个项目进行了早鸟投票。Binance在11月4日开启了Moonbeam、Clover、Litentry、Bifrost、Efinity、Parallel、Astar、Acala、Manta九个项目的支持通道,并提供了3000万美元的等值奖励。 交易所的参与在一定程度上提高了用户的积极性,并提高了Crowdloan的效率。对于交易所、波卡生态系统和项目方而言可以说是三方的共赢。 2.去中心化参与方式 除了通过交易所,普通用户还可以通过波卡官方的Polkadot JS参与,同时想要获得额外奖励的用户则可以通过Zenlink、Parallel、Bifrost等去中心化的方式参与Crowdloan,以释放更多的流动性。 Zenlink是一个基于Polkadot的底层跨链DEX协议,致力于成为Polkadot的DEX组合中心,它可以连接Polkadot上所有的DEX并聚合流动性,为用户提供低滑点的交易体验。 在Kusama平行链插槽拍卖时,Zenlink结合波卡插槽拍卖而构建的去中心化PLO支持应用SlotVault为参与Crowdloan的用户带来了额外的激励,释放流动性并且保障了资金的安全。虽然当前Zenlink还没有官宣波卡平行链插槽拍卖的激励政策,但是后续会支持波卡上的平行链插槽拍卖,需静候佳音。
而作为去中心化Money Market的Parallel更是针对Crowdloan上线了Auction Loan。通过Auction Loan参与Crowdloan,用户可以赢取高达40%的早鸟奖励。并一站式的获得多个Crowdloan项目的多层奖励,从而实现Crowdloan参与的最大收益。当前Auction Loan支持Acala、Parallel、Manta、Aster、Litentry等项目。 Bifrost是波卡生态系统的DeFi基础协议,为质押资产提供流动性。在本次波卡平行链插槽期间,Bifrost在Polkadot上部署了SALP,也就是Bifrost Dapp Dot Slot模块中开启了Derivatives vsDOT+vsBond的铸造模式,并支持首届Polkadot平行链插槽竞拍的项目 Acala、Astar、Manta、Litentry等项目的Crowdloan。除了获得vsDOT带来的流动性之外,用户每通过SALP投票项目将会额外得到0.035枚BNC。 如何在Crowdloan最大化收益并且获得最大的流动性俨然变成了用户需要用心考量的问题之一,关于更多去中心化的参与方式,读者可以参考我们之前详细的总结性文章:《除官方渠道外,普通用户如何高效及多样化的参与Crowdloan?》
9、我们离波卡生态应用爆发还有多远,又该如何破局? https://news.huoxing24.com/20211213113806825599.html 大概一周前Kusama的第15个平行链插槽Auction结束,这意味着Kusama的第三批插槽的4次Auction已经全部结束,第四批次插槽也顺势开启,在经历长达5个月的拍卖后,Kusama已经进入了比较稳定拍卖节奏,接入中继链的项目也稳定运行着,可以说这几个月的拍卖和接入验证了平行链的效用。 因此,当我们回看波卡插槽当前的拍卖节奏时,会发现几乎与几个月前的Kusama如出一辙。同时,波卡插槽第一轮的第三个Auction也在顺利推进着,第三位波卡平行链悍将即将诞生,当然,这一轮的竞争也略显焦灼,可见市场热情依然值得关注。 按照既定计划,第一轮的5条平行链将在12月18日左右接入中继链,并以平行链的方式出块,可以说这一刻的历史意义不亚于去年波卡主网的上线,甚至在波卡发展历程中足以留下浓墨重彩的一笔。 另外,我们也看到诸多公链在Dapp方面展现出的活力,尤其是DeFi、NFT和最近大热的链游,都给不同生态带来了新的动能,沿着该思路我们不禁思考,平行链开始运行后,波卡生态何时会迎来应用的爆发,又会以怎样的方式在应用层面展现独特的创新,由此我们展开了本文的叙述。 一条公链怎样快速爆发生态? 在公链集体爆发的2012年,似乎要迎来“百花齐放”的局面,我们可以回顾下这一年来所经历的公链潮。 在2021年初,随着Crypto市场回暖,ETH的DeFi生态再次发力,但是由于以太坊自身的硬伤制约了DeFi的发展,使得其他公链迎来发展生态的契机。在今年的第一季度,作为去年9月才刚上线的去中心化公链,BSC上爆发了一系列高质量的项目,其交易量已经超过了以太坊。 除此之外,还有亮眼的Polygon,通过与Aave开启联合流动性激励计划,让Polygon在很短地时间内获得了大量的TVL,并吸引众多成熟项目在其上部署,迅速做到了冷启动。 而今年8月,Avalanche基金会宣布将推出1.8亿美元的流动性挖矿奖励计划Avalanche Rush,并与知名的优质DeFi应用合作,鼓励更多应用和资产加入蓬勃发展的Avalanche DeFi生态,这一动作引得Avalanche的锁仓量节节攀升。 随后Fantom也依葫芦画瓢开启了自己的公链激励计划,在Yearn Finance的创始人同时也是Fantom技术顾问的Andre Cronje的疯狂打Call下,Fantom得到了巨大的关注和支持。几乎同一时间另一条公链Celo也故技重施,整个8月掀起了Avalanche、Fantom、Celo等代表的公链发展新浪潮。 但另一方面,在最近几个月链游的强势崛起也不得不让我们多多关注链游对公链生态的影响。 据上周最新数据显示,区块链游戏项目Axie Infinity在过去30天的总收入达1.9亿美元,而像Axie这样的P2E(Play-to-Earn,边玩边赚)类型的游戏总市值已创下历史新高,突破300亿美元。链游已经成为一种不可忽视的发展趋势了。 不过尽管如此,我们还是得辩证地来看链游。虽然Axie Infinity现在是单独做了一条以太坊的侧链Ronin,并且其TVL已经有14亿美元,但是其早期的发展还是在以太坊,但是我们发现在Axie Infinity并未带动以太坊自身生态的发展,反而是验证了链游这套逻辑,并激励了许多其他公链比如Wax上的游戏的发展。
链游自身的一些特性不同于DeFi,我们需要拆解一下看得更清楚。 首先链游没有像Substrate框架这样为开发者提供便利的工具,高质量的游戏需要花费大量的时间设计。其次,不同于传统的游戏,下载App或客户端完成注册后就能开启游戏之旅,链游的机制不得不提高了玩家的使用门槛,传统玩家至少要学会使用数字资产的工具才能够逐渐转化为链游玩家。 更重要的是,游戏的机制往往比较复杂,会涉及到许多专门针对游戏性而进行的设计,还包括一些角色培养、通关副本等等耗时耗力的设置,这些因素都会导致链游需要花更多的时间,并且会限制当个账号的资金容量。 因此,链游并不能像DeFi那样可以通过大户或者巨鲸的入驻,进而使项目快速发展。所以,尽管目前的市场表明,链游发展前景广阔,但是链游并不适合作为一条公链通用的冷启动方式。 综上所述,纵观整个Crypto行业,“公链激励与DeFi结合”逐渐成为了目前快速爆发生态可行性最高的方式,并且这种方式也已经得到了验证。新公链生态规模的不断扩大,虽然我们不能说生态爆发的有效路径只有这一种,但是有一个样板间的优质项目已经用实践证明了,只能说“链激励+DeFi”是目前可行性最高的方式。
波卡生态上的应用会以怎样的形式爆发? 1、基于公链激励 鉴于之前所说的公链激励中并没有技术上的门槛,并且也已经多次被验证过可行性,我们完全有理由相信兼容EVM的平行链也是可以基于上述逻辑复刻一个公链激励的,如果能找到一个知名的DeFi项目(AMM或者借贷)联合推出激励是最好的(参考Polygon与Aave),或者扶持自身生态内的一些不错的DeFi项目(AMM或者借贷)。 目前在Kusama上的先行网Moonriver已经有许多项目在其上进行部署了,顺利度过了冷启动阶段,俨然形成了一个小生态。并且现在Moonriver的TVL虽然从4亿美元回落到3亿多,却已经超过了许多以前的老公链了。 值得注意的是,Moonrvier也确实在实践公链激励计划。11月5日,Sushi和Moonbeam在Moonriver上为Sushi创建了跨链集成和联合流动性挖掘计划。效果立竿见影,当天TVL就开始上扬,在Moonriver上的Sushi很快便获得了8千万美元的TVL,并助推Moonriver的TVL从2.7亿美元突破到4亿美元。 目前仅有Sushi获得来自Moonbeam基金会流动性加速计划的激励,总共分配了25,000个MOVR至挖掘收益当中,但在流动性加速计划中,仍然有约975,000个MOVR会在未来分配给其他项目。 Moonbeam也获得了波卡的第二个平行链插槽,而在12月份Moonbeam很可能会链接到波卡中继链上,以及Moonrvier将会迎来Chainlink、Moonriver上推出“ERC20类型”的KSM、dTrade、Lido等知名项目的部署。 Moonbeam/Moonriver将会是一个很好地为我们展现公链激励计划会怎样助推某一条平行链实现生态爆发的样本。 届时,其他波卡平行链也可以借鉴同样的方式,并迅速点燃其他所有平行链,迎来波卡生态的大爆发,当然这里的前提是这些平行链在开发上是足够成熟的,能够承载生态项目的顺利运行。 图片: https://uploader.shimo.im/f/GPuMolFGdmJZvKHF.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0
2、波卡特有的爆发路径 除了上述逻辑之外,还有波卡独有的一些场景也会带来让生态应用爆发的可能,我们主要关注资金扩容情况和跨链场景的打通,两者或许会成为波卡特有的生态发展路径。 资金扩容 波卡通过将成熟的公链,比如比特币、ETH、Filecoin等公链接入到自己的生态中引发的资金量的增量扩容。可以让一些成熟的拥有巨大资金体量的资产项目部署到波卡,而USDT/USDC都已表达过要接入波卡。 另外通过一些跨链应用比如Anyswap将一些其他链上的资产跨到波卡生态来,像Anyswap已经实现将USDC跨到Moonriver上。所以,当市场扩容时会让最能接住这些扩容资金的项目上的生态获得爆发的可能。 跨链场景打通 目前,由于XCM版本更新频繁,多条平行链在版本确认和XCM对接调试方面的进展比较缓慢,这也是为什么Kusama上已经上线了多条平行链却依然只看到Karura和Bifrost是目前唯一可以互操作的原因。 所以,当XCM足够成熟后,我们将会看到更多的平行链之间可以互操作,这部分互操作的流动性既可以赋能波卡也可以赋能那些能捕获跨链场景价值的应用。 Zenlink便是其中之一,Zenlink是一种波卡生态特有的分布式区块链网络应用,通过提供通用的DEX模块,从而可以让所有平行链都可以快速部署DEX,并且可以将这些不同平行链上的DEX打通,让他们中的流动性可以跨链互通。 所以,当跨链场景打通后,跨链的应用便如鱼得水,开始大力发展生态了。诸如此类的还有RMRK在做NFT方向的应用拓展,而未来波卡生态中将会有更多这样的分布式区块链网络应用诞生,也将会更好地捕获跨链的流量,迎来这些生态应用的爆发,横向地为波卡的各个平行链赋能。 当然,我们这里的描述都是基于波卡现状来分析,或许在生态发展中还会有意想不到的局面发生,而这也是生态发展的魅力。
后记 当我们回看波卡平行链时,我们需要从架构上来简单理解,因为其结构上的一致性,这意味着如果一条平行链因为某种运营方式成功启动了生态,并激励其生态应用的大力发展,那么,这种情况大概率能够复刻在波卡其他平行链上。 这正如公链潮一样,因为某个项目点燃了火花(此处主要指今夏公链TVL激励),后面的公链就学着复刻,由此才有了“新公链热潮”,同理,波卡生态极可能有同样的故事发生。 还有半个月左右的时间,波卡的第一批平行链就会集体在中继链上亮相,届时,谁能先跑出一个范例出来,就会如同星星之火一般,迅速点燃整个波卡生态。 尽管有人批判波卡打基础很慢,但是我们需要明白,一旦打好基础,生态发展速度将会几何级数的增加,以太坊如此,波卡也会如此,或许在接下来半个月,波卡生态要扬帆起航了。
1、万字长文说透 Polkadot 架构 https://www.chainnews.com/articles/510042529116.htm 本次分享的主标题是 Polkadot 架构解析,副标题是下一代 DApp 开发技术评述。其实副标题更能概括本次分享,因为我们不只讨论Polkadot,而是要相对全面地评述平台型公链,包括以太坊 2.0、Cosmos 等,当然 Polkadot 是重点。 我希望讲清楚 DApp开发技术的走向。这是区块链行业发展的核心问题之一,它不仅对开发者重要,而且会影响到其他行业参与者。因此我尽量讲得直白浅显,争取让非技术背景的听众也能大体听懂。
DApp 为何重要? 我先从 DApp 本身说起,因为来龙去脉很长。最后还是决定简要地谈谈,否则逻辑上不完整。 DApp 是 Decentralized Application 去中心化的互联网应用。例如比特币就是一个DApp,它是去中心化的价值存储型加密货币。去中心化的概念比较复杂,V 神有篇文章说明了去中心化有架构、治理和逻辑三个维度,大家可以找来看看。 从使用者的角度看,去中心化可以简单理解成,不能被个别或者少数参与者所控制,因此值得信任的应用属性。区块链是实现 DApp 的主流技术手段,或者说区块链是DApp 的基础设施。 App 和普通的互联网应用的差别就在于去中心化。那么去中心化为什么重要?为什么值得众多 IT互联网从业者参与其中?它是不是个伪需求伪概念? 回答这个问题最清楚的,是 a16z 的合伙人 Chirs Dixon,他在 2018 年 2 月发表文章题为《Why Decentralization Matters》,就是去中心化为什么重要。 要理解他的观点,首先要了解什么是网络效应。网络效应是指产品或服务的效用随着用户增长而增加的机制。例如微信,用得人越多,它的功能就越强大,越不可或缺。互联网应用的核心就是建立并维持网络效应,谷歌、亚马逊、BAT等巨头的业务,都是建立起了强大的网络效应,使得后来者难以逾越。 Chirs认为互联网平台要建立网络效应,都是要千方百计的吸引用户、吸引开发者和商家等等。但是在突破了关键规模之后,平台的吸引力越来越强,它的控制力也越来越强。比如现在做电商,如果不依托于天猫、京东或者微信,几乎不可能成功。因为他们已经形成了巨大的网络效应,用户和商户都被锁定了。互联网平台的运营方都是企业,企业的使命就是利润最大化。当用户和商户离不开平台的时候,平台跟用户商户之间的关系就就发生变化。我们看上面这张图,平台最开始是吸引用户,形成网络效应之后,就开始尽量从用户头上赚钱。 平台跟开发者、内容创造者和商户之间,也从合作逐步走向竞争。例如大家都知道百度搜索结果不是按信息的真实性和重要性排序,而是谁给的钱多就排在前面。最早百度广泛联系各家公司,让大家把信息提交给他,方便用户搜索。现在如果不交钱,公司的官网在百度上就搜不到。百度为了赚钱,把病患导流给莆田系医院。但国内的用户明知如此,还是离不开百度,因为百度的数据最多,对用户也最了解,想想是不是很可怕。 DApp 可以改变互联网平台垄断的局面。因为 DApp是去中心化的,靠公开透明的共识维持的经济体。网络的参与者贡献越大,相应的权利也就越大,但是没有个体能控制全局。 任何参与方要损害其他人的利益,要么是行不通,要么就会引发分叉。DApp 可以长期保持开放、公平,所以大家不用担心过河拆桥,所有人都尽自己最大努力参与建设,并获得回报。有点类似于各尽所能、按劳分配的社会理想。 这才是真正的开放网络,是互联网不应忘记的初心。所以众多互联网大咖都对 DApp 以及实现 DApp 的区块链技术情有独钟,并寄予厚望。 DApp 发展困境 去中心化应用承载着重塑互联网的伟大理想,但是其发展现状非常窘迫,这个也大家都清楚,我简单提一下。 首先是用户极少,例如预测市场 Auger,DApp 领域的明星项目,融资数千万美元,开发历时三年多,上线之后日活用户几十人,而且 Auger 不是个案。 以太坊 DApp 日活用户的前 5 名,最高的也只有千用户级,而互联网的顶级应用日活用户可以达到数亿,差距是 5个数量级。 为什么 DApp 情况如此可怜?主要是因为区块链基础设施不给力,使得 DApp 使用门槛高、用户体验差。就好比以太坊是一条村级公路,收费高而且拥堵,当然就没人愿意走。 以太坊的利用率,可以看到从 2017 年底到现在,以太坊一直是接近满负荷运转。也就是说 DApp又慢又贵,但基础设施已经全力以赴了,没有再提升的空间。 在这样的困境下,DApp 要突破关键规模、创造出网络效应、跟中心化互联网应用竞争,是不可能的,所以必须升级区块链基础设施。
又慢又贵的原因——区块链极度冗余结构 DApp 又慢又贵的根源是区块链平台的架构限制。这个架构限制可以简单概括为:区块链是极度冗余的计算架构。 冗余就是重复,让多台计算机重复执行相同的计算、重复存储相同的数据。冗余是有意为之的,不是浪费。适当的冗余在企业计算和互联网都普遍存在。 最典型的是主从结构,两台差不多的计算机一主一备,执行相同的计算、存储相同的数据。主机出现故障,备机迅速顶上。虽然两台机器干了一台的工作,但是提高了系统的可用性。 但为什么说区块链是极度冗余呢?因为区块链把冗余推到了极限,网络中所有的计算机,不论是几百台还是上万台。都执行相同的计算,存储相同的数据。冗余的程度无以复加。极度冗余意味着极度高昂的成本,成本高到什么程度?V 神给出过估算,就是在以太坊上执行计算或者存储数据,比在商业云平台上完成相同计算或者存储同样的数据,成本高 100 万倍。也就是在普通云服务上花费 100块钱能完成的计算,放到以太坊上去做,需要 1 个亿的成本。所以在考虑什么业务可以做成 DApp,一定要考虑到成本。 但是高可用性显然是不够的,因为它只需要适度冗余就能实现,不需要极度冗余。极度冗余带给我们的新属性就是去中心化。具体地说,去中心化对用户意味着trustless、permissionless 和 censorship ressistancy,就是去信任、无许可和抗审查。 无许可很好理解,任何人想要使用比特币、以太坊,都不需要向别人申请。 抗审查也很清楚,没人能阻止你使用区块链。比如维基解密,世界上最强大的国家恨它入骨,欲除之而后快,但是维基解密仍然能获得比特币捐款。 含义比较模糊的是去信任,英文是 trustless、trust free 或者 trust minimal。我认为最准确的说法是 trust minimal信任最小化。使用去中心化应用,其实隐含了对区块链网络整体的信任。例如使用比特币和以太坊,就要信任比特币和以太坊不会被 51% 攻击。使用 Cosmos 和 Polkadot 就要相信恶意验证人少于1/3。所以去信任的准确含义是,在信任整个区块链网络的前提下,可以不必信任个别矿工或者验证者,也无需信任交易对手。 对于某个应用,如果用户从去信任、无许可和抗审查这三个方面获得的好处,值得花费 100万倍的成本,那么这个应用放在区块链上就是合理的。有这样的应用吗?就我自己来看,目前能值这个成本的,只有价值存储一项需求。 著名的比特币最大化主义者 Jimmy Song说,比特币会成功,而法币和所有的竞争币都会失败。原因是中心化的货币干永远不过去中心化的货币,而去中心化的产品永远干不过中心化的产品。 隐含的逻辑就是,相同的互联网服务产品,成本差 100 万倍,当然干不过。他这个说法是有道理的,但是过于僵化。因为 100万倍的成本差距不是必然的,是可以改变,可以拉近的。 能不能把 DApp 和中心化互联网应用的成本差距,从 100 万倍拉近到 10 万倍,1 万倍,甚至 1千倍。同时仍然保持去信任、无许可和抗审查这三大好处。回答是完全可能,只要降低冗余的程度,就能降低成本。
方法有三类,也就是区块链扩容的三个思路——代议制、分层和分片。 三类扩容思路 1——代议制 第一个扩容思路——代议制,源于人类的古老政治智慧。即民主是好的,但是全民直接民主效率太低。英国脱欧采用了全民公投的方式来决定,但是显然不能所有的议题都搞全民公投。 代议制是人民选出代表,再由代表来议定法律或者重大决议。代议制提升决策效率有两个原因,第一是参与共识的人数大为减少,第二是代表通常是专职政治家,他们有更多的资源和知识来议定国家大事。 用代议制的方式来做区块链扩容,最典型的是采用 DPoS 共识的 EOS。EOS 通证的持有者选出超级节点,21个超级节点轮流出块。跟以太坊相比,参与共识的计算机数量下降了 3 个数量级。 而且以太坊的节点计算能力高低不齐,协议参数设定要兼顾低端计算机。而 EOS 超级节点主机硬件配置和网络带宽有同一的高要求。所以毫不奇怪,EOS 能达到数千tps,远高于以太坊。 EOS 从诞生之日起,就一直处于风口浪尖。加密社区的一部分人严厉地批评 EOS,说它中心化的,甚至认为它根本不算区块链。而支持者认为EOS 的去中心化程度是足够的。用户仍然能够享有去信任、无需许可和抗审查等好处。 那么 EOS 的去中心化程度是否足够呢?我的看法是:有些情况下够,有些情况下不够。取决于是什么应用,谁在使用。 用户和用户差别巨大,只从国籍分,就有美国人、中国人、伊朗人、朝鲜人等等。还有性别、年龄、种族、地域、职业、宗教等等差别。 另外就是一个特定用户,他的需求也是多样化的,例如社交、娱乐、金融、协作等等。大类又分成很多小类,金融里仅仅对货币就有价值存储需求、大额转账需求、小额支付需求等等。 如果把是大部分身家都用加密货币来做长期价值存储,我首选比特币。如果是小额支付,或者打麻将、掷骰子,用 EOS当然也没问题。在区块链世界,从去中心化程度最高的比特币和以太坊,到中心化程度最低的 EOS 和波场。 可以看成是去中心化谱 decenralization spectrum。每条公链,包括后面重点介绍的 Polkadot 和Cosmos,都在谱中占据特定位置,都有机会适用于特定需求。不存在 one chain fit all 一链打遍天下的可能性。 做架构设计就是做折中,有所选择必然就有所放弃。本次分享的核心理念,就是未来的区块链世界是异构的、多链共存的。当然,我也不认为需要几百上千条公链,因为合理的可选位置没那么多。在定位大体相似的情况下,网络效应会消灭弱者。 三类扩容思路 2——分层 分层也称为二层扩容或者链下扩容,就是把一部分交易放到在区块链以外执行,同时仍然保障交易安全。分层有状态通道和侧链两类技术。还有一类二层技术,是把计算密集型任务转移到链下执行,这块与分享主题无关,不再提及。 状态通道和侧链是不同的技术隐喻,但是到了实现层面,其实非常相似。由于 Cosmos 和侧链有很深的内在联系,所以我在这里花点时间,讲讲侧链的原理。 要理解侧链,首先要明白 SPV 证明,SPV 是 Simplified Payment Verification简单支付验证的缩写。为了让计算和存储能力有限的设备能够使用比特币的问题,才有了 SPV,或者叫轻客户端或者轻节点。 手机钱包就是轻客户端,它不必同步全部区块,只需要同步区块头,传输和存储的数据量缩小了 1000 倍。左侧图是 SPV证明的原理,利用了梅克尔树。看不懂没关系,只要记住梅克尔树是区块链最重要的数据结构。 利用它可以只需存储极少的数据,就可以证明大量的事实曾经发生过,而且属于特定集合。就区块链来说,就是只存储区块头,未来就可以验证交易是否存在于某个区块。 侧链方案就是把主链资产通证锁定,在侧链上对应地创造出通证承兑汇票,汇票交易在侧链执行,在侧链上得到汇票的人可以兑换主链通证。具体来看右图的以太坊Plasam MVP 侧链方案。 首先要在以太坊主链上部署 Plasma 智能合约,假定有 Alice 和 Bob 两个侧链用户。Alice 发起主链交易把通证存入 Plasma合约,通证被合约锁定。 侧链的 Operator 发现 Alice 存入了通证,就会在侧链里创建出侧链通证,也就是主链通证的承兑汇票。 请注意侧链本也是区块链,它有自己的共识协议和矿工。 在 Plasma MVP 方案中侧链采用的共识是 PoA 权威证明,就是一个 Operator 说了算,由它记账出块。PoA 当然不是唯一选择,Loom 的Plasma 侧链采用的 DPoS 共识。 存入之后,Alice 就可以在 Plasma MVP 链使用通证,进行支付或者转账。例如她可以跟 Bob玩游戏,输赢通证,可能很快就玩了很多局,产生了大量转账交易。侧链交易只需要侧链的节点达成共识。而侧链的规模通常比主链小得多,因此交易执行更快,成本也低。 侧链区块的区块头,都会由 Operator 提交给主链的 Plasma 合约。不论侧链一个区块含有多少笔交易,是 1千笔还是 1 万笔,主链只发生了记录区块头一笔交易。所以主链上的 Plasma 合约,相当于是侧链的 SPV轻节点,它存储了区块头,从而可以验证侧链交易是否存在。 例如 Alice 在侧链上把通证转给了 Bob,Bob 就可以向 Plasma 合约发请求,包含侧链交易的 SPV 证明,表示 Alice已经把这些通证给我了。 Plasma 合约可以验证转账交易在侧链确实存在,从而满足 Bob的取款要求。这个例子说明了分层方案如何把大量交易转移到链下执行,或者说转移到二层网络执行。
三类扩容思路 3——分片 第三个扩容思路是分片,原理很简单,就是别让所有的节点都执行所有的交易。把节点分成很多组,或者说分成很多片。多个分片可以并行处理交易,总体的处理能力就提高了。 当然还需要一条特殊的链来看管所有的分片,这条一般称之为主链,它要做很多工作,后面再详细介绍。粗略的解释是,如果没有主链,多个分片之间没有联系,那就是完全独立的多条区块链,跟扩容无关了。 分片扩容的基本思路非常简单,但实际做起来则面临很多复杂难题。 分片的难题——验证人选择 首先就是分片之后,每个分片都需要一组验证人。大家看一下这张示意图。 如果在单链上,恶意验证人超过一半,可以攻击系统。分片之后,只要在一个分片内占据多数,就可以攻击这个分片。所以片分得越多,攻击成本越低,也就是安全性降低。 解决的方法是,分片的验证人分组不是固定的,而是随机选取,而且每隔一段时间就重新分组。这样恶意的验证人不能事先知道自己被分到哪个组,而贸然发送攻击会受到惩罚,因此系统的安全性就不会随着分片数量上升线性的下降。 验证者随机动态分组的关键,是要有可靠的随机数,随机数一直是计算机科学中复杂而有趣的问题。去中心化地拜占庭容错地产生可靠随机数难度非常大,也是区块链研究的热点问题。 分片的难题——跨片交易完整性 图片: https://uploader.shimo.im/f/i8g448dGSQKChSxB.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0
在分片的方案中,每个分片上可以运行一到多个 DApp,不论 DApp在不在同一分片,都要能互操作。首先要明确什么是跨片互操作?因为分片也都是区块链,所以跨片等同于跨链。 大家知道区块链可以看成是分布式共识维护的状态机,状态机通过交易执行完成状态转移。跨链的互操作应该引发双方的状态转移,也就是两个互操作的链都执行了交易,而且执行交易之后的状态具有一致性。 或者说一个跨链交易要引起两条链乃至多条链的状态改变,而且这些改变要么都成功,要么都不成功,不存在中间状态。这跟企业计算里分布式交易的概念上非常类似。 只不过传统分布式交易的参与者通常是多个数据库,而跨链交易的参与者是多条区块链。非技术背景的同学可能不熟悉状态机和分布式交易的概念。因为跨链交易的概念对理解本次分享的结论很重要,我再用非技术语言解释一下。 假设你要从工行账户转 1 万块钱到建行账户,这笔转账交易其实就是从工行账户上减掉 1万,在建行账户增加一万。工行和建行各自都有数据库存储账户余额,那么就要有一个机制,保证两个数据库的操作,一加一减,在任何情况下要么都成功,要么都失败。 如果没有这样的保证,工行账户减掉了,建行账户没加上,你少了 1 万块钱,你肯定不干。如果工行账户没减掉,建行账户加上了,你多了 1 万块,银行肯定不干。 这就叫分布式交易的完整性或者原子性。简单吧?其实做起挺难的,因为不论是工行建行哪家的服务器停电、断网、软件崩溃等等,各种极端条件,都要保证交易完整。在区块链上,转账变成了转通证。 某通证发行在 A 链上,通过跨链转 10 个通证到 B 链,跨链交易完成后,A 链上的 10 个通证被冻结了,B 链上多了 10个通证。这两个状态改变在任何条件下,要么都成功,要么都失败。 由于区块链可能分叉,跨片交易要比传统的分布式交易更复杂。如果跨片交易在分片 1 上的部分是在 A 块里被打包,在分片 2 上被 X’块打包。两个分片都可能出现分叉,A 块和 X’ 块也就可能成为被废弃的孤块。也就是跨片交易可能部分成功部分失败,完整性被破坏。 造成跨链交易完整性被破坏的根本原因是,交易的多个部分被打包进区块,但是链可以重组,块可以变成孤块。 说白了就是交易进了区块,但是靠不住,有可能反悔,正式说法是没有明确最终性。最终性 finality 就是区块必然被包含进区块链。 在比特币区块链上,某个区块后面连的区块越多,它被逆转或者说放弃掉的可能性就越低,但是永远不能100% 确定,所以称为概率最终性或者渐进一致性。解决这个问题的办法就是,要有机制让区块具有明确的最终性,不能含糊。
分片的难题——最终性 VS 活性 图片: https://uploader.shimo.im/f/K3cPtCh7CaS8RXoq.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 finalize 就是使区块具有最终性,我翻译成敲定。要使区块具有最终性。简洁的方法就是出块即敲定。Cosmos 的 Tentermint共识就是这样。但是这个做法在特殊情况会出问题。 我们看图,某条 Tendermint 共识的区块链原本正常出口。突然海底光缆断了,互联网被分成了两部分。两部分各自包含一般验证人节点。Tentermint共识要求收集到 2/3 以上的验证人签名才能出块。 被断开后,两部分网络都最多收集到一半验证人签名,所以出块停止了,或者说区块链丧失了活性liveness。有人认为这可以容忍,本来就是特殊情况嘛,那就先停下来,等网络恢复正常再继续工作。 海底光缆断了,上网、打电话、视频会议都受影响,凭什么区块链就不能暂停呢?还有人认为停止出块不可接受,要始终保持区块链的活性。那怎么办呢?办法就是把出块和敲定分开,也称为混合共识。 在刚才说的网络中断情况,在两个分开的网络,节点可以继续出块,但是没有足够的验证人参与进来,所以不能敲定。等网络恢复了,再决定哪些块被敲定,从而活性和最终性兼得。 而且混合共识可以让个别节点轮番快速出块,于此同时,敲定过程可以慢一些,让大量节点参与进来,确保去中心化,提高攻击和共谋的难度,也就是保障了安全。所以混合共识也兼顾了性能和安全。以太坊2.0 和 Polkadot 都采用混合共识。
分片的难题——交易有效性 图片: https://uploader.shimo.im/f/orb1XbzZzXCKalic.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 还有个分片难题是交易有效性。交易有效性问题就是防止无效交易进入区块,成为区块链维护的历史真相的一部分。 举比特币的例子,假如我是超级大矿工,掌握了大部分算力。我想伪造一笔交易,把别人地址上的比特币转给我,能不能做到呢?答案是做不到。 因为这笔交易没有地址对应的私钥签名,是无效的,包含这笔交易的区块也是无效的,不会被其他节点所接受。即便我掌握了大部分算力,可以挖出最长的链,但也只是构建了一个很长的分叉。 众多的比特币钱包、交易所都不会认可我这个分叉。所以 51% 攻击,并不能把谁的 btc 偷走,或者凭空创造出比特币。最多是双花攻击,双化不展开谈了。总而言之,比特币网络不存在交易有效性问题。 那么这样一个十年前就被完美解决的问题,怎么又会出现呢?原因是 btc等公链的节点都拥有全部数据,因此能完全独立地验证交易有效性。现在变成了多个分片,节点只存储部分数据,也就无法独立验证交易有效性。 我们看左侧的图,有两个分片,分片 1 已经被恶意的验证人所控制,在 B 区块里打包了无效交易,例如给自己的地址上凭空创造了很多通证。在下一个区块C,攻击者发起跨片交易,要把通证转到分片 2 上的 DApp,可能是去中心化交易所。分片 2 看到的 C 区块里面的交易都没有问题,而且分片 2 也没有 C区块之前的数据,所以无法验证交易有效性。 下面我们介绍一个在分片环境下解决交易有效性的方案,叫举报奖励。其实还有别的方案,但跟主题无关,就略去不提。 看右侧图,分片 1 虽然被恶意验证人控制了,但是还有至少一个诚实的验证人。分片 2 不能验证跨链交易的有效性,就选择相信分片 1,打包了跨链交易。这时候分片1 里的诚实节点可以要跳出来举报,说区块 B 是非法的,我有证据。 系统接受了举报,就会惩罚分片 1 里的恶意验证人,没收他们质押的通证,并向举报者提供奖励。所以为什么有的区块链,验证人要收回质押的通证,都需要等几个月。主要的原因就是给举报和证实举报留出足够的时间。 以上我们介绍了四个分片的难题,和相应的解决方案。其实分片扩容的难题不止这些,限于时间,就不再列举了。
以太坊正朔——Serenity 图片: https://uploader.shimo.im/f/KS08lrRHLexgrXEu.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 下一代以太坊的 lay1 扩容思路就是分片。关于下一代以太坊,信息很混乱,连名称都不统一,有以太坊 2.0、Serenity、Shasper、Casper以太坊等,我们统一称为 Serenity。 大家看 Serenity 架构图,是台湾资深以太坊研究员王韶为女士制作的。从上往下看,最上面是 PoW 主链,也就是目前运行的以太坊。Serenity不会取代掉 PoW 链,而是以侧链的方式上线部署。 但是长期而言,Serenity 并不依赖 Pow 链,PoW 下面的三层都属于Serenity,而且恰好对应 Serenity 演进的三个阶段。 首先是 Beacon Chain 信标链,主要功能是管理验证人。信标链上线后,如果希望成为 Serenity 的验证人,就把 eth 从 Pow链转入信标链。还是用侧链的方式,信标链在 PoW 主链上部署智能合约。 eth 转入信标链是单向的,不能再从信标链转回 PoW 链。在信标链上拥有 eth,进行质押并运行节点,就可以成为验证人。为了达到充分的去中心化,做Serenity 验证人的门槛很低,只需要质押 32 个 ETH,验证人集合会很大,可以达到几万到几十万这个数量级。 信标链还负责产生随机数,用于验证人分组和出块人选择。信标链执行 PoS共识协议,包括它自己的共识和所有分片链的共识,对验证人进行奖励和惩罚。还有就是作为跨片交易的中转站。信标链预计在今年年底或明年年初上线。 目前有多个团队在进行信标链节点软件开发,有几个团队已经部署了测试网。下一阶段会部署公共的、长期运行的测试网,把各团队开发的节点放在一起进行测试。 信标链往下是多条分片链,图上画的是 100 个 分片。分片链被看成 Serenity的数据层,负责存储交易数据,维护数据的一致性、可用性还有活性,也就是确保总是能出块,不会被锁住。分片链的上线时间还不确定。 分片链的下方是虚拟机,虚拟机负责执行智能合约和转账交易,改变状态,也就是对分片链数据进行读写。Serenity 很重要的设计决策是把数据层分片链和逻辑执行引擎虚拟机解耦。 解耦带来了很多好处,例如可以分头开发,单独上线或升级等等。Serenty 虚拟机将用 wasm,可以提高性能,并支持多种编程语言。 Serenity 如何前面所说的四个分片难题呢?首先是在信标链上管理验证人池,为每个分片链随机指定一组验证人。采用混合共识,验证人轮流出块,采 CasperFFG 敲定最终性。用举报奖励方法保障交易有效性。
Gavin Wood 的新征程——Polkadot 在 web3 基金会和 Polkadot 等项目文档中,对 web3 愿景的文字表述不太一样。但是都包含两层意思。 第一层:web3 是无服务器的、去中心化的互联网。serverless 无服务器也是去中心化的意思,因为在 web3憧憬的网络计算架构里,参与者或者说节点是平等的,没有服务器和客户端的区别,所有节点都或多或少参与网络共识的形成和记录。去中心化的互联网有什么用呢? 就是 web3 的第二层含义:每个人都能掌握自己的身份、资产和数据。 掌握自己的身份,意味着不需要其他人或者组织赋予身份,其他人或者组织也无法冒用或者冻结身份。掌握自己的资产,意味着不会被剥夺资产,可以自由处置资产。掌握自己的数据,意味着每个人可以按自身的意愿生成、保存、隐匿、销毁个人数据,未经他的允许,任何人任何组织都不能使用其个人数据。 web3 愿景并非 web3 基金会或者 Polkadot项目所独有。很多区块链项目,包括比特币、以太坊,都有类似的愿景。名称五花八门,包括开放网络,下一代互联网等等。叫什么名字不重要,你应该思考 web3愿景的内涵,那是不是你想要的互联网? 甘地说过:Be the change you want to see in the world. 我翻译成:迈向你想要的世界。如果 web3也是你认同的愿景,那么就参与进来,为之努力。 Polkadot 是 web3 的骨干网,是 web3 的基础设施,是 Gavin Wood 和 web3 基金会指出的,通向 web3 愿景的道路。 Substrate 是 Polkadot 项目开发过程中形成的开源区块链开发框架,可以用来搭建 Polkadot 生态,也可以用于构建其他目的的区块链。
Polkadot 架构 图片: https://uploader.shimo.im/f/zJUTPrGsBg9MDhq9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 接下来我们介绍 Polkadot 架构,这两张图片都来自于岳利鹏翻译的 Polkadot 白皮书中文版。 先看右边的大图,Polkadot 的基本网络结构是星型的,或者称为轮辐型。星型的中心是 Polkadot Relay 中继链,外围是众多的Parachain 平行链。 再看左侧的小图,Polkadot 网络的参与者有四种角色:Validator 验证人、Nominator 提名人、Collator收集人或者核对人,Fisherman 钓鱼人或者渔夫。 DApp 可以是部署在平行链上的智能合约,或者整个平行链就一个 DApp。用户在平行链发起交易,交易被收集人收集,打包成区块,交给一组验证人去验证。 这组验证人并不是来自平行链,而是来自中间链统一管理的验证人池,通过随机分组指定给平行链。每条平行链都有一个出口队列和一个入口队列。如果用户发起的是跨链交易,交易就会被放进出口队列。再被目标平行链的收集人放入其入口队列。 目标平行链的收集人执行交易,生成区块,由验证人组敲定。Polkadot 采用混合共识协议,出块协议的英文缩写是 BABE,小孩子;敲定协议的缩写是GRANDPA,老爷爷。 刚才讲混合共识,有同学可能会问:出块快、敲定慢,那等待敲定的区块会不会越来越多?不会的,GRANDPA每个轮次可以敲定多个区块,从而追上进度。所以小孩子是活泼好动、步履轻盈;老爷爷是大步流星、一言九鼎。一老一小相得益彰。 除了平行链,还有两类外围区块链接入中继链。一类是转接桥,它把现存的、不能直联的区块链接入中继链,例如以太坊和比特币等。从中继链的角度看,转接桥是一条平行链。 从以太坊或者比特币的角度看,转接桥是一条侧链。此外,为了让系统具有无限的可扩展性,还可以有二级中继链。不过二级中继目前还只是设想,没有具体的设计。 我们已经介绍了收集人和验证人在系统中的作用,那么提名人和渔夫是做什么的呢?提名人是 Polkadot 基础通证 DOT 的持有者,他希望质押 DOT获得收益。但是要么是因为 DOT 数量少,要么是缺少运行维护验证人节点的专业技能。 因此系统提供了另一个参与途径,就是持币者选择他信任的验证人,把自己的 DOT 通过验证人来质押,分享验证人收益。这样做的好处是,提高整体质押比例,提升系统安全性,同时也使收益分配更加公平。关于 Polkadot的经济模型,是个很复杂很有趣的话题,我们就不多说了。 刚刚介绍过分片架构的交易有效性问题,以及举报奖励的解决方案,所以渔夫的作用不难理解。他就是监控和举报非法交易,赚取奖金的角色。听起来挺简单,但是做起来极其复杂。 可能有些同学想象中的举报是这样的:给 web3 基金会发邮件:我发现有人打包了非法交易,证据见附件,盼复。过些天 web3基金会回信:您的举报已被证实,作恶者已伏法,奖金将发到你的地址,非常感谢您对我们工作的支持。 但区块链上的举报完全不是这个样子。渔夫是个软件进程,它监控网络上的非法行为,一旦发现就会向区块链提交举报交易。举报交易也要经过共识过程,通过 2/3以上验证人验证,打包进区块,惩罚和奖励也都是区块链交易。 整个过程是自动地、去中心化地执行。这里就有很多复杂问题,例如如何对渔夫提供激励。渔夫就像警察,你可能会认为那很简单,抓住一个坏人就发一笔奖金。 那么有一堆警察天天盯着网络,没人敢作恶,警察就一直拿不到奖金。警察有运营成本,要验证并存储大量的数据,没有收入就干不下去了。警察全改行了,坏人就会出现。那你可能会想,给警察发工资吧,底薪加提成。 好,那我可以声明自己做警察,领一份底薪。但是我根本不验证和存储交易数据,成本就是0,底薪就是我的利润。等坏人出现的时候,我说抱歉哈,我没看到,或者说我硬盘恰好坏了,那么系统应该怎么惩罚我呢? 还有就是不能随便举报,系统处理举报需要成本,随便举报就成了可以粉尘攻击的漏洞。另外能否对举报交易进行举报,应该怎么处理等等。所以在去中心化环境中,举报机制很复杂。Polkadot的渔夫工作机制,目前我还没看到具体的说明。 在 Polkadot 网络中,平行链各自承担交易执行、数据存储,同时平行链之间能够互操作,也就实现了分片的目标。因此我把 Polkadot看成是分片扩容方案。可以跟 Serenity 初步比较一下。你会发现 Polkadot 比 Serenity 在技术上更复杂。 Serenity 的分片是同构,采用相同的共识协议,容量也整齐划一。就像是提供给 DApp 使用的标准集装箱,规格都一样,开发者选一个分片,把自己的DApp 放进去就好了。 Polkadot 是 web3骨干网,它不能也不应该要求平行链是整齐划一的。平行链可以自行决定使用什么共识协议、什么样的经济模型和治理模型,自己决定硬件和网络配置等等。简而言之平行链是自治的,Polkadot可以看成是平行链的联盟或者联邦。 Polkadot 中继链要支持异构的平行链接入,进而实现互联互通,复杂度超过 Serenity的信标链。这一技术复杂度带来的好处是,平行链开发的灵活性,无需千链一面,可以根据具体的需求和约束,设计开发最优的平行链。
殊途同归——Cosmos 下面我们来介绍 Cosmos,从侧链开始谈起。看左上方的图,A 和 B 是两条链互为侧链。也就是说,A 链包含 B 链的 SPV 轻客户端,从而 A 链能验证 B 链的交易。反过来 B 链也包含 A 链的 SPV 轻客户端,从而 B 链能验证 A 链的交易。 互为侧链的结果是,发行在 A 链和 B 链上的通证可以互转。如果从两条链扩展到多条链,A 和 B 变成A/B/C/D/E/F,一种外推的想法是仍然沿用两两互为侧链的做法,就形成了左下方的结构。 但是这样做会到来很多问题,每条链都要内置其他所有链的轻客户端,同步其他所有链的区块头,这当然是很大的负担。而且每增加一条链,都需要在其他所有链上做修改。随着区块链数量的增加,复杂度以n*(n-1)/2,指数型增长,这显然是不可行的。 解决的办法就是改成右上方图片显示的结构,中间放一个 Hub,Hub 本是也是区块链,它跟其他所有链都互为侧链。就是说,每条链上的通证都可以转到 Hub上,然后通过 Hub 转到其他链上,网络互联的复杂度跟区块链数量是线性关系。 这就是 Cosmos 的做法,在 Cosmos 的定义里,接入 Hub 的链称为 Zone 分区。分区要接入 Hub 需要两个条件,第一是符合 Cosmos标准协议,即 IBC 链间通信协议。第二是要求 Zone 具有即时最终性,以确保跨链的一致性。 而且 Cosmos 可以支持多个 Hub 的互联。对于现存的公链,可以通过协议适配接入 Cosmos Hub,Cosmos 把协议适配网关称为 Peg Zone 锚定分区。最终形成的结构就是右下方图片展示的样子。 我们从侧链出发推演 Cosmos 架构。但是回过头来看,Cosmos分区各自承担交易执行、数据存储,同时分区之间还能够互操作,也实现了分片的目标。因此我也把 Cosmos 看成是分片扩容方案。 可能有人对会对这样分类不赞同。但是没有关系,Cosmos 就是Cosmos,分类是为了更好地理解它。从不同角度理解和阐释,可以用不同的分类方法,没有绝对的对和错。 Cosmos Hub 以及其他用 Cosmos SDK 开发的分区都采用 Tentermint 共识协议,出块和敲定过程是合一的,只要出块,就是得到了2/3 以上验证人的签名验证。这样做的好处是简洁快速,出块时间可以达到秒级甚至亚秒级,而且具有即时最终性。 但是在网络发生分区的情况下,Tentermint 共识有可能暂停出块。Cosmos Hub 和分区都有各自的验证人组,不需要验证人动态随机分组。那么Cosmos 如何保障跨链交易有效性呢?根据我的理解,Cosmos 回避了这个问题。 Hub 并不能验证交易有效性,只能验证存在性。如果某个分区被恶意验证人控制,那么用户在这个分区上的资产是不安全的,可能被盗取。但是这不应该看做是Cosmos 的漏洞,而是它的设计选择。
Cosmos 经常被拿来跟 Polkadot 比较,但其实 Polkadot 与 Serenity在架构上更为相似。前几天橙皮书的文章做了三个村庄的比喻,非常贴切。但是从 DApp 开发的角度,尤其是今年和明年的重量级 DApp 开发,主要会从Polkadot 和 Cosmos 二选一。 从技术上说,Cosmos 要比 Polkadot 或者 Serenity简单得多。我这里说的简单并非贬义,在满足需求的前提下,技术方案应该是越简单越好。那么 Cosmos 用相对简单的方案也实现了分片扩容的目的,不是很好吗? 确实很好,因此我也很看好 Cosmos,它会非常适合某些类型的 DApp。但是正如我们反复强调的,有所得,必有所失。Cosmos选择了简洁,但在安全性上有所牺牲。PoS 区块链的安全等级是由总市值和质押比例决定。 Polkadot 上线之后,假设 Dot 总市值是 10 亿美元,其中一半质押在网络上,那么要对 Polkadot 主网进行双化攻击,理论上最少需要 1.67亿美元,实际需要的会多得多。显然是一笔巨款,因此 Polkadot 网络非常安全,跨链交易有很高的安全保障。 Cosmos 主网上线之后,Atom 通证也会很高的市值,但是网络质押的Atom,只保证 Cosmos Hub 的安全。分区和其他 Hub 会发行自己的通证来建立经济模型,获得安全保障。 但是分区通常是特定的去中心化应用,其应用规模和市值达不到 Cosmos/Polkadot 这样的大平台的等级。因此可以预期,Cosmos分区的安全等级会低于 Cosmos Hub。 你在 Cosmos 上执行跨链交易。需要信任交易的发起分区,目标分区和 Hub,如果跨链交易中间经过多个 Hub,那么经过的每个 Hub 都要值得信任。 一方面是需要信任的区块链变多了,而且其中有些链的安全等级可能不高。所以说 Cosmos没有做到信任最小化。安全水平降低了,但是降低之后够不够用?也许够也许不够,还是因人而异、因应用而异。 Cosmos当然了解自身的短板,据说会在未来版本为分区提供安全保障。但是实现难度会很大。要为分区提供安全保障,需要大量的验证人,只能修改共识协议,把出块和敲定分开,当然还要处理验证人随机动态分组、交易有效性等问题。这一番改动下来,Cosmos和 Polkadot 的复杂度也就差不多了。
对 DApp 的支持对比 图片: https://uploader.shimo.im/f/MVw3azcNppxwFdeM.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 那么 Serenity、Polkadot 和 Cosmos 哪个更适合做 DApp 开发呢?我们来比较一下。 首先 DApp 开发方式,三个链都可以用智能合约。Polkadot 和 Cosmos 带来了新的 DApp 开发方式,就是开发特定应用的区块链。Cosmos为应用链提供的工具是 Cosmos SDK,目前支持 Go 语言开发。Polkadot 为应用链提供的工具是 Substrate,目前支持 Rust语言开发。 Substrate 是完整的应用链开发工具,具备完整的应用链框架,Gavin Wood 演示了在一台全新的电脑上,15分钟发布出一条应用链。另外,Substrate 所有模块都可以定制或者替换,功能强大而且非常灵活。 相比较而言,Cosmos SDK 要单薄一些,它主要提供 Tendermint 共识引擎、IBC 链接通信协议和通证等核心模块,大部分上层建筑需要自行开发。 关于性能,Serenity 每个分片大约是 100 tps,仍然是优先处理 gas price 高的交易。Polkadot Hub 应该能达到上千tps,平行链可以自己决定共识算法、硬件和网络,理论上说没有性能限制。Cosmos Hub 和绝大多数分区都采用 Tendermint,能够达到数千 tps。 关于互操作。Serenity 跟以太坊 1.0 是一样的,智能合约可以相互调用。Polkadot 平行链通过 Relay 与其他平行链互操作,通过Bridge 与其他链互操作。 Cosmos 分区通过 Hub 可以互转通证,通过锚定分区与其他链互转通证。IBC消息也数据字段,就像电子邮件的附件,通过扩展数据字段,分区之间也可以传递通证以外的数据。 接入方式 Serenity 跟以太坊 1.0 相同,开发者自行部署智能合约。Polkadot Relay 接入要拍卖插槽,质押数量不菲的DOT。Cosmos 与 Polkadot 类似,是质押 Atom 拍卖接入资格。 然后是安全性,前面说过 Serenity 的分片就像是标准集装箱,DApp 放进就行了,安全性由系统保障。与之相对的是 Cosmos,应用链不论是否接入Hub,都是自己保障安全。Substrate 开发的应用链是两个选项,要么接入 Relay 成为平行链,由 Polkadot 保障安全;要么独立运行,自己保障安全。 最后是 DApp 升级,Serenity 和以太坊 1.0一样,不支持智能合约升级。可能很多人对此已经习惯了,但我认为不支持升级是很大的缺陷,而且可能带来严重的安全问题。首先是代码不可能没有 bug。 Solidity 等智能合约开发语言对形式化验证并不友好,即便做形式化验证,达到 100% 的逻辑路径覆盖也不现实。其次 DApp是互联网应用,互联网应用应该随需应变、迭代进化。 有人会认为智能合约是约定,所以不能改。其实真实世界的合同,都有经双方同意可以取消或者修改的条款。想想两个公司签了合同,现在双方都同意修改合同,结果合同本身限制了不可更改,是多么荒谬的情形。 更不要扯什么代码即法律,法律也不是一成不变,可以废止可以修订,代码反而不行,不是很奇怪吗?结果就是很荒谬,一方面 DApp有强烈的升级需求;另一方面平台不支持升级。于是开发者自己想办法,用 delegateCall 等 rudimentary的方法,别别扭扭地实现了可升级,还美其名曰可升级设计模式。 有了这个办法,开发者可以不经过用户同意,甚至在用户不知情的情况下修改智能合约。那么代码即法律还有什么意义?用户怎么才能知道智能合约可升级还是不可升级,哪些逻辑会变哪些不会变?只能自己看代码。所以难怪以太坊只有这么少的用户。反正我自己不够格使用以太坊DApp。fomo3d 的合约我研究过,就没看出来有随机数漏洞。 Parity 的多重签名钱包合约的一个小 bug,锁住了上亿美元资金,坑了自己和好多人。如果要透彻研究代码才能信赖并使用 DApp,那全世界的 DApp目标用户,大概也就是数以千计吧。 要开发能够跟中心化互联网应用竞争的 DApp,可升级是必须的。而且必须是平台支持的规范的升级,不能 DApp 各显神通。类比 Android 平台,手机App 就经常升级,但是用户必须知情并同意,新版本 App 增加了权限需求,要显示给用户。 这些都是平台控制的,手机 App 只能遵循不能饶过。DApp 的升级应该更加规范也更加严格,因为 DApp管理的是加密资产,而且没有可信任的中心。Polkadot 和 Cosmos 都允许应用链升级,Cosmos 的分区是自己处理升级,Polkadot的平行链可以安全升级。 Polkadot 如何实现平行链安全升级,我还没搞明白。几周前 Gavin wood 中国行,讲了 Trust Wormhole可信虫洞,我也没太听懂。谁了解这部分内容希望能指点一下我。 总而言之,在去中心化的区块链上,实现规范的安全的应用升级非常困难,但是没有别的选择,必须支持升级,而且是平台保障的规范的安全的升级。我认为在可升级性方面,只有Polkadot 的方向选择是正确的。
网络拓扑比较 图片: https://uploader.shimo.im/f/JPf3heKpeXn9EejQ.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 下面来谈谈,Serenity、Polkadot 和 Cosmos这三个区块链生态在充分发展之后,会形成什么样的网络拓扑。注意逻辑网络,不是物理网络。另外网络充分发展需要时间,这里讨论的是大概 5年后的图景,有些内容是根据架构设计所做的推测。 首先看左侧,Serenity 网络像是一个仪仗队方阵。信标链是旗手或者领队,方队的每列是一个标准分片。每个分片都可以承载一些 DApp。中间的图是Polkadot。Polkadot 网络是一颗树,树根是中继链,可连接多个平行链。平行链可能是特别业务的应用链,也可以是支持智能合约的 DApp 平台。 另外其他类型的区块链可通过桥接入中继。分析 Polkadot架构可知,由于验证人数量等限制,单个中继能支持的平行链数量有限。大概是几十到一百这个量级,很难达到几百个。 当然即便达到几百,也不能充分实现 Web3 愿景。所以 Polkadot未来会支持中继级联。也就是一级中继接入根中继,二级中继接入一级中继,从而具有无限扩展能力。 右侧图是 Cosmos。Cosmos 的多个 Hub 可以互联,每个 Hub 连接多个分区。还有锚定分区对接其他类型的区块链。Cosmos 网络拓扑与Polkadot 粗看上去很像,都是树形结构。但是 Cosmos 的 Hub 和 Hub 之间,没有谁向谁提供安全保障的问题,所以没有层级高低。 如果把层级关系看作是连接的方向,那么 Polkadot 是有向无环图,Cosmos 是则是无向无环图。其实 Cosmos网络拓扑是可以成环的,应该是为了避免出现跨链消息路由选择问题,选择了无环的设计。 相比较而言,我认为 Serenity 的增长方式和资源分配有点僵化。系统是自上而下式的增长,通过迭代支持更多的分片。DApp选择哪个分片上,面临一些不确定性。例如某个 DApp 非常成功,它需要的处理能力超出了单一分片的容量上限怎么办? 目前看是没有办法。另外,DApp 上线的时候你选择了一个相对空闲的分片。结果同一分片土壤出现特别受欢迎的 D App,那么你的用户就只能忍受高成本和拥堵。 简单概括就是区块链计算资源做不到对 DApp 按需分配。Cosmos 和 Polkadot的增长是自下而上的,不断有新应用链加入,也会有应用链退出,资源分配也更加灵活。 Cosmos 跟另外两个平台的最大区别是不共享安全性,一定程度上牺牲了信任最小化,这个在前面已经讲过了。这么说 Polkadot兼具了共享安全和自下而上式地有机增长,是不是就是最好的?Polkadot 确实有这些优点,但是它也有自己的劣势。 最大的问题我认为就是平行链的接入门槛会很高。按照目前公布的拍卖计划,到 2020 年底,只有 24个接入插槽。你如果开发平行链,希望明年上线,就要跟全球众多团队竞争这 24 个名额。 当然,未来 edgeware 等智能合约平台上线后,能够一定程度上降低 DApp 门槛。相比之下,在 Serenity 上部署 DApp没有门槛。Cosmos 也会好很多,因为 Cosmos Hub 可以支持更多插槽,另外生态系统中会有多个 Hub,形成卖方市场竞争。 从更大的图景上看,Serenity、Polkadot 和 Cosmos 互联是可行的,也一定会发生。EOS 等采用 DPoS的区块链也都可以连接进来,再加上侧链等二层网络,异构区块链的互联网络将会形成。
辨析“跨链” 图片: https://uploader.shimo.im/f/HxxVseUAEbTtQ4mm.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 本次分享已经接近尾声了,我们才开始讨论跨链概念。原因是我认为“跨链”概念有歧义,容易产生误导。至少我自己被误导了很长时间。以前看关于 Cosmos 和Polkadot 的 材料,都是把它们当作跨链方案来介绍。 我就想为什么要跨链?跨链能干什?虽然现在有几百上千公链,但是有几个有用的?比特币算一个,有人会加上以太坊 / EOS,有人会加上ZCash/Monero,反正也就是三五条吧。 就这么几条有用的链,有什么可跨的?感觉就是脱了裤子放屁——多此一举。所以以前我看到介绍 Cosmos 和 Polkadot 的文章,扫一眼标题就过去了,不点进去看。 直到去年 Gavin Wood 在慕尼黑演示 Substrate,我才弄明白 Polkadot 是分而治之的新一代公链架构,是 DApp 的新形式。从那以后,我才开始关注这个领域。 Polkadot 和 Cosmos 设想的区块链未来图景,不是 one chain fit all 一链打遍天下,也不是 one chain rule them all 一链君临天下,而是由众多异构区块链互链形成的网络。互联就是区块链之间能够跨链交易,所以跨链是异构区块链互联网的基础能力。 比特币、以太坊等公链加入到区块链互联网,是成果之一,而不是跨链的全部内涵。所以我的看法是,跨链概念没有错,但是如果理解成为跨而跨,就没有抓住重点。 把异构区块链实现跨链交易定义为跨链。那么我们来说说什么不是跨链,或者说市面上有哪些所谓的跨链是在挂羊头卖狗肉。首先跨链必须是参与的两条或者多条区块链的状态发生了一致性的改变,都是写操作。 如果一边是读,另一边是写,或者说是根据一个区块链的数据去修改另一个区块链的状态,这不叫跨链。当然从多个链读数据,更加不是跨链。 还有一个要求,不但要实现跨链交易,而且跨链交易应该是去信任的。还是拿 Cosmos 通证跨链转帐举例,从 A 分区经过 Hub 转 10 个通证到 B分区,你需要相信 A 分区、Hub 和 B 分区三个区块链网络。 这三个网络到底值不值信任呢?你需要自己判断,如果去中心化程度高, PoS 质押通证的总价高,被攻击的难度大,就值得信任。有些所谓的跨链方案,Hub本身不是区块链,而是个网关,那么网关值得信任吗? 答案是不知道,网关是单一实体运营的计算设备。信任网关的前提是信任运营实体。例如我们把钱存在工商银行,通过支付宝来花钱,也没什么不妥。阿里和工商银行都值得信任,所以他们运营的网关也值得信任。 但是无论网关是否值得信任,都不属于我这里所谈的跨链。我们说的跨链,Hub 要采用分布式账本技术,而且是去中心化的运营,从而实现信任最小化。 以后再看到所谓的跨链项目,可以自行分辨,是不是支持异构区块链的去中心化跨链交易。如果不能支持,那么它所说跨链跟 Cosmos 和Polkadot 不是同一类概念。
下一代 DApp 开发技术 图片: https://uploader.shimo.im/f/7sRRSKps9rASAdPg.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 我个人认为目前已经落地的 DApp 只有一个,就是比特币。比特币是去中心化的价值存储型货币,或者叫数字黄金。因为是价值存储型的,所以它对性能的要求很低。 在未来几年,去中心化的支付结算型货币和交易所很有可能落地。支付结算型货币的币值,应该跟直接或者间接地跟购买力挂钩。那么现在usdt、tusd、摩根大通币,以及未来的 facebook 币、央行加密法币,都是中心化的。做不到去信任、无许可和抗审查。 闪电网络和 MakerDAO 是重要的尝试,有可能带来突破。货币、借贷、资产发行、资产交易、保险、衍生品…我们离颠覆传统金融、改变世界也只隔着几个真正落地的 DApp。随着区块链扩容,基础设施给力了,DApp 就可能迎来真正的爆发。 程序员要怎样才能成为 DApp 弄潮儿,我们梳理下一代 DApp 开发技术。注意 DApp 是互联网应用。互联网开发的后端、前端、移动端、浏览器、桌面端技术仍然有效,但不在讨论范围之内,我们只谈实现去中心化的技术。 三个扩容思路,每个都有多种实现,我只列出代表性项目。代议制扩容的代表是 EOS 和波场。分层扩容分为状态通道和侧链两个分支,状态通道的方案有 Celer Network、Counterfactual 等,侧链有 Loom、OmiseGo 等。分片的三个典型方案,Serenity、Polkadot 和Cosmos 已经逐一介绍过了。 这么看来,下一代 DApp 开发技术似乎有很多中。其实不是,DApp 开发目前只有种,就是智能合约。智能合约有两个主流的方案,EVM 和Wasm。我们列出的项目,基本都支持 EVM,现在或者未来会支持 Wasm。 EVM 的主力开发语言是 Solidity,围绕 Solidity 已经形成生态,包括 Truffle/Remix/OpenZepplin等工具、大量的技术资料、实例、社区讨论答疑等等,而且也有相当一批程序员会 Solidity 语言。所以掌握了 Solidity,可以确保在大多数公链上开发DApp。 目前唯一的例外是 EOS,EOS 不支持 EVM,而是一步到位使用 wasm。wasm 会是未来智能合约开发的标准,可以支持用多种编程语言开发智能合约,包括java\c++\go\rust 等等。 Cosmos 和 Polkadot 提供了开发 DApp的第二种方式,就是开发应用区块链。与智能合约相比,应用链的优势是具有极大的灵活性。开发者可以自行选择或者定制共识算法、治理模型、经济模型等等,并根据实际需求配置硬件和网络。 但是另一方面,应用链开发、运营的成本会显著高于智能合约。例如要部署 Cosmos 的分区链,至少需要 4 台以上的主机,而且要质押相当数量的 Atom通证,才能接入 Hub。可以预计,达到一定规模的团队,才有足够的资源开发并运营 Cosmos 或者 Polkadot 的应用链。 简单总结就是:下一代 DApp有两类开发技术,轻量级的智能合约,和重量级的应用链。个人或者小型创业团队会主要使用智能合约。大型企业或者有充裕资源支持的创业项目,会使用应用链。 还有一种合理的做法是,先用智能合约实现 DApp,在获得验证和反馈之后,再开发功能更完善、使用体验更好的应用链。
开发者如何选择? 图片: https://uploader.shimo.im/f/aNhzFXcN6rH1Aqy9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 后端或者全栈工程师如何选择 DApp 开发技术呢?我认为未来的区块链世界会是异构区块链互联的网络,多个平台都有会各自的生存空间,不必轻言谁将取代谁。 所以我的建议是:主要考虑当下的条件来选择技术路线,例如当前可用平台的能力,团队成员的技能等等。而不必过于纠结未来的不确定性。 如果项目已经启动,那就沿既定路线继续走下去。如果还未开始,首先明确是开发公链 DApp 还是开发企业解决方案。如果是开发公链 DApp,那么是否需要跟现存 DApp 互操作。如果是,那么应该选择在现存 DApp 相同的公链上开发。 就是说你需要互操作的 DApp 在以太坊上,你就在以太坊上开发。在 EOS 上,你就在 EOS上开发。有人可能会问,不是可以跨链吗?跨链是非常复杂的技术,而且肯定不是免费的。在满足需求的前提下,实现方案应该尽量简单。所以能避免跨链,当然应该避免。 那如果不需要与现有的 DApp 互操作呢?这里隐含了一个问题是,你的 DApp 会不会跟未来的 DApp 互操作?或者别人的 DApp 会不会要跟你的DApp 互操作。 举个例子,你开发一个通证合约,作为公司业务积分系统。如果你们公司的积分使用范围很大,是不是可以在去中心化交易所进行交易,是不是可以作为资产抵押给贷款 DApp?成功的 DApp 应该尽量融入价值互联网的大生态。所以 DApp 互操作不是一个选项,而是 DApp 的基本需求,只是不一定要跟现存的 DApp互操作。 下一个问题是:DApp 是不是只需要管理加密通证?如果回答是肯定的,应该优先选择 Cosmos,如果回答是否定的,则应该选择Substrate。为什么呢?我们前面讲过,Cosmos 能够实现跨链通证转移,而 Polkadot 能实现任意形式的 DApp 互操作。 有人可能会说,Polkadot 多强大灵活啊。这个我同意,但是大家应该理解,世界是公平的,没有免费的午餐。强大灵活的代价就是复杂和高成本。 Cosmos 在架构上比 Polkadot 要简单很多。因此我可以有把握地推断,至少在前期 Cosmos 会比 Polkadot更可靠,而且使用成本更低。所以如果 Cosmos 满足需求,就应该选它。 如果业务需求超出了加密通证的范畴,可以选择 Substrate。另外前面有个分支,就是开发企业区块链应用,或者说开发联盟链应该选什么?我认为也应该选择Substrate。 为什么不选 Hyperlegder Fabric或者以太坊呢?因为商业公司推动的技术平台,注定竞争不过主流的开放平台。至于说用以太坊开发联盟链,我认为灵活性不够。 企业业务通常很复杂,对性能、可管理性等有很高的要求,而且常常需要快速迭代。Substrate 是完整的区块链框架,高度模块化和可定制化。Rust语言侧重安全和性能,也非常适合开发关键业务系统。
Rust 语言 图片: https://uploader.shimo.im/f/aLJ39J4nyw6i0Mzn.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 做 Polkadot/Substrate 开发,绕不开的问题是 Rust语言。在我二十多年的开发生涯中,遇到过极少数能快速掌握新语言的程序员。但是绝大多数程序员,包括我自己,掌握一门开发语言,熟悉标准库和开发框架,都需要很长时间。 所以学习一门新语言,对我来说,是个艰难的决定。近些年涌现出了很多开发语言,其中 Rust 语言以学习曲线陡峭而著称。到底值不值得花大量的时间来学习掌握Rust 语言呢?作为一名 Rust 语言的初学者,我谈谈自己的看法。 首先是 Rust 语言很棒,但是尚未流行。这不是我个人的看法。2019 年 Stack Overflow 的调查显示,按流行程度排名,Rust 只能排在第21 名,左边这张图只显示了前 16 名,所以看不到 Rust。 另外 Tiobe 编程语言指数排名,Rust 目前排在第 34 名。再看右边的图,在 Stack Overflow调查最受程序员喜爱的开发语言排行榜上,Rust 高居第一。而且这是 Rust 第连续四年排名第一,考虑到 Rust1.0 版是 2015才发布,可以说 Rust 正式面世以来,一直是最受程序员喜爱的语言。 而且大家知道,一门编程语言,追求高性能,和让开发者轻松惬意,通常不可兼得。比如 Java 和 Python程序员不需要考虑内存管理,当然降低了学习和开发的负担,但是系统就要处理垃圾回收,带来性能上问题。 反之,c/c++需要程序员自己管理内存,性能可以达到最优,但是前提是要把程序写对,增大了开发的难度。但是 Rust似乎鱼和熊掌兼得,即达到了跟 c/c++相同等级的性能,还能受到程序员的喜爱。 第二个看法是,Rust 语言适合高级程序员开发平台型的项目。Rust语言非常重视性能和安全,它试图通过语言规范,或者说编译器,来引导程序员写出高效安全的代码。熟悉了 Rust 的用法,能自然而然地开发出高性能和高度可靠的系统,不妨称为 Rust 之道。 Rust 之道认为实现某个目的通常有一种最好的方式,Rust 试图在语言级别引导或者强制你采用最好的方式。如果不按照 Rust之道来编码,它就让你连编译都通不过。不像 Javascript 等语言,总是有很多种选择,可以按自己的习惯,怎么写都可以。 当然代码质量可能良莠不齐,而且可维护性很差。学习并掌握 Rust之道,需要理解一些重要的编程概念,比如对象的所有权等等。没有坚实的开发经验,很难掌握。这也就是大家认为 Rust 语言学习曲线陡峭的原因。 如果不是开发对性能和安全要求很高的平台级项目,用 Rust 有点杀鸡用牛刀。因为项目在性能和安全上的收益,不一定能抵消采用新开发语言导致的成本。 如果要开发平台级系统或者关键业务系统,Rust 就值得考虑。另外学习 Rust语言可以带动自己加深对内存、线程、异步、闭包、函数式等高级开发概念的理解,对开发能力的提升有莫大好处。 所以简单总结一下,就是如果你有一定的开发经验,未来可能或者有志于开发平台型的系统,当然就包括区块链开发,那么 Rust 语言就值得你投入时间去学习掌握。 我用罗素的名言作为本次分享的结束语——须知参差多态,乃幸福本源。真正理解并欣赏 Polkadot 和 Cosmos设计理念的人,都不会是最大化主义者,也不会认为 Polkadot 的目标是替代以太坊。 至少以太坊基金会和 Parity 公司都不这么认为。Parity 公司一直是以太坊生态的重要支柱之一,他们也在积极参与 Serenity 开发。 前些时候,以太坊基金会向 Parity 公司支付了 500 万美元,即是对 Parity多年支持以太坊的感谢,也是资助他们继续开发维护以太坊节点软件。我对比特神教已经见怪不怪了,至少我能理解他们为什么那么想那么说。 但是现在以太坊生态里,也开始出现以太神教的趋向,就有点不可理喻。开放是以太坊愿景的基础,以太坊也带领我们看到了去中心化价值互联网的可能性。所以我认为支持以太坊,但是反对其他区块链,是一种自相矛盾。 前面也谈过,人们对去中心化应用的需求是多样化的。Serenity、Polkadot、Cosmos 和 EOS,还有其他 DApp平台公链,都做了不一样的设计选择,或者说是不同的折中。因此他们会非常适用于某些需求,而不太适用于其他需求。 互联互通是大势所趋,任何一个生态如果选择孤立发展,就会被区块链互联网产生巨大的网络效应所挤压,最终被淘汰。因此我们可以期待,区块链的未来会百花齐放,更加参差多态,希望区块链和去中心化应用成为人类的幸福之源。
2、万字说透跨链:DApp 赋能、信任来源、治理机制与现实挑战 https://www.chainnews.com/articles/354516373522.htm Polkadot/Cosmos 的出发点不是连接现有的公链,而首先在于支持开发者快速低成本地开发出新区块链。新区块链可以是应用平台(支持智能合约),但更多的新区块链会是去中心化应用,例如以独立区块链形式存在的去中心化预测市场、TCR、稳定币、借贷市场、交易所等等,我们不妨称之为应用链。 Polkadot/Cosmos 不但为开发应用链提供工具(Substrate/Cosmos SDK),而且为应用链之间实现可信互操作提供基础设施(Polkadot Relay/Cosmos Hub)。由此可见,Polkadot/Cosmos 的跨链,核心在于 DApp 的新形态——应用链,以及应用链之间的可信互操作。
SDK 开发的应用链可以很容易地达到 1000 tps 以上的处理能力,而且成本很低,能够满足大多数 DApp 的需求。 另一个变化是 DApp 治理,治理不像性能问题那样显而易见,但却是制 DApp 发展一大瓶颈。 用激进的方式表述本文主题就是:智能合约混淆了去中心化和可验证两个不同的概念,误导了开发者,令 DApp 在长达 4 年的时间里几乎在原地打转。Polkadot/Cosmos (尤其是 Polkadot)赋予了 DApp 链上治理能力。通过解除性能和治理两大发展瓶颈,跨链技术有望释放 DApp 创新潜力,引发去中心化应用的第三次浪潮。
第一部分:Web3 与 Polkadot 是什么 在 Web3 基金会和 Polkadot 等项目文档中,对 Web3 愿景的文字表述不太一致。但是都包含两层意思。 第一层:Web3 是无服务器的、去中心化的互联网。Serverless 无服务器也是去中心化的意思,因为在 web3 憧憬的网络计算架构里,参与者或者说节点是平等的,没有服务器和客户端的区别,所有节点都或多或少参与网络共识的形成和记录。去中心化的互联网有什么用呢? Web3 的第二层含义:每个人都能掌握自己的身份、资产和数据。掌握自己的身份,意味着不需要其他人或者组织赋予身份,其他人或者组织也无法冒用、剥夺或者冻结身份。掌握自己的资产,意味着不会被剥夺资产,可以自由处置资产。掌握自己的数据,意味着每个人可以按自身的意愿生成、保存、隐匿、销毁个人数据,未经他的允许,任何人任何组织都不能使用其个人数据。在数字时代,掌握了自己身份、资产和数据的人,也就掌握了自己的命运。 Web3 愿景并非 Web3 基金会或者 Polkadot 项目所独有。很多区块链项目,包括比特币、以太坊,都有类似的愿景。名称五花八门,包括开放网络,下一代互联网等等。 为实现 Web3 愿景,世界需要去中心化的互联网应用,即 DApp。从使用者的角度,去中心化可以简单理解成,不能被个别或者少数参与者所控制,因此值得信任的应用属性。具体地说,去中心化对使用者意味着有三个重要属性:trust minimal、permissioness 和 censorship resistant,也就是信任最小化、无许可和抗审查,三个属性跟 web3 愿景一脉相承。通过众多的去中心化应用,互联网用户可以控制自己的数字身份、资产和数据,从而实现 Web3 愿景。区块链是实现 DApp 的主流技术手段,或者说区块链是 DApp 的基础设施。
以太坊 /EOS/ 波场三大智能合约公链上已经有上万个 DApp。但是除了少数昙花一现的菠菜游戏和资金盘以外,用户极少、而且活跃度很低。甚至已经有人在质疑:去中心化应用是不是个伪概念?我认为出问题的不是去中心化应用,而是智能合约平台。可以说在智能合约平台上开发去中心化应用已经走入了死胡同。原因有两个,第一个是性能和交易执行成本限制。性能低和交易执行成本高是一个硬币的两面。例如以太坊全网只有 15 tps 的处理能力,为保证公平同时抵抗女巫攻击,只能是交易费用竞价。用户体验到的就是 DApp 很慢,而且一用都要花钱。整个行业对公链性能的关注由来已久,也很多团队正在探索通过代议制、分层和分片三种思路进行扩容。拙作《万字长文说透 Polkadot 架构》整理了扩容的技术路线、遇到的问题和解决方案,以及主要的项目实现,并把 Polkadot/Cosmos 归入分片扩容。简而言之就是,跨链技术通过分而治之的方式,在保持互操作性的同时,实现了扩容。本文仍将简述这部分内容,已经阅读过《说透》一文的读者可以跳过随后的三个小节。
但是性能 / 成本并不是智能合约对 DApp 的唯一限制。EOS 通过代议制的方式,已经能够达到数千 tps 的处理能力,比以太坊 1.0 的性能提升了两个数量级,而且交易执行成本由开发者负担,让 DApp 摘掉了又慢又贵的帽子。但是 EOS 主网上线一年了,也在公链治理等领域做了大量有益的探索,但是并没有引发应用层的创新。这不禁让人怀疑,到以太坊 2.0 全面落地的时候(大概还需要 1-2 年时间),DApp 的春天是否就真能到来? 经过很长时间的反复思考,我认为除了性能 / 成本约束以外,DApp 还面临智能合约平台第二个重要局限:去中心化治理缺位,而且为了保护合约的可验证性,阻碍了去中心化治理的实现。而跨链技术(尤其是 Polkadot)在实现扩容的同时,为实现有效的去中心化治理提供了技术基础和模版范例。通过解除性能和治理两大发展瓶颈,跨链技术有望释放 DApp 创新潜力,引发去中心化应用的第三次浪潮。
Polkadot 是 GavinWood 和 Web3 基金会提出的 Web3 技术方案。这两张图片都来自于岳利鹏翻译的 Polkadot 白皮书中文版。 先看右边的大图,Polkadot 的基本网络结构是星型的,或者称为轮辐型。星型的中心是 PolkadotRelay 中继链,外围是众多的 Parachain 平行链。 再看左侧的小图,Polkadot 网络的参与者有四种角色: Validator 验证人、Nominator 提名人、Collator 收集人或者核对人,Fisherman 钓鱼人或者渔夫。DApp 可以是部署在平行链上的智能合约,或者整个平行链就是一个 DApp。用户在平行链发起交易,交易被收集人收集,打包成区块,交给一组验证人去验证。这组验证人并不是来自平行链,而是来自中继链统一管理的验证人池,通过随机分组指定给平行链。每条平行链都有一个出口队列和一个入口队列。如果用户发起的是跨链交易,交易就会被放进出口队列。再被目标平行链的收集人放入其入口队列。目标平行链的收集人执行交易,生成区块,由验证人组敲定。Polkadot 采用出块过程和敲定过程分开的混合共识协议。 除了平行链,还有转接桥把现存的、不能直联的区块链接入中继链,例如以太坊和比特币等。我们已经介绍了收集人和验证人在系统中的作用,那么提名人和渔夫是做什么的呢?提名人是 Polkadot 基础通证 DOT 的持有者,他希望质押 DOT 获得收益。但是要么是因为 DOT 数量少,要么是缺少运行维护验证人节点的专业技能。因此系统提供了另一个参与途径,就是持币者选择他信任的验证人,把自己的 DOT 通过验证人来质押,分享验证人收益。这样做的好处是,提高整体质押比例,提升系统安全性,同时也使收益分配更加公平。渔夫的是监控和举报非法交易,赚取奖金的角色。在 Polkadot 网络中,平行链各自承担交易执行、数据存储,同时平行链之间能够互操作,实现与分片扩容非常类似的目标。
第二部分:Cosmos 是什么 说完 Polkadot,再介绍 Cosmos。在图的左上方,A 和 B 是两条链互为侧链。也就是说,A 链包含 B 链的 SPV 轻客户端,从而 A 链能验证 B 链的交易。反过来 B 链也包含 A 链的 SPV 轻客户端,从而 B 链能验证 A 链的交易。互为侧链的结果是,发行在 A 链和 B 链上的通证可以互转。如果从两条链扩展到多条链,A 和 B 变成 A/B/C/D/E/F,一种外推的想法是仍然沿用两两互为侧链的做法,就形成了左下方的结构。但是这样做会到来很多问题,每条链都要内置其他所有链的轻客户端,同步其他所有链的区块头,这当然是很大的负担。而且每增加一条链,都需要在其他所有链上做修改。随着区块链数量的增加,复杂度以 n*(n-1)/2 指数型增长,这显然是不可行的。 解决的办法就是改成上图右上方显示的结构,中间放一个 Hub,Hub 本是也是区块链,它跟其他所有链都互为侧链。就是说,每条链上的通证都可以转到 Hub 上,然后通过 Hub 转到其他链上,网络互联的复杂度跟区块链数量是线性关系。这就是 Cosmos 选择的架构,在 Cosmos 的定义里,接入 Hub 的链称为 Zone 分区。分区要接入 Hub 需要两个条件,第一是符合 Cosmos 标准协议,即 IBC 链间通信协议。第二是要求 Zone 具有即时最终性(最好采用 Tendermint 共识),以确保跨链的一致性。而且 Cosmos 可以支持多个 Hub 的互联。对于现存的公链,可以通过协议适配接入 Cosmos Hub,Cosmos 把协议适配网关称为 Peg Zone 锚定分区。最终形成的结构就是右下方图片展示 Cosmos 架构。 Cosmos Hub 以及其他用 Cosmos SDK 开发的分区都采用 Tentermint 共识协议,出块和敲定过程是合一的,只要出块,就是得到了 2/3 以上验证人的签名验证。这样做的好处是简洁快速,出块时间可以达到秒级甚至亚秒级,而且具有即时最终性。但是在网络发生分区或者验证人大面积停机等情况下,Tentermint 共识有可能暂停出块。 图片: https://uploader.shimo.im/f/hKo2tAeMQCge1Hlc.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 我们把 Serenity 也就是以太坊 2.0、Polkadot 和 Cosmos 放在一起比较一下。三者都是未来几年重要的 DApp 平台。 DApp 开发方式:三个链都支持智能合约。Serenity 还是智能合约平台,而 Polkadot/Cosmos 网络中会有支持智能合约的平行链和分区链。除此之外,Polkadot 和 Cosmos 带来了全新的 DApp 开发方式,就是开发特定应用的区块链。Cosmos 为应用链提供的工具是 Cosmos SDK,目前支持 Go 语言开发。Polkadot 为应用链提供的工具是 Substrate,目前支持 Rust 语言开发。Substrate 是完整的应用链开发工具,具备完整的应用链框架,Gavin Wood 演示了在全新的电脑上,15 分钟用 Substrate 发布出一条应用链。另外,Substrate 所有模块都可以定制或者替换,功能强大而且非常灵活。相比较而言,Cosmos SDK 要单薄一些,它主要提供 Tendermint 共识引擎、IBC 链接通信协议和通证等核心模块,大部分上层建筑需要自行开发。 性能:Serenity 每个分片大约是 100 tps,仍然是优先处理 gas price 高的交易。Polkadot Hub 应该能达到上千 tps,平行链可以自己决定共识算法、硬件和网络,没有严格的性能上限。Cosmos Hub 和分区都采用 Tendermint,能够达到上千 tps。 互操作:Serenity 跟以太坊 1.0 是一样的,智能合约可以相互调用。Polkadot 平行链通过 Relay 与其他平行链互操作,通过 Bridge 与其他链互操作。Cosmos 分区通过 Hub 可以互转通证,通过锚定分区与其他链互转通证。IBC 消息也有 data 字段,就像电子邮件的附件,通过扩展数据字段,分区链之间可以传递任意数据。 接入方式:Serenity 跟以太坊 1.0 相同,开发者自行部署智能合约。Polkadot Relay 接入要拍卖插槽,质押数量不菲的 DOT。Cosmos 与 Polkadot 类似,是质押 Atom 拍卖接入资格。 安全性:Serenity 的分片就像是标准集装箱,DApp 放进就行了,安全性由系统保障。与之相对的是 Cosmos,应用链不论是否接入 Hub,都是自己保障安全。Substrate 开发的应用链是两个选项,要么接入 Relay 成为平行链,由 Polkadot 保障安全;要么独立运行,自己保障安全。 DApp 升级,它跟后面要重点讲的去中心化治理密切相关。在这里我们简单地概括为 Serenity 不支持 DApp 升级、Polkadot 支持 DApp 的安全升级。Cosmos 的分区链是可升级的,但是 Cosmos SDK 并没有内置对升级的支持,需要 DApp 开发者自行实现升级。 Polkadot/Cosmos 最大的创新在于提供了新的 DApp 开发方式,也就是为开发应用型区块链提供了支持。应用链可以通过跨链协议互操作,而且每条应用链都可以独享 1000 tps 以上的处理能力,DApp 的性能瓶颈被解除了。 下面重点讲述 Polkadot/Cosmos 如何解决去中心化治理问题。在此之前,首先要解释去中心化治理的作用,为什么去中心化治理是除性能之外的 DApp 创新的另一大瓶颈。
第三部分:智能合约的信任来源是什么? 以太坊开创的区块链智能合约是开发可验证应用的技术。智能合约内部状态都是公开可见的,平台不支持隐匿数据,我称之为状态可验证。另外智能合约应该公开代码。代码公开不仅是开源,而是由平台保障合约源代码和执行代码对应。使用者可以查看合约代码,从而验证开发者所声称的处理逻辑与实际实现一致,即处理逻辑可验证。而且智能合约不能调用随机数、当前系统时间,也不能直接访问链下数据,从而确保执行的确定性(Determinism)。由此可见,智能合约是开发可验证应用的通用性技术。
为了保护处理逻辑可验证,平台通常不允许智能合约进行升级,原因在于开发者单方面修改智能合约会破坏可验证的公平性。但不可升级给应用开发造成了巨大的困难。应用程序几乎不可能保证没有缺陷。智能合约运行在公链平台上,任何人都可以无需许可地匿名访问。再加上智能合约常常用于处理加密资产交易,任何微小的缺陷都会被黑客利用。TheDAO、Parity 多重签名钱包、美链 1CO 等智能合约,都因为微小的程序缺陷,导致了巨大的经济损失。 另一方面,互联网应用和移动应用常常快速迭代,不断适应用户需求、增强功能、改进体验。如果区块链应用只能“以不变应万变”,要在竞争中胜出难于登天。 图片: https://uploader.shimo.im/f/bmwclep7l2puHlXc.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0
为了突破智能合约不可升级的限制。开发者用 delegateCall 等方法,绕过平台,实现了智能合约可升级设计模式,如上图所示。可升级智能合约通常由三个部分:代理合约、状态合约和处理逻辑合约。状态合约存储所有需要持久化的数据。代理合约负责将外部服务请求转发给处理逻辑合约。代理合约保存了处理逻辑合约的地址指针。通过部署新版本的处理逻辑合约,修改代理合约的地址指针,就能够实现处理逻辑升级。 可升级设计模式使得智能合约具有了可升级性,代价是破坏了智能合约的处理逻辑可验证。开发者可以不经过用户同意,甚至在用户不知情的情况下修改智能合约。那么用户是否仍然可以信任智能合约呢?答案是需要个案分析。在协议可变的前提下,是否可信取决于协议的控制者是否可信。例如 Paxo/GUSD 等合规稳定币,我们知道 Paxo/GUSD 的运营实体是受纽约金融局监管的合规企业,其稳定币的法币储备有定期的正规审计。虽然这些稳定币的运营商可以随时升级(修改)智能合约,但是用户并不会因此而产生疑虑。但是大家应该注意,合规稳定币的信任并不是区块链制造的,而是把链外的信任延伸到了链上。例如 eher 公司通过区块链发行 USDT,只是利用区块链技术的可及性和快捷清算能力。USDT 的信用不是区块链制造的,而是由Tether 公司提供的。 另外一种情况是,掌握智能合约升级权利的不是个人或者企业,而且去中心化匿名组织(DAO),例如 MakerDAO、Aragon 等。他们通过去中心化的治理流程(通常也用智能合约实现),由利益相关人通过投票决定协议规则的修改。在这种情况下,智能合约的可信性取决于 DAO 的可信性。稍后我们会继续延伸这个话题。 总结一下本小节的内容。智能合约是开发可验证应用的技术,状态可验证+处理逻辑可验证创造出可证明的公平性,智能合约菠菜的流行大抵源于此。可验证和可升级是一对矛盾。可升级智能合约破坏了可验证性,其信用之源是合约的运营主体。
第四部分:比特币的信任来源 我们把比特币产生信任的方式跟以太坊智能合约进行比较,可以发现比特币的可信既不是源于代码可验证,也不是因为比特币核心开发者具备信用。包括我在内的比特币绝大部分用户都没有看过比特币节点的代码,也并不关注代码,而且比特币协议是可以修改的(分叉)。对于由谁决定比特币协议的升级,中本聪的初始的设想是算力投票。理由在于算力是不可伪造的,而且矿工是比特币的主要的利益相关群体。但是很有可能,中本聪没有预见到专用 ASIC 矿机出现,将个人电脑完全挤出了挖矿竞争,并形成了几大矿池垄断算力的现状。比特币的利益相关群体主要有四个:矿工、开发者、用户和企业(交易所、钱包厂商、区块链浏览器、社区、媒体等)。他们有一致的利益,也有相互冲突的利益。例如几乎全部参与者都受益于比特币长期价格上涨。但是用户希望交易费越低越好,而矿工希望交易费越高越好。由于利益冲突,各方对比特币协议演进会出现不同的意见,而且四方都有影响协议研究的能力和途径。基于比特币分叉博弈的历史,目前普遍认为对协议演进影响里最大的是比特币核心(开发者),而不是矿工。那么我们是否是因为信任比特币核心才信赖比特币呢? 最近有矿圈的大佬声称,比特币核心早晚会取消比特币 2100 万的发行上限。作为把 btc 用于长期价值存储的用户之一,我是否应该担心呢?说实话我并不担心,并不是因为大佬的逻辑有问题(我甚至没花时间研究他的逻辑),也不是因为我信任比特币核心。我甚至不知道现在的比特币核心由几个人组成,他们都是谁。但是从第一次购买 btc 到现在 6 年多的时间,我知道有大量跟我利益诉求一致的比特币用户。我们都把 BTC 当作自己可以完全掌握的资产(还记得 Web3 愿景吗?),是最可靠的价值存储。假设比特币核心处于某种原因要牺牲比特币的稀缺性,那必然要通过硬分叉来实施。我只需要保留有稀缺性保证的 BTC,卖出没有稀缺性保证的分叉币(也许叫 Bitcoin Uncapped?)就行了。也就是用我的币做了支持谁不支持谁的投票。我相信比特币社区会有千千万万人(不是也无需是全体)会跟我做相同的选择。而且也一定会有开发者维护稀缺比特币的代码(组成新的核心?)。一番折腾下来,除了原来的比特币核心被边缘化以外,我看不出还会有其他可能的结果。 所以我对比特币的信赖源于影响比特币协议演进的力量是多方的,而且由于区块链可以分叉,不同利益诉求的群体可以分道扬镳,然后由广大的比特币用户来选择支持 / 不支持 / 同时支持哪个分叉。所以比特币的信任来源是广泛参与的治理和可分叉性,与智能合约非常不同,这就是本文所说的去中心化治理。
第四部分:深入探讨去中心化治理问题 图片: https://uploader.shimo.im/f/yOkFQfm71OXlXeUE.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 除了可证明的公平性,区块链应用创造信任的源泉是去中心化治理。而且只有通过去中心化治理产生信任的应用,才是真正的去中心化应用。 这一小节我们介绍去中心化治理的一般过程和发展现状。 以比特币为例,治理的基础是广泛参与的讨论,在 bitcointalk、reddit 的网络社区、大大小小的会议、众多的媒体上发表看法、讨论甚至争论问题。研究者会针对某个特定专题,例如隐私、性能或者更一般化的签名方案、P2P 通信协议等,进行研究,并发表研究成果。对比特币协议的改进建议以 BIP (Bitcoin Improvement Proposal 比特币改进提案)的形式呈现。重要的 BIP 会引发比特币社区的关注,并引发更为广泛的讨论。开发者(不一定是 Core,也不一定是提案发起人)可以实现某个 BIP。目前比特币没有正式的对开发者进行资助的流程。Dash/Monero 等加密货币社区,有标准的流程来决定是否以及如何对开发者提供资金支持。在协议改进实现之后,就来到去中心化治理最关键的步骤:由谁以及如何决定 BIP 部署上线,成为比特币协议的一部分。 比特币的治理在这一关键环节非常含混不清,大致可以描述为核心开发者根据已经达成的广泛社区共识来决定是否上线 BIP。什么才是广泛的共识?是否已经达成了广泛共识?没有明确的标准,这在持续近三年之久的大区块 vs. 隔离见证的争议中表现得尤其明显。以太坊的治理过程与比特币非常类似,可能唯一重要的区别在于 V 神在以太坊社区的巨大影响力,使得 V 神支持的协议改进更容易达成共识。由于这一类的治理过程的最终结果是实施协议分叉,不妨称之为分叉治理。分叉治理虽然实现了治理去中心化的目标,但是具有明显的缺陷。最大的问题是治理过程含混不清,因此效率很低、难于改进而且很容易陷入争议。例如以太坊围绕 ProgPoW 的冗长肥皂剧就是混乱无序治理的必然结果,没有清晰的治理过程,类似的肥皂剧就会反复上演。 针对分叉治理的缺陷,Decred 首创了链上治理。也就是 Decred 通证的持有人通过链上交易对提案进行投票表决,表决通过的提案才能部署上线。EOS 和 Tezos 也对链上治理做了大量有益的探索。上图右侧对去中心化治理的现状划分的象限。比特币和以太坊采用分叉治理方式。EOS 和 Tezos 区块链采用链上治理。但是就我所知,EOS 和 Tezos 并没有为平台上运行的智能合约提供治理支持,因此还是没有解决 DApp 治理的问题。Decred 很可能是目前唯一的具备完整链上治理的去中心化应用。但是 Decred 的治理也有明显缺陷。首先 Decred 是 PoS+PoW 混合共识,通证持有者和 PoW 矿工都是网络的利益相关人,但是 PoW 矿工不能直接参与链上治理,他们的利益诉求被忽略了。另外 Decred 的提案是持币者直接投票,相当于是每个决策都是全民公决,这样做效率很低,而且最明显的问题是实际投票率很低。虽然有些提案有百分之几十的通证参与投票,但是看按持币地址的参与率,就低到可怜了。这两个问题在一些纯 PoS 链得到了很好的解决。PoS 的治理基础就是 Staking,Staking 代表了长期的利益绑定,治理的目的是为了让加密协议不断进步,最大化长期利益,因此参与 Staking 的持币者参与治理非常恰当。另外就是新一批的 PoS 都实现了某种代理机制,DPoS/BPoS/NPoS,相当于实现了代议制。日常的治理可以由当选的验证人来进行,他们相当于是议会。验证人通常跟加密网络有巨大的共同利益,他们有动力为治理投入资源。另外重大的表决,尤其是验证人和委托人利益有冲突的提案,仍然可以也应该交由持币者公决。 第五部分:Polkadot 的治理机制 Polkadot 的治理是前所未有的全过程链上治理,基于最前沿的区块链技术实现。被表决的提案不仅仅是对协议修改的描述,而且可以是新协议本身,即被编译称 wasm blob 的可执行程序。链上投票通过后,新版程序通过区块链分发给验证人节点,并且自动启用。升级过程中不会出现分叉。基于令人叹为观止的技术,Polkadot 在链上治理方面可以说是一骑绝尘,正在进行大量的创新和探索。 Polkadot 治理仍然处在快速进化之中。5 月 24 日 Polkadot宣布 PolkaDAO 上线,PolkaDAO 把对提案进行资助的决策流程搬到了链上(目前是以太坊,未来应该会迁入 Polkadot)。在主网上线之前,乃至于主网上线后的相当一段时期内,进化不会减速。因为 Polkadot 的优势并不在于它已经找到了行之有效的治理方式,而在于它建立起了可以支持快速进化的过程和技术。根据我的观察,在主网上线前和上线后的一段时期内,开发者仍然拥有 Polkadot 的控制权。他们会充分利用这一权利,将 Polkadot 快速推进到自洽状态,然后退居幕后,把治理权交给社区。这也是 Block.One 对 EOS 所做的。Polkadot 多出了两年行业发展经验(后发优势),而且开发了更好的链上治理技术。有理由相信 Polkadot 的开发者能做得更好。所以现在讨论 Polkadot 的治理,不必对细节太过关注,因为都可能会变掉。需要关注的是:完全可编程的链上治理大概会是什么样子,能做到哪些?而且 Polkadot 治理代码是开源项目的一部分,DApp 开发者可以把 Polkadot 治理当作模版范例,定制开发符合自身项目情况和需求的治理过程。 Polkadot 这个词在不同的语境下有不同的含义(范围),有时候我们用它来代表 W3F 发起的整个 Web3 生态,有时候代表 Polkadot 项目(包含 Substrate),有时候特指 Polkadot Relay 这条特定的区块链。本小节所说的 Polkadot 治理,是 Polkadot Relay 区块链的治理,再具体的说是 Polkadot Relay 的 PoC-3 阶段实现的链上治理。 整个治理过程围绕提案和投票展开。提案可以由普通的持币者提出,也可以由理事会提出。理事会是持币者选出的,持币者可以给任意多的理事候选人投票。每个选举周期的冠军进入理事会,替换任职时间最长的理事,亚军票数保留,其他候选人选票清零。每个理事都有对理事会提案的否决权,但是不能连续使用。理事会通过提案进入全民公决,而且只有得到多数反对才会被否决。普通持币者的提案进入队列,等待其他持币者的支持。每隔一段时间,支持数最高的提案进入全民公决。但是普通持币者的提案要获得多数支持才能通过。在全面公决投票中,持币者可以选择锁仓系数,范围从 1-6,所投出的票数是持有的 DOT 数量锁仓系数。如果投票结果跟投票者的选择一致(通过 / 否决),那么投票者的 DOT 将被锁定,锁定时间= 常数锁仓系数。如果投票结果跟投票者的选择相反,则无需锁仓。这样的计票方式,有助于让(未来的而不是过去的)长期持币者获得更大权重。
第六部分:去中心化应用的未来之路 图片: https://uploader.shimo.im/f/muRPw083cc2HPlaX.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 前面讲述的全部内容可以归纳为去中心化应用的三次浪潮。 第一次是比特币引发的去中心化电子现金(加密货币)的创新浪潮,围绕“更好的加密货币”主题展开,方向主要有三个:隐私、治理和支付。这三个方向也都针对比特币的“不足”。Zcash/Monero/Dash 等力图巩固加密货币的可互换性和私密性;Decred/Dash 等探索了混合共识和更规范更有效的治理;Litecoin/XRP/BCH 致力于成为更好的支付 / 转账加密货币。大家知道在 2012-2015 年,开发 DApp 的主要方式是 fork 比特币的代码,做定制修改,然后运行独立的区块链。再到后来直接 fork 比特币区块链,借力比特币的网络效应。这一轮创新是开天辟地试的,它开启了去中心化应用的大门,使每个人都可以自行认领数字身份(私钥 / 地址),而无需被授予。并实现了最普遍使用的资产——货币的去中心化。但是除了最大化主义者或者对现代金融一无所知的人,恐怕没有人会认为仅靠去中心化货币就能支撑起 web3 理想的大厦。但是由于当时开发去中心化应用的技术单一,都源自比特币。而比特币的架构设计扩展性不足,使得开发非货币类应用难度很大。而且当时也没有跨链技术,DApp 是彼此独立的区块链,之间不能互操作,无法形成 DApp 生态。这一轮创新浪潮给只是行业留下了几个各具特色、但独立运行的加密货币。 在比特币区块链上实现其他资产的发行和交易是可行的(例如 ColorCoin/MasterCoin 等早期尝试),但严重受制于比特币区块链的限制。V 神正是由此出发,提出并领导实现了以太坊。以太坊是开放的创新平台,它引入了图灵完备的虚拟机 EVM,推出了 Solidity 等智能合约开发语言,并且支持智能合约相互调用(互操作),极大地降低了区块链应用开发的门槛,引发了第二轮创新浪潮。但是如前所述,由于以太坊基础设施的限制,导致应用性能差、成本高,用户体验很差。而且智能合约实质上是可验证应用开发技术,并没有为 DApp 所必须的去中心化治理提供支持,甚至为了保护可验证性限制了应用的升级,给 DApp 演进造成了很大困难。由于这些限制,虽然以太坊主网上线已经 4 年多了,全世界也有几十万智能合约开发者。但是以太坊上没有一个真正落地(百万级活跃用户)的去中心化应用。当然第二次创新浪潮不是毫无收获,期间产生了大量的可验证应用,包括可以验证的资产发行和转移、可验证的菠菜等等。另外有成百上千个 DApp 在智能合约平台进行了尝试,开发出了 MVP。在性能、治理等瓶颈解除之后,这些项目团队有最好的机会开发出真正落地的 DApp。 Polkadot/Cosmos 等跨链技术是对以太坊等智能合约平台的换代。他们继承了以太坊图灵完备、规范应用程序开发和互操作支持等优点,又解除了去中心化应用的性能和治理两大瓶颈,将引发 DApp 创新的第三次浪潮。我们前面重点介绍了 Polkadot 的治理。那么用 Cosmos SDK 开发的应用链,也可以实现类似 Cosmos Hub 和 Tezos 的链上治理。关于跨链技术的局限是什么,我还不敢说现在已经看到了,但是有一些疑惑要交给时间去验证。在第三次创新浪潮中,我们有理由期待出现大量的 DApp 创新,能够包括去中心化匿名组织 DAO、去中心化交易所 DEX,以及众多 Defi 去中心化应用。最优秀的一批 DApp 很可能获得成百上千万的用户,跟对中心化互联网服务竞争而不落下风,将互联网向实现 Web3 愿景推进一大步。
第七部分:Polkadot 的现实问题 图片: https://uploader.shimo.im/f/hdloscqrt3IrPfy9.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 谈过 DApp 创新的远大前景,再来说说现实的困难。 首先是 Polkadot/Cosmos 跨链技术落地尚须时日。Polkadot 目前的进展是 PoC4 已经稳定运行了近两个月。但是 PoC4 并不包含跨链协议。跨链协议 ICMP 将包含在 PoC5 里面。目前 Polkadot 主网上线目标时间点是今年年底。但这在一切顺利的情况下的预期。开发过复杂软件项目的同学都知道,一切顺利通常只存在于幻想之中。虽然 Polkadot 开发团队的能力有目共睹,但是如果 Polkadot 如期上线,我还是会比较意外。 Cosmos 虽然主网已经上线,但是 IBC 跨链协议还未实现,也是预计在今年年底实现。考虑到 Cosmos 的各种跳票已是家常便饭,如果年底 Cosmos Hub 就开始接受分区链接入,对我来说是也个很大的惊喜。但是希望大家理解,DApp 不一定要依赖跨链。应用链形态的 DApp 可以自己构成业务闭环,并且提供跟中心化互联网应用类似的用户体验。因此我呼吁区块链行业的创业者,不要再等待观望,或者在智能合约平台上继续撞南墙。从现在开始认真考虑、积极准备采用应用链实现 DApp 创新。等到跨链技术落地,再接入到 Polkadot/Cosmos,融入 DApp 生态圈。
第二个现实障碍是应用链的开发者奇缺。由于 Substrate 和 Cosmos SDK 都是不久之前出现的新技术,而且 Substrate 开发使用比较小众的 Rust 语言,因此国内具有实践经验的应用链技术团队极少。目前用 Substrate 开发过产品的国内团队,就我所知只有 ChainX 一家。而且应用链开发还面临一个很大的难题,就是 Substrate 和 Cosmos SDK 应该选择哪一个?两个开发工具的开发语言不同,都有比较高的学习成本,而且未来对应的是两个不同的 DApp 生态。一旦选定之后再更换,会造成资源投入和项目进度的重大损失。我比较过两个开发工具,Substrate 比 Cosmos SDK 功能更完整更强大。所以最佳方案是 Substrate 能兼容 Cosmos,也就是用 Substrate 可以开发 Cosmos 分区链,形成统一的独立于 Polkadot 的 Substrate 开发工具生态。Substrate 是开源软件,采用模块化的设计,把 Tendermint/IBC 封装成可以被 Substrate 使用的协议组件,在技术上肯定是可行的。我和几个做开发的朋友正在研究这个问题,也欢迎对此感兴趣的同学加入进来。Substrate 是应用链开发的首选工具。为了在国内开发者中推广 Substrate,一块链习社区打造了全球首个 Substrate 线上开发课。主讲是 Bryan 陈锡亮老师,Bryan 是 Centrality 资深架构师、Polkadot 社区大使、Substrate 和 Polkadot 代码贡献者。 Gavin Wood 给课程写的推荐语是:Bryan 是 Substrate 的杰出贡献者。我推荐中国区块链开发者参与他的课程,学习使用 Substrate 开发区块链项目。首期课程 6 月 2 号开课,学费 1299 元。所有按时完成作业的同学将获得一半学费返还。课程评价前 3 名的同学学费全额返还,还有额外奖励。课程是不盈利的,这个不多说了,懂的人自然明白。我会义务担任首期课程的助教,期待跟大家一起学习。 还有就是 DApp 的治理还没有最佳实践。前面也介绍了 Decred 等治理实践以及遇到的问题。很有可能五年以后,DApp 创业者能够找到很多成功的范例和失败的教训可资借鉴。但是现在,一切才刚刚开始。只有几条基本的原则是清楚的,首先就是 DApp 要长期成功,需要设计出长期激励相容的机制。使开发者(项目方)、验证人、服务提供商、用户和投资者的长期利益一致,并且能够约束各方追求自身短期利益、牺牲整体长期利益的行为。 开发者应该钻研技术和商业、建立并维系社区,从长期币价上涨和技术服务收入获利。对于验证人,他首先应该选择真正具备交易成本优势的 DApp,因为验证人是最长期的投资者,他不但要付出资金,还有付出很高的人工成本去参与 DApp 治理。因此陷入庞氏骗局或者资金盘,是专业的验证人首先要避免的。决定参与 DApp 经济体之后,验证人应该积极参与治理,避免共谋,从长期币价上涨和领权收益获利。加密货币的投资者,这里指长期价值投资者,不包括短期投机者、量化或者趋势投资者,应该深入研究 DApp 的基本面,将通证委托给有治理能力的验证人,并持续保持关注,通过长期币价上涨和 Saking 获利。另外,DApp 协议的服务提供商和用户非常有可能作为投资者甚至验证人参与到 DApp 去中心化治理之中。
3、Gavin Wood解析平行链的四大优势:无法中断、可升级性、不受限和无手续费 https://news.huoxing24.com/20211015220925333419.html Substrate 带来的改变 首先来讲讲 Substrate 和平行链模型的作用。 Substrate 是 Polkadot 项目开发过程中形成的开源区块链开发框架,可以用来搭建 Polkadot 生态,也可以用于构建其他目的的区块链。
基于 Substrate 的平行链有以下四个特点 —— 无法中断、可升级性、不受限和无手续费,我会把每一点稍微展开讲讲,让大家清楚地了解我们为什么要这么做。 (1)无法中断 基于 Substrate 的平行链,或者任何基于 Substrate 的链,至关重要的一点就是它们是真正去中心化的。相比之下,一些其他的区块链项目并不是完全去中心化的,它们可能是被设计成有一点点去中心化。 在 Substrate,我们真正追求点对点、去中心化,这就让链无法中断。比如全节点保存所有数据,要在一条 Substrate 链上成为验证人也很容易,我们也投入了大量精力去保证轻节点的可用、高效和高性能。所以说,我们在努力去达到可扩展性,同时又保证去中心化,我们不会在去中心化程度上做妥协,来换取可扩展性。 (2)可升级性 第二点就是可升级性。虽然这一点你们很多人可能都耳熟能详了,但是还是有必要再强调一下。它是 Substrate 和 Polkadot 的重要口号和核心精神,Substrate 链和基于 Substrate 创建的 Polkadot 都是元协议(Meta Protocal)。所以它让我们可以高效地升级、更新和吸收新技术。 这两张图可以形象地展示。我们看到一些链就像是在泥地里挣扎前行,而我们就像是在玩风筝冲浪。 (3)不受限 Substrate/平行链模型和智能合约模型的一个很大的区别,就是 Substrate 链是不受限的。这个问题我经常被问到,如果你是一个想成为平行链的团队,你可能也想问这个问题,所以我会把它讲清楚。 Substrate/平行链模型是一种 “自由执行模型”,也就是说你是租用一整段时间的一定量的分布式 CPU。这种模型和智能合约模型有本质上的不同,智能合约模型是交易执行模型,也就是用户可以付费来让你的代码为他们执行。 作为自由执行模型,会确保你在时间区间里被调度,而且确保在一个规律的间隔调度一次,比如对于 Polkadot 平行链来说每 6 秒。这种模型给了你很大的自由,你可以决定你的应用应该怎样工作,并且根据你的需要来实施它。很重要的是,对于哪些交易得到执行,是你说了算,而不是像智能合约模型中一样是由交易说了算。如果出于某种原因,你或者你的用户无法进行一笔交易,那么你的应用就很难增长,这一点对应用能做的事会产生巨大的不同。 这里列举了自由执行模型能够带给你的好处:链上调度、交易优先级排序等等。简单来说,runtime 升级、on_initialize、on_finalize 等一些在以太坊型的智能合约平台上不支持的事情,你在 Substrate 里都能轻易获得。 (4)无手续费 最后一个特点是无手续费。这里不是指它字面的意思,因为显然有很多 Substrate 链都设有手续费。这里的无手续费有两个含义: 第一是对于基于 Substrate 的平行链,只要你获得了一个平行链插槽,那么你就不用让你的用户去接触 DOT/KSM 或者甚至任何一种 token 了。当然,很多团队会有自己的 token,他们会想在自己的链上使用这些 token 来对用户收取手续费,这是没问题的。但是这完全取决于你的链的决定,理论上说,你不需要强制地让你的用户去使用任何交易手续费。 你可以将用户交易限制在一定的数量,或者一定的范围内,而且完全不需要引入 token。比如说,你可以有对用户发放认证,通过一个预言机检查用户拥有足够的个人特质,证明他们无法进行 DDoS 攻击,有很多方法可以做到类似的检查。这就开启了一种可能性,让无手续应用可以在平行链上运行,而这是一个非常有趣的进步,因为我认为这会开启一扇吸引大众的门,而目前我们只能吸引那些不介意拥有 token,或者已经有 token 的人,我认为这对走向大众是一种阻碍因素。 各方面技术进展汇报 接下来是对一些和 Substrate 和 Polkadot 相关的开发进展的汇报。 (1)桥 首先是桥,这可以让 Substrate 链团队把自己的独立链(solo chains)连接起来,如果出于某些原因,它们还不想成为平行链,还是处于独立链的状态。独立链会有更少的安全保障,会稍微有点延迟,但是可以获得和中继链的连接性。桥也是我们明年想做的一些事情的很重要的组件。 那么桥的进展就是,桥方面的代码审计还有大概两周完成,这实际上是第二次审计了,所以主要是一些小调整。很快会部署一个桥,那就是从测试网 Rococo 到桥测试网 Wococo 的桥,来测试一下可行性。在今年之前,我们还希望能部署中继链到中继链的桥,也就是 Polkadot 和 Kusama 之间的桥,当然前提是剩下的两周审计工作中不会发现太多重大问题。平行链到平行链之间的桥希望在明年年初能部署。 (2)XCM XCM v2 已经交付了,它是 Polkadot 0.9.11 的一部分,这个版本包含了大部分我们要做的功能。 异步错误处理程序,也就是你可以有链上代码运行,以防有一些错误发生在远程链上,而且这个功能是用一种比较好的方式来实现的,全部都带有 Dispatchables 和状态报告,允许一些 XCM 指令的状态能被报告回其他的链,鉴于其他链可能会想用代码处理器来注册该状态。 资产捕获,本质上就是在 XCM 消息结束时记住保持寄存器的内容,很多时候,不管是经过错误或者只是意外发生的,可能是伴随一条在消息执行结束时没有做好的消息,一些资产被遗留在了保持寄存器中。这个功能让这些内容能被记住,之后就可以再去拿。 Exeption handling,XCM 的语言模型中现在有 Exeption handling 了,目前我们使用的是一个虚拟机模型,我觉得是比以前更易于理解和可扩展。还有版本管理,它允许不同的 XCM 版本去同时存在于一个多链网络中。v2 的规范也写好了。 (3)平行链 下面就是平行链的进展了,我知道今天的很多观众都很关心这个方面。 目前平行链代码的功能已经完成,也就是所有的 Polkadot 规范中的安全机制都已实现、测试并审计过了。没错,审计已经完成了,对于审计中提出的修改意见,应该能在 11 月前完成一半。并且我们确实期待很快完成这些功能的初始部署,把安全性代码补充到 Kusama 上。在真正把代码投入生产环境前,我们会留出三周,但是我们认为代码不会有什么重大的问题了。所以说,根据这个就可以推算出 Polkadot 平行链上线的时间表。 我们的观点 我们自己对于代码状态的评估是,12 月平行链就能从技术上达到可用状态,可以期待一下在 10 月底部署到 Kusama 上。所以从技术的角度来说,Polkadot 目前已经可以开始准备 Lease 6 到 Lease 13 的 Auction 了。 我们还认为 Polkadot 上的平行链数量应该保持在最多为 Kusama 数量的 75% ,Kusama 是 Polkadot 的金丝雀网络,所以至少在代码成熟之前,都会保持这个比例。直到我们了解目前的架构可以处理的平行链数量、交易吞吐量、消息吞吐量。 我们认为在最初的平行链扩张期,采取更短的拍卖周期会比较合理,所以我们会继续采用之前宣布的周期,那就是每个大概每场拍卖进行两周。 未来展望 展望未来,我想稍微聊一下对近期一些行业内发生的事情和趋势的看法,以及这些事情将怎样影响 Substrate,在未来的 1 年左右你们可能会看到哪些变化。 我注意到的一件事是,为了追求高交易吞吐量,有不少的链忽视了一个事实,那就是去中心化和安全性并不是可有可无的功能,虽然如果你牺牲网络的去中心化可以拥有更高的交易吞吐量。 这也是为什么 ETH 2.0 升级用了这么长的时间,其实有很多原因,其中一个原因就是他们跟我们一样,不愿意牺牲网络的去中心化程度。如果你不愿意去这么做的话,那么网络的架构、设计,特别是安全性方面的设计,就需要更加深思熟虑。所以当你看到一些网络声称自己是有很高 TPS 的公链,那么在很多时候,这些链和一些真正的去中心化网络之间就不再是同类的比较了。 如果我们去看一下监管近况,我们会发现一些要点。我在之前一些报道中也提到过这一点,虽然我不是这方面的专家,当然也不是律师,但是我还是说说自己对一些政策文件的看法。如果我们去看 FATF,它是个国际化实体,我记得大概相当于 G20 国家联盟,他们出过一个比较清晰的政策。 查看 Gavin 对监管的看法:《Gavin Wood:监管是去中心化的驱动力》、《Gavin 专访:十年后 Web3.0 世界是怎样的?》 好消息是软件开发和运行、维护网络是无可指摘的,应该允许继续进行,无需进行监管限制,因为这就是我们开发者的生计,如果人们想去部署这类点对点的网络,那么很重要的一点就是这类活动应该是自由和不受制约的。 不过,很明显全球的监管者正在以非常严厉的眼光来审视一些其他的活动,而我觉得这些活动在大部分的点对点网络和去中心化项目中都多少有涉及,其中一些网络非常倚赖这些活动。一类是服务提供,比如 RPC、钱包、app 网站。第二类是多重签名,比如 DAO,或者你有几个指定的人可以从 DAO 金库中花钱,在 Polkadot 和 Kusama 中也存在这种情况。还有就是托管,托管钱包、非点对点的稳定币都属于这一类。最后一类我叫它便捷功能,比如一些钱包/应用,通过中心化的手段让去中心化应用更易使用,但是这一类在我观察看来应该是较晚受到监管的。 服务提供是这里面最有意思的,因为显然点对点的网络,比如以太坊,仍然高度依赖中心化 RPC 服务,有些时候还会用中心化钱包和网站去托管去中心化应用,通过观察监管者的语言,我觉得这一块应该会在不久的将来就纳入监管范围。 不过有一件事我觉得是确定的:你越中心化,就有越大的可能被监管者盯上,并严正要求你取得相关许可证;你越点对点和去中心化,这种可能性就越低,所以朝着点对点的方向发展似乎是一个合理的选择。 我在阅读这些文件的时候的另一个感想就是,似乎那些被不够点对点的、比较中性化的加密项目,会需要取得许可证,我觉得这类许可有可能会跟银行法规的标准类似。如果真的是这样的话,那么就说明大部分的加密项目,在一两年之内,可能都无法以其目前的形式继续存在了。我觉得监管可能会在两到三年内落到实处,但是早做准备总是好的。尤其是当你需要用来降低风险的技术还挺难实现的时候。 在 Parity,我们致力于将所有东西都点对点化,我们希望确保我们的技术会被划到不需要监管的那一类。这就意味着我们有很多需要着重注意的点,尤其是在去中心化方面做得不够的地方,比如说 Boot Node、RPC 节点都有中心化的成分,我们会把它朝轻客户端、类浏览器客户端方面转。在治理方面,我们会确保我们采用链上去中心化治理方式,不会触犯任何多签监管条款。还有隐私机制,比如 Mixnet。 我想强调的一点是,基于 Substrate 建立的解决方案应该是真正的 Web3.0 解决方案,应该是真正点对点的。类似的,对于 Polkadot,我们会把它打造成第一个点对点的、安全的、可扩展的自由执行平台。
4、Polkadot 系列谈之六 | 波卡白皮书深度解读:一种异构多链架构的畅想 https://www.chainnews.com/articles/300118785646.htm Polkadot 是被誉为“以太坊隐形大脑”的 Gavin Wood 领军的项目,是 Web3.0 版图上不可或缺的板块。 Polkadaot 独特的跨链机制旨在将当下各自独立的区块链网络串联起来,让不同链间可以进行通信和数据传递,或将成为下一代价值互联网的基石。 除了更为宏大的区块链技术框架,在实现更公平的点对点数字交易等方面,Polkadot 都意义非凡。 加密谷长期关注 Polkadot 项目,此前曾从不同维度对其进行过深度介绍。我们将持续关注项目发展进程,陆续刊载系列文章,敬请期待。 “系列谈”此前篇目请见: 《独家编译 | 区块链互操作性深度解读:Cosmos vs.Polkadot (上)》 《独家编译 | 区块链互操作性深度解读:Cosmos vs.Polkadot (下)》 《独家深度 |一文读懂七大区块链项目基金会运作模式》 《Polkadot 系列谈之一 |「地表最强」跨链项目的缘起与沿革》 《Polkadot 系列谈之二 | 一文读懂 Cosmos 和 Polkadot五大差异》 《Polkadot 系列谈之三 |跨链机制或将引发去中心化应用的第三次浪潮》 《Polkadot 系列谈之四 | NPoS 创新共识下的 Staking经济》 《Polkadot 系列谈之五 | 波卡创始人 Gavin Wood眼中的加密世界》
2介绍 区块链已经承诺了它的伟大意义,能够应用于包括物联网(IOT)、金融、治理、身份管理、去中心化互联网和资产追踪等多个领域。然而抛开这些技术承诺和大话,我们还没有看到现有技术下,出现重大的关于现实世界的应用部署。我们相信这是因为现有技术的5 个关键缺陷:
伸缩性(Scalability):全球范围内花费了多少计算、带宽和存储的资源,来处理单个交易?峰值情况下能处理多少交易?
隔离性(Isolatability):多参与方对于应用的差异化需求,能否在同一个框架下接近最优程度地满足?
开发性(Developability):工具的工作效果有多好?APIs 是否已满足开发者的需求?教程资料是否可用?是否集成权力?
治理性(Governance):网络是否保留了能够随着时间进化和适应的灵活性?制定决策能否高度地包容、合理和透明,来提供去中心化系统的高效领导力。
应用性(Applicability):技术是否真的解决了用户的刚性需求?是否需要其他的中间件来嫁接真实的应用? 当前的工作,我们主要面向前两个问题:伸缩性和隔离性。也就是说,我们相信 Polkadot 架构可以在这两个方面,提供有意义的改进。 当前,例如 Parity 以太坊客户端这样的高性能区块链实现,已经可以在消费级高速硬件上每秒处理超过 3000 笔的交易。然而现实世界的区块链网络却限制在30笔交易每秒的情况下。这种限制主要是源于目前同步(synchronous)的共识机制,需要充分的计算缓冲时间来安全地处理,也就加重了其必须对于慢速硬件的支持。这归咎于其底层的共识架构:状态转换机,或者这种让所有参与方校对和执行交易的方式,在本质上将其逻辑绑定在了共识一致性(canonicalisation)的设计上,或者需要让所有参与方都同意所有的可能性、有效性和历史。 这种说法即适用于类似 BTC 和以太坊这样的工作量证明(POW)系统,也适用于 NXT和比特股这样的权益证明(POS)系统,他们都本质上受制于同一个障碍,但这些共识算法却是个能让区块链成功的简单策略。然而,在一个协议里紧密捆绑这两个结构,我们也就捆绑了多个不同风险偏好、不同伸缩性需求、不同隐私需求的角色和应用。一种特征满足不了所有人的需求。因为这种场景,产生了很多次的广泛呼吁,但网络只能倾向于更保守,服务于少数人,最终导致在创新能力、性能和适应性方面的失败,非常戏剧化。 有一些系统例如公证通(Factom),整个地去除了状态转换机。然而大多数应用场景都需要依赖一个共享的状态机,来支持状态转换的功能。去除它只是隐藏了问题,却没有给出真正替代性的解决方案。 现在看起来清楚了,因此一个合理的方向是:像路由对于可伸缩去中心化计算平台那样,解耦共识组件和状态转换组件。而且不出意外的话,这也是 Polkadot解决伸缩性问题的策略。
2.1 协议、实现、网络 和 BTC、以太坊一样,Polkadot 希望一开始的时候只是个网络协议,并且是运行这一协议的主要公有网络(目前假设)。Polkadot倾向于是个免费和开放的项目,协议在一个知识共享的许可证上制定,代码托管在 FLOSS许可证下。这个项目以一种开放的状态开发,接收各方面有用的捐助。一个微意见提交系统(RFCs),但不像 Python改进议程那样,会提供一种公众协作参与协议修改和升级的方式。 我们对 Polkadot 协议的初始实现,将称为 Parity Polkadot Platform,会包含协议的完整实现和 API 接口。像其他Parity 的区块链实现一样,PPP会设计成通用目的的区块链技术栈,并不限定于公有网络、私有网络或联盟网络。目前为止的开发已经被包括英国政府在内的几方资助。 但是,这篇论文还是在公有网络的场景下。我们在公有网络下预见的功能,是一个完整设想(比如私有或联盟网)的子集。另外在这个场景下,可以清晰地描述和讨论Polkadot 的所有方面。这也是说读者需要知道,在非公有(有权限的)场景下,一些特定的机制(比如和其他公有网络的交互)并不直接和Polkadot相关。
2.2 前人工作 从状态转换中解耦底层的共识,已经私下讨论了两年,在以太坊的最早期的时候 Max Kaye 就提议过。 一个更复杂的可伸缩方案叫做 Chain fibers,这要回溯到 2014 年 6 月,在那年底也发表了。它创造了一个关于单个中继链(relay-chain)和多个同构链,可以透明地跨链执行的先例。退相干性(Decoherence)通过交易延迟(latency)来实现,这就使需要更长时间,来处理需要协调系统多个部分的交易。Polkadot借鉴了很多它的架构以及随后跟很多人的讨论,虽然跟它的设计和规定也很不一样。 然而目前并没有运行在生产环境下的系统可以和 Polkadot相比,有的也只是提出了些相关性功能,很少有本质层面的细节。这些提议可以归纳为:丢弃或减少状态机全局相关性的系统、试图通过同构分片提供全局相关性的单例状态机系统、目标仅是异构性(heterogeneity)的系统。 2.2.1 没有全局状态的系统 公证通(Factom)演示了个没有有效性的一致性系统,能够高效地记载数据。由于没有全局状态和其带来扩展性问题,它可以被看做是一个可伸缩的方案。然而前面也提到了,严格上来说它只解决了很少的问题。 Tangle是个关于共识系统的概念性尝试。不把交易排序再打包到区块中,而是通过串联的共识得出一个全局的一致性状态改变排序,它在很大程度上抛弃了高度结构化的排序想法,而是推出一个有向无环图,后续的有依赖的交易通过明确的指向,来帮助前面的交易达成一致。对于任意的状态改变,这个依赖图就会很快地变得无法处理,然而对于更简单的UTXO 模型,立即就变得合理了。因为系统总是松散地连贯,而且交易通常是相互独立的,大规模的全局并发变得非常自然。使用 UTXO 模型确实可以让Tangle定位成价值转移的货币系统,而并没有其他的更多通用和可扩展的功能。因为没有了全局依赖性,而和其他系统的交互又需要确定性地知道其状态,这种方法就变得不切实际了。 2.2.2 异构链系统 侧链是个支持 BTC 主链和附属链之间去信任交互的提案。但并没有任何和侧链进行富(rich)交互的具体规定:交互被限定在允许和侧链之间相互托管对方的资产,也就是行话所说的双向锚定(two-way peg)。最终也是为了做个框架,通过锚定 BTC 链和 其他链,允许在 BTC 协议之外进行外部交易,为 BTC 添加附属的外围功能。从这方面讲,侧链系统更多着眼于可扩展性而不是可伸缩性。 根本上讲,侧链确实没有关于有效性的条款,从一条链(比如 BTC)的代币转到另一条链上,安全性只是寄希望于侧链能否激励矿工来一致性地验证交易。BTC 网络的安全性无法简单地在其他链上起作用。进而一个确保 BTC 矿工联合挖矿(复制他们的一致性算力到侧链上),并且同时验证侧链交易的协议也被提出来了。 Cosmos 是个延续侧链思路提出来的多链系统,替换中本聪的 PoW 共识算法为 Jae Know 的 Tendermint共识算法。本质上,它包含多个使用独立 Tendermint 实例的区块链(在空间 zone中运行),和一个使用去信任通信的中心(hub)链。跨链通信仅限于转移数字资产(也就是代币),而不是任意信息,然而这种跨链通信是可以返回数据和路径的,比如给发送人通知转账的状态。 和侧链一样,空间链上验证人的经济激励问题也没有解决。一般的假设是每个空间链会各自持有通胀增发的支付代币。设计仍然还比较早期,现阶段的也缺乏在全局有效性上建立可伸缩一致性的经济手段细节。然而相比于那些需要强耦合的系统,为了空间链和中心链间的松耦合性,需要给空间链的参数添加更多灵活性。 2.2.3 Casper 目前关于 Casper 和 Polkadot 之间,还没有完整的讨论和比较,即使是公平和彻底(也不准确)地描述两者。Casper 是正在重塑 PoS的共识算法,它研究如何让参与方在最终会确定的分叉上押注。本质上,需要考虑即使是长程攻击的情况下,也要保证应对网络分叉的健壮性,还需考虑基础以太坊模型上的可伸缩性。因此,在本质上Casper 协议的目标比 Polkadot和以往项目要复杂的多,也偏离了基础的区块链模型。它仍然还没有做出来,不知道将来如何运作,也不知道最终会开发出来的样子。 然而 Casper 和 Polkadot 都代表了有趣的新一代协议,对于以太坊的争论,本质上也是他们的终极目标和实现路径上的差异。Casper是以太坊基金会主导的一个项目,只是被设计用来作为 PoS协议的替代,没有从本质上打造可伸缩区块链的意愿。关键还需要一次硬分叉来升级,而不能时可扩展的,因此所有的以太坊客户端和用户都需要升级,否则就得留在原来的前途不明朗的分叉上。因此,这类协议在去中心化系统上的部署会很困难,需要紧密的协调。 Polkadot 在几方面上不同;首先而且也是最重要的,Polkadot将被设计成完全可扩展和可伸缩的区块链开发、部署和交互测试平台。他将被设计为面向未来的、可以吸收最新的可用区块链技术的平台,且不需要过于复杂的去中心化协调和硬分叉。我们已经预见到了几个应用场景,例如高度加密的联盟链和低区块时间的高频链等,它们不太可能在近期的以太坊上实现。它们最终和以太坊之间的耦合度也会很低,以太坊上也没有支持两者间非信任交互的想法。 简言之,尽管 Casper / 以太坊 2.0 和 Polkadot有一些相似点,我们相信从本质上它们最终的目标是不一样的,并非竞争,在可预见的将来,两个协议会大概率地并存。
3概要 Polkadot 是一个可伸缩的异构多链系统。这意味着不像以往那些专注于不同程度潜在应用功能的单个区块链实现,Polkadot本身被设计成不提供任何内在的功能应用。 Polkadot 提供了中继链(relay-chain),在其上可以存在大量的可验证的、全局依赖的动态数据结构。我们称这些平行的结构化的区块链为平行链(parachains),尽管也不要求它们必须是一条链。 换句话说,Polkadot 会被设计成一个独立链的集合(例如包含以太坊、以太坊经典、域名币、BTC),除了两个非常重要的点: *合并的安全性 *去信任的跨链交易性 这两点也是我们称 Polkadot 为可伸缩的原因。从原则上,一个问题在 Polkadot上被彻底解决了:可以向外扩展,会有非常大数量的平行链。尽管每条平行链在各方面都通过不同的网络模式进行平行管理,但这个系统却有可伸缩的能力。 Polkadot提供了一个尽量简单的架构,把大部分的复杂性都放在了中间件上。这是个刻意的决定,为了试图减少开发的风险,使必备的软件可以在短时间内开发出来,还能对安全性和健壮性持有信心。 3.1 Polkadot 的哲学 Polkadot需要提供一个绝对坚实的基座,来在其之上建设下一代共识系统,覆盖从生产级别的成熟设计到初期想法的所有风险。通过对安全性、隔离性、通信能力提供强有力的保证Polkadot 能够允许平行链从一系列特性中选择适合它们自己的。的确,我们预见了各种实验性的经过考虑的区块链特性。 我们看到,传统的高市值区块链(例如 BTC 和 Zcash)、低市值的概念性区块链和接近零手续费的测试网,是并存在一起的。 我们看到,全加密的暗黑联盟链和高功能性的开放区块链(例如以太坊)也并存在一起,甚至还为之提供服务。 我们看到,实验性的新虚拟机区块链,比如主观时间计费的 Wasm 区块链,在将难度计算问题从类似以太坊的区块链方式,修改成类似 BTC 的区块链方式。 为了管理区块链升级,Polkadot 将内生支持某种形式的治理结构,很可能基于现有的稳定政治体系,会有一个两院结构,类似于 Yellow Paper Council。底层权益代币持有者作为最高权力机构,会有全民投票控制权。为了反映用户的需求、开发人员的需求,我们期望建立一个合理的两院结构,采纳用户的意见(由绑定的验证人决定)、主要客户端开发者和生态系统玩家的意见。代币持有者会保留最高的合法权,可以形成一个最高法庭来参政、议政、替换或解散这个架构,还有那些我们不怀疑的最终需求。 借用一句马克吐温的谚语:“政府和尿布都得经常换,而且理由都一样”。 然而在大范围共识的机制下组织参政会很琐碎,更多关于替换和新增的质的改变,希望既不是通过非自动的弱法令(例如通过块高度和新协议的形式化证明文档的哈希)来达到一致性,也不是通过在核心共识算法中包含一个高效的高级语言,来改变他自身可能需要改变的各个方面。后者是一个最终目标,然而为了落实一个合理的开发路线图,更可能选择前者。 Polkadot 看重的主要原理和规则有: *最小:Polkadot 需要有尽可能少的功能性。 *简单:只要他们可以推给中间件、放在平行链、或用下面要讲的一种优化手段,就不在基础协议里添加多余的复杂性。 *通用:没必要在平行链中添加任何要求、约束或限制;Polkadot 需要成为共识系统开发的基石,要尽量通过给模型加入最具适应度的扩展和优化。 *健壮:*Polkadot 需要提供一个稳定的基础层。为了经济稳定性,需要采用分散的方法,来降低高额奖励这个攻击向量可能引发的问题。
4Polkadot 的参与方 有四个基本的角色在维持 Polkadot网络:收集人(collator)、渔民(fisherman)、提名人(nominator)、验证人(validator)。在 Polkadot的一个可能实现里,最后一个角色有可能会被拆分成两个:基础验证人和可用保证人(guarantor),将会在 6.5.3 节讨论。 图片: https://uploader.shimo.im/f/CwxKq04Sa7BWM2Zo.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 图 1. Polkadot 四个角色的交互
4.1 验证人 验证人有最高权限,帮助在 Polkadot网络里打包新区块。验证人需要抵押足够多的押金,因为我们允许其他有资金的提名人推举一个或多个可以代表他们的验证人,所以验证人一部分的押金并不是他们自己所拥有的,而是属于提名人的。 一个验证人必须在高可用和高带宽的机器上运行一个中继链的客户端。每个区块上,节点都必须准备接收一个已提交的平行链上的新区块。这个过程涉及接受、验证、再发布候选区块。验证人的任命是确定性的,但实际上也很难预测。因为不能期望验证人拥有所有平行链的全同步数据,所以他们希望把这个提议平行链新区块的工作指派给第三方,也就是收集人。 不同的验证人小组一旦都确定性地批准了自己所属平行链的新块,他们就必须开始批准中继链自身的区块。这包括更新交易队列的状态(也就是从一条平行链的出口队列转移到另一条平行链的入队列)、处理已批准的中继链的交易集合、批准最终的区块、吸收平行链的最终改变。 在我们选择的共识算法下,会惩罚一个没有履行他们职责的验证人。最开始如果不是有意的错误,就只是会扣留他们的奖励,但如果是重复的错误会扣减他们的押金(通过烧毁),例如双向签名(double-signing)或合谋提供一个非法区块等可证明的恶意行为,会导致他们丧失全部的押金(烧毁一小部分,大部分奖励给信息提供方和诚实的验证人)。 在某种程度上,验证人和目前 PoW 区块链的矿池相似。 4.2 提名人 提名人是一个拥有权益的群体,他们把安全性押金委托给验证人。他们没有更多的角色,除了通过有风险地投放资本来表示:他们信任某个特定的验证人(或群体)可以代表他们维护整个网络。按照他们的入金比例,他们也会受到和验证人总押金同样比例的奖励和扣减。 和下面的收集人一样,提名人和目前 PoW 网络的矿工相似。 4.3 收集人 交易收集人是帮助验证人制造有效的平行链区块的群体。他们会运行一个特定平行链的全节点,这也意味着他们有全部的必要信息,可以打包新块并执行交易,就跟目前 PoW区块链的矿工一样。在正常情况下,他们会收集并执行交易,并创建一个”未密封”(unsealed)的区块,再加上一个零知识证明一起提交给一个或多个当前负责提议(proposing)该平行链区块的验证人。 关于收集人、提名人、验证人的精确关系可能还会修改。起初,我们希望收集人和验证人能够紧密合作,因为可能只有一些(甚至一个)交易量很小的平行链。最初的客户端实现会包含一个RPC接口,来支持一条平行链的收集人节点把可证明的有效平行链区块,无条件地提供给一个(中继链)验证人节点。由于维持所有的全同步平行链的成本越来越高,所以我们设计了附加的结构,有助于分离独立的、经济驱动的、和其他的参与者。 最终,我们希望看到收集人群体为了更多手续费,竞争性地去收集信息。在一段时间内,为了持续增长的份额收益奖励,这些收集人可能只服务于特定的验证人群体。或者自由职业(freelance)的收集人也可以简单地创建一个市场,提供有效的平行链区块,而不是获得立即支付的竞争性份额奖励。同样地,去中心化的提名人群体也会允许多个有抵押的参与者来协调和分担验证人的职责。这种能力保证了参与的开放度,有助于成为更加去中心化的系统。 4.4 渔民 不像其他的两个参与方,渔民并不直接和区块打包的过程相关。他们是独立的 “赏金猎人 “,激励他们的是一次性的大额奖励。 准确地说,由于渔民的存在,我们才能减少恶意行为的发生,即使发生希望也只是因为私钥不小心泄露了,而不是故意的恶意企图。起这个名字的出发点是考虑到他们期望收益的频率和最终奖励的大小。 渔民只要及时举报并证明至少一个有抵押的参与方存在非法行为,他们就能获得奖励。非法行为包括对两个有相同父块的不同区块进行签名,或在平行链上批准一个无效区块。为了预防由于私钥泄露给渔民所导致的过渡奖励,渔民上报关于单个验证人的非法消息签名的基础奖励是从最小开始的,这个奖励会随着其他渔民上报更多的非法签名而逐渐增加。依据我们基本的安全性假设:至少三分之二的验证人是诚实的,渐近线将设置在66%。 渔民某种程度上和目前区块链系统的全节点相似,他们所需要的资源相对较少,也没必要承诺稳定的在线时间和大的带宽。渔民有如此大的不同,所以他们只需要提交很少的押金。这个押金用于预防浪费验证人计算时间和计算资源的女巫攻击。它是立即可以提现的,很可能不会比等值的几个美金更多,但如果监测到一个不当行为的验证人,可能会收获很大的奖励。
5设计综述 本章试图给出一个系统的全局完整描述。对系统更加深入的解释会在接下来的一章中给出。 5.1 共识 在中继链上,Polkadot 通过一个现代的异步(asynchronous)拜占庭容错(BFT)算法达成对有效区块的相互共识。算法受简单的Tendermint 和 HoneyBadgerBFT 启发。后者在有任意网络缺陷的架构下,只要满大部分验证人是诚实的,就能提供了一种高效的容错算法。 也许一个权限证明(PoA)模式的网络就足够了,然而 Polkadot是个可以在全开放和公开的场景下部署的网络,不需要信任任何特殊的组织和当权者来维护它,因此我们需要一种管理验证人群体并且激励他们守法的方法。我们选择使用以PoS 为基础的共识算法。 图片: https://uploader.shimo.im/f/Y5wiT7tzuGJdeHcc.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 图 2:Polkadot 的概括性原理图 图 2展示了收集人收集并且广播用户的交易,也广播候选区块给渔民和验证人。展示了用户提交一个交易,先转移到平行链外部,然后通过中继链再转移到另一条平行链,成为一个可以被那里的账户执行的交易。 5.2 权益证明 我们假设网络可以度量每个账户有多少权益(stake)。为了更轻松地和现有系统对比,我们把度量单位称为“代币(tokens)”。不幸的是由于它仅仅能作为对账户简单的价值度量,也没有任何个性化,因此多种原因使这个术语并不那么理想化。 通过一个被提名的权益证明(Nominated Proof-of-Stake NPos)结构,我们猜想验证人的选举不会很频繁(很可能是一个季度一次,最多一天一次)。通过按比例分配的增发出来的代币(很可能大约 10%,最多每年100%)和收集到的交易手续费来进行激励。虽然货币增发一般都会造成通胀,但因为所有代币持有者都有公平参与的机会,所以代币持有者的资产不会随着时间而遭受损失,他们会很开心地参与到该共识机制中来。全网权益证明的开展所需的抵押必须达到一个特定的最小比例。会根据市场机制,达到有效的代币增发这个目标。 验证人严重依赖他们抵押进来的权益。现存验证人的押金会从他们离职的时候开始,要再保留更长时间(也许 3个月左右)。这么长的押金冻结期是为了还能惩罚将来的不当行为,直到区块链周期性的检查点到来。不当行为会遭到例如减少奖励等的惩罚,如果是故意破坏网络的完整性,验证人将会损失部分或全部的权益,转移给其他验证人、信息提供者或全部权益持有者(通过烧毁)。例如一个验证人试图同时批准不同分叉上的两个分支(有时也被称为短程攻击),就会被后面的方法鉴别并遭到惩罚。 检查点锁定器(checkpoint latch)能规避长程 “无权益抵押”(nothing-at-stake)攻击,防止比一般长度更长的高度危险的链重构(chain-reorganistation)发生。为了保证最新开始同步的客户端不会被误导进错误的链,网络会出现定期的“硬分叉”(最长也就是验证人的押金冻结期),把最近检查点区块的哈希值硬编码(hard-code)进客户端。将来通过逐步递减有限链的长度(finite chain length),或周期性地重置创世块(genesis-block),这种方法会运行得很好。 5.3 平行链和收集人 每条平行链将给中继链提供同样的安全性保证:平行链的区块头会被包含进中继链的区块中,还跟着一些确认信息,用来保证不会发生链重构或双重花费(double-spending)。类似于 BTC 侧链和联合挖矿的安全性保证,Polkadot也强力保证平行链状态交易的有效性。会依据密码学算法,把验证人随机地分成很多个组。一条平行链对应一组,甚至每个块的组也都可能不一样。这个设置意味着中继链至少也要和平行链的出块时间一样短。本文不讨论分组的特定决定方式,可能要么是围绕类似RanDAO 的提交 - 披露(commit-reveal)框架,要么结合平行链前一个区块的密码学哈希值。 这样的验证人组需要提供平行链的候选块,还要保证它们是有效的(否则损失押金)。有效性围绕两个重要的点:第一,它是内生有效的,所有的状态转换被公正地执行,包括引用的外部数据也被公正执行(比如交易)。第二,参与方需要可以简便地访问候选块的任何外部数据,例如外部交易等,然后就可以下载这些数据并手工执行候选块。验证人可以提交没有包含任何外部交易数据的空块(null),如果他们这样做,就要承受奖励减少的风险。他们和收集人在平行链的一个gossip 协议上工作,收集人把交易收集到块里,并且要提供一个非交互的零知识证明(noninteractive zero-knowledge),用来证明本子块的父块是有效的(为该工作收取任何手续费)。 防止垃圾(spam)数据的方法留给了平行链协议自身:中继链本质上不规定 “计算资源计量” 和 “交易费”。本质上也不强制平行链规定相关协议(尽管权益持有者不太可能愿意接纳一个没有提供合理机制的平行链)。这里明确地说明了并不会都像以太坊的手续费规则,也可以类似 BTC 的区块链手续费模型,或其他任何还没有提出来的垃圾预防模型。 Polkadot 的中继链本身将很可能存在一个类似以太坊的账户和状态模型,可能是 EVM的衍生版本。因为中继链节点将需要做大量的其他计算,将会通过提高手续费尽量减小交易吞吐量,我们的模型还会包含块大小的限制。 5.4 跨链通信 Polkadot 最关键的部分是跨链通信。因为在平行链间可以存在某种信息通道,我们才说 Polkadot 是可伸缩的多链系统。在 Polkadot中,通信可以很简单:一条平行链中的执行交易的时候(依据那条链的逻辑),可以给第二条平行链或中继链转发一个交易。目前生产环境中的区块链外部交易,都只能是完全异步的,他们并没有给它的来源方返回任何信息的原生能力。 图片:
5.5 Polkadot 和以太坊 归功于以太坊的图灵完备特性,至少在简单的可论证的安全性边界内,我们期望 Polkadot 和以太坊有丰富的交互可能性。简而言之,我们预想到了,从Polkadot 出来的交易,可以让验证人先签名,然后再喂给以太坊,在那里通过一个交易转发(transaction-forwarding)合约来解释和执行。反方向,我们也预想到了,从以太坊上的一个 “外向合约”(break-outcontract)中的特殊格式日志,可以快速地证明一个消息是否真的要被转发。 5.5.1 从 Polkadot 到以太坊 通过选择一个拜占庭容错算法,验证人经由授权投票产生的一系列权益持有者组成,我们能够获得一个安全的共识机制,用不经常更改的合适数量的验证人。在一个总共有144 个验证人的系统内,4s 出块时间和 900 个块的最终性(允许举报、惩罚、修复类似双向投票的恶意行为),一个区块的有效性可以合理地考虑为用最少 97个签名证明(144 的三分之二再加一), 然后跟着的是 60 分钟无风险注入的验证时间。 以太坊可以包含一个控制和维护 144 个签名的 “内向合约”(break-in contract),由于椭圆曲线数字签名的验签操作只要花费 EVM 3000gas 的计算量,而且因为我们只希望验证操作发生在大多数的验证人里(而不是全体),以太坊确认一个从 Polkadot 来的指令的基础花费不会超过300,000 gas—— 仅仅是区块 550 万 gas 限制的6%。增加验证人的数量(只有在处理数十个区块链的时候才必要)不可避免地会增加成本,然而很明显可以期望到随着以太坊技术的成熟和架构的改进,交易吞吐量会随着时间而增加。另一个事实是不是所有的验证人都会参与(例如只有最高押金的验证人才会做这个任务)这种结构的限制会比较合理。 假设这些验证人每天轮换(更保守的、更可能接收的是每周,甚至每月),网络给维持这个以太坊转接桥的成本大约是 540,000 gas 每天,或者按照当前的gas 价格,45 美金一年。一个通过转接桥的基本转发交易会花费大约 0.11美金;当然另外的合约计算会耗费更多。通过缓存和捆绑多个交易,内向的交易花费可以简单地分担,减少每个交易的花费。如果一次转发需要凑够 20个交易,那么转发一笔基本交易的花费会降低到大约 0.01 金。 在这个模型中,Polkadot的验证人节点除了签名消息之外只需要再做很少的事情。为了能够把交易路由到以太坊网络里,我们假设任何一个验证人需要属于以太坊网络,更可能的只需提供很少的奖励给第一个在网络上转发消息的人(奖励会支付给交易发起人)。
5.5.2 从以太坊到 Polkadot 使用一个叫做日志的概念,把交易从以太坊上转发到 Polkadot 上。当一个以太坊合约希望派生出一个交易给 Polkadot上面的某一条平行链,它只需简单地调用一个特殊的 “外向合约”就好。那个外向合约会索取任何必须的费用,然后生成一个日志打印指令,以便于通过梅克尔树和有块头哈希来证明它的存在。 在下面的两个情况中,可以非常简单地证明有效性。原则上,唯一的要求是每个 Polkadot节点都要运行一个全同步的标准以太坊节点。然而这本身就是非常重的依赖。一个更轻量的方法是提供一个简单的证明,仅需要包含正确执行该交易所必须知晓的以太坊的那部分状态树,然后再检查日志的有效性。这种类似简单支付验证(SPV-like)的证明不需要提供大量的信息。更方便的是,验证人可能完全不需要自己运行节点,Polkadot内的押金系统能支持第三方参与者来提交块头,因为其他第三方(也就是所说的渔民)也可能提供一个他们块头是无效的证明(具体地说就是状态根和回执根是错误的),所以这些人也冒着损失他们押金的风险。 在一个类似以太坊这样的无最终确定性(non-finalising)的 PoW网络上,不可能存在最终可证明的一致性。为了适应这个,程序需要依赖一定的块确认数量,或者直到那个依赖的交易已经在链内某一特定深度了。在以太坊上,这个深度从最脆弱的1 个块(网络都还不完全知道)延伸至 1200 个块(从 Frontier 上线到以太可交易)。 在 Homestead 的稳定版本上,大部分交易所选择了 120 个块这个数字,我们也可能会选择相近的参数。所以我们可以想象 Polkadot这边的以太坊接口有一些简单的功能:可以接受以太坊网络的新块头,并能验证它的 PoW,可以结合一个有足够深度的块头(还有 Polkadot内转发的相应信息),来验证从以太坊那边的外向合约打印出来的特定日志的证明,还可以接收关于之前收到的但还没有确定的块头里包含无效的回执根的证明。 需要有一个转发激励机制,才能够真正地在 Polkadot 网络里得到以太坊块头的数据(还有任何关于有效性和一致性的 SPV证明)。这可能设计成只是个简单的支付行为(由在以太坊那边收集的手续费资助),转给任何能够提供一个有效块头的人。为了能够应对分叉,验证人需要保留最近几千个块的信息,要么由协议原生支持,要么通过中继链上的合约。 5.5.3 Polkadot 和 BTC Polkadot 和 BTC 的交互是非常有挑战性的:从两边的网络角度考虑,一个所谓的 “双向锚定”架构会非常有用。然而由于 BTC 的局限性,如何提供一种安全性的锚定个是非常艰难的任务。可以使用类似以太坊的流程,从 BTC 转发一个交易到Polkadot:由一个受 Polkadot 验证人控制的 “外向地址”(break-outaddress)来托管转账过来的代币(和附属的数据)。可以通过结合一个确认期,来激励先知(oracles)提供 SPV证明,先知们通过标识一个非一致性的区块,来证明一笔交易存在双花的可能。任何在外向地址里托管的 BTC 原则上也被相同的验证人群体控制。 问题是如何保证这些 BTC,是被轮换的验证人集合所控制的。相比于以太坊那样可以根据在合约内任意组合签名规则的方法,BTC 的局限性就更多了,大部分的 BTC 客户端只接受最多3 方的多重签名。扩充至 36个或者大家希望的最高至上千个的终极提议,在现有的 BTC 协议里还不可能实现。一个选择是修改 BTC 的协议来支持这个功能,然而硬分叉在 BTC 的世界里非常难以安排和讨论。另一个可能性是使用门限(threshold)签名的方法,用密码学的结构来构造一个被被多个私钥片段共同控制的公钥地址,要制造一个有效的签名需要这些人的大部分或全部人都参与。不幸的是,和 BTC 的ECDSA 相比,门限签名计算起来非常耗资源,而且是多项式级别的复杂度(polynomial complexity)。 由于入金的安全根本性由有抵押的验证人决定,所以另一个选择是减少多重签名的私钥持有人数量至只有重度质押的验证人才能参与,这样门限签名就变得可行了(或者最糟糕的情况,也可能直接用 BTC 的原生多重签名)。由于要预防验证人的非法行为,这个方法会降低可托管的 BTC 总量。然而这是一个优雅的妥协,可以简单地设置能够安全地在两个网络里的转移的基金总额上限(验证人攻击失败可能会受到的押金损失,和攻击成功可能的会收到的 BTC 潜在收益对比)。 因此,我们认为在现有的 BTC 框架下,开发出一个能够在两个网络间安全转移 BTC 的平行链是不现实的,尽管如此,BTC 的持有者还可以在不确定的将来协调这些工作。
6协议细节 本协议可以大致分为三个部分:共识机制、平行链接口、跨链交易路由系统。 6.1 中继链操作 中继链会类似以太坊,也是基于状态的,包含一个账户信息到状态存储的映射关系,其中信息主要包含余额和交易计数器(防止重放)。把账户系统放在这里的目标是:记录每个身份在系统里控制了多少权益。但还有一些值得注意的差异: *不能通过交易部署合约;这是为了让中继链尽量缺乏功能性,不支持公开部署合约。 *没有资源计数器(gas);因为公众能够调用的一些功能是固定的,gas 记录系统的原理就不适用了。因此在所有功能中,会使用一个更通用的手续费标准,这样就能更高效地执行那些动态代码,交易格式也会更简单。 *会有一些包含特殊功能的默认合约,他们管理交易的自动执行和网络消息的输出。 中继链会有一个基于 EVM 的虚拟机,但为了最大程度地简化会做很多修改。它会有一些内置合约(类似于地址在 1-4之间的那些以太坊合约)运行平台的特定功能,包括共识合约、验证人合约、平行链合约。 如果不用 EVM,很有可能会选择 Web-Assembly (Wasm);这样的话,所有结构还是相似的,但是这些基于 Wasm的内置合约使用的是通用功能的语言,而不再是 EVM 上面的那些带有很多限制的不成熟语言。 还可能借鉴目前以太坊上衍生出来的其他方面的概念,例如在 Serenity版本中提出来一些改变,比如为了能在一个块里并行执行那些没有状态冲突的交易,将交易的回执格式简化等。 Polkadot 有可能会部署一个类似于 Serenity的纯净(pure)区块链系统,它不包含链的任何基础协议。但我们觉得这会带来更多的复杂性和开发不确定性,所以不太值得在目前阶段就去实现这么一个更高效且简洁的伟大协议。 为了管理共识机制,需要很多小片儿的功能:验证人集合、验证人机制、平行链等。这些都可以放在一个整体的协议中。然而为了实现模块化,我们会把这些描述成中继链的合约。这意味着他们都是中继链共识机制管理的对象(类似面向对象语言),但不一定是类似EVM 的字节码,也不一定能通过账户系统寻址。 6.2 权益合约 这个合约管理着验证人集合: *哪些账户是验证人; *哪些在短期内可以变成验证人; *哪些账户为了提名验证人而质押了权益 *每个人的属性,包括余额、可接受的押金比例、地址列表、会话(session)身份 它让账户在想成为验证人的时候可以来注册(需满足某些要求)、也可以提名某用户、在想退出验证人角色的时候还可以来退出。它自身还包含了一些用于验证和达成一致性的功能。 6.2.1 权益代币的流动性 通常我们希望能从网络中把尽可能多的权益代币都抵押进来,因为这关系到抵押权益的总市值和网络的安全性。这可以很简单地通过货币增发和收益分发来激励验证人。然而,这么做会出现一个问题:如果代币都被抵押在权益合约里,用于防止作恶,那么如何保证代币在一定程度上的基本流动性,进而支持价格发现呢? 一种方法是提供一个前向衍生合约来管理由抵押代币衍生出来的二级代币。但这在非信任的情况下很难实现。这些衍生代币无法等值交易,原因就和欧元区的不同政府发行的债券一样:抵押的代币有可能被扣减而价值降低。至于欧洲政府,他们还可能会违约。对于由验证人质押而来的代币,要考虑到验证人的恶意行为可能会遭到惩罚的情况。 基于我们的原则,我们选择了一种更简单的方案:不能把所有的代币都质押进来。这意味着一部分(可能20%)代币会被强制保持可流通的状态。尽管从安全的角度上讲,这个方案不完美,但也没有从根本上影响网络的安全。相比于 100% 的质押,也将只可能没收 80%的权益作为赔款。 我们还将会使用一个反向拍卖机制来公平地决定质押代币和流通代币的比例。有兴趣成为验证人的代币持有者可以给权益合约提交一个请求,说明他们希望支付的最小比例。每次会话(会话可能每个小时算一次)开始的时候,系统会根据每个意向验证人的押金和支出比例来填满验证人的插槽。一个可能的算法是从提交押金的验证人中,选择那些押金满足如下条件的人:押金不高于“总押金目标 / 插槽数量” 且不低于 “次低押金” 的一半。如果不够填满这些插槽,那么我们会迅速降低这个 “次低押金” 来满足条件。 6.2.2 提名 用户可以把手中的权益代币非信任地交给一个已激活的验证人,让他们来履行验证人的职责。提名通过一个 “批准 - 投票”系统来完成。每个准提名人可以给权益合约提交一个声明,指出他们信任的可以履行职责的一个或多个验证人的身份。 在每个会话期间,提名人的押金会散布给一个或多个代表他们的验证人。这些验证人的押金是等额分配的。提名人的押金用于验证人承担他们的责任,将能够获得利息或承受相应的扣减。 6.2.3 押金没收 / 烧毁 验证人的某些行为会导致惩罚性地没收他们的押金。如果押金降低到允许的最小值,会话就会提前结束,另一个会话开始。一个不完整的将导致惩罚的行为列表: *属于一条平行链的验证人小组,却不为该平行链的区块提供合法性验证; *签名了该平行链一个不合法的区块; *不去处理出口队列中被投票为已生效的消息; *不参与到共识流程中; *在中继链两个竞争性的分叉上同时签名。 有些行为会威胁到网络的完整性(例如签名不合法的平行链区块,或者签名多个分叉),为了驱逐这些验证人,会没收他们的押金。另外还有一些不那么严重的行为(例如不参与到共识流程中)或者那些无法清晰判别的行为(例如处于一个低效的小组),只会导致一小部分的押金被处罚。在后一种情况中,可以采用一个二级小组的搅拌功能来让恶意节点遭受到比正常节点更多的惩罚。 因为实时同步每条平行链的区块是个非常大的工作,所以在某些情况下(多叉签名和不合法签名),验证人无法很方便地检测到自身的不当行为。在这里有必要指出验证人之外的一些参与方也可以举报这些非法行为,并从中获得奖励,但他们和渔民还不太一样。 因为有些情况非常严重,我们希望可以很简单地从没收的押金里支付奖金。我们通常倾向于使用烧毁代币的方法进行重分配,而不是采用批量转账的方法。烧币可以从整体上增加代币的价值,也就可以补偿整个网络而不仅是涉及到的特定几方。这主要是作为安全防范机制,只有非常恶劣的行为才会到会非常大金额的惩罚。 很重要的一点是奖金必须足够高才能让网络觉得验证工作是值得做的,当然也不能比成本高太多,否则会招致那些足够有钱的、精心策划的国际级别的犯罪黑客攻击那些不幸的验证人,迫使他们做出非法行为。 规定的奖金也不能比恶意验证人的押金高太多,否则会不正当地激励非法行为:验证人为了奖金自己举报自己。解决方法是要么直接限制成为一个验证人的最小押金量,要么间接教育提名人:如果验证人押金太少,他们可能没有足够的动机来遵守规则。 6.3 平行链的注册 这个模块用于记录系统中的每条平行链。它是个相对简单的类似数据库的结构,管理着每条链的静态信息和动态信息。 静态信息包括链的索引(一个整数)和验证协议的标识。协议标识用于区分不同的平行链,只有这样,验证人才能运行正确的验证算法,然后提交合法的候选块。一个最初的概念验证版本会关注于如何把一个新的验证算法放在客户端中,这样每增加一个新种类的区块链,就需要一次硬分叉。然而在保证严格和高效的情况下,还是有可能不用通过硬分叉就能让验证人知晓新验证算法。一个可能的实现方法就是用一种确定的、本地编译的、平台无关的语言来描述平行链的验证算法,例如WebAssembly 等。为了验证这种方法的可行性,我们还要做更多的调查,毕竟如果能够避免硬分叉还是会有很大优势的。 动态信息涉及交易路由系统,比如必须对平行链的的入口队列进行全局共识(在下一节讨论)。 必须通过全民公投才能注册新的平行链。这本来可以直接内部管理,但通过一个外部的全民公投合约会更好,因为这个合约还可以用于更多其他场景的治理。关于平行链投票注册系统的具体参数(例如法定人数、多数派的比例)会用形式化证明做成一个不常更新的“主宪法” 系统,当然初始阶段也可能只是用传统的方法。具体的公式不在本文的讨论范围内,例如占 2/3 的多数派通过,并且全系统 1/3的代币都参与了投票才算通过。还有一些暂停和删除平行链的操作。我们希望永远不要暂停一条平行链,但这个设计是为了能应对平行链的一些紧急情况。最明显的情况是由于验证人运行了平行链的多种客户端实现,导致可能无法对某区块达成共识。我们也鼓励验证人使用多种客户端实现,以便能尽早检测到这类事情,防止押金被扣减。 因为暂停操作是个紧急措施,所以会采用验证人动态投票的方式,而不是通过全民公投。对于重启操作,可能直接通过验证人投票,也可能通过全民公投来完成。 删除操作平行链只能通过全民公投来进行,而且要提供一个宽松的平滑退出过渡期,能让它们成为一个独立的区块链或变成其他共识系统的一部分。这个期限可能是几个月,而且最好由平行链根据自身的需求来制定。 6.4 打包中继链区块 区块打包的过程本质上是共识的过程,也是把基本的数据变得有意义的过程。在一个 PoW链里,打包有一个同义词叫挖矿。在本方案里,它涉及收集验证人对于区块有效性、可用性、一致性的签名,这些区块包括中继链区块和它所包含的全部平行链的区块。 底层的 BFT共识算法也不是当前的工作范围。我们不描述它,而是使用一种原语描述一种由共识推动的状态机。最终我们希望能受到一些现有共识算法的启发:Tangaora (Raft的 BFT 变体)、Tendermint 和HoneyBadgerBFT。共识算法需要并发地对多条平行链达成共识。假设一旦共识达成,我们就可以不可辩驳地记录哪些人参与了其中。我们也可以在协议内把不正当行为的人缩小到一个小组中,里面仅包含哪些恶意参与者,这样就可以在惩罚时可以降低附带伤害。 以签名声明形式存在的这些证明、中继链的状态树根和交易树根一起存储在中继链的块头里。 对于中继链区块和平行链区块的打包过程是在同一个共识生成机制中,两类块共同组成了中继链的内容:平行链并不是由他们的小组隔离地进行 “提交”之后再被收集的。这虽然导致中继链的流程更加复杂,但也让我们可以在一个阶段里就完成整个系统的共识,能够将延迟最小化,并且能支持更加复杂的数据可用性,这在路由流程中将会很有用。 可以用一个简单的表格(二维的)来建模每个参与共识机器的状态。每个参与方(验证者)都有一系列以签名形式存在的来源于其他参与方的信息,描述着每条平行链的候选块和中继链的候选块。这些信息有两部分数据: 可用性(Availability):对于出口队列里这个块的已提交交易,验证人是否有足够的信息以便在下一个块正确地验证平行链的候选块?他们可以投 1 (知道)或 0 (不确定)。当他们投了 1,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。 有效性(Validity):平行链的区块是否有效,是否包含了引用的所有的外部数据(比如交易)?这和验证人对平行链的投票相关。他们可以投1 (有效)、-1 (无效)或 0 (不确定)。只要他们投了非 0,他们就承诺在后续的投票中也要这么投票。后面的投票和这个不对应会导致惩罚。 所有验证人都必须投票;在上面的规则限制下,还可以重新提交投票。共识流程可以像很多标准 BFT共识算法那样来建模,每条平行链是并行的。除了有很小的概率把少数恶意参与者都被分配到了同一条平行链小组之外,共识算法在整体上还是能支撑网络,最坏的情况也不过只是出现一个或多个无效平行链区块而死锁的情况(何对责任人进行的惩罚)。 判断一个独立区块是否有效的基本规则(允许全部的验证人作为一个整体达成共识,然后这些平行链区块就成为中继链上具有一致性的数据引用): *需要有至少三分之二的验证人投票 “是”,并且没人投 “否”。 *需要超过三分之一的验证人对出口队列消息的可用性与否投票 “是”。 对于有效性而言,如果至少有一个 “是” 且至少有一个 “否”投票,一个特殊的条件就开启了,整个验证人就必须投票决定是否有恶意参与者,或者是否产生了意外的分叉。除了有效和无效之外,还支持投第三种票,等效于同时投了“是” 和 “否”,表示这个节点有相互冲突的意见。这可能是因为节点所有者运行的多种客户端实现而产生了分歧,也预示着平行链协议可能存在不清楚的地方。 当所有验证人的票都被记录过后,发现赢的那个意见少于一定数量的票(详细参数最多可能是一半,也许更少),那就可以假设平行链发生了意外的硬分叉,这条平行链的共识就会被自动暂停。否则,我们假设就是有恶意行为发生,并惩罚那些给输的那个意见投了“是” 票的验证人。 结论是只有足够的签名票数才能达成一致性,然后中继链的区块就打包完成了,开始打包下一个区块。 6.5 中继链区块打包的改进 打包区块的方法确保着系统的正常运行,因为每条平行链的关键信息都要由超过三分之一的验证人来保证可用性,所以它并不能很好地伸缩。这意味着随着更多平行链的增加,每个验证人的工作也会增加。 在开放的共识网络中,如何保证数据的可用性还是个有待解决的问题,然而还是有一些方法可以缓解验证人节点的性能瓶颈。一个简单的方案是:验证人只负责验证数据的可用性,那他们就没必要自己真正地存储、通信和复制数据。第二个方案是数据隔离,这个方案很可能和收集人如何组织数据相关,网络可以对收集人有一定的利息或收入激励,让他们保证提供给验证人的数据是可用的。 然而,这个方案也许可以带来一点伸缩性,但仍没有解决根本问题。因为添加更多平行链通常需要增加验证人,网络资源的消耗(主要是带宽)以链总数的平方的速度增长,长期来看这是不可持续的。 最终,我们可能会思考对于保证共识网络安全的根本限制,网络对带宽的需求增长速度是验证人数乘以消息总进入数。我们不能信任那些将数据分开在不同节点存储的共识网络,因为这会将数据和运算分离。 6.5.1 延迟性介绍 简化这个规则的方法是先了解即时性的概念。33% + 1的验证人最终(eventually)需要对数据的有效性进行投票,而不是立刻(immediately)投票,我们可以更好地利用数据指数级传播的特性,来帮助应对数据通信的峰值。一个合理的等式(尽管未证明): (1)延迟 = 验证人数∗区块链数 在目前的模型下,系统的规模只有随着链的个数而伸缩,才能保证数据的分布式运算;因为每个链至少需要一个验证人,对于可用性投票的复杂度,我们把它降到了只和验证人个数呈线性关系。现在验证人数可以和链个数类似的增长,不再是: (2)延迟 = 数量 ^2 这意味着随着系统增长,网络内带宽和延迟性的增长是可知的,但达到最终确定性所需的区块数目仍然是以平方增长。这个问题将会继续困扰我们,也可能迫使我们打造一个 “非平层”(non-flat)的架构,也就是会有很多按层级结构排列的 Polkadot 链,通过一个树形的结构来路由消息。 6.5.2 公众参与 微意见(micro-complaints)系统是一种可以促进公众参与的方式。可以有一些类似于渔民的外部参与方来监管验证人。他们的任务是找到提供了非可用数据的验证人。他们可以给其他的验证人提交一个微意见。这个方案需要用PoW 或押金机制来防止女巫攻击,否则它会让整个系统失效。 6.5.3 可用性保证人 最终的一个方案是从验证人里提名出第二个小组作为可用性保证人(Availability Guarantors)。他们也需要和普通验证人那样交押金,而且有可能来源于同一个组(会在一个长周期里选择他们,至少也是一个会话周期)。和普通验证人不同的是,他们不需要在各条平行链间切换,而只需要形成一个单一的小组,监管所有重要跨链数据的可用性。 这个方案还有个优势是能缓解验证人数和链个数之间的等式关系。链个数可以最终增长(与原始链的验证人小组一起),然而各参与方仍可以保持次线性增长或常量增长,尤其是那些参与数据可用性验证的人。 6.5.4 收集人设置 系统需要保证的一个重要方面是:合理地选择那些制造平行链区块的收集人。如果一条平行链由某个收集人控制了,那么外部数据是否可用就会变得不那么明显,这个人就可以比较简单地发动攻击。 为了尽可能地广泛分配收集人,我们可以用伪随机的方法来人工衡量平行链区块的权重。在第一个示例中,我们希望验证人倾向于选择权重更大的候选块,这是共识机制的一个重要部分。我们也必须激励验证人找到最大权重的候选块,验证人可以把他们的奖励按比例分配给这些候选块。 在共识系统里,为了确保收集人的区块被选中的机会是平等的,我们用一个连接所有收集人的随机数生成器来决定每个候选块的权重。例如用收集人的地址和一些密码学安全的伪随机数做异或(XOR)运算来决定最优的块(获胜票)。这给了每个收集人(更准确地说是每个收集人地址)随机公平地打败别人的机会。 验证人通过女巫攻击来生成一个最接近于获胜票的地址,为了阻止这种情况,我们会给收集人的地址加上一些惰性。一个很简单的方法是需要他们的地址有基本的余额,另一个更优雅的方式是综合考虑地址的余额来计算获胜的概率。这里还没有完成建模,我们很可能会让很少余额的人也可以成为收集人。 6.5.5 区块超重 如果一个验证人集合被攻击了,他们可能会生成一个虽然有效但要花费大量时间来执行的区块。这个问题来源于一些特定的难解数据题,比如大质数因式分解难题等,验证人小组可能需要非常长的时间才能解出答案,如果有人知道一些捷径,他们的候选块就有巨大的获胜优势。如果一个收集人知道那个信息,而其他人都在忙着计算老的块,那么他就有很大的优势让他的候选块获胜。我们称这种叫超重(overweight)块。 为了防止验证人提交这些大幅超出普通区块的超重块,我们需要添加一些警告:因为执行一个区块要花费的时间是相对的(根据它超重的程度),所以最终可能的投票结果会有三种:第一种是这个区块绝对没有超重,超过2/3 的验证人声明他们可以在一定时间内算完(例如出块时间的 50%);另一种是这个区块绝对超重了,超过 2/3的验证人声明他们无法在限定的时间内执行完这个区块;再一种就是意见分歧基本持平,这种情况下我们会做一些惩罚。 为了保证验证人能预测他们提交的区块是否超重,他们可能需要公布自己在每个块上的执行表现。经过一段时间后,他们就可以通过和其他节点的比较来评估自己处理器的性能。 6.5.6 收集人保险 还有一个问题留给了验证人:为了检查收集人区块的有效性,他们不能像 PoW网络那样,而是必须自己计算里面的交易。恶意收集人可以填充非法或超重的区块给验证人,通过让他们受害(浪费他们的资源)来获取大量的潜在机会成本。 为了预防这个,我们为验证人提供了一个简单的策略。第一:发给验证人的平行链候选块必须要用有钱的中继链账户签名,如果不这么做,验证人会立即丢弃这个块。第二:会用组合算法(或乘法)对这些候选块进行排序,因素包括高于一定限额的账户余额、收集人过去成功提交的区块数(除去那些有惩罚的)、和获胜票的接近程度。这里的限额应该等于提交非法块的惩罚金。 为了警示收集人不要发送非法或超重的交易给验证人,任何验证人都可以在下一个区块中打包一个交易,指出那个非法的区块,并将那个收集人部分或全部的余额都转给那个受害的验证人。这种交易的优先级高于其他交易,使得收集人不能在惩罚之前转走他的余额。惩罚金额可能是动态决定的,也很可能是验证人区块奖励的一部分。为了阻止验证人任意没收收集人的钱,收集人可以对验证人的决定进行上诉,成立一个由验证人随机组成的陪审团,并交一些押金。如果陪审团发现验证人是合理的,那这笔押金就给陪审团了。如果是不合理的,押金退回给该收集人,而验证人要受到惩罚(因为验证人是核心角色,惩罚会比较重)。 6.6 跨链交易路由 跨链交易路由是中继链和其验证人的核心功能。这里管理着主要的逻辑:一个提交的交易(简言之为“提交”)是如何从一个来源(source)平行链的出口被强制地路由到另一个目标(destination)平行链里,而且无需任何信任人。 我们很小心地选择了上面的词语;在来源平行链里,我们无需一个明确约束这个提交的交易。我们模型里的唯一约束是:平行链必须尽力按照全部的出口能力打包,这些提交就是他们区块执行的结果。 我们用一个先进先出(FIFO)的队列组织这些提交。作为路由基准(routing base)的队列个数可能在 16个左右。这个数字代表着我们可以直接支持的平行链性能,而不用采用多相(multi-phase)路由。Polkadot一开始会支持这种直接路由,然而我们也可能会采用一种多相路由操作(超路由 hyper-routing)作为将来系统伸缩的方式。 我们假设所有参与方都知道下两个区块 n,n+1 的验证人分组情况。概括而言,路由系统有如下阶段: *收集人 s:合约成员中的验证人 V [n][S]。 *收集人 s:FOR EACH 小组 s:确保合约里有至少一个验证人 V [n][S]。 *收集人 s:FOR EACH 小组 s:假设出口 [n-1][s][S] 是可用的(上个区块里所有对 S 提交的数据) *收集人 s:为 S 构造候选块 b:(b.header, b.ext, b.proof, b.receipt, b.egress)。 *收集人 s:发送证明信息 proof [S] = (b.header, b.ext, b.proof, b.receipt, b.egress)。 *收集人 s:确保外部交易数据 b.ext 已经对于其他收集人和验证人可用了。 *收集人 s:FOR EACH 小组 s:发送出口信息 egress [n][S][s] = (b.header, b.ext, b.receipt, b.egress) 给下个区块的接收方小组的验证人 V [n+1][s]。 *验证人 v:预连接下一个区块的同一个组的成员:让 N = Chain [n+1][V];连接所有的验证人使 Chain [n+1][v] = N。 *验证人 v:收集这个块所有的入口数据:FOR EACH 小组 s:检索出口 egress [n-1][s][Chain [n][V]],从其他验证人 v 获得使 Chain [n][v] = Chain [n][V]。可能是通过随机性地选择其他验证人的证明数据。 *验证人 v:为下个块接收候选块的出口数据:FOR EACH 小组 s,接收 egress [n][s][N]。对区块出口的有效性投票;在意向验证人间重新发布使 Chain [n+1][v] = Chain [n+1][V]。 *验证人 v:等待共识。 egress [n][from][to] 代表:在区块 n 里,从来源 from 平行链到目标 to 平行链的当前出口队列信息。收集人 s 是属于平行链 S的。验证人 V [n][s] 是平行链 s 在区块 n 时的验证人小组。相反地,Chain [n][s] 是验证人 v 在区块 n所属的平行链。block.egress [to] 是从平行链区块 block 发送给目标平行链 to 的出口队列。 收集人因为希望能够采纳他们出的块,所以收集(交易)手续费作为激励,并保证下一个区块的目标小组成员都能知晓当前块的出口队列。验证人的激励是达成中继链区块的共识,所以他们并不关心最终采纳哪个收集人的区块。一个验证人原则上可以勾结一个收集人,合谋减少采纳其他收集人的概率,然而因为平行链的验证人是随机分配的,所以这也很难得逞,而且还可能会遭到手续费减免,最终影响共识流程。 6.6.1 外部数据可用性 如果要在一个去中心化的系统里完成分布式的全部流程,一个长年的遗留问题是:如何确保一条平行链的外部数据都是可用的。这个问题的核心原因是:不可能生成一个关于可用性与否的非交互式证明。在一个拜占庭容错的系统内,我们需要依赖外部数据才能验证任意交易的有效性。假设我们能容忍的最多的拜占庭节点数为n,我们一共至少需要 n+1 个节点才能证明数据的可用性。 Polkadot是个希望可以伸缩的系统,这带来了一个问题:如果必须由一个固定比例的验证人来证明数据的有效性,并且假设他们真会存储这些数据来用于判断,那么我们如何避免随着系统的增长而带来的对带宽/ 存储空间等需求的增长。一个可能的答案是成立一个验证人小组(就是保证人),他们的数目随着 Polkadot 整体的增长而线性增长。这在 6.5.3里提到了。 我们还有第二个技巧。收集人有内在的激励去确保所有数据的可用性,否则他们就不能再生产后续区块了,也就不能再获得手续费了。收集人也可以形成一个小组,成员复杂多样(因为平行链验证人成员的随机性),很难进入。允许最近的收集人(可能是最近几千个块)对某条平行链区块的外部数据发起挑战,来获取一点验证人的奖励。 验证人必须联系这些有明显进攻行为的小组,这些小组会举证、获取并返回数据给收集人,或者直接通过证明数据的非可用性来升级事态(作为原告方直接拒绝提供数据记录,不当行为的验证人会直接断开连接),并联系更多的验证人一起去测试。在后一种情况中,收集人的押金会被退回。 一旦超过法定个数的验证人都证明交易的非可用性,验证人小组就可以解散了,非法行为的收集人小组会被惩罚,区块被回退。 6.6.2 路由 “提交” 每条平行链的头部都包含一个出口树根(egress-trie-root)。这个树根包含了一个路由信息的格子列表,每个格子里都有一个串行(concatenated)结构的出口提交。可以在平行链的验证人之间提供梅克尔树证明,这样就能证明某条平行链的区块对应着另一条平行链的出口队列。 在开始处理平行链区块之前,每条平行链指定区块的出口队列会被并入我们区块的入口队列。假设密码学安全的伪随机数(CSPR)能用来保证公平地对平行链区块进行配对。收集人计算新队列,并根据平行链的逻辑抽干出口队列。 入口队列的内容会被明确地写入平行链区块。这么做有两个目的:第一,平行链可以独立地进行非信任同步,而不用依赖其他链。第二,如果整个入口队列无法在一个块内处理完,那么这种方法可以简化数据逻辑;验证人和收集人可以继续处理下面的区块而不用再做数据引用了。 如果平行链的入口队列超过了区块处理的阈值,那么在中继链上就会被标记为已满,在队列清空之前不会再接收新的消息。使用梅克尔树来证明收集人在平行链区块里的操作是可信的。 6.6.3 弊端 这个架构的小瑕疵是可能发生后置炸弹攻击(post-bomb attach)。所有的平行链给另一个平行链发送最大数量的提交,这会瞬间塞满目标链的入口队列,不造成任何伤害地进行了 Dos 攻击。 正常情况下,假设有对于 N 条平行链和一系列正常同步的非恶意的收集人和验证人,那么总共需要 N x M 个验证人,每条平行链 L个收集人,每个块可能的数据路径(data path)有:
验证人:M-1+L+L:M-1 代表平行链集合里的其他验证人,第一个 L 代表每个收集人提供了一个平行链候选块,第二个 L代表下一个块的全部收集人需要放入出口队列的前块数据。(后一种情况可能会更糟,因为收集人之间会分享这些数据)。 收集人:M+kN:M 代表和每个平行链区块相关的验证人的连接数,kN代表着下一个区块播种(seeding)到每个平行链验证人小组的出口队列的负载(很可能是一些很受喜爱的收集人)。 因此,每个节点数据路径的可能性随系统的复杂度的增长而线性增长。这也是合理的,当系统伸缩到上百上千个平行链的时候,通信的延迟也会变大,进而降低复杂度的增长速度。在这种情况下,会用一个多级的路由算法来减少峰值期的数据路径,但需引入缓存和交易延迟。 6.6.4 超方路由(Hyper-cube Routing) 超方路由(Hyper-cubeRouting)是一种可以建立在上面描述的基础路由方法上的一种新机制。对节点来说,他们的连接数从需跟平行链和节点小组数一起增长,变成了只跟平行链个数的对数增长。这样就可能需要经过多个平行链的队列才能最终传送 “提交”。 路由本身是简单和确定性的。我们从限制入口 / 出口队列的格子数开始;平行链的总数目是 routing-base (b),这个数字会随着平行链的改变而修正,增长为 routingexponent (e)。在这个模型下,我们的消息总量以 O (be)增长,而数据路径保持为常量,延迟(或传递需要的块数)以 O (e) 增长。 我们的路由模型是一个 e 维的超方体,每个立方体的面有 b 种可能位置。对于每个块,我们围绕一个轴来路由消息。为了保证最坏情况下的 e个块的传递延时,我们用 round-robin fashion 来轮换每个轴。 作为平行链处理的一部分,只要给定当前的块高度(路由维度),入口队列里外部范围的消息就会立即路由给合适的出口队列的格子。这个过程需要在传送路由上发送更多数据,然而这会是个问题,也许可以通过一些替代性的数据负载发送方式解决,比如只包含一个引用,而不是在提交树(post-trie)里包含全负载。 一个拥有 4 条平行链的超方路由系统示例,b = 2、e = 2: 阶段 0,对于每个消息 M: *$sub0:如果 M{dest} ∈ {2,3}$ ,那么 sendTo (2) ,否则保留 *$sub1:如果 M{dest} ∈ {2,3}$ ,那么 sendTo (3) ,否则保留 *$sub2:如果 M{dest} ∈ {0,1}$ ,那么 sendTo (0) ,否则保留 *$sub3:如果 M{dest} ∈ {0,1}$ ,那么 sendTo (1) ,否则保留 阶段 1,对于每个消息 M: *$sub0:如果 M{dest} ∈ {1,3}$ ,那么 sendTo (1) ,否则保留 *$sub1:如果 M{dest} ∈ {0,2}$ ,那么 sendTo (0) ,否则保留 *$sub2:如果 M{dest} ∈ {1,3}$ ,那么 sendTo (3) ,否则保留 *$sub3:如果 M{dest} ∈ {0,2}$ ,那么 sendTo (2) ,否则保留 这里的两个维度很容易看做是目标索引的前两位(bits)。第二个块处理低序的位。一旦全部发生(任意顺序),提交就会被路由。
6.6.5 最大化随机性(Serendipity) 一个对基本提议的修改是把验证人数固定为 c^2-c 个,每个小组 c−1个验证人。摒弃原来每个区块时都在平行链间松散地分配验证人的方案,而改成对于每个平行链小组,在下一个区块时,会分配每个验证人到唯一的不同平行链小组。这导致了两个区块之间的不可变性,对于任意配对的平行链,都会有两个验证人调换他们的职责。然而我们不能用这个来确保绝对的可用性(单个验证人可能时常掉线,即使是非恶意的),但可以优化这个方案。 这个方案也会有后遗症。平行链需要重组验证人集合。进而验证人的数量会被绑定在平行链数量的平方级别,从很少开始最终快速增长,在 50条平行链时就会变得无法承受。这些都不是什么本质问题,对于第一个问题,本来也需要频繁重组验证人集合,无论验证人集合的数量多少。当集合数很少的时候,多个验证人可能被分配到同一条平行链,那么对于全部平行链影响的因素是常量的。对于在很多平行链时的需要很多验证人的问题,可以用在6.6.3 里讨论的这个多阶段的超方路由机制来缓解。
6.7 平行链的验证 验证人抵押了大量的保证金,他们的主要目标就是校验平行链区块是否有效,包括但不限于:状态转换、囊括外部交易、执行等待在入口队列的提交、执行出口队列的最终状态。这个过程本身是比较简单的。验证人一旦完成了前一个区块的打包,他们就可以自由地为后面的几轮共识准备平行链的候选块。 验证人一开始通过平行链收集人(下面介绍)或他的某个副验证人找到一个平行链区块。平行链候选块的数据包含区块头、前块头、外部数据输入(对于以太坊和 BTC,这些数据被称为交易,然而他们也可能是任意结构、任意目的)、出口队列数据、状态转换有效性的内部证明数据(对于以太坊,这可能是用来执行每个交易的很多状态/ 存储树节点)。实验性的证据显示对于目前的以太坊区块,这个数据集最多有几百 K 字节(KiB)。 如果校验没有完成,验证人会尝试从前一个块的转换中获取相关信息,从前一个块的验证人开始,之后到所有签名了这个数据的验证人。 一旦一个验证人接收到了这么一个候选块,他们就在本地验证它。验证过程包含在平行链这个大类的验证人模块里,这个需要共识的软件模块必须写在所有的 Polkadot实现里(原则上可以在多个实现里共享一个 C ABI 的库,但这会降低安全性,因为他们只是单一实现的引用)。 这个过程会提取前块头,然后用刚达成共识的中继链区块中记录的哈希值来检验。一旦父块头的有效性得到了验证,就会调用平行链类中特定的验证函数。这是个会接收很多数据项(大概就是目前给出的几种)的函数,返回值是对于区块是否有效的简单判断。 大多数这种验证函数都将首先检查头部的数据项,这些数据都可以直接从父块衍生出来(例如父块哈希、高度)。之后为了处理交易或提交,他们会尽力填充内部数据结构。 对于以太坊这样的区块链,需要执行全部的交易才能往梅克尔树填充这么大量的数据。其他类型的区块链可能有其他的处理措施。 一旦完成验证,入口提交和外部交易(或代表的其他)都会根据链的规则而被固定。(一个可能的默认方式是需要所有入口提交都在服务外部交易之前处理,然而这应该由平行链的逻辑决定)。通过这个规定,一系列的出口提交都会被创建,而且确实符合收集人的候选块要求。最终会一起检查合理填充的块头和候选块头。 验证人完成了对候选块的校验后,就对块头哈希进行投票,并发送必要的验证信息给小组里的其他副验证人。 6.7.1 平行链收集人 平行链收集人不需要交押金,他们完成的是类似目前区块链网络里矿工的任务。他们属于特定的平行链。为了开展工作,他们必须要有完全同步的中继链和平行链。 完全同步的精确含义取决于平行链的种类,尽管它们都包含平行链入口队列的当前状态。在以太坊这个例子中,它还至少要有最近一些块的梅克尔树数据库,但也可能包含非常多的其他数据结构,例如证明账户存在的Bloom 过滤器、遗传(familial)信息、日志输出、和对应高度区块的分叉回退表单。 为了保持两条区块链的同步,他们必须维护一个交易池来“钓取”(fish)交易,并接收公网上正确验证的交易。有了链和交易池,收集人就可以为每个块的被选验证人(由于同步了中继链所以知道他们身份)打包新的候选块,再附属一些必要信息(例如从节点网络来的有效性证明等),然后提交给验证人。 他们收集所有交易的手续费作为回报。这里有很多经济激励手段。在一个激烈竞争的市场中,如果收集人有富余的话,还可以跟平行链验证人分享手续费,以激励他们打包特定收集人的区块。同样地,一些收集人可能提高所需支付的手续费,使区块对于验证人更有吸引力。在这种情况下,正常的市场机制会使那些更高手续费的交易跳过队列,并能更快地打包到链里。
6.8 网络设计 以太坊和 BTC 等传统区块链中的网络设计需求一般比较简单。所有的交易和区块都未受引导地用 gossip 广播。同步模块中牵涉到的东西会更多一点,以太坊就可以根据不通类别做出不同的响应,但现实中这更多是节点的策略,而不是协议本身的内容。 以太坊基于 devp2p 协议改进了目前的网络协议,支持在单一节点连接中进行多个子协议的多路复用,因此同时支持多个 p2p协议,但以太坊的协议仍然相对比较初级,而且它还没有完成例如支持 QoS 等重要功能。当初创造一个无所不在的 “web3”协议的愿望基本上失败了,只剩下从以太坊众筹出来的几个项目。 Polkadot 的需求更加根本。相比于一个完整的统一网络,Polkadot有很多种参与方,每方都有不同的需求,参与方需要有很多不同的网络信道来交换数据。从本质上讲,这意味着需要一个能支持更加层级化的网络结构的协议。另外为了促进更多新类型的区块链来扩展网络,也需要有一个新的层级结构。 对于网络协议更深层面的探讨不在本论文范围内,我们需要更多的需求分析。我们可以把网络参与者分为两类(中继链、平行链),每个都有三小类。每条平行链的参与方之间相互通信,而不和其他链通信: *中继链参与方 *验证人:P,为每条平行链分割成多个子集 P [s] *可用性保证人:A (在基础协议里由验证人代替) *中继链客户端:M (每条平行链的成员) *平行链参与方: *平行链收集人:C [0],C [1],… *平行链渔民:F [0],F [1],… *平行链客户端:S [0],S [1],… *平行链轻客户端:L [0],L [1],… 通常我们认为网络成员和他们的设置间会发生如下几种通信: *P | A <-> P | A:为了达成共识,验证人 / 保证人必须连接。 *P [s] <-> C [s] | P [s]:每个作为平行链成员的验证人会和其他成员连接来发现区块并分享区块,例如收集人。 *A <-> P [s] | C | A:每个可用性保证人将需要从验证人那里收集签过名的共识相关的跨链数据;收集人可以广播给保证人来优化对他们区块的共识。一旦完成,数据会广播给其他保证人来促进共识。 *P [s] <-> A | P [s’]:平行链验证人将需要从前一个验证人或可用性保证人集合收集额外的输入数据。 *P [s] <-> A:当需举报时,渔民公告给任何参与方。 *M <-> M | P | A:中继链客户端输出数据给验证人和保证人。 *S [s] <-> S [s] | P [s] | A:平行链客户端输出数据给验证人和保证人。 *L [s] <-> L [s] | S [s]:平行链轻客户端从全客户端获取数据。 如果为了保证高效的传输,那种每个节点无差异的平层网络(类似以太坊 devp2p)就不再适应了。协议里很可能扩展引入一个合理的节点选择和发现机制,还可能计划一些前瞻性的算法,保证节点的顺序在适当时候是 “偶然” 连接的。 各类不同参与方节点的具体策略会不一样:对于一个能伸缩的多链系统,收集人要么需要持续地重新连接被选的验证人,要么连接一个验证人小组来保证他们永不断线,即使大多数时间他们对于自己是无用的。收集人也会保持和可用性保证人集合的一个或多个稳定连接,来确保需要共识数据的快速传播。 可用性保证人将保持相互连接,还要保持与验证人(为了共识和需共识的平行链数据)、一些收集人(为了平行链数据)、一些渔民和一些全节点(为了缺失的信息)的稳定连接。验证人倾向于寻找其他验证人,特别是那些在同一个小组里的,还有那些可以提供平行链区块的收集人。 渔民和一般中继链或平行链客户端会倾向于和验证人或保证人保持一个连接,但和他们相似的很多节点却不这么做。平行链轻客户端除了连接其他轻客户端外,也会连接一个平行链全客户端。 6.8.1 节点轮换的问题 在基础协议的预案里,每个块的验证人小组随机变换,验证人被随机分配去验证某条平行链的交易。如何在不相关的节点间传递数据会是一个问题,这就必须依赖一个全分布式并且连接良好的节点网络,才能保证所需的跳跃距离(最坏的延迟)只按照网络规模(一个类似的Kademlia 的协议会有帮助)的 log 级别增长,要么就必须延长区块时间,来支持必要的连接谈判,建立能够满足该节点当前通信需求的节点集合连接。 这些都不是好的方案:强迫变成更长的出块时间会让网络无法支持一些特定的程序或区块链。即使是一个完美公平的网络连接也会导致带宽浪费,因为要推送大量数据给不相关的节点,所以会影响到网络的伸缩功能。 然而这些方向都会促进问题的解决,一个可以降低延迟的优化方案是降低平行链验证人集合的易变性,在一段区块后才重新分配(比如 15 个区块,如果是 4 s的区块时间,那么只需要每分钟才重新连接),或者一段时间内只轮换一个验证人(例如如果有某条平行链分配了 15个验证人,那么平均情况是一分钟内才全部轮换)。通过提高平行链局部的可预测性,来降低节点轮换的次数,并仍然保证连接的优势,我们就可以保证节点间连接的随机性。 6.8.2 通往高效网络协议的路径 最高效和合理的开发方向是专注于改造一个现有协议而不是自己从头开发一个。我们将会探讨的几个点对点协议包括:以太坊的 devp2p、IPFS 的libp2p、GNU 的GNUnet。关于这些协议的全面介绍、以及其中关于如何打造一个能支持特定结构的模块化节点网络、动态节点转换、可扩展子协议等内容,本文也不做过多介绍,但这会是实现Polkadot 的重要一步。
7协议的可实践性 7.1 跨链交易支付 我们去除了以太坊那样的计算资源统计的 gas 机制,这虽然带来了更多的自由和简便性,但也引出了重要的问题:没有了gas,一条平行链如何防止其他平行链逼迫他们做运算?然而我们可以依赖 “交易提交”的入口队列缓存来阻止一条链给另一条链塞满交易数据,我们还没有提供其他相同效果的防垃圾机制。 这是个更高层面的待解决问题。由于链可以在 “交易提交” 中附属任何数据,我们需要保证在开始之前就支付计算费用。类似于以太坊 Serenity版本中的一个提案,我们可以想象平行链有一个 “内向”(break-in)合约来给验证人提供保证,付费换取特定数量的计算资源预分配。这些资源可能用类似 gas的机制来度量,但也可能用完全不一样的概念模型,比如主观计算时间模型或类似 BTC 的一般计费模型。 无论 “内向” 合约定义什么价值模型,我们都不能简单假设链下调用器对他们是可用的,所以这个方案的用处也不大。然而我们可以想象在来源链里的第二个 “外向”(break-out)合约。这两个合约形成一个桥梁,相互认识并且提供等值交换(相互之间的权益代币可以用来支付结算)。调用其他链意味着要用这个桥梁做代理,可以通过谈判来协商如何支付目标平行链的计算资源消耗。
7.2 添加链 添加一个平行链是相对比较便宜的操作,但并不免费。平行链越多意味着每个平行链的验证人就越少,更多的验证人又意味着每人的押金也会变少。通过渔民缓解了强迫一条平行链的问题。由于共识机制本身的问题,增长中的验证人集合本质上导致了更高的延迟。将来每条平行链都可能给不幸的验证人造成很大的验证算法负担。因此,验证人和/ 或其他权益持有者将会对添加一条新链来定价。这个链的市场要么是如下两种: *对网络没有净贡献的链(通过锁币或烧毁权益代币的方式,比如联盟链、Doge 链、特定应用链); *通过提供一些别的地方没有的功能,能给网络带来更多价值的链(例如隐私性、内部伸缩性、内置服务) 我们最终会激励社区的权益持有者来添加子链 —— 通过经济手段或根据给中继链添加功能的意愿程度。 可预期的是刚添加进来的新链会有一个短暂的移除期,这就允许新链可以先试验,无需任何妥协和长期价值风险。
8结论 我们提出了一个异构多链协议的可能方向,它是可伸缩的且能够向后兼容目前已存在的区块链网络。在这个协议下,各参与方为了自身利益共同创造了一个完整系统,它可以用非常自由的方式来扩展,而且没有目前那些普通区块链对用户的固有成本。我们给出了这个架构的大体轮廓,包括需要的参与方角色、他们的经济激励模型和他们需要做的操作。我们已经弄清楚了一个基本的设计,并讨论了它的优势和限制;我们未来的方向就是消除这些限制,向完全可伸缩的区块链方案迈进。 8.1 遗漏的材料和开放问题 网络设计一般都是从协议实现中分离出来的。还没有完全讨论网络如何从这种实验性的条件中恢复。网络需要一个确定性的非零时间,他们从中继链分叉中恢复过来应该也不是个大问题,然而需要小心地集成入共识协议中。 本文也没有具体探讨押金的没收和对应的奖励规则。目前我们假设提供的是赢者全拿(winner-takes-all)的奖励原则:但可能给渔民最好的激励。一个短周期的提交 -披露流程支持很多渔民来索取赏金,进而达到一个更公平的奖励分配制度,但这个举报恶意行为的流程也将会引入更大的延迟。
5、波卡如何实现价值捕获?从经济模型说起 https://www.chainnews.com/articles/036690323130.htm
6、波卡双11插槽拍卖在即,一文解读拍卖方式及意义 https://news.huoxing24.com/20211105160259119908.html 波卡和平行链:解决去中心化协调和硬分叉问题 在了解波卡平行链之前,我们需要进行简单的了解什么是波卡、为什么会出现波卡平行链。 首先,波卡链(Polkadot)是一条公链,它与比特币网络、以太坊网络以及诸多公链一样,是为了解决区块链信息交互及价值交互而存在的不同性质的公链。 如同比特币网络,解决的是非信任情况下的“点对点的交易”问题,而以太坊公链是解决的“多币未来”和智能合约的应用问题,波卡链则是解决的区块链过于复杂的去中心化协调和硬分叉问题。 为了解决上述问题,Polkadot在设计之初就堵死了公链扩展的道路,从而通过产生大量的平行链实现不同网络模式下的平行管理。
举个例子,以前的区块链每出现一个问题需要解决,就只有通过硬分叉或重新创建一条公链。医疗问题的解决需要创造医疗链、产品溯源问题的解决需要创建溯源链、而信息存证方面的问题需要创建信息存证公链。 这样一来,公链的概念不断增多,公链的种类和不同共识、模式的公链也就越来越多。这个问题是由区块链的去中心化格式决定的,公链之间的信息孤岛极难打破。 以太坊网络尽管也在跨链问题上作出了一定的贡献,但以太坊的结构并不理想,拥堵和复杂成为了难以彻底解决跨链信息交互的症结,而波卡要做的就是创立一个中枢核心,然后通过嫁接或创建不同共识、不同特点的公链作为波卡的平行链并接入核心,一次来做到不同公链之间的数据交换,达到跨链的目的。 有了波卡平行链之后,区块链项目将不再只能从同一个区块链网络中去寻求支持者(例如以太坊项目只能寻求以太坊网络中的用户作为支持者,其他公链用户如果想参与该项目就必须先成为以太坊的用户),而可以把项目生态扩展至更多公链。项目本身也无需为了生态建设进行“多链布局”和“多链计划”,只需要对接波卡链即可。 另外,波卡平行链提供了清晰的、可升级的、可扩展的平行链标准。利用 XCM 和 XCMP(链间信息传输协议)等工具和其他平行链交流和互操作,并由诸多平行链共同的连接点——波卡链本身作区块链网络所有信息交互的门户。 既然我们已经了解了波卡以及波卡平行链是什么之后,就可以进行下一个问题的讨论——波卡为什么要拍卖平行链插槽。
为什么要拍卖平行链插槽? 最大只能支撑100个平行链的跨链通信 图片: https://uploader.shimo.im/f/be5x4t7Pt4o9dx5R.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 在了解了波卡链的平行链结构之后,我们就发现,波卡主链就像是一个有着很多插孔的插排,任何家用电器都能插在插排上获取算力、和其他公链的信息。而完成这些操作的插排就被称为中继链(Relay Chain),任何平行链(比特币网络、以太坊、波场等)都能够通过中继链进行链接。 我们知道,家里的家用插排上的插孔数量是有限的,少的可以插1~3个插头,多的可以插10个左右。那如果无限扩展插头的数量是否可行呢? 答案是不行,因为家用电的进户电线的承载力有限,过多的接入电器插口或同时开启大量的高耗能电器有可能烧毁电器甚至引发电路起火。 波卡平行链的“插槽”与波卡主链链接,受限于区块链技术和现有计算机技术的限制,其插槽数量仍然是有限的,根据波卡官方发布的数据,波卡最大只能支撑100个平行链的跨链通信。 那么就意味着享受这种跨链服务的就只能有100个公链。目前全球公链数量没有2000也有1000了,谁才能有机会享受与其他公链跨链通信的服务呢?
波卡链想出的办法就是拍卖! 波卡生态的拍卖又称首次平行链发行,即 Initial Parachain Offering。我们可以把全球公链想象成漂浮在大海里的无数个互不相连的岛屿。 由于资金限制,现在波卡链只能为全球所有的小岛修建一个可以容纳100个小岛的公路网络,打通100个小岛之间的交通。当然,这种建设是需要成本的,波卡掌握了修路的技术,可这路究竟修到哪个岛,就看哪个岛出的“修路费”更多。 当然,“修路费”是一笔庞大的费用,一个小岛存在的生命周期也有限,于是波卡就通过竞拍获得该公路的使用权,在获得该公路的使用权之后,究竟是通过该公路方便“岛民”的出行,还是借由这条路收取过路费就看竞拍者自己的意愿了。 根据波卡官方透露的规则,每个插槽的使用周期从6个月到2年,周期不等。时间一到,如果没有“续费”或再次取得100个小岛的公路使用权的话,波卡就将切断该平行链与其他公链的通信权利。 因此,通过这一点也可以看出,波卡链中的平行链数量可能是稳定的,但100家平行链中到底包括谁是不固定的,各个小岛也会为了公路的使用权尽可能的“砸钱”。 不过,与一般认知的拍卖行为中拍卖结束后资金归售卖一方不同,波卡平行链插槽拍卖最终竞拍者的所使用的资金将被锁仓,直到插槽使用期限结束后返回给竞拍者。 也就说,竞拍者最终并没有花一分钱就得到了插槽的免费使用期限。
插槽竞拍方式:蜡烛拍卖、众贷模式 值得一提的是,波卡插槽竞拍并没有采用固定时间内价高者的形式,来对插槽租期进行拍卖,反而采用了一种随机性和投机性最大蜡烛竞拍的方式,来调动竞拍者的参与积极性。 这些印证了今年4月份,波卡团队高管所说的“期待混乱”的预期。 蜡烛竞拍是17世纪盛行的英式拍卖方式,拍卖大厅中会由主办方点燃一根蜡烛,然后拍卖场中的竞价者开始出价,直到蜡烛熄灭前一刻出价最高的人将赢得拍卖,蜡烛熄灭后,任何人再出价都视为无效。 而在波卡插槽的拍卖中,“蜡烛”是一组运算的函数,有更多的不确定性。极有可能第一个人出价之后,该“蜡烛”就熄灭了。 这一点也是为了让竞拍者把每一次出价都当做最后一次竞标,鼓励竞拍者给出更为合理的价格的方式。整个竞拍过程如下: 第一步:参与竞拍团队上传他们的平行链代码,首先选择以6周为单位的租期,然后确定租期后在选定的租期期间锁定的 KSM 数量开始竞标。 第二步:拍卖期间会持续进行公开竞价。团队可以看到其他项目的出价,并随着时间的推移提高他们的出价,以在整个拍卖过程中保持竞争力。 第三步:在拍卖结束时,拍卖结束的确切时刻由可验证随机函数(VRF) 随机确定。 第四步:中标团队竞标的 KSM 数额在租期内保持锁定,到期后可解锁。平行链在租期开始时自动接入中继链。 第五步:团队可以在当前的租期结束前通过赢得另一次拍卖来延长租期。 尽管波卡平行链插槽拍卖的蜡烛拍卖模式增加了竞拍结果的偶然性,但这并不代表每一个人都是“天选之子”,在第一次出价时就可以中标。因此,仍然要准备大量的DOT用于与其他平行链竞拍者进行竞争。 大部分竞拍者的资金有限,部分由于受区块链生态影响急于扩展生态但本身资金储备不足的竞拍者,为了在竞拍中占据更为有利的地位必然要进行借代。 波卡平行链插槽竞拍是全球性的,参与的项目、公链不知凡几,所以竞拍者不太可能从同行筹借到更多的资金,那么只能向用户筹集,向更为广大的用户借代。 因此,产生了波卡平行链插槽拍卖的众贷模式。简单来说项目方为了获得用户支持,会给在竞拍成功后给予用户一定的Token奖励作为利息。 从这方面来看,波卡平行链插槽拍卖并不太像是单纯地购买产品,与我们熟知的艺术品、古董、大宗商品的拍卖是两回事,波卡平行链插槽拍卖更像是一种锁仓空投形式。 插槽使用本身并不占据多少成本,前面我们已经说过,竞拍失败和使用租期到期后的所有竞拍费用都会返回给竞拍者。项目方所需要考虑的是DOT的机会成本,以及在智能合约的监督之下,这一切不会出现违约的情况。 当然,用户借给项目方的资金仍有盈利/亏损的可能,比如租期为6个月,我们假设在竞拍时的DOT为30美元。竞拍金额为10000DOT。 项目方从用户手中借到了价值5000DOT(约合15万美元)的资金,6个月后,如果DOT的价格涨到了100美元,当项目方租期到期从波卡平行链的竞拍系统中得到该笔竞拍资金10000DOT时,该笔DOT就价值100万美元,而用户借给项目方的资金也自然从15万美元涨到了50万美元。 反之,如果DOT的价格跌了10美元,那么当项目方租期到期从波卡平行链的竞拍系统中得到该笔竞拍资金10000DOT时,该笔DOT就价值20万美元,而用户借给项目方的资金也自然从15万美元跌了5万美元。 众贷机制让 DOT 持有者不仅可以塑造波卡网络的未来,还能在快速发展的波卡生态中分得一杯羹。 小结 从技术角度分析波卡平行链插槽拍卖,可以看作是一个区域性的跨链技术的应用落地,区块链行业从单条链的发展正式进入局域网络发展(100条平行链),并将继续向真正的区块链网络前进,对波卡本身还是区块链行业来说都将是一个利好消息。 从普通用户的角度来说,波卡平行链插槽拍卖是行业中增加了一种周期性的资金托管方式,这种资金托管方式较之期货、DeFi更加平缓且具有长期效果。 而对于波卡而言,通过波场平行链插槽拍卖能够获得来自100条平行链的完整生态和用户,是挑战以太坊网络的最佳时期,或许有可能借此开启新一轮的跨链技术研发。
7、全面解析波卡平行链插槽拍卖:形式、流程与商业模式 https://www.panewslab.com/zh/articledetails/1636342389519831.html 2021 年 3 月 2 日,波卡官方转推了 PolkaBTC 测试网正式启动的消息,这意味着用户可以测试 1:1 将比特币支持的资产铸造到 Polkadot (即 PolkaBTC)上,并能在去中心化交易所、稳定币和贷款协议中使用它们。 对于那些资深波卡粉丝来说,该消息预示着他们等待已久的波卡平行链插槽拍卖即将到来,或者说接近真正意义上的里程碑,因为按照之前的计划,当这些公益平行链(如 PolkaBTC)上线后,下一步就是 Kusama 的平行链插槽拍卖,随后便是波卡插槽拍卖。 我们相信到现在为止,稍微了解波卡的人一定或多或少听说过,那个被称为最高光环的「平行链插槽拍卖」,但我们也相信绝大部分人还不了解波卡插槽拍卖的全貌,因此,我们尝试以更全面、更客观的视角来为大家分析波卡平行链插槽拍卖的精彩故事,以此真正了解插槽拍卖的价值和意义。
什么是波卡平行链插槽拍卖?什么是平行链插槽? 首先,我们需要回顾下波卡的架构。波卡本质上是一个可扩展的异构多链区块链,由一个协作的去中心化区块链网络组成,这个网络也可以叫做中继链。中继链与并行运行的分片链(也就是平行链)交互,这些平行链可以看作是中继链的客户端,中继链的目的是保护平行链顺利运行。 波卡允许多条专用区块链在安全的、无信任环境中相互沟通,从而实现了区块链的可扩展性。平行链与中继链相连,这就需要平行链插槽。只有获得插槽,才能成为真正意义上的「波卡平行链」,因为插槽能够提供波卡共享的安全性、跨链互操作性、链上治理、无分叉链上升级、扩容性、低手续费等优势。 简单地理解,好比是平行链是生活中的各种电器,而波卡中继链的插槽就好像是通电的插座一样,只有当电器接上插座通电,才能发挥真正的作用。
什么是平行链插槽拍卖? 然而一个中继链所能承载的平行链是有限的,平行链插槽自然便成了稀缺资源,那么众多项目都想要接入波卡,自然是僧多粥少的情况了,那要怎么办才能让插槽公平公正的分配出去呢?这种情况最适合的解决方案就是竞拍了。 于是波卡官方顺理成章地设计了平行链插槽拍卖的机制。为了确保公平分配平行链的插槽,波卡利用蜡烛式拍卖的方式进行平行链插槽竞拍。 蜡烛拍卖是公开拍卖的一种形式,投标人提交的出价越来越高,在一个随机确定的拍卖时间结束时出价最高的投标人被视为获胜者。在波卡平行链插槽拍卖中,任何人都可以参与,拍卖在区块链上进行,具有可追溯确定的随机结束时间,如果有谁(个人或智能合约)赢得了拍卖,不需要任何许可就可以来部署他们的平行链,波卡平行链插槽拍卖本质上是去中心化的。 由于任何人都可以参与的特点,截止到平行链竞拍正式开始,我们都无法确定具体参与竞拍的项目(或个人)的数量和情况。可竞拍一旦开始,所有参与数据都在链上公开可查,官方会公布竞拍具体开始时间和结束时间。 除了大家都知道的结束时间,波卡系统会生成一个随机结束时间,这个时间会被转换成区块数,而这才是决定最终赢家的关键。未赢得插槽的团队可以参与下一轮插槽拍卖,一般来说每两周会进行一次。 所有参与者需要确定两个信息:参与竞拍的 token 数量、竞拍的插槽时间。竞拍的插槽时间根据生态项目所需来确定,并非一定是越长越好。另一个需要讨论的是参与竞拍的 token 数量,毕竟不是越多越好,也不能少的上不了「及格线」。 平行链插槽竞拍太贵,可以 「众贷」 波卡平行链插槽竞拍需要 DOT,如果项目方没有足够的 DOT,也想参与竞拍怎么办呢?官方也想了解决办法,提出了 Crowdloan (PLO)也被称为「众贷」的方式。 想要参与竞拍平行链卡槽的团队通过发起 PLO,向市场进行去中心化、无差别的众贷,用筹集到的 DOT 参与竞拍。若竞拍成功,在平行链插槽租赁期间 PLO 中的 DOT 将被锁定,PLO 发起方将因此奖励给参与众贷的投资者该生态项目的 Token。租赁期结束后,DOT 会回到投资者手中,并可以流通。与众筹是把钱投资给项目不同,众贷是锁定到智能合约中,是借给了项目方,既不会损失自己的本金,反而会获得项目方的 Token 作为资金利息。 当然,如果从另一个角度来看,PLO 实质上也是一种分发自己 Token 的方式,是一种互惠互利的融资方法,它赋予了竞拍平行链卡槽团队更加机动灵活的竞拍资金,同时给了拥有 DOT 的市场投资者一种无损本金的投资方式。 插槽没拍上,平行线程来救场 如果项目方参与波卡平行链插槽拍卖失败了,也不用担心自己的项目享受不了波卡的跨链功能。波卡提出了一个平行线程(Parathread)的机制,来满足这样的需求。 这里我们要着重说一下平行线程。平行线程的加入不需要参与平行链插槽拍卖,只需要支付 10-100 个 DOT 的储备金,在其数据被波卡处理时,按区块付费。平行线程的收费和出块验证机制本质上和平行链是相同的,其费用结构由交易手续费和来自平行线程的赞助两部分构成,并且同样需要竞拍才能获得区块的优先使用权。 然而,我们不得不承认平行线程是目前加入到波卡生态系统中最方便且前期投入较低的方法之一,受到了很多项目方的喜爱。如果项目方没有无时不刻使用平行链区块的诉求,只需要在必要时将处理的数据打包进区块中,就很适合使用平行线程。平行线程和平行链具有同样的底层代码和计算模型,可以进行跨链互通,也可以按需相互转换。 做个简单的比喻,平行链就好比是我们手机的无限流量套餐,支付月份便可以使用无限流量,而平行线程则像是根据你使用的流量来计算你的话费。 平行链插槽拍卖和平行线程的使用都非常重要,两者各有个的优势,需要项目方根据自己的需求来进行选择。在目前有众多的明星项目还没有公布其平行链竞拍计划的当下,平行链插槽的拍卖依旧是我们关注的焦点之一。 尽管区块链系统的设计空间是无限的,但中继链能承载的平行链却是有限的,基于目前的设计,波卡大概会产生 100 个平行链插槽。 而这 100 条平行链,并不会全部用于插槽拍卖,实际上,官方对于波卡整个生态所需要的一些基础功能还是特定保留了一些专用插槽来满足必要的需求,这十分契合计划经济+市场经济的思路。 目前平行链插槽具体分为公共利益链插槽、平行链插槽、平行线程池。 图片: https://uploader.shimo.im/f/hhU4KoK5yt23TXKK.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0 按照波卡官方博客公布的对「公共利益平行链」介绍,表明将通过公投的方式来决定为公共利益平行链注册插槽。公共利益链分为两类,用于 Staking 和理事会的选举、治理和身份,用于余额的「系统平行链」,以及以桥、通用的资产链和 DOT 计价的智能合约平台为代表的「公共功能平行链」,大概预留 10-30 条公共利益平行链。 除此之外,一部分插槽被称为租用插槽,就是这部分的插槽将要用于平行链插槽拍卖中去。波卡平行链插槽拍卖获得的是租赁权益,其使用期限是有限的,以 6 个月为单位,最长 2 年,提供给需要持续网络吞吐量资源和波卡生态系统全部功能的一般平行链项目。 最后剩下的部分就是平行线程池了,平行线程池是一个通过在开放的平行链插槽中竞拍区块的动态使用权的集合,每个区块最多承载 50 个平行线程。 平行链的上线流程究竟怎样的? 来自 Gavin 博士去年年底的回答,具体为: 上线 Rococo v1 并等待其稳定运行; 上线 Kusama 的 system (公共利益性质) 平行链; 开启 Kusama 上的竞拍; 上线 Kusama 上竞拍成功的平行链; 在审计完成后,上线 Polkadot 的公共利益性质平行链; 开启 Polkadot 上的竞拍; 上线 Polkadot 上竞拍成功的平行链。
波卡平行链插槽拍卖的意义 前面我们了解到了波卡平行链插槽拍卖的具体情况,那么插槽拍卖对于整个波卡生态来说究竟有什么意义呢,以及这会给参与到平行链拍卖的项目怎样的价值,下面我们重点讲述下。 对于波卡的意义 首先平行链插槽拍卖是波卡是对平行链项目的一次炼金石!这个机制,其实也是一个优胜劣汰的选择机制。 如何理解呢? 平行链插槽拍卖是需要非常多 DOT 的,而竞拍的情况意味着要体现项目方对插槽的真实估值,出价最高的竞标者得,这就需要比拼项目的硬实力了。这第一个门槛就是判断项目方本身是否十分优质,可以融到足够的资金来参与平行链插槽拍卖。 如果募资不够的项目,假如他们本身的运营能力或者项目本身也还不错,也可以利用 PLO 的方式吸引到足够多的人支持自己参与竞拍,这也是考验项目的第二个关卡。 还有第三个考验,这也是官方之所以用插槽这个定义的原因,因为插槽的形容十分的形象,既然是插槽,自然是可以插上,也可以拔出,所以官方故意把平行链插槽设置成为有限时间的使用权,最多可以使用两年,其目的在于,如果这两年项目发展后续不行,就得自动让出插槽的位置,让外强中干的项目早早地退出。 其次,插槽拍卖可以为波卡生态带来真正的活力,当插槽拍卖常态化后,是大约两周会有一次拍卖,如果许多知名项目都想要加入波卡生态,岂不是每过两周就有一次利好吗?而且知名项目参与插槽拍卖,会把自身的热度和本身的用户都带入波卡生态,不管是从关注度还是从资金层面,都会为波卡带来一波热潮。而运营一个项目的时候,是十分需要这样的运营节奏,持续的让它发光发热。 最后,插槽拍卖也是对波卡团队过去努力数年的检验,毕竟在跌跌撞撞的岁月里,人们依然对波卡充满了怀疑,哪怕如今热度高涨但也不乏怀疑论者,而插槽拍卖成功与否更像是一次大阅兵,对波卡自身来说也是一次意义非凡的证明。 对于波卡生态项目的意义 上面我们谈到的是关于波卡本身来说平行链插槽拍卖的意义,但对其中参与的项目方来说,同样意义非凡,那些为插槽拍卖摩拳擦掌的项目方可谓铆足了劲在为这一天到来做准备,有的甚至已经跟随波卡努力了数年,还有异军突起但同样「功力深厚」的新兴项目,他们都是插槽拍卖的主力军。 插槽拍卖对波卡是练军,对波卡生态项目方来说同样如此,他们翘首以盼的等待,只为成为波卡平行链中的一份子,毕竟平行链的光环不仅可以让他们走上新的台阶,甚至可能成为下一代区块链基础设施服务的提供者,这是集荣耀和价值为一体的「皇冠」,自然值得他们争取。其中,通过 PLO 能众贷到多少 DOT 以支持这些项目方获得平行链插槽,就是对他们的一个最好的体现。 同时,参加插槽拍卖,也是对自身项目的一次很好的活动策划,因为 PLO 的机制也可以理解为一种 Token 分发机制,也会吸引到众多参与者,所以插槽拍卖也可以相当于是另类的公募,为自己的项目宣传和造势。 只是从我们 Polkadot 生态研究院的角度来看,客观来讲,对于有些项目方来说,宣传作用远大于实际作用,有可能会抢到了平行链插槽,而实际自己的项目对于跨链的需求可能早期来说并没有那么大的需求,但若是为此付出了巨大的成本,是否会得不偿失呢? 不同的项目,发展的节奏不一样,比如 DeFi 类的项目如果获得了平行链插槽,它们可以很快的落地,并运用起来。但是对于一些基础设施类的项目,当下还在完善自己的基础设施,还没有什么应用落地,即便早早地获取了平行链插槽,也没有多大实际作用。不妨考虑下,就用平行线程作为早期过渡,等到自身发展成熟,生态开始做起来了,再考虑去竞拍平行链插槽,是否会更合算一些呢? 对于生态参与者的意义 而谈到波卡生态社区的建设者,对于那些从几年前就开始关注波卡的人来说,一方面插槽拍卖可能会拉高 DOT 价格,另一方面也可以通过 PLO 的方式为自己看好的波卡项目投上一票,不仅可以收获价值,还能成为项目背后真正的「币东」(类似于股东)。 插槽拍卖采用的 PLO 方式对于普通用户而言,可以说是真正意义上的「价值选择」,因为相较于两三年前的 IXO 方式,PLO 不会让我们损失手上的筹码,仅仅是沉没成本的风险,毕竟「赔了夫人又折兵」的买卖实在不受待见。 综合来说,波卡插槽拍卖让波卡、波卡生态项目和波卡生态参与者都能在其中找到一些意义,而这些意义和价值又会映射到波卡整个发展中,这也是为什么插槽拍卖能够大红大紫的原因,我们相信这将成为一次「三赢」的盛宴。 平行链插槽拍卖可能会带来的新商业模式 波卡平行链插槽拍卖是一种新的机制,会带来新的供需关系以及利益分配,我们认为未来会围绕这个机制诞生出许多新的商业模式,也会带来一些新的功能和商业形态,据此我们可以推演出一些可能会带来的现象,以供参考。 平行链插槽使用权租赁 随着波卡的价格一路攀升,成为平行链所需要的资金体量会非常高,让许多想要使用跨链功能的项目难以竞争上,又或者望而却步,选择平行线程。而另一方面,对于一些有资金优势的项目能够抢到平行链插槽,但并不意味着这些项目对跨链需求很大,由此也会带来供需不匹配的问题,导致旱的旱死,涝的涝死。 这样的情况其实在现实中也有,比如房地产,有人有多套房子,有人还没买房,但是对住房的需求又是刚需,于是便出现了租房的情况。同样,对于波卡来说,或许今后会出现一些新的机制或工具,帮助那些对于跨链功能用的不多而又已经拍下插槽成为平行链的项目方,将使用跨链功能的资源再分配出去,也可获得额外的收益。 值得注意的是,尽管官方也有平行线程让许多没能竞拍到插槽的项目提供同样安全可靠的跨链功能,但是平行线程是按区块收费,成本比平行链插槽要更贵一些。所以,已经获得插槽的平行链可以打一打价格战,将资源转化为收益,这是一个十分值得考量的商业模式。 释放锁在插槽拍卖中 DOT 流动性的机制 要获得波卡平行链插槽是需要锁住 DOT 的,对于这部分 DOT 来说,本身只是损失锁仓期间的机会成本和流动性。那么,这部分 DOT 真就只能这样一直锁住了吗? 其实不然,在现实生活中,像这种已经有明确资产或者资金流水的前提下是完全有解决办法来释放流动性的。最简单的就是抵押借贷,证明你自己的资产是被智能合约锁在了波卡上,就好比是拿着房产证证明自己有房产一样,这样便可以找金融机构做房产抵押借贷。 因此,如果有项目方专门做这个解决方案,或者 DOT 持有者所参与的这条平行链的项目方也提供了这样的解决方案,对于 DOT 持有者来说,将锁住的 DOT 支付一点资金成本便可释放流动性,如此将自己资金的使用率做到更大,并从容的管理自己的资产是十分有必要的。 未来,如果波卡的价格节节攀升,平行链数量越来越多,被插槽拍卖机制锁住的 DOT 的价值也越来越高,而释放这部分 DOT 流动性的功能所涉及到的资金体量很可能达到千亿级别,这应该会成为许多波卡生态项目盯上的一块大肥肉。 平行线程相关场景 平行线程的机制,简单来说每个项目方可以根据自己使用跨链的情况而支付成本,随用随付,这个机制同样需要一定数量的 DOT (当然它远小于平行链所需的 DOT),因此,平行线程里的 DOT 也会有流动性的需求,适用于我们刚刚提到的第二种商业模式。 另一方面,平行线程的机制又与平行链不同,它是随用随付,具体来说,是将所需的跨链交易打包进区块,但是每个区块又只能执行有限的数量,所以,这里也存在一个小小的竞拍,价高者优先,对于不那么急切的人则可以选择慢一点但是便宜一点,这里就存在一个新的市场,通过判断竞拍中的价格和排队情况,来辅助大家根据自己的需求来选择怎样的费用和转账速度。(这部分详见官方 wiki,具体情况有待波卡的落地和进一步的发展) 联合竞拍插槽 如果选择平行线程虽然门槛低,总体价格便宜,但是它是随用随付,按单笔交易来计算,单价是比较贵的,如果项目方对于跨链需求高,但是又没有竞拍到插槽,那么用平行线程的方式也是一笔不小的费用。 所以,也许以后大概率会出现几个项目方组成一个小联盟,联合竞拍一个插槽,这样会更划算一些。 围绕 PLO 的中心化与去中心化博弈 鉴于平行链插槽拍卖所需的 DOT 比较多,一些早期投资人或者在二级市场大量购买 DOT 的人,逐渐成为 DOT 巨鲸,这些人有的会长期看好波卡,选择将 DOT 去做 Staking ;有的人看好波卡生态项目,会选择自己看好的项目去参与其 PLO,但是也有的更看重流动性,会选择自己组建一个 DOT 池,满足各类项目方对 DOT 的需求。 这可以理解为成立一个 DOT 的银行,而对 DOT 有需求的项目方则好比是想向银行贷款的企业一样,而这样的中心化组织可以形成合力,获得更强的势能和信用,并借此可以获得一些稀缺的筹码,好比是银行做理财或者银行去做投资一样。 这是有利于生态发展的,但是这里也有一些问题,如果这样的 DOT 池只是少数巨鲸组合起来的,那么对于那些想要 DOT 去实现 PLO 的项目来说,自己项目的 Token 就很难惠及更多的人,不那么去中心化。 事情的发展往往阴阳相生,一定会有一批更崇尚去中心化的开发者,开发出一些机制使得 PLO 尽量做到去中心化,与中心化的机制博弈,最终可能会演变成 PLO 的常用工具。 小结 以上只是我们主观的观察和推测,实际情况如何还要看后续的发展,不过我们依然愿意分享出来,一方面可以帮助有心的开发者或者参与者提供一些思路,另一方面如果真有这些情况发生,也丰富和完善了波卡生态,这是皆大欢喜的。 当然,对于持有 DOT 的人来说,如果有发现这些现象发生了,也可以提前布局,获得一些红利,比如某个项目真的去实现了如我们所说的一些商业模式,并发行了自己的 Token,那么看过本文的朋友便可以更清晰的了解这些商业模式背后的市场规模如何,可以提前参与获得早期红利。
8、波卡平行链插槽拍卖明日开启,万字攻略教你如何正确参与? https://news.huoxing24.com/20211110192824633672.html 6月15日,波卡的金丝雀网络Kusama迎来了第一次平行链插槽拍卖,随着长达五个月Kusama平行链的运营和研究,我们终于迎来了波卡平行链插槽拍卖的重要时刻。 10月,在波卡上开启平行链拍卖的motion 118被Polkadot理事会投票通过,从2021年11月11日开始,我们将开启第一次波卡平行链插槽拍卖。这是一个极具有里程碑式历史意义的事件,标志着波卡生态系统结束了漫长的探索期,Web3.0时代不再仅仅是一个理想的蓝图,波卡构想的“万链互联”也会在未来的一年里进入飞速的发展。 而对于生态的众多探索团队来说,通过连接具有前瞻性技术的波卡主网,不仅可以享受到中继链所带来的共享安全性及与其他链的互通性,还可以获得庞大的用户社区和数十亿的价值流动性。 毫不夸张的说,波卡平行链插槽拍卖是在万众期待下开启的。然而对于波卡生态项目的用户而言,虽然“插槽拍卖”并不陌生,但是参与其中的项目始终带着些许“神秘面纱”。为此我们希望通过简单的介绍,让大家对本次波卡平行链插槽拍卖及参与方有一个初步的了解。 插槽拍卖的规则是怎样的? 有了Kusama之前的插槽拍卖示范,波卡平行链插槽拍卖的规则似乎更加的易于理解。 本次平行链插槽拍卖共分为两轮: 第一轮:共5次拍卖,从2021年11月11日开始,每次为期7天,每7天开启一次新的拍卖,租赁期为Lease 6到Lease 13(Lease 6从12月15日开始)。 第二轮:共6次拍卖,从12月23日开始,每次为期7天,每14天一次,租赁期为Lease 7到Lease 14(Lease 7从2022年3月9日开始)。 一次拍卖期会经历7天的时间,前两天是出价期,后5天则是随机结束的蜡烛期。一旦拍卖开启,参与平行链插槽拍卖的团队的Crowdloan模块就会自动出价,Polkadot JS的页面会显示出当前区块出价最高的平行链项目,社区用户可以在整个拍卖期间对支持的项目进行贡献以帮助项目在拍卖期间赢得插槽。 波卡平行链插槽拍卖与Kusama有何差异? Kusama作为先行网是为波卡去打好基础的,所以波卡与Kusama在代码层面上基本没有什么差异,但是我们关注这次的平行链插槽拍卖并不只是简单的看波卡插槽拍卖规则上的一些差异,更多的还应该看项目方、市场情况、筹码分布等场外因素的差异,明辨这些差异,才能更好地参与这次平行链插槽拍卖。 1.规则上的差异 首先是波卡平行链插槽拍卖规则上的差异,这里差异并不多,主要体现在平行链租期上,每个波卡平行链插槽的时长是两年(96周),被分为8个租赁期,每个租赁期为3个月,所以波卡平行链插槽的租赁期时间是三个月到最多两年。 而Kusama上的租赁期会短一些,也是分为8个租赁期,但是每个租赁期只有6周,所以Kusama平行链插槽的租赁期时间是6周到最多1年。之所以Kusama会更快一些,也是因为官方希望这些平行链的状态转换发生的更快一些,这样才能作为先行网提前验证一些情况,以确保波卡能顺利运行。 而Kusama的后续安排也为波卡的平行链插槽拍卖提供了一个前瞻。Kusama上目前暂定的是总共会有48个通过拍卖分配的平行链同时运行,按照每周进行一次插槽拍卖,48个平行链是48周,刚好是一年的时间,此时第一个和第二个Kusama平行链插槽就刚好到期,正好可以接着新一轮的拍卖。 波卡是否会采取同样的方式呢?从目前来看是很有可能的,因为尽管第一轮的插槽拍卖是5个插槽每7天一次,但是第二轮的插槽拍卖则是每14天一次,每次拍卖7天,第二轮总共6个插槽。根据Kusama的情况来看,波卡以后也会很可能遵循第二轮的规则,每14天一次,每次拍卖7天,以两年为周期运行,正好可以让第一个插槽到期。 不过Parity推荐了一种保守的平行链推出方法,建议合理的方法是确保在代码成熟之前,加入波卡的平行链总数不超过75%在Kusama上运行的数量。如果出现任何意外和重大问题,波卡可能需要暂停拍卖,直到这些问题得到解决。所以,更有可能的是,波卡运行的平行链数量会暂定为36个。 另外,Kusama平行链插槽拍卖算是一次先行试水,当第一轮5个插槽开始拍卖的时候,大部分人都认为短时间内就只有这么多个插槽,所以在竞拍第一轮前五个的时候,许多项目Crowdloan的参与者基本都是全情投入的状态, 以至于前五个插槽的竞拍数量差异很大。等到第二轮的第6-10个插槽时,才更显得势均力敌。 并且,KSM最初是早期DOT持有者以1比1空投的方式发放的,所以KSM与DOT的分发方式和筹码分布都不同,DOT筹码分布会更加分散。同时,许多参与者并不打算参与先行网的平行链插槽拍卖,而是只等着参与波卡的平行链插槽拍卖。 这些基本情况的差异决定了Kusama平行链插槽拍卖的结果会与波卡的情况有许多不同之处。因此,如说按照Kusama的排行来预估波卡上参与平行链插槽拍卖的项目的排行可能就会有一些误差了。 2.项目方情况的差异 (1)参与的项目方不同 参与竞拍的项目也有不同的情况,一些项目方只打算参与Kusama或者波卡的平行链插槽拍卖,而不是两者都参加。又或者经历过Kusama平行链插槽拍卖后,有了前车之鉴,并不打算去竞争,所以可能会选择避其锋芒不在前几个插槽上过度竞争,而是在后续的插槽拍卖中再参与。 (2)项目方的激励方式不同 与波卡一样,大部分项目方在波卡的平行链Token是有融资的,但是在Kusama的先行网上的则不同,又或者,项目在早期是并没有想过做一个Kusama上的先行网,于是在之前就把波卡上的Token通过一些机制比如锁仓挖矿等等,分发出过一部分筹码,因此这些项目方也会有筹码分布不同的情况。 其次,各项目方在Kusama先行网上的拍卖策略并不一定是最优,会吸取在Kusama上的教训,并在波卡平行链插槽拍卖上做出一些调整。 另外,获得插槽拍卖并不只有Crowdloan这一种方式,也可以是团队自己的DOT来参与,一些项目方本就是波卡的早期投资者,所以这些项目方手上的DOT也会是他们成功获得插槽的保证之一。 因此,基于以上几个原因,各项目方在波卡上的平行链Token拿出来作为Crowdloan激励的比例不一样,也可能方式上也不一样,需要注意其差别。 (3)市场反馈的差异 这次插槽拍卖会有更多的聚光灯效应,也就是会获得更多的关注。首先从交易所的热情程度也看得出来,以Binance、OKEx为代表的一众交易所开始推出各种活动和机制大力支持这一次波卡的平行链插槽拍卖,并根据自身的优势,推出了一系列的AMA、Crowdloan模块和相应的激励政策,Binance还为参与者提供释放流动性的BDOT机制。 其次,由于之前赢得Kusama平行链插槽的一些项目已经将一些Crowdloan奖励发给参与者了,并且这些先行网的Token也已经上线可以交易,很自然的参与者们是能体会到Crowdloan所带来的红利,同时,参与者也能直观地感受到哪个项目给到他们的红利会更多,这会激励更多的人在波卡平行链插槽拍卖时参与其中。 或许跟波卡在许多人眼中是一个更正式的版本而Kusama是先行网有关,波卡的平行链插槽拍卖所带来的热度比Kusama的声势要更加宏大。不过不管怎样,对于参与其中的人和项目方来说,经过Kusama上的初次实践后,波卡上的平行链插槽拍卖总会显得更加游刃有余,心里也更有数,基于此,我们再来看看参与波卡平行链插槽拍卖应该采取怎样的策略。 波卡平行链插槽拍卖的策略 1.收益的计算 首先我们需要明确,收益的多少取决于怎么计算。 简单的计算方式是假如参与插槽拍卖的项目获得了插槽,如果参与该项目的Crowdloan所获得的Token在价值上是超过DOT在这两年锁仓期内的Staking收益,那么参与该项目的Crowdloan就是明确的选择。如果这个项目的Token没有跑赢Staking收益,那参与该项目的Crowdloan就是亏损。 如果参与了某项目的Crowdloan,但是该项目没有获得插槽,那么会损失这段时间以来如果将这部分DOT拿去Staking的收益,但不会损失DOT本身。 不过,还有更复杂的计算方式,就是要把时间的因素考虑的更细以及更多的奖励机制考虑进去。 大部分项目对于Crowdloan的激励会采取线性释放的方式,或者是先释放一部分,剩下的一部分选择线性释放。 所以,复杂的方式就要考虑是等到Crowdloan的Token在两年后全部发出来之后再去变现,还是说在初期累计一定量的线性释放后的Token就提前通过变现的方式回笼奖励,以及将参与Crowdloan的DOT通过一些释放流动性的机制变现一部分,将这两部分的资金进行再利用。 比如用于新的平行链插槽拍卖,参与之后,可以继续利用这些释放流动性等操作再将一部分资金释放出来,以此类推。 不过这种连续释放流动性的方式会在无形之中增加自己资金的杠杆,以及中途带来的一些损耗,所以还需要酌情使用。 比如Acala就可以释放参与Crowdloan的DOT的流动性,获得lcDOT,lcDOT可以兑换成dot,进而进行更多的操作,不过目前Acala仅支持参与Acala贷Crowdloan的DOT的流动性释放,后面极有可能会开通支持其他项目Crowdloan的DOT的流动性释放。 另外,还要考虑一些项目方与其他平台合作所带来的额外的收益。比如通过一些第三方的平台参与Crowdloan,会获得额外的这些第三方提供的Token或者其他激励,这就需要针对性去找自己心仪项目的客服去了解具体参与的渠道有哪些,各渠道的奖励有哪些,然后再看不同的奖励所带来的收益如何。 2.参与的标的选择 ①如果只是想短期获利,就要多考虑短期有热度,能够确定拍中插槽,并且有初期释放Crowdloan奖励的项目。不过需要稍微注意下,这些项目的筹码分布,早期投资机构的Token解锁机制是怎样的,项目早期是否有额外的筹码释放等等。 ②但如果想要长期获利,就要考虑项目在两年的发展后会达到什么样的高度。这就需要进一步对项目进行尽调,要了解项目的基本情况,团队实力,资本支持,以及当下的运营情况,运行的数据等等。 尽量选择定位的赛道很广,发展空间很大,有很强的可扩展性的项目,以确保该项目的上限比较高。同时,也要选择其中团队实力强劲,运营能力很强,资源比较广,资本实力雄厚的项目,以确保该项目的下限不低。如此便能更好地保证自己获得不错的红利。 目前来说,能够支持EVM的智能合约平台类型的公链风格,都算是可扩展性很强的项目,这里不能看各个项目的宣传是怎样的定位是怎样的,要更多的看它是如何实现的,比如像Acala尽管定位是DeFi中心,但是它是支持EVM的,也可以支持链游和NFT,所以Acala是属于公链的逻辑。 不过也有一些项目是走的应用链的风格,这就要多考虑一下它的应用方向有多大的市场,是否有技术门槛,是否其他项目也能做,项目方的运作是否能够增强项目的可扩展性。以此来判断应用链类型项目的前景。 (有的朋友会嫌麻烦,但是将自己的DOT锁仓两年,这还是一个比较重要的事,多花点心思是十分有必要的。)
3.参与的时机 至于参与的时机,我们在之前Kusama平行链插槽拍卖后做了一个复盘,对于想要拍到插槽的朋友来说,第一轮的头两天最重要。回顾一下我们在文章《详解Kusama第二轮插槽拍卖的机遇与策略,哪些团队值得重点关注?》中的观点: 波卡和Kusama网络是采用的“2+5”的蜡烛拍卖机制,拍卖以两天的初始竞标期和五天的结束期开始。前两天的竞标期是正常的出价时间段,之后的第三天到第七天是一个长达五天的结束期,这一段时期执行的是蜡烛拍卖的机制,也就是说在后面五天内,虽然也可以增加筹码,但是拍卖可能随时结束。 结束时间是在最后一天才可以知道,是随机的通过追溯在最后五天结束期的哪一个区块截止,在结束前获得最高票数的项目方会成为赢家。 所以,对于项目方来说,要想赢得插槽拍卖,最好的方式便是在一开始就把自己所有的子弹全部打完,将手中的筹码在竞拍开始的第一时间就投进去,因为前两天的竞标期也是有个展示效应的,第一时间的排行会影响那些还没有参与Crowdloan但是打算参与Crowdloan的人们手中的DOT的,所以第一时间秀肌肉是很有必要的。 但是对于打算参与Crowdloan的人来说,最合适的参与时机则是在第一个插槽拍卖的前两天的最后几小时,因为此时,项目方不仅已经把该亮的底牌全亮完了,找额外的外援也基本上落实到位了,所以在前两天最后几小时的排名,会是决定前几个插槽花落谁家的一个预告版,此时再在其中选择排名靠前的项目,基本就能稳稳获得插槽。 最后,打算参与Crowdloan的参与者可根据自己的实际情况,基于上述三点得出自己专属的波卡平行链插槽拍卖的策略。
平行链插槽拍卖参与方式? 我们在上文详细的介绍了波卡平行链插槽拍卖的规则与现状。那么除了官方参与方式和钱包类参与方式,普通用户该如何参与其中呢?我们对当前较为高效的方式进行了梳理,分为中心化和去中心化两大类分别为大家进行简单的介绍。 1.中心化参与方式 首先,用户可以通过诸如Kraken、Binance、OKEx、Kucoin、Gate、MEXC等中心化交易所参与Crowdloan,并获得交易所给予用户的双重奖励。随着波卡平行链插槽拍卖的临近,众多交易所开启了预热活动。 OKEx为Acala、Astar、Moonbeam等三个项目进行了早鸟投票。Binance在11月4日开启了Moonbeam、Clover、Litentry、Bifrost、Efinity、Parallel、Astar、Acala、Manta九个项目的支持通道,并提供了3000万美元的等值奖励。 交易所的参与在一定程度上提高了用户的积极性,并提高了Crowdloan的效率。对于交易所、波卡生态系统和项目方而言可以说是三方的共赢。 2.去中心化参与方式 除了通过交易所,普通用户还可以通过波卡官方的Polkadot JS参与,同时想要获得额外奖励的用户则可以通过Zenlink、Parallel、Bifrost等去中心化的方式参与Crowdloan,以释放更多的流动性。 Zenlink是一个基于Polkadot的底层跨链DEX协议,致力于成为Polkadot的DEX组合中心,它可以连接Polkadot上所有的DEX并聚合流动性,为用户提供低滑点的交易体验。 在Kusama平行链插槽拍卖时,Zenlink结合波卡插槽拍卖而构建的去中心化PLO支持应用SlotVault为参与Crowdloan的用户带来了额外的激励,释放流动性并且保障了资金的安全。虽然当前Zenlink还没有官宣波卡平行链插槽拍卖的激励政策,但是后续会支持波卡上的平行链插槽拍卖,需静候佳音。
而作为去中心化Money Market的Parallel更是针对Crowdloan上线了Auction Loan。通过Auction Loan参与Crowdloan,用户可以赢取高达40%的早鸟奖励。并一站式的获得多个Crowdloan项目的多层奖励,从而实现Crowdloan参与的最大收益。当前Auction Loan支持Acala、Parallel、Manta、Aster、Litentry等项目。 Bifrost是波卡生态系统的DeFi基础协议,为质押资产提供流动性。在本次波卡平行链插槽期间,Bifrost在Polkadot上部署了SALP,也就是Bifrost Dapp Dot Slot模块中开启了Derivatives vsDOT+vsBond的铸造模式,并支持首届Polkadot平行链插槽竞拍的项目 Acala、Astar、Manta、Litentry等项目的Crowdloan。除了获得vsDOT带来的流动性之外,用户每通过SALP投票项目将会额外得到0.035枚BNC。 如何在Crowdloan最大化收益并且获得最大的流动性俨然变成了用户需要用心考量的问题之一,关于更多去中心化的参与方式,读者可以参考我们之前详细的总结性文章:《除官方渠道外,普通用户如何高效及多样化的参与Crowdloan?》
9、我们离波卡生态应用爆发还有多远,又该如何破局? https://news.huoxing24.com/20211213113806825599.html 大概一周前Kusama的第15个平行链插槽Auction结束,这意味着Kusama的第三批插槽的4次Auction已经全部结束,第四批次插槽也顺势开启,在经历长达5个月的拍卖后,Kusama已经进入了比较稳定拍卖节奏,接入中继链的项目也稳定运行着,可以说这几个月的拍卖和接入验证了平行链的效用。 因此,当我们回看波卡插槽当前的拍卖节奏时,会发现几乎与几个月前的Kusama如出一辙。同时,波卡插槽第一轮的第三个Auction也在顺利推进着,第三位波卡平行链悍将即将诞生,当然,这一轮的竞争也略显焦灼,可见市场热情依然值得关注。 按照既定计划,第一轮的5条平行链将在12月18日左右接入中继链,并以平行链的方式出块,可以说这一刻的历史意义不亚于去年波卡主网的上线,甚至在波卡发展历程中足以留下浓墨重彩的一笔。 另外,我们也看到诸多公链在Dapp方面展现出的活力,尤其是DeFi、NFT和最近大热的链游,都给不同生态带来了新的动能,沿着该思路我们不禁思考,平行链开始运行后,波卡生态何时会迎来应用的爆发,又会以怎样的方式在应用层面展现独特的创新,由此我们展开了本文的叙述。 一条公链怎样快速爆发生态? 在公链集体爆发的2012年,似乎要迎来“百花齐放”的局面,我们可以回顾下这一年来所经历的公链潮。 在2021年初,随着Crypto市场回暖,ETH的DeFi生态再次发力,但是由于以太坊自身的硬伤制约了DeFi的发展,使得其他公链迎来发展生态的契机。在今年的第一季度,作为去年9月才刚上线的去中心化公链,BSC上爆发了一系列高质量的项目,其交易量已经超过了以太坊。 除此之外,还有亮眼的Polygon,通过与Aave开启联合流动性激励计划,让Polygon在很短地时间内获得了大量的TVL,并吸引众多成熟项目在其上部署,迅速做到了冷启动。 而今年8月,Avalanche基金会宣布将推出1.8亿美元的流动性挖矿奖励计划Avalanche Rush,并与知名的优质DeFi应用合作,鼓励更多应用和资产加入蓬勃发展的Avalanche DeFi生态,这一动作引得Avalanche的锁仓量节节攀升。 随后Fantom也依葫芦画瓢开启了自己的公链激励计划,在Yearn Finance的创始人同时也是Fantom技术顾问的Andre Cronje的疯狂打Call下,Fantom得到了巨大的关注和支持。几乎同一时间另一条公链Celo也故技重施,整个8月掀起了Avalanche、Fantom、Celo等代表的公链发展新浪潮。 但另一方面,在最近几个月链游的强势崛起也不得不让我们多多关注链游对公链生态的影响。 据上周最新数据显示,区块链游戏项目Axie Infinity在过去30天的总收入达1.9亿美元,而像Axie这样的P2E(Play-to-Earn,边玩边赚)类型的游戏总市值已创下历史新高,突破300亿美元。链游已经成为一种不可忽视的发展趋势了。 不过尽管如此,我们还是得辩证地来看链游。虽然Axie Infinity现在是单独做了一条以太坊的侧链Ronin,并且其TVL已经有14亿美元,但是其早期的发展还是在以太坊,但是我们发现在Axie Infinity并未带动以太坊自身生态的发展,反而是验证了链游这套逻辑,并激励了许多其他公链比如Wax上的游戏的发展。
链游自身的一些特性不同于DeFi,我们需要拆解一下看得更清楚。 首先链游没有像Substrate框架这样为开发者提供便利的工具,高质量的游戏需要花费大量的时间设计。其次,不同于传统的游戏,下载App或客户端完成注册后就能开启游戏之旅,链游的机制不得不提高了玩家的使用门槛,传统玩家至少要学会使用数字资产的工具才能够逐渐转化为链游玩家。 更重要的是,游戏的机制往往比较复杂,会涉及到许多专门针对游戏性而进行的设计,还包括一些角色培养、通关副本等等耗时耗力的设置,这些因素都会导致链游需要花更多的时间,并且会限制当个账号的资金容量。 因此,链游并不能像DeFi那样可以通过大户或者巨鲸的入驻,进而使项目快速发展。所以,尽管目前的市场表明,链游发展前景广阔,但是链游并不适合作为一条公链通用的冷启动方式。 综上所述,纵观整个Crypto行业,“公链激励与DeFi结合”逐渐成为了目前快速爆发生态可行性最高的方式,并且这种方式也已经得到了验证。新公链生态规模的不断扩大,虽然我们不能说生态爆发的有效路径只有这一种,但是有一个样板间的优质项目已经用实践证明了,只能说“链激励+DeFi”是目前可行性最高的方式。
波卡生态上的应用会以怎样的形式爆发? 1、基于公链激励 鉴于之前所说的公链激励中并没有技术上的门槛,并且也已经多次被验证过可行性,我们完全有理由相信兼容EVM的平行链也是可以基于上述逻辑复刻一个公链激励的,如果能找到一个知名的DeFi项目(AMM或者借贷)联合推出激励是最好的(参考Polygon与Aave),或者扶持自身生态内的一些不错的DeFi项目(AMM或者借贷)。 目前在Kusama上的先行网Moonriver已经有许多项目在其上进行部署了,顺利度过了冷启动阶段,俨然形成了一个小生态。并且现在Moonriver的TVL虽然从4亿美元回落到3亿多,却已经超过了许多以前的老公链了。 值得注意的是,Moonrvier也确实在实践公链激励计划。11月5日,Sushi和Moonbeam在Moonriver上为Sushi创建了跨链集成和联合流动性挖掘计划。效果立竿见影,当天TVL就开始上扬,在Moonriver上的Sushi很快便获得了8千万美元的TVL,并助推Moonriver的TVL从2.7亿美元突破到4亿美元。 目前仅有Sushi获得来自Moonbeam基金会流动性加速计划的激励,总共分配了25,000个MOVR至挖掘收益当中,但在流动性加速计划中,仍然有约975,000个MOVR会在未来分配给其他项目。 Moonbeam也获得了波卡的第二个平行链插槽,而在12月份Moonbeam很可能会链接到波卡中继链上,以及Moonrvier将会迎来Chainlink、Moonriver上推出“ERC20类型”的KSM、dTrade、Lido等知名项目的部署。 Moonbeam/Moonriver将会是一个很好地为我们展现公链激励计划会怎样助推某一条平行链实现生态爆发的样本。 届时,其他波卡平行链也可以借鉴同样的方式,并迅速点燃其他所有平行链,迎来波卡生态的大爆发,当然这里的前提是这些平行链在开发上是足够成熟的,能够承载生态项目的顺利运行。 图片: https://uploader.shimo.im/f/GPuMolFGdmJZvKHF.png!thumbnail?accessToken=eyJhbGciOiJIUzI1NiIsImtpZCI6ImRlZmF1bHQiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJhY2Nlc3NfcmVzb3VyY2UiLCJleHAiOjE2NDExMTgzMTQsImciOiJ2SjZkSlRwdHppSWYyU1ZLIiwiaWF0IjoxNjQxMTE4MDE0LCJ1c2VySWQiOjI2ODYxMjUyfQ.AOtU4cSqQaiwrWYv6iHMW9YtAe9kgLo4bCjqMZDm4V0
2、波卡特有的爆发路径 除了上述逻辑之外,还有波卡独有的一些场景也会带来让生态应用爆发的可能,我们主要关注资金扩容情况和跨链场景的打通,两者或许会成为波卡特有的生态发展路径。 资金扩容 波卡通过将成熟的公链,比如比特币、ETH、Filecoin等公链接入到自己的生态中引发的资金量的增量扩容。可以让一些成熟的拥有巨大资金体量的资产项目部署到波卡,而USDT/USDC都已表达过要接入波卡。 另外通过一些跨链应用比如Anyswap将一些其他链上的资产跨到波卡生态来,像Anyswap已经实现将USDC跨到Moonriver上。所以,当市场扩容时会让最能接住这些扩容资金的项目上的生态获得爆发的可能。 跨链场景打通 目前,由于XCM版本更新频繁,多条平行链在版本确认和XCM对接调试方面的进展比较缓慢,这也是为什么Kusama上已经上线了多条平行链却依然只看到Karura和Bifrost是目前唯一可以互操作的原因。 所以,当XCM足够成熟后,我们将会看到更多的平行链之间可以互操作,这部分互操作的流动性既可以赋能波卡也可以赋能那些能捕获跨链场景价值的应用。 Zenlink便是其中之一,Zenlink是一种波卡生态特有的分布式区块链网络应用,通过提供通用的DEX模块,从而可以让所有平行链都可以快速部署DEX,并且可以将这些不同平行链上的DEX打通,让他们中的流动性可以跨链互通。 所以,当跨链场景打通后,跨链的应用便如鱼得水,开始大力发展生态了。诸如此类的还有RMRK在做NFT方向的应用拓展,而未来波卡生态中将会有更多这样的分布式区块链网络应用诞生,也将会更好地捕获跨链的流量,迎来这些生态应用的爆发,横向地为波卡的各个平行链赋能。 当然,我们这里的描述都是基于波卡现状来分析,或许在生态发展中还会有意想不到的局面发生,而这也是生态发展的魅力。
后记 当我们回看波卡平行链时,我们需要从架构上来简单理解,因为其结构上的一致性,这意味着如果一条平行链因为某种运营方式成功启动了生态,并激励其生态应用的大力发展,那么,这种情况大概率能够复刻在波卡其他平行链上。 这正如公链潮一样,因为某个项目点燃了火花(此处主要指今夏公链TVL激励),后面的公链就学着复刻,由此才有了“新公链热潮”,同理,波卡生态极可能有同样的故事发生。 还有半个月左右的时间,波卡的第一批平行链就会集体在中继链上亮相,届时,谁能先跑出一个范例出来,就会如同星星之火一般,迅速点燃整个波卡生态。 尽管有人批判波卡打基础很慢,但是我们需要明白,一旦打好基础,生态发展速度将会几何级数的增加,以太坊如此,波卡也会如此,或许在接下来半个月,波卡生态要扬帆起航了。
No activity yet