Hello,
I am using following tutorial Mint an NFT — Concordium documentation
I have the contract deployed and tested via cli. I am using following code to invoke the mint from frontend
async function testContractMinting() {
const client = createConcordiumClient(
“node.testnet.concordium.com”,
Number(20000),
credentials.createInsecure()
);
const walletFile = readFileSync(“/home/yasir/concordium_dev/contracts/3SfHLNkmy61ZUQkAhMvAwKj47EYDBiUPbn3wHghFD6qGr8WDGc.export”, ‘utf8’);
const wallet = parseWallet(walletFile);
const sender = new AccountAddress(wallet.value.address);
const signer = buildAccountSigner(wallet);
const moduleRef = new ModuleReference(
‘97dc77b5de4c62a659aa31179e20f4968f25d0d1bb839d301b52a8a9f95b1ce7’
);
const maxCost = 30000n;
const contractName = ‘nft_review_2024-04-19’;
const receiveName = ‘nft_review_2024-04-19.mint’;
// const schema = await client.getEmbeddedSchema(moduleRef);
const rawModuleSchema = Buffer.from(readFileSync(
‘/home/yasir/concordium_dev/contracts/nft/nft-review/dist/cis2-nft/schema.bin’
));
const updateHeader: AccountTransactionHeader = {
expiry: new TransactionExpiry(new Date(Date.now() + 3600000)),
nonce: (await client.getNextAccountNonce(sender)).nonce,
sender,
};
const params = {
“owner”: {
“Account”: [“3SfHLNkmy61ZUQkAhMvAwKj47EYDBiUPbn3wHghFD6qGr8WDGc”]
},
“tokens”: [“00000003”]
};
// let params1 = “{ a:1 }”
// const params2 = Buffer.from(params);
const updateParams = serializeUpdateContractParameters(
contractName,
‘mint’,
params,
rawModuleSchema
);
// const inputParams = serializeInitContractParameters(
// contractName,
// params,
// rawModuleSchema,
// );
const updatePayload: UpdateContractPayload = {
amount: new CcdAmount(0n),
address: {“index”:BigInt(8665),“subindex”:BigInt(0)},
receiveName,
message: updateParams,
maxContractExecutionEnergy: maxCost,
};
const updateTransaction: AccountTransaction = {
header: updateHeader,
payload: updatePayload,
type: AccountTransactionType.Update,
};
const updateSignature = await signTransaction(updateTransaction, signer);
const updateTrxHash = await client.sendAccountTransaction(
updateTransaction,
updateSignature
);
console.log(‘Transaction submitted, waiting for finalization…’);
const updateStatus = await client.waitForTransactionFinalization(
updateTrxHash
);
console.dir(updateStatus, { depth: null, colors: true });
return updateStatus;
}
Express is listening at http://localhost:3000
string
/home/yasir/concordium_dev/dapps/test-contract-v2/node_modules/@protobuf-ts/grpc-transport/build/commonjs/grpc-transport.js:37
const e = new runtime_rpc_1.RpcError(err.details, grpc_js_1.status[err.code], util_1.metadataFromGrpc(err.metadata));
^
RpcError: Name resolution failed for target dns:node.testnet.concordium.com:20000
at Object.callback (/home/yasir/concordium_dev/dapps/test-contract-v2/node_modules/@protobuf-ts/grpc-transport/build/commonjs/grpc-transport.js:37:27)
at Object.onReceiveStatus (/home/yasir/concordium_dev/dapps/test-contract-v2/node_modules/@grpc/grpc-js/build/src/client.js:192:36)
at Object.onReceiveStatus (/home/yasir/concordium_dev/dapps/test-contract-v2/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:360:141)
at Object.onReceiveStatus (/home/yasir/concordium_dev/dapps/test-contract-v2/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:323:181)
at /home/yasir/concordium_dev/dapps/test-contract-v2/node_modules/@grpc/grpc-js/build/src/resolving-call.js:99:78
at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
code: ‘UNAVAILABLE’,
meta: {},
methodName: ‘GetNextAccountSequenceNumber’,
serviceName: ‘concordium.v2.Queries’
}