Raw TX Reconstruction

The newTxs and pendingTxs streams provide transaction events. Traders who would like to reconstruct raw transactions bytes may use the following code as a reference.

# Type 0 legacy transaction:
import blxr_rlp
from bxcommon.messages.eth.serializers.transaction import Transaction
from bxcommon.utils import convert

tx_contents = {
  'nonce': '0x21',
  'gasPrice': '0x46c7cfe5b3',
  'gas': '0xc62d',
  'to': '0xdac17f958d2ee523a2206206994597c13d831ec7',
  'value': '0x0',
  'input': '0xa9059cbb000000000000000000000000a1ff1a11cac7c4f183c6fcb9554a7249fca271d5000000000000000000000000000000000000000000000000000000033e87f780',
  'v': '0x25',
  'r': '0xc79b76b082ab0a24c98119097e87a4dad6e1dceb6b0c2c65d9267beb6da1cbeb',
  's': '0x433e77847d7e4f53805dedbc7f9954464f7b44a09fca9cbf75209b1bc14192bf',
}

transaction = Transaction.from_json_with_validation(tx_contents)
raw_transaction = convert.bytes_to_hex(blxr_rlp.encode(transaction))
print(raw_transaction)
# f8a921...4192bf


"""

# Type 2 dynamic fee transaction:
import blxr_rlp
from bxcommon.messages.eth.serializers.transaction import DynamicFeeTransaction
from bxcommon.utils import convert

tx_contents = {
  'nonce': '0x1adcf8',
  'gasPrice': None,
  'maxFeePerGas': '0x746a528800',
  'maxPriorityFeePerGas': '0x77359400',
  'gas': '0x5208',
  'to': '0x4c20d6c790dcd8474df3ec22dd199ff03e0fcd7d',
  'value': '0x9928e2912b8a000',
  'input': '0x',
  'v': '0x0',
  'r': '0x5683c39ded7133bfe5caf572644e3822c761c894347cd5323cf605fa28f3c752',
  's': '0x4c8a80b282b5872e233f582ece775830a10556b96c18513f0d5b37d1171d60a3',
  'chainId': '0x1',
  'accessList': [],
  'type': '0x2'
}

transaction = DynamicFeeTransaction.from_json_with_validation(tx_contents)
raw_transaction = blxr_rlp.decode_lazy(blxr_rlp.encode(transaction)).hex()
print(raw_transaction)
# 02f876...1d60a3

"""

Last updated