One of the sillier arguments that has come up in conversation around BIP 110 is that "contiguous" data is somehow worse than data that is spread across several different parts of a transaction (or across several different transactions for that matter). Some people have argued:
Here then is a person who has embedded a contiguous chunk of data representing an image without using many of the elements targeted by BIP 110:
I stored over 66kB contiguous image file in the Bitcoin time chain without using OP_RETURN, Taproot or following policy rules and, to highlight the point, the image file is itself an entire transaction. This document also explains how anyone can verify this claim themselves using their own node.
Here’s how you can verify it yourself on your own node using command line:Here’s how you can verify it yourself on your own node using command line:
bitcoin-cli getrawtransaction b8cc570ef453508b6c6a1758bc591c276abdbe2b88881ae487ba4e858bd8d4be | xxd -r -p > luke.tiffIf you use your node on the desktop you can now directly open luke.tiff file in your home directory.
I believe this technique is still made invalid by BIP 110 (it relies on currently undefined version numbers, which are specifically made invalid by BIP 110 because they could contribute to allowing contiguous data like this).
I could just make a different one that simply uses more inputs/pushes/witness elements. Just as I finished making this one I even came up with a hack that works around the supposed inherent limit of the image size. Thus if I wanted to put another image into the chain and forced to change the code anyway I could store a bigger image.
How difficult is it to do?How difficult is it to do?
The basic version of this that just stored a contiguous image while still requiring seeking in the transaction took 1 day to code. The more interesting version that makes the entire transaction a valid image file took two more days. Notably, this didn’t require crazy cryptographic, computer science or image processing skills. It was all just stupid fiddling with some constants and slightly modifying a readily available Open Source image library.
The only area I had an advantage in is knowing Bitcoin really well. But even there, 99% of it was just encoding rules, which are easy - literally the first programming-related thing I learned about Bitcoin. The rest was just the consensus rules knowing what data belongs where.
Any programmer capable of understanding basics of Bitcoin should be able to do this, even if potentially a bit more slowly. It might be even the case that hand-assembling the transaction would’ve been easier.
I strongly agree with this:
If a single person can significantly hurt Bitcoin then Bitcoin is already doomed and it better die sooner than later so we don’t waste time with it. Sadly, your node will have to process that garbage but at least not store it forever, unlike the unspendable outputs created by the people who were incentivized to make them by the annoying policy rules.
And also this:
First, spammers are not pussies that care about your signal. Second, you think you’re sending “you are not welcome” signal. The signal I’m perceiving is “Here’s someone claiming you can’t put contiguous data on the chain, would be real fun challenge to prove them wrong and make them look like clowns by doing exactly what they claim is impossible.”
Things like the block limit and the fee market are the best way to mitigate spam in Bitcoin. Trying to fine tune block validation rules to surgically remove bits and pieces of Bitcoin script to make it more difficult for people to do things we don't like with transactions is a fools errand.
I can see why you strongly agree with this, @Scoresby, you're retarded.
The argument presents a false dilemma: either Bitcoin is invincible or it deserves to die. But resilience isn't immunity. A system can survive something and still be degraded by it. The author even concedes this by admitting nodes must process the "garbage."
The "deserve to die" framing is a thought-terminator designed to make any engineering concern sound like existential panic. And the pivot to unspendable outputs is a red herring. The real concern isn't that one person kills Bitcoin; it's that normalizing the behavior creates a cumulative cost that this argument refuses to evaluate.
Luckily, BIP 110 is such a bad idea, even a retard like me can tell.
The argument is not "Bitcoin is invincible or it deserves to die." The argument is that the things BIP 110 supporters are hyperventilating about are trivialities of no real consequence.
There is nothing that is "official" or "normalized" in Bitcoin, there is just what is possible. Pretending that you have some control over how Bitcoin is used is laughable.
"hyperventilating about are trivialities" is exactly right. My god, have I never seen a more ridiculous collection of poor souls
I'm not advocating for BIP110. Do you have a better solution?
A retarded dismissal of real engineering concerns.
#1441937
#375096
Even a beginner like me can see it breaks more than it fixes
this data is bad, this data is good? Seriously?
What else are they going to deem allowed on Bitcoin ?
Retards
maliciously crafted non-Segwit transactions that are very expensive to validate might be an even better example of a dangerous transaction...and yet you don't see the BIP 54 promoters running around like maniacs trying to strong-arm everyone into a rushed fork. Perhaps BIP 110 could learn something from their approach.
I don't believe ordinals are a real engineering problem for Bitcoin, nor do I believe a solution is warranted. i've been using bitcoin all this time perfectly fine.
Unless you wanna do a nice lil 3 year rollback, we have to solve that issue outside of BIP-110. BIP-110 doesn't address it.
I’d love to see the picture! ~lol
screenshot of it:
There's also some text embedded but it instructs to not paste it because people should learn to do that themselves 😂
there is something a little childish about using an image like that, which is probably also fake.
I think that's an understatement. lol
ÿØÿà JFIF ÿá ÌExif II* z ‚ ( 1 Š 2 ˜ = S ¬ i‡ ² GIMP 2.10.34 2026:02:21 15:30:38 ÿáÏhttp://ns.adobe.com/xap/1.0/ <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:GIMP="http://www.gimp.org/xmp/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmpMM:DocumentID="gimp:docid:gimp:c9f83de2-28c2-4aad-9e29-f68e46a8e275" xmpMM:InstanceID="xmp.iid:4d0ab5b6-1d6f-4453-a954-8a76851a2e70" xmpMM:OriginalDocumentID="xmp.did:c72e4217-4a43-45d1-b7cc-0b3bb4d2d7fc" dc:Format="image/jpeg" GIMP:API="2.0" GIMP:Platform="Linux" GIMP:TimeStamp="1771684245717513" GIMP:Version="2.10.34" xmp:CreatorTool="GIMP 2.10" xmp:MetadataDate="2026:02:21T15:30:38+01:00" xmp:ModifyDate="2026:02:21T15:30:38+01:00"> <xmpMM:History> <rdf:Seq> <rdf:li stEvt:action="saved" stEvt:changed="/" stEvt:instanceID="xmp.iid:411acb9b-96f7-4738-aa64-7e8a9160632b" stEvt:softwareAgent="Gimp 2.10 (Linux)" stEvt:when="2026-02-21T15:30:45+01:00"/> </rdf:Seq> </xmpMM:History> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="w"?>ÿâ°ICC_PROFILE lcms@ mntrRGB XYZ ê 2acspAPPL öÖ Ó-lcms desc @cprt ` 6wtpt ˜ chad ¬ ,rXYZ Ø bXYZ ì gXYZ rTRC gTRC bTRC chrm 4 $dmnd X $dmdd | $mluc enUS $ G I M P b u i l t - i n s R G Bmluc enUS P u b l i c D o m a i n XYZ öÖ Ó-sf32 B Þÿÿó% “ ýÿÿû¡ÿÿý¢ Ü ÀnXYZ o 8õ XYZ $Ÿ „ ¶ÄXYZ b— ·‡ Ùpara ff ò§ Y Ð [chrm £× T| LÍ ™š &g \mluc enUS G I M Pmluc enUS s R G BÿÛ C ÿÛ Cÿ ‚ ‚ ÿÄ ÿÄ ÿÚ ¾àÔ hÀTÑÙkß>é4V&UŠ’FåU±@€È5 PNFµ-ŸzÓ¾ÊÃ9b–¡ZÞµpÕŠ¾å2‡Ô „oÿ =œöùŒÌVdã£ö¤oi1¯R¶ÝÜ#— j`„4RŽ.䘣¯ $YbŠ5ÕØ¨î&kËh]-#43ý Ô5DZdÎЮ¬YÅKZoO#µj¢Êj'¯‰©†ãI.U‡íã{C ˆj>‘²ô«û7Vy×Ö›ÓµG4R*þzFJŒKsçVÖAˆn 8†¡ç2Ñß3ÛE͘qm6iöMiŠêI>gÊ~§Ä:ùF°`9†¡åA¥¡¡L¼ß£µNÄ•ðÝitµ‰¨±—Ÿ+M ŠÀ.p’ƒc1UÜ q @¸ÍuSr~„Ù×{ƒ1 nØñèI¾³œ³‚“Õ™t´2ýÎ7 ˆJù¥¥9ž§×-™ ôÔî4†c¤’¿WŸû<ʲ̀ \è8£{EZãhÙÿ =Ó6Éõ)O²áiÝã—Nƺ>Hìàœ8õ ß¡_VÊÜ´BIÄ÷;~ȹ^:®VP»1¬ÊðÚ°É‘Òñëiê{ÅØ ùèÒXdàøË’Fk9ÖÄtäÌ{]Žî>¤ ûèжÏAó¥ Üd ù'×D‰ÒTÃ×Ö-GûœÖfâzòŽ£¯JÕ„m`Ù¿_É)t |ˆk5¾•ÔO«Ìš6ð+¿ÇnIJ7:¹ìÕnOÍäª|.à —ÍÖ´r¢=¡r;ÑL• žx󚋆¥oôÙ6r»lõ]é€ .½ ¸_;QÒ¶IFŒjÈBÛÉeq!ôAˆ’*57 € ÿÄ + 1 !"#$256ÿÚ ^ý¾çcæL¿Øë5š¢¿#‘aü†4³õ®O§»ŒC†2&;â½ú?ž8³‘ùvh/6-ÖË}³0XdŠ]ÕÛ-ËÅœ²5FlÁ¾+ߤ™È-‘Ô²ÄÉÔz‹úÿ rŽ4,Ú6X«ýa8¿¥®.%Äø/~’/ß2îòéÔÄBrS,s¯êqx3L¤2+n'®˜Pø¾Æ›¥²¬‡BÙ¢ºŸï‹ïù0W©h¤"飷ÚÀÏ _âØÉVgÔ±—L;³‹ XnbíÕ{ã²Eûü•j¦ÏX¾«uÿ bªFºYW8;,Ge]€ÖŸ×Ãêù²,N«ß—&6¼O$ݬ}`7$ó(ØO!k‚¸ºÕõx²À»¡OÜvçYä €n(þ£âìW¾I›0ï.Ÿs{YšLÕ¶‘Öf´k²0.â‰Ü°M»êGZ&½¦K–SQâu^ù&K÷›îªØ jùã¨#È‘69#ß®Ø0|sgU„ŒÉã¾j˜|2>ÉÕ{¹rG¦;¿5lÔèV$doOÉd5»¼”5Zn‘¯ƒš…L‘Wy¤ppz1ÇÛ¬ŽþO~O#ZÞmç“ fˆQslåR8ñKoys¯Ã¥’KFÒ&ô,4MƒYN è4mÆ'ÂêÔP¶ÈÝfª §—7m¨{8}Quâ’¼áeGŒm·ê§aE}ËTl Pçl6ƒ™•01"b|yÓ‘.¬öÕ–.—ÎsöµŽ€X¶•O²ÃîÖÏñ+^*D°mÑ·V!æ"ùâO¯%Îör>“£÷±£åðåÜOk´Ûæ…4„§Œâ¨sÀ_žÎ3àt<U\Ë ‚j²øòY¢§$ HDÆðY#û & æTxKo1èKÊfé¬ÃCMEoûQìP¡¢ìŸò8S|’(ÞÙk¡n#¯DT6¾Ï"áoù•¥é|‘ª•#ÝëöZÖ³¦?í57‘/ÓWã¿ïYÚ\n]Còˆ’=Ìs¤™–Oÿ —]ükÙþ¼jDäéŒÄí×ÿÄ 5 !1AQaqð "02‘¡±ÁáBRÑñ$3ÿÚ ?ô’Ú•LálçÒŽ ˜°éXŒ‘ Le704åJB€¾ŸfšC ÖäÚÓHdkÒ²Š¿o¢ ·…?‡RÓêÄ‹øñÒ•™+)"#Ù7Òô”$e h&w3Õ6ÔÞ¼Æöéz-À6üVX«xÖ±X$¾œÉ%.$Åþ”D:c†gÎ(+øÏÊ¿péòØ÷fÖî§A›cN,Ñpè~ôÖL ¯4’@0G;Ö? úw$\,ϰŠÀNUF¹¿ÚMÈšlÌ_JWN¤¨çK é¥fP)I½yåq®Ó$¡²xŸ‡ûì7å»<ûúDíz ÿ Ú2€¥[óN8'CýÇÚ”K€¦3kQÁú¨â¥ GŽêy¢ÊÈU Úi·œO÷ËÇJíU‚S÷a‡gõ¡“ûÀÍkm#¾•ØÌá˜%´ fÜù´ÊNa:Íë,¦žq†nꈾÀ˜ùV Þ'¬ny’‰ $GX™DÓ…A¶ÖE‹–ëµcØÃ!ÜNVÒ¯ukâàjmn¤áÚRs²¤¸8 ˆ·í!tp öŸêcYTú¤»S‡;jNÅ <ErmpMé¯Y@õÖ˜Kn/*ÛBÛ±ÊR ÿ •bÂ4Ïé0 æXNˆâ {«Ÿù”q@“Ì‘XLGgâ0ÿ Ç¥$FvV &.›ó§ì¶°ÊoÚ<â‰P?!·~µÚTÓ°8Ç÷COM R Åë²q©Åan@q6"n@ñµ9ïm¥©'/M<©QI‚¥mxGJBre* SÚ7ï×ëO© iÖÛ!D3&ñÒœijJUÿ šÑ•D ßåN»3eÁO ǺP”Þê:qïö8¸Ú†E‘{€tüšJÔ¸ž;¸ùVS˜^ÿ 9¿Ú¼ã‹¶[{Ûêo"ö ÊÐI@‰øÿ µë¬;iƱΠV@… S¸½>ç +Téì{<I1ý5ñô¦Î¼ %\hžå|`Sn„+×6„òî¤ã°i±ÍÈÓâŽ5§1 2Z¼æé±®Ør\s,&÷§>U3N|pò`]óKÊq×™£—PoHs, ¸i·R©dÑN6¥$;}i([ ªÑ7ùV5Ï8úï)ŸHjb’¨ ð4ÃÆÄj Ÿ5¥ÄS+ "se=wJoYÛ,Ò-*äÚ»E`aß¶Àm×ì)RTIãéLP3G_ ¬(!^lÛ0‰ŽøéDð˜¦ÔšÚ‚ÀÓ Ì„ñ)åzÏ2&Ã1Úö®ÞÅ®B°QƒÝyë¬R¦}#_ZáäçAf×éãÄS’R‘ù¤£*µ/0…™ Ænw¥vÔ©$$z³±ß_k‰V%Õ-FÃÝS>‘¨ç^:ÑÐÐ’* 4éB¥? ¦{@€-ëˆiÆKiP™˜ñÏÉõ‘×ɰï¥ïÒ›Ò¶=(RýÓIÔøãåüú_ÿÄ : !1AQ"aq 2‘¡±Áð0RÑ#3Bb²árñ’ÿÚ ?èÞ>#Z'Š‹kuy¿5÷Èß2³Ú!ºwúãÅ2 y eðâ5DY<ĵ9{ ¦èÔæŽ¬€#<Êhd.¶cÕ5Áíi˜5øQeqÇL¢cœÉû.SW¦ï訓 è.uÙÊI¦ðø6˜ÅºGY¯ŠsËp¯z‡ZÖz ÃS#€5FÞ6MÓ1ÝŸ¢0b2¯uá»/x)ÔNxÞîÕX"óÌÞÁ‡À8Ê.hý£ÉNÜûQ˜ÅB¤šg1¨(‹o‰#—]1€%r>ÉŠ7»Ïà<ɧÞjÞÚµùïÑ;)Ýiä˜ÒeA¡¦w§1T"b$8ù¨n˜>ýcÈy"['=W&uâî§ÀŽæÃaqü5O´Ähì´âœíUöÎìþ³*ž#ú³®¤IFü¶CW i.ÄÆÍΪ\÷~iêÿ hº3 ¼Kiž“†Ü^>ƒ¦U°:-˜µ¸°½æ&~fÒöd'mŠ&Ã7¿v ûðL{á´mTãèœ÷º¤c™SÅY¦"Hþ G|ýðWbBq|):D‚0¤ñ˜ <X¯ 9 ¾Eew6éÐOòÂh×^›š4 ÑAŒãóz¡)º]¾*“»¦À÷Tç^2ùJ…G‚êŸKC¤Z9¦õÜEênVxs©@›˜ÐžD«|8fÜÑ;£o¦ãw«€â…Í“—€3C”›3pj@'Ñ7”XquÇ›¯b²Û„f›ãšp¨Ÿ(DÅ=i‰ø¨-¦™ôÃ\r"hAÙžâ¹LÐÙËå&ž¬„± á×hk®äç8ЙÒ]ŠÍ¬7›¦³Ú™õ œËDù†‡ÎTÊÛ¼ÛÞÖsuo%`³†C‚$æNôÑtôEç<0T;3ïL¦Á ëÅ] :.U„b4¼~™äÌË"NÑ; Wmsd:Ï—¾Åf´ÃÚk©*H5d½÷÷²<HvPA¼í¢?lˆâ Âk7•šh%´@òªÞˆuÐB5j´Óf£j€ø1\×6àžÎÿ tÁ2îZ¨ó JíÛÕ ÎJÑ3638žè€ˆh.º1®Xd¹,;ï0Lç'Ns3Ýä‰4à†èŸ7_#|‚¬¿¤üž xÓþ¨ƒó—rå{+|1Ô¡áÛÀê®ÝÙßâœ6„ÆÇÁFo#çqî3¢#ðãpl¿ô¹Í6O"oi¤“Dšé1Űá£?ˆAúÓìß﹩ñ÷¢‰;…UºÎ`Ç~ɺjÓÆhBe¶§81×I#j}„ßñòfÛÝa®‡ÑBäï¸Á„Ð6¥µ†8 œ&Sô3ø5Íã0æÎRªáµà‰©W\E*¢Y¡ÆdFïž`ýnHt8¹´ ›EtVk$h1§qÛXîâ Âm5ôV¦½ó#ô·Å1¬È§JÍù0ÿ ÑŸÄ"ެx}V'b{rãèæ;‡¨LYy+@ô p¦½/ÿÄ B !"1A2Qaq #BR¡$3b‚‘±4r’µÑðCStv²³ÁñÿÚ ?>¾îœñSµöµ\tô´èÏ«&òfâˆÞM!²¢Ž¤\Žxö}<†¡*‰ ˜¬JH»[â±NM@¹‰`§¥öÊñ„/yE‰VÉô‹_«eÙõYŠ»^]þ&–*5 ŽXÞÒÌ“G{fFÌ.9|úû„»…›’€ë®"ƒbVžÍFÒïžlµ+ pÏjiÖ9au)"8’¯j¼“ìýš¥)"ŠÉIHÇ!Mâ´€ \Ç$Þ2.z'|‘sÕøÃigV9•£fôu±LG%0’BÙŽS«Ï&V›™‰åË%¦5$Í™²Éšäó[5ååÑ{J9䣩•^Y;ɳçÝ$_±žX]c¼™ u`ZÌHªi¥Ià•CG"ÊÊzßýÛÞ>¾å[ÆÌ¯20Ëó+FÉ$mÓT$;Á}DÕ-fI*dÊÌÓJæÇ(U· ¤“¥®)sÐÓª±#„£-󰾃-€Ý–ý j`$22…™Šƒò›¨îß0»_—=p§&ˆrç+¡»qÁжº€Zž\ÎÚåΞYšÇ3òuçâ œfŒE0D ;èxŠKHcÃÌ[J}%4’¢§rÉU,SM+5»S¶ïwJF±»;fU\¬X}½ÓëøœZ™c5ÛLÉO{6HlY2C[x _LÇPp¥ŠGK¼«Ÿw£Žó°ŽÃ…Øð«[ËŽGTnÔç´t”Ëàt[±¹b£Wfð'Ë´¤žï$1Ü,e‡räê ·ÞçÆôpð®Ub£5¼¬ß»>$™NWµ™Ið<ûz“‰¯™¥pJä7S—’¿^zM´ÂFMùçRƒT”6pÜY„‘sŒŒ¼}LÓÍ íÔèœ=^@Q†Ÿ'pó¿ <ýÓëîlzLÃõ]œf#÷ë*Â/—vŸú}üÉ¿#–××®"gaÀÃ"žzuuå„ q¦¶üñ•:ù4®Oä–ÇN\Ôæ[[¡°ÆÓhk)BIqÍ—y©þîv#¯ÅX‰™àŠŸ' 9$ÙMïä^|º}}Í“+€cý/Žh*êOþN£›´[ü_ÕŽ"Œƒžb¶îæ<¿< –@Qp[UÓ§†I«éb¦Ž'íÉÒ窅®[ÓmÉ=:HQä@7¢5Œïcò\ȼV¾K,LuòÇ$r挂„ø‹}Xaä¦=©©`¡FØ–ÀæI1:xÓý}ÓëøÕV‘›³ÄΫõÉÊ4þ' za¶•s¯é ÑÄ€ã{Æ“"¨àkY™Ž( _š¥uÉ-¯à5ü°Ò‡Ü$ ZAlÖùšö°ñ!¨ÚRk0ŽYiÞK#f…€óo=1G´iê*ž:è{]$5‚¥¥ž6Ö9ie™„sƒ¥÷q,ƒ„µî1´MP ð¸Aôôç¨ÅU-EEÏJÆVi¢AlüÓ#»q|FkÐöëqQÉÆÌë|ê °cÂ× I ®˜öšÙmµw¥9YäaëÍ|ÃM}Óëø×D‡c[žmà ²ú°B±¢g«Ï3(m3ÙÅüɰòÅ[J–ˆE[ª4¸_ºÛí‰"u_‰ÂÚil9¤sÅ#\Å<$¾PË`ù´-åÁó5æ«®™`Žš*t޼*º8.^VÈ8cÕm”XrÅdwý¾ú^zœêÌoæM¯†®£¤¡ÚP¹VQÕÁ›e”ƒ€†Öul¦öѱAYWGÙûG¤h£Nq&QîÁ7Êèus×\WW%óí9Ì’RžQ÷u‘‰ëtúþ ‚ñ˜Äôõ ܧٵI¡Ë©‘7‹D”}k}A£õ#_Q¡üïŒë,Eœ)áCËå#>·Óæ'úb ¢9+j{8“¤i•¤ŽZ„F·KÛà N*Ñ^6PŤ•ag#^/¶*©ÖEž9÷yŒá·zklÝ=4À±ºèËé¯úã1ùPäOº}}Í•°é64»gôýÍGM2ISOJ©0›‘‰eÎ#ÊÅL™º¢…[h<:à[—–j‡Ý¤aW9·€ËkrVÖüF$Þ)¨x²îwhat are you pasting? There is definitely no JFIF/Exif data in the on-chain tiff.
Did you try to shortcut and not fetch it off your own node?
It’s the photo from the link in this post, shouldn’t be the same one on the timechain.
🤣 at your shortcut. Just do the getrawtransaction breh
~lol I’m not near my node!
Time to get that wireguard or tailscale shit set up breh
bro wtf
it is posted it in the linked webpage, but I didn't want to make this about insults so I didn't put it here.
Additionally, you can find it on mempool, or by using your own node:
block: 938576,
rawtransaction: b8cc570ef453508b6c6a1758bc591c276abdbe2b88881ae487ba4e858bd8d4be
Right, I didn’t click the link!
Incredible work—turning a whole image into a transaction like that is pure hacker art.