Find it yourself with my preprocessed ASCII strings data
At https://github.com/cirosantilli/bitcoin-strings-with-txids I have uploaded a dump of all ASCII strings of length 20 or greater, including scripts to generate that data from a local copy of the blockchain by using https://github.com/alecalve/python-bitcoin-blockchain-parser
The main difference between my dump and https://bitcoinstrings.com/blk00003.txt is that since I parse the blockchain, I am dumping a bit more metadata, notably the transaction IDs.
So if you do:
git clone https://github.com/cirosantilli/bitcoin-strings-with-txids
cd bitcoin-strings-with-txids
git grep 'BEGIN TRIBUTE'
one of the very few hits will be:
data/out/0138.txt:2:---BEGIN TRIBUTE--- #./BitLen ...
and then when you open the corresponding file data/out/0138.txt#L2 you see:
tx 930a2114cdaa86e1fac46d15c74e81c09eee1d4150ff9d48e76cb0697d8e1d72
---BEGIN TRIBUTE--- #./BitLen ...
Unfortunately my dump does not do automatic newline splitting at the end of every ASCII payload, so this particular ASCII art does not show up correctly.
Before OP_RETURN
, payloads were always put into a 20 bytes long address, and this particular ASCII art was intended to have automatic newlines.
However, this prevents ASCII art with lines longer than 20 bytes, with explicit \n
added, and so I decided to not automatically add newlines as it allows seeing many more interesting ASCII arts correctly on average. I did an overview of the most interesting ASCII arts I've found on this blog post.
Manually obtaining and interpreting data from an online blockchain tracker API
Here's are links that still works as of 2021 and have full disassembled data:
based on this other answer.
The key contents are the outputs of the transaction:
"out":[
{
"spent":false,
"tx_index":0,
"type":0,
"addr":"1CqKQ2EqUscMkeYRFMmgepNGtfKynXzKW7",
"value":1000000,
"n":0,
"script":"76a91481ccb4ee682bc1da3bda70176b7ccc616a6ba9da88ac"
},
{
"spent":false,
"tx_index":0,
"type":0,
"addr":"157sXa7duStAvq3dPLWe7J449sgh47eHzw",
"value":1000000,
"n":1,
"script":"76a9142d2d2d424547494e20545249425554452d2d2d2088ac"
},
...
{
"spent":false,
"tx_index":0,
"type":0,
"addr":"157sXYpjvAyEJ6TdVFaVzmoETAQnHB6FGU",
"value":1000000,
"n":77,
"script":"76a9142d2d2d2d454e4420545249425554452d2d2d2d2088ac"
}
where:
echo 76a9142d2d2d424547494e20545249425554452d2d2d2088ac | xxd -r -p
echo 76a9142d2d2d2d454e4420545249425554452d2d2d2d2088ac | xxd -r -p
give:
v---BEGIN TRIBUTE---
v----END TRIBUTE----
which clarifies how the message is encoded in the script
entries of each output. They are not therefore actually contiguous in the stream.
This is why if you download the blockchain and do:
strings -n20 .bitcoin/blocks/blk00003.dat
it works really well to see the data, as the newlines come from strings
itself. The strings
output can also be seen at: https://bitcoinstrings.com/blk00003.txt
Announcement speech by Dan Kaminsky at BlackHat 2011
Doesn't give the tx, but people who come here might want to see it: https://www.youtube.com/watch?v=hLIYq3ePaX4&t=502s