From f3e292bec26a2962275c755dcac267a66695031d Mon Sep 17 00:00:00 2001 From: Moon Date: Mon, 30 Jan 2023 19:35:49 -0500 Subject: [PATCH] bunch more scripts --- scripts/approve-set.js | 31 +++++++++++++++++ scripts/transfer1.js | 25 ++++++++++++++ scripts/wrap-and-transfer-set.js | 58 ++++++++++++++++++++++++++++++++ 3 files changed, 114 insertions(+) create mode 100644 scripts/approve-set.js create mode 100644 scripts/transfer1.js create mode 100644 scripts/wrap-and-transfer-set.js diff --git a/scripts/approve-set.js b/scripts/approve-set.js new file mode 100644 index 0000000..60cf57f --- /dev/null +++ b/scripts/approve-set.js @@ -0,0 +1,31 @@ +const Wrapper = artifacts.require("CurioERC1155Wrapper"); +const IMastersFedi = artifacts.require("IMastersFedi"); + +const quantity = parseInt(process.argv[6]); + +module.exports = async (callback) => { + if (quantity > 0) { + const wrapper = await Wrapper.deployed(); + + let approveSuccess = false; + console.log("Approving all contracts for transfer"); + try { + for (let id = 2; id <= 9; ++id) { + const tokenContractAddress = await wrapper.contracts(id); + const tokenContract = await IMastersFedi.at(tokenContractAddress); + + console.log(`Approving ID ${id}...`); + await tokenContract.approve(wrapper.address, quantity); + } + approveSuccess = true; + } + catch (e) { + console.error(`FAILED: ${e}`); + } + } + else { + console.error("Invalid quantity"); + } + + callback(); +} diff --git a/scripts/transfer1.js b/scripts/transfer1.js new file mode 100644 index 0000000..aad3e6b --- /dev/null +++ b/scripts/transfer1.js @@ -0,0 +1,25 @@ +const IMastersFedi = artifacts.require("IMastersFedi"); + +module.exports = async (callback) => { + const [account,] = await web3.eth.getAccounts(); + const quantity = parseInt(process.argv[6]); + const to = process.argv[7]; + + const tokenContract = await IMastersFedi.at("0x2f873FCc3F4B84E9A62AFf28E9a897ce1BC8814B"); + const currentBalance = await tokenContract.balanceOf(account); + console.log(`Current balance: ${currentBalance}`); + + console.log("Executing transfer transaction..."); + try { + const result = await tokenContract.transfer(to, quantity); + console.log(`Transaction: ${result.tx}`); + + const newBalance = await tokenContract.balanceOf(account); + console.log(`New balance: ${newBalance}`); + } + catch (e) { + console.error(`FAILED: ${e}`); + } + + callback(); +} diff --git a/scripts/wrap-and-transfer-set.js b/scripts/wrap-and-transfer-set.js new file mode 100644 index 0000000..3cab52b --- /dev/null +++ b/scripts/wrap-and-transfer-set.js @@ -0,0 +1,58 @@ +const Wrapper = artifacts.require("CurioERC1155Wrapper"); +const IMastersFedi = artifacts.require("IMastersFedi"); + +const seq = n => n < 1 ? [] : [...seq(n - 1), n]; + +const to = process.argv[6]; +const quantity = parseInt(process.argv[7]); + +module.exports = async (callback) => { + if (/0x[0-9a-fA-F]{40}/.test(to) && quantity > 0) { + const wrapper = await Wrapper.deployed(); + const [account,] = await web3.eth.getAccounts(); + const ids = seq(9); + const quantities = Array(9).fill(quantity); + + let approveSuccess = false; + console.log("Approving all contracts for transfer"); + try { + for (let id = 1; id <= 9; ++id) { + const tokenContractAddress = await wrapper.contracts(id); + const tokenContract = await IMastersFedi.at(tokenContractAddress); + + console.log(`Approving ID ${id}...`); + await tokenContract.approve(wrapper.address, quantity); + } + approveSuccess = true; + } + catch (e) { + console.error(`FAILED: ${e}`); + } + + if (approveSuccess) { + console.log("Executing wrap transaction..."); + let wrapResult; + try { + wrapResult = await wrapper.wrapBatch( + ids, + quantities + ); + console.log(`Wrap transaction: ${wrapResult.tx}`); + } + catch (e) { + console.error(`FAILED: ${e}`); + } + + if (wrapResult) { + console.log("Executing batch transfer..."); + const transferResult = await wrapper.safeBatchTransferFrom(account, to, ids, quantities, []); + console.log(`Transfer transaction: ${transferResult.tx}`); + } + } + } + else { + console.error("Invalid to address or quantity"); + } + + callback(); +}