-
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathcryptocurrency.bigb
2434 lines (1794 loc) · 118 KB
/
cryptocurrency.bigb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
= Cryptocurrency
{tag=Currency}
{wiki}
= Are cryptocurrencies useful?
{parent=Cryptocurrency}
The key difficulties of cryptocurrencies are:
* how do transaction fees/guarantees/times compare to centralized systems such as credit cards:
* https://bitcoin.stackexchange.com/questions/1261/is-it-possible-to-send-bitcoins-without-paying-a-fee "The Blockchain Scalability Problem & the Race for Visa-Like Transaction Speed" (2019)
> The battle for a scalable solution is the blockchain's moon race. Bitcoin processes 4.6 transactions per second. Visa does around 1,700 transactions per second on average (based on a calculation derived from the official claim of over 150 million transactions per day).
* https://towardsdatascience.com/the-blockchain-scalability-problem-the-race-for-visa-like-transaction-speed-5cce48f9d44
Obviously, decentralized currencies cannot be cheaper to maintain than centralized ones, since with decentralization you still have to send network messages at all times, and instead of one party carrying out computations, multiple parties have to carry out computations.
Crypto could however be close enough in price to centralized systems that it becomes viable, this can be considered.
* how can <governments> <tax> cryptocurrency. Notably, because:
* taxation has to be <progressive tax>[progressive], e.g. <wealth tax>[we have to tax the rich more than the poor], and <anonymity> in transactions would weaken that
* it would be even easier to move money into <fiscal paradises>, and then just say, oops, lost my passwords, those coins are actually gone
See also <globalization reduces the power of governments>.
Until those problems are solved, the only real applications of cryptocurrency will by <illegal> activities, notably buying <drugs>, paying for <ransomware>. But also paying for anti-<censorship> services from inside <dictatorships>. Illegal activity can be good when governments are bad, and arguably selling drugs should be legal.
For this reason <Ciro Santilli> believes that <privacy coins> like <Monero> are currently the most useful cryptocurrencies. Also, people concerned with their privacy are likely to more naturally make fewer larger payments to reduce exposure rather than a bunch of small separate ones, and therefore transaction fees matter less, and can be seen as a reasonable privacy <tax>. Also drugs are expensive, just have a look at any <uncensored Onion service search engine>, so individual transactions tend to be large.
Hedgint against <inflation> due to <money creation> in <fiat currencies> is a another valid argument for cryptocurrencies. <Money creation vs tax>[Money printing is a bad form of tax]. But why not just instead invest in bonds or <stocks>, which actually have a specific intrinsic value and should therefore increase your capital and beat inflation? Even if crypto did take over, its value would eventually become constant, and just holding it would lose out to stocks and bonds. And pre-crypto, salaries should adjust relatively quickly to new inflation levels as they come, though there is always some delay. Also, without anonymity, governments will sooner or later find a way to regulate and pervert it. If you want to do things without anonymity, then what you really have to fight for is to change government itself, perhaps with a <#DAO>-like approach, or pushing for a more <direct democracy>.
If crypto really takes off, 99.99% of people will only ever use it through some <cryptocurrency exchange> (unless scalability problems are solved, and they replace <fiat currencies> entirely), so the experience will be very similar to <PayPal>, and without "true" decentralization.
For those reasons, <Ciro Santilli> instead believes that governments should issue <electronic money>, and maintain an open <API> that all can access instead. The centralized service will always be cheaper for <society> to maintain than any distributed service, and it will still allow for proper taxation.
Ciro believes that it is easy for people to be seduced by the <idealistic> promise that "cryptocurrency will make the world more fair and equal by giving everyone equal opportunities, away from the corruption of Governments". Such optimism that new <technologies> will solve certain key <social> problems without the need for constant <government> intervention and management is not new, as shown e.g. at <HyperNormalisation by Adam Curtis (2016)> when he talks about the cyberspace (when the <Internet> was just beginning): https://youtu.be/fh2cDKyFdyU?t=2375[]. Technologies can make our lives better. But in general, some of them also have to be managed.
In any case, cryptocurrencies are <bullshit>, the true currency of the future is going to be <Magic: The Gathering> cards. And <Cirocoin>.
One closely related thing that Ciro Santilli does think could be interesting exploring right now however, notably when having <Monero>-like anonymity in mind, would be anonymous <electronic voting>, which is a pre-requisite to make <direct democracy> convenient so people can vote more often.
TODO evaluate the possible application of cryptocurrency for international transfers:
* https://bitcoin.stackexchange.com/questions/25583/does-it-make-sense-to-use-bitcoin-to-transfer-money-to-yourself-internationally
Of course, the ideal solution would be for governments to just allow for people from other countries to create accounts in their country, and use the centralized API just like citizens. Having an account of some sort is of course fundamental to avoid money laundering/tax evasion, be it on the API, or when you are going to cash out the crypto into <fiat currency>[fiat]. So then the question becomes: suppose that governments are shit and never make such APIs, are international transfers just because traditional banks are inefficient/greedy? Or is it because of the inevitable cost of auditing transfers? E.g. how does <TransferWise> compare to Bitcoin these days? And if cryptocurrency is more desirable, why wouldn't <TransferWise> just use it as their backend, and reach very similar fees?
= Privacy coin
{parent=Cryptocurrency}
Notable ones:
* <Monero>
= Privacy coin legality
{parent=Privacy coin}
= Privacy coin vs cryptocurrency tumbler
{parent=Privacy coin legality}
In 2024 they started making tumblers illegal:
* https://www.reddit.com/r/CryptoCurrency/comments/163qjnw/why_is_tornado_cash_creator_criminalized_and/
* https://www.justice.gov/usao-sdny/pr/founders-and-ceo-cryptocurrency-mixing-service-arrested-and-charged-money-laundering
So why <privacy coins> weren't fully forbidden then?
= Cryptocurrency mining
{parent=Cryptocurrency}
= Miner
{disambiguate=cryptocurrency}
{synonym}
= Mining
{disambiguate=cryptocurrency}
{synonym}
= Block reward
{parent=Cryptocurrency mining}
= Mining reward
{parent=Cryptocurrency mining}
{wiki}
= Mining pool
{parent=Cryptocurrency mining}
{wiki}
= Bitcoin mining pool
{parent=Mining pool}
= AntPool
{c}
{parent=Bitcoin mining pool}
https://en.bitcoin.it/wiki/AntPool
= Eligius pool
{c}
{parent=Bitcoin mining pool}
https://en.bitcoin.it/wiki/Eligius
Created by <Luke Dashjr>.
The pool is named after Saint Eligius, patron of minershttps://twitter.com/LukeDashjr/status/1749183638313246875{ref}
Eligius also means to "choose" or "chosen" in <Latin>: https://en.wiktionary.org/wiki/Eligius[], same root as "to elect" in modern <English (language)> presumably.
= F2Pool
{c}
{parent=Bitcoin mining pool}
https://www.f2pool.com/
= Horrible Horrendous Terrible Tremendous
{c}
{parent=Bitcoin mining pool}
{title2=2012-2013}
{title2=HHTT}
http://hhtt.1209k.com/
They might have shut down, but they still have the cutest name! And they've made some cute <inscription (blockchain)>[inscriptions] too, see: <Cool data embedded in the bitcoin blockchain/HHTT>
= Slush Pool
{c}
{parent=Bitcoin mining pool}
{title2=2010-}
https://en.bitcoin.it/wiki/Slush_Pool
= Address
{disambiguate=cryptocurrency}
{parent=Cryptocurrency}
= Vanity address
{parent=Address (cryptocurrency)}
https://bitcoin.stackexchange.com/questions/20305/what-is-vanity-address
= Vanity number
{parent=Vanity address}
{wiki}
= Vanity plate
{parent=Vanity address}
{wiki}
= List of cryptocurrencies
{parent=Cryptocurrency}
= Bitcoin
{c}
{parent=List of cryptocurrencies}
{title2=2009}
{wiki}
= Bitcoin blockchain
{c}
{synonym}
= BTC
{c}
{synonym}
{title2}
How it works: <how Bitcoin works>{full}.
Official website: https://bitcoin.org/en/
Reference implementation: <Bitcoin Core>.
= Bitcoin hello world
{c}
{parent=Bitcoin}
* buy some at a <cryptocurrency exchange>. This is the only viable way of obtaining crypto nowadays, since basically all cryptocurrencies require specialized hardware to mine.
* send it to a self hosted <Bitcoin wallet without a full node>, e.g. <Electrum>
* then send something out of the wallet back to the exchange wallet!
* convert the crypto back to cash
E.g.: <Coinbase Bitcoin hello world>.
= Bitcoin HOWTO
{c}
{parent=Bitcoin}
= Get Bitcoin transaction id from position in dat file
{parent=Bitcoin HOWTO}
= Get transaction id from position in dat file
{synonym}
Suppose we specify:
* a .dat file
* the offset in bytes within that file
The question then is, which transaction is encoded at that position of the file?
This would allow us to index inscriptions in the .dat files directly with fast C tools, and then retrive the transaction ID to get cleaner data and metadata.
It should be possible if we managed to take the information from https://bitcoindev.network/understanding-the-data/[] and dump into an indexed <SQLite> database.
I tried to start things off with <LevelDBDumper>:
``
LevelDBDumper -d ~/snap/bitcoin-core/common/.bitcoin/indexes/txindex -f btc.csv -q -o . -t csv
``
but that consumed all 64 GB of RAM on <Ciro Santilli's hardware/P51>... https://github.com/mdawsonuk/LevelDBDumper/issues/15
But OK, nevermind that repo, it can be done easily with the <LevelDB> API of any language: https://bitcoin.stackexchange.com/questions/121888/what-is-the-data-format-layout-for-txindex-leveldb-values[]. Just the data seems wrong and we don't know why.
= Get all Bitcoin transactions from and to a given address
{parent=Bitcoin HOWTO}
* https://bitcoin.stackexchange.com/questions/77984/find-all-transactions-for-a-bitcoin-address bad close
* <Blockchair>
* https://stackoverflow.com/questions/28205667/list-transactions-from-given-address-in-bitcoind/78009760#78009760
* https://stackoverflow.com/questions/28205667/list-transactions-from-given-address-in-bitcoind/29244421#29244421 mentions --addrindex but that is dead now:
* https://github.com/btcsuite/btcd/pull/205
* https://github.com/btcsuite/btcd/issues/190
* https://bitcoin.stackexchange.com/questions/71019/filter-transactions-by-time-on-a-given-address/121720#121720
* https://bitcoin.stackexchange.com/questions/121718/fnd-the-most-valuable-transactions-made-to-a-given-address/121719#121719
= Bitcoin wallet
{c}
{parent=Bitcoin}
= Electrum
{c}
{parent=Bitcoin wallet}
{tag=Create Bitcoin wallet without a full node}
https://electrum.org/
https://askubuntu.com/questions/281233/how-can-i-install-the-electrum-bitcoin-wallet/1384053#1384053
For the love of God, on Ubuntu install from the official <AppImage> downloaded from https://electrum.org/#download[], not this random outdated <Snap> https://snapcraft.io/electrum[]:
* https://askubuntu.com/questions/281233/how-can-i-install-the-electrum-bitcoin-wallet/1384053#1384053
* https://www.reddit.com/r/Electrum/comments/bf7iyl/electrum_synchronizing/
* https://www.reddit.com/r/CryptoCurrency/comments/peotkp/can_i_trust_the_electrum_snap_package/
= Bitcoin wallet without a full node
{c}
{parent=Bitcoin wallet}
= Create Bitcoin wallet without a full node
{c}
{synonym}
* https://bitcoin.stackexchange.com/questions/52120/send-from-bitcoin-core-without-downloading-blockchain
* https://www.reddit.com/r/Bitcoin/comments/5kmuya/is_it_possible_to_have_my_own_bitcoin_wallet/
= How Bitcoin works
{parent=Bitcoin}
Here is a very direct description of the system:
* each transaction (transaction is often abbreviated "tx") has a list of inputs, and a list of outputs
* each input is the output of a previous transaction. You verify your identity as the indented receiver by producing a <digital signature> for the <public key> specified on the output
* each output specifies the <public key> of the receiver and the value being sent
* the sum of output values cannot obvious exceed the sum of input values. If it is any less, the leftover is sent to the miner of the transaction as a transaction fee, which is an incentive for mining.
* once an output is used from an input, it becomes marked as spent, and cannot be reused again. Every input uses the selected output fully. Therefore, if you want to use an input of 1 <BTC> to pay 0.1 <BTC>, what you do is to send 0.1 <BTC> to the receiver, and 0.9 <BTC> back to yourself as <change (Bitcoin)>. This is why the vast majority of transactions has two outputs: one "real", and the other <change (Bitcoin)> back to self.
<code Sample Bitcoin transaction graph> illustrates these concepts:
* `tx0`: magic transaction without any inputs, i.e. either <Genesis block> or a coinbase <Bitcoin mining reward>[mining reward]. Since it is a magic transaction, it produces 3 Bitcoins from scratch: 1 in `out0` and 2 in `out1`. The initial value was actually 50 <BTC> and reduced with time: <Bitcoin halving>{full}
* `tx1`: regular transaction that takes:
* a single input from `tx0 out0`, with value 1
* produces two outputs:
* `out0` for value 0.5
* `out1` for value 0.3
* this means that there was 0.2 left over from the input. This value will be given to the miner that mines this transaction.
Since this is a regular transaction, no new coins are produced.
* `tx2`: regular transaction with a single input and a single output. It uses up the entire input, leading to 0 miner fees, so this greedy one might (will?) never get mined.
* `tx3`: regular transaction with two inputs and one output. The total input is 2.3, and the output is 1.8, so the miner fee will be 0.5
``
tx1 tx3
tx0 +---------------+ +---------------+
+----------+ | in0 | | in0 |
| out0 |<------out: tx0 out0 | +------out: tx1 out1 |
| value: 1 | +---------------+ | +---------------+
+----------+ | out0 | | | in1 |
| out1 |<-+ | value: 0.5 | | +----out: tx2 out0 |
| value: 2 | | +---------------+ | | +---------------+
+----------+ | | out1 |<-+ | | out1 |
| | value: 0.3 | | | value: 1.8 |
| +---------------+ | +---------------+
| |
| |
| |
| tx2 |
| +---------------+ |
| | in0 | |
+----out: tx0 out1 | |
+---------------+ |
| out0 |<---+
| value: 2 |
+---------------+
``
{title=Sample <Bitcoin> transaction <graph>}
Since every input must come from a previous output, there must be some magic way of generating new coins from scratch to bootstrap the system. This mechanism is that when the miner mines successfully, they get a mining fee, which is a magic transaction without any valid inputs and a pre-agreed value, and an incentive to use their power/compute resources to mine. This magic transaction is called a "https://en.bitcoin.it/wiki/Coinbase[coinbase transaction]".
The key innovation of Bitcoin is how to prevent double spending, i.e. use a single output as the input of two different transactions, via mining.
For example, what prevents me from very quickly using a single output to pay two different people in quick succession?
The solution are the blocks. Blocks <discretize> transactions into chunks in a way that prevents double spending.
A block contains:
* a list of transactions that are valid amongst themselves. Notably, there can't be double spending within a block.
People making transactions send them to the network, and miners select which ones they want to add to their block. Miners prefer to pick transactions that are:
* small, as less bytes means less hashing costs. Small generally means "doesn't have a gazillion inputs/outputs".
* have higher transaction fees, for obvious reasons
* the ID of its parent block. Blocks therefore form a linear linked list of blocks, except for temporary ties that are soon resolved. The longest known list block is considered to be the valid one.
* a nonce, which is an integer chosen "arbitrarily by the miner"
For a block to be valid, besides not containing easy to check stuff like double spending, the miner must also select a nonce such that the hash of the block starts with N zeroes.
For example, considering the transactions from <code Sample Bitcoin transaction graph>, the block structure shown at <code Sample Bitcoin blockchain> would be valid. In it `block0` contains two transactions: `tx0` and `tx1`, and `block1` also contains two transactions: `tx2` and `tx3`.
``
block0 block1 block2
+------------+ +--------------+ +--------------+
| prev: |<----prev: block0 |<----prev: block1 |
+------------+ +--------------+ +--------------+
| txs: | | txs: | | txs: |
| - tx0 | | - tx2 | | - tx4 |
| - tx1 | | - tx3 | | - tx5 |
+------------+ +--------------+ +--------------+
| nonce: 944 | | nonce: 832 | | nonce: 734 |
+------------+ +--------------+ +--------------+
``
{title=Sample <Bitcoin> blockchain}
The `nonce`s are on this example arbitrary chosen numbers that would lead to a desired hash for the block.
`block0` is the <Genesis block>, which is magic and does not have a previous block, because we have to start from somewhere. The network is hardcoded to accept that as a valid starting point.
Now suppose that the person who created `tx2` had tried to double spend and also created another transaction `tx2'` at the same time that looks like this:
``
tx2'
+---------------+
| in0 |
| out: tx0 out1 |
+---------------+
| out0 |
| value: 2 |
+---------------+
``
Clearly, this transaction would try to spend `tx0 out1` one more time in addition to `tx2`, and should not be allowed! If this were attempted, only the following outcomes are possible:
* `block1` contains `tx2`. Then when `block2` gets made, it cannot contain `tx2'`, because `tx0 out1` was already spent by `tx2`
* `block1` contains `tx2'`. `tx2` cannot be spent anymore
Notably, it is not possible that `block1` contains both `tx2` and `tx2'`, as that would make the block invalid, and the network would not accept that block even if a miner found a `nonce`.
Since hashes are basically random, miners just have to try a bunch of nonces randomly until they find one that works.
The more zeroes, the harder it is to find the hash. For example, on the extreme case where N is all the bits of the hash output, we are trying to find a hash of exactly 0, which is statistically impossible. But if e.g. N=1, you will in average have to try only two nonces, N=2 four nonces, and so on.
The value N is updated every 2 weeks, and aims to make blocks to take 10 minutes to mine on average. N has to be increased with time, as more advanced hashing hardware has become available.
Once a miner finds a nonce that works, they send their block to the network. Other miners then verify the block, and once they do, they are highly incentivized to stop their hashing attempts, and make the new valid block be the new parent, and start over. This is because the length of the chain has already increased: they would need to mine two blocks instead of one if they didn't update to the newest block!
Therefore if you try to double spend, some random miner is going to select only one of your transactions and add it to the block.
They can't pick both, otherwise their block would be invalid, and other miners wouldn't accept is as the new longest one.
Then sooner or later, the transaction will be mined and added to the longest chain. At this point, the network will move to that newer header, and your second transaction will not be valid for any miner at all anymore, since it uses a spent output from the first one that went in. All miners will therefore drop that transaction, and it will never go in.
The goal of having this mandatory 10 minutes block interval is to make it very unlikely that two miners will mine at the exact same time, and therefore possibly each one mine one of the two double spending transactions. When ties to happen, miners randomly choose one of the valid blocks and work on top of it. The first one that does, now has a block of length L + 2 rather than L + 1, and therefore when that is propagated, everyone drops what they are doing and move to that new longest one.
Bibliography:
* https://arstechnica.com/tech-policy/2020/12/how-bitcoin-works/
= Bitcoin script
{c}
{parent=How Bitcoin works}
= Bitcoin script debugger
{parent=Bitcoin script}
= btcdeb
{parent=Bitcoin script debugger}
https://github.com/bitcoin-core/btcdeb
Tested on <Ubuntu 23.10>:
``
sudo apt install libtool
git clone https://github.com/bitcoin-core/btcdeb
cd btcdeb
git checkout 4fd007e57b79cba9b5ffdf5ffe599778c0d63b88
./autogen.sh
./configure
make -j
``
Patch submited at: https://github.com/bitcoin-core/btcdeb/pull/143
Then we use it;
``
./btcdeb '[OP_1 OP_2 OP_ADD]'
``
and inside the shell:
``
btcdeb 5.0.24 -- type `./btcdeb -h` for start up options
LOG: signing segwit taproot
notice: btcdeb has gotten quieter; use --verbose if necessary (this message is temporary)
3 op script loaded. type `help` for usage information
script | stack
--------+--------
1 |
2 |
OP_ADD |
#0000 1
btcdeb> step
<> PUSH stack 01
script | stack
--------+--------
2 | 01
OP_ADD |
#0001 2
btcdeb> step
<> PUSH stack 02
script | stack
--------+--------
OP_ADD | 02
| 01
#0002 OP_ADD
btcdeb> step
<> POP stack
<> POP stack
<> PUSH stack 03
script | stack
--------+--------
| 03
btcdeb> step
script | stack
--------+--------
| 03
btcdeb> step
at end of script
btcdeb>
``
= Puzzle script
{parent=Bitcoin script}
= Bitcoin hash puzzle script
{parent=Puzzle script}
We've found three unspent puzzle scripts that require finding <SHA-256> hashes:
``
c4b46c5d88327d7af6254820562327c5f11b6ee5449da04b7cfd3710b48b6f55 0 OP_SHA256 None OP_EQUAL
702c36851ed202495c2bec1dd0cefb448b50fafd3a5cdd5058c18ca53fc2c3d1 0 OP_SHA256 None OP_EQUAL
fb01987b540ec286973aac248fab643de82813af452d958056fee8de9f4535ab 0 OP_SHA256 None OP_EQUAL
``
All three are also mentioned at: https://bitcoincashresearch.org/t/p2sh32-a-long-term-solution-for-80-bit-p2sh-collision-attacks/750/23 in addition to some `OP_HASH256` ones. The thread manages to identify one of the `OP_HASH256` ones as a fake <Genesis block> hash.
They can be viewed disassembled at:
* https://mempool.space/tx/c4b46c5d88327d7af6254820562327c5f11b6ee5449da04b7cfd3710b48b6f55 hash required: 5efe500c58a4847dab87162f88a79f08249b988265d5061696b5d0c94fd8080d. Mentions:
* https://github.com/manly/BlockChainParser/blob/0c65312abfaa659d38bfa465c1413d72284cf30d/Documentation/patterns.txt#L99
* https://mempool.space/tx/702c36851ed202495c2bec1dd0cefb448b50fafd3a5cdd5058c18ca53fc2c3d1 hash required: 3f6d4081222a35483cdf4cefd128167f133c33e1e0f0b1d638be131a14dc2c5e
* https://mempool.space/tx/fb01987b540ec286973aac248fab643de82813af452d958056fee8de9f4535ab hash required: 6380315536fa75ccf0d8180755c9f8106466ee3561405081cab736f49e25baab Mentions:
* https://github.com/RKlompUU/SCRIPTAnalyser/blob/398410419e199a3ecb219ebe5fed570a2aabd7bb/scripts/ns10#L1
They were mined on 01 Apr 2014, 02 Apr 2014 and 03 Apr 2014, suggesting a possible April fool's reference?
Each is worth 0.0002 BTC, which is only 20\$ as of 2024, so it's not worth much effort beyond the fun aspect of it. But it is fun!
= Finding unspent puzzle scripts
{parent=Puzzle script}
{title2=2023}
https://github.com/cirosantilli/bitcoin-inscription-indexer?tab=readme-ov-file#utxo_nonstandard
= BSHUNTER: Detecting and Tracing Defects of Bitcoin Scripts
{parent=Finding unspent puzzle scripts}
{title2=2023}
https://dl.acm.org/doi/abs/10.1109/ICSE48619.2023.00037
Authors: Peilin Zheng, Xiapu Luo, Zibin Zheng
Epic title.
= Bitcoin script type
{parent=Bitcoin script}
= Bitcoin transaction type
{synonym}
= Multisig
{parent=Bitcoin script type}
https://en.bitcoin.it/wiki/Multi-signature
= P2PKH
{c}
{parent=Bitcoin script type}
= P2SH
{c}
{parent=Bitcoin script type}
= Bitcoin non-standard transaction
{c}
{parent=Bitcoin script type}
Full list at: https://github.com/cirosantilli/bitcoin-inscription-indexer/blob/master/data/utxo_nonstandard
Bibliography:
* https://bitcoin.stackexchange.com/questions/5883/is-there-a-listing-of-strange-or-unusual-scripts-found-in-transactions/105392#105392
* https://bitcoin.stackexchange.com/questions/547/useful-alternative-bitcoin-transaction-scripts
* https://bitcoin.stackexchange.com/questions/35956/non-standard-tx-with-obscure-op-codes-examples/36037#36037 notably provides the amazing https://www.quantabytes.com/articles/a-survey-of-bitcoin-transaction-types
Monday, January 29, 2024
= An overview of recent non-standard Bitcoin transactions by 0xB10C
{parent=Bitcoin non-standard transaction}
{title2=2024-01-29}
https://b10c.me/observations/09-non-standard-transactions/
= Invalid Bitcoin transaction script
{parent=Bitcoin non-standard transaction}
= OP_INVALIDOPCODE
{parent=Invalid Bitcoin transaction script}
= 77822fd6663c665104119cb7635352756dfc50da76a92d417ec1a12c518fad69
{parent=OP_INVALIDOPCODE}
{title2=2013-08-12}
Ouptut 0 disassembles as:
``
OP_IF OP_INVALIDOPCODE 4effffffff <large constant> OP_ENDIF
``
The large constant contains an ASCII <Bitcoin Core> patch entitled `Remove (SINGLE|DOUBLE)BYTE` so presumably this is a proof of concept:
``
From a3a61fef43309b9fb23225df7910b03afc5465b9 Mon Sep 17 00:00:00 2001
From: Satoshi Nakamoto <[email protected]>
Date: Mon, 12 Aug 2013 02:28:02 -0200
Subject: [PATCH] Remove (SINGLE|DOUBLE)BYTE
I removed this from Bitcoin in f1e1fb4bdef878c8fc1564fa418d44e7541a7e83
in Sept 7 2010, almost three years ago. Be warned that I have not
actually tested this patch.
---
backends/bitcoind/deserialize.py | 8 +-------
1 file changed, 1 insertion(+), 7 deletions(-)
diff --git a/backends/bitcoind/deserialize.py b/backends/bitcoind/deserialize.py
index 6620583..89b9b1b 100644
--- a/backends/bitcoind/deserialize.py
+++ b/backends/bitcoind/deserialize.py
@@ -280,10 +280,8 @@ opcodes = Enumeration("Opcodes", [
"OP_WITHIN", "OP_RIPEMD160", "OP_SHA1", "OP_SHA256", "OP_HASH160",
"OP_HASH256", "OP_CODESEPARATOR", "OP_CHECKSIG", "OP_CHECKSIGVERIFY", "OP_CHECKMULTISIG",
"OP_CHECKMULTISIGVERIFY",
- ("OP_SINGLEBYTE_END", 0xF0),
- ("OP_DOUBLEBYTE_BEGIN", 0xF000),
"OP_PUBKEY", "OP_PUBKEYHASH",
- ("OP_INVALIDOPCODE", 0xFFFF),
+ ("OP_INVALIDOPCODE", 0xFF),
])
@@ -293,10 +291,6 @@ def script_GetOp(bytes):
vch = None
opcode = ord(bytes[i])
i += 1
- if opcode >= opcodes.OP_SINGLEBYTE_END and i < len(bytes):
- opcode <<= 8
- opcode |= ord(bytes[i])
- i += 1
if opcode <= opcodes.OP_PUSHDATA4:
nSize = opcode
--
1.7.9.4
``
https://bitcointalk.org/index.php?topic=5231222.0 discusses what happens if there is an invalid opcode in a branch that is not taken.
Discussed at: https://bitcoin.stackexchange.com/questions/35956/non-standard-tx-with-obscure-op-codes-examples
= Peter Todd's hash collision puzzles
{c}
{parent=Bitcoin non-standard transaction}
{tag=Puzzle script}
{title2=2013}
* https://bitcointalk.org/index.php?topic=293382.0
* https://xiaohuiliu.medium.com/bitcoin-zk-bounty-series-part-2-finding-hash-collisions-5e3aa3eb3925
* https://bitcoinjs-guide.bitcoin-studio.com/bitcoinjs-guide/v5/part-three-pay-to-script-hash/puzzles/computational_puzzle_sha1_collision_p2sh
As mentioned at the prize was claimed at https://www.blockchain.com/explorer/transactions/btc/8d31992805518fd62daa3bdd2a5c4fd2cd3054c9b3dca1d78055e9528cff6adc[8d31992805518fd62daa3bdd2a5c4fd2cd3054c9b3dca1d78055e9528cff6adc] (2017-02-23) which spends several inputs with the same unlock script that presents two different constantants that have the same <SHA-1>:
``
printf 255044462d312e330a25e2e3cfd30a0a0a312030206f626a0a3c3c2f57696474682032203020522f4865696768742033203020522f547970652034203020522f537562747970652035203020522f46696c7465722036203020522f436f6c6f7253706163652037203020522f4c656e6774682038203020522f42697473506572436f6d706f6e656e7420383e3e0a73747265616d0affd8fffe00245348412d3120697320646561642121212121852fec092339759c39b1a1c63c4c97e1fffe017f46dc93a6b67e013b029aaa1db2560b45ca67d688c7f84b8c4c791fe02b3df614f86db1690901c56b45c1530afedfb76038e972722fe7ad728f0e4904e046c230570fe9d41398abe12ef5bc942be33542a4802d98b5d70f2a332ec37fac3514e74ddc0f2cc1a874cd0c78305a21566461309789606bd0bf3f98cda8044629a1 | xxd -r -p | sha1sum
printf 255044462d312e330a25e2e3cfd30a0a0a312030206f626a0a3c3c2f57696474682032203020522f4865696768742033203020522f547970652034203020522f537562747970652035203020522f46696c7465722036203020522f436f6c6f7253706163652037203020522f4c656e6774682038203020522f42697473506572436f6d706f6e656e7420383e3e0a73747265616d0affd8fffe00245348412d3120697320646561642121212121852fec092339759c39b1a1c63c4c97e1fffe017346dc9166b67e118f029ab621b2560ff9ca67cca8c7f85ba84c79030c2b3de218f86db3a90901d5df45c14f26fedfb3dc38e96ac22fe7bd728f0e45bce046d23c570feb141398bb552ef5a0a82be331fea48037b8b5d71f0e332edf93ac3500eb4ddc0decc1a864790c782c76215660dd309791d06bd0af3f98cda4bc4629b1 | xxd -r -p | sha1sum
``
both giving
``
f92d74e3874587aaf443d1db961d4e26dde13e9c
``
It was claimed on the same day that <Google> disclosed the collision: https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html
Both of these are <PDF> prefixes, so they start with the PDF <file signature>, but are not fully viewable PDFs on their own.
= Peter Todd
{c}
{parent=Peter Todd's hash collision puzzles}
* https://bitcointalk.org/index.php?action=profile;u=2546
* https://twitter.com/peterktodd
* https://github.com/petertodd
* https://petertodd.org/
* https://www.reddit.com/user/petertodd/
= Bitcoin script that terminates with multiple values on the stack
{parent=Bitcoin non-standard transaction}
* https://www.reddit.com/r/Bitcoin/comments/67l7ox/does_the_stack_have_to_only_contain_true/
* https://github.com/bitcoin/bitcoin/commit/39f0d9686095bce469dbfa52333331a5d15c6545
= 3ad6677303fb6f700a4f2f977fe86e5324e0ddb0d3b33a649e513d7e88904e85
{parent=Bitcoin script that terminates with multiple values on the stack}
{title2=2023-09-11}
This contains various outputs that seem trivially spendable in a made up of two non-zero constants, e.g.:
``
{
"value": 0.00002000,
"n": 9,
"scriptPubKey": {
"asm": "1 8fe61f026c7545a99c6e0f37a5a7eceee5fdf6723c1994ccbfb740556632e9fe",
"desc": "rawtr(8fe61f026c7545a99c6e0f37a5a7eceee5fdf6723c1994ccbfb740556632e9fe)#lxgt8lak",
"hex": "51208fe61f026c7545a99c6e0f37a5a7eceee5fdf6723c1994ccbfb740556632e9fe",
"address": "bc1p3lnp7qnvw4z6n8rwpum6tflvamjlmanj8svefn9lkaq92e3ja8lqcc8mcx",
"type": "witness_v1_taproot"
}
},
``
Or are we missing something? The values are quite small and wouldn't be worth it the miner fees most likely. But is there a fundamental reason why this couldn't be spent by a non-standard miner?
= Provably unspendable Bitcoin output script
{parent=Bitcoin non-standard transaction}
= 4373b97e4525be4c2f4b491be9f14ac2b106ba521587dad8f134040d16ff73af
{parent=Provably unspendable Bitcoin output script}
{title2=2014-06-14}
{title2=XSS detection}
Output 0 does:
``
OP_ADD OP_ADD 13 OP_EQUAL OP_NOTIF OP_RETURN OP_ENDIF OP_FROMALTSTACK <large xss constant> OP_DROP
``
where the large constant is an interesting <inscription (blockchain)> to test for the presence of <XSS> attacks on <blockchain explorers>:
``
<script type='text/javascript'>document.write('<img src='http://www.trollbot.org/xss-blockchain-detector.php?href=' + location.href + ''>');</script>`
``
This is almost spendable with:
``
1 OP_TOALTSTACK 10 1 2
``
but that fails because the altstack is cleared between the input and the output script, so this output is provably unspendable.
Bibliography:
* https://www.reddit.com/r/Bitcoin/comments/2c5tdz/found_this_while_crawling_the_metadata/
* https://bitcointalk.org/index.php?topic=701556.0
= a165c82cf21a6bae54dde98b7e00ab43b695debb59dfe7d279ac0c59d6043e24
{parent=4373b97e4525be4c2f4b491be9f14ac2b106ba521587dad8f134040d16ff73af}
{title2=2014-06-14}
{title2=XSS detection sister}
Sister transaction of <4373b97e4525be4c2f4b491be9f14ac2b106ba521587dad8f134040d16ff73af> with another variant of the <XSS> but without IF and `OP_FROMALTSTACK`, thus making it spendable:
``
OP_ADD OP_ADD 13 OP_EQUAL <large xss constant> OP_DROP
``
= 5660d06bd69326c18ec63127b37fb3b32ea763c3846b3334c51beb6a800c57d3
{parent=Provably unspendable Bitcoin output script}
{tag=Coinbase transaction}
{title2=2022-10-20}
{title2=malformed Coinbase}
= Coinbase transaction of block 759475
{synonym}
{title2}
In this malformed <Coinbase> transaction, the mining pool "nicehash" produced a <provably unspendable Bitcoin output script> due to a bug, and therefore lost most of the entire <block reward> of 6.25 <BTC> then worth about \$ 123,000.
The output is unspendable because it ends in a constant 0, the disassembly of the first and main output is this series of constants:
``
0 017fed86bba5f31f955f8b316c7fb9bd45cb6cbc 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
``
and for the second smaller one:
``
aa21a9ed62ec16bf1a388c7884e9778ddb0e26c0bf982dada47aaa5952347c0993da 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
``
the third one being an <OP_RETURN> message.
This event received some coverage:
* https://twitter.com/hashrateindex/status/1583146537538170880
* https://www.linkedin.com/posts/david-westrop_block-759475-was-mined-without-a-payout-activity-6989026297020628992-qtx4/?originalSubdomain=lk
https://www.blockchain.com/explorer/transactions/btc/5660d06bd69326c18ec63127b37fb3b32ea763c3846b3334c51beb6a800c57d3
= Invalid Bitcoin script
{c}
{parent=Bitcoin script type}
They appear to be included, with rationale that you can already include syntactically valid crap in an unprovable way: https://github.com/bitcoin/bitcoin/issues/320 Better then have syntactically invalid crap that is provable.
The outputs of this transaction seem to be the first syntactically incorrect scripts of the blockchain: https://blockchain.info/tx/ebc9fa1196a59e192352d76c0f6e73167046b9d37b8302b6bb6968dfd279b767?format=json[], found by parsing everything locally. The transaction was made in 2013 for 0.1 <BTC>, which then became unspendable.
The first invalid script is just e.g. "script":"01", which says will push one byte into the stack, but then ends prematurely.
= Bitcoin script operator
{parent=Bitcoin script}
= OP_RETURN
{c}
{parent=Bitcoin script operator}
{tag=Bitcoin inscription method}
{title2=2014}
`OP_RETURN` HOWTO:
* https://bitcoin.stackexchange.com/questions/25224/what-is-a-step-by-step-way-to-insert-data-in-op-return
= Bitcoin input script
{c}
{parent=Bitcoin script}
= Input script
{synonym}
= Bitcoin output script
{c}
{parent=Bitcoin script}
= Output script
{synonym}
= Change
{disambiguate=Bitcoin}
{parent=How Bitcoin works}
= Bitcoin mining reward
{parent=How Bitcoin works}
{tag=Block reward}
{tag=Mining reward}
= Bitcoin halving
{parent=Bitcoin mining reward}
= Bitcoin halvening
{synonym}
https://cointelegraph.com/learn/bitcoin-halving-how-does-the-halving-cycle-work-and-why-does-it-matter Happens every 210,000 blocks, aiming approximately at 4 year intervals. The historical dates were:
* 50 <BTC> initially
* 1st: 2012: down to 25 <BTC>
* 2nd: 2016: down to 12.5 <BTC>
* 3rd: 2020: down to 6.25 <BTC>
Each of these events prompts some commemorative <inscription (blockchain)>[inscriptions]: <Cool data embedded in the bitcoin blockchain/Halving messages>{full}.
= History of Bitcoin
{parent=Bitcoin}
{wiki}
* 2008-08-18: <bitcoin.org> registered
* 2008-10-31: first public announcement at https://www.metzdowd.com/pipermail/cryptography/2008-October/014810.html by <[email protected]>
* 2009-01-03: <Genesis block> mined
* 2009-01-11: <First block not mined by Satoshi>
* 2009-01-12: <First Bitcoin transactoin>
* 2010-05-18: the first of <Laszlo's pizzas> at about \$0.0045 / <BTC>
* 2010-07-17: first trade happes on <Mt. Gox> at \$0.04951 / <BTC>: https://cryptopotato.com/10-years-ago-first-bitcoin-trade-on-mt-gox-for-0-05-per-btc/
* 2014: <OP_RETURN> goes live
= First Bitcoin transactoin
{parent=History of Bitcoin}
{tag=Bitcoin transaction}
{title2=block 170}
= f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16
{synonym}
{title2}
MOre precisely we of course mean the first non-<Coinbase transaction> obviously.
* https://www.blockchain.com/explorer/transactions/btc/f4184fc596403b9d638783cf57adfe4c75c605f6356fbc91338530e9831e9e16
* https://www.blockchain.com/explorer/blocks/btc/170
Using funds from block 9.
= First mentions of bitcoin on
{parent=History of Bitcoin}
= First mentions of bitcoin on HackerNews
{parent=First mentions of bitcoin on}
= First mentions of bitcoin on Reddit
{parent=First mentions of bitcoin on}
= First mentions of bitcoin on YouTube
{parent=First mentions of bitcoin on}
= First mentions of bitcoin on public television
{parent=First mentions of bitcoin on}
https://twitter.com/pete_rizzo_/status/1746866155023671412
= Laszlo's pizzas
{c}
{parent=History of Bitcoin}
{title2=2010-05-18}
{wiki}
= Laszlo Hanyecz
{c}
{synonym}
{title2}
On May 19, 2020, Lazlo announced on the <Bitcoin Forum> at: https://bitcointalk.org/index.php?topic=137.msg1195
> I'll pay 10,000 <Bitcoins> for a couple of pizzas.. like maybe 2 large ones so I have some left over for the next day. I like having left over pizza to nibble on later. You can make the pizza yourself and bring it to my house or order it for me from a delivery place, but what I'm aiming for is getting food delivered in exchange for bitcoins where I don't have to order or prepare it myself, kind of like ordering a 'breakfast platter' at a hotel or something, they just bring you something to eat and you're happy!
I like things like onions, peppers, sausage, mushrooms, tomatoes, pepperoni, etc.. just standard stuff no weird fish topping or anything like that. I also like regular cheese pizzas which may be cheaper to prepare or otherwise acquire.
If you're interested please let me know and we can work out a deal.
<Ciro Santilli> remembers his father always telling him how when Ciro was small, he would try to grasp the value of money by converting it into how many pizzas he could buy. Well, at least he was not alone.
User bitcoin2paysafe then asks the fundamental practical question:
> In which country do you live?
and Lazslo replies:
> Jacksonville, Florida
zip code 32224
United States
User ender_x then points out afterward:
> 10,000... Thats quite a bit.. you could sell those on https://www.bitcoinmarket.com/ for \$41 USD right now..
so it is a slightly bad deal even then!
Three days later Lazlo's asks again on the thread:
> So nobody wants to buy me pizza? Is the bitcoin amount I'm offering too low?
and one day later he confirms that the sale was made without naming the buyer:
> I just want to report that I successfully traded 10,000 bitcoins for pizza
Pictures: http://heliacal.net/~solar/bitcoin/pizza/
Thanks jercos!
where "jercos" is presumably the <Bitcoin Forum> username of the buyer. https://en.bitcoin.it/wiki/Jercos gives his identity as <Jeremy Sturdivant>.
https://www.thesun.co.uk/news/15049566/other-bitcoin-pizza-jeremy-sturdivant-fortune-hanyecz/ mentions Jeremy sold too early however:
> The cryptocash disappeared when Sturdivant used it to "cover expenses" while travelling the US with his girlfriend.
\Image[https://web.archive.org/web/20200806030121im_/http://heliacal.net/~solar/bitcoin/pizza/.t/IMG_0984.small.jpg]
{title=Laszlo's Papa's Specialty pizzas}
{description=The most famous of <Laszlo's pizzas>, originally published on his website: https://web.archive.org/web/20210217220810/http://heliacal.net/~solar/bitcoin/lightning-pizza/[].}
{source=https://web.archive.org/web/20211219130004/http://heliacal.net/~solar/bitcoin/pizza/}
\Image[https://web.archive.org/web/20211016070745im_/https://www.thesun.co.uk/wp-content/uploads/2021/05/NINTCHDBPICT000652509197-1.jpg?w=620]
{title=Laszlo's secondary pizza event}
{description=https://web.archive.org/web/20210217220810/http://heliacal.net/~solar/bitcoin/lightning-pizza/ documents another pizza event, as we have different pizza boxes from the most widely known one: https://web.archive.org/web/20211219130004/http://heliacal.net/~solar/bitcoin/pizza/ Only image thumbs are archived however. https://web.archive.org/web/20211016070745/https://www.thesun.co.uk/news/15049566/other-bitcoin-pizza-jeremy-sturdivant-fortune-hanyecz/ however shows a large version that The Sun got their hands on before the takedown.}
{source=https://www.thesun.co.uk/news/15049566/other-bitcoin-pizza-jeremy-sturdivant-fortune-hanyecz}
\Image[https://web.archive.org/web/20211016070745im_/https://www.thesun.co.uk/wp-content/uploads/2021/05/COMP-CFP-BITCOIN-PIZZA.jpg?w=660]
{title=<Jeremy Sturdivant>}
{disambiguate=pizza}
{source=https://www.thesun.co.uk/news/15049566/other-bitcoin-pizza-jeremy-sturdivant-fortune-hanyecz/}
heliacal.net is presumably his personal website? But is was down as of 2023. But we have <Wayback Machine> archives of course :-) Latest working one of that page 2021: https://web.archive.org/web/20211219130004/http://heliacal.net/~solar/bitcoin/pizza/ And some other stalking:
* https://web.archive.org/web/20090812075412/http://heliacal.net/pmwiki
> Welcome to heliacal.net. This is the personal site of Laszlo Hanyecz. It's a place to hold various things I have an interest in or am working on.
* https://web.archive.org/web/20091031044500/http://heliacal.net/pmwiki/Main/Cats he's a mega cat owner
* At https://web.archive.org/web/20091031044606/http://heliacal.net/pmwiki/Main/Jackie we get to stalk his wife a bit:
> On March 10, 2007 I became the husband of the most wonderful woman in the world. We live in a nice house in Jacksonville, FL next to the University of North Florida.
\Image[https://web.archive.org/web/20190619235620im_/http://heliacal.net/~solar/images/wedding/posed/.t/AB3_1081.small.jpg]
{title=Laszlo Hanyecz's wedding picture}
{description=They are actually both physically rather similar, quite short and plumpy. Too much pizza maybe? Just kidding, they look like a great match!}
{height=600}
{source=https://web.archive.org/web/20091031044606/http://heliacal.net/pmwiki/Main/Jackie}
* https://web.archive.org/web/20030805153714/http://heliacal.net/~solar/ that home has some files, partly early piracy
Laszlo is truly, literally, the nerd who got very very very lucky!!!
TODO <Who bought Laszlo Hanyecz pizza?>!!!
On June 12, 2010 Laszlo re-offers:
> This is an open offer by the way.. I will trade 10,000 <BTC> for 2 of these pizzas any time as long as I have the funds (I usually have plenty). If anyone is interested please let me know. The exchange is favorable for anyone who does it because the 2 pizzas are only about 25 dollars total, maybe 30 if you give the guy a nice tip. If you get me the upgraded extra large ones or something, I can throw in some more bitcoins, just let me know and we'll work something out.
My 1 year old daughter really enjoys pizza too! She just smears it all over her face if you give her a whole slice, but she does eventually manage to get most of it in her mouth (minus a few loose toppings of course).
and on August 4 user MoonShadow takes him up:
> An open offer, you say? It's been a while since you had some pizza. Feeling a craving, Laszlo?
but finally Laszlo withdrawls the offer:
> Well I didn't expect this to be so popular but I can't really afford to keep doing it since I can't generate thousands of coins a day anymore. Thanks to everyone who bought me pizza already but I'm kind of holding off on doing any more of these for now.
so we understand that the sales happened multiple times!!! Also, we understand that he was probably a miner.
TODO list all of the potential sales.
Bibliography:
* https://en.bitcoin.it/wiki/Laszlo_Hanyecz
= Jeremy Sturdivant
{c}
{parent=Laszlo's pizzas}
= jercos
{synonym}
{title2}
https://en.bitcoin.it/wiki/Jercos mentions:
> According to jercos the transaction was finalized over IRC chats. Jercos was 18 at the time of the transaction.
https://www.bitcoinwhoswho.com/jercosinterview is the source. Persumably the contact was initiated via the private messaging feature of the <Bitcoin Forum>.
\Image[https://web.archive.org/web/20211016070745im_/https://www.thesun.co.uk/wp-content/uploads/2021/05/COMP-CFP-BITCOIN-PIZZA.jpg?w=660]
{title=Jeremy Sturdivant}
{source=https://www.thesun.co.uk/news/15049566/other-bitcoin-pizza-jeremy-sturdivant-fortune-hanyecz/}
Bibliography:
https://en.bitcoin.it/wiki/Jercos
= Who bought Laszlo Hanyecz pizza?
{parent=Laszlo's pizzas}
TODO who bought the Bitcoins? Is anyone else besides <Jeremy Sturdivant>
The original forum thread https://bitcointalk.org/index.php?topic=137.msg1195 suggests multiple purchases were made, until he had to withdrawl the offer. Perhaps an easier question is how many pizzas he got in the first place.
https://www.reddit.com/r/Bitcoin/comments/13on6px/comment/jl55025/?utm_source=reddit&utm_medium=web2x&context=3 mentions without source:
> I know. Laszlo Hanyecz estimates that he spent 100,000 <BTC> on pizza in 2010. Laszlo is the man that invented <GPU> mining and he mined well over 100,000 <BTC>.
One source is: https://bitcoinmagazine.com/culture/the-man-behind-bitcoin-pizza-day-is-more-than-a-meme-hes-a-mining-pioneer
Related thread from May 2023: https://bitcointalk.org/index.php?topic=5453728.msg62286606#msg62286606 "Did Laszlo Hanyecz exchange 40000 <BTC> for 8 pizzas, not 10000 <BTC> for 2 pizzas?" but their Googling is so bad no one had found the 100,000 quote before Ciro.
As per https://bitcoin.stackexchange.com/questions/113831/searching-the-blockchain-based-on-transaction-amount-and-or-date at https://blockchair.com/bitcoin/outputs?s=time(asc)&q=value(1000000000000),time(2010-05-18..2010-08-05) we can list all the transactions made between the offer and withdrawal dates for value exactly 10k. There are only about 20 of them, and including someone the 22nd of May, so it is extremely likely that this will contain the hits. No repeated recipients however, so it is hard to progress with more advanced analytics tools
Some of the transactions are:
* https://www.blockchain.com/explorer/transactions/btc/49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2a[49d2adb6e476fa46d8357babf78b1b501fd39e177ac7833124b3f67b17c40c2a] (22 May 2010 06:17:59 GMT+1). This one has some <Google> mentions:
* https://github.com/bitcoinbook/bitcoinbook/blob/6c472dd00b649b18b6ca6bbcc8ba23775619ce08/appdx-pycoin.asciidoc
* https://github.com/richardkiss/pycoin/blob/367a58e25aacf85549a7335f7607ba8a53727c81/COMMAND-LINE-TOOLS.md
This is a highly unusual transaction from a single address https://www.blockchain.com/explorer/addresses/btc/17WFx2GQZUmh6Up2NDNCEDk3deYomdNCfk[17WFx2GQZUmh6Up2NDNCEDk3deYomdNCfk] to a single address https://www.blockchain.com/explorer/addresses/btc/1CZDM6oTttND6WPdt3D6bydo7DYKzd9Qik[1CZDM6oTttND6WPdt3D6bydo7DYKzd9Qik] for the exact value with no <change (Bitcoin)>.
By digging a bit, we see that the input comes from exactly 20 outputs, e.g. https://www.blockchain.com/explorer/addresses/btc/1E43t1VCc3Q3STKauEiUoVqLbT81XT67xj[1E43t1VCc3Q3STKauEiUoVqLbT81XT67xj], each of which is a block reward of 50 BTC, the <Bitcoin halving>[reward value at those early times], thus satisfactorily explaining how the exact 10k value was obtained without <change (Bitcoin)>. Because we know that Laszlo was a big <GPU> miner, it is extremelly likely that this transaction was made by him.
* https://www.blockchain.com/explorer/transactions/btc/a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d[a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d] (22 May 2010 07:16:31 GMT+1) also has several <Google> mentions, e.g.:
* https://tokenview.medium.com/bitcoin-pizza-day-the-story-of-buying-pizza-with-10-000-btc-54cd0896f9f1
https://www.blockchain.com/explorer/transactions/btc/a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d even specially marks it "Bitcoin Pizza" and "Notable". Furthermore, the receiving address https://www.blockchain.com/explorer/addresses/btc/17SkEw2md5avVNyYgj6RiXuQKNwkXaxFyQ[17SkEw2md5avVNyYgj6RiXuQKNwkXaxFyQ] is even marked as verified an as belonging to <Jeremy Sturdivant>.
Furthermore this also shows us how Jeremy then transferred about half of Bitcoins 10 minutes later, but we can't know if it was to his own accounts or to cash out.
The nature of this transaction is very different from the previous one. It uses a bunch of inputs to a single address https://www.blockchain.com/explorer/addresses/btc/1XPTgDRhN8RFnzniWCddobD9iKZatrvH4[1XPTgDRhN8RFnzniWCddobD9iKZatrvH4]. 1XPTgDRhN8RFnzniWCddobD9iKZatrvH4 contains a mixture of regular small inputs, but also a bunch of block rewards e.g. https://www.blockchain.com/explorer/addresses/btc/1MUoh2nJudSDdKu9NkcevaCG1Qe3nZHWFZ[], thus also clearly indicating Lsazlo ownership.
8 https://www.blockchain.com/explorer/transactions/btc/d1a429c05868f9be6cf312498b77f4e81c2d4db3268b007b6b80716fb56a35ad[d1a429c05868f9be6cf312498b77f4e81c2d4db3268b007b6b80716fb56a35ad] (29 May) is a common looking transaction with a single input from https://www.blockchain.com/explorer/addresses/btc/1Bc7T7ygkKKvcburmEg14hJKBrLD7BXCkX[1Bc7T7ygkKKvcburmEg14hJKBrLD7BXCkX] and two outputs, one likely being the change to https://www.blockchain.com/explorer/addresses/btc/1GH4dRUAagj67XVjr4TV6J9RFNmGYsLe7c[1GH4dRUAagj67XVjr4TV6J9RFNmGYsLe7c] and the other the actual value to https://www.blockchain.com/explorer/addresses/btc/138eoqfNcEdeU9EG9CKfAxnYYz62uHRNrA[138eoqfNcEdeU9EG9CKfAxnYYz62uHRNrA].
The input chain is complex, but it does contain one block reward on the third level: https://www.blockchain.com/explorer/addresses/btc/17PBFeDzks3LzBTyt6bAMATNhowrvx5kBw[17PBFeDzks3LzBTyt6bAMATNhowrvx5kBw] + 79 rewards 4th level at https://www.blockchain.com/explorer/transactions/btc/045795627ca29ec72a94c23a65ee775ea1949d60b6fba0938b75e1cfe1e6643e[045795627ca29ec72a94c23a65ee775ea1949d60b6fba0938b75e1cfe1e6643e].
* https://www.blockchain.com/btc/tx/d3498960e5f73031f726cb878382cc696938810fa43f918696cbf242afc9765e[d3498960e5f73031f726cb878382cc696938810fa43f918696cbf242afc9765e] (04 June): complex chain, unclear
* https://www.blockchain.com/explorer/transactions/btc/2ea2914c131b2798041a80c00c44081a3559233d69d8b367e4244e6b12096610[2ea2914c131b2798041a80c00c44081a3559233d69d8b367e4244e6b12096610] (10 June): single input/single output. Complex input, but has some 2nd order mines e.g. https://www.blockchain.com/explorer/transactions/btc/e6393f613ef12f5708fa511875b8ff5080f6c8864709f8d92bd99435826a9d0d[e6393f613ef12f5708fa511875b8ff5080f6c8864709f8d92bd99435826a9d0d]
* https://www.blockchain.com/explorer/transactions/btc/ea595789878b673776d0577cbc6063db611bb4e2954e226459d556995f547922[ea595789878b673776d0577cbc6063db611bb4e2954e226459d556995f547922] (24 June): single input/single output. Complex input, but has some 2nd order mines e.g. https://www.blockchain.com/explorer/transactions/btc/b9a0c2d24a744b79fe001a67468c456746b74e94a6ce68a2e5f80bf645d678b9[b9a0c2d24a744b79fe001a67468c456746b74e94a6ce68a2e5f80bf645d678b9]
* https://www.blockchain.com/explorer/transactions/btc/461f91a98bbe2f269d8af938039e185287761677f0418fcc8238c5f3dca72935[461f91a98bbe2f269d8af938039e185287761677f0418fcc8238c5f3dca72935] (02 Jul 2010 08:39:17 GMT+1): single 20k input to two 10k outputs. Did he get 2x two pizzas at once? Complex input.
* https://www.blockchain.com/explorer/transactions/btc/a47f927ca1adeeb4394200e8a37a9297b07e784a251569074a9fc2c04855560f[a47f927ca1adeeb4394200e8a37a9297b07e784a251569074a9fc2c04855560f] (02 Jul 2010 09:07:35 GMT+1): too close in time to the previous one, unless he was having a massive pizza party with invitees!
* https://www.blockchain.com/explorer/transactions/btc/77036fa2ac75212be1ce93e8e1008d5cb2bcbb51aa560a5fe29c9c1423bbd00e[77036fa2ac75212be1ce93e8e1008d5cb2bcbb51aa560a5fe29c9c1423bbd00e] (02 Jul 2010 09:14:33 GMT+1): the party grows even larger
= Lost Bitcoin case
{c}
{parent=History of Bitcoin}
= James Howells
{c}
{parent=Lost Bitcoin case}
{title2=8000 BTC}
{title2=Newport City, Wales}
* https://www.linkedin.com/in/howelzy/
> Might know a thing or two about landfills.
Epic.
* https://www.independent.co.uk/news/uk/home-news/lost-bitcoin-crypto-james-howells-b2406517.html
> The bizarre saga started in 2013 when Mr Howells, put the hardware from an old laptop that contained 8,000 bitcoins, the world’s leading cryptocurrency, in a black bag in his hallway.
"I was doing a clear-out in my office and put a lot of items into a bag which I then placed at the front door of my house," he said. "I woke up the next morning and my ex-partner had already taken the bags to the landfill site; she thought she was doing me a favour, it wasn’t her fault."
* https://www.bbc.co.uk/news/uk-wales-67297013
= Stefan Thomas
{c}
{parent=Lost Bitcoin case}
{title2=7002 BTC}
{title2=IronKey 2 with password attempts left}
https://www.nytimes.com/2021/01/12/technology/bitcoin-passwords-wallets-fortunes.html
> As for his lost password and inaccessible Bitcoin, Mr. Thomas has put the IronKey in a secure facility - he won’t say where - in case cryptographers come up with new ways of cracking complex passwords. Keeping it far away helps him try not to think about it, he said.
> “I would just lay in bed and think about it," Mr. Thomas said.
\Video[https://www.youtube.com/watch?v=Um63OQz3bjo]
{title=What is Bitcoin? (v1) by WeUseCoins (2011)}
{description=This is the video that <Stefan Thomas> as paid 7,002 <Bitcoins> to make back in 2011.}
= Bitcoin community
{c}
{parent=Bitcoin}
= Bitcoin Forum
{c}
{parent=Bitcoin community}
= bitcointalk.org
{synonym}
{title2}
https://bitcointalk.org