4

我开始了我的第一个区块链教程,它是:

我正在尝试使用安全帽在 Rinkeby 测试网中部署 NFT。以下是我为配置环境所做的步骤:

  • 安装安全帽

  • 在我的 .zshrc 中添加以下环境变量(RINKEBY_RPC_URL、PRIVATE_KEY、MAINNET_RPC_URL)

  • 使用 infuria 创建了一个帐户以获取我的 RINKEBY_RPC_URL:'https://rinkeby.infura.io/v3/My_Project_Id'

  • 从我的 Metamask 添加我的 PRIVATE_KEY

  • 在https://www.alchemy.com/上创建一个帐户以获取我的 MAINNET_RPC_URL:'https://eth-mainnet.alchemyapi.io/v2/My_Project_Id'

  • 我使用https://faucet.rinkeby.io/在我的元掩码(Rinkeby 测试网)上获取以太币。与 LINK 相同

然后当我想使用安全帽部署我的第一个 NFT 时 ->hh deploy --network rinkeby

我有这个错误:

deploying "SVGNFT"An unexpected error occurred:
Error: ERROR processing /Users/macbook/Desktop/all-on-chain-generated-nft/deploy/01_Deploy_SVGNFT.js:
Error: insufficient funds for intrinsic transaction cost (error={"name":"ProviderError","code":-32000,"_isProviderError":true}, method="sendTransaction", transaction=undefined, code=INSUFFICIENT_FUNDS, version=providers/5.4.5)
    at Logger.makeError (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/logger/src.ts/index.ts:225:28)
    at Logger.throwError (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/logger/src.ts/index.ts:237:20)
    at checkError (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:53:16)
    at /Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:215:24
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at DeploymentsManager.executeDeployScripts (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat-deploy/src/DeploymentsManager.ts:1014:19)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at DeploymentsManager.runDeploy (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat-deploy/src/DeploymentsManager.ts:849:5)
    at Environment._runTaskDefinition (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat/src/internal/core/runtime-environment.ts:217:14)
    at Environment.run (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat/src/internal/core/runtime-environment.ts:129:14)
    at SimpleTaskDefinition.action (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat-deploy/src/index.ts:446:32)
    at Environment._runTaskDefinition (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat/src/internal/core/runtime-environment.ts:217:14)
    at Environment.run (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat/src/internal/core/runtime-environment.ts:129:14)
    at SimpleTaskDefinition.action (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat-deploy/src/index.ts:521:5)
    at Environment._runTaskDefinition (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat/src/internal/core/runtime-environment.ts:217:14)

错误信息说:

内在交易成本资金不足

这很奇怪,因为我在 Rinkeby 测试网上添加了一些 Eth 和链接。我错过了什么吗?

编辑(19/07/21)

我取消了 MNEMONIC 部分的注释,并添加了示例中设置的 gas / gasPrice 变量:

rinkeby: {
        url: RINKEBY_RPC_URL,
        accounts: [PRIVATE_KEY],
        //accounts: {
            //mnemonic: MNEMONIC,
        gas: 2100000,
        gasPrice: 8000000000,
        saveDeployments: true,
    },

如您所见,它让我更进一步:

Nothing to compile
----------------------------------------------------
reusing "SVGNFT" at 0x7e8d04a7c18f165E9684e887a7978c43f0019a3A
You have deployed an NFT contract to 0x7e8d04a7c18f165E9684e887a7978c43f0019a3A
Verify with:
 npx hardhat verify --network rinkeby 0x7e8d04a7c18f165E9684e887a7978c43f0019a3A
Let's create an NFT now!
We will use ./img/small_enough.svg as our SVG, and this will turn into a tokenURI.
You've made your first NFT!
You can view the tokenURI here data:application/json;base64,eyJuYW1lIjoiU1ZHIE5GVCIsICJkZXNjcmlwdGlvbiI6IkFuIE5GVCBiYXNlZCBvbiBTVkchIiwgImF0dHJpYnV0ZXMiOiIiLCAiaW1hZ2UiOiJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJR2hsYVdkb2REMGlOVEF3SWlCM2FXUjBhRDBpTlRBd0lqNEtJQ0E4WTJseVkyeGxJR040UFNJeU5UQWlJR041UFNJeU5UQWlJSEk5SWpJd01DSWdjM1J5YjJ0bFBTSmliR0ZqYXlJZ2MzUnliMnRsTFhkcFpIUm9QU0l6SWlCbWFXeHNQU0ppYkhWbElpQXZQaUFLUEM5emRtYytJQT09In0=
----------------------------------------------------
reusing "RandomSVG" at 0xc71197a95e9cd7e271F1CD08E049720486F62174
You have deployed an NFT contract to 0xc71197a95e9cd7e271F1CD08E049720486F62174
Verify with:
 npx hardhat verify --network rinkeby 0xc71197a95e9cd7e271F1CD08E049720486F62174 0xb3dCcb4Cf7a26f6cf6B120Cf5A73875B7BBc655B 0x01be23585060835e02b77ef475b0cc51aa1e0709 0x2ed0feb3e7fd2022120aa84fab1945545a9f2ffc9076fd6156fa96eaff4c1311 100000000000000000
