Proxy-Contracts
如何創建其他契約及其方法的索引?
我想創建一個代理/路由器合約來儲存
- 其他合約地址
- 其他合約功能的功能名稱和
- 這些契約中接受的參數。
- 每份合約的 ID
代理合約本身將有一個 AddContract 和 RemoveContract 將這些參數添加到系統資料庫中。
然後我希望能夠使用同一個合約來代理對其他合約的呼叫。因此,如果有人呼叫 ID 為 XYZ 的智能合約,其函式 myFunction(“Here”, “is”, 123) 將被路由到同一 ID 下定義的合約的地址和函式。
我也希望能夠在創建原始代理後添加契約並對其進行修改。
關於如何解決這個問題的任何想法?
如果您希望專業地實現這一點,那麼我建議您看一下 Augur 項目,他們可以做所有您想做的事情,他們有工廠來實例化新合約,並且他們有代理功能,可以“執行”其他功能。
這是您正在尋找的電話的一個範例:
function executeTransaction(address _to, bytes calldata _data, uint256 _value) external returns (bool) { require(authorizedProxies[msg.sender]); (bool _didSucceed, bytes memory _resultData) = address(_to).call.value(_value)(_data); return _didSucceed; }