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.

listen.ts 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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 {checkReceipt,checkReceipt2, setProvider,getDeploymentAddresses,
  19. getElapsed, sleep,getBlockInfo} from '../inc/util'
  20. dotevnv.config();
  21. if (!process.env.RPCURL) {
  22. console.log(`No rpcur value specified...`)
  23. }
  24. console.log(`목적 서버 : ${process.env.RPCURL}`);
  25. import Web3 from 'web3';
  26. const web3 = new Web3();
  27. // 문자열을 bytes32로 변환하는 함수
  28. const toBytes32 = (inputString: string): string => {
  29. return web3.utils.asciiToHex(inputString).padEnd(66, '0'); // 32 bytes로 패딩 추가
  30. };
  31. // bytes32를 문자열로 변환하는 함수
  32. const bytes32ToString = (bytes32: string): string => {
  33. return web3.utils.hexToAscii(bytes32).replace(/\0/g, ''); // null 문자 제거
  34. };
  35. async function balanceOf(tokenAddress: string, operator: Wallet,
  36. isin: string, account: string)
  37. {
  38. const token = new SecurityToken__factory(operator).attach(tokenAddress) as SecurityToken;
  39. await token.connect(operator);
  40. const balance = await token.balanceOfKSD(toBytes32(isin),account);
  41. console.log(balance);
  42. }
  43. async function listenIssuable(tokenAddress: string, operator: Wallet, isin: string) {
  44. const token = new SecurityToken__factory(operator).attach(tokenAddress) as SecurityToken;
  45. await token.connect(operator);
  46. token.on(token.filters.TokenIssuableKSD2,(isin,totalIssueQty,KSDAccounts,amounts,slipSeqKSD, event) => {
  47. console.log(`TokenIssuableKSD2 event received at ${tokenAddress} , ${isin}`);
  48. console.log(`${isin} , ${totalIssueQty} , ${KSDAccounts} , ${amounts} , ${slipSeqKSD}`);
  49. console.log(event);
  50. });
  51. token.on(token.filters.TokenIssuableKSD,(isin,slipSeqKSD, event) => {
  52. console.log(`TokenIssuableKSD event received at ${tokenAddress} , ${isin}`);
  53. console.log(`${isin} - ${slipSeqKSD}`);
  54. console.log(event);
  55. });
  56. // const filter = token.filters.TokenIssuableKSD(null,null);
  57. // token.on(filter,(isin,slipSeqKSD, event) => {
  58. // console.log(event);
  59. // });
  60. // const abi = ['event TokenIssuableKSD(bytes32 isin, bytes32 slipSeqKSD)'];
  61. // //const singer: JsonRpcSigner = await provider.getSigner();
  62. // const contract = new Contract(
  63. // tokenAddress,
  64. // abi,
  65. // operator
  66. // );
  67. // //contract.on('TokenIssuableKSD', (isin,slipSeqKSD, event) => {
  68. // contract.on('TokenIssuableKSD', (data) => {
  69. // console.log(data);
  70. // // TokenIssuableKSD 에서 저장한 정보를 찾아서
  71. // //issueKSD()
  72. // });
  73. console.log(`Listening for TokenIssuableKSD events... at ${tokenAddress} , ${isin}`);
  74. setInterval(() => {}, 1000);
  75. }
  76. const calc = new Calulator();
  77. const rpcUrl = process.env.RPCURL;
  78. const provider = new JsonRpcProvider(rpcUrl);
  79. setProvider(provider);
  80. const admin = new Wallet('0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3',provider);
  81. const issuer = new Wallet('0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63',provider);
  82. const holder1 = new Wallet('0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f',provider);
  83. const holder2 = new Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',provider);
  84. const user1 = new Wallet('5c7ff82446654833ed4cbd3dc7cca94b114b556def572a5f2f7f29224c757adb',provider);
  85. const user2 = new Wallet('509157aeb1308d8ff8db8a3059d4392d92fb66960ef5083eda5a8dcc9118be31',provider);
  86. const newOperator = new Wallet('a0e4679c61e04969499af0c4cdcdc66e9a9f2e3f6cbc17ede9e2137518f8e75d',provider);
  87. // KR5STO000166 (토큰증권 테스트 종목16) -> 0x920c017843904A735458AA9d30779bE5FCfcF411
  88. // KR5STO000177 (토큰증권 테스트 종목17) -> 0x3e7757d67F2DBc9C2D9d69d74eCF0E498988da4F
  89. // KR5STO000188 (토큰증권 테스트 종목18) -> 0x984f4DbAD8fC003138312293Fd431E5D8bAC1daf
  90. // KR5STO000199 (토큰증권 테스트 종목19) -> 0xa36116158Cdfbcc57c3FEB9cc2A1cdfF8Cf5e247
  91. // KR5STO000202 (토큰증권 테스트 종목20) -> 0x93302A7eeD96b27D47Ec692c6560cA5Fd5E9e7ED
  92. const accountSelf = '0x8909ba8b4dd517de907ab83dc5226352a151f74f';
  93. const ksdAccountSelf = '000002000001';
  94. const accountCustomer = '0x1C69DB7373505C1b69c9A2Dce0Be88EeE3c5f5e5';
  95. const ksdAccountCustomer = '000002000002';
  96. async function main() {
  97. //,isin: string, account: string, KSDAccount: string, qty: number, slipSeqKSD: string
  98. // KR5STO000202
  99. let symbol = 'KR5STO000166';
  100. let qty = 1000000000;
  101. let rsnCode = '203';
  102. let tokenAddress = '0x920c017843904A735458AA9d30779bE5FCfcF411';
  103. listenIssuable(tokenAddress,admin, symbol).catch((error) => {
  104. console.log(error);
  105. });
  106. symbol = 'KR5STO000177'
  107. tokenAddress = '0x3e7757d67F2DBc9C2D9d69d74eCF0E498988da4F';
  108. listenIssuable(tokenAddress,admin, symbol).catch((error) => {
  109. console.log(error);
  110. });
  111. symbol = 'KR5STO000188'
  112. tokenAddress = '0x984f4DbAD8fC003138312293Fd431E5D8bAC1daf';
  113. listenIssuable(tokenAddress,admin, symbol).catch((error) => {
  114. console.log(error);
  115. });
  116. symbol = 'KR5STO000199'
  117. tokenAddress = '0xa36116158Cdfbcc57c3FEB9cc2A1cdfF8Cf5e247';
  118. listenIssuable(tokenAddress,admin, symbol).catch((error) => {
  119. console.log(error);
  120. });
  121. symbol = 'KR5STO000202'
  122. tokenAddress = '0x93302A7eeD96b27D47Ec692c6560cA5Fd5E9e7ED';
  123. listenIssuable(tokenAddress,admin, symbol).catch((error) => {
  124. console.log(error);
  125. });
  126. }
  127. main();