import { createMultichainSDK } from "./multichain/multichain"; // prepare data import NFTBase from "./contract/confluxERC721Base.json"; import ERC721 from "./contract/GeneralERC721.json"; const abiBase: any = NFTBase.abi; const bytecodeBase = NFTBase.bytecode; const walletExample = { "Conflux": { JsonRpcUrl: "https://main.confluxrpc.com", networkId: 1029, masterWalletAddress: "cfx:aapjgb12jr3z71ebb33uvkngu2e429yycu02ptde38", masterPrivateKey: "0xd73af33296832cf248e74a7ce6478646bb3abc1934c81a3075b8aca4084fcf05", userWalletAddress: "cfx:aamwu5ac0543pfnp0xmnwa1jufzrm8c2p21vyua919", userPrivateKey: "9f0e584a004eecf44946efd5e3075f9a309d369d163021d909e53161f6f603a3", deployedContractAddress: "cfx:accugzdzrsvu1m0svtj8bzwc85649j9udpuwrasc9k" }, "Ethereum": { JsonRpcUrl: "https://eth-goerli.g.alchemy.com/v2/fpjsOLC6-Te_JVY18OqaUY6WgQl7cdUJ", networkId: 5, masterWalletAddress: "0x882bed0207848d7489d848E5af8bed94C535354A", masterPrivateKey: "00e9818d8632d8d38761961529447ab6845de9e22335a3084dfe5462578a8e52", userWalletAddress: "0x007371A303B3A4D32E4E9352ACd72809A3f45acA", userPrivateKey: "86f90c0ec9fbbd6174eed2fef40a8990318120349c7bc147267bd61551aabaa8", deployedContractAddress: "0xc38f4B6367B42020Fc4F07CCC5d77833D59cd72B" } } async function main(blockchainName: string, testItemid: number) { // create mc sdk for conflux console.log("Testing " + blockchainName) console.log("=".repeat(70)) let sdk = createMultichainSDK(blockchainName) // example data let JsonRpcUrl = walletExample[blockchainName].JsonRpcUrl let networkId = walletExample[blockchainName].networkId let masterWalletAddress = walletExample[blockchainName].masterWalletAddress let masterPrivateKey = walletExample[blockchainName].masterPrivateKey let userWalletAddress = walletExample[blockchainName].userWalletAddress let userPrivateKey = walletExample[blockchainName].userPrivateKey let deployedContractAddress = walletExample[blockchainName].deployedContractAddress // connect to network and wallet let provider: any = new sdk.providers.JsonRpcProvider(JsonRpcUrl, networkId) let wallet: any = new sdk.Wallet(masterPrivateKey, provider) let userWallet: any = new sdk.Wallet(userPrivateKey, provider) // deploy a new contract // let contract_factory = new sdk.ContractFactory(abiBase, bytecodeBase, wallet); // let contract: any = await contract_factory.deploy(); // let contractAddress = contract.address; // or utilize a deployed contract directly let contractAddress = deployedContractAddress let contract: any = new sdk.Contract(contractAddress, abiBase, wallet) console.log("Contract address: " + contractAddress) // console.log(await contract["safeMint(address,uint256)"](masterWalletAddress, 1123213)) // adopt a nft client let contractCient = new sdk.ContractClient(contractAddress, abiBase, wallet) // sponsor user wallet if (blockchainName === "Conflux") { console.log("=".repeat(70)) console.log("Sponsor") console.log(await contractCient.checkSponsor()); console.log("User wallet was Sponsored?", await contractCient.isSponsored(userWalletAddress)); await contractCient.addSponsored(userWalletAddress); console.log("User wallet was Sponsored?", await contractCient.isSponsored(userWalletAddress)); } // init wallets' balance console.log("=".repeat(70)) console.log("Init") console.log("Master wallet: " + await contractCient.balanceOf(masterWalletAddress), ", User wallet: " + await contractCient.balanceOf(userWalletAddress)) // mint a nft to master wallet console.log("=".repeat(70)) console.log("Mint") let res = await contractCient.mint(masterWalletAddress, testItemid) console.log("Master wallet: " + await contractCient.balanceOf(masterWalletAddress), ", User wallet: " + await contractCient.balanceOf(userWalletAddress)) // transfer it to user wallet console.log("=".repeat(70)) console.log("Transfer") await contractCient.transfer(masterWalletAddress, userWalletAddress, testItemid) console.log("Master wallet: " + await contractCient.balanceOf(masterWalletAddress), ", User wallet: " + await contractCient.balanceOf(userWalletAddress)) console.log("Backtrack") await contractCient.transfer(masterWalletAddress, userWalletAddress, testItemid) console.log("Master wallet: " + await contractCient.balanceOf(masterWalletAddress), ", User wallet: " + await contractCient.balanceOf(userWalletAddress)) console.log("=".repeat(70)) } const testMultichain = async () => { let testItemid = 786845 await main("Conflux", testItemid).catch(e => console.error(e)); await main("Ethereum", testItemid).catch(e => console.error(e)); } testMultichain()