代幣發(fā)布時(shí)應(yīng)遵循其他最佳實(shí)踐經(jīng)驗(yàn),但也要有一些獨(dú)特的注意事項(xiàng)。
符合最新標(biāo)準(zhǔn)
一般來(lái)說(shuō),代幣的智能合約應(yīng)遵循公認(rèn)且穩(wěn)定的標(biāo)準(zhǔn)。
目前接受的標(biāo)準(zhǔn)有:
· EIP20標(biāo)準(zhǔn)
· EIP721標(biāo)準(zhǔn)
注意在EIP-20上的前端攻擊
EIP-20令牌的approve()函數(shù)為批準(zhǔn)的支出者創(chuàng)造了超出預(yù)期金額的可能性??梢允褂们岸斯?,使批準(zhǔn)的支出者可以在處理對(duì)approve()的調(diào)用之前和之后調(diào)用transferFrom()。
防止將代幣傳輸?shù)?x0地址
在編寫本文時(shí),“零”地址(0x0000000000000000000000000000000000000000)包含值超過(guò)8000萬(wàn)美元的代幣。
防止將代幣傳傳輸合約地址
還要考慮防止代幣轉(zhuǎn)移到智能合約的同一地址。
EOS代幣智能合約就是其中一個(gè)可能造成損失的例子,其中超過(guò)90,000個(gè)代幣被卡在合約地址上。
示例:
實(shí)施上述兩項(xiàng)建議的一個(gè)示例是創(chuàng)建以下修飾符;驗(yàn)證“to”地址既不是0x0也不是智能合約自己的地址:
modifier validDestination( address to ) {
require(to != address(0x0));
require(to != address(this) );
_;
}
然后將修飾符應(yīng)用于“ transfer”和“ transferFrom”方法:
function transfer(address _to, uint _value)
validDestination(_to)
returns (bool)
{
(。.. your logic 。..)
}
function transferFrom(address _from, address _to, uint _value)
validDestination(_to)
returns (bool)
{
(。.. your logic 。..)
}
程序文件
當(dāng)啟動(dòng)一個(gè)將有大量資金或需要關(guān)鍵任務(wù)的智能合約時(shí),必須包括適當(dāng)?shù)慕忉屛募桶踩嚓P(guān)的文檔包括:
規(guī)格和推出計(jì)劃
· 規(guī)范,圖表,狀態(tài)機(jī),模型和其他文檔,可幫助審核員,審閱者和社區(qū)了解系統(tǒng)的意圖。
· 很多bug都可以從規(guī)范中找到,從而降低修復(fù)它們的成本。
· 推出計(jì)劃,其中包括此處列出的詳細(xì)信息以及目標(biāo)日期。
狀態(tài)
· 當(dāng)前代碼的部署位置。
· 編譯器版本,使用的標(biāo)志以及用于驗(yàn)證部署的字節(jié)碼的步驟與源代碼匹配
· 將用于不同階段的編譯器版本和標(biāo)志
· 已部署代碼的當(dāng)前狀態(tài)(包括未決問(wèn)題、性能統(tǒng)計(jì)等)
已知的問(wèn)題
· 智能合約的主要風(fēng)險(xiǎn)。 (例如, 你可能會(huì)丟掉所有的錢,黑客可能會(huì)通過(guò)投票支持某些結(jié)果)
· 所有已知Bug/限制。
· 潛在的攻擊和解決方法。
· 潛在的利益沖突。(例如,籌集的Ether將納入自己的腰包,像Slock.it與DAO一樣)
歷史記錄
· 測(cè)試(包括使用情況統(tǒng)計(jì)信息,發(fā)現(xiàn)的Bug,測(cè)試時(shí)間)。
· 已審閱代碼的人員(及其關(guān)鍵反饋)。
緊急程序
· 發(fā)現(xiàn)Bug時(shí)的行動(dòng)計(jì)劃(例如,緊急選項(xiàng),公共通知流程等)。
· 如果出現(xiàn)問(wèn)題,請(qǐng)結(jié)束流程(例如出資者會(huì)在攻擊前從剩余資金中獲得余額的百分比)。
· 負(fù)責(zé)任的披露政策(例如在何處報(bào)告發(fā)現(xiàn)的Bug,任何Bug賞金計(jì)劃的規(guī)則)。
· 發(fā)生故障時(shí)的追索權(quán)(例如保險(xiǎn),罰款基金,無(wú)追索權(quán))。
聯(lián)系信息
· 誰(shuí)來(lái)處理問(wèn)題。
· 程序員和/或其他重要人員的姓名。
· 可以提問(wèn)的聊天室。
來(lái)源: 區(qū)塊鏈研究實(shí)驗(yàn)室
評(píng)論
查看更多