Simon Lee 1年前
父节点
当前提交
3e3a0822fb
共有 2 个文件被更改,包括 125 次插入3 次删除
  1. 10
    3
      TC4/start.ts
  2. 115
    0
      inc/recover.ts

+ 10
- 3
TC4/start.ts 查看文件

@@ -60,7 +60,9 @@ async function transfer(symbol:string,from: Wallet, to: Wallet, amount: number =
return;
}
const partitions = await token.getDefaultPartitions();
console.log('###################### 전송전 ###################################')
console.log(`balance of sender = ${balance1}, balance of receiver = ${balance2}`);

// token.on(token.filters.Transfer, async (...args) => {
// const lastArg = args[args.length - 1];
// console.log(lastArg);
@@ -68,13 +70,15 @@ async function transfer(symbol:string,from: Wallet, to: Wallet, amount: number =
// })

let nonce = await getNonce(issuer.address);
let nonce = await getNonce(signer.address);
let txids = [];
let proms = [];
let firstTx:string = null;
let lastTx:string = null;
const start = Date.now();

//console.log(`전송시작 시간 : `,new Date(start));

console.log(`sending ${count} transactions`);
for(let i = 0; i < count; i++) {
const tx = await token.operatorTransferByPartition.populateTransaction(
@@ -95,7 +99,7 @@ async function transfer(symbol:string,from: Wallet, to: Wallet, amount: number =
++nonce;
// console.log(tx);
const signed = await issuer.signTransaction(tx);
const signed = await signer.signTransaction(tx);
const pm = provider.send('eth_sendRawTransaction',[signed]);

if(i == 0) {
@@ -156,6 +160,9 @@ setProvider(provider);

const admin = new Wallet('0xc87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3',provider);
const issuer = new Wallet('0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63',provider);
// const signer = new Wallet('0x55d1000aa2057a878b5f7902158615f889cb1e9b811f7e1e9c0b4518399ba84a',provider);
const signer = issuer;

const holder1 = new Wallet('0xae6ae8e5ccbfb04590405997ee2d52d2b330726137b875053c36d94e974d162f',provider);
const holder2 = new Wallet('0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80',provider);

@@ -164,7 +171,7 @@ async function main() {
// console.log(issuer);
console.log(holder1);
console.log(holder2);
transfer('test001',holder1, holder2,1, 10000);
transfer('test001',holder2, holder1,1, 1000);
}

main();

+ 115
- 0
inc/recover.ts 查看文件

@@ -0,0 +1,115 @@
import * as dotevnv from "dotenv"
import {toUtf8String,parseUnits,ContractFactory, parseEther,JsonRpcProvider, Contract, JsonRpcSigner, Wallet,ContractTransactionResponse, MaxInt256
,Transaction,formatEther,
ZeroHash,ethers,keccak256
} from 'ethers'
// import {ethers} from 'hardhat';
// import {Calulator} from "../inc/calc";

import {
SecurityToken,
SecurityToken__factory,
} from '../typechain'
import { HardhatEthersSigner } from "@nomicfoundation/hardhat-ethers/signers";
import {checkReceipt,checkReceipt2, setProvider,getDeploymentAddresses, getElapsed, sleep} from '../inc/util'
import { stringify } from "querystring";
import { sign } from "crypto";
dotevnv.config();
if (!process.env.RPCURL) {
console.log(`No rpcur value specified...`)
}


console.log(`목적 서버 : ${process.env.RPCURL}`);

async function getNonce(addr: string): Promise<number> {
const nonce = await provider.getTransactionCount(addr);
return nonce;
}


async function sendDirect(wallet: Wallet, to: string, amount: string,nonce: number) : Promise<string> {
//const wallet = new Wallet(fromKey);
//console.log(`sender = ${wallet.address}`);
const tx = {
to: to,
value: parseEther(amount.toString()),
gas: 800000000000,
gasLimit: 21000000000, //21000으로 고정권장(너무 높으면 속도가 느려짐)
maxPriorityFeePerGas: parseUnits("5","gwei"),
maxFeePerGas: parseUnits("20", "gwei"),
nonce: nonce,
type: 2,
chainId: 1337, // Corresponds to ETH_GOERLI
};
const signed = await wallet.signTransaction(tx);
const txid = await provider.send('eth_sendRawTransaction',[signed]);
return txid;
}

async function Recover(privKey: string , count: number,nc: number = 0) {
// let from = '0xfe3b557e8fb62b89f4916b721be55ceb828dbd73';
// let fromKey = '0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63';
const wallet = new Wallet(privKey);
const from = wallet.address;
let to = '0x627306090abaB3A6e1400e9345bC60c78a8BEf57';

let nonce = nc;
if(nonce == 0)
nonce = await getNonce(from);

let txids = [];

let startTime = 0;

for(let i = 0; i < count; i++) {
try {
console.log(`nonce = ${nonce}`);
let txid = await sendDirect(wallet,to,'0.1',nonce++);
// start time setting
if(i == 0) {
startTime = Date.now();
}
// console.log(txid);
txids.push({txid});
} catch(ex) {
console.log(ex);
break;
}
}

// let txid = await sendTx(to,'0.1',nonce++);
await checkReceipt(txids, 'check receipt....');

let tx = await provider.send('eth_getTransactionByHash',[txids[0].txid]);
const firstBlock = await provider.getBlock(tx.blockNumber);

tx = await provider.send('eth_getTransactionByHash',[txids[count-1].txid]);
const lastBlock = await provider.getBlock(tx.blockNumber);
}


const rpcUrl = process.env.RPCURL;
const provider = new JsonRpcProvider(rpcUrl);
setProvider(provider);

async function main() {

console.log('recover... pending nonce');
Recover('0x8f2a55949038a9610f50fb23b5883af3b4ecb3c3bb792cbcefbd1542c692be63',100);
// for(let i = 13489; i < 13492; i++ ) {
// try {
// await send(i);
// } catch(ex) {
// console.log(ex);
// }
// await sleep(10);
// }
}

main();


正在加载...
取消
保存