@@ -57,22 +57,6 @@ ExecutionWitness.useDefaultSerializationIn JrpcConv
5757# if opts.disableState.isTrue : result.incl TracerFlags.DisableState
5858# if opts.disableStateDiff.isTrue: result.incl TracerFlags.DisableStateDiff
5959
60- proc headerFromTag (chain: ForkedChainRef , blockTag: BlockTag ): Result [Header , string ] =
61- if blockTag.kind == bidAlias:
62- let tag = blockTag.alias.toLowerAscii
63- case tag
64- of " latest" :
65- return ok (chain.latestHeader)
66- of " finalized" :
67- return ok (chain.finalizedHeader)
68- of " safe" :
69- return ok (chain.safeHeader)
70- else :
71- return err (" Unsupported block tag " & tag)
72- else :
73- let blockNum = base.BlockNumber blockTag.number
74- return chain.headerByNumber (blockNum)
75-
7660proc getExecutionWitness * (chain: ForkedChainRef , blockHash: Hash32 ): Result [ExecutionWitness , string ] =
7761 let txFrame = chain.txFrame (blockHash).txFrameBegin ()
7862 defer :
@@ -183,43 +167,45 @@ proc setupDebugRpc*(com: CommonRef, txPool: TxPoolRef, server: RpcServer) =
183167 # header = chainDB.headerFromTag(quantityTag)
184168 # chainDB.setHead(header)
185169
186- # server.rpc("debug_getRawBlock") do(quantityTag: BlockTag) -> seq[byte]:
187- # ## Returns an RLP-encoded block.
188- # var
189- # header = chainDB.headerFromTag(quantityTag)
190- # blockHash = chainDB.getBlockHash(header.number)
191- # body = chainDB.getBlockBody(blockHash)
170+ server.rpc (" debug_getRawBlock" ) do (blockTag: BlockTag ) -> seq [byte ]:
171+ # # Returns an RLP-encoded block.
172+ let blockFromTag = chain.blockFromTag (blockTag).valueOr:
173+ raise newException (ValueError , error)
192174
193- # rlp.encode(EthBlock.init(move(header), move(body)) )
175+ rlp.encode (blockFromTag )
194176
195- # server.rpc("debug_getRawHeader") do(quantityTag: BlockTag) -> seq[byte]:
196- # ## Returns an RLP-encoded header.
197- # let header = chainDB.headerFromTag(quantityTag)
198- # rlp.encode(header)
177+ server.rpc (" debug_getRawHeader" ) do (blockTag: BlockTag ) -> seq [byte ]:
178+ # # Returns an RLP-encoded header.
179+ let header = chain.headerFromTag (blockTag).valueOr:
180+ raise newException (ValueError , error)
181+ rlp.encode (header)
182+
183+ server.rpc (" debug_getRawReceipts" ) do (blockTag: BlockTag ) -> seq [seq [byte ]]:
184+ # # Returns an array of EIP-2718 binary-encoded receipts.
185+ let header = chain.headerFromTag (blockTag).valueOr:
186+ raise newException (ValueError , error)
187+ var res: seq [seq [byte ]]
188+ for receipt in chain.baseTxFrame.getReceipts (header.receiptsRoot):
189+ res.add rlp.encode (receipt)
199190
200- # server.rpc("debug_getRawReceipts") do(quantityTag: BlockTag) -> seq[seq[byte]]:
201- # ## Returns an array of EIP-2718 binary-encoded receipts.
202- # let header = chainDB.headerFromTag(quantityTag)
203- # for receipt in chainDB.getReceipts(header.receiptsRoot):
204- # result.add rlp.encode(receipt)
191+ res
205192
206- # server.rpc("debug_getRawTransaction") do(data: Hash32) -> seq[byte]:
207- # ## Returns an EIP-2718 binary-encoded transaction.
208- # let txHash = data
209- # let res = txPool.getItem(txHash)
210- # if res.isOk:
211- # return rlp.encode(res.get().tx)
193+ server.rpc (" debug_getRawTransaction" ) do (txHash: Hash32 ) -> seq [byte ]:
194+ # # Returns an EIP-2718 binary-encoded transaction.
195+ let res = txPool.getItem (txHash)
196+ if res.isOk:
197+ return rlp.encode (res.get ().tx)
212198
213- # let txDetails = chainDB.getTransactionKey(txHash)
214- # if txDetails.index < 0:
215- # raise newException(ValueError, "Transaction not found " & data.toHex)
199+ let
200+ (blockHash, txId) = chain.txDetailsByTxHash (txHash).valueOr:
201+ raise newException (ValueError , " Transaction not found" )
202+ blk = chain.blockByHash (blockHash).valueOr:
203+ raise newException (ValueError , " Block not found" )
216204
217- # let header = chainDB.getBlockHeader(txDetails.blockNumber)
218- # var tx: Transaction
219- # if chainDB.getTransaction(header.txRoot, txDetails.index, tx):
220- # return rlp.encode(tx)
205+ if blk.transactions.len <= int (txId):
206+ raise newException (ValueError , " Transaction not found" )
221207
222- # raise newException(ValueError, "Transaction not found " & data.toHex )
208+ rlp. encode (blk.transactions[txId] )
223209
224210 server.rpc (" debug_executionWitness" ) do (quantityTag: BlockTag ) -> ExecutionWitness :
225211 # # Returns an execution witness for the given block number.
0 commit comments