import * as dotevnv from "dotenv" import {toUtf8String,parseUnits,ContractFactory, parseEther,JsonRpcProvider, Contract, JsonRpcSigner, Wallet,ContractTransactionResponse, MaxInt256 ,Transaction,formatEther, ZeroHash } from 'ethers' import {ethers} from 'hardhat'; import { TokenIssuer } from "../inc/TokenIssuer"; import { SecurityToken, SecurityToken__factory, } from '../typechain' import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers"; import {checkReceipt, setProvider,saveDeploymentAddresses} from '../inc/util' dotevnv.config(); if (!process.env.RPCURL) { console.log(`No rpcur value specified...`) } async function prepareToken(name: string, symbol: string,decimal: number, total: number, contractOwner: Wallet | HardhatEthersSigner, issuer: Wallet | HardhatEthersSigner, holder1: string, holder2: string) { const deployed = require('../security_token_deployments.json'); const tokenService = new TokenIssuer(contractOwner as Wallet,deployed.tokenBeacon,deployed.rulesBeacon,contractOwner.address); const digit = 10 ** decimal // let txid = await deployToken(name,symbol,6,amount * digit); const controllers = ['0x9A563196bffCF278bFc16B89D1C19081E05A7eAE', '0x4Ebbec759d8a5cCd06aea5222362046fF620f1D5']; const operators = ['0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73','0x487be970aDD5d85c646ECb624a090E64Aca6b36d']; const lockers = ['0x9A563196bffCF278bFc16B89D1C19081E05A7eAE', '0x4Ebbec759d8a5cCd06aea5222362046fF620f1D5']; const proxy = await tokenService.deploy(name,symbol,decimal,total * digit,issuer.address,operators,lockers,controllers); console.log(`new token deployed at ${proxy}`); const token = new SecurityToken__factory(contractOwner).attach(proxy) as SecurityToken; //token.connect(contractOwner); const sym = await token.symbol(); console.log(await token.name()); console.log(sym); console.log(await token.maxSupply()); let r; // r = await token.KYCtokenHolders([holder1]); // await token.KYCtokenHolders([holder2]); const tokenForIssuer = new SecurityToken__factory(issuer).attach(proxy) as SecurityToken; await tokenForIssuer.connect(issuer); r = await tokenForIssuer.KYCtokenHolders([holder1]); await tokenForIssuer.KYCtokenHolders([holder2]); let txids = []; txids.push({txid: r.hash}); await checkReceipt(txids, 'wait for tokenholder kyced'); const b = await tokenForIssuer.isTokenHolderKYC(holder1); if(!b) { console.log('holder kyc error'); return; } await tokenForIssuer.issue(holder1,50_000n,ZeroHash); r = await tokenForIssuer.issue(holder2,50_000n,ZeroHash); txids = []; txids.push({txid: r.hash}); await checkReceipt(txids, 'wait for token issued'); let balance = await tokenForIssuer.balanceOf(holder1); console.log(`holder1's balance = ${balance}`); balance = await tokenForIssuer.balanceOf(holder2); console.log(`holder2's balance = ${balance}`); console.log('TestData created!'); saveDeploymentAddresses(symbol,{address: proxy}) } const rpcUrl = process.env.RPCURL; const provider = new JsonRpcProvider(rpcUrl); setProvider(provider); async function main() { const admin = await ethers.provider.getSigner(0); const issuer = await ethers.provider.getSigner(1); const holder1 = await ethers.provider.getSigner(2); const holder2 = await ethers.provider.getSigner(3); // name: string, symbol: string,decimal: number, total: number await prepareToken( '테스트토큰2','test002',6,1000000, admin, issuer, holder1.address, holder2.address); } main();