開(kāi)源,并能夠驗(yàn)證開(kāi)源代碼與鏈上部署代碼一致
比如 EOS.win 的代碼就能夠在 EOSpark 上查到,并已被 EOSpark 驗(yàn)證與鏈上部署代碼一致
https://eospark.com/MainNet/contract/eosluckygame
慢霧科技也推出 EOS 合約驗(yàn)證平臺(tái),也可以做相應(yīng)的查詢和確認(rèn)
https://eos.slowmist.io
代碼安全性
EOS 代碼安全性審計(jì)需要比較專業(yè)的背景知識(shí),在合約層面一般的問(wèn)題包括數(shù)值溢出漏洞、代碼邏輯錯(cuò)誤等。
權(quán)限
合約賬戶的權(quán)限能夠控制對(duì)賬戶內(nèi)金額轉(zhuǎn)賬,以及對(duì)合約進(jìn)行升級(jí),是非常重要的安全環(huán)節(jié)。目前主要有三種方法對(duì)權(quán)限進(jìn)行限制。
方法一(低安全):多重簽名賬戶
通過(guò)EOS賬戶體系的Weight和Threshold控制賬戶權(quán)限,實(shí)現(xiàn)由多人共同管理一個(gè)賬戶。假設(shè)該賬戶owner權(quán)限由5個(gè)不同的公鑰控制,每個(gè)公鑰的Weight為1,Threshold為3,表示需要這5個(gè)人中的3人進(jìn)行簽名,才能轉(zhuǎn)賬或修改合約代碼,從而提升賬戶安全性。
參看 eosio.prods 的權(quán)限設(shè)置,就是使用這種方式 https://eospark.com/MainNet/account/eosio.prods
當(dāng)然 eosio.prods 的參與者是所有當(dāng)選的超級(jí)節(jié)點(diǎn),公信力更高。
方法二(高安全):移交智能合約權(quán)限
修改合約權(quán)限為 eosio.prods 賬戶,意味著將修改合約的權(quán)限交給21個(gè)超級(jí)節(jié)點(diǎn),如果需要轉(zhuǎn)移資金或修改合約,需要申請(qǐng)節(jié)點(diǎn)仲裁。
使用 updateauth 命令可以進(jìn)行權(quán)限的修改:
$ cleos push action eosio updateauth '{"account": "eosio", "permission": "owner", "parent": "", "auth": {"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio.prods", "permission": "active"}}]}}' -p eosio@owner
$ cleos push action eosio updateauth '{"account": "eosio", "permission": "active", "parent": "owner", "auth": {"threshold": 1, "keys": [], "waits": [], "accounts": [{"weight": 1, "permission": {"actor": "eosio.prods", "permission": "active"}}]}}' -p eosio@active
參看 eosio 的權(quán)限設(shè)置,就是使用這種方式 https://eospark.com/MainNet/account/eosio
方法三(高安全):設(shè)置賬戶權(quán)限到一個(gè)黑洞公鑰
將owner和active權(quán)限設(shè)置為一個(gè)沒(méi)有人知道私鑰的公鑰地址(黑洞),即可保證沒(méi)有人可以獲得賬戶的實(shí)際控制權(quán)。比如 EOS1111111111111111111111111111111114T1Anm,它的公鑰是0值加檢驗(yàn)數(shù)據(jù)生成,任何人都不知道它的私鑰。
以下一些最近的熱門(mén)游戲合約,供大家學(xué)習(xí)研究用:
狼人
https://eosflare.io/account/eosfoiowolfs