Web3.py
從代理呼叫 eth-brownie 的備份函式
我有一個合約,它對
delegatecall
所有對不同合約的函式呼叫都有一個備份函式。我似乎無法使用我的典型 API 與它委託呼叫的合約進行互動。我有一個
Box.sol
用retrieve
函式呼叫的契約。我的TransparentUpgradeableProxy
proxy
合約將所有呼叫委託給該合約。但是,如果我呼叫retrieve
代理合約,我會得到:AttributeError: Contract 'TransparentUpgradeableProxy' object has no attribute 'retrieve'
這是程式碼的外觀
from brownie import Box, TransparentUpgradeableProxy account = accounts[0] print(f"Deploying to {network.show_active()}") box = Box[len(Box) - 1] proxy = TransparentUpgradeableProxy[len(TransparentUpgradeableProxy) - 1] print(proxy.retrieve())
你需要使用
- 實現的實際 ABI,而不是代理合約的 ABI 文件
- 代理合約地址
from brownie import Box, TransparentUpgradeableProxy, Contract account = accounts[0] proxy = TransparentUpgradeableProxy[-1] proxy_box = Contract.from_abi("Box", proxy.address, Box.abi) print(proxy_box.retrieve())