Duplicate definition of Transfer (Transfer(address,address,uint256,bytes), Transfer(address,address,uint256))
Let's create an NFT now!
You've made your NFT! This is number 0x0000000000000000000000000000000000000000000000000000000000000002
Let's wait for the Chainlink VRF node to respond...
Now let's finsih the mint...

然后,当调用 Chainlink VRF 节点时,我遇到了一个新错误:

Error: ERROR processing /Users/macbook/Desktop/all-on-chain-generated-nft/deploy/02_Deploy_RandomSVG.js:
Error: cannot estimate gas; transaction may fail or may require manual gas limit (error={"name":"ProviderError","code":3,"_isProviderError":true,"data":"0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003145524337323155524953746f726167653a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e000000000000000000000000000000"}, method="call", transaction={"from":"0x76834D0CbE40eDedb2844Afd98896c10DbA6CE92","gasLimit":{"type":"BigNumber","hex":"0x111c78"},"to":"0xc71197a95e9cd7e271F1CD08E049720486F62174","data":"0xc87b56dd0000000000000000000000000000000000000000000000000000000000000000","accessList":null}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.4.5)
    at Logger.makeError (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/logger/src.ts/index.ts:225:28)
    at Logger.throwError (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/logger/src.ts/index.ts:237:20)
    at checkError (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:80:16)
    at EthersProviderWrapper.<anonymous> (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/providers/src.ts/json-rpc-provider.ts:555:20)
    at step (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
    at Object.throw (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
    at rejected (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at DeploymentsManager.executeDeployScripts (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat-deploy/src/DeploymentsManager.ts:1014:19)
    at processTicksAndRejections (internal/process/task_queues.js:95:5)
    at DeploymentsManager.runDeploy (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat-deploy/src/DeploymentsManager.ts:849:5)
    at Environment._runTaskDefinition (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat/src/internal/core/runtime-environment.ts:217:14)
    at Environment.run (/Users/macbook/Desktop/all-on-chain-generated-nft/node_modules/hardhat/src/internal/core/runtime-environment.ts:129:14)

分配给 gas 和 gasPrice 的值有问题吗?

4

4 回答 4

4

我按照其他答案代码修改的建议评论了助记符,它部分解决了问题。

另外更改 hardhat.config.js 文件的这一部分对我有用:

rinkeby: {
        url: RINKEBY_RPC_URL,
        accounts: [PRIVATE_KEY],
        //accounts: {
            //mnemonic: MNEMONIC,
        gas: 2100000,
        gasPrice: 8000000000,
        saveDeployments: true,
    },
于 2021-09-17T10:01:17.417 回答
1

在您的 hardhat.config.js 文件中,确保正确填写“rinkeby”部分以使用您的 PRIVATE_KEY env var,而不是 mnenomic 的。即accounts: [PRIVATE_KEY] 应该取消注释,MNEMONIC 应该注释掉

于 2021-09-13T00:35:41.847 回答
0

对我来说,出现错误是因为我的钱包余额不足。

我的钱包总余额为 0.9 ETH。我试图用 1ETH 进行部署:

var contract = await contractFactory.deploy({value: hre.ethers.utils.parseEther("1")});

将值更改为 0.07 解决了它:

var contract = await contractFactory.deploy({value: hre.ethers.utils.parseEther("0.07")});

于 2022-01-25T04:34:42.470 回答
0

检查 . 中先前定义的网络之一结束后是否缺少逗号hardhat.config.js

例如,我试图部署到mainnet,在它上面是这个定义:

ganache: {
    url: 'http://localhost:8545',
    accounts: [PRIVATE_KEY] // <<<< comma was missing here
    // accounts: {
    //     mnemonic: MNEMONIC,
    // }
},
mainnet: {
    url: MAINNET_RPC_URL,

添加逗号,即:[PRIVATE_KEY],为我解决了这个问题。

于 2021-10-09T14:53:17.187 回答