SLP167 Chris Belcher - What's The Problem With Bitcoin Surveillance? (jedan od developera jm)
- Chain surveillance techniques
- Downsides for Bitcoin
- What to do about it
-
"Just Use Monero" is insufficient
- PayJoin & P2EP
- fbs – how they work
- Benefits and costs
https://www.youtube.com/watch?v=6mhGdiKucvM
------------------
izasla je dugo ocekivana verzija jm koja ima novu funkciju 'fidelity bond' (fb) o kojoj se pisalo prije par godina. fb je funkcija koja unapreduje zastitu od 'sybil' napada na nacin da sybil napadi postaju skupi za izvodit a samim time i sanse za uspjesno izvodenje su puno manje. sybil napad je pokusaj advisorya da sta vecim udjelom sudjeluje u cj tx kako bi skontao ulaznu transakciju takera i znao njegov izlazni cj utxo. ukoliko advisory uspjesno izvede napad, cj utxo takera nema anonimnosti ni privatnosti kojoj se nadao. fb je utxo koji maker pri svojoj ponudi objavljuje zajedno sa ranije spomenutim podacima, tip provizije, visina provizije, minimalna i maksimalna kolicina za cj. fb adresa koja se generira mora biti vremenski zakljucana min 1 mjesec - OP_CHECKLOCKTIMEVERIFY. svi utxo na adresi ce se moci potrosit tek nakon tog datuma. duzi locktime i veca kolicina = veci fb value.
Kod: Označi sve
id | locktime | locked btc | fidelity bond value
0 | 2021-10-01 | 0.02062579 | 0.0000000026692526
1 | 2021-10-01 | 0.98216626 | 0.0000058330722117
2 | 2022-01-01 | 1.29975114 | 0.0000672965076121
3 | 2024-08-01 | 12.6105895 | 0.3372181069915929
^ vrijeme igra veliku ulogu: 12.61 btc zakljucano na 1 mjesec = 0.0000xxxxxxxxx, 3 godine = 0.33
bond_value = locked_coins^2 * (exp(interest_rate * locktime) - 1)^2
nakon otkljucavanja utxo, moze se i dalje koristit kao fb medjutim fb value gubi vrijednost u narednih y vremena, y=locktime. to je neka vrsta garancije, daje vecu sigurnost da nije advisory. da bi advisory odradio sybil attack, potrebna mu je veca kolicina btca, primjerice 1 btc za svakog makera kojeg vrti, ako je N=11 u cj tx treba mu 10 makera tj yield generatora (yg) koji ce zakljucat po 1 btc na minimalno 1 mjesec za deanonimizaciju jedne transakcije. makeru se jos treba posrecit da taker u jednoj tx odabere advisorya vise puta kao counterpartya. to je 10 btc zakljucano za deanonimizaciju 1 transakcije mjesecno. dnevno u prosjeku ima min 20 cj tx na jm mrezi a vjerovatno i vise, na taj nacin deanonimizacija postaje skupa jer bi advisoryu dnevno trebalo da zakljuca 200 btc * 30 dana = 6000 btc mjesecno. gruba racunica, njihova tablica ispod je sigurno tacnija. btc na fb adresi nije izubljen samo zakljucan. manji dio je potrosen na cj i tx provizije. jm (joinmarket) je neovisan o nekom specificnom serveru ili setupu - dovoljan je public irc server za komunikaciju makera i takera. odradio sam upgrade i slozio fb adresu, vidjet cemo kako radi.
Edit 3.8.20201:
na taj nacin deanonimizacija postaje skupa jer bi advisoryu dnevno trebalo da zakljuca 200 btc * 30 dana = 6000 btc mjesecno. gruba racunica,
NE - kriva racunica, a i logika. evo razgovor od maloprije sa jednim devom. - 'right now if a fidelity-bond-aware taker does a coinjoin with 7 makers, a sybil attacker would have to lock up 19303 BTC for 1 year or burn 24 BTC to successfully attack'.
Sybil attacks from external enemies.
Assuming the makers in the offerbook right now are not sybil attackers, how much would a sybil attacker starting now have to sacrifice to succeed in their attack with 95% probability. Also assumes that takers are not price-sensitive and that their max coinjoin fee is configured high enough that they dont exclude any makers.
- burned coins su (nepovratni) btc placeni drugima kroz tx i cj fees (ispod u tablici)
Kod: Označi sve
Maker count | 6month locked coins / BTC | 1y / BTC | 2y / BTC | 5y / BTC | 10y / BTC | Required burned coins / BTC
1 4075.80311141 2037.90155570 1018.95077785 407.58031114 203.79015557 2.54737694
2 9985.50383206 4992.75191603 2496.37595801 998.55038321 499.27519160 6.24093990
3 16591.22449398 8295.61224699 4147.80612350 1659.12244940 829.56122470 10.36951531
4 23605.07614412 11802.53807206 5901.26903603 2360.50761441 1180.25380721 14.75317259
5 30908.95226151 15454.47613075 7727.23806538 3090.89522615 1545.44761308 19.31809516
6 38436.48993508 19218.24496754 9609.12248377 3843.64899351 1921.82449675 24.02280621
7 46145.37141258 23072.68570629 11536.34285314 4614.53714126 2307.26857063 28.84085713
8 54006.35319114 27003.17659557 13501.58829779 5400.63531911 2700.31765956 33.75397074
9 61998.06687791 30999.03343895 15499.51671948 6199.80668779 3099.90334390 38.74879180
10 70104.24376124 35052.12188062 17526.06094031 7010.42437612 3505.21218806 43.81515235
11 78312.10103794 39156.05051897 19578.02525948 7831.21010379 3915.60505190 48.94506315
12 86611.34090308 43305.67045154 21652.83522577 8661.13409031 4330.56704515 54.13208806
13 94993.49752774 47496.74876387 23748.37438193 9499.34975277 4749.67487639 59.37093595
14 103305.31645607 51652.65822803 25826.32911402 10330.53164561 5165.26582280 64.56582279
15 111829.32550816 55914.66275408 27957.33137704 11182.93255082 5591.46627541 69.89332844
16 120150.62833809 60075.31416905 30037.65708452 12015.06283381 6007.53141690 75.09414271
17 128712.06174194 64356.03087097 32178.01543548 12871.20617419 6435.60308710 80.44503859
18 137325.29985365 68662.64992683 34331.32496341 13732.52998537 6866.26499268 85.82831241
19 145987.20373239 72993.60186620 36496.80093310 14598.72037324 7299.36018662 91.24200233
20 154694.98142463 77347.49071232 38673.74535616 15469.49814246 7734.74907123 96.68436339
21 163446.13409378 81723.06704689 40861.53352345 16344.61340938 8172.30670469 102.15383381
22 172238.41268740 86119.20634370 43059.60317185 17223.84126874 8611.92063437 107.64900793
23 181069.78269463 90534.89134731 45267.44567366 18106.97826946 9053.48913473 113.16861418
24 189938.39519667 94969.19759833 47484.59879917 18993.83951967 9496.91975983 118.71149700
25 198842.56287069 99421.28143535 49710.64071767 19884.25628707 9942.12814353 124.27660179
Sybil attacks from enemies within
Assume a sybil attack is ongoing right now and that the counterparties with the most valuable fbs are actually controlled by the same entity. Then, what is the probability of a successful sybil attack for a given maker count, and what is the fb value being foregone by not putting all bitcoins into just one maker.
Kod: Označi sve
Maker count | Success probability | Foregone value / BTC²
1 99.84087% 0.0000000000000000
2 86.39269% 0.0250268908643471
3 91.85876% 0.0349079985364840
4 99.87171% 0.0378567199964329
5 58.96527% 0.0379379121631664
6 84.53132% 0.0380012468562788
7 - 10 100.0% 0.0380252755344617
ova druga tablica mi jos u potpunosti nije jasna, malo su mi cudni brojevi. preporuca se da se fb adresa funda sweepanje bez change adrese i da nema veze sa ikakvim privatnim radnjama jer se fb utxo prikazuje svima. fb adresa koja ce biti zakljucana do 1.8.2024 00:00 se generira ovako:
python3 wallet-tool.py ~/.joinmarket/wallets/wallet.jmdat gettimelockaddress 2024-8
Kod: Označi sve
path = m/84'/0'/0'/2/21:1722470400
Coins sent to this address will be not be spendable until August 2024. Full date: 2024-08-01 00:00:00
WARNING: Only send coins here which are from coinjoins or otherwise not linked to your identity. Also, use a sweep transaction when fund
ing the timelocked address, i.e. Don't create a change address. See the privacy warnings in fidelity-bonds.md
bc1XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
nevezano za fb. sendpayment.py skripta radi cj kod slanja btc. broj N se moze definirat sa -N, a danas sam naso -P koja nudi popis svih makera. ima mogucnost interaktivnog biranja counterpartya (cp) tj makera sa kojima ce se napravit cj utxo. izabere se default 8-10 ljudi. proci cemo kroz ubrzanu proceduru izrade cj tx i poslati btc. djelove outputa sam maknuo jer se radi o debug outputu koji je enkodiran, i nisu lagano citljivi bez odredjenih kljuceva koji se razmjenjuju izmedju cp.
python sendpayment.py -P ~/.joinmarket/wallets/wallet.jmdat <AMOUNT> <ADDRESS>
- izaberemo 8-10 cp po defaultu sa kojima cemo da radimo cj tx. mozemo da posaljemo -N Y pa cemo morati da izaberemo Y counterpartya.
Kod: Označi sve
Considered orders:
0. J54i44DzgV6aAYhx, CJ fee: 0, tx fee: 0
1. J57UPA4VRQMit8PK, CJ fee: 7, tx fee: 2
2. J586upJsSL5QwMtY, CJ fee: 47, tx fee: 0
3. J55yAFKn9uowNzcZ, CJ fee: 95, tx fee: 0
4. J57BE9XrriMUBUz5, CJ fee: 0.000002, tx fee: 1
5. J5DDEx7RgD29gQwg, CJ fee: 0.000002, tx fee: 0
6. J5E3v3mNqHPAzA6x, CJ fee: 0.0000049, tx fee: 0
7. J54ErTJpcAtQENbf, CJ fee: 0.000005, tx fee: 0
8. J5CHEi1ezp6q96KA, CJ fee: 0.000007, tx fee: 0
9. J5EpNPtkaAbMxDr5, CJ fee: 0.000008, tx fee: 0
10. J57AJTTrQY3gPuic, CJ fee: 0.000010, tx fee: 100
11. J5FHTkPhjUfuos8C, CJ fee: 0.000009, tx fee: 0
12. J53BLDCXvfSSFJ7f, CJ fee: 0.000009, tx fee: 0
13. J5giugyvAEDChzHO, CJ fee: 0.000009, tx fee: 0
14. J5A4PJQjHfMrbDws, CJ fee: 0.000009, tx fee: 0
15. J5Az99PYaxSfX7MZ, CJ fee: 0.000010, tx fee: 86
16. J5ZjyrMssME9HnWO, CJ fee: 0.000010, tx fee: 62
17. J59nPq5N1BtRCQoO, CJ fee: 0.000010, tx fee: 45
18. J539STedY3WynPji, CJ fee: 0.000010, tx fee: 1
19. J5EDEpcYgSxGdKCz, CJ fee: 0.000010, tx fee: 0
20. J52KaYr9nNHQU1Zd, CJ fee: 0.000012, tx fee: 0
21. J59CpEHMVhnMGN4s, CJ fee: 0.000015, tx fee: 100
22. J5532d5LNpot7cbJ, CJ fee: 0.000015, tx fee: 96
23. J5pquugdAzihn9dO, CJ fee: 0.000014, tx fee: 0
24. J5DURukhRH1t93gY, CJ fee: 0.000014, tx fee: 0
25. J5CwLVUcq75L3Sp3, CJ fee: 0.000016, tx fee: 103
26. J59fJRxus2xKmYzh, CJ fee: 0.000018, tx fee: 0
27. J522n8H3Na683wZw, CJ fee: 0.000019, tx fee: 82
28. J5A5T5uNTjpbELLY, CJ fee: 0.000019, tx fee: 73
29. J5AYJ4QnwWXLT81M, CJ fee: 0.000019, tx fee: 64
30. J5re43wVYrujBYuO, CJ fee: 0.000020, tx fee: 107
31. J57EmTRK2SkCM5BO, CJ fee: 0.000019, tx fee: 6
32. J597YuQadNDdbb7W, CJ fee: 0.000019, tx fee: 0
33. J5Ai8vqA2Rc8gEKO, CJ fee: 0.000020, tx fee: 82
34. J58oN4HRmhSHZWQ8, CJ fee: 0.000021, tx fee: 108
35. J56ZhobwMJoQtTju, CJ fee: 0.00002, tx fee: 20
36. J58kGTPKPDF4nbVZ, CJ fee: 0.000021, tx fee: 98
37. J54KCdkGEZFok9xQ, CJ fee: 0.000020, tx fee: 0
38. J5D2vNuDTVu1sYZa, CJ fee: 0.00002, tx fee: 0
39. J5CRBfxLewffT7Be, CJ fee: 0.000020, tx fee: 0
40. J58DWMBCBFpuqTpP, CJ fee: 0.000020, tx fee: 0
41. J55uftmLbY28JsJT, CJ fee: 0.000021, tx fee: 86
42. J54BsWovA9oUwokr, CJ fee: 0.000022, tx fee: 115
43. J54z98QVGxHQaMCf, CJ fee: 0.000021, tx fee: 1
44. J5CRVJx45m3CCk1t, CJ fee: 0.000021, tx fee: 0
45. J5515s2x6pQUUqpu, CJ fee: 0.000021, tx fee: 0
46. J55ro9bWCnzHwznw, CJ fee: 0.000022, tx fee: 0
47. J5Ck4w4ctdvhadR8, CJ fee: 0.000022, tx fee: 0
48. J53HJdG7Knt6YLhH, CJ fee: 0.000028, tx fee: 0
49. J55VYHWtwmgAJSeb, CJ fee: 0.000029, tx fee: 0
50. J54z9KfBC52ucVCz, CJ fee: 0.000031, tx fee: 155
51. J54nPp3TQN4XBnbv, CJ fee: 0.000030, tx fee: 1
52. J54tzYJYZt32ZmbN, CJ fee: 0.000096, tx fee: 0
53. J5BkEpY6geytB4E8, CJ fee: 0.000099, tx fee: 0
54. J5Btm4X12VVNVGEA, CJ fee: 0.000100, tx fee: 15
55. J57bAK2pmMeuzP1S, CJ fee: 0.000131, tx fee: 0
56. J57qxz9Wghdtqt4u, CJ fee: 0.00015, tx fee: 5
57. J5R7mYaL5qbkLhaO, CJ fee: 0.0005, tx fee: 150
58. J5AUkSMET7apAbsX, CJ fee: 0.000999, tx fee: 0
59. J5DBTdT78LqeAtLu, CJ fee: 0.000999, tx fee: 0
60. J5qguhhjjULb8yiO, CJ fee: 0.000999, tx fee: 0
61. J58p7vG2mevMJEeY, CJ fee: 0.000999, tx fee: 0
62. J54vozsvDDrTuzrj, CJ fee: 0.000999, tx fee: 0
63. J5AaiaM9AsSBQugb, CJ fee: 0.001602, tx fee: 0
- popis izabranih cp
Kod: Označi sve
2021-08-01 16:27:44,254 [MainThread ] [INFO ] Chose these orders:
{'J53BLDCXvfSSFJ7f': {'cjfee': '0.000009',
'counterparty': 'J53BLDCXvfSSFJ7f',
'fidelity_bond_value': 0,
'maxsize': 138162365,
'minsize': 94910,
'oid': 0,
'ordertype': 'sw0reloffer',
'txfee': 0},
'J54ErTJpcAtQENbf': {'cjfee': '0.000005',
'counterparty': 'J54ErTJpcAtQENbf',
'fidelity_bond_value': 0,
'maxsize': 152311908,
'minsize': 49989,
'oid': 0,
'ordertype': 'sw0reloffer',
'txfee': 0},
'J57UPA4VRQMit8PK': {'cjfee': '7',
'counterparty': 'J57UPA4VRQMit8PK',
'fidelity_bond_value': 0,
'maxsize': 2322173348,
'minsize': 2730,
'oid': 0,
'ordertype': 'sw0absoffer',
'txfee': 2},
'J586upJsSL5QwMtY': {'cjfee': '47',
'counterparty': 'J586upJsSL5QwMtY',
'fidelity_bond_value': 0,
'maxsize': 120259695,
'minsize': 27300,
'oid': 0,
'ordertype': 'sw0absoffer',
'txfee': 0},
'J5CHEi1ezp6q96KA': {'cjfee': '0.000007',
'counterparty': 'J5CHEi1ezp6q96KA',
'fidelity_bond_value': 0,
'maxsize': 1562493706,
'minsize': 461628,
'oid': 0,
'ordertype': 'sw0reloffer',
'txfee': 0},
'J5E3v3mNqHPAzA6x': {'cjfee': '0.0000049',
'counterparty': 'J5E3v3mNqHPAzA6x',
'fidelity_bond_value': 0,
'maxsize': 378297467,
'minsize': 100000,
'oid': 0,
'ordertype': 'sw0reloffer',
'txfee': 0},
'J5EpNPtkaAbMxDr5': {'cjfee': '0.000008',
'counterparty': 'J5EpNPtkaAbMxDr5',
'fidelity_bond_value': 0,
'maxsize': 390301630,
'minsize': 107132,
'oid': 0,
'ordertype': 'sw0reloffer',
'txfee': 0},
'J5FHTkPhjUfuos8C': {'cjfee': '0.000009',
'counterparty': 'J5FHTkPhjUfuos8C',
'fidelity_bond_value': 0,
'maxsize': 100235809,
'minsize': 27300,
'oid': 0,
'ordertype': 'sw0reloffer',
'txfee': 0},
'J5giugyvAEDChzHO': {'cjfee': '0.000009',
'counterparty': 'J5giugyvAEDChzHO',
'fidelity_bond_value': 0,
'maxsize': 102553516,
'minsize': 103733,
'oid': 0,
'ordertype': 'sw0reloffer',
'txfee': 0}}
- info
Kod: Označi sve
[INFO ] fee breakdown for J57UPA4VRQMit8PK totalin=xxxxx cjamount=98216626 txfee=2 realcjfee=7
[INFO ] fee breakdown for J586upJsSL5QwMtY totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=47
[INFO ] fee breakdown for J5E3v3mNqHPAzA6x totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=477
[INFO ] fee breakdown for J54ErTJpcAtQENbf totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=487
[INFO ] fee breakdown for J5EpNPtkaAbMxDr5 totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=779
[INFO ] fee breakdown for J5CHEi1ezp6q96KA totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=682
[INFO ] fee breakdown for J53BLDCXvfSSFJ7f totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=877
[INFO ] fee breakdown for J5FHTkPhjUfuos8C totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=877
[INFO ] fee breakdown for J5giugyvAEDChzHO totalin=xxxxx cjamount=98216626 txfee=0 realcjfee=877
[INFO ] INFO:Got all parts, enough to build a tx
[DEBUG] rpc: getmempoolinfo None
[DEBUG] rpc: estimatesmartfee [3]
[INFO ] Using bitcoin network feerate for 3 block confirmation target (randomized for privacy): 3071 sat/vkB (3.0 sat/vB)
[INFO ] Based on initial guess: 0.00008455 BTC (8455 sat), we estimated a miner fee of: 0.00007913 BTC (7913 sat)
[INFO ] fee breakdown for me totalin=xxxxx my_txfee=7913 makers_txfee=2 cjfee_total=5110 => changevalue=XXXXXXXXX
[INFO ] obtained tx
- cp vracaju potpis za svaki njihov input koji ce se koristit u cj tx
Kod: Označi sve
[DEBUG] found good sig at index=25
[DEBUG] nick = J57UPA4VRQMit8PK sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=2
[DEBUG] found good sig at index=5
[DEBUG] found good sig at index=9
[DEBUG] found good sig at index=10
[DEBUG] found good sig at index=19
[DEBUG] found good sig at index=24
[DEBUG] nick = J586upJsSL5QwMtY sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=18
[DEBUG] nick = J5E3v3mNqHPAzA6x sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=1
[DEBUG] found good sig at index=3
[DEBUG] found good sig at index=4
[DEBUG] found good sig at index=7
[DEBUG] found good sig at index=13
[DEBUG] found good sig at index=21
[DEBUG] found good sig at index=22
[DEBUG] nick = J54ErTJpcAtQENbf sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=23
[DEBUG] nick = J5EpNPtkaAbMxDr5 sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=0
[DEBUG] found good sig at index=6
[DEBUG] found good sig at index=11
[DEBUG] found good sig at index=17
[DEBUG] nick = J5CHEi1ezp6q96KA sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=15
[DEBUG] found good sig at index=20
[DEBUG] nick = J53BLDCXvfSSFJ7f sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=14
[DEBUG] nick = J5FHTkPhjUfuos8C sent all sigs, removing from nonrespondant list
[DEBUG] found good sig at index=12
[DEBUG] nick = J5giugyvAEDChzHO sent all sigs, removing from nonrespondant list
[INFO ] all makers have sent their signatures
[INFO ] INFO:Transaction is valid, signing..
- ok
Kod: Označi sve
goodtx
tx in a block: <txid> with 1 confirmations.
ukupno poslano ~5000 sat makerima za cj fee, ~7000 sat minerima za tx fee ukupno ~12000 sat ~ 0.00012% ukupne cj utxo vrijednosti 1 btc za cj sa 9 ljudi ukupno 10 izlaznih cj utxo. ako se integrira mweb ili nesto slicno na btc, vidjet cemo kako ce se to odrazit na jm - mozda postane za one koji hoce jos jedan dodatni layer zastite jer kodovi imaju propuste. nisu uvijek kodovi. propusti i popustanja u razmisljanju i ovdasnjem sistemu su mi nekako zanimljivi.
ako je netko koristio lightning network (ln) volio bi cut iskustva. mada i dalje mi se ne svidjaju sidechainovi. neki projekti se pokusavaju progurat samo zbog povremeno visokih provizija na btc ali lakse je napravit kaos i probleme pa ponudit promjene.
docs:
https://github.com/JoinMarket-Org/joinm ... y-bonds.md
https://joinmarket.me/blog/blog/blue-sk ... -thoughts/
- meni jako zanimljiva diskusija, ideje oko izrade p2p decentralizirane jm mreze. iako je mozda najlakse koristit tor da bi se pruzila anonimnost korisnicima, treba pazit da se kod pise jednostavno da moze radit bez nekog dodatka uz mogucnost funkcija recimo proxya. sa ephemeral tor v3 adresama koje bi ujedno bile i id makera ili takera medju ostalim opisanim idejama, jm sustav postaje ovisan o toru. ili o bilo kojoj drugoj mrezi, mogucnosti, dodatku.. za koju treba prekodiravat pol koda.
https://github.com/JoinMarket-Org/joinm ... issues/415