• 雪崩時,沒有一片雪花覺得自己有責任

    Stanislaw Jerzy Lec

  • 遊戲運營
    如何讓玩家一直沉迷
    如何讓玩家拉幫結派
    如何讓玩家互相仇視
    如何讓玩家充值更多
    如何實現隱性的現金賭博和金幣交易

  • 遇事不決 量子力學

    量子社會學

    文昭論古論今

  • 有最壞的打算 做最好的準備 抱最大的希望

  • 好看的皮囊千篇一律 有趣的靈魂萬裡挑一

  • Raft PBFT

    Reliable, Replicated, Redundant, And Fault-Tolerant

    Practical Byzantine Fault Tolerant

  • 吃人一口,還人一斗 我思故我在

    字面上意思是說,受別人一點幫助,就要思考如何回報他更多。

    同義的:受人點滴,湧泉以報

    我覺得更值得更深入思考的是,

    當你輕易地要求別人的幫助時,你就得有心理準備,要返還十倍或更多。

    所以,當自己能做到,不輕易要求別人的幫忙。

    (說到這裡,小伙伴會覺得跟我以前說的”情感投入報酬”不一樣,情境不同暫不展開)

    這是台灣的俗語,用台語發音更有味道。

  • 瘋狂宇宙 我思故我在

    這個宇宙太瘋狂,大海掀翻了小池塘。

  • 區塊鏈是工具,要合理的使用;而非商品炒作。我思故我在

  • 賀賀郎,哇嗄哩供喂 我思故我在

    意思就是說,我是一個好好的、正常的人,我幹嘛跟你講話。

    一般用於朋友間小小辨論時,無法說服對方而使用。

    請不要企圖說服價值觀不在同個方向上的人或朋友。

OpenZeppelin 可昇級合約插件 7/9 不同網路的設定檔

以太坊 ethereum andy 9个月前 (11-09) 474次浏览 已收录 0个评论 扫描二维码
文章目录[隐藏]

OpenZeppelin 可昇級合約插件 7/9 不同網路的設定檔

不同網路的設定檔 Network Files

OpenZeppelin 可昇級合約會持續追綜已經部署的合約,透過在根目錄底下的 .openzeppelin 資料夾內的設定檔,以及代理合約管理員。在 .openzeppelin 資料夾裡面,每個網路會有一個設定檔。建議把所有的設定檔案都納入源碼的版本控制,除了正在開發的這個設定檔。可以看到這些檔案大約長成 ./openzeppelin/unknown-*.json

注意:./openzeppelin 資料夾不相容於 OpenZeppelin CLI , 下一篇會說明如何使用 OpenZeppelin CLI 專案來部署。

<network_name>.json

OpenZeppelin 可昇級合約插件會建立設定檔,每個使用的網路都會建立一個,像是 mainnet , ropsten 各會有自己的設定檔,結構如下

// .openzeppelin/.json 
{ 
    "manifestVersion": "3.0", 
    "impls": {
        "...": { 
            "address": "...", 
            "txHash": "...", 
            "layout": { 
                "storage": [...], 
                "types": {...} 
            } 
        },
        "...": { 
            "address": "...", 
            "txHash": "...", 
            "layout": { 
                "storage": [...], 
                "types": {...} 
            } 
        } 
    }, 
    "admin": { 
        "address": "...", 
        "txHash": "..." 
    } 
}

每個一邏輯合約都會追蹤,除了部署地址會追蹤之外,以下的欄位也會追蹤
types 所有在合約內使用的類型,包括基本類型如 uint256 到自定義的 struct 類型(前面的文件說不能使用?)
storage 追蹤同一條線上合約的存儲的順序及規則(代理及委派的邏輯合約)。引用 type 欄位定義的類型,用於驗証後續版本之間的任何存儲順序及規則的變化是否相容。

檔案名稱 <network_name>.json ,注意這裡的 network_name 不是 Truffle 或是 Buidler 檔定檔內的網路名稱,而是從 chain id 來的。
這裡有個公鏈上的命名規則,如果鏈沒有被收錄官方列表,像是 Ethereum Classic ,就以 unknown-<chain_id>.json 的方式命名

設定檔和版本管理

公鏈的設定檔像是 mainnet.json 或是 ropsten.json 應該被納入版本控制。這些包括專案在想應網路中的狀態,這些信息是很有用的。像是合約各版本被部署後的地址。

然而本地的私有鏈像是 unknow-.json 只有表示專案開發時的私有鏈像是 ganache-cli 只跟單一貢獻者有關的就不用納入版本管理。
以下是 .gitignore 的參考範例

// .gitignore
# OpenZeppelin
.openzeppelin/unknown-*.json

參考

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


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

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

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