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」