Erc-721
從遠端系統呼叫 onlyOwner 函式的最佳實踐
關於
我有一份 ERC721 契約(實施)。我想在遠端系統(例如託管在雲中的 docker 容器)上執行一個腳本,該腳本呼叫一個寫入合約並具有以下修飾符的函式:
modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; }
最初也用於簽署契約部署交易的目前所有者私鑰已經存在於其他地方(因此它不存在於遠端系統上)。
目前解決方案
到目前為止,我發現的唯一解決方案是在私鑰所在的所有者機器上建構和簽署交易。我不會發送原始事務,而是將它們傳輸到遠端系統,腳本可以隨時發送它們。
問題
所以現在我想知道,我目前的解決方案是否有任何問題(例如安全性)?例如,是否有任何不應該洩露的資訊,或者這已經是我的問題要求的最佳實踐?
首先,請使用熱錢包和冷錢包。
第一個 ERC-721 NFT 實現了這種方法,我將其作為您應該使用的最佳實踐的展示。(PS,第一批 ERC-721 仍在出售中😀)。
近期開源請看:https ://github.com/su-squares/ethereum-contract
具體來說:https ://github.com/su-squares/ethereum-contract/blob/master/contracts/AccessControl.sol
在此模型中,您的合約“所有者”(“CEO”)將是一個您保持離線的冷錢包。
並且操作交易簽名將使用不同的帳戶(“COO”)執行。
現在您使用伺服器上的實時私鑰執行該單獨的帳戶,並在需要時簽署交易。
讓我們給你一個快速的圖表: