微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

无法在终端中部署 NFT

如何解决无法在终端中部署 NFT

我已将智能合约部署到我的钱包并将其连接到我的 Alchemy 帐户。

这是我的编码(注意,我的合约地址、PUBLIC_KEY、PRIVATE_KEY、API_URL 和炼金术地址是出于安全目的而编辑的)。

mint-nft.js

  require('dotenv').config();
const API_URL = process.env.API_URL;
const PUBLIC_KEY = process.env.PUBLIC_KEY;
const PRIVATE_KEY = process.env.PRIVATE_KEY;

const { createalchemyWeb3 } = require("@alch/alchemy-web3");
const web3 = createalchemyWeb3(API_URL);

const contract = require("../artifacts/contracts/MyNFT.sol/MyNFT.json");
const contractAddress = "My_Contract_Adress";
const nftContract = new web3.eth.Contract(contract.abi,contractAddress);

async function mintNFT(tokenURI) {
  const nonce = await web3.eth.getTransactionCount(PUBLIC_KEY,'latest'); //get latest nonce

  //the transaction
  const tx = {
    'from': PUBLIC_KEY,'to': contractAddress,'nonce': nonce,'gas': 500000,'data': nftContract.methods.mintNFT(PUBLIC_KEY,tokenURI).encodeABI()
  };

  const signPromise = web3.eth.accounts.signTransaction(tx,PRIVATE_KEY);
  signPromise.then((signedTx) => {

    web3.eth.sendSignedTransaction(signedTx.rawTransaction,function(err,hash) {
      if (!err) {
        console.log("The hash of your transaction is: ",hash,"\nCheck Alchemy's Mempool to view the status of your transaction!"); 
      } else {
        console.log("Something went wrong when submitting your transaction:",err)
      }
    });
  }).catch((err) => {
    console.log(" Promise Failed:",err);
  });
}

mintNFT("https://gateway.pinata.cloud/ipfs/My_NFT_Picture_Hash");

alchemyContext.js

"use strict";
Object.defineProperty(exports,"__esModule",{ value: true });
exports.makeAlchemyContext = void 0;
var tslib_1 = require("tslib");
var sturdy_websocket_1 = tslib_1.__importDefault(require("sturdy-websocket"));
var websocket_1 = require("websocket");
var jsonRpc_1 = require("../util/jsonRpc");
var version_1 = require("../version");
var alchemySendHttp_1 = require("./alchemySendHttp");
var alchemySendWebSocket_1 = require("./alchemySendWebSocket");
var httpProvider_1 = require("./httpProvider");
var sendPayload_1 = require("./sendPayload");
var webSocketProvider_1 = require("./webSocketProvider");
var NODE_MAX_WS_FRAME_SIZE = 100 * 1024 * 1024; // 100 MB
function makeAlchemyContext(url,config) {
    var makePayload = jsonRpc_1.makePayloadFactory();
    if (/^https?:\/\//.test(url)) {
        var alchemySend = alchemySendHttp_1.makeHttpSender(url);
        var _a = sendPayload_1.makePayloadSender(alchemySend,config),sendPayload = _a.sendPayload,setWriteProvider = _a.setWriteProvider;
        var senders = jsonRpc_1.makeSenders(sendPayload,makePayload);
        var provider = httpProvider_1.makeAlchemyHttpProvider(sendPayload);
        return { provider: provider,senders: senders,setWriteProvider: setWriteProvider };
    }
    else if (/^wss?:\/\//.test(url)) {
        var protocol = isAlchemyUrl(url) ? "alchemy-web3-" + version_1.VERSION : undefined;
        var ws = new sturdy_websocket_1.default(url,protocol,{
            wsConstructor: getWebSocketConstructor(),});
        var alchemySend = alchemySendWebSocket_1.makeWebSocketSender(ws);
        var _b = sendPayload_1.makePayloadSender(alchemySend,sendPayload = _b.sendPayload,setWriteProvider = _b.setWriteProvider;
        var senders = jsonRpc_1.makeSenders(sendPayload,makePayload);
        var provider = new webSocketProvider_1.AlchemyWebSocketProvider(ws,sendPayload,senders);
        return { provider: provider,setWriteProvider: setWriteProvider };
    }
    else {
        throw new Error("Alchemy URL protocol must be one of http,https,ws,or wss. Recieved: " + url);
    }
}
exports.makeAlchemyContext = makeAlchemyContext;
function getWebSocketConstructor() {
    return isnodeenvironment()
        ? function (url,protocols) {
            return new websocket_1.w3cwebsocket(url,protocols,undefined,{
                maxReceivedMessageSize: NODE_MAX_WS_FRAME_SIZE,maxReceivedFrameSize: NODE_MAX_WS_FRAME_SIZE,});
        }
        : WebSocket;
}
function isnodeenvironment() {
    return (typeof process !== "undefined" &&
        process != null &&
        process.versions != null &&
        process.versions.node != null);
}
function isAlchemyUrl(url) {
    return url.indexOf("alchemyapi.io") >= 0;
}

.env

API_URL = "https://eth-rinkeby.alchemyapi.io/v2/KEY"
PRIVATE_KEY = "MY_PRIVATE_KEY"
PUBLIC_KEY = "MY_PUBLIC_KEY"

但是后来我尝试使用元数据和 nft-mint.js 部署我的 NFT,我遇到了这些错误

enter image description here

谁能告诉我错误是什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?