ArcBlock资产链节点参与指南(讨论稿)

自从ABT Network发布以来已经有很多开发者、公司和伙伴使用ABT节点软件搭建了自己的实验、测试和生产链环境。 我们非常简单的一键发链设计也给很多人留下了深刻的印象。

ABT资产链上线后也越来越多人有兴趣来加入资产链节点,目前加入资产链节点是开放的,但需要较多的DevOp基本知识,因此我们计划在近期(Q2):

  • 发布更新版本的ABT节点软件,使得运维节点,加入链网更为容易,力图做到能完全在web界面下实现节点的建立、配置、加入/退出网络、管理升级等
  • 发布参与指南手册和配套的培训讲座,使得用户可以手把手学会节点的运行管理

在这些工作完成后,运行节点需要以下基本条件

  • 达到系统要求的服务器和网络环境。我们将和云服务合作伙伴一起尽快实现云服务上的一键部署节点功能,这样进一步简化这个步骤
  • 运行节点需要支付节点软件授权费,但如果加入ABT资产链将获得免费授权(采用退回方式,类似于押金)。也即用节点建立或加入其他网络需要付费,但加入资产链是免费的
  • 任何人都将可以加入成为节点,并可以随时退出。有恶意行为或者服务不稳定的节点会被网络自动剔除并可能被自动封禁,因恶意行为而被剔除的节点会被罚没押金(这个惩罚规则会逐渐出来,肯定不会因为偶尔网络机器故障而被惩罚,而是逐步的)
  • 如果要成为验证节点,需要抵押ABT,并签署链上协议同意在出现主动(恶意)或被动(因被攻击、网络故障等)验证错误时被罚没抵押(这也不是一次性的,而是连续和逐步的)。 由于验证节点并无出块奖励因此需要谨慎参与。

运行节点带来以下好处:

  • 提供节点的各种服务,如区块浏览器、API服务等。
  • 上述服务可以免费给自己的应用使用,获得最优性能
  • 上述服务可以提供为收费服务,获得业务收入(这部分细节待定)
  • 安装各种blocklet提供更多应用(可能可收费)
  • 开发和运行各种arcblock平台的dapps,blocklets

是否可以不运行节点而开发Dapps呢? 当然是可以的,但是:

如果只是开发应用,你可以使用开发者版本在开发机器上就可以完成运行,并不需要运行节点,但是在你的应用测试的时候,你可以能需要有节点才能在实际环境下测试。 如果你只是开发而不运营业务,毫无疑问不需要一直保存运行着节点。

  • 调用链的API服务是需要付费的 (目前是免费的,将来要收费),因此很小规模的用调用其他人的API服务划算,规模大了就自己跑节点划算
  • 调用别的节点的API服务数据上链速度可能更慢(网络延迟、API的rate limit、服务的多用户限制等),没有自己的节点可靠(专用、无rate limit、直接连接区块链节点,如果自己的节点就是验证节点就更快速)
  • 无法使用一些高级功能,比如AtomicSwap等跨链功能,跨链节点必须是一个逻辑节点同时是两条链的节点。

为什么我需要运行一个节点?

  • 首先,大部分人可能并不需要一个节点,你只需要使用别人应用提供的服务即可。
  • 应用开发者运行节点的原因不复描述,见前文
  • 如果你就是打算运营一个应用,运行节点能最大程度上利用Blocklet架构带来的优势,使得不需要太多的IT Devop经验就能管理应用,接受数字货币支付等
  • 一些关心链上数据的人或机构可以运行节点获得实时的数据通知,我们的GraphQL支持非常强大的实时Subscription服务,也就是可以设置各种条件通知,例如账户监控等,但一般来说其他节点都不太会把这些消耗资源的API服务对外提供,这时候自己运行节点就可以随心所欲地对数据进行各种分析
  • 提供增强的API服务对外提供服务,有可能有能力的开发者可以开发增强的API服务收取额外的费用来提供高级别的扩展服务(当然这也相当于一种应用,只不过更底层)

成为普通节点还是验证节点?

验证节点要求更高运行成本更高,还需要stake token并有出错被惩罚风险,因此仅仅有需要的才有必要成为验证节点。运行dapps大部分情况下只需要成为普通节点即可。

成为验证节点所需要stake的token是个市场机制,是个水涨船高的竞争过程,系统会根据参与的数量来调整。这个细节我们会考虑和调优。几个基本原则:

  • 抵押数量和节点性能、速度、出错率等形成一个综合的得分,按得分来成为验证节点。 例如一个很慢的节点,抵押再多也不会被选择
  • 得分高的最终形成加权,仍然会一节点一票,不会因为得分高而影响出块概率。 因为出块无奖励,因此不影响游戏公平性 (这也是另一个我们不设奖励的重要因素)

Proof of stake相当于现代公司的董事会制度,假设规则是董事会5名,股票最多的5个入选董事会,董事会内却是一人一票的,不会因为某个董事股份多就声音大,而且大公司都有独立董事,也许都没几股,但投票权一样多。

这样设计的结果是,会有节点为了确保成为验证节点而质押较多token,从而导致别的节点为也确保而跟着质押更多,但最终形成一个理性的数字,因为没有可能因为质押非常多而控制网络。

理论上,也可能出现一个集团大量部署节点,同时质押非常多的token来使得大部分验证节点都归其控制。但如果控制大量验证节点有价值的话,一定会出现其他方也做类似的事情,使得对方不可能控制大部分节点,最终只要token的分布比较均匀,就不可能出现一家独大的情况,这从一开始的token分布就已经试图杜绝这种情况的产生。

