add/fix eth_getTransactionByBlockHashAndIndex and eth_getTransactionByBlockNumberAndIndex

pull/5370/head
Iuri Matias 6 years ago
parent ae74f03b9d
commit 0afc54d45c
  1. 12
      remix-simulator/README.md
  2. 98
      remix-simulator/src/methods/transactions.js

@ -28,12 +28,12 @@ Implemented:
* [_] eth_sendRawTransaction * [_] eth_sendRawTransaction
* [X] eth_call * [X] eth_call
* [~] eth_estimateGas * [~] eth_estimateGas
* [~] eth_getBlockByHash * [V] eth_getBlockByHash
* [~] eth_getBlockByNumber * [V] eth_getBlockByNumber
* [~] eth_getTransactionByHash * [V] eth_getTransactionByHash
* [_] eth_getTransactionByBlockHashAndIndex * [V] eth_getTransactionByBlockHashAndIndex
* [_] eth_getTransactionByBlockNumberAndIndex * [V] eth_getTransactionByBlockNumberAndIndex
* [~] eth_getTransactionReceipt * [V] eth_getTransactionReceipt
* [_] eth_getUncleByBlockHashAndIndex * [_] eth_getUncleByBlockHashAndIndex
* [_] eth_getUncleByBlockNumberAndIndex * [_] eth_getUncleByBlockNumberAndIndex
* [X] eth_getCompilers (DEPRECATED) * [X] eth_getCompilers (DEPRECATED)

@ -29,7 +29,9 @@ Transactions.prototype.methods = function () {
eth_call: this.eth_call.bind(this), eth_call: this.eth_call.bind(this),
eth_estimateGas: this.eth_estimateGas.bind(this), eth_estimateGas: this.eth_estimateGas.bind(this),
eth_getTransactionCount: this.eth_getTransactionCount.bind(this), eth_getTransactionCount: this.eth_getTransactionCount.bind(this),
eth_getTransactionByHash: this.eth_getTransactionByHash.bind(this) eth_getTransactionByHash: this.eth_getTransactionByHash.bind(this),
eth_getTransactionByBlockHashAndIndex: this.eth_getTransactionByBlockHashAndIndex.bind(this),
eth_getTransactionByBlockNumberAndIndex: this.eth_getTransactionByBlockNumberAndIndex.bind(this)
} }
} }
@ -153,4 +155,96 @@ Transactions.prototype.eth_getTransactionByHash = function (payload, cb) {
}) })
} }
module.exports = Transactions Transactions.prototype.eth_getTransactionByBlockHashAndIndex = function (payload, cb) {
console.dir("== eth_getTransactionByHash")
console.dir(payload.params)
// const address = payload.params[0]
const txIndex = payload.params[1]
var txBlock = executionContext.blocks[payload.params[0]]
const txHash = "0x" + txBlock.transactions[web3.utils.toDecimal(txIndex)].hash().toString('hex')
executionContext.web3().eth.getTransactionReceipt(txHash, (error, receipt) => {
if (error) {
return cb(error)
}
// executionContext.web3().eth.getBlock(receipt.hash).then((block) => {
let r = {
'blockHash': "0x" + txBlock.hash().toString('hex'),
'blockNumber': "0x" + txBlock.header.number.toString('hex'),
'from': receipt.from,
'gas': web3.utils.toHex(receipt.gas),
// 'gasPrice': '2000000000000', // 0x123
"gasPrice": "0x4a817c800", // 20000000000
'hash': receipt.transactionHash,
'input': receipt.input,
// "nonce": 2, // 0x15
// "transactionIndex": 0,
"value": receipt.value
// "value":"0xf3dbb76162000" // 4290000000000000
// "v": "0x25", // 37
// "r": "0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
// "s": "0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
}
if (receipt.to) {
r.to = receipt.to
}
if (r.value === "0x") {
r.value = "0x0"
}
cb(null, r)
// })
})
}
Transactions.prototype.eth_getTransactionByBlockNumberAndIndex = function (payload, cb) {
console.dir("== eth_getTransactionByHash")
console.dir(payload.params)
// const address = payload.params[0]
const txIndex = payload.params[1]
var txBlock = executionContext.blocks[payload.params[0]]
const txHash = "0x" + txBlock.transactions[web3.utils.toDecimal(txIndex)].hash().toString('hex')
executionContext.web3().eth.getTransactionReceipt(txHash, (error, receipt) => {
if (error) {
return cb(error)
}
// executionContext.web3().eth.getBlock(receipt.hash).then((block) => {
let r = {
'blockHash': "0x" + txBlock.hash().toString('hex'),
'blockNumber': "0x" + txBlock.header.number.toString('hex'),
'from': receipt.from,
'gas': web3.utils.toHex(receipt.gas),
// 'gasPrice': '2000000000000', // 0x123
"gasPrice": "0x4a817c800", // 20000000000
'hash': receipt.transactionHash,
'input': receipt.input,
// "nonce": 2, // 0x15
// "transactionIndex": 0,
"value": receipt.value
// "value":"0xf3dbb76162000" // 4290000000000000
// "v": "0x25", // 37
// "r": "0x1b5e176d927f8e9ab405058b2d2457392da3e20f328b16ddabcebc33eaac5fea",
// "s": "0x4ba69724e8f69de52f0125ad8b3c5c2cef33019bac3249e2c0a2192766d1721c"
}
if (receipt.to) {
r.to = receipt.to
}
if (r.value === "0x") {
r.value = "0x0"
}
cb(null, r)
// })
})
}
module.exports = Transactions
Loading…
Cancel
Save