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.

start.ts 5.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. import * as dotevnv from "dotenv"
  2. import {toUtf8String,parseUnits,ContractFactory, parseEther,JsonRpcProvider, Contract, JsonRpcSigner, Wallet,ContractTransactionResponse, MaxInt256
  3. ,Transaction,formatEther,
  4. ZeroHash,ethers,keccak256,id,
  5. hexlify,
  6. BytesLike,
  7. toUtf8Bytes,
  8. zeroPadValue,
  9. stripZerosLeft
  10. } from 'ethers'
  11. import chalk from "chalk";
  12. import {Calulator} from "../inc/calc";
  13. import { TokenIssuer } from "../inc/TokenIssuer";
  14. import {
  15. SecurityToken,
  16. SecurityToken__factory,
  17. } from '../typechain2'
  18. // import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers";
  19. import { Partition } from '../inc/tokenData';
  20. import { Operator } from '../typechain/contracts/access/Operator';
  21. import { stringify } from 'querystring';
  22. import {checkReceipt,checkReceipt2, setProvider,getDeploymentAddresses,
  23. getElapsed, sleep,getBlockInfo} from '../inc/util'
  24. dotevnv.config();
  25. if (!process.env.RPCURL) {
  26. console.log(`No rpcur value specified...`)
  27. }
  28. console.log(`목적 서버 : ${process.env.RPCURL}`);
  29. function toBytes32(data: string): BytesLike {
  30. return hexlify(zeroPadValue(toUtf8Bytes(data), 32));
  31. }
  32. /**
  33. * Converts solidity byte32 to utf8 string
  34. */
  35. function bytes32ToString(data: BytesLike): string {
  36. return toUtf8String(stripZerosLeft(data));
  37. }
  38. async function balanceOf(tokenAddress: string, operator: Wallet,
  39. isin: string, account: string)
  40. {
  41. const token = new SecurityToken__factory(operator).attach(tokenAddress) as SecurityToken;
  42. await token.connect(operator);
  43. const balance = await token.balanceOfKSD(toBytes32(isin),account);
  44. console.log(balance);
  45. }
  46. async function issueKSD(address: string, operator: Wallet
  47. ,isin: string, account: string, KSDAccount: string, qty: number, slipSeqKSD: string
  48. ) {
  49. const token = new SecurityToken__factory(operator).attach(address) as SecurityToken;
  50. await token.connect(operator);
  51. const decimals = await token.decimals();
  52. console.log(decimals);
  53. const symbol = await token.symbol();
  54. console.log(symbol);
  55. let r = await token.issueKSD(toBytes32(isin),account,KSDAccount,qty,toBytes32(slipSeqKSD));
  56. // const receipt1 = await r.wait();
  57. // console.log(receipt1.hash);
  58. }
  59. async function disposalLimitSetupKSD(address: string, operator: Wallet
  60. ,isin: string,
  61. account: string, KSDAccount: string, rsnCode: string, qty: number
  62. ) {
  63. const token = new SecurityToken__factory(operator).attach(address) as SecurityToken;
  64. await token.connect(operator);
  65. let r = await token.disposalLimitSetupKSD(toBytes32(isin),account,KSDAccount,toBytes32(rsnCode),qty);
  66. const receipt1 = await r.wait();
  67. console.log(receipt1.hash);
  68. }
  69. //function erasureKSD(bytes32 isin, address account, bytes32 KSDAccount, uint256 qty, bytes32 rsnCode, bytes32 slipSeqKSD) external;
  70. async function erasureKSD(address: string, operator: Wallet
  71. ,isin: string, account: string, KSDAccount: string, qty: number, rsnCode: string, slipSeqKSD: string
  72. ) {
  73. const token = new SecurityToken__factory(operator).attach(address) as SecurityToken;
  74. await token.connect(operator);
  75. let r = await token.erasureKSD(toBytes32(isin),account,KSDAccount,qty,toBytes32(rsnCode),slipSeqKSD);
  76. const receipt1 = await r.wait();
  77. console.log(receipt1.hash);
  78. }
  79. const calc = new Calulator();
  80. const rpcUrl = process.env.RPCURL;
  81. const provider = new JsonRpcProvider(rpcUrl);
  82. setProvider(provider);
  83. const admin = new Wallet('0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3',provider);
  84. const issuer = new Wallet('0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63',provider);
  85. const holder1 = new Wallet('0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f',provider);
  86. const holder2 = new Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',provider);
  87. const user1 = new Wallet('5c7ff82446654833ed4cbd3dc7cca94b114b556def572a5f2f7f29224c757adb',provider);
  88. const user2 = new Wallet('509157aeb1308d8ff8db8a3059d4392d92fb66960ef5083eda5a8dcc9118be31',provider);
  89. const newOperator = new Wallet('a0e4679c61e04969499af0c4cdcdc66e9a9f2e3f6cbc17ede9e2137518f8e75d',provider);
  90. // KR5STO000166 (토큰증권 테스트 종목16) -> 0x920c017843904A735458AA9d30779bE5FCfcF411
  91. // KR5STO000177 (토큰증권 테스트 종목17) -> 0x3e7757d67F2DBc9C2D9d69d74eCF0E498988da4F
  92. // KR5STO000188 (토큰증권 테스트 종목18) -> 0x984f4DbAD8fC003138312293Fd431E5D8bAC1daf
  93. // KR5STO000199 (토큰증권 테스트 종목19) -> 0xa36116158Cdfbcc57c3FEB9cc2A1cdfF8Cf5e247
  94. // KR5STO000200 (토큰증권 테스트 종목20) -> 0x9D084404B8558604a1e69B9782A6f421870bd907
  95. const accountSelf = '0x8909ba8b4dd517de907ab83dc5226352a151f74f';
  96. const ksdAccountSelf = '000002000001';
  97. const accountCustomer = '0x1C69DB7373505C1b69c9A2Dce0Be88EeE3c5f5e5';
  98. const ksdAccountCustomer = '000002000002';
  99. async function main() {
  100. //,isin: string, account: string, KSDAccount: string, qty: number, slipSeqKSD: string
  101. // 종목16
  102. let tokenAddress = '0x920c017843904A735458AA9d30779bE5FCfcF411';
  103. let slipSeqKSD = '0000000001';
  104. const Symbol1 = 'KR5STO000166';
  105. let qty = 1000000000;
  106. await issueKSD(tokenAddress,admin,
  107. Symbol1,
  108. accountCustomer,
  109. ksdAccountCustomer,
  110. qty,
  111. slipSeqKSD
  112. );
  113. await balanceOf(tokenAddress,admin,Symbol1,accountCustomer);
  114. qty = 1000000000;
  115. let rsnCode = '203';
  116. // ,isin: string, account: string, KSDAccount: string, rsnCode: string, qty: number
  117. // await disposalLimitSetupKSD(tokenAddress,admin,
  118. // Symbol1,
  119. // accountCustomer,
  120. // ksdAccountCustomer,
  121. // rsnCode,
  122. // qty
  123. // );
  124. rsnCode = '203';
  125. // ,isin: string, account: string, KSDAccount: string, qty: number, rsnCode: string, slipSeqKSD: string
  126. // await erasureKSD(tokenAddress,admin,
  127. // Symbol1,
  128. // accountCustomer,
  129. // ksdAccountCustomer,
  130. // qty,
  131. // rsnCode,
  132. // slipSeqKSD
  133. // );
  134. }
  135. main();