注:
僅作技術(shù)交流变泄,禁止商用
如有侵權(quán),請(qǐng)聯(lián)系刪除
1 openzeppelin的透明代理方式
? ? 最流行恼琼,但是有一定安全隱患和合約代碼編寫(xiě)要求
? ? 1 數(shù)據(jù)存儲(chǔ)在proxy合約上妨蛹,通過(guò)admin接口來(lái)升級(jí)和更新proxy合約地址
? ? 2 訪問(wèn)到proxy合約的請(qǐng)求,會(huì)因?yàn)闆](méi)有對(duì)應(yīng)的方法觸發(fā)fallback, 在fallback里調(diào)用 邏輯合約來(lái)完成實(shí)際功能晴竞。
? ? 對(duì)邏輯合約的編寫(xiě)有一定要求蛙卤,比如不允許在構(gòu)造函數(shù)中初始化,不允許使用delegatecall和selfdestruct, 更新版本時(shí)不需要修改變量順序和類型等。并且還可以優(yōu)化(ProxyAdmin合約方式)
2 eip1822的uups代理標(biāo)準(zhǔn)(openzeppelin建議使用)
? ? 一句話描述:邏輯合約繼承一個(gè)接口(upgradeTo), 從而proxy合約可以去掉升級(jí)的功能并節(jié)省gas颤难,但邏輯合約代碼會(huì)更臃腫
3 usdt自己實(shí)現(xiàn)的更新合約更新策略
? ? 較為簡(jiǎn)單神年,但稍顯定制化,不通用行嗤,方案2參考了一些usdt升級(jí)實(shí)現(xiàn)