deth
Version:
Ethereum node focused on Developer Experience
63 lines (62 loc) • 2.59 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const primitives_1 = require("../primitives");
const bn_js_1 = __importDefault(require("bn.js"));
function getReceiptsAndResponses(block, transactions, results) {
const blockHash = primitives_1.bufferToHash(block.hash());
const blockNumber = primitives_1.bufferToQuantity(block.header.number);
let cumulativeGasUsed = new bn_js_1.default(0);
const responses = [];
const receipts = [];
for (let i = 0; i < transactions.length; i++) {
const tx = transactions[i];
const result = results[i];
const hash = primitives_1.bufferToHash(tx.hash());
const from = primitives_1.bufferToAddress(tx.getSenderAddress());
const to = primitives_1.bufferToMaybeAddress(tx.to);
const created = primitives_1.bufferToMaybeAddress(result.createdAddress);
const gasUsed = new bn_js_1.default(result.gasUsed);
cumulativeGasUsed = cumulativeGasUsed.add(gasUsed);
const transactionIndex = primitives_1.numberToQuantity(i);
responses.push({
hash,
blockHash,
blockNumber,
transactionIndex,
from,
gasPrice: primitives_1.bufferToQuantity(tx.gasPrice),
gas: primitives_1.bufferToQuantity(tx.gasLimit),
to,
value: primitives_1.bufferToQuantity(tx.value),
nonce: primitives_1.bufferToQuantity(tx.nonce),
input: primitives_1.bufferToHexData(tx.data),
r: primitives_1.bufferToQuantity(tx.r),
s: primitives_1.bufferToQuantity(tx.s),
v: primitives_1.bufferToQuantity(tx.v),
});
// result.execResult.logs // TODO: correct format
const logs = [];
receipts.push({
blockHash,
blockNumber,
cumulativeGasUsed: primitives_1.bnToQuantity(cumulativeGasUsed),
gasUsed: primitives_1.bnToQuantity(gasUsed),
logs,
transactionHash: hash,
transactionIndex,
contractAddress: created,
from,
to,
logsBloom: primitives_1.bufferToHexData(result.bloom.bitvector),
status: primitives_1.numberToQuantity(result.execResult.exceptionError ? 0 : 1),
});
}
return {
receipts,
responses,
};
}
exports.getReceiptsAndResponses = getReceiptsAndResponses;