NFT: при попытке запустить скрипты create_collectibles выдается ошибка выполнения, возвращенная: это из учебника Патрика Коллинза на Youtube.

Ниже приведен фрагмент сценария: Использование Брауни в коде VS Ошибка: «Оценка газа не удалась: 'выполнение возвращено'. Эта транзакция, скорее всего, будет отменена. Если вы хотите транслировать, вы должны установить лимит газа вручную».

      from brownie import AdvancedCollectible, accounts, config
from scripts.helpful_scripts import get_breed
import time

STATIC_SEED = 123

def main():
    dev = accounts.add(config["wallets"]["from_key"])
    advanced_collectible = AdvancedCollectible[len(AdvancedCollectible) - 1]
    transaction = advanced_collectible.createCollectible(
        STATIC_SEED, "None", {"from": dev, "gas_limit": 50000}
    )
    print("Waiting on second transaction...")
    # wait for the 2nd transaction
    transaction.wait(1)
    time.sleep(35)
    requestId = transaction.events["requestedCollectible"]["requestId"]
    token_id = advanced_collectible.requestIdToTokenId(requestId)
    breed = get_breed(advanced_collectible.tokenIdToBreed(token_id))
    print("Dog breed of tokenId {} is {}".format(token_id, breed))

2 ответа

Я была такая же проблема. Но Патрик прав, у меня не было токенов Link внутри моего недавно созданного контракта в сети Rinkeby... Поэтому я закомментировал большинство строк кода в create_collectible.py, чтобы еще раз импортировать и применить функцию fund_advanced_collectible(). по моему контракту:

      from helpfulscripts import fund_advanced_collectible

def main():
    dev=accounts.add(config['wallets']['from_key'])
    advanced_collectible= AdvancedCollectible[len(AdvancedCollectible)-1]
    # transaction=advanced_collectible.createCollectible(STATIC_SEED,"None", {"from": dev})
    # transaction.wait(1)
    # time.sleep(35)
    # requestID=transaction.events["requestedCollectible"]["requestID"]
    # tokenID=advanced_collectible.requestIDToTokenID(requestID)
    # breed=get_breed(advanced_collectible.tokenIDToBreed(tokenID))

    # print('Dog breed of {} is {}.'.format(tokenID, breed)) 
    fund_advanced_collectible(advanced_collectible) 

Напоминаем определение функции fund_advanced_collectible из helpscripts.py:

      def fund_advanced_collectible(nft_contract):
    dev=accounts.add(config['wallets']['from_key'])
    link_token=interface.LinkTokenInterface(config['networks'][network.show_active()]['link_token'])
    link_token.transfer(nft_contract, 100000000000000000,{"from":dev})

Как только транзакция была подтверждена, я мог проверить в https://rinkeby.etherscan.io/address , что мой контракт имеет ссылку 0,1, и поэтому при повторном выполнении вашего кода ошибка исчезла...

Я думаю, что здесь уже был дан ответ . Подводя итог, у вас, вероятно, ошибка версии vrf_coordinator. Попробуйте значения ринкеби из официальной документации .

Другие вопросы по тегам