So I noticed that the first taproot block, block 709632, has a bunch of strange-looking OP_RETURN values.
I compiled all of them in order:
gm taproot 🥕 ;4Fdzw1k=zzzzzzzzzzzzzzzz; ,zzzzzq;. 1zzzz, ,zzzzq ,qzzzzzz1, 1zzzz, ,;qzzzzz1qq, ,;1zzzzzqqq, ,zzzzq .;qzzzzzq:1zzzz, ,zzzzq:1zzzzzq;. 1zzzz, ,zzzzq .;qzzzzzzz, ,vtv3f5aKY0jGQglP9a1AGw==. ;BynQtpeUyWTXKGTrGhdV2Q==; ;tVMd3L1CKM4wFmyxEEEUV2bY; ,zzzzzzzzzzzzzzzzzzzzzzzz, .:1zzzzzzzzz. ,zzzzzzzzq, 1zzzz, .:qqzzzzqqq, ,zzzzq ,qzzzzzzzzzz, ,;1zzzzzqqq, ,zzzzzzzzzz1: 1zzzz, ,zzzzzzzzzzzzzzzzzzzzzzzz, ZENON NETWORK Taproot FTW! @bitbug42 omniN Bitzlato CARO here Bitzlato Bitzlato Glad be alive to see taproot active mining with @slush_pool @pajaroalvarogm LFG! GOD BLESS TEXAS GOD BLESS TEXAS GOD BLESS TEXAS GOD BLESS TEXAS TAPROOT LFG! CAFE BITCOIN IS LIFE GOD BLESS TEXAS All hail the king! JLW was here RABBINSTEIN WAS HERE WATCHIN TAPROOT ACTIVATE 👊🍻 GOD BLESS TEXAS Taproot is Awesome! --Neski Government backdoor is activated! @averyhodl outchea tappin this root Taproot is Awesome! --Neski B.tc/21days Tap dat root! <ShadowsLewis saw the taproot happen!>
So that first line is obviously marvelous, but after that is a block that looks a lot like ASCII art, but I think the order is messed up.
Anyone got the patience to try and scramble them into order?
This was the Rust script I used to get the OP_RETURNs:
//! first get the block in hex using //! $ bitcoin-cli getblock $(bitcoin-cli getblockhash 709632) false > taproot.hex //! //! Then run this program with //! $ cargo run taproot.hex use bitcoin::Block; use bitcoin::blockdata::script; use bitcoin::hashes::hex::FromHex; fn main() { let filename = std::env::args().skip(1).next().unwrap(); let file = std::fs::read(filename).unwrap(); let hex = std::str::from_utf8(&file).unwrap().trim(); let bytes = Vec::<u8>::from_hex(&hex).unwrap(); let block = bitcoin::consensus::deserialize::<Block>(&bytes).unwrap(); block.txdata.iter().skip(1) // skip coinbase .map(|tx| tx.output.iter()).flatten() // all outputs .map(|output| &output.script_pubkey) // all scripts .filter(|s| s.is_op_return()) // the op_return scripts .map(|s| s.instructions().filter_map(|i| i.ok())).flatten() // the script instructions .for_each(|i| { if let script::Instruction::PushBytes(ref push) = i { // the pushes if let Ok(text) = std::str::from_utf8(push) { // those that are ascii println!("{}", text); } } }); }
[link] [comments]
No comments:
Post a Comment