Closed 0xcuonghx closed 2 months ago
The VWBL NFT contract is divided into two contracts: one for uploading metadata to AWS S3 and one for uploading to IPFS. AWS S3 pattern: contract, deploy script IPFS pattern: contract, deploy script
The above code causes an error because run mint with IPFS metadata interface to VWBL NFT contract of S3 metadata.
Please try again with an NFT contract of IPFS pattern.
You can use the following nft contract address.
joc testnet
0x3edb9d043d199211742eF8EEfeb3a9A2d399e026
joc mainnet
0x30B8a4E4810AB61e45F1bAAcbE6b6fb122EbD96e
Also, when running tx with metamask, the gas settings are done on the metamask side, but when running with nodejs, you need to explicitly set the gas settings. Below like.
const gasSettings = {
maxPriorityFeePerGas:107 * (10**9),
maxFeePerGas:107 * (10**9),
}
const tokenId = await vwbl.managedCreateTokenForIPFS(
"test token",
"test",
"/Users/unimal/Desktop/untitled folder/node/asset/plain.png",
"/Users/unimal/Desktop/untitled folder/node/asset/thumbnail.png",
10,
"base64",
undefined,
undefined,
undefined,
undefined,
gasSettings
);
Sample code: mint VWBL NFT
const {
VWBL,
ManageKeyType,
UploadContentType,
UploadMetadataType,
GasSettings,
} = require("vwbl-sdk");
const { ethers } = require("ethers");
const FileAPI = require("file-api");
const MyFile = FileAPI.File;
require("dotenv").config();
const privateKey = process.env.KEY;
const ethProvider = new ethers.providers.JsonRpcProvider(
"https://rpc-1.testnet.japanopenchain.org:8545/"
);
const ethSigner = new ethers.Wallet(privateKey, ethProvider);
const vwbl = new VWBL({
ipfsConfig: {
apiKey: "", // pinata API Key
apiSecret:
"", // pinata SecretAPI Key
},
awsConfig: undefined,
contractAddress: "0x3edb9d043d199211742eF8EEfeb3a9A2d399e026", // VWBL nft's contract address
// contractAddress: "0x6A8694B2ec1861784d2BBc89ae08AD2BADeF74E3", // VWBL nft's contract address
manageKeyType: ManageKeyType.VWBL_NETWORK_SERVER,
uploadContentType: UploadContentType.IPFS,
uploadMetadataType: UploadMetadataType.IPFS,
vwblNetworkUrl: "https://dev.vwbl.network/",
ethersProvider: ethProvider,
ethersSigner: ethSigner,
});
async function test() {
await vwbl.sign();
const gasSettings = {
maxPriorityFeePerGas:107 * (10**9),
maxFeePerGas:107 * (10**9),
}
const tokenId = await vwbl.managedCreateTokenForIPFS(
"test token",
"test",
"/Users/unimal/Desktop/untitled folder/node/asset/plain.png",
"/Users/unimal/Desktop/untitled folder/node/asset/thumbnail.png",
10,
"base64",
undefined,
undefined,
undefined,
undefined,
gasSettings
);
console.log(tokenId);
}
test();
decrypt VWBL NFT
require("dotenv").config();
const {
VWBL,
ManageKeyType,
UploadContentType,
UploadMetadataType,
GasSettings,
} = require("vwbl-sdk");
const { ethers } = require("ethers");
const privateKey = process.env.KEY;
const ethProvider = new ethers.providers.JsonRpcProvider(
"https://rpc-1.testnet.japanopenchain.org:8545/"
);
const ethSigner = new ethers.Wallet(privateKey, ethProvider);
const vwbl = new VWBL({
ipfsConfig: {
apiKey: "...", // pinata API Key
apiSecret:
"...", // pinata SecretAPI Key
},
awsConfig: undefined,
contractAddress: "0x3edb9d043d199211742eF8EEfeb3a9A2d399e026", // VWBL nft's contract address
// contractAddress: "0x6A8694B2ec1861784d2BBc89ae08AD2BADeF74E3", // VWBL nft's contract address
manageKeyType: ManageKeyType.VWBL_NETWORK_SERVER,
uploadContentType: UploadContentType.IPFS,
uploadMetadataType: UploadMetadataType.IPFS,
vwblNetworkUrl: "https://dev.vwbl.network/",
ethersProvider: ethProvider,
ethersSigner: ethSigner,
});
async function decrypt() {
await vwbl.sign();
const decryptedContent = await vwbl.getTokenById(2);
console.log(decryptedContent);
}
decrypt();
LGTM
Hi, I'm a Japan Open Chain member. I try to integrate the protocol but see the error.
Behavior
I've already deployed the contract on Japan Open Chain Testnet by following
I try this SDK and error come below
const { ethers } = require("ethers"); const FileAPI = require("file-api"); const File = FileAPI.File;
const privateKey = "xxx"; const ethProvider = new ethers.providers.JsonRpcProvider( "https://rpc-1.testnet.japanopenchain.org:8545" ); const ethSigner = new ethers.Wallet(privateKey, ethProvider);
const vwbl = new VWBL({ ipfsConfig: { apiKey: "xx", // pinata API Key apiSecret: "xxx", // pinata SecretAPI Key }, awsConfig: undefined, contractAddress: "0x6A8694B2ec1861784d2BBc89ae08AD2BADeF74E3", // VWBL nft's contract address manageKeyType: ManageKeyType.VWBL_NETWORK_SERVER, uploadContentType: UploadContentType.IPFS, uploadMetadataType: UploadMetadataType.IPFS, vwblNetworkUrl: "https://dev.vwbl.network/", ethersProvider: ethProvider, ethersSigner: ethSigner, });
async function main() { await vwbl.sign();
const tokenId = await vwbl.managedCreateTokenForIPFS( "test token", "test", "/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/image.jpeg", "/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/thumnail.png", 10, "base64" );
console.log(tokenId); }
main();
➜ VWBL-test node index.js signed encrypt data upload data upload meta data transaction start /Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/logger/lib/index.js:238 var error = new Error(message); ^
<ref *1> Error: cannot estimate gas; transaction may fail or may require manual gas limit [ See: https://links.ethers.org/v5-errors-UNPREDICTABLE_GAS_LIMIT ] (error={"reason":"execution reverted","code":"UNPREDICTABLE_GAS_LIMIT","method":"estimateGas","transaction":{"from":"0xBac8ECdbc45A50d3bda7246bB2AA64Fc449C7924","maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x59682f00"},"maxFeePerGas":{"type":"BigNumber","hex":"0x59682f0e"},"to":"0x6A8694B2ec1861784d2BBc89ae08AD2BADeF74E3","value":{"type":"BigNumber","hex":"0x00"},"data":"0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000","type":2,"accessList":null},"error":{"reason":"processing response error","code":"SERVER_ERROR","body":"{\"jsonrpc\":\"2.0\",\"id\":52,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}\n","error":{"code":-32000},"requestBody":"{\"method\":\"eth_estimateGas\",\"params\":[{\"type\":\"0x2\",\"maxFeePerGas\":\"0x59682f0e\",\"maxPriorityFeePerGas\":\"0x59682f00\",\"value\":\"0x0\",\"from\":\"0xbac8ecdbc45a50d3bda7246bb2aa64fc449c7924\",\"to\":\"0x6a8694b2ec1861784d2bbc89ae08ad2badef74e3\",\"data\":\"0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000\"}],\"id\":52,\"jsonrpc\":\"2.0\"}","requestMethod":"POST","url":"https://rpc-1.testnet.japanopenchain.org:8545"}}, tx={"data":"0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000","to":{},"from":"0xBac8ECdbc45A50d3bda7246bB2AA64Fc449C7924","value":{"type":"BigNumber","hex":"0x00"},"type":2,"maxFeePerGas":{"type":"BigNumber","hex":"0x59682f0e"},"maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x59682f00"},"nonce":{},"gasLimit":{},"chainId":{}}, code=UNPREDICTABLE_GAS_LIMIT, version=abstract-signer/5.7.0) at Logger.makeError (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/logger/lib/index.js:238:21) at Logger.throwError (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/logger/lib/index.js:247:20) at /Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/abstract-signer/lib/index.js:365:47 at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Promise.all (index 8) { reason: 'cannot estimate gas; transaction may fail or may require manual gas limit', code: 'UNPREDICTABLE_GAS_LIMIT', error: Error: cannot estimate gas; transaction may fail or may require manual gas limit [ See: https://links.ethers.org/v5-errors-UNPREDICTABLE_GAS_LIMIT ] (reason="execution reverted", method="estimateGas", transaction={"from":"0xBac8ECdbc45A50d3bda7246bB2AA64Fc449C7924","maxPriorityFeePerGas":{"type":"BigNumber","hex":"0x59682f00"},"maxFeePerGas":{"type":"BigNumber","hex":"0x59682f0e"},"to":"0x6A8694B2ec1861784d2BBc89ae08AD2BADeF74E3","value":{"type":"BigNumber","hex":"0x00"},"data":"0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000","type":2,"accessList":null}, error={"reason":"processing response error","code":"SERVER_ERROR","body":"{\"jsonrpc\":\"2.0\",\"id\":52,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}\n","error":{"code":-32000},"requestBody":"{\"method\":\"eth_estimateGas\",\"params\":[{\"type\":\"0x2\",\"maxFeePerGas\":\"0x59682f0e\",\"maxPriorityFeePerGas\":\"0x59682f00\",\"value\":\"0x0\",\"from\":\"0xbac8ecdbc45a50d3bda7246bb2aa64fc449c7924\",\"to\":\"0x6a8694b2ec1861784d2bbc89ae08ad2badef74e3\",\"data\":\"0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000\"}],\"id\":52,\"jsonrpc\":\"2.0\"}","requestMethod":"POST","url":"https://rpc-1.testnet.japanopenchain.org:8545"}, code=UNPREDICTABLE_GAS_LIMIT, version=providers/5.7.2) at Logger.makeError (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/logger/lib/index.js:238:21) at Logger.throwError (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/logger/lib/index.js:247:20) at checkError (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:122:20) at JsonRpcProvider. (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:751:47)
at step (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:48:23)
at Object.throw (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:29:53)
at rejected (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:21:65)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'execution reverted',
code: 'UNPREDICTABLE_GAS_LIMIT',
method: 'estimateGas',
transaction: {
from: '0xBac8ECdbc45A50d3bda7246bB2AA64Fc449C7924',
maxPriorityFeePerGas: BigNumber { _hex: '0x59682f00', _isBigNumber: true },
maxFeePerGas: BigNumber { _hex: '0x59682f0e', _isBigNumber: true },
to: '0x6A8694B2ec1861784d2BBc89ae08AD2BADeF74E3',
value: BigNumber { _hex: '0x00', _isBigNumber: true },
data: '0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000',
type: 2,
accessList: null
},
error: Error: processing response error (body="{\"jsonrpc\":\"2.0\",\"id\":52,\"error\":{\"code\":-32000,\"message\":\"execution reverted\"}}\n", error={"code":-32000}, requestBody="{\"method\":\"eth_estimateGas\",\"params\":[{\"type\":\"0x2\",\"maxFeePerGas\":\"0x59682f0e\",\"maxPriorityFeePerGas\":\"0x59682f00\",\"value\":\"0x0\",\"from\":\"0xbac8ecdbc45a50d3bda7246bb2aa64fc449c7924\",\"to\":\"0x6a8694b2ec1861784d2bbc89ae08ad2badef74e3\",\"data\":\"0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000\"}],\"id\":52,\"jsonrpc\":\"2.0\"}", requestMethod="POST", url="https://rpc-1.testnet.japanopenchain.org:8545", code=SERVER_ERROR, version=web/5.7.1)
at Logger.makeError (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/logger/lib/index.js:238:21)
at Logger.throwError (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/logger/lib/index.js:247:20)
at /Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:313:32
at step (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
reason: 'processing response error',
code: 'SERVER_ERROR',
body: '{"jsonrpc":"2.0","id":52,"error":{"code":-32000,"message":"execution reverted"}}\n',
error: Error: execution reverted
at getResult (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:191:21)
at processJsonFunc (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:356:22)
at /Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:288:46
at step (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:33:23)
at Object.next (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:14:53)
at fulfilled (/Users/cuonghx/Documents/repositories/gu-tech/VWBL/VWBL-test/node_modules/@ethersproject/web/lib/index.js:5:58)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: -32000,
data: undefined
},
requestBody: '{"method":"eth_estimateGas","params":[{"type":"0x2","maxFeePerGas":"0x59682f0e","maxPriorityFeePerGas":"0x59682f00","value":"0x0","from":"0xbac8ecdbc45a50d3bda7246bb2aa64fc449c7924","to":"0x6a8694b2ec1861784d2bbc89ae08ad2badef74e3","data":"0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000"}],"id":52,"jsonrpc":"2.0"}',
requestMethod: 'POST',
url: 'https://rpc-1.testnet.japanopenchain.org:8545'
}
},
tx: {
data: '0x4d96f2c200000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000a235e060ffe6edd9aabf1919e2303f22df597f9180dfd60836b3dc35bc247503f000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f676174657761792e70696e6174612e636c6f75642f697066732f516d58314b517672574a796e684c617531705a48695277474448565548646d417a56743162573438385431315a6700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001968747470733a2f2f6465762e7677626c2e6e6574776f726b2f00000000000000',
to: Promise { '0x6A8694B2ec1861784d2BBc89ae08AD2BADeF74E3' },
from: '0xBac8ECdbc45A50d3bda7246bB2AA64Fc449C7924',
value: BigNumber { _hex: '0x00', _isBigNumber: true },
type: 2,
maxFeePerGas: BigNumber { _hex: '0x59682f0e', _isBigNumber: true },
maxPriorityFeePerGas: BigNumber { _hex: '0x59682f00', _isBigNumber: true },
nonce: Promise { 394 },
gasLimit: Promise { [Circular *1] },
chainId: Promise { 10081 }
}
}
Node.js v20.12.2