验证节点的优势

验证节点最大的优势是自己节点上处理的交易可以更快上链。对于运行重要应用的dapp可能都希望自己发出的交易总是最快速度能上链确认,在链不繁忙的时候没有区别,在链忙碌的时候在自己出块轮里能优先把自己的交易打包进区块。

同样这也是我们认为重要dapps都会愿意做节点并愿意做验证节点的原因。 如果不运行dapp服务这些优势对其没有用途。

(逐步更新中,欢迎提出建议和意见)

1赞

冒哥,请问成为验证节点需要抵押多少abt呢?

疑问:假设abt链节点享受的服务是固定的,因此绝大部分节点并无动力抵押过多(超出最低抵押标准)abt,那么初期由于abt节点数有限,造成系统abt抵押量不多,是否有可能会出现一个恶意节点抵押超系统50%代币威胁链安全?

如果上述推理正确,建议:固定节点抵押量,单一节点无论抵押多少abt,网络投票权都一样大。

建议理由:既然每个abt节点成本大致相当,享受的网络服务相同,节点抵押量也都应该一样多。如果节点主动做恶,那就只能靠增加节点数了(类似pow算力攻击),做恶成本将大幅提升。

这个是个水涨船高的竞争过程,系统会根据参与的数量来调整。这个细节我们会考虑和调优。

几个基本原则:

  • 抵押数量和节点性能、速度、出错率等形成一个综合的得分,按得分来成为验证节点。 例如一个很慢的节点,抵押再多也不会被选择
  • 得分高的最终形成加权,仍然会一节点一票,不会因为得分高而影响出块概率。 因为出块无奖励,因此不影响游戏公平性 (这也是另一个我们不设奖励的重要因素)

Proof of stake相当于现代公司的董事会制度,假设规则是董事会5名,股票最多的5个入选董事会,董事会内却是一人一票的,不会因为某个董事股份多就声音大,而且大公司都有独立董事,也许都没几股,但投票权一样多。

这样设计的结果是,会有节点为了确保成为验证节点而质押较多token,从而导致别的节点为也确保而跟着质押更多,但最终形成一个理性的数字,因为没有可能因为质押非常多而控制网络。

理论上,也可能出现一个集团大量部署节点,同时质押非常多的token来使得大部分验证节点都归其控制。但如果控制大量验证节点有价值的话,一定会出现其他方也做类似的事情,使得对方不可能控制大部分节点,最终只要token的分布比较均匀,就不可能出现一家独大的情况,这从一开始的token分布就已经试图杜绝这种情况的产生。

既然验证节点按照加权得分竞争上岗,那么相应的验证节点是否享受有区别于普通节点的权利或利益?

验证节点最大的优势是自己节点上处理的交易可以更快上链。对于运行重要应用的dapp可能都希望自己发出的交易总是最快速度能上链确认,在链不繁忙的时候没有区别,在链忙碌的时候在自己出块轮里能优先把自己的交易打包进区块。

同样这也是我们认为重要dapps都会愿意做节点并愿意做验证节点的原因。 如果不运行dapp服务这些优势对其没有用途。

2/26 把部分回答收集整理到全文中 。

没有质押的abt有投票权吗?

一节点一票,是没有加权吧? 加权是说获得出块的资格吗

竞争成为验证节点是动态的,规则由代码自动控制的吗?

多少个验证节点是设置数量限额还是按总节点数的百分比选取验证节点呢?

矿池的币怎么运行呢? 既然出块没有奖励,相当于传统的节点没得挖矿。

各种应用挖矿获得奖励的过程和规则又很复杂,这些规则能用代码一劳永逸地自动实现分配吗?

经济模型不写进链的底层。放在上层协议中,是不是意味着挖矿规则可以随时调整呢 ? 挖矿规则没有了区块链的不可篡改特性呢?

初期和稳定后期,这些挖矿规则怎么调整分别会经过什么样的过程来决策呢?

1赞

加权值决定成为验证节点的出块机会。 一节点一票为一轮中的投票地位。

是的,规则是人定的,但执行是代码控制的。

验证节点数量理论上没有限制,有愿意成为的符合了条件(节点性能、staking数、不在过去作恶惩罚名单内等)就可以成为。

基金会自主决定规则。

这是需要实现开放经济协议的原因。 比特币应用唯一很容易设计简单规则。而应用是个复杂的大市场,很难靠简单规则来定义。这里代码只定义最基本的原则,上面的具体数字可以不断调整。

好比市场经济里,基本规则是买家付钱给卖家,卖家交货,卖家缴纳税收; 这时候不可能出现买家可以夺取货物不给钱,也不能出现不交税。 但是商品的价格、税率这些是可以被调节的。

没错,就是为了可调节。
不可篡改是指不可篡改历史,而不是不能改规则。 比特币的定期自动调整挖矿难度,定期减少出块奖励,前者是个市场化的自动调节,调节程度也是未知的;后者是个规则化的自动调节,调节程度是已知的。 你可以认为比特币的经济体系也留有不断改变的余地。

初期肯定是基金会自主决定和调节,未来也许可以实现更好的自动化或采用投票的决策方法,但目前还为时过早讨论。

1赞

生态前期由基金会主导无可厚非,但慢慢应该逐步转向社区治理,生态成员通过token投票权参与进来,关于社区治理方面,冒总如何考虑?希望开一贴出来讨论

链上治理是有支持的,但这时候更长远的事情,而且过去其他项目的DAO类型的投票治理看起来全部都不尽人意,因此目前还未纳入考虑之中(事情太多)

1赞