04
权限是权利
code is law , permission is power。
在智能合约世界里,代码是法律,而权限是权利。
什么是权利? 你可以去做一件事的时候,却选择不去做,这就叫权利!
在 code is law 的环境里, EOS给了程序员最高的权利。
放下权利,就是真正的去中心化。
放不下权利,就有突然反悔去“杀死合约”的可能性。
没有真正的去中心化。
所以要做到真正去中心化,那就是自动放弃更新智能合约的权利。
正所谓,放下屠刀,立地成佛。
上面说了,要放下权利。也就是主动放弃权限。放弃对智能合约的生杀大权。
于是目前主流的有两种选择。
第一种,是把权限设置成超级节点: eosio.prods 。下面实操演示:
第二种,是把权限设置为“黑洞公钥”:
eosio.prods和黑洞公钥方案的比较
eosio.prods是21个超级节点的多签权限。也就是,把权限充公,交给大家都信任的公众组织。
这种方案,基本可以建立信任基石了。除非BP发起投票,15票通过,才能修改你的合约。可能性不大。
而黑洞公钥,就不一样了,做的更绝。
这个公钥来历比较牛逼。当初EOS主网创世区块的生产者 genesisblock 用到的公钥。
世界上没有人有这个公钥对应的私钥。想暴力破解? 那恐怕得集中整个地球上的算力去算100年。
可以看到,目前EOS系统中,有人也用的这个公钥,并把名字取名“黑洞”。octblackhole, uipblackhole
黑洞,意味着只进不出。
这是最安全的解决方案,连21超级节点和BM都动不了。
05
为EOS正名
那些看到EOS智能合约能更新,就说EOS还不如以太坊的人,你们对以太坊又懂多少?
以太坊solidity智能合约里的ownable了解一下, suicide、self-destruct 函数了解一下。
以太坊智能合约里的这些 “后门” 函数,同样也可以做到开发者一人一键清除所有数据,甚至销毁整个合约。
所以说, 以太坊智能合约,只要开发者愿意,依然也可以一手控制合约中的所有数据。
事在人为,代码程序员写。 中不中心化,去不去中心化,最终,我们还得看代码是怎么写的,才能去评论。
EOS上,同样可以写出优雅的,完全透明公正、完全去中心化的智能合约。
以太坊能实现的去中心化不可改智能合约,EOS也可以实现。而EOS能实现的可更新迭代智能合约,以太坊却不能实现。
按我的理解。以太坊上能做的事,EOS上都能做,并且能做的更好。而以太坊能做EOS上做不到的事,那就是不需要做的事。
总结如下:
EOS上的智能合约。可以更新,这是默认特性。
可以更新的合约,对那些不可能一次性写完就保证没有bug的大型DAPP有好处。
EOS上的智能合约,同样可以做到不可更新。那就是主动放弃更新的权利。
不可更新的智能合约的应用场景,在于那些合约账号持有大量用户的资金,需要去中心化,确保不会跑路,比如当前很热的资金盘类DAPP。
原文连接:
「1」https://bihu.com/article/187646
「2」https://bihu.com/article/1045966」