[{"data":1,"prerenderedAt":158},["ShallowReactive",2],{"\u002Fblog\u002F2018-06-18-storing-declarations-on-bitcoin":3},{"id":4,"title":5,"body":6,"category":147,"date":148,"description":149,"extension":150,"meta":151,"navigation":152,"path":153,"seo":154,"stem":155,"thumbnail":156,"__hash__":157},"blogs\u002Fblog\u002F2018-06-18-storing-declarations-on-bitcoin.md","Storing a Minister's Declarations on Bitcoin",{"type":7,"value":8,"toc":139},"minimark",[9,16,23,26,29,34,46,52,63,67,70,73,83,87,90,96,106,116,123,127,130,133],[10,11,12],"p",{},[13,14,15],"em",{},"An archival field note — documenting work from that era, written up for the record later.",[10,17,18,19,22],{},"A public statement is a fragile thing. Someone says something on the record, and then the record moves. A press release gets quietly edited. A speech transcript loses a paragraph. A quote gets walked back and the walk-back gets more coverage than the quote. The words existed, but proving ",[13,20,21],{},"when"," they existed, and that they haven't changed since, turns out to be surprisingly hard.",[10,24,25],{},"So we built a small demonstration to prove a point. Our team took a minister's declarations and wrote them into the Bitcoin blockchain. Not a private ledger, not a permissioned chain — the actual public BTC chain that anyone on earth can read. The idea was simple: once a statement is in there, it is timestamped, it cannot be silently changed, and anyone can verify it themselves without asking us for permission.",[10,27,28],{},"I want to be precise about what this was. It was a demonstration. Nobody adopted it as an official system, nothing was mandated, and it wasn't a national registry. We were proving a capability, not launching a product. But the capability is real, and I still think it matters.",[30,31,33],"h2",{"id":32},"the-tool-op_return","The tool: OP_RETURN",[10,35,36,37,41,42,45],{},"Bitcoin has an opcode called ",[38,39,40],"code",{},"OP_RETURN",". It creates a ",[13,43,44],{},"provably unspendable"," output — one that lets you attach a small piece of arbitrary data to a transaction. Because the output is provably unspendable, full nodes don't have to keep it in the UTXO set (the working memory of who-owns-what), which is exactly why the network tolerates people using it to carry data instead of coins.",[10,47,48,49,51],{},"You put your bytes in the ",[38,50,40],{}," output, you pay the transaction fee, the transaction gets mined into a block, and now your data lives in the chain's history forever alongside everyone else's.",[10,53,54,55,57,58,62],{},"The catch — and this is the whole engineering story — is the size limit. By default, nodes only relay ",[38,56,40],{}," outputs up to ",[59,60,61],"strong",{},"80 bytes"," of data. That limit wasn't always there: early on it was 40 bytes, and it was raised to 80 bytes in Bitcoin Core 0.11 (2015). Eighty bytes is not a lot. It's a sentence fragment. You are not fitting a minister's full remarks into a single output.",[30,64,66],{"id":65},"chunking-the-text","Chunking the text",[10,68,69],{},"So how do you store something longer than 80 bytes? You have two honest options.",[10,71,72],{},"The clean one: hash the full text, store only the hash on-chain, and keep the full text somewhere off-chain. The chain then proves the text existed and hasn't changed, but you have to hold the original yourself for anyone to read the actual words.",[10,74,75,76,79,80,82],{},"The one we did for the demonstration: ",[59,77,78],{},"chunk the text into the open data itself."," We split the declaration into 80-byte pieces and wrote each piece into its own ",[38,81,40],{}," output across a sequence of transactions, so the words themselves — not just a fingerprint of them — sit in the public chain. It was deliberately clunky. Chunking plain text across many outputs is not elegant, and it costs a fee per transaction. But it meant anyone could open a block explorer, read the raw data straight off the chain, and reassemble the statement without trusting our copy of it. That was the point we wanted to make visible.",[30,84,86],{"id":85},"what-bitcoin-actually-gives-you","What Bitcoin actually gives you",[10,88,89],{},"It helps to be clear-eyed about what you're buying here, because it's easy to oversell.",[10,91,92,95],{},[59,93,94],{},"Immutability."," Once the transaction is mined and buried under enough confirmations, rewriting it means rewriting proof-of-work history — economically absurd on Bitcoin. The words are stuck.",[10,97,98,101,102,105],{},[59,99,100],{},"A timestamp."," The block your data lands in has a block time. That gives you a credible \"this existed no later than ",[13,103,104],{},"this"," moment\" — a notarization anyone can check.",[10,107,108,111,112,115],{},[59,109,110],{},"Public verifiability."," No API key, no login, no asking us. Anyone with a block explorer can read it. That's the property that makes it worth doing on a ",[13,113,114],{},"public"," chain instead of a database we control.",[10,117,118,119,122],{},"What it is ",[13,120,121],{},"not"," is a database. You don't query it, you don't index it well, you don't update a record. Bitcoin here is a notarization layer — an attestation that a specific string of bytes existed at a specific time and has not changed. Nothing more. If you need more, you're using the wrong tool.",[30,124,126],{"id":125},"why-it-still-matters","Why it still matters",[10,128,129],{},"Back in 2018 there wasn't a tidy name for this. The whole industry vocabulary of \"on-chain attestations\" and \"verifiable credentials\" that came later hadn't crystallized yet. We were just a small team in Malaysia proving that the immutability and timestamping properties I keep talking about could be pointed at something real — a public statement, made by a public figure, pinned to a public chain.",[10,131,132],{},"The honest value of the exercise was narrow and specific: a declaration can be quietly edited or denied later, but a statement written into Bitcoin provably existed at a point in time and can never be silently changed. You don't have to trust the person who published it. You don't have to trust us. You check the chain.",[10,134,135,136,138],{},"We didn't invent the technique — ",[38,137,40],{}," was already there, and people were already stuffing data into it. What we did was aim it at a use case that actually needed the trust properties Bitcoin provides, and show it working end to end. Being early to that idea is the thing I'm proud of. Not a mandate, not an official system — a demonstration that the record can be made to hold still.",{"title":140,"searchDepth":141,"depth":141,"links":142},"",2,[143,144,145,146],{"id":32,"depth":141,"text":33},{"id":65,"depth":141,"text":66},{"id":85,"depth":141,"text":86},{"id":125,"depth":141,"text":126},"Blockchain","2018-06-18","A field note on a demonstration we built — writing public statements into the Bitcoin chain via OP_RETURN so they are immutable, timestamped, and verifiable by anyone.","md",{},true,"\u002Fblog\u002F2018-06-18-storing-declarations-on-bitcoin",{"title":5,"description":149},"blog\u002F2018-06-18-storing-declarations-on-bitcoin","\u002Fimg\u002Fblog\u002Fstoring-declarations-on-bitcoin-cover.svg","CzOgAb3_YO38-soKjvbpWTYZ_ASChFJTI7Ww_-ioXhU",1783650495609]