【发布时间】:2022-06-21 15:03:53
【问题描述】:
非常感谢有关此错误的任何帮助。我已经尝试了几件事并查看了 VRF 的合同,但我似乎无法弄清楚。所有其他线程似乎都通过移动文件来解决它,但我的位置正确。如果我能提供其他任何东西,请告诉我。
我是否有可能从我的 .yaml 文件中的错误地址提取?
这是我的 bronwie-config.yaml:
这是我的部署脚本:
from brownie import(network, config, accounts, MockV3Aggregator, VRFCoordinatorMock, LinkToken, Contract)
from web3 import Web3
FORKED_LOCAL_ENVIRONMENTS = ['mainnet-fork-dev']
LOCAL_BLOCKCHAIN_ENVIRONMENTS = ['development','ganache-local']
def get_account(index = None, id = None):
if index:
return accounts[index]
if id:
return accounts.load(id)
if network.show_active() in LOCAL_BLOCKCHAIN_ENVIRONMENTS or network.show_active() in FORKED_LOCAL_ENVIRONMENTS:
return accounts[0]
return accounts.add(config['wallets']['from_key'])
contract_to_mock = {
'eth_usd_price_feed': MockV3Aggregator, 'vrf_coordinator': VRFCoordinatorMock, 'link_token': LinkToken
}
def get_contract(contract_name):
'''This function will grab the contract addresses from brownie config if defined.
Otherwise, it will deply a mock version of that contract, and retrun that mock contract.
Args:
contract_name (string)
returns:
brownie.network.contract.ProjectContract: the most recently deployed version of
'''
contract_type = contract_to_mock[contract_name]
if network.show_active() in LOCAL_BLOCKCHAIN_ENVIRONMENTS:
if len(contract_type) <= 0:
deploy_mocks()
contract = contract_type[-1]
#MockV3Aggregator[-1]
else:
contract_address = config['networks'][network.show_active()][contract_name]
contract = Contract.from_abi(contract_type._name, contract_address, contract_type.abi)
#MockV3Aggregator.abi
return contract
DECIMALS = 8
INITIAL_VALUE = 200000000000
def deploy_mocks(decimals= DECIMALS, initial_value= INITIAL_VALUE):
account = get_account()
MockV3Aggregator.deploy(decimals, initial_value, {'from':account})
link_token = LinkToken.deploy({'from':account})
VRFCoordinatorMock.deploy(link_token.address,{'from':account})
print('deployed')
目录:
【问题讨论】:
-
您好,您解决了吗?
-
不,我还没有。
-
您从哪里导入
VRFCoordinatorMock?我在 OpenZeppelin 存储库 (github.com/OpenZeppelin/openzeppelin-contracts/tree/master/…) 中找不到它。