Walk backward through Arweave transaction chunks by absolute offset

The transaction offset endpoint returns an absolute end position and a size. The chunk endpoint uses weave offsets, so a transaction-relative position points somewhere else.

Subtract the decoded chunk size

Start at the returned end offset and fetch the containing chunk. In the example it decodes to 133,120 bytes. Subtract that count from both remaining size and the current absolute offset, then fetch the preceding chunk. Using the character count of its Base64URL representation would move the cursor too far.

absolute end offset = 900000
transaction size = 266240
last chunk size = 133120
preceding query offset = 766880

Reassemble in forward order

Reverse the collected chunk order and validate the transaction's size and data root. Keep absolute offsets as exact integers throughout. A successful read of some nearby chunk demonstrates that the node serves bytes at that position, but only verification binds the assembled data to the target transaction.

Sources