OpenZeppelin 可昇級合約插件 3/9 在 Truffle 環境下使用插件

以太坊 ethereum andy 4年前 (2020-10-19) 1364次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

OpenZeppelin 可昇級合約插件 3/9 在 Truffle 環境下使用插件

在 Truffle 環境下使用插件

本插件增加Truffle 的功能和測試,讓合約可以部署和昇級。但是目前還不支持 truffle 的擴展語法。
Truffle 擴展語法請參考 https://www.trufflesuite.com/docs/truffle/getting-started/writing-external-scripts

安裝

$ npm install --save-dev @openzeppelin/truffle-upgrades
本插件需要 Truffle v 5.1.35 以上。

在Truffle 環境中使用插件

在 Truffle 環境裡使用 deployProxy 函數來部署可昇級的合約。

OpenZeppelin 可昇級合約插件 3/9 在 Truffle 環境下使用插件

以上的代碼會自動檢查 Box 合約是否可以安全昇級,如果需要的話會設定合約管理員,會給 Box 合約部署功能合約,除非之前已經部署完成了。然後建立一個代理,並且調用 initialize(42) 來初始化代理合約
以後部署時,可以使用 upgradeProxy 函數來昇級合約到新的版本。這個新版本的合約,可以是完全不同的合約(可以想像是 BoxV2),也可以只修改 Box 然後重新編譯,插件會注意到檔案已經改變。

OpenZeppelin 可昇級合約插件 3/9 在 Truffle 環境下使用插件

以上的代碼讓插件比對 BoxV2 跟之前的合約比對,並確定這兩個合約是相容的可以昇級,部署 BoxV2 的功能實作合約(除非已經部署過了),然後昇級代理合約指向新的功能實作合約。

在 Truffle 的測試中使用插件

也可以在 Truffle 的測試中使用 deployProxy 和 upgradeProxy 函數,以下的代碼是為昇級合約加入測試,這個 API 跟 migration 時一樣,只是缺少了 deployer 參數

OpenZeppelin 可昇級合約插件 3/9 在 Truffle 環境下使用插件

參考

https://docs.openzeppelin.com/upgrades-plugins/1.x/truffle-upgrades


神隊友學長Andy , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:OpenZeppelin 可昇級合約插件 3/9 在 Truffle 環境下使用插件
喜欢 (0)
[[email protected]]
分享 (0)
andy
关于作者:
中年大叔,打拼 like young students.
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址