You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. import * as dotevnv from "dotenv"
  2. import {toUtf8String,parseUnits,ContractFactory, parseEther,JsonRpcProvider, Contract, JsonRpcSigner, Wallet,ContractTransactionResponse, MaxInt256
  3. ,Transaction,formatEther,
  4. ZeroHash
  5. } from 'ethers'
  6. import {ethers} from 'hardhat';
  7. import { TokenIssuer } from "../inc/TokenIssuer";
  8. import {
  9. SecurityToken,
  10. SecurityToken__factory,
  11. } from '../typechain'
  12. import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers";
  13. import {checkReceipt, setProvider,saveDeploymentAddresses} from '../inc/util'
  14. dotevnv.config();
  15. if (!process.env.RPCURL) {
  16. console.log(`No rpcur value specified...`)
  17. }
  18. async function prepareToken(name: string, symbol: string,decimal: number, total: number,
  19. contractOwner: Wallet | HardhatEthersSigner,
  20. issuer: Wallet | HardhatEthersSigner,
  21. holder1: string, holder2: string)
  22. {
  23. const deployed = require('../security_token_deployments.json');
  24. const tokenService = new TokenIssuer(contractOwner as Wallet,deployed.tokenBeacon,deployed.rulesBeacon,contractOwner.address);
  25. const digit = 10 ** decimal
  26. // let txid = await deployToken(name,symbol,6,amount * digit);
  27. const controllers = ['0x9A563196bffCF278bFc16B89D1C19081E05A7eAE', '0x4Ebbec759d8a5cCd06aea5222362046fF620f1D5'];
  28. const operators = ['0xFE3B557E8Fb62b89F4916B721be55cEb828dBd73'];
  29. const lockers = ['0x9A563196bffCF278bFc16B89D1C19081E05A7eAE', '0x4Ebbec759d8a5cCd06aea5222362046fF620f1D5'];
  30. const proxy = await tokenService.deploy(name,symbol,decimal,total * digit,issuer.address,operators,lockers,controllers);
  31. console.log(`new token deployed at ${proxy}`);
  32. const token = new SecurityToken__factory(contractOwner).attach(proxy) as SecurityToken;
  33. //token.connect(contractOwner);
  34. const sym = await token.symbol();
  35. console.log(await token.name());
  36. console.log(sym);
  37. console.log(await token.maxSupply());
  38. let r;
  39. // r = await token.KYCtokenHolders([holder1]);
  40. // await token.KYCtokenHolders([holder2]);
  41. const tokenForIssuer = new SecurityToken__factory(issuer).attach(proxy) as SecurityToken;
  42. await tokenForIssuer.connect(issuer);
  43. r = await tokenForIssuer.KYCtokenHolders([holder1]);
  44. await tokenForIssuer.KYCtokenHolders([holder2]);
  45. let txids = [];
  46. txids.push({txid: r.hash});
  47. await checkReceipt(txids, 'wait for tokenholder kyced');
  48. const b = await tokenForIssuer.isTokenHolderKYC(holder1);
  49. if(!b) {
  50. console.log('holder kyc error');
  51. return;
  52. }
  53. await tokenForIssuer.issue(holder1,50_000n,ZeroHash);
  54. r = await tokenForIssuer.issue(holder2,50_000n,ZeroHash);
  55. txids = [];
  56. txids.push({txid: r.hash});
  57. await checkReceipt(txids, 'wait for token issued');
  58. let balance = await tokenForIssuer.balanceOf(holder1);
  59. console.log(`holder1's balance = ${balance}`);
  60. balance = await tokenForIssuer.balanceOf(holder2);
  61. console.log(`holder2's balance = ${balance}`);
  62. console.log('TestData created!');
  63. saveDeploymentAddresses(symbol,{address: proxy})
  64. }
  65. const rpcUrl = process.env.RPCURL;
  66. const provider = new JsonRpcProvider(rpcUrl);
  67. setProvider(provider);
  68. async function main() {
  69. const admin = await ethers.provider.getSigner(0);
  70. const issuer = await ethers.provider.getSigner(1);
  71. const holder1 = await ethers.provider.getSigner(2);
  72. const holder2 = await ethers.provider.getSigner(3);
  73. // name: string, symbol: string,decimal: number, total: number
  74. await prepareToken(
  75. '테스트토큰','test001',6,1000000,
  76. admin, issuer, holder1.address, holder2.address);
  77. }
  78. main();