import * as dotevnv from "dotenv" import {toUtf8String,parseUnits,ContractFactory, parseEther,JsonRpcProvider, Contract, JsonRpcSigner, Wallet,ContractTransactionResponse, MaxInt256 ,Transaction,formatEther, ZeroHash,ethers,keccak256, FetchRequest,JsonRpcApiProviderOptions } from 'ethers' import {Calulator} from "../inc/calc"; import chalk from "chalk"; import { TokenIssuer } from "../inc/TokenIssuer"; import { SecurityToken, SecurityToken__factory, } from '../typechain' // import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers"; import {checkReceipt,checkReceipt2, setProvider,getDeploymentAddresses, getElapsed, sleep,getBlockInfo,getNonce} from '../inc/util' import { assert } from "console"; dotevnv.config(); if (!process.env.RPCURL) { console.log(`No rpcur value specified...`) } import axios from "axios"; async function getBalance(symbol: string, address: string ): Promise { const path = `holders/${address}/tokens/${symbol}/balance`; const ret = await axios.get(gateWay + path, getAuthHeader(authToken)); return ret.data; } async function getBalanceAsc(symbol: string, address: string ): Promise { const path = `holders/${address}/tokens/${symbol}/balance`; return axios.get(gateWay + path, getAuthHeader(authToken)); // const ret = await axios.get(gateWay + path, getAuthHeader(authToken)); // return ret.data; } function getAuthHeader(token: string) : any{ return { headers: { 'Content-Type': 'application/json;charset=UTF-8', 'Access-Control-Allow-Origin': '*', 'Authorization': `Bearer ${token}` } }; } async function readTest(symbol:string, holder: Wallet, count: number = 100): Promise { const proxy = getDeploymentAddresses(symbol).address; console.log(`토큰 주소 : ${proxy}`); const balance = await getBalance(symbol,holder.address); console.log(chalk.blue(`잔고(${holder.address}) = ${balance}`)); const start = Date.now(); console.log(chalk.cyan(`조회시작 시간 : ${new Date(start).toUTCString()}`)); console.log(chalk.yellow(`reading balance ${count} times`)); let proms = []; for(let i = 0; i < count; i++) { proms.push(getBalanceAsc(symbol,holder.address)); } let resolved = await Promise.all(proms); assert(count == resolved.length); resolved.forEach(b => { // console.log(b.data); if(b.data != balance) { console.log('balance mismatch!!!!!!!!!!!!!!!!!!!!!!!!!!'); } }); const end = Date.now(); const elapsed = getElapsed(start,1000); console.log(`request finished in ${elapsed} seconds`); const CEPS = calc.CQPS(count,start,end); console.log(`CQPS = ${CEPS}`); return 0; } const calc = new Calulator(); const rpcUrl = process.env.RPCURL; const gateWay = process.env.GATE_WAY; const authToken=process.env.AUTHTOKEN; const fetchRequest = new FetchRequest(rpcUrl); console.log(rpcUrl) fetchRequest.timeout = 10000; const provider = new JsonRpcProvider(fetchRequest); setProvider(provider); const admin = new Wallet('0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3',provider); const issuer = new Wallet('0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63',provider); const holder1 = new Wallet('0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f',provider); const holder2 = new Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',provider); console.log(`목적 서버 : ${rpcUrl}`); async function main() { await readTest('BCG_TEST',holder1,1000); // const b = await getBalance('BCG_TEST',holder1.address); // console.log(b); } main();