Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return null;
}
const { method, params } = req;
if (method === 'eth_gasPrice') {
const cost = new BigNumber(result, 16);
return {
wei: cost.toString(10),
eth: cost.div(1e18).toString(10),
original: cost.div(1e18).toString(16),
};
}
if (method === 'eth_sendTransaction') return { tx: result };
if (method === 'eth_call') {
const contract = store.state.contracts[req.contractAddress];
if (contract) {
const abis = AbiDecoder.getABIs();
const methodSig = req.params[0].data.slice(0, 10);
const abiMethod = _.find(abis, { signature: methodSig });
if (abiMethod) {
const decodedResult = abiCoder.decodeParameters(abiMethod.outputs, result);
return decodedResult;
}
}
}
if (method === 'eth_getTransactionReceipt') {
if (result && result.logs) {
console.log('HAS RESULT!');
const annotatedResult = _.cloneDeep(result);
annotatedResult.decodedLogs = AbiDecoder.decodeLogs(result.logs);
return annotatedResult;
}
}
data.annotatedParams = params[0];
} else if (['eth_call', 'eth_sendTransaction'].includes(method)) {
const contractAddress = params[0].to;
const methodSig = params[0].data.slice(0, 10);
const gasPrice = (params[0].gasPrice || '').slice(0, 10);
data.contractAddress = contractAddress;
const contract = store.state.contracts[contractAddress];
let decodedInput;
if (contract) {
decodedInput = AbiDecoder.decodeMethod(methodSig);
data.callName = `${decodedInput.name}(${decodedInput.params.map((p) => p.type).join(',')})`;
data.annotatedParams = decodedInput.params.length ? decodedInput.params : null;
if (data.annotatedParams) {
const abis = AbiDecoder.getABIs();
const abiMethod = _.find(abis, { signature: methodSig });
const decoded = abiCoder.decodeParameters(abiMethod.outputs, params[0].data.slice(10));
_.each(decoded, (val, key) => {
if (data.annotatedParams[key]) {
data.annotatedParams[key].value = val;
}
});
}
} else {
data.callName = methodSig;
data.annotatedParams = methodSig;
}
} else {
console.log(`UNKNOWN METHOD -- ${method}`);
}
}
eth_call: (args, results, _, contracts) => {
console.log('eth_call in parser 2');
let method; let params;
console.log({ args });
const contractAddress = args[1][0].to;
console.log({ contractAddress });
console.log({ contracts });
console.log(contracts[contractAddress]);
if (contracts[contractAddress]) {
abiDecoder.addABI(contracts[contractAddress].abi);
const abis = abiDecoder.getABIs();
console.log({ abis });
const sig = args[1][0].data.slice(0, 10);
console.log({ sig });
method = abis.find((m) => m.signature === args[1][0].data.slice(0, 10));
}
console.log({ method });
if (method) {
console.log('method', method);
console.log(abiCoder);
params = abiCoder.decodeParameters(method.outputs, results.join(''));
console.log(results);
}
console.log({ method }, { params });
return {
params,