From 01c8e2aefc2c054b6b5bcce4c5566ae11963d065 Mon Sep 17 00:00:00 2001 From: Moon Date: Mon, 30 Jan 2023 00:00:04 -0500 Subject: [PATCH] working wrap and uwrap scripts --- scripts/unwrap.js | 35 ++++++++++++++++++++++++++++++++ scripts/wrap.js | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 scripts/unwrap.js create mode 100644 scripts/wrap.js diff --git a/scripts/unwrap.js b/scripts/unwrap.js new file mode 100644 index 0000000..fd06027 --- /dev/null +++ b/scripts/unwrap.js @@ -0,0 +1,35 @@ +const Wrapper = artifacts.require("CurioERC1155Wrapper"); +const IMastersFedi = artifacts.require("IMastersFedi"); + +module.exports = async (callback) => { + const nftId = parseInt(process.argv[6]); + const quantity = parseInt(process.argv[7]); + console.log(`Quantity to unwrap: ${quantity}`); + + const wrapper = await Wrapper.deployed(); + const tokenContractAddress = await wrapper.contracts(nftId); + const tokenContract = await IMastersFedi.at(tokenContractAddress); + const tokenName = await tokenContract.name(); + console.log(`Token contract address: ${tokenContractAddress}, name: "${tokenName}"`); + + const [account,] = await web3.eth.getAccounts(); + let wrappedQuantity = await wrapper.balanceOf(account, nftId); + console.log(`Wrapped quantity: ${wrappedQuantity}`); + + let result1; + try { + console.log("Sending unwrap transaction..."); + result1 = await wrapper.unwrap(nftId, quantity, { from: account }); + + wrappedQuantity = await wrapper.balanceOf(account, nftId); + console.log(`New wrapped balance: ${wrappedQuantity}`); + + const unwrappedBalance = await tokenContract.balanceOf(account); + console.log(`New unwrapped balance: ${unwrappedBalance}`); + } + catch (e) { + console.error(`FAILED: ${e}`); + } + + callback(); +} diff --git a/scripts/wrap.js b/scripts/wrap.js new file mode 100644 index 0000000..09fe9a7 --- /dev/null +++ b/scripts/wrap.js @@ -0,0 +1,51 @@ +const Wrapper = artifacts.require("CurioERC1155Wrapper"); +const IMastersFedi = artifacts.require("IMastersFedi"); + +module.exports = async (callback) => { + const nftId = parseInt(process.argv[6]); + const quantity = parseInt(process.argv[7]); + console.log(`Quantity to wrap: ${quantity}`); + + const wrapper = await Wrapper.deployed(); + const tokenContractAddress = await wrapper.contracts(nftId); + const tokenContract = await IMastersFedi.at(tokenContractAddress); + const tokenName = await tokenContract.name(); + console.log(`Token contract address: ${tokenContractAddress}, name: "${tokenName}"`); + + const [account,] = await web3.eth.getAccounts(); + const tokenQuantity = await tokenContract.balanceOf(account); + console.log(`Unwrapped balance: ${tokenQuantity}`); + + if (tokenQuantity >= quantity) { + console.log("First approving contract to withdraw token quantity..."); + let result1; + try { + result1 = await tokenContract.approve(wrapper.address, quantity, { from: account }); + } + catch (e) { + console.error(`FAILED: ${e}`); + } + + if (result1) { + console.log("Now submitting wrap transaction..."); + let result; + + try { + result = await wrapper.wrap(nftId, quantity, { from: account }); + console.log(`Transaction: ${result.tx}`); + + const wrappedQuantity = await wrapper.balanceOf(account, nftId); + console.log(`New wrapped quantity: ${wrappedQuantity}`); + } + catch (e) { + console.error(`FAILED: ${e}`); + } + } + } + else { + console.error("Insufficient balance"); + } + + console.log("Done."); + callback(); +}