跳到主要内容

abi-decode

const input =
'0x223da1ba00000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000e7c91874559e11aeed13b0372d2330c2366f6c2200000000000000000000000019f494583c7c933be7b0ee58104ddafac1e8adfa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000118aa14d9418000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000004a170111a0e63ac94812c5f15c56f7e0100000000000000000000000075dffacbce225b30f0c9644e94e0092295322c4e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000118aa14d941800000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000000001c6b74e3bd3692b0f8a7e095a1191000a1f313be9e5cc5b5f0189ad71be6a32c8000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041af911962f18e75fb83b9e667a665a8c55e569698aed4341db89c31e802020d704f1fd126b5fd5b0e52b09d88fdd6171ea09e1740d05dd7bdca4760feeba7ef481b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000413b49932d8cbdd14ef0d6125de4930abb8ea18372b88de2b859ba7295ba7682f04b428632083a6eaf077a3125fb559a201707ef16a3166152d4b59d727178cbb11c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000';

const abi = require('../abis/erc20');
// console.log(abi);
const abiDecoder = require('abi-decoder');
const Web3 = require('web3');
abiDecoder.addABI(abi);
const decodedData = abiDecoder.decodeMethod(input);
// console.log('decodedData', decodedData);

const provider = 'http://10.0.152.116/8545';
const web3 = new Web3(provider);

// const { toAscii, toUtf8 } = require('web3-utils');
// console.log(toAscii(input));
// console.log(toUtf8(input));

// run this multiple times by putting in its own function
const tokenContract = new web3.eth.Contract(abi, '0x189bd55B75c25a6479d092312b19A81Ce7AB7571');
const methods = tokenContract.methods;
const symbol = tokenContract.methods.symbol();
// console.log('symbol : ', symbol.encodeABI());
// return;
console.log('tokenContract.methods', methods);
// run this multiple times by putting in its own function
async function getTokenInfo() {
const address = '0x2819c144d5946404c0516b6f817a960db37d4929';
const [name, symbol, balance, balance2] = await Promise.all([
tokenContract.methods.name().call(), //
tokenContract.methods.symbol().call(), //
// tokenContract.methods.balanceOf(address).call(), //
// tokenContract.methods.balanceOf(address).call({}, 11621022), //
]);
// const encode = methods.balanceOf(address).encodeABI({}, 11621022);
// const encode2 = methods.balanceOf(address).encodeABI();

console.log('encode : ', encode);
console.log('encode2: ', encode2);

return { name, symbol, balance, balance2 };
}

async function main() {
const token = await getTokenInfo(tokenContract);
console.log(token);
}

main(console.log).catch(console.error);