name: Bitcoinin yksityisyys goal: Ymmärtää ja hallita yksityisyyden suojan periaatteet Bitcoinia käytettäessä objectives:
- Määritellään teoreettiset käsitteet, joita tarvitaan yksityisyyden suojaan liittyvien kysymysten ymmärtämiseksi
- Bitcoin-käyttäjien luottamuksellisuuden menettämiseen liittyvien riskien tunnistaminen ja lieventäminen
- Menetelmien ja työkalujen käyttö yksityisyyden suojaamiseksi Bitcoinissa
- Ymmärtää ketjuanalyysimenetelmiä ja kehittää puolustusstrategioita
Suojaa yksityisyytesi Bitcoinissa
Maailmassa, jossa rahaliikenteen luottamuksellisuudesta on vähitellen tulossa ylellisyyttä, yksityisyyden suojan periaatteiden ymmärtäminen ja hallitseminen Bitcoinia käytettäessä on välttämätöntä. Tämä kurssi antaa sinulle kaikki avaimet, sekä teoreettiset että käytännölliset, jotta voit saavuttaa tämän itsenäisesti.
Nykyään Bitcoiniin erikoistuneet yritykset ovat erikoistuneet lohkoketjuanalyysiin. Heidän ydinliiketoimintansa koostuu nimenomaan tunkeutumisesta yksityisyyteesi, jotta liiketoimiesi luottamuksellisuus vaarantuisi. Todellisuudessa Bitcoinissa ei ole mitään "oikeutta yksityisyyteen". On siis sinun, käyttäjän, tehtävä puolustaa luonnollisia oikeuksiasi ja suojella transaktioiden luottamuksellisuutta, koska kukaan muu ei tee sitä puolestasi.
Kurssi on suunniteltu kattavaksi ja yleiseksi. Jokainen tekninen käsite käsitellään yksityiskohtaisesti ja sitä tuetaan selittävillä kaavioilla. Tavoitteena on tehdä tietämys kaikkien saataville. Siksi BTC204 on edullinen aloittelijoille ja keskitason käyttäjille. Kurssi tarjoaa lisäarvoa myös kokeneemmille bitcoin-käyttäjille, sillä syvennymme tiettyihin teknisiin käsitteisiin, jotka usein ymmärretään väärin.
Tule mukaan muuttamaan Bitcoinin käyttöäsi ja tule tietoiseksi käyttäjäksi, joka pystyy ymmärtämään luottamuksellisuuteen ja yksityisyytesi suojaamiseen liittyvät kysymykset.
Johdanto
Kurssin yleiskatsaus
Tervetuloa BTC204-kurssille!
Maailmassa, jossa rahaliikenteen luottamuksellisuudesta on vähitellen tulossa ylellisyyttä, yksityisyyden suojan periaatteiden ymmärtäminen ja hallitseminen Bitcoinia käytettäessä on välttämätöntä. Tämä kurssi antaa sinulle kaikki avaimet, sekä teoreettiset että käytännölliset, jotta voit saavuttaa tämän itsenäisesti.
Nykyään Bitcoiniin erikoistuneet yritykset ovat erikoistuneet lohkoketjuanalyysiin. Heidän ydinliiketoimintansa koostuu nimenomaan tunkeutumisesta yksityisyyteesi, jotta liiketoimiesi luottamuksellisuus vaarantuisi. Todellisuudessa Bitcoinissa ei ole mitään "oikeutta yksityisyyteen". On siis sinun, käyttäjän, tehtävä puolustaa luonnollisia oikeuksiasi ja suojella transaktioiden luottamuksellisuutta, koska kukaan muu ei tee sitä puolestasi.
Bitcoinissa ei ole kyse vain "Number Go Upista" ja säästöjen arvon säilyttämisestä. Ainutlaatuisten ominaisuuksiensa ja historiansa ansiosta se on ennen kaikkea vastatalouden väline. Tämän mahtavan keksinnön ansiosta voit vapaasti määrätä rahoistasi, käyttää niitä ja kerryttää niitä ilman, että kukaan voi estää sinua.
Bitcoin tarjoaa rauhanomaisen pakotien valtion ikeestä, jolloin voit nauttia täysin luonnollisista oikeuksistasi, joita vakiintuneet lait eivät voi kyseenalaistaa. Satoshi Nakamoton keksinnön ansiosta sinulla on valta saada aikaan yksityisomaisuutesi kunnioittaminen ja saada takaisin sopimusvapaus.
Bitcoin ei kuitenkaan ole oletusarvoisesti anonyymi, mikä voi olla riski vastataloutta harjoittaville henkilöille, erityisesti alueilla, joilla vallitsee hirmuvalta. Tämä ei kuitenkaan ole ainoa vaara. Koska bitcoin on arvokas ja mitattavissa oleva omaisuuserä, se voi olla varkaiden kohteena. Yksityisyyden suojaamisesta tulee siis myös turvallisuuskysymys: se voi auttaa sinua estämään hakkeroinnin ja fyysiset hyökkäykset.
Kuten tulemme näkemään, vaikka protokolla tarjoaa itsessään tietynlaisen luottamuksellisuussuojan, on ratkaisevan tärkeää käyttää lisätyökaluja luottamuksellisuuden optimoimiseksi ja puolustamiseksi.
Tämän kurssin tarkoituksena on antaa kattava yleiskatsaus Bitcoinin luottamuksellisuuteen liittyviin kysymyksiin. Jokaista teknistä käsitettä käsitellään yksityiskohtaisesti selittävien kaavioiden tukemana. Tavoitteena on tehdä tämä tieto kaikkien, myös aloittelijoiden ja keskitason käyttäjien, ulottuville. Kokeneemmille Bitcoin-käyttäjille käsittelemme kurssin aikana myös erittäin teknisiä ja joskus vähän tunnettuja käsitteitä, jotta kunkin aiheen ymmärtäminen syvenee.
Tämän kurssin tavoitteena ei ole tehdä sinusta täysin anonyymiä käyttäessäsi Bitcoinia, vaan antaa sinulle välttämättömät työkalut, joiden avulla osaat suojata luottamuksellisuutesi henkilökohtaisten tavoitteidesi mukaisesti. Sinulla on vapaus valita esitellyistä käsitteistä ja työkaluista omat, omiin tavoitteisiisi ja tarpeisiisi räätälöidyt strategiat.
Jakso 1: Määritelmät ja keskeiset käsitteet
Aluksi käymme läpi Bitcoinin toimintaa ohjaavat perusperiaatteet, jotta voimme sitten rauhassa käsitellä luottamuksellisuuteen liittyviä käsitteitä. On tärkeää hallita muutamia peruskäsitteitä, kuten UTXO, osoitteiden vastaanottaminen ja skriptaaminen, ennen kuin voit täysin ymmärtää käsitteet, joita käsittelemme seuraavissa osioissa. Esittelemme myös Bitcoinin yleisen luottamuksellisuusmallin, sellaisena kuin Satoshi Nakamoto sen kuvitteli, jonka avulla voimme hahmottaa siihen liittyvät panokset ja riskit.
2 jakso: Ketjuanalyysin ymmärtäminen ja siltä suojautuminen
Toisessa osiossa tarkastelemme lohkoketjuanalyysiyritysten käyttämiä tekniikoita, joiden avulla ne voivat seurata toimintaasi Bitcoinissa. Näiden menetelmien ymmärtäminen on ratkaisevan tärkeää yksityisyydensuojasi vahvistamiseksi. Tämän jakson tavoitteena on tutkia hyökkääjien strategioita, jotta voimme ymmärtää paremmin riskejä ja valmistella maaperää tekniikoille, joita tutkimme seuraavissa jaksoissa. Analysoimme transaktiomalleja, sisäisiä ja ulkoisia heuristiikkoja sekä näiden mallien todennäköisiä tulkintoja. Teorian lisäksi opettelemme käytännön esimerkkien ja harjoitusten avulla, miten lohko-etsintäohjelmaa käytetään ketjuanalyysiin.
Jakso 3: Parhaat käytännöt yksityisyyden suojaamiseksi
Koulutuskurssimme kolmannessa osiossa siirrymme itse asiaan: harjoitteluun! Tavoitteena on hallita kaikki olennaiset parhaat käytännöt, joista pitäisi tulla jokaiselle Bitcoin-käyttäjälle luonnollisia refleksejä. Käsittelemme tyhjien osoitteiden käyttöä, merkitsemistä, konsolidointia, kokonaisten solmujen käyttöä sekä KYC- ja hankintamenetelmiä. Tavoitteena on antaa sinulle kattava yleiskuva sudenkuopista, joita on syytä välttää, jotta voimme luoda vankan perustan pyrkimyksellemme suojella yksityisyyttä. Joidenkin näiden käytäntöjen osalta sinua ohjataan erityiseen opetusohjelmaan, jossa kerrotaan, miten ne pannaan täytäntöön.
Jakso 4: Coinjoin-transaktioiden ymmärtäminen
Miten voimme puhua Bitcoinin yksityisyydestä mainitsematta kolikkoliitoksia? Luvussa 4 saat selville kaiken, mitä sinun tarvitsee tietää tästä yhdistämismenetelmästä. Saat tietää, mitä coinjoinit ovat, niiden historian ja tavoitteet sekä erilaiset olemassa olevat coinjoin-tyypit. Kokeneemmille käyttäjille kerrotaan lopuksi, mitä anonsetit ja entropia ovat ja miten ne lasketaan.
5 jakso: Muiden kehittyneiden luottamuksellisuustekniikoiden haasteiden ymmärtäminen
Viidennessä osiossa tarkastelemme kaikkia muita tekniikoita, joilla voit suojata yksityisyytesi Bitcoinissa, coinjoinin lisäksi. Vuosien varrella kehittäjät ovat osoittaneet huomattavaa luovuutta suunnitellessaan yksityisyyden suojaan tarkoitettuja työkaluja. Tarkastelemme kaikkia näitä menetelmiä, kuten payjoinia, yhteistransaktioita, Coin Swapia ja Atomic Swapia, ja kerromme yksityiskohtaisesti, miten ne toimivat, niiden tavoitteet ja mahdolliset heikkoudet.
Tarkastelemme myös yksityisyyden suojaa solmujen verkon ja tapahtumien levittämisen tasolla. Keskustelemme myös erilaisista protokollista, joita on vuosien varrella ehdotettu käyttäjien yksityisyyden suojaamiseksi Bitcoinissa, mukaan lukien staattiset osoiteprotokollat.
Valmiina tutkimaan Bitcoinin yksityisyyden monimutkaisuuksia? Lähdetään liikkeelle!
Määritelmät ja keskeiset käsitteet
Bitcoinin UTXO-malli
Bitcoin on ennen kaikkea valuutta, mutta tiedätkö itse asiassa, miten BTC:t esitetään protokollassa?
UTXOs on Bitcoin: mitä ne ovat?
Bitcoin-protokolla perustuu UTXO-malliin, joka on lyhenne sanoista "Unspent Transaction Output".
Tämä malli eroaa huomattavasti perinteisistä pankkijärjestelmistä, joissa rahoitusvirtojen seuranta perustuu tili- ja saldomekanismiin. Pankkijärjestelmässä yksittäisiä saldoja ylläpidetäänkin henkilöllisyyteen liitetyillä tileillä. Kun esimerkiksi ostat patongin leipurilta, pankkisi yksinkertaisesti veloittaa ostosumman tililtäsi, jolloin saldosi pienenee, kun taas leipurin tilille hyvitetään sama summa, jolloin sen saldo kasvaa. Tässä järjestelmässä tilillesi tulevan ja sieltä lähtevän rahan välillä ei ole mitään yhteyttä, lukuun ottamatta tapahtumakirjanpitoa.
Bitcoin toimii eri tavalla. Tilin käsitettä ei ole olemassa, eikä
rahayksiköitä hallinnoida saldojen vaan UTXO:iden avulla. UTXO edustaa
tiettyä määrää bitcoineja, joita ei ole vielä käytetty, ja muodostaa siten
"bitcoin-palan", joka voi olla suuri tai pieni. Yksi UTXO voi esimerkiksi
olla arvoltaan 500 BTC tai yksinkertaisesti 700 SATS.
**> Satoshi, josta usein käytetään lyhennettä sat, on Bitcoinin pienin yksikkö, joka on verrattavissa fiat-valuuttojen sentteihin.
1 BTC = 100 000 000 SATS
Teoriassa yksi UTXO voi edustaa mitä tahansa arvoa bitcoineina, joka voi vaihdella satista teoreettiseen maksimissaan noin 21 miljoonaan BTC:hen. On kuitenkin loogisesti mahdotonta omistaa kaikkia 21 miljoonaa bitcoinia, ja on olemassa "pölyksi" kutsuttu alempi taloudellinen kynnysarvo, jonka alapuolella UTXO:n käyttäminen katsotaan taloudellisesti kannattamattomaksi.
**> Bitcoinilla koskaan luodun suurimman UTXO:n arvo oli 500 000 BTC. Se luotiin MtGox-alustalla konsolidointioperaation aikana marraskuussa 2011: 29a3efd3ef04f9153d47a990bd7b048a4b2d213daaa5fb8ed670fb85f13bdbcf
UTXO:t ja menoedellytykset
UTXO:t ovat Bitcoinin vaihtovälineitä. Jokaisen transaktion tuloksena kulutetaan UTXO:ita panoksina ja luodaan uusia UTXO:ita tuotoksina. Kun transaktio on suoritettu, panoksina käytetyt UTXO:t katsotaan "käytetyiksi", ja uusia UTXO:ita luodaan ja jaetaan transaktion tuotoksissa ilmoitetuille vastaanottajille. UTXO edustaa siis yksinkertaisesti käyttämätöntä transaktiotulosta ja siten käyttäjälle tiettynä ajankohtana kuuluvaa bitcoinien määrää.
Kaikki UTXO:t on suojattu skripteillä, joissa määritellään ehdot, joiden mukaisesti niitä voidaan käyttää. Käyttäjän on UTXO:n käyttämiseksi osoitettava verkolle, että hän täyttää UTXO:n turvaavassa käsikirjoituksessa määritellyt ehdot. UTXO:t on yleensä suojattu julkisella avaimella (tai vastaanotto-osoitteella, joka edustaa tätä julkista avainta). Käyttäjän on osoitettava, että hänellä on kyseiseen julkiseen avaimeen liittyvä UTXO, jotta hän voi käyttää siihen liittyvän UTXO:n, toimittamalla kyseisellä avaimella tehdyn digitaalisen allekirjoituksen. Tämän vuoksi sanomme, että Bitcoin-lompakko ei itse asiassa sisällä bitcoineja, vaan se tallentaa yksityiset avaimesi, joiden avulla pääset käsiksi UTXO-varmenteisiisi ja näin ollen myös niiden edustamiin bitcoineihin.
Koska Bitcoinissa ei ole tilin käsitettä, lompakon saldo on yksinkertaisesti kaikkien niiden UTXO:iden arvojen summa, joita se voi käyttää. Jos Bitcoin-lompakkosi voi esimerkiksi käyttää seuraavat 4 UTXOa:
- 2 BTC
- 8 BTC
- 5 BTC
- 2 BTC
Salkkusi kokonaissaldo olisi 17 BTC.
Bitcoin-tapahtumien rakenne
Tapahtuman tulot ja lähdöt
Bitcoin-tapahtuma on lohkoketjuun kirjattu operaatio, joka siirtää bitcoinien omistusoikeuden yhdeltä henkilöltä toiselle. Tarkemmin sanottuna, koska olemme UTXO-mallissa eikä tilejä ole, transaktio täyttää käyttöehdot, jotka varmistivat yhden tai useamman UTXO:n, kuluttaa ne ja luo vastaavasti uusia UTXO:ita uusilla käyttöehdoilla. Lyhyesti sanottuna transaktio siirtää bitcoineja tyydytetystä käsikirjoituksesta uuteen käsikirjoitukseen, joka on suunniteltu turvaamaan ne.
Jokainen Bitcoin-tapahtuma koostuu siis yhdestä tai useammasta syötteestä ja yhdestä tai useammasta tuotoksesta. Panokset ovat UTXO:ita, joita transaktio kuluttaa tuotosten tuottamiseksi. Tuotokset ovat uusia UTXO:ita, joita voidaan käyttää tulevien transaktioiden syötteinä.
**> Teoriassa bitcoin-tapahtumassa voisi olla ääretön määrä tuloja ja lähtöjä. Ainoa rajoitus on lohkojen enimmäiskoko.
Bitcoin-tapahtuman jokainen panos viittaa edelliseen käyttämättömään UTXO:hon. Jotta UTXO:ta voidaan käyttää syötteenä, sen haltijan on osoitettava olevansa sen laillinen omistaja validoimalla siihen liittyvä käsikirjoitus eli täyttämällä asetetun käyttöehdon. Yleisesti ottaen tämä tarkoittaa digitaalisen allekirjoituksen antamista, joka on tuotettu julkista avainta vastaavalla yksityisellä avaimella, jolla kyseinen UTXO on alun perin suojattu. Käsikirjoituksessa on siis tarkistettava, että allekirjoitus vastaa julkista avainta, jota käytettiin varojen vastaanottamisen yhteydessä.
Kussakin ulostulossa puolestaan määritetään siirrettävien bitcoinien määrä sekä vastaanottaja. Jälkimmäinen määritellään uudella komentosarjalla, joka yleensä estää juuri luodun UTXO:n vastaanottavalla osoitteella tai uudella julkisella avaimella.
Jotta transaktiota voidaan pitää konsensussääntöjen mukaan pätevänä, kokonaistuoton on oltava pienempi tai yhtä suuri kuin kokonaissyötön. Toisin sanoen transaktion tuottamien uusien UTXO:iden summa ei saa ylittää panoksina kulutettujen UTXO:iden summaa. Tämä periaate on looginen: jos sinulla on vain "500 000 SATS", et voi tehdä "700 000 SATS" -ostoa.
Vaihto ja yhdistäminen Bitcoin-tapahtumassa
Bitcoin-tapahtuman toteuttamista UTXO:ssa voidaan siis verrata kultakolikon uudelleenvalamiseen. UTXO ei nimittäin ole jaettavissa, vaan ainoastaan sulatettavissa. Tämä tarkoittaa, että käyttäjä ei voi yksinkertaisesti jakaa tiettyä bitcoin-määrää edustavaa UTXOa useammaksi pienemmäksi UTXOksi. Hänen on kulutettava se kokonaan transaktiossa luodakseen yhden tai useamman uuden UTXO:n, jonka arvo on mielivaltainen ja jonka on oltava pienempi tai yhtä suuri kuin alkuperäisen UTXO:n arvo.
Tämä mekanismi on samanlainen kuin kultakolikossa. Oletetaan, että omistat 2 unssin kolikon ja haluat maksaa 1 unssin, olettaen, että myyjä ei voi antaa sinulle vaihtorahaa. Sinun pitäisi sulattaa kolikkosi ja valaa kaksi uutta kolikkoa, joista kumpikin on 1 unssin arvoinen.
Bitcoin toimii samalla tavalla. Kuvitellaan, että Alicen UTXO on 10 000 SATS
ja hän haluaa ostaa patongin, jonka hinta on 4 000 SATS. Alice tekee
transaktion, jossa on 1 UTXO, jonka arvo on 10 000 SATSja jonka hän kuluttaa kokonaisuudessaan, ja 2 UTXO:ta, joiden arvo on 4
000 SATS ja 6 000 SATS`. 4 000 SATS:n UTXO lähetetään leipurille maksuna patongista,
kun taas 6 000 SATS:n UTXO palaa Liisalle vaihtorahana. Tätä UTXO:ta, joka palaa
tapahtuman alkuperäiselle liikkeeseenlaskijalle, kutsutaan Bitcoin-jargonissa
"vaihdoksi".
Kuvitellaan nyt, että Alicella ei ole yhtä UTXO:ta, jonka arvo on 10 000
SATS, vaan kaksi UTXO:ta, joiden molempien arvo on 3 000 SATS. Tässä
tilanteessa kumpikaan UTXO ei yksinään riitä asettamaan sauvan 4 000 SATS. Liisan on siksi käytettävä samanaikaisesti kahta UTXO:ta, joiden arvo on
3 000 SATS, tapahtuman syötteenä. Tällä tavoin panosten kokonaismäärä nousee
6 000 SATS:iin, jolloin hän pystyy täyttämään leipurille suoritettavan 4 000 SATS:n maksun. Tätä menetelmää, jossa useat UTXO:t ryhmitellään liiketoimen
panoksiksi, kutsutaan usein "yhdistämiseksi".
Transaktiomaksut
Intuitiivisesti voisi ajatella, että transaktiokustannukset edustavat myös transaktion tuotosta. Todellisuudessa näin ei kuitenkaan ole. Transaktiokustannukset edustavat kokonaispanosten ja kokonaistuotosten välistä erotusta. Tämä tarkoittaa sitä, että kun osa panosten arvosta on käytetty haluttujen tuotosten kattamiseen transaktiossa, tietty osa panoksista jää käyttämättä. Tämä jäljelle jäävä summa muodostaa transaktiokustannukset.
Frais = total inputs - total outputs
Otetaan esimerkiksi Alice, jonka UTXO on 10 000 SATS ja joka haluaa ostaa
patongin 4 000 SATS:n hintaan. Liisa luo tapahtuman, jonka syötteenä on
hänen UTXO:nsa, joka on 10,000 SATS. Sen jälkeen hän luo 4 000
SATS:n suuruisen tuotoksen leipurille, joka maksaa patongin. Kannustaakseen
kaivostyöläisiä sisällyttämään hänen transaktionsa lohkoon Alice jakaa 200
SATSpalkkiota. Sitten hän luo toisen tuotoksen, vaihdon, joka palautetaan
hänelle ja jonka arvo on 5 800 SATS.
Soveltamalla maksukaavaa näemme, että alaikäisille on todellakin jäljellä 200 SATSia:
Frais = total inputs - total outputs
Frais = 10 000 - (4 000 + 5 800)
Frais = 10 000 - 9 800
Frais = 200
Kun louhija onnistuu validoimaan lohkon, hänellä on oikeus periä nämä maksut kaikista lohkoonsa sisältyvistä transaktioista niin sanotun "coinbase"-tapahtuman kautta.
UTXO:iden luominen Bitcoinissa
Jos olet seurannut edellisiä kohtia tarkasti, tiedät nyt, että UTXO:t voidaan luoda vain kuluttamalla muita olemassa olevia UTXO:ita. Tällä tavoin Bitcoin-kolikot muodostavat jatkuvan ketjun. Saatat kuitenkin ihmetellä, miten tämän ketjun ensimmäiset UTXO:t syntyivät. Tämä herättää samanlaisen ongelman kuin kana ja muna: mistä nämä alkuperäiset UTXO:t tulivat?
Vastaus on transaktiokolikkopohjassa.
Coinbase on erityyppinen Bitcoin-tapahtuma, joka on ainutlaatuinen jokaisessa lohkossa ja joka on aina ensimmäinen näistä. Sen avulla louhija, joka on löytänyt pätevän työtodistuksen, voi saada lohkopalkkionsa. Tämä palkkio koostuu kahdesta elementistä: blokkiavustus ja tapahtumapalkkio, joita käsiteltiin edellisessä jaksossa.
Coinbase-transaktio on ainutlaatuinen siinä mielessä, että se on ainoa, joka pystyy luomaan bitcoineja ex nihilo, ilman tarvetta kuluttaa panoksia tuotosten tuottamiseksi. Näitä äskettäin luotuja bitcoineja voidaan kutsua "alkuperäisiksi UTXOiksi".
Lohkoihin subventoidut bitcoinit ovat uusia BTC:itä, jotka luodaan tyhjästä konsensussäännöissä ennalta määritellyn liikkeeseenlaskuaikataulun mukaisesti. Lohkoavustus puolitetaan 210 000 lohkon välein eli noin neljän vuoden välein prosessissa, joka tunnetaan nimellä "puolitus". Alun perin jokaisella avustuksella luotiin 50 bitcoinia, mutta tämä määrä on vähitellen pienentynyt; tällä hetkellä se on 3,125 bitcoinia lohkoa kohti.
Vaikka transaktiopalkkiot edustavat myös vastaperustettuja BTC:tä, ne eivät saa ylittää lohkon kaikkien transaktioiden yhteenlaskettujen tulojen ja menojen erotusta. Näimme aiemmin, että nämä palkkiot edustavat sitä osaa panoksista, jota ei käytetä transaktioiden tuotoksiin. Tämä osuus on teknisesti "menetetty" transaktion aikana, ja louhijalla on oikeus luoda tämä arvo uudelleen yhden tai useamman uuden UTXO:n muodossa. Kyseessä on arvon siirto transaktion liikkeeseenlaskijan ja sen lohkoketjuun lisäävän louhijan välillä.
**> Coinbase-tapahtuman tuottamiin bitcoineihin sovelletaan 100 lohkon maturiteettiaikaa, jonka aikana louhija ei voi käyttää niitä. Tämän säännön tarkoituksena on välttää komplikaatioita, jotka liittyvät äskettäin luotujen bitcoinien käyttöön ketjussa, joka voi myöhemmin vanhentua.
UTXO-mallin vaikutukset
Ensinnäkin UTXO-malli vaikuttaa suoraan Bitcoinin transaktiomaksuihin. Koska kunkin lohkon kapasiteetti on rajallinen, louhijat suosivat transaktioita, jotka tarjoavat parhaat maksut suhteessa lohkossa tarvittavaan tilaan. Mitä enemmän UTXO:ta transaktio sisältää tuloissaan ja lähdöissään, sitä raskaampi se on ja vaatii siksi korkeampia maksuja. Tämä on yksi syy siihen, miksi pyrimme usein vähentämään UTXO:iden määrää salkussamme, mikä voi vaikuttaa myös luottamuksellisuuteen, jota käsittelemme yksityiskohtaisesti tämän kurssin kolmannessa osassa.
Toiseksi, kuten edellisissä kappaleissa mainittiin, Bitcoin-kolikot ovat pohjimmiltaan UTXO-ketju. Jokainen transaktio luo siis linkin menneen UTXO:n ja tulevan UTXO:n välille. UTXO:iden avulla voidaan siis seurata Bitcoineja niiden luomisesta niiden nykyiseen kulutukseen. Tätä avoimuutta voidaan pitää myönteisenä, sillä sen ansiosta jokainen käyttäjä voi varmistua saamiensa bitcoinien aitoudesta. Tähän jäljitettävyyden ja tarkastettavuuden periaatteeseen perustuu kuitenkin myös lohkoketjuanalyysi, jonka tarkoituksena on vaarantaa luottamuksellisuutesi. Tarkastelemme tätä käytäntöä perusteellisesti kurssin toisessa osassa.
Bitcoinin yksityisyysmalli
Raha: aitous, rehellisyys ja kaksinkertainen rahankäyttö
Yksi rahan tehtävistä on ratkaista tarpeiden kaksinkertaisen yhteensattuman ongelma. Vaihtokauppaan perustuvassa järjestelmässä vaihdon loppuunsaattaminen edellyttää paitsi sitä, että löydetään yksilö, joka luopuu tarpeitani vastaavasta tavarasta, myös sitä, että hänelle tarjotaan samanarvoinen tavara, joka tyydyttää hänen omat tarpeensa. Tämän tasapainon löytäminen on monimutkainen asia.
Siksi käytämme rahaa arvon siirtämiseen sekä tilassa että ajassa.
Jotta kolikoilla voitaisiin ratkaista tämä ongelma, on olennaista, että tavaran tai palvelun tarjoava osapuoli on vakuuttunut siitä, että se pystyy käyttämään kyseisen summan myöhemmin. Näin ollen jokainen järkevä henkilö, joka haluaa hyväksyä kolikon, olipa se sitten digitaalinen tai fyysinen, varmistaa, että se täyttää kaksi peruskriteeriä:
- Teoksen on oltava eheä ja aito ;**
- eikä niitä saa käyttää kahteen kertaan.**
Jos käytät fyysistä valuuttaa, se on ensimmäinen ominaisuus, joka on vaikeinta vahvistaa. Metallirahojen eheyteen on historian eri aikoina usein vaikuttanut esimerkiksi kolikoiden leikkaaminen tai lävistäminen. Esimerkiksi muinaisessa Roomassa oli tavallista, että kansalaiset raaputtivat kultakolikoiden reunoja kerätäkseen hieman jalometallia ja säästäessään niitä tulevia liiketoimia varten. Kolikon itseisarvo pieneni näin, mutta sen nimellisarvo pysyi samana. Tämä on yksi syy siihen, miksi kolikon reuna oli myöhemmin uurrettu.
Aitouden todentaminen on myös vaikeaa fyysisen rahan osalta. Nykyiset väärennetyn rahan torjuntatekniikat ovat yhä monimutkaisempia, mikä pakottaa vähittäiskauppiaat investoimaan kalliisiin tarkistusjärjestelmiin.
Toisaalta fyysisten valuuttojen luonteen vuoksi kaksinkertainen rahankäyttö ei ole ongelma. Jos annan sinulle 10 euron setelin, se siirtyy peruuttamattomasti minun haltuuni ja sinun haltuusi, mikä luonnollisesti sulkee pois mahdollisuuden käyttää sen sisältämiä rahayksiköitä moninkertaisesti. Lyhyesti sanottuna en voi käyttää tätä 10 euron seteliä uudelleen.
Digitaalisen valuutan kohdalla vaikeus on erilainen. Kolikon aitouden ja eheyden varmistaminen on usein yksinkertaisempaa. Kuten edellisessä jaksossa todettiin, Bitcoinin UTXO-mallin avulla kolikon alkuperä voidaan jäljittää ja näin varmistaa, että louhija on todellakin luonut sen konsensussääntöjen mukaisesti.
Toisaalta sen varmistaminen, ettei kaksinkertaista kulutusta tapahdu, on monimutkaisempaa, koska kaikki digitaaliset hyödykkeet ovat pohjimmiltaan tietoa. Toisin kuin fyysiset hyödykkeet, tietoa ei jaeta vaihdettaessa, vaan se leviää moninkertaistamalla. Jos esimerkiksi lähetän sinulle asiakirjan sähköpostitse, se monistuu. Et voi olla varma, että olen poistanut alkuperäisen asiakirjan.
Bitcoinin kaksinkertaisen käytön estäminen
Ainoa tapa välttää tämä digitaalisen omaisuuden päällekkäisyys on olla tietoinen kaikista järjestelmän vaihdoista. Näin tiedämme, kuka omistaa mitäkin, ja voimme päivittää kunkin henkilön omistukset suoritettujen transaktioiden mukaan. Näin toimitaan esimerkiksi pankkijärjestelmän kirjallisen rahan kanssa. Kun maksat 10 euroa kauppiaalle luottokortilla, pankki kirjaa vaihdon ja päivittää tilikirjan.
Bitcoinissa kaksinkertainen kuluttaminen estetään samalla tavalla. Pyrimme vahvistamaan, ettei kyseessä ole transaktio, joka on jo käyttänyt kyseiset kolikot. Jos kolikoita ei ole koskaan käytetty, voimme olla varmoja siitä, että tuplakäyttöä ei tapahdu. Satoshi Nakamoto kuvasi tätä periaatetta valkoisessa kirjassaan kuuluisalla lauseella:
** Ainoa tapa varmistaa, ettei tapahtumaa ole tapahtunut, on olla tietoinen kaikista tapahtumista
Mutta toisin kuin pankkimallissa, Bitcoinissa ei haluta luottaa keskusyksikköön. Kaikkien käyttäjien on siis pystyttävä vahvistamaan, ettei tuplakäyttöä esiinny, ilman että he luottavat kolmanteen osapuoleen. Kaikkien on siis oltava tietoisia kaikista Bitcoin-tapahtumista. Tämän vuoksi Bitcoin-tapahtumat lähetetään julkisesti kaikkiin verkon solmuihin ja tallennetaan selkeänä tekstinä lohkoketjuun.
Juuri tämä tietojen julkinen levittäminen vaikeuttaa yksityisyyden suojaa Bitcoinissa. Perinteisessä pankkijärjestelmässä teoriassa vain rahoituslaitos on tietoinen suoritetuista transaktioista. Bitcoinissa sen sijaan kaikki käyttäjät saavat tiedon kaikista transaktioista omien solmujensa kautta.
Luottamuksellisuusmalli: pankkijärjestelmä vs. Bitcoin
Perinteisessä järjestelmässä pankkitilisi on sidottu henkilöllisyyteesi. Pankkiiri pystyy tietämään, mikä pankkitili kuuluu millekin asiakkaalle ja mitä tapahtumia siihen liittyy. Tämä tietovirta on kuitenkin katkaistu pankin ja julkisuuden välillä. Toisin sanoen on mahdotonta tietää toiselle henkilölle kuuluvan pankkitilin saldoa ja tapahtumia. Vain pankilla on pääsy näihin tietoihin.
Esimerkiksi pankkiirisi tietää, että ostat patongin joka aamu paikalliselta leipurilta, mutta naapurisi ei tiedä tästä liiketoimesta mitään. Tällä tavoin tiedonkulku on asianomaisten osapuolten, erityisesti pankin, saatavilla, mutta ulkopuolisten ulottumattomissa.
Edellisessä jaksossa esitetyn transaktioiden julkista levittämistä koskevan rajoituksen vuoksi Bitcoinin luottamuksellisuusmalli ei voi noudattaa pankkijärjestelmän mallia. Bitcoinin tapauksessa, koska tiedonkulkua ei voida katkaista transaktioiden ja julkisuuden välillä, salaisuusmalli perustuu käyttäjän identiteetin ja itse transaktioiden erottamiseen toisistaan.
Jos esimerkiksi ostat patongin leipurilta ja maksat BTC:llä, naapurisi, jolla on oma täydellinen solmu, näkee tapahtumasi, aivan kuten hän näkee kaikki muutkin tapahtumat järjestelmässä. Jos luottamuksellisuusperiaatteita kuitenkin noudatetaan, hänen ei pitäisi pystyä yhdistämään tätä tiettyä transaktiota henkilöllisyyteesi.
Koska Bitcoin-tapahtumat ovat kuitenkin julkisia, niiden välille on mahdollista luoda yhteyksiä, joiden avulla voidaan päätellä tietoja osallistujista. Tämä toiminta muodostaa jopa oman erikoisalansa, joka tunnetaan nimellä "lohkoketjuanalyysi". Kurssin seuraavassa osassa kutsun sinut tutustumaan lohkoketjuanalyysin perusteisiin, jotta voit ymmärtää, miten bitcoinejasi jäljitetään, ja puolustautua paremmin niitä vastaan.
Ketjuanalyysin ymmärtäminen ja siltä suojautuminen
Mikä on Bitcoin-ketjuanalyysi?
Määritelmä ja toiminta
Lohkoketjuanalyysi on käytäntö, jossa jäljitetään bitcoinien virtausta lohkoketjussa. Yleisesti ottaen ketjuanalyysi perustuu aiempien transaktioiden näytteiden ominaisuuksien havainnointiin. Sen jälkeen se koostuu näiden samojen ominaisuuksien tunnistamisesta transaktiosta, jota halutaan analysoida, ja uskottavien tulkintojen päättelemisestä niistä. Tätä ongelmanratkaisumenetelmää, joka perustuu käytännönläheiseen lähestymistapaan riittävän hyvän ratkaisun löytämiseksi, kutsutaan "heuristiikaksi".
Maallikon kielellä ketjuanalyysissä on kolme päävaihetta:
Lohkoketjun tarkkailu ;
Tunnettujen piirteiden tunnistaminen ;
**Edellytysten vähentäminen **
Lohkoketjuanalyysin voi tehdä kuka tahansa. Tarvitaan vain pääsy lohkoketjun julkisiin tietoihin kokonaisen solmun kautta, jotta voidaan tarkkailla transaktioiden liikkeitä ja tehdä hypoteeseja. On myös ilmaisia työkaluja, jotka helpottavat tätä analyysia, kuten OXT.me, johon tutustumme yksityiskohtaisesti tämän jakson kahdessa viimeisessä luvussa. Suurin riski luottamuksellisuudelle tulee kuitenkin merkkijonoanalyysiin erikoistuneista yrityksistä. Nämä yritykset ovat vieneet lohkoketjuanalyysin teolliseen mittakaavaan ja myyvät palvelujaan rahoituslaitoksille ja hallituksille. Näistä yrityksistä Chainalysis on varmasti tunnetuin.
Ketjuanalyysin tavoitteet
Yksi lohkoketjuanalyysin tavoitteista on ryhmitellä erilaisia toimintoja Bitcoinissa, jotta voidaan määrittää niiden toteuttajan yksilöllisyys. Tämän jälkeen on mahdollista yrittää yhdistää tämä toimintaryhmä todelliseen henkilöllisyyteen.
Palaa edelliseen lukuun. Selitin, miksi Bitcoinin yksityisyysmalli perustui alun perin käyttäjän henkilöllisyyden erottamiseen transaktioista. Siksi olisi houkuttelevaa ajatella, että lohkoketjuanalyysi on hyödytöntä, sillä vaikka onnistuisimmekin aggregoimaan ketjussa tapahtuvia toimintoja, emme voi yhdistää niitä todelliseen identiteettiin.
Teoriassa tämä väite on oikein. Tämän kurssin ensimmäisessä osassa näimme, että UTXO-ehtojen määrittämiseen käytetään kryptografisia avainpareja. Nämä avainparit eivät pohjimmiltaan paljasta mitään tietoa haltijansa henkilöllisyydestä. Vaikka siis onnistuisimmekin ryhmittelemään eri avainpareihin liittyvät toiminnot, tämä ei kerro mitään näiden toimintojen takana olevasta tahosta.
Käytännön todellisuus on kuitenkin paljon monimutkaisempi. On olemassa lukuisia käyttäytymismalleja, jotka voivat yhdistää todellisen identiteetin ketjussa tapahtuvaan toimintaan. Analyysissä tätä kutsutaan tulopisteeksi, ja niitä on lukuisia.
Yleisin on KYC (Know Your Customer). Jos nostat Bitcoineja säännellyltä alustalta johonkin henkilökohtaiseen vastaanotto-osoitteeseesi, jotkut ihmiset voivat yhdistää henkilöllisyytesi tähän osoitteeseen. Laajemmin ajateltuna sisäänkäyntipiste voi olla mikä tahansa vuorovaikutuksen muoto todellisen elämäsi ja Bitcoin-tapahtuman välillä. Jos esimerkiksi julkaiset vastaanotto-osoitteen sosiaalisissa verkostoissa, tämä voi olla tulokohta analyysille. Jos maksat bitcoineilla leipurillesi, hän voi yhdistää kasvosi (osa identiteettiäsi) Bitcoin-osoitteeseen.
Nämä sisäänpääsykohdat ovat käytännössä väistämättömiä, kun käytetään Bitcoinia. Vaikka voimme pyrkiä rajoittamaan niiden laajuutta, ne ovat aina läsnä. Siksi on ratkaisevan tärkeää yhdistää menetelmiä, joilla pyritään säilyttämään yksityisyytesi. Vaikka todellisen henkilöllisyytesi ja transaktioiden erottaminen toisistaan on mielenkiintoinen lähestymistapa, se on nykyään edelleen riittämätön. Jos kaikki ketjussa tapahtuvat toimintasi voidaan ryhmitellä yhteen, pienikin tunkeutumiskohta vaarantaa todennäköisesti luomasi luottamuksellisuuden yhden kerroksen.
Puolustautuminen ketjuanalyysia vastaan
Meidän on siis myös pystyttävä käsittelemään lohkoketjuanalyysia Bitcoinin käytössä. Näin voimme minimoida toimintojemme yhdistämisen ja rajoittaa pääsyn vaikutusta yksityisyyteemme.
Mikä olisikaan parempi tapa torjua lohkoketjuanalyysia kuin tutustua siinä käytettyihin menetelmiin? Jos haluat tietää, miten voit parantaa yksityisyyttäsi Bitcoinissa, sinun on ymmärrettävä nämä menetelmät. Tämä antaa sinulle paremman käsityksen tekniikoista, kuten coinjoin tai payjoin (tekniikoita tarkastelemme kurssin loppuosissa), ja vähentää virheitä, joita saatat tehdä.
https://planb.network/tutorials/privacy/on-chain/payjoin-848b6a23-deb2-4c5f-a27e-93e2f842140f
Tässä voidaan tehdä analogia kryptografian ja salausanalyysin kanssa. Hyvä salakirjoittaja on ennen kaikkea hyvä salausanalyytikko. Uuden salausalgoritmin suunnittelemiseksi on tiedettävä, millaisia hyökkäyksiä se kohtaa, ja tutkittava myös, miksi aiemmat algoritmit on murrettu. Sama periaate pätee Bitcoinin yksityisyyteen. Lohkoketjun analyysimenetelmien ymmärtäminen on avain suojautumiseen niitä vastaan. Siksi olen sisällyttänyt tähän koulutukseen kokonaisen jakson lohkoketjuanalyysistä.
Ketjuanalyysimenetelmät
On tärkeää ymmärtää, että merkkijonoanalyysi ei ole tarkka tiede. Se perustuu aiemmista havainnoista tai loogisista tulkinnoista johdettuihin heuristiikkoihin. Näiden sääntöjen avulla voimme saada melko luotettavia tuloksia, mutta emme koskaan absoluuttisen tarkkoja. Toisin sanoen ketjuanalyysiin sisältyy aina todennäköisyysulottuvuus saavutettuihin johtopäätöksiin. Voidaan esimerkiksi arvioida vaihtelevalla varmuudella, että kaksi osoitetta kuuluu samaan yksikköön, mutta täysi varmuus on aina saavuttamattomissa.
Ketjuanalyysin koko tarkoitus on juuri erilaisten heuristiikkojen yhdistäminen virheriskin minimoimiseksi. Tavallaan se on todisteiden kasautumista, joka tuo meidät lähemmäs todellisuutta.
Nämä kuuluisat heuristiikat voidaan ryhmitellä eri luokkiin, joita kuvaamme yksityiskohtaisesti jäljempänä:
- Tapahtumamallit ;**
- Transaktioiden sisäiset heuristiikat ;**
- Tapahtuman ulkopuoliset heuristiikat.**
Satoshi Nakamoto ja ketjuanalyysi
Satoshi Nakamoto löysi itse kaksi ensimmäistä ketjuanalyysin heuristiikkaa. Hän kertoo niistä Bitcoinin valkoisen kirjan osassa 10. Ne ovat :
- cIOH (Common Input Ownership Heuristic);
- ja osoitteen uudelleenkäyttö.
Lähde: S. Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System", https://bitcoin.org/bitcoin.pdf, 2009.
Näemme, mitä ne ovat seuraavissa luvuissa, mutta on jo nyt mielenkiintoista huomata, että nämä kaksi heuristiikkaa ovat edelleen etusijalla ketjuanalyysissä.
Tapahtumamallit
Transaktiomalli on yksinkertaisesti tyypillisen transaktion yleinen malli tai rakenne, joka löytyy lohkoketjusta ja jonka todennäköinen tulkinta tunnetaan. Kun tutkimme malleja, keskitymme yksittäiseen transaktioon ja analysoimme sitä korkealla tasolla.
Toisin sanoen tarkastelemme vain UTXO:n määrää syötteissä ja UTXO:n määrää lähdöissä käsittelemättä tapahtuman tarkempia yksityiskohtia tai ympäristöä. Havaitun mallin perusteella voimme tulkita tapahtuman luonteen. Sen jälkeen etsimme sen rakenteeseen liittyviä ominaisuuksia ja päätämme tulkinnan.
Tässä jaksossa tarkastelemme yhdessä tärkeimpiä ketjuanalyysissä esiintyviä transaktiomalleja, ja annan kunkin mallin osalta todennäköisen tulkinnan rakenteesta sekä konkreettisen esimerkin.
Yksittäinen lähetys (tai yksittäinen maksu)
Aloitetaan hyvin tavallisesta kuviosta, sillä se esiintyy useimmissa bitcoin-maksuissa. Yksinkertaiselle maksumallille on ominaista yhden tai useamman UTXO:n kulutus panoksina ja kahden UTXO:n tuotanto tuotoksina. Tämä malli näyttää siis seuraavalta:
Kun havaitsemme tämän transaktiorakenteen lohkoketjussa, voimme jo tehdä tulkinnan. Nimensä mukaisesti tämä malli osoittaa, että kyseessä on lähetys- tai maksutapahtuma. Käyttäjä on kuluttanut oman UTXO:nsa tuloina tyydyttääkseen tuloina maksun UTXO:n ja vaihdon UTXO:n (samalle käyttäjälle palautettu raha).
Näin ollen tiedämme, että havaittu käyttäjä ei todennäköisesti enää omista toista kahdesta lähtö- UTXO:sta (maksu- UTXO), mutta hänellä on edelleen hallussaan toinen UTXO (vaihto- UTXO).
Tällä hetkellä emme voi määritellä, mikä ulostulo edustaa mitäkin UTXO:ta, koska se ei ole kuvion tutkimuksen tarkoitus. Pääsemme siihen tukeutumalla heuristiikkaan, jota tutkimme seuraavissa jaksoissa. Tässä vaiheessa tavoitteemme rajoittuu kyseisen tapahtuman luonteen tunnistamiseen, joka tässä tapauksessa on yksinkertainen lähetys.
Tässä on esimerkiksi Bitcoin-tapahtuma, joka noudattaa yksinkertaista lähetysmallia:
b6cc79f45fd2d7669ff94db5cb14c45f1f879ea0ba4c6e3d16ad53a18c34b769
Source : Mempool.space
Tämän ensimmäisen esimerkin jälkeen sinulla pitäisi olla parempi käsitys siitä, mitä "transaktiomallin" tutkiminen tarkoittaa. Tarkastelemme transaktiota keskittymällä pelkästään sen rakenteeseen ottamatta huomioon sen ympäristöä tai transaktion erityisiä yksityiskohtia. Tässä ensimmäisessä vaiheessa tarkastelemme vain kokonaiskuvaa.
Nyt kun olet ymmärtänyt, mikä malli on, siirrytään muihin olemassa oleviin malleihin.
Nuohous
Tälle toiselle mallille on ominaista yhden UTXO:n kulutus panoksena ja yhden UTXO:n tuotanto tuotoksena.
Tämän mallin tulkinta on, että olemme läsnä itsesiirtymässä. Käyttäjä on siirtänyt bitcoininsa itselleen, toiseen hänelle kuuluvaan osoitteeseen. Koska tapahtumassa ei ole vaihtoa, on erittäin epätodennäköistä, että kyseessä on maksu. Maksua suoritettaessa on nimittäin lähes mahdotonta, että maksajalla olisi UTXO, joka vastaa täsmälleen myyjän vaatimaa summaa plus transaktiomaksu. Yleensä maksaja on siis velvollinen tuottamaan vaihtotuoton.
Tällöin tiedämme, että kyseinen UTXO on todennäköisesti edelleen havaitun käyttäjän hallussa. Ketjuanalyysin yhteydessä, jos tiedämme, että tapahtuman syötteenä käytetty UTXO kuuluu Alicelle, voimme olettaa, että myös tuotoksena käytetty UTXO kuuluu Alicelle. Myöhemmin on mielenkiintoista löytää transaktion sisäisiä heuristiikkoja, jotka voivat vahvistaa tätä oletusta (tarkastelemme näitä heuristiikkoja luvussa 3.3).
Tässä on esimerkiksi Bitcoin-tapahtuma, joka noudattaa pyyhkäisymallia:
35f1072a0fda5ae106efb4fda871ab40e1f8023c6c47f396441ad4b995ea693d
Source : Mempool.space
Varo kuitenkin, että tämäntyyppinen kuvio voi paljastaa myös itsesiirron kryptovaluuttojen vaihtopalvelun tilille. Vasta tunnettujen osoitteiden tutkiminen ja tapahtuman konteksti kertovat, onko kyseessä pyyhkäisy omatoimilompakkoon vai nosto alustalle. Pörssialustojen osoitteet ovatkin usein helposti tunnistettavissa.
Otetaan taas Alicen esimerkki: jos skannaus johtaa johonkin alustan (esimerkiksi Binance) tuntemaan osoitteeseen, tämä voi tarkoittaa, että bitcoinit on siirretty pois Alicen välittömästä hallussapidosta, luultavasti tarkoituksenaan myydä ne tai säilyttää ne kyseisellä alustalla. Toisaalta, jos kohdeosoite on tuntematon, on järkevää olettaa, että kyseessä on yksinkertaisesti toinen lompakko, joka edelleen kuuluu Alicelle. Tämäntyyppinen tutkimus kuuluu kuitenkin enemmän heuristiikkojen kuin mallien luokkaan.
Konsolidointi
Tälle mallille on ominaista useiden UTXO:iden kulutus syötteenä ja yhden UTXO:n tuotanto lähdössä.
Tämän kuvion tulkinta on, että olemme konsolidoitumassa. Tämä on yleinen käytäntö Bitcoin-käyttäjien keskuudessa, ja sen tarkoituksena on yhdistää useita UTXO:ita mahdollisen transaktiomaksujen nousun varalta. Suorittamalla tämä operaatio aikana, jolloin maksut ovat alhaiset, on mahdollista säästää tulevissa maksuissa. Puhumme tästä käytännöstä lisää luvussa 4.3.
Voimme päätellä, että tämän transaktiomallin takana oleva käyttäjä on todennäköisesti omistanut kaikki syötteen UTXO:t ja että hänellä on edelleen hallussaan UTXO ulostulossa. Kyseessä on siis todennäköisesti automaattinen siirto.
Kuten pyyhkäisy, myös tämäntyyppinen kuvio voi paljastaa itsesiirron vaihtofoorumin tilille. Tunnettujen osoitteiden tutkiminen ja tapahtuman konteksti kertovat, onko kyseessä konsolidointi omaan salkkuun vai nosto alustalle.
Tässä on esimerkiksi Bitcoin-tapahtuma, joka noudattaa konsolidointimallia:
77c16914211e237a9bd51a7ce0b1a7368631caed515fe51b081d220590589e94
Source : Mempool.space
Ketjuanalyysissä tämä malli voi paljastaa paljon tietoa. Jos esimerkiksi tiedämme, että yksi panoksista kuuluu Liisalle, voimme olettaa, että myös kaikki muut panokset ja tämän liiketoimen tuotos kuuluvat Liisalle. Tämän oletuksen avulla voidaan sitten palata aiempien liiketoimien ketjuun ja löytää ja analysoida muita liiketoimia, jotka todennäköisesti liittyvät Liisaan.
Ryhmitellyt menot
Tälle mallille on ominaista muutaman UTXO:n kulutus panoksina (usein vain yksi) ja monien UTXO:iden tuotanto tuotoksina.
Tämän mallin tulkinta on, että kyseessä on ryhmiteltyjen menojen esiintyminen. Se on käytäntö, joka todennäköisesti paljastaa hyvin suuren taloudellisen toiminnan, kuten vaihtofoorumin. Ryhmiteltyjen menojen avulla nämä yksiköt voivat säästää kustannuksia yhdistämällä menonsa yhdeksi tapahtumaksi.
Tästä mallista voidaan päätellä, että panoksessa oleva UTXO tulee yrityksestä, jonka taloudellinen toiminta on korkealla tasolla, ja että tuotoksessa oleva UTXO hajaantuu. Monet niistä kuuluvat yrityksen asiakkaille, jotka ovat nostaneet bitcoineja alustalta. Toiset voivat mennä kumppaniyrityksille. Lopuksi on varmasti yksi tai useampi vaihto, joka menee takaisin liikkeeseenlaskuyhtiölle.
Tässä on esimerkiksi Bitcoin-tapahtuma, jossa käytetään niputettua kulutuskuviota (oletettavasti kyseessä on Bybit-alustan myöntämä tapahtuma):
8a7288758b6e5d550897beedd13c70bcbaba8709af01a7dbcc1f574b89176b43
Source : Mempool.space
Protokollakohtaiset tapahtumat
Transaktiomalleista voidaan tunnistaa myös ne, jotka paljastavat tietyn protokollan käytön. Esimerkiksi Whirlpool coinjoineilla (joita käsitellään osassa 5) on helposti tunnistettava rakenne, joka erottaa ne muista, tavanomaisemmista transaktioista.
Tämän kuvion analyysi viittaa siihen, että kyseessä on todennäköisesti yhteistyöhön perustuva liiketoimi. On myös mahdollista havaita coinjoin. Jos tämä jälkimmäinen hypoteesi osoittautuu oikeaksi, poistumisten määrästä voidaan saada karkea arvio coinjoinin osallistujien määrästä.
Tässä on esimerkiksi Bitcoin-tapahtuma, jossa käytetään coinjoin-yhteistyötransaktiomallia:
00601af905bede31086d9b1b79ee8399bd60c97e9c5bba197bdebeee028b9bea
Source : Mempool.space
On olemassa monia muitakin protokollia, joilla on omat erityisrakenteensa. On esimerkiksi Wabisabi-, Stamps- ja Runes-tapahtumia.
Näiden tapahtumamallien ansiosta voimme jo tulkita tietyn määrän tietoa tietystä tapahtumasta. Transaktiorakenne ei kuitenkaan ole ainoa tietolähde, jota voidaan analysoida. Voimme tutkia myös sen yksityiskohtia. Näitä sisäisiä yksityiskohtia kutsun mielelläni "sisäisiksi heuristiikoiksi", ja tarkastelemme niitä seuraavassa luvussa.
Sisäiset heuristiikat
Sisäinen heuristiikka on erityispiirre, jonka tunnistamme itse tapahtumasta ilman, että meidän tarvitsee tutkia sen ympäristöä, ja jonka avulla voimme tehdä johtopäätöksiä. Toisin kuin mallit, jotka keskittyvät tapahtuman yleiseen rakenteeseen korkealla tasolla, sisäiset heuristiikat perustuvat poimittavien tietojen joukkoon. Näitä ovat mm:
- Eri UTXO:iden määrät sisään ja ulos;
- Kaikki, mikä liittyy skripteihin: vastaanotto-osoitteet, versiointi, lukitusajat...
Yleisesti ottaen tämäntyyppisen heuristiikan avulla voidaan tunnistaa tietyn liiketoimen vaihto. Näin voimme jatkaa kokonaisuuden jäljittämistä useiden eri transaktioiden ajan. Jos tunnistamme UTXO:n, joka kuuluu käyttäjälle, jota haluamme jäljittää, on ratkaisevan tärkeää määrittää, mikä tuotos on siirretty toiselle käyttäjälle ja mikä tuotos edustaa vaihtoa, joka siis pysyy hänen hallussaan, kun hän suorittaa transaktion.
Muistutan vielä kerran, että nämä heuristiikat eivät ole täysin tarkkoja. Yksittäin tarkasteltuna ne auttavat meitä vain tunnistamaan todennäköisiä skenaarioita. Useiden heuristiikkojen kasautuminen auttaa vähentämään epävarmuutta, mutta ei koskaan pysty poistamaan sitä kokonaan.
Sisäiset yhtäläisyydet
Tässä heuristiikassa tutkitaan samankaltaisuuksia saman liiketoimen panosten ja tuotosten välillä. Jos sama ominaisuus havaitaan panoksissa ja vain yhdessä liiketoimen tuotoksissa, on todennäköistä, että tämä tuotos muodostaa vaihdon.
Ilmeisin ominaisuus on vastaanottavan osoitteen uudelleenkäyttö samassa tapahtumassa.
Tämä heuristiikka ei jätä juurikaan tilaa epäilyille. Ellei hänen yksityistä avaintaan ole hakkeroitu, sama vastaanottava osoite paljastaa välttämättä yhden käyttäjän toiminnan. Tästä johtuva tulkinta on, että transaktiovaihto on tuloste, jonka osoite on sama kuin tulo-osoite. Voimme sitten jatkaa yksilön jäljittämistä tästä vaihdosta.
Tässä on esimerkiksi tapahtuma, johon tätä heuristiikkaa voidaan todennäköisesti soveltaa:
54364146665bfc453a55eae4bfb8fdf7c721d02cb96aadc480c8b16bdeb8d6d0
Source : Mempool.space
Sisään- ja ulostulojen samankaltaisuudet eivät lopu osoitteen uudelleenkäyttöön. Mitä tahansa samankaltaisuutta skriptien käytössä voidaan käyttää heuristiikan soveltamiseen. Voimme esimerkiksi joskus havaita saman versioinnin syötteen ja yhden transaktion tuotoksen välillä.
Tästä kaaviosta nähdään, että syöttö numero 0 avaa P2WPKH-skriptin (SegWit
V0, joka alkaa kirjaimella bc1q). Lähtö n:o 0 käyttää
samantyyppistä skriptiä. Lähtö n:o 1 puolestaan käyttää P2TR-skriptiä
(SegWit V1, joka alkaa kirjaimella bc1p). Tämän ominaisuuden
tulkinta on, että on todennäköistä, että osoite, jolla on sama versiointi
kuin syötteellä, on vaihto-osoite. Se kuuluisi siis aina samalle
käyttäjälle.
Tässä on tapahtuma, johon tätä heuristiikkaa voidaan todennäköisesti soveltaa:
db07516288771ce5d0a06b275962ec4af1b74500739f168e5800cbcb0e9dd578
Source : Mempool.space
Jälkimmäisestä nähdään, että tulo nro 0 ja lähtö nro 1 käyttävät P2WPKH-skriptejä (SegWit V0), kun taas lähtö nro 0 käyttää eri P2PKH-skriptiä (Legacy).
2010-luvun alussa tämä skriptien versiointiin perustuva heuristiikka oli
suhteellisen hyödytön, koska käytettävissä oli vain vähän skriptityyppejä.
Ajan myötä ja peräkkäisten Bitcoin-päivitysten myötä skriptityyppejä on
kuitenkin otettu käyttöön yhä enemmän. Tästä heuristiikasta on siis tulossa
yhä merkityksellisempi, sillä skriptityyppien laajemman valikoiman myötä
käyttäjät jakautuvat pienempiin ryhmiin, mikä lisää mahdollisuuksia soveltaa
tätä sisäisen versioinnin uudelleenkäytön heuristiikkaa. Tästä syystä
pelkästään luottamuksellisuuden näkökulmasta on suositeltavaa valita yleisin
käsikirjoitustyyppi. Esimerkiksi näitä rivejä kirjoittaessani
Taproot-skriptejä (bc1p) käytetään harvemmin kuin SegWit V0
-skriptejä (bc1q). Vaikka edelliset tarjoavat taloudellisia ja
luottamuksellisuutta koskevia etuja tietyissä erityistilanteissa,
perinteisemmissä yhden allekirjoituksen käyttötarkoituksissa voi olla
järkevää pitäytyä vanhemmassa standardissa luottamuksellisuussyistä, kunnes
uusi standardi otetaan laajemmin käyttöön.
Pyöreät numeromaksut
Toinen sisäinen heuristiikka, joka voi auttaa meitä tunnistamaan vaihdon, on pyöreän numeron heuristiikka. Yleisesti ottaen yksinkertaisen maksumallin (1 tulo ja 2 lähtöä) kohdalla, jos toinen tuloista käyttää pyöreän summan, tämä on maksu.
Jos toinen tuotos edustaa maksua, toinen edustaa vaihtoa. Näin ollen voidaan tulkita todennäköiseksi, että syötteen käyttäjällä on aina hallussaan se tuotos, joka on tunnistettu vaihdoksi.
On korostettava, että tätä heuristiikkaa ei voida aina soveltaa, koska suurin osa maksuista suoritetaan edelleen varainhoitotiliyksikköinä. Kun ranskalainen vähittäiskauppias hyväksyy bitcoinin, hän ei yleensä näytä vakaita hintoja sateina. Sen sijaan hän valitsee euromääräisen hinnan ja maksettavan bitcoineina ilmaistun summan välisen muunnoksen. Kaupan lopussa ei siis pitäisi olla pyöreitä lukuja.
Analyytikko voisi kuitenkin yrittää tehdä tämän muuntamisen ottaen huomioon valuuttakurssin, joka oli voimassa, kun tapahtuma lähetettiin verkossa. Otetaan esimerkki transaktiosta, jonka panos on 97,552 satsia ja kaksi tulosta, joista toinen on 31,085 satsia ja toinen 64,152 satsia. Ensisilmäyksellä tämä tapahtuma ei näytä sisältävän pyöreitä summia. Soveltamalla 64,339 euron vaihtokurssia tapahtumahetkellä saamme kuitenkin seuraavanlaisen muuntokurssin euroiksi:
- Panos on 62,76 euroa;
- Tuotos on 20 euroa;
- Tuotos on 41,27 euroa.
Kun tämä transaktio on muunnettu fiat-valuutaksi, sitä voidaan käyttää pyöristetyn summan maksun heuristiikan soveltamiseen. 20 euron tuotos meni todennäköisesti kauppiaalle tai ainakin vaihtoi omistajaa. Tästä päätellen 41,27 euron tuotos on todennäköisesti pysynyt alkuperäisen käyttäjän hallussa.
Jos bitcoinista tulee jonain päivänä ensisijainen laskentayksikkö pörsseissämme, tämä heuristiikka voi olla entistäkin hyödyllisempi analyysin kannalta.
Tässä on esimerkiksi tapahtuma, johon tätä heuristiikkaa voidaan todennäköisesti soveltaa:
2bcb42fab7fba17ac1b176060e7d7d7730a7b807d470815f5034d52e96d2828a
Source : Mempool.space
Suurin tuotos
Kun tunnistamme riittävän suuren eron kahden transaktiotuotoksen välillä yksinkertaisella maksumallilla, voimme arvioida, että suurin tuotos on todennäköisesti valuutta.
Tämä suurimman tuotoksen heuristiikka on varmasti kaikista epätarkin. Yksinään se on melko heikko. Tämä ominaisuus voidaan kuitenkin yhdistää muihin heuristiikkoihin tulkintamme epävarmuuden vähentämiseksi.
Jos esimerkiksi tarkastelemme tapahtumaa, jossa on pyöreä maksu ja suurempi maksu, pyöreän maksun heuristiikan ja suuremman maksun heuristiikan soveltaminen yhdessä vähentää epävarmuutta.
Tässä on esimerkiksi tapahtuma, johon tätä heuristiikkaa voidaan todennäköisesti soveltaa:
b79d8f8e4756d34bbb26c659ab88314c220834c7a8b781c047a3916b56d14dcf
Source : Mempool.space
Ulkoiset heuristiikat
Ulkoisten heuristiikkojen tutkiminen tarkoittaa tiettyjen sellaisten elementtien samankaltaisuuksien, mallien ja ominaisuuksien analysointia, jotka eivät liity itse liiketoimintaan. Toisin sanoen, kun aiemmin rajoituimme hyödyntämään liiketoimelle ominaisia elementtejä sisäisten heuristiikkojen avulla, laajennamme nyt analyysikenttäämme sisällyttämällä siihen liiketoimen ympäristön ulkoisten heuristiikkojen avulla.
Osoitteen uudelleenkäyttö
Tämä on yksi bitcoin-käyttäjien tunnetuimmista heuristiikoista. Osoitteiden uudelleenkäyttö mahdollistaa yhteyden luomisen eri transaktioiden ja eri UTXO:iden välille. Se tapahtuu, kun Bitcoinin vastaanottoosoitetta käytetään useita kertoja.
Näin ollen on mahdollista hyödyntää osoitteen uudelleenkäyttöä saman tapahtuman sisällä sisäisenä heuristisena keinona tunnistaa vaihto (kuten edellisessä luvussa todettiin). Osoitteiden uudelleenkäyttöä voidaan kuitenkin käyttää myös ulkoisena heuristisena tekijänä tunnistamaan useiden transaktioiden takana olevan yksikön ainutlaatuisuus.
Osoitteen uudelleenkäyttöä tulkitaan siten, että kaikki kyseisessä osoitteessa estetyt UTXO:t kuuluvat (tai ovat kuuluneet) samalle yksikölle. Tämä heuristiikka jättää vain vähän tilaa epävarmuudelle. Kun tulkinta on tunnistettu, se vastaa todennäköisesti todellisuutta. Sen vuoksi se mahdollistaa erilaisten ketjussa tapahtuvien toimintojen ryhmittelyn.
Kuten osan 3 johdannossa selitetään, tämän heuristiikan löysi Satoshi Nakamoto itse. Valkoisessa kirjassa hän mainitsee ratkaisun, jonka avulla käyttäjät voivat välttää sen tuottamisen, eli yksinkertaisesti käyttää tyhjää osoitetta jokaisessa uudessa transaktiossa:
"Lisäpalomuurina voitaisiin käyttää uutta avainparia jokaiselle tapahtumalle, jotta ne eivät olisi sidoksissa yhteiseen omistajaan."
Lähde: S. Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System", https://bitcoin.org/bitcoin.pdf, 2009.
Tässä on esimerkiksi osoite, jota käytetään uudelleen useissa tapahtumissa:
bc1qqtmeu0eyvem9a85l3sghuhral8tk0ar7m4a0a0
Lähde : Mempool.space
Käsikirjoituksen samankaltaisuus ja lompakkopainatukset
Osoitteiden uudelleenkäytön lisäksi on olemassa monia muita heuristiikkoja, joiden avulla voit yhdistää toimia samaan salkkuun tai osoiteklusteriin.
Ensinnäkin analyytikko voi etsiä samankaltaisuuksia käsikirjoitusten käytössä. Esimerkiksi tietyt vähemmistöskriptit, kuten multisig, voi olla helpompi havaita kuin SegWit V0 -skriptit. Mitä suuremmassa ryhmässä piileskelemme, sitä vaikeampi meitä on havaita. Tämä on yksi syy siihen, miksi hyvissä Coinjoin-protokollissa kaikki osallistujat käyttävät täsmälleen samantyyppisiä skriptejä.
Yleisemmin analyytikko voi myös keskittyä salkun ominaispiirteisiin. Nämä ovat käyttökohtaisia prosesseja, jotka voidaan tunnistaa ja hyödyntää niitä jäljitysheuristiikoina. Toisin sanoen, jos havaitsemme samojen sisäisten ominaisuuksien kasautumisen jäljitettävälle yksikölle kuuluvissa liiketoimissa, voimme yrittää tunnistaa samat ominaisuudet muista liiketoimista.
Pystymme esimerkiksi tunnistamaan, että jäljitetty käyttäjä lähettää
järjestelmällisesti muutostietonsa P2TR-osoitteisiin (bc1p...).
Jos tämä prosessi toistuu, voimme käyttää sitä heuristiikkana muussa
analyysissämme. Voimme käyttää myös muita sormenjälkiä, kuten UTXO:iden
järjestystä, muutoksen paikkaa ulostuloissa, RBF (Replace-by-Fee) -signaalia
tai versionumeroa, nSequence-kenttää ja nLockTime-kenttää.
Kuten @LaurentMT huomauttaa Space Kek #19 (ranskankielinen podcast), salkun sormenjälkien hyödyllisyys ketjuanalyysissä lisääntyy merkittävästi ajan myötä. Skriptityyppien kasvava määrä ja näiden uusien ominaisuuksien yhä asteittaisempi käyttöönotto salkkuohjelmistoissa korostavat todellakin eroja. Joissain tapauksissa on jopa mahdollista tunnistaa tarkka ohjelmisto, jota seurattava yksikkö käyttää. Siksi on tärkeää ymmärtää, että salkun jalanjäljen tutkiminen on erityisen tärkeää viimeaikaisten liiketoimien kannalta eikä niinkään 2010-luvun alussa aloitettujen liiketoimien kannalta.
Yhteenvetona voidaan todeta, että jalanjälki voi olla mikä tahansa erityinen käytäntö, jonka lompakko suorittaa automaattisesti tai käyttäjä manuaalisesti ja jonka voimme löytää muista transaktioista ja joka auttaa meitä analyysissämme.
CIOH (Common Input Ownership Heuristic, yhteinen panosomistajuuden heuristiikka)
Common Input Ownership Heuristic (CIOH) on heuristiikka, jonka mukaan kun transaktiolla on useita panoksia, ne ovat todennäköisesti peräisin yhdeltä taholta. Näin ollen niiden omistus on yhteinen.
CIOH:n soveltamiseksi havaitsemme ensin tapahtuman, jossa on useita syötteitä. Tämä voi olla 2 panosta tai 30 panosta. Kun tämä ominaisuus on tunnistettu, tarkistetaan, sopiiko transaktio johonkin tunnettuun transaktiomalliin. Jos esimerkiksi on 5 sisääntuloa, joilla on suunnilleen sama määrä, ja 5 ulostuloa, joilla on täsmälleen sama määrä, tiedämme, että kyseessä on coinjoinin rakenne. Emme voi soveltaa CIOH:ta.
Toisaalta, jos tapahtuma ei sovi mihinkään tunnettuun yhteistoiminnallisen tapahtuman malliin, voimme tulkita, että kaikki syötteet ovat todennäköisesti peräisin samalta taholta. Tämä voi olla erittäin hyödyllistä, kun laajennetaan jo tunnettua klusteria tai jatketaan jäljitystä.
CIOH:n löysi Satoshi Nakamoto. Hän kertoo siitä valkoisen kirjan osassa 10:
"[...] linkittäminen on väistämätöntä, kun on kyse usean kirjauksen sisältävistä tapahtumista, joista käy väistämättä ilmi, että niiden kirjaukset olivat saman omistajan hallussa. Riskinä on, että jos avaimen omistaja paljastuu, linkit saattavat paljastaa muita samalle omistajalle kuuluneita tapahtumia."
Erityisen kiehtovaa on huomata, että Satoshi Nakamoto oli jo ennen Bitcoinin virallista lanseerausta tunnistanut kaksi tärkeintä käyttäjien yksityisyyden suojaan liittyvää haavoittuvuutta, nimittäin CIOH:n ja osoitteiden uudelleenkäytön. Tällainen kaukonäköisyys on varsin huomionarvoista, sillä nämä kaksi heuristiikkaa ovat vielä nykyäänkin hyödyllisimpiä lohkoketjujen analysoinnissa.
Esimerkkinä tässä on liiketoimi, johon voimme todennäköisesti soveltaa CIOH:ta:
20618e63b6eed056263fa52a2282c8897ab2ee71604c7faccfe748e1a202d712
Source : Mempool.space
Ketjun ulkopuoliset tiedot
Ketjuanalyysi ei tietenkään rajoitu yksinomaan ketjua koskeviin tietoihin. Analyysin tarkentamiseen voidaan käyttää myös mitä tahansa aiemmasta analyysistä saatuja tai Internetissä saatavilla olevia tietoja.
Jos esimerkiksi havaitsemme, että jäljitetyt transaktiot lähetetään järjestelmällisesti samasta Bitcoin-solmusta, ja onnistumme tunnistamaan sen IP-osoitteen, voimme ehkä tunnistaa muita samasta yksiköstä peräisin olevia transaktioita sekä määrittää osan liikkeeseenlaskijan henkilöllisyydestä. Vaikka tämä käytäntö ei ole helposti toteutettavissa, koska se edellyttää lukuisten solmujen toimintaa, jotkut lohkoketjujen analysointiin erikoistuneet yritykset voivat käyttää sitä.
Analyytikko voi myös tukeutua aiemmin avoimen lähdekoodin kautta tehtyihin analyyseihin tai omiin aiempiin analyyseihinsa. Ehkä löydämme tulosteen, joka viittaa jo tunnistamaamme osoiteklusteriin. Joskus on myös mahdollista tukeutua tuotoksiin, jotka viittaavat vaihtofoorumiin, koska näiden yritysten osoitteet ovat yleisesti tiedossa.
Samalla tavalla voit tehdä analyysin eliminoimalla. Jos esimerkiksi analysoitaessa tapahtumaa, jossa on kaksi tulosta, toinen niistä liittyy jo tunnettuun, mutta jäljitettävästä yksiköstä erilliseen osoiteklusteriin, voimme tulkita, että toinen tuloste edustaa todennäköisesti vaihtoa.
Kanava-analyysiin sisältyy myös hieman yleisempi OSINT (Open Source Intelligence) -komponentti, johon sisältyy Internet-hakuja. Tästä syystä emme suosittele julkaisemaan osoitteita suoraan sosiaalisissa verkostoissa tai verkkosivuilla, olipa kyse sitten salanimestä tai ei.
Ajalliset mallit
Ajattelemme sitä vähemmän, mutta tietyt ihmisten käyttäytymismallit ovat tunnistettavissa ketjussa. Ehkäpä hyödyllisin analyysissä on nukkumistottumuksesi! Kyllä, kun nukut, et lähetä Bitcoin-tapahtumia. Mutta nukut yleensä suunnilleen samaan aikaan. Tämän vuoksi lohkoketjuanalyyseissä käytetään yleisesti ajallista analyysia. Yksinkertaisesti sanottuna kyseessä on laskenta ajoista, jolloin tietyn tahon transaktiot lähetetään Bitcoin-verkkoon. Analysoimalla näitä ajallisia malleja voimme päätellä runsaasti tietoa.
Ensinnäkin ajallisella analyysillä voidaan joskus tunnistaa jäljitettävän kokonaisuuden luonne. Jos havaitsemme, että liiketoimet lähetetään johdonmukaisesti 24 tunnin ajan, tämä kertoo suuresta taloudellisesta toiminnasta. Näiden liiketoimien takana oleva yksikkö on todennäköisesti yritys, joka on mahdollisesti kansainvälinen ja jolla on ehkä automatisoituja sisäisiä menettelyjä.
Esimerkiksi tunnistin tämän kuvion muutama kuukausi sitten analysoidessani transaktiota, jossa oli virheellisesti jaettu 19 bitcoinia maksuja. Yksinkertaisen ajallisen analyysin avulla pystyin päättelemään, että kyseessä oli automatisoitu palvelu ja siten luultavasti suuri yksikkö, kuten vaihtofoorumi.
Muutamaa päivää myöhemmin selvisi, että varat kuuluivat PayPalille Paxos-vaihtofoorumin kautta.
Päinvastoin, jos näemme, että ajallinen kuvio jakautuu 16 tunnin ajalle, voimme arvioida, että kyseessä on yksittäinen käyttäjä tai kenties paikallinen yritys, riippuen vaihdettujen määrien määrästä.
Havaitun kokonaisuuden luonteen lisäksi ajallinen kuvio voi aikavyöhykkeiden ansiosta myös kertoa meille suunnilleen, missä käyttäjä sijaitsee. Tällä tavoin voimme verrata muita tapahtumia ja käyttää niiden aikaleimoja ylimääräisenä heuristisena tekijänä, jonka voimme lisätä analyysiimme.
Esimerkiksi aiemmin mainitsemassani monikäyttöisessä osoitteessa voidaan nähdä, että sekä saapuvat että lähtevät tapahtumat keskittyvät 13 tunnin välein.
bc1qqtmeu0eyvem9a85l3sghuhral8tk0ar7m4a0a0
Lähde : OXT.me
Tämä alue vastaa todennäköisesti Eurooppaa, Afrikkaa tai Lähi-itää. Voimme siis olettaa, että näiden tapahtumien takana oleva käyttäjä asuu näillä alueilla.
Tämäntyyppinen aika-analyysi johti myös hypoteesiin, jonka mukaan Satoshi Nakamoto ei toiminut Japanista vaan Yhdysvalloista käsin: The Time Zones of Satoshi Nakamoto
Käytännön toteutus lohko-etsintäohjelmalla
Tässä viimeisessä luvussa sovellamme tähän mennessä opiskelemiamme käsitteitä käytäntöön. Näytän sinulle esimerkkejä todellisista Bitcoin-tapahtumista, ja sinun on poimittava pyytämäni tiedot.
Ihannetapauksessa näiden harjoitusten suorittamiseen olisi suositeltavaa käyttää ammattimaista ketjuanalyysityökalua. Samourai Walletin luojien pidätyksen jälkeen ainoa ilmainen analyysityökalu OXT.me ei kuitenkaan ole enää saatavilla. Valitsemme siksi klassisen lohkoanalysaattorin näihin harjoituksiin. Suosittelen käyttämään Mempool.space sen monien ominaisuuksien ja ketjuanalyysityökalujen valikoiman vuoksi, mutta voit myös valita jonkin muun tutkimusohjelman, kuten Bitcoin Explorer.
Aluksi esittelen sinulle harjoitukset. Tee ne lohkoetsintäsi avulla ja kirjoita vastauksesi paperille. Tämän luvun lopussa annan sinulle vastaukset, jotta voit tarkistaa ja korjata tuloksesi.
Näihin harjoituksiin valitut liiketoimet on valittu puhtaasti niiden ominaisuuksien perusteella jokseenkin sattumanvaraisesti. Tämä luku on tarkoitettu ainoastaan opetus- ja tiedotustarkoituksiin. Haluan tehdä selväksi, etten tue enkä kannusta käyttämään näitä työkaluja haitallisiin tarkoituksiin. Tarkoituksena on opettaa sinulle, miten voit suojautua merkkijonoanalyysiltä, ei tehdä analyysejä muiden ihmisten yksityisten tietojen paljastamiseksi.
Harjoitus 1
Analysoitavan tapahtuman tunniste :
3769d3b124e47ef4ffb5b52d11df64b0a3f0b82bb10fd6b98c0fd5111789bef7
Mikä on tämän liiketoimen mallin nimi, ja mitä uskottavia tulkintoja voidaan tehdä tarkastelemalla vain sen mallia eli liiketoimen rakennetta?
Harjoitus 2
Analysoitavan tapahtuman tunniste :
baa228f6859ca63e6b8eea24ffad7e871713749d693ebd85343859173b8d5c20
Mikä on tämän liiketoimen mallin nimi, ja mitä uskottavia tulkintoja voidaan tehdä tarkastelemalla vain sen mallia eli liiketoimen rakennetta?
Harjoitus 3
Analysoitavan tapahtuman tunniste :
3a9eb9ccc3517cc25d1860924c66109262a4b68f4ed2d847f079b084da0cd32b
Mikä on tämän liiketoimen malli?
Kun malli on tunnistettu, mitä tuotosta vaihto todennäköisesti edustaa, kun käytetään liiketoimen sisäisiä heuristiikkoja?
Harjoitus 4
Analysoitavan tapahtuman tunniste :
35f0b31c05503ebfdf7311df47f68a048e992e5cf4c97ec34aa2833cc0122a12
Mikä on tämän liiketoimen malli?
Kun malli on tunnistettu, mitä tuotosta vaihto todennäköisesti edustaa, kun käytetään liiketoimen sisäisiä heuristiikkoja?
Harjoitus 5
Kuvitellaan, että Loïc on julkaissut yhden Bitcoin-vastaanottoosoitteensa sosiaalisessa verkostossa Twitterissä:
bc1qja0hycrv7g9ww00jcqanhfpqmzx7luqalum3vu
Näiden tietojen perusteella ja käyttämällä vain osoitteen uudelleenkäytön heuristiikkaa, mitkä Bitcoin-tapahtumat voidaan yhdistää Loïcin henkilöllisyyteen?
Ilmeisesti en ole tämän vastaanotto-osoitteen todellinen omistaja enkä julkaissut sitä sosiaalisissa verkostoissa. Se on osoite, jonka otin satunnaisesti lohkoketjusta
Harjoitus 6
Harjoituksen 5 jälkeen pystyit osoitteen uudelleenkäytön heuristiikan avulla tunnistamaan useita Bitcoin-tapahtumia, joissa Loïc näyttää olevan mukana. Normaalisti sinun olisi pitänyt havaita tunnistettujen transaktioiden joukosta tämä:
2d9575553c99578268ffba49a1b2adc3b85a29926728bd0280703a04d051eace
Tämä maksutapahtuma on ensimmäinen, jolla lähetetään varoja Loïcin osoitteeseen. Mistä luulet Loïcin tämän tapahtuman kautta saamien bitcoinien olevan peräisin?
Harjoitus 7
Harjoituksen 5 jälkeen olet pystynyt tunnistamaan osoitteen uudelleenkäytön heuristiikan avulla useita Bitcoin-tapahtumia, joissa Loïc näyttää olevan mukana. Nyt haluat selvittää, mistä Loïc on tullut. Suorita löydettyjen transaktioiden perusteella aika-analyysi löytääksesi aikavyöhyke, jota Loïc todennäköisimmin käyttää. Määritä tästä aikavyöhykkeestä sijainti, jossa Loïc näyttää asuvan (maa, osavaltio/alue, kaupunki...).
Harjoitus 8
Tässä on Bitcoin-tapahtuma tutkittavaksi:
bb346dae645d09d32ed6eca1391d2ee97c57e11b4c31ae4325bcffdec40afd4f
Mitä tietoja voimme tulkita pelkästään tämän liiketoimen perusteella?
Harjoitusratkaisut
Harjoitus 1:
Tämän tapahtuman malli on yksinkertainen maksumalli. Jos tarkastelemme vain sen rakennetta, voimme tulkita, että yksi lähtö edustaa vaihtoa ja toinen lähtö varsinaista maksua. Tiedämme siis, että havaittu käyttäjä ei todennäköisesti enää omista toista kahdesta UTXO:sta (maksun UTXO), mutta hänellä on edelleen toinen UTXO (vaihdon UTXO).
Harjoitus 2:
Tämän tapahtuman mallina käytetään ryhmiteltyjä menoja. Tämä malli paljastaa todennäköisesti laajamittaisen taloudellisen toiminnan, kuten vaihtofoorumin. Voimme päätellä, että panoksena oleva UTXO tulee yrityksestä, jolla on suuri taloudellinen toiminta, ja että tuotoksena olevat UTXO:t ovat hajallaan. Osa niistä kuuluu yrityksen asiakkaille, jotka ovat nostaneet bitcoininsa omiin lompakoihinsa. Toiset voivat mennä kumppaniyrityksille. Lopuksi on epäilemättä jonkin verran vaihtoa, joka menee takaisin liikkeeseen laskevalle yritykselle.
Harjoitus 3:
Tämän tapahtuman malli on yksinkertainen maksu. Voimme siis soveltaa tapahtumaan sisäisiä heuristiikkoja ja yrittää tunnistaa vaihdon.
Olen itse tunnistanut ainakin kaksi sisäistä heuristiikkaa, jotka tukevat samaa hypoteesia:
- Samantyyppisen käsikirjoituksen uudelleenkäyttö ;
- Suurin tuotos.
Ilmeisin heuristiikka on samantyyppisten käsikirjoitusten uudelleenkäyttö.
Lähtö 0 onkin P2SH, joka on tunnistettavissa sen
vastaanotto-osoitteesta, joka alkaa 3 :
3Lcdauq6eqCWwQ3UzgNb4cu9bs88sz3mKD
Lähtö 1 on P2WPKH, joka on tunnistettavissa sen
osoitteesta, joka alkaa bc1q :
bc1qya6sw6sta0mfr698n9jpd3j3nrkltdtwvelywa
UTXO, jota käytetään syötteenä tässä tapahtumassa, käyttää myös P2WPKH-skriptiä:
bc1qyfuytw8pcvg5vx37kkgwjspg73rpt56l5mx89k
Voimme siis olettaa, että tuotos 0 vastaa maksua ja tuotos 1 on transaktiovaihto, mikä tarkoittaisi, että syötteen käyttäjä omistaa aina
tuotoksen 1.
Hypoteesin tukemiseksi tai kumoamiseksi voimme etsiä muita heuristiikkoja, jotka joko vahvistavat ajatteluamme tai vähentävät todennäköisyyttä, että hypoteesimme on oikea.
Olen tunnistanut ainakin yhden toisen heuristiikan. Se on suurin lähtöheuristiikka. Lähtö "0" mittaa "123 689 satsia", kun taas lähtö "1" mittaa "505 839 satsia". Näiden kahden tuotoksen välillä on siis merkittävä ero. Suurimman tuotoksen heuristiikka viittaa siihen, että suurin tuotos on todennäköisesti valuutta. Tämä heuristiikka vahvistaa alkuperäistä hypoteesiamme entisestään.
Näin ollen vaikuttaa todennäköiseltä, että UTXO:n syötteen toimittaneella käyttäjällä on edelleen hallussaan tuloste "1", joka näyttäisi ilmentävän tapahtuman vaihtoa.
Harjoitus 4:
Tämän tapahtuman malli on yksinkertainen maksu. Voimme siis soveltaa tapahtumaan sisäisiä heuristiikkoja ja yrittää tunnistaa vaihdon.
Olen itse tunnistanut ainakin kaksi sisäistä heuristiikkaa, jotka tukevat samaa hypoteesia:
- Samantyyppisen käsikirjoituksen uudelleenkäyttö ;
- Pyöreän pylvään ulostulo.
Ilmeisin heuristiikka on samantyyppisten käsikirjoitusten uudelleenkäyttö.
Lähtö 0 onkin P2SH, joka on tunnistettavissa sen
vastaanotto-osoitteesta, joka alkaa 3 :
3FSH5Mnq6S5FyQoKR9Yjakk3X4KCGxeaD4
Lähtö 1 on P2WPKH, joka on tunnistettavissa sen
osoitteesta, joka alkaa bc1q :
bc1qvdywdcfsyavt4v8uxmmrdt6meu4vgeg439n7sg
UTXO, jota käytetään syötteenä tässä tapahtumassa, käyttää myös P2WPKH-skriptiä:
bc1qku3f2y294h3ks5eusv63dslcua2xnlzxx0k6kp
Voimme siis olettaa, että tuotos 0 vastaa maksua ja tuotos 1 on transaktiovaihto, mikä tarkoittaisi, että syötteen käyttäjä omistaa aina
tuotoksen 1.
Hypoteesin tukemiseksi tai kumoamiseksi voimme etsiä muita heuristiikkoja, jotka joko vahvistavat ajatteluamme tai vähentävät todennäköisyyttä, että hypoteesimme on oikea.
Olen tunnistanut ainakin yhden toisen heuristiikan. Se on pyöreän summan ulostulo. Lähtö "0" mittaa "70 000 satsia", kun taas lähtö "1" mittaa "22 962 satsia". Meillä on siis täydellisen pyöreä tuotos BTC-tiliyksikössä. Pyöreän tuotoksen heuristiikka viittaa siihen, että UTXO, jonka määrä on pyöreä, on todennäköisesti maksun UTXO, ja että poistamalla toinen edustaa vaihtoa. Tämä heuristiikka vahvistaa alkuperäistä hypoteesiamme entisestään.
Tässä esimerkissä toinen heuristiikka voisi kuitenkin kyseenalaistaa
alkuperäisen hypoteesimme. Lähtö "0" on todellakin suurempi kuin lähtö "1".
Sen heuristiikan perusteella, jonka mukaan suurin tuotos on yleensä
valuutta, voisimme päätellä, että tuotos 0 on valuutta. Tämä vastahypoteesi
vaikuttaa kuitenkin epätodennäköiseltä, koska kaksi muuta heuristiikkaa vaikuttavat
huomattavasti vakuuttavammilta kuin suurimman tuotoksen heuristiikka. Näin ollen
vaikuttaa järkevältä säilyttää alkuperäinen hypoteesimme tästä näennäisestä ristiriidasta
huolimatta.
Näin ollen vaikuttaa todennäköiseltä, että UTXO:n syötteen toimittaneella käyttäjällä on edelleen hallussaan tuloste "1", joka näyttäisi ilmentävän tapahtuman vaihtoa.
Harjoitus 5:
Näemme, että Loïcin henkilöllisyyteen voidaan yhdistää 8 tapahtumaa. Näistä 4 liittyy bitcoinien vastaanottamiseen:
2d9575553c99578268ffba49a1b2adc3b85a29926728bd0280703a04d051eace
8b70bd322e6118b8a002dbdb731d16b59c4a729c2379af376ae230cf8cdde0dd
d5864ea93e7a8db9d3fb113651d2131567e284e868021e114a67c3f5fb616ac4
bc4dcf2200c88ac1f976b8c9018ce70f9007e949435841fc5681fd33308dd762
Muut 4 koskevat bitcoin-lähetyksiä:
8b52fe3c2cf8bef60828399d1c776c0e9e99e7aaeeff721fff70f4b68145d540
c12499e9a865b9e920012e39b4b9867ea821e44c047d022ebb5c9113f2910ed6
a6dbebebca119af3d05c0196b76f80fdbf78f20368ebef1b7fd3476d0814517d
3aeb7ce02c35eaecccc0a97a771d92c3e65e86bedff42a8185edd12ce89d89cc
Harjoitus 6:
Jos tarkastelemme tämän liiketoimen mallia, on selvää, että kyse on niputetuista menoista. Transaktiossa on yksi panos ja 51 tuotosta, mikä viittaa korkeaan taloudellisen toiminnan tasoon. Voimme siis olettaa, että Loïc on nostanut bitcoineja vaihtoalustalta.
Useat tekijät vahvistavat tätä hypoteesia. Ensinnäkin UTXO-syötteen suojaamiseen käytetty skriptityyppi on P2SH 2/3 multisig-skripti, mikä osoittaa, että tietoturva on kehittynyt, mikä on tyypillistä vaihtoalustoille:
OP_PUSHNUM_2
OP_PUSHBYTES_33 03eae02975918af86577e1d8a257773118fd6ceaf43f1a543a4a04a410e9af4a59
OP_PUSHBYTES_33 03ba37b6c04aaf7099edc389e22eeb5eae643ce0ab89ac5afa4fb934f575f24b4e
OP_PUSHBYTES_33 03d95ef2dc0749859929f3ed4aa5668c7a95baa47133d3abec25896411321d2d2d
OP_PUSHNUM_3
OP_CHECKMULTISIG
Lisäksi tutkittua osoitetta 3PUv9tQMSDCEPSMsYSopA5wDW86pwRFbNF käytetään
uudelleen yli 220 000 eri tapahtumassa, mikä on usein ominaista vaihtofoorumeille,
jotka eivät yleensä välitä niiden luottamuksellisuudesta.
Osoitteeseen sovellettu ajallinen heuristiikka osoittaa myös, että transaktioita lähetetään säännöllisesti lähes päivittäin kolmen kuukauden ajanjakson aikana, ja niitä on pidennetty yli 24 tunnin ajan, mikä viittaa vaihtofoorumin jatkuvaan toimintaan.
Lisäksi tämän yksikön käsittelemät määrät ovat valtavia. Osoite vastaanotti ja lähetti 44 BTC:tä 222 262 transaktiossa joulukuun 2022 ja maaliskuun 2023 välisenä aikana. Nämä suuret volyymit vahvistavat entisestään vaihtoalustan toiminnan todennäköisen luonteen.
Harjoitus 7:
Analysoimalla tapahtuman vahvistusajat voidaan tunnistaa seuraavat UTC-ajat:
05:43
20:51
18:12
17:16
04:28
23:38
07:45
21:55
Näiden aikataulujen analyysi osoittaa, että UTC-7 ja UTC-8 ovat suurimmassa osassa aikatauluja sopusoinnussa ihmisten nykyisen toiminnan kanssa (klo 8.00 ja 23.00 välillä):
05:43 UTC > 22:43 UTC-7
20:51 UTC > 13:51 UTC-7
18:12 UTC > 11:12 UTC-7
17:16 UTC > 10:16 UTC-7
04:28 UTC > 21:28 UTC-7
23:38 UTC > 16:38 UTC-7
07:45 UTC > 00:45 UTC-7
21:55 UTC > 14:55 UTC-7
05:43 UTC > 21:43 UTC-8
20:51 UTC > 12:51 UTC-8
18:12 UTC > 10:12 UTC-8
17:16 UTC > 09:16 UTC-8
04:28 UTC > 20:28 UTC-8
23:38 UTC > 15:38 UTC-8
07:45 UTC > 23:45 UTC-8
21:55 UTC > 13:55 UTC-8
UTC-7-aikavyöhyke on erityisen tärkeä kesällä, sillä siihen kuuluvat sellaiset osavaltiot ja alueet kuin :
- Kalifornia (Los Angelesin, San Franciscon ja San Diegon kaltaiset kaupungit);
- Nevada (ja Las Vegas) ;
- Oregon (ja Portland) ;
- Washington (ja Seattle) ;
- Kanadan Brittiläisen Kolumbian alue (jossa sijaitsevat Vancouverin ja Victorian kaltaiset kaupungit).
Näiden tietojen mukaan Loïc asuu todennäköisesti Yhdysvaltojen tai Kanadan länsirannikolla.
Harjoitus 8:
Tämän liiketoimen analyysi paljastaa 5 panosta ja yhden tuotoksen, mikä viittaa konsolidointiin. CIOH-heuristiikkaa soveltaen voidaan olettaa, että kaikki syötetyt UTXO:t ovat yhden yksikön omistuksessa ja että myös tuotettu UTXO kuuluu tälle yksikölle. Näyttää siltä, että käyttäjä päätti ryhmitellä useita omistamiaan UTXO-yksiköitä yhdeksi UTXO-yksiköksi ulostulossa, jotta hän voisi konsolidoida osansa. Tämän toimenpiteen taustalla oli todennäköisesti halu hyödyntää tuon ajan alhaisia transaktiokustannuksia tulevien kustannusten vähentämiseksi.
Kirjoittaessani tätä ketjuanalyysia käsittelevää kolmatta osaa käytin seuraavia lähteitä:
- Neljän artikkelin sarja otsikolla: Understanding Bitcoin Privacy with OXT, tuotettu Samourai Wallet vuonna 2021 ;*
- Eri raportit OXT Research, sekä heidän ilmainen lohkoketjuanalyysityökalunsa (ei enää saatavilla tällä hetkellä Samourai Walletin perustajien pidätyksen jälkeen) ;*
- Laajemmin ottaen tietoni ovat peräisin @LaurentMT ja @ErgoBTC twiiteistä ja sisällöstä ;*
- Space Kek #19, johon osallistuin @louneskmt, @TheoPantamis, @Sosthene___ ja @LaurentMT seurassa.*
Haluan kiittää niiden tekijöitä, kehittäjiä ja tuottajia. Kiitos myös oikolukijoille, jotka korjasivat huolellisesti artikkelin, johon tämä osa 3 perustuu, ja antoivat minulle asiantuntevia neuvojaan :
Parhaat käytännöt yksityisyyden suojaamiseksi
Osoitteen uudelleenkäyttö
Tutkittuamme tekniikoita, jotka voivat murtaa luottamuksellisuutesi Bitcoinissa, tässä kolmannessa osassa tarkastelemme nyt parhaita käytäntöjä, joilla voit suojata itsesi. Tämän osan tavoitteena ei ole tutkia menetelmiä luottamuksellisuuden parantamiseksi, sillä tätä aihetta käsitellään myöhemmin, vaan pikemminkin ymmärtää, miten olla oikein vuorovaikutuksessa Bitcoinin kanssa, jotta sen luonnollisesti tarjoama luottamuksellisuus säilyy ilman lisätekniikoita.
Tämän kolmannen osan aluksi puhumme tietenkin osoitteiden uudelleenkäytöstä. Tämä ilmiö on suurin uhka käyttäjien luottamuksellisuudelle. Tämä luku on varmasti koko kurssin tärkein.
Mikä on vastaanotto-osoite?
Bitcoin-vastaanottoosoite on merkkijono tai tunniste, jota käytetään bitcoinien vastaanottamiseen lompakolla.
Teknisesti ottaen Bitcoinin vastaanottava osoite ei "vastaanota" bitcoineja kirjaimellisessa merkityksessä, vaan pikemminkin määrittelee ehdot, joilla bitcoineja voidaan käyttää. Konkreettisesti sanottuna, kun sinulle lähetetään maksu, lähettäjän transaktio luo sinulle uuden UTXO:n tuotokseksi UTXO:ista, jotka se on kuluttanut syötteinä. Tähän tuotokseen se kiinnittää skriptin, jossa määritellään, miten tämä UTXO voidaan käyttää myöhemmin. Tämä skripti tunnetaan nimellä "ScriptPubKey" tai "Locking Script". Vastaanottava osoitteesi, tai tarkemmin sanottuna sen hyötykuorma, on integroitu tähän skriptiin. Maallikon kielellä tämä skripti periaatteessa sanoo:
"Voidaksesi käyttää tämän uuden UTXO:n, sinun on annettava digitaalinen allekirjoitus käyttäen tähän vastaanottoosoitteeseen liittyvää yksityistä avainta."
Bitcoin-osoitteita on erityyppisiä riippuen käytetystä skriptausmallista.
Ensimmäiset mallit, jotka tunnetaan nimellä "Legacy*", sisältävät P2PKH- (*Pay-to-PubKey-Hash*) jaP2SH- (Pay-to-Script-Hash) osoitteet. P2PKH-osoitteet
alkavat aina numerolla 1 ja P2SH-osoitteet numerolla 3. Vaikka nämä muodot ovat edelleen turvallisia, ne ovat nyt
vanhentuneita, sillä ne aiheuttavat korkeampia transaktiokustannuksia ja
tarjoavat vähemmän luottamuksellisuutta kuin uudet standardit.
SegWit V0 (P2WPKH ja P2WSH) ja Taproot / SegWit V1
(P2TR) osoitteet edustavat nykyaikaisia muotoja.
SegWit-osoitteet alkavat kirjaimella bc1q ja vuonna 2021
käyttöön otetut Taproot-osoitteet kirjaimella bc1p.
Tässä on esimerkiksi Taprootin vastaanotto-osoite:
bc1ps5gd2ys8kllz9alpmcwxqegn7kl3elrpnnlegwkm3xpq2h8da07spxwtf5
Se, miten ScriptPubKey muodostetaan, riippuu käyttämästäsi standardista:
| ScriptPubKey | Skriptimalli
| ---------------- | ----------------------------------------------------------- |
| P2PKH | OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
|
| P2SH | OP_HASH160 <scriptHash> OP_EQUAL |
| P2WPKH | 0 <pubKeyHash> |
| P2WSH | 0 <<witnessScriptHash> |
| P2SH - P2WPKH | OP_HASH160 <redeemScriptHash> OP_EQUAL |
| P2SH - P2WSH | OP_HASH160 <redeemScriptHash> OP_EQUAL |
| P2TR | 1 <pubKey> |
Vastaanottoosoitteiden rakentaminen riippuu myös valitusta käsikirjoitusmallista:
P2PKH- jaP2WPKH-osoitteissa hyötykuorma, eli osoitteen ydin, edustaa julkisen avaimen hash-arvoa;P2SH- jaP2WSH-osoitteissa hyötykuorma edustaa ;- Kuten "P2TR"-osoitteissa, hyötykuorma on muokattu julkinen avain. P2TR-tulosteissa yhdistyvät Pay-to-PubKey- ja Pay-to-Script-ominaisuudet. Muokattu julkinen avain on tulosta siitä, että klassiseen julkiseen rahankäyttöavaimeen on lisätty "tweak", joka on johdettu sellaisten skriptien Merkle-juuresta, joita voidaan käyttää myös bitcoinien rahankäyttöön.
Salkkuohjelmistossasi näkyvät osoitteet sisältävät myös HRP:n (Human-Readable Part), joka on tyypillisesti bc SegWitin jälkeisissä osoitteissa,
erottimen 1 ja versionumeron q SegWit V0:lle ja p Taproot/SegWit V1:lle. Lisäksi lisätään tarkistussumma, jolla
taataan osoitteen eheys ja oikeellisuus lähetyksen aikana.
Lopuksi osoitteet asetetaan vakiomuotoon:
- Base58check vanhoja Legacy-osoitteita varten ;
- Bech32 SegWit-osoitteita varten ;
- Bech32m Taproot-osoitteita varten.
Tässä on yhteenlaskumatriisi bech32- ja bech32m-formaateille (SegWit ja Taproot) 10:stä lähtien:
| + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 0 | q | p | z | r | y | 9 | x | 8 | 8 |
| 8 | g | f | 2 | t | v | d | w | 0 | |
| 16 | s | 3 | j | n | 5 | 4 | k | h | 5 | 4 | k | k | h |
| 24 | c | e | 6 | m | u | a | 7 | l | 6 | m | u | a | 7 | l |
Mitä on osoitteen uudelleenkäyttö?
Osoitteen uudelleenkäyttö tarkoittaa saman vastaanottavan osoitteen käyttämistä useiden eri UTXO:iden estämiseen.
Kuten edellisessä jaksossa todettiin, jokaisella UTXO:lla on oma ScriptPubKey-avaimensa, joka lukitsee UTXO:n ja jonka on täytyttävä, jotta UTXO voidaan käyttää syötteenä uudessa transaktiossa. Hyötykuorman osoitteet on integroitu tähän ScriptPubKey-avaimeen.
Kun eri ScriptPubKeys-avaimet sisältävät saman vastaanottavan osoitteen, tätä kutsutaan osoitteen uudelleenkäytöksi. Käytännössä tämä tarkoittaa sitä, että käyttäjä on toistuvasti antanut saman osoitteen lähettäjille saadakseen bitcoineja useiden maksujen kautta. Ja juuri tämä käytäntö on tuhoisa yksityisyytesi kannalta.
Miksi osoitteen uudelleenkäyttö on ongelma?
Koska lohkoketju on julkinen, on helppo nähdä, mitkä osoitteet lukitsevat mitäkin UTXO:ta ja kuinka monta bitcoinia. Jos samaa osoitetta käytetään useissa transaktioissa, on mahdollista päätellä, että kaikki kyseiseen osoitteeseen liittyvät bitcoinit kuuluvat samalle henkilölle. Tämä käytäntö vaarantaa käyttäjien yksityisyyden, sillä se mahdollistaa determinististen yhteyksien luomisen eri transaktioiden välille ja bitcoinien jäljittämisen lohkoketjussa. Satoshi Nakamoto itse korosti tätä ongelmaa jo Bitcoinin valkoisessa kirjassa:
Lisäpalomuurina voitaisiin käyttää uutta avainparia jokaista tapahtumaa varten, jotta ne eivät olisi sidoksissa yhteiseen omistajaan
Lähde: S. Nakamoto, "Bitcoin: A Peer-to-Peer Electronic Cash System", https://bitcoin.org/bitcoin.pdf, 2009.
Satoshin tarkoituksena oli tällä lauseella luoda ylimääräinen palomuuri käyttäjän identiteetin ja Bitcoinin avainparin välille, jotta estettäisiin koko käyttäjän toiminnan julkinen yhdistäminen hänen identiteettiinsä. Nykyään, kun lohkoketjuanalyysiyritykset ja KYC-säännökset ovat lisääntyneet, yksilöllisten osoitteiden käyttö ei ole enää "ylimääräinen palomuuri" vaan välttämätön käytäntö kaikille, jotka haluavat säilyttää vähimmäismäärän yksityisyyttä.
Kun käytät osoitetta uudelleen, muodostat lähes kiistattoman yhteyden kaikkien kyseiseen osoitteeseen liittyvien tapahtumien välille. Vaikka tämä ei suoraan vaaranna varojasi, sillä elliptisen käyrän kryptografia takaa yksityisten avaimesi turvallisuuden, se kuitenkin helpottaa toimintojesi valvontaa. Kuka tahansa, jolla on solmu, voi nimittäin tarkkailla osoitteiden tapahtumia ja saldoja, mikä vaarantaa anonymiteettisi täysin.
Havainnollistetaan tätä asiaa esimerkillä Bobista, käyttäjästä, joka ostaa säännöllisesti pieniä määriä bitcoineja DCA:ssa ja lähettää ne aina samaan osoitteeseen. Kahden vuoden kuluttua tässä osoitteessa on huomattava määrä bitcoineja. Jos Bob käyttää tätä osoitetta maksaakseen paikalliselle kauppiaalle, tämä voi nähdä kaikki siihen liittyvät varat ja päätellä Bobin varallisuuden. Tämä voi johtaa henkilökohtaisiin turvallisuusriskeihin, kuten varkaus- tai kiristysyrityksiin. Jos Bob olisi käyttänyt tyhjää osoitetta vastaanottaakseen jokaisen säännöllisen ostoksen, hän olisi paljastanut kauppiaalle huomattavasti vähemmän tietoja.
Merkkijonoanalyysissä on 2 erilaista osoitteen uudelleenkäyttöä:
- Ulkoinen uudelleenkäyttö ;
- Sisäinen uudelleenkäyttö tapahtuman sisällä.
Ensimmäinen on, kun osoitetta käytetään uudelleen useissa eri Bitcoin-tapahtumissa. Tästä puhuimme aiemmin: tämä heuristiikka päättelee, että kaikki UTXO:t, jotka kulkevat tämän osoitteen kautta, kuuluvat yhdelle taholle.
Sisäistä osoitteen uudelleenkäyttöä ei tapahdu silloin, kun uudelleenkäyttö tapahtuu useiden transaktioiden välillä, vaan silloin, kun se tapahtuu yhden transaktion sisällä. Jos samaa osoitetta, jota käytetään syötteen lukitsemiseen, käytetään transaktion tulosteena, voidaan päätellä, että tämä tuloste kuuluu edelleen samalle käyttäjälle (vaihtoon) ja että toinen tuloste edustaa todellista maksua. Tämä toinen heuristiikka mahdollistaa varojen jäljittämisen useiden transaktioiden ajan.
Osoitteiden uudelleenkäyttö on Bitcoinin todellinen vitsaus. OXT.me-sivuston (johon ei tällä hetkellä pääse käsiksi) mukaan osoitteiden uudelleenkäyttöaste Bitcoinissa oli noin 52 prosenttia vuonna 2022:
Tämä määrä on valtava, mutta se tulee valtaosin pikemminkin vaihtofoorumeilta kuin yksittäisiltä käyttäjiltä.
Miten vältetään osoitteen uudelleenkäyttö?
Osoitteiden uudelleenkäytön välttäminen on melko yksinkertaista: Käytä yksinkertaisesti uutta, tyhjää osoitetta kaikkiin uusiin maksuihin lompakollesi.
BIP32:n ansiosta nykyaikaiset salkut ovat nyt deterministisiä ja hierarkkisia. Tämä tarkoittaa, että käyttäjä voi luoda suuren määrän osoitteita yhdestä ainoasta lähtötiedosta: siemenestä. Tallentamalla tämän yksittäisen tiedon on mahdollista palauttaa kaikki salkun yksityiset avaimet, mikä mahdollistaa pääsyn vastaavilla osoitteilla suojattuihin varoihin.
Tämän vuoksi, kun painat lompakko-ohjelmiston "vastaanottaa"-painiketta, ehdotetaan aina käyttämätöntä vastaanottoosoitetta. Kun olet vastaanottanut bitcoineja tähän osoitteeseen, ohjelmisto ehdottaa automaattisesti uutta osoitetta.
PS: Viime aikoina jotkin lompakko-ohjelmat ovat ilmoittaneet aikovansa lopettaa tyhjien osoitteiden luomisen, koska he pelkäävät, että viranomaiset pitävät tätä rahanpesun muotona. Jos ohjelmistosi on yksi näistä, suosittelen sinua vaihtamaan sen välittömästi, koska tämä ei ole hyväksyttävää käyttäjän kannalta. Jos tarvitset staattisen tunnisteen maksujen, kuten lahjoitusten, vastaanottamiseen, ei ole suositeltavaa käyttää klassista Bitcoin-osoitetta uudelleenkäytön riskin vuoksi. Käytä sen sijaan Lightning-osoitetta tai valitse staattinen onchain-maksutunniste, kuten BIP47 tai Silent Payments. Nämä protokollat selitetään yksityiskohtaisesti tämän kurssin osassa 6.
Osien merkitseminen ja tarkastaminen
Kuten havaitsimme merkkijonoanalyysia käsittelevässä osassa, on olemassa lukuisia heuristiikkoja ja malleja, joiden avulla voidaan päätellä tietoja tapahtumasta. Käyttäjänä on tärkeää olla tietoinen näistä tekniikoista, jotta voit suojautua niiltä paremmin.
Tämä edellyttää lompakkosi tarkkaa hallintaa omassa säilytyksessä, mikä tarkoittaa UTXO:iden alkuperän tuntemista ja huolellista valintaa siitä, mitä UTXO:ita käytät maksuja suorittaessasi. Tämä lompakon tehokas hallinta perustuu hyvien Bitcoin-lompakoiden kahteen tärkeään ominaisuuteen: merkitsemiseen ja kolikoiden hallintaan.
Tässä luvussa tarkastelemme näitä ominaisuuksia ja katsomme, miten voit käyttää niitä älykkäästi, lisäämättä liikaa työmäärää, optimoidaksesi yksityisyytesi Bitcoinissa.
Mitä on merkintä?
Leimaaminen on käytäntö, jossa tiettyyn UTXO:hon osoitetaan merkintä tai etiketti Bitcoin-lompakossa. Lompakko-ohjelmisto tallentaa nämä merkinnät paikallisesti, eikä niitä koskaan lähetetä Bitcoin-verkon kautta. Merkintä on siis henkilökohtainen hallintatyökalu.
Jos minulla on esimerkiksi UTXO, joka on peräisin P2P-ostosta Bisqissä
Charlesin kanssa, voin merkitä sen "Non-KYC Bisq Charles".
Merkitseminen on hyvä käytäntö, joka auttaa muistamaan UTXO:n alkuperän tai aiotun määränpään, mikä helpottaa varojen hallinnointia ja yksityisyyden suojan optimointia. Bitcoin-lompakkosi suojaa nimittäin varmasti useita UTXO:ita. Jos näiden UTXO:iden lähteet ovat erilaiset, et ehkä halua yhdistää näitä UTXO:ita tulevaisuudessa, sillä muuten voisit paljastaa niiden yhteisen omistajuuden. Merkitsemällä kaikki osasi asianmukaisesti voit olla varma, että muistat mistä ne ovat peräisin, kun tarvitset niitä, vaikka se tapahtuisi vuosien päästä.
Mikä on kulmanhallinta?
Merkintöjen aktiivisesta käytöstä tulee entistäkin mielenkiintoisempaa, kun siihen yhdistetään salkkuohjelmiston kolikonhallintavaihtoehto.
Kolikonhallinta on ominaisuus, joka löytyy hyvistä Bitcoin-lompakko-ohjelmistoista, ja se antaa sinulle mahdollisuuden valita manuaalisesti tiettyjä UTXO:ita, joita voit käyttää syötteenä transaktion suorittamiseen. Itse asiassa, jotta voit tyydyttää lähtömaksun, sinun on kulutettava vastineeksi syötetty UTXO. Useista syistä, joita tarkastelemme myöhemmin, saatat haluta valita tarkkaan, mitä osia haluat kuluttaa syötteinä tietyn maksun suorittamiseksi. Juuri tämä on mahdollista kolikoiden hallinnan avulla. Vertailun vuoksi sanoisin, että tämä ominaisuus on samanlainen kuin valitsisit tietyn kolikon lompakostasi, kun maksat patonkia.
Kolikko-ohjauksella varustetun salkkuohjelmiston käyttö yhdessä UTXO-merkinnän kanssa antaa käyttäjille mahdollisuuden sekä erottaa UTXO:t toisistaan että valita UTXO:t tarkasti liiketoimiaan varten.
Miten merkitsette UTXO:t?
UTXO:iden merkitsemiseen ei ole olemassa yhtä ainoaa sopivaa menetelmää. On sinun tehtäväsi määritellä merkintäjärjestelmä, joka on helppo ymmärtää salkullesi. Muista joka tapauksessa, että hyvä merkintä on merkintää, jonka ymmärrät, kun tarvitset sitä. Jos Bitcoin-lompakkosi on tarkoitettu ensisijaisesti säästämiseen, merkinnöistä ei välttämättä ole sinulle hyötyä vuosikymmeniin. Varmista siis, että ne ovat selkeitä, tarkkoja ja kattavia.
On tärkeää, että läheisesi voivat helposti tunnistaa varojen alkuperän, jos he jonain päivänä tarvitsevat pääsyä salkkuusi. Tämä auttaa heitä sekä luottamuksellisuussyistä että oikeudellisista syistä, jos heidän on perusteltava varojen alkuperä viranomaiselle.
Tärkein asia, joka etiketissä on mainittava, on UTXO:n lähde. Sinun on yksinkertaisesti ilmoitettava, miten kolikko on päätynyt lompakkoosi. Onko se seurausta ostosta vaihtopalvelusta? Asiakkaalta saadun laskun maksusta? Vertaisverkkopörssin kautta? Vai edustaa se jonkin menon vaihtoa? Voit esimerkiksi ilmoittaa:
- poista Exchange.com` ;
- asiakkaan maksu David` ;
- ostaa P2P Charles` ;
Vaihda sohvan osto
Jos haluat hienosäätää UTXO:n hallintaa ja noudattaa rahastojen erottelustrategioita salkussasi, voit täydentää merkintöjäsi lisäindikaattorilla, joka kuvastaa näitä erotteluja. Jos salkussasi on kaksi UTXO-luokkaa, joita et halua sekoittaa keskenään, voit sisällyttää merkintöihisi merkinnän, jolla nämä ryhmät erotetaan selvästi toisistaan. Nämä erottelumerkit riippuvat omista kriteereistäsi, kuten KYC:tä edellyttävän hankintaprosessin tuloksena syntyneiden UTXO:iden erottaminen toisistaan tai ammatillisten ja henkilökohtaisten rahastojen erottaminen toisistaan. Edellä mainittujen esimerkkien perusteella tämä voisi tarkoittaa seuraavaa:
KYC - Withdrawal Exchange.com;KYC - Asiakasmaksu David;NO KYC - Osta P2P Charles;NO KYC - Muuta sohvan osto
On myös suositeltavaa säilyttää osan merkintä useiden liiketoimien aikana. Kun esimerkiksi konsolidoit UTXO no-KYC:tä, muista merkitä tuloksena syntyvä UTXO, ei vain "konsolidointi", vaan nimenomaan "konsolidointi no-KYC", jotta voit pitää selkeän merkinnän siitä, mistä kolikot ovat peräisin.
Lisäksi etikettiin ei ole pakko merkitä päivämäärää. Useimmat lompakko-ohjelmistot näyttävät jo transaktiopäivämäärän, ja tämä tieto on aina mahdollista löytää lohko-etsintäohjelmasta TXID-tunnuksen ansiosta.
Miten valita oikeat osat?
Kun suoritat maksutapahtuman, voit kolikkosäätimen avulla valita erikseen, mitä UTXO-yksiköitä käytät syötteenä maksun tuloksen täyttämiseksi. Tähän valintaan liittyy kaksi näkökohtaa:
- Maksun vastaanottajan mahdollisuus yhdistää osa henkilöllisyydestäsi syötteissä käytettyihin UTXO-tunnuksiin;
- Ulkopuolisen tarkkailijan kyky luoda yhteyksiä kaikkien syötteenä käytettyjen UTXO:iden välille.
Ensimmäisen kohdan havainnollistamiseksi otetaan konkreettinen esimerkki. Oletetaan, että ostat patongin bitcoineilla leipuriltasi. Käytät yhtä tai useampaa hallussasi olevaa UTXO:ta panoksina, jotta voit kattaa ainakin patongin hinnan panoksina sekä transaktiomaksut. Leipurisi voi sitten mahdollisesti yhdistää kasvosi tai minkä tahansa muun tuntemansa osan henkilöllisyydestäsi panoksina käytettyihin kolikoihin. Kun tiedät tämän yhteyden olemassaolon, saatat valita maksettaessa mieluummin tietyn UTXO:n kuin jonkin muun UTXO:n.
Jos esimerkiksi yksi UTXO:eistasi on peräisin vaihtopalvelusta ja haluat, ettei leipuri tiedä tilistäsi kyseisellä alustalla, vältät kyseisen UTXO:n käyttämistä maksamiseen. Jos sinulla on arvokas UTXO, joka paljastaa merkittävän määrän bitcoineja, saatat myös päättää olla käyttämättä sitä, jotta leipuri ei saisi tietää BTC-varallisuudestasi.
Sen valitseminen, mitä UTXO:ta käytetään tässä ensimmäisessä kohdassa, on siis henkilökohtainen päätös, johon vaikuttaa se, mitä olet valmis paljastamaan tai olemaan paljastamatta. UTXO-merkinnät, jotka annat UTXO:ille niitä vastaanotettaessa, auttavat sinua valitsemaan ne, jotka käytettyäsi paljastavat vain sellaisia tietoja, jotka voit mielelläsi paljastaa vastaanottajalle.
Vastaanottajalle mahdollisesti paljastuvien tietojen lisäksi syötteiden valinta vaikuttaa myös siihen, mitä paljastat kaikille lohkoketjun tarkkailijoille. Käyttämällä useita UTXO:ita tapahtuman syötteinä paljastat CIOH-heuristiikan (Common Input Ownership Heuristic_) mukaan, että ne ovat saman tahon omistuksessa.
Kun valitset osia, sinun on siis oltava tietoinen siitä, että lähetettävä tapahtuma luo linkin kaikkien käytettyjen UTXO:iden välille. Tämä linkki voi olla ongelmallinen yksityisyytesi kannalta, varsinkin jos UTXO:t ovat peräisin eri lähteistä.
Otetaan esimerkiksi Bisqin ei-KYC UTXO, jonka haluan välttää yhdistämästä sitä esimerkiksi säännellyn pörssialustan UTXO:n kanssa, joka tuntee henkilöllisyyteni. Jos nimittäin käytän näitä kahta UTXO:ta saman transaktion syötteenä, säännelty foorumi pystyy yhdistämään henkilöllisyyteni Bisqistä ostamaani UTXO:hon, jota ei ollut aiemmin yhdistetty henkilöllisyyteeni.
Lopuksi, kun valitset, mitä UTXO:ta käytät tapahtuman syötteinä, tärkeintä on välttää useiden UTXO:iden käyttöä. Valitse korkeintaan yksi kolikko, joka on riittävän suuri maksun suorittamiseen, kun se on mahdollista. Näin vältät kokonaan CIOH:iin liittyvät riskit. Jos yksittäinen UTXO ei kuitenkaan riitä maksuun ja sinun on käytettävä useita, varmista, että ne ovat peräisin samankaltaisista lähteistä, jotta ei-toivottujen yhteyksien riski on mahdollisimman pieni. Muista myös, että vastaanottaja voi yhdistää hallussaan olevat tiedot sinusta panoksina käytettyjen kolikoiden historiaan.
Automaattisen osanvalinnan ymmärtäminen
Edellisissä jaksoissa käsiteltiin tapahtumassa käytettävien UTXO:iden manuaalista valintaa. Mutta mitä tapahtuu, kun lompakko-ohjelmisto tekee tämän valinnan automaattisesti? Käytettävien kolikoiden määrittämiseen on olemassa useita menetelmiä, ja UTXO:iden valinta muodostaa todellisen Bitcoin-tutkimusalan. Tämän automaattisen prosessin päätavoitteena on usein minimoida käyttäjän transaktiokustannukset.
UTXO-valintamenetelmät, kuten FIFO (First In First Out) ja LIFO (Last In First Out), ovat yksinkertaisimpia mutta myös tehottomimpia. FIFO-menetelmässä salkun vanhimmat osat käytetään ensin. Tämä lähestymistapa on yleensä tehoton sekä transaktiokustannusten minimoimiseksi että luottamuksellisuuden säilyttämiseksi, paitsi tapauksissa, joissa käytetään suhteellisia aikarajoja, jotka on uusittava säännöllisesti. Sitä vastoin LIFO:ssa käytetään ensisijaisesti uusimpia UTXO:ita. Vaikka molemmat menetelmät ovat yksinkertaisia, ne osoittautuvat usein tehottomiksi.
Edistyneempi menetelmä on Knapsack Solver. Tätä käytettiin Bitcoin Core -lompakossa versioon 0.17 asti. Siinä valitaan iteratiivisesti ja satunnaisesti UTXO:t lompakosta, lasketaan ne yhteen osajoukkoina ja pidetään ratkaisu, joka pienentää transaktion painoa mahdollisimman paljon, jotta käyttäjälle aiheutuvat kustannukset pienenisivät.
Branch-and-Bound (BNB), joka on usein saanut keksijänsä mukaan lempinimen "Murch-algoritmi", on korvannut Knapsack Solverin Bitcoin Coressa versiosta 0.17 alkaen. Tällä kehittyneemmällä menetelmällä pyritään löytämään UTXO-joukko, joka vastaa täsmälleen transaktion tuotosten tyydyttämiseen tarvittavaa määrää. BNB:n tavoitteena on minimoida vaihtomäärä sekä maksut vähentämällä niin sanottua hukkakriteeriä, jossa otetaan huomioon sekä välittömät kustannukset että vaihdon odotetut tulevat kustannukset. Menetelmä on johdettu Ailsa Landin ja Alison Harcourtin vuonna 1960 ideoimasta alkuperäisestä Branch-and-Bound-käsitteestä, ja se tarjoaa tarkemman maksujen optimoinnin kuin Knapsack Solver.
Kaikki nämä automaattiset UTXO-valintamenetelmät voivat vähentää tehokkaasti transaktiokustannuksia, mutta ne eivät useinkaan ole tehokkaita käyttäjän luottamuksellisuuden säilyttämisessä. Nämä algoritmit voivat nimittäin yhdistää useita UTXO:ita syötteiksi, jolloin näiden UTXO:iden yhteinen ominaisuus paljastuu CIOH:n vuoksi. Näissä menetelmissä ei tietenkään voida ottaa huomioon UTXO:iin kiinnitettyjä merkintöjä, jotka ovat kuitenkin ratkaisevan tärkeitä, kun tietoisesti valitaan, mitkä osat paljastetaan transaktion vastaanottajalle. Tällä hetkellä ainoa tapa optimoida luottamuksellisuus kolikoita valittaessa on tehdä se manuaalisesti.
UTXO-merkintää koskeva opetusohjelma
Jos haluat tietää, miten merkitä UTXO:t, olemme tehneet kattavan ohjeen tärkeimmistä Bitcoin-lompakko-ohjelmistoista:
https://planb.network/tutorials/privacy/on-chain/utxo-labelling-d997f80f-8a96-45b5-8a4e-a3e1b7788c52
KYC ja avaintunnistus
KYC on lyhenne sanoista "Know Your Customer" (tunne asiakkaasi). Se on sääntelymenettely, jonka tietyt Bitcoin-alalla toimivat yritykset ovat ottaneet käyttöön. Menettelyn tarkoituksena on tarkistaa ja rekisteröidä asiakkaidensa henkilöllisyys, ja sen tavoitteena on torjua rahanpesua ja terrorismin rahoitusta.
Käytännössä KYC tarkoittaa, että asiakkaalta kerätään erilaisia henkilötietoja, jotka voivat vaihdella lainkäyttöalueesta riippuen, mutta yleensä ne sisältävät henkilöllisyystodistuksen, valokuvan ja osoitetodistuksen. Nämä tiedot tarkistetaan ja tallennetaan myöhempää käyttöä varten.
Tästä menettelystä on tullut pakollinen kaikille säännellyille pörssifoorumeille useimmissa länsimaissa. Tämä tarkoittaa, että kaikkien, jotka haluavat vaihtaa valtion valuuttaa bitcoiniin näiden alustojen kautta, on noudatettava KYC-vaatimuksia.
Tämä menettely ei ole riskitön käyttäjien yksityisyyden ja turvallisuuden kannalta. Tässä luvussa tarkastelemme näitä riskejä yksityiskohtaisesti ja analysoimme KYC- ja tunnistamisprosessien erityisiä vaikutuksia Bitcoin-käyttäjien yksityisyyteen.
Ketjussa tapahtuvan jäljittämisen helpottaminen
Ensimmäinen KYC:hen liittyvä riski on se, että se tarjoaa etuoikeutetun pääsyn lohkoketjuanalyysille. Kuten edellisessä jaksossa todettiin, analyytikot voivat klusteroida ja seurata lohkoketjun toimintaa transaktiomallien ja heuristiikan avulla. Kun he ovat onnistuneet klusteroimaan käyttäjän lohkoketjuaktiivisuuden, heidän tarvitsee vain löytää yksi sisäänpääsypiste kaikkien hänen transaktioidensa ja avaintensa joukosta vaarantaakseen täysin hänen luottamuksellisuutensa.
Kun suoritat KYC-tarkastuksen, tarjoat korkealaatuisen lähtökohdan lohkoketjuanalyysille, sillä yhdistät vastaanotto-osoitteet, joita käytetään nostettaessa bitcoineja vaihtopalvelusta, täydelliseen, todennettuun henkilöllisyyteesi. Teoriassa nämä tiedot ovat vain sen yrityksen tiedossa, jolle ne annoit, mutta kuten jäljempänä nähdään, tietovuodon riski on todellinen. Lisäksi pelkkä se, että yrityksellä on nämä tiedot hallussaan, voi olla ongelmallista, vaikka se ei jakaisikaan niitä.
Jos et siis ryhdy muihin toimiin rajoittaaksesi toimintojesi yhdistämistä lohkoketjuun, kuka tahansa, joka tuntee tämän KYC-kohdan, voi mahdollisesti yhdistää kaiken Bitcoin-aktiviteettisi henkilöllisyyteesi. Kyseisen yrityksen näkökulmasta Bitcoinin käyttösi menettää kaiken luottamuksellisuuden.
Vertailun avulla voidaan havainnollistaa, että Pankki X:n pankkivirkailijalla olisi pääsy kaikkiin Pankki X:n kanssa suorittamiisi maksutapahtumiin, mutta hän voisi myös tarkkailla Pankki Y:n kanssa suorittamiasi maksutapahtumia ja kaikkia käteistapahtumia.
Muista tämän kurssin ensimmäisestä osasta: Bitcoinin luottamuksellisuusmalli, sellaisena kuin Satoshi Nakamoto sen suunnitteli, perustuu käyttäjän identiteetin ja hänen avainpariensa erottamiseen toisistaan. Vaikka tämä luottamuksellisuuden taso ei enää nykyään riitä, on silti järkevää rajoittaa sen heikkenemistä mahdollisimman paljon.
Altistuminen valtion valvonnalle
KYC:n toinen suuri ongelma on se, että se paljastaa valtiolle, että olet omistanut bitcoineja jossain vaiheessa. Kun ostat bitcoineja säännellyn toimijan kautta, valtio voi saada tietää tästä omistuksesta. Tällä hetkellä tämä saattaa vaikuttaa vähäpätöiseltä, mutta on tärkeää muistaa, että maasi poliittinen ja taloudellinen tulevaisuus ei ole sinun käsissäsi.
Ensinnäkin valtio voi nopeasti omaksua autoritaarisen asenteen. Historia on täynnä esimerkkejä, joissa politiikka on muuttunut äkillisesti. Nykyään Euroopassa Bitcoin-asiakkaat voivat kirjoittaa artikkeleita Bitcoinista, osallistua konferensseihin ja hallinnoida lompakkoaan itse. Mutta kuka voi sanoa, mitä huominen tuo tullessaan? Jos Bitcoinista tulee yhtäkkiä julkinen vihollinen numero yksi, siihen liittyminen hallituksen tiedostoissa voi osoittautua ongelmalliseksi.
Vakavan talouskriisin sattuessa valtio voisi harkita kansalaisten hallussa olevien bitcoinien takavarikointia. Ehkäpä huomenna bitcoinin omistajia pidetään kriisin hyötyjinä, ja heitä verotetaan kohtuuttomasti pääomavoitoista, kun fiat-valuutta devalvoituu.
Saatat ajatella, että tämä ei ole ongelma, koska bitcoinisi ovat sekoitettuja ja siten jäljittämättömiä. Jäljittäminen ei kuitenkaan ole ongelma. Todellinen ongelma on se, että valtio tietää, että olet omistanut bitcoineja. Pelkästään tämä tieto voi riittää syyttämään sinua tai saattamaan sinut vastuuseen. Voisit yrittää väittää, että olet käyttänyt bitcoinisi, mutta se pitäisi näkyä veroilmoituksessasi, ja jäisit kiinni. Voisit myös sanoa, että hukkasit avaimesi veneonnettomuudessa, mutta luuletko todella, että se riittäisi Twitter-vitsin lisäksi vapauttamaan sinut syytteistä?
On siis tärkeää ottaa huomioon riski siitä, että valtio saa tietää, että olet omistanut BTC:tä, vaikka tämä riski tuntuisi nykyään kuinka pieneltä.
Toinen KYC:n aiheuttama ongelma valtion valvonnan kannalta on säänneltyjen alustojen pakollinen raportointi. En tunne muiden lainkäyttöalueiden säännöksiä, mutta Ranskassa Prestataires de Services sur Actifs Numériques (PSAN) on velvollinen ilmoittamaan rahoitusvalvontaviranomaisille kaikista epäilyttäviksi katsomistaan varainsiirroista.
Ranskassa vuonna 2023 PSAN ilmoitti 1 449 epäilyttävää tekoa. Toistaiseksi suurin osa näistä teoista liittyy rikoksiin. Viranomaiset pyytävät kuitenkin myös säänneltyjä alustoja ilmoittamaan epäilyttävistä Bitcoin-tapahtumista pelkästään niiden rakenteen perusteella. Jos suoritat yhteistoiminnallisen transaktion tai jopa vain transaktion, jossa on hieman epätyypillinen kuvio, ja tämä transaktio tapahtuu lähellä bitcoinien nostamista näiltä alustoilta, saatat joutua raportoitavaksi viranomaisille. Jopa ilman väärinkäytöksiä ja laillista oikeuksien käyttämistä, tällainen raportointi voi johtaa lisääntyneisiin tarkastuksiin ja valvontaan, haittoihin, joilta olisit välttynyt ilman KYC:tä.
Henkilötietojen vuotamisen riski
KYC:n ongelmana on myös se, että se edellyttää kaikkien henkilötietojesi tallentamista yksityisen yrityksen palvelimille.
Viimeaikaiset tapahtumat ovat muistuttaneet meitä siitä, että kukaan ei ole immuuni talous- tai tietotekniikkahäiriöille. Vuonna 2022 Celsiuksen asiakkaat kärsivät seurauksista. Yrityksen konkurssin jälkeen amerikkalaiset tuomioistuimet julkistivat velkojien nimet ja heidän varojensa määrän hallintomenettelyn aikana.
Reilu kaksi vuotta sitten kryptovaluuttojen kyberturvallisuuden lippulaiva joutui kokemaan asiakkaidensa henkilötietojen varastamisen. Vaikka tämä tapaus ei liittynyt suoraan bitcoinien ostamiseen, tällainen riski on edelleen olemassa myös vaihtofoorumeille. Henkilötietoihin liittyy siis ehdottomasti riski.
On totta, että annamme jo nyt monia henkilötietojamme yksityisten yritysten haltuun. Riski on kuitenkin kaksinkertainen, sillä nämä tiedot eivät ainoastaan tunnista sinua, vaan ne liittyvät myös Bitcoin-aktiviteetteihin. Kun hakkeri pääsee käsiksi pörssialustan asiakastietoihin, hän voi nimittäin perustellusti olettaa, että näillä asiakkailla on Bitcoineja. Tätä riskiä lisää se, että Bitcoin, kuten mikä tahansa arvokas omaisuus, herättää varkaiden huomion.
Tietovuodon sattuessa voit parhaimmillaan joutua kohdennettujen phishing-yritysten kohteeksi. Pahimmassa tapauksessa saatat joutua kotiisi kohdistuvien fyysisten uhkien kohteeksi.
Bitcoiniin liittyvien erityisten riskien lisäksi on olemassa myös henkilöllisyysasiakirjojen siirtämiseen liittyviä vaaroja. Tietovuodon sattuessa on nimittäin mahdollista joutua identiteettivarkauden uhriksi. Panokset eivät siis rajoitu vain transaktioiden luottamuksellisuuden suojaamiseen, vaan ne koskevat myös jokaisen yksilön henkilökohtaista turvallisuutta.
Joitakin ennakkokäsityksiä KYC:stä
On tärkeää purkaa joitakin ennakkoluuloja KYC:stä, joihin törmäämme usein Twitterissä tai bitcoin-asiakkaiden välisissä keskusteluissa.
Ensinnäkin on virheellistä ajatella, että KYC:n kautta hankittujen bitcoinien yksityisyyden suojaaminen on turhaa. Bitcoinin yksityisyydensuojatyökalut ja -menetelmät ovat moninaisia ja palvelevat eri tarkoituksia. Esimerkiksi coinjoin-transaktioiden käyttäminen KYC:n kautta hankituilla Bitcoineilla ei ole huono idea. Säänneltyjen vaihtoalustojen kanssa on tietysti oltava varovainen, jotta tilisi ei jäädytetä tai kielletä, mutta puhtaasti teknisestä näkökulmasta nämä käytännöt eivät ole yhteensopimattomia. Coinjoinilla on se vaikutus, että kolikon historia katkeaa, mikä auttaa sinua torjumaan tiettyjä KYC:hen liittyviä ketjuanalyysiriskejä. Vaikka se ei poista kaikkia riskejä, se on merkittävä etu.
Bitcoinin luottamuksellisuutta ei pitäisi tarkastella binäärisesti, erona "nimettömien" bitcoinien ja muiden, jotka eivät ole sitä, välillä. KYC:n kautta hankittujen bitcoinien omistaminen ei tarkoita, että kaikki on menetetty; päinvastoin, luottamuksellisuusvälineiden käyttö voi osoittautua jopa hyödyllisemmäksi.
Sitä vastoin bitcoinien hankkiminen muulla kuin KYC-menetelmällä ei takaa täydellistä luottamuksellisuutta eikä vapauta sinua muista suojatoimenpiteistä. Jos sinulla on hallussasi muita kuin KYC-bitcoineja, mutta käytät vastaanottoosoitteita useita kertoja, transaktiosi voidaan jäljittää ja yhdistää. Pienikin linkki Bitcoinin ulkopuoliseen maailmaan voi vaarantaa ainoan luottamuksellisuuskerroksen, joka sinulla on. Siksi on tärkeää pitää kaikkia Bitcoinin yksityisyyttä parantavia työkaluja ja menetelmiä toisiaan täydentävinä. Jokainen tekniikka kohdistuu tiettyyn riskiin ja voi lisätä ylimääräisen suojakerroksen. Se, että omistat Bitcoinin, joka ei ole KYC, ei siis tarkoita sitä, ettei sinun tarvitsisi ryhtyä muihin varotoimiin.
Voiko KYC:n peruuttaa?
Minulta kysytään joskus, voiko KYC-toiminnon suorittamisen jälkeen palata takaisin, ja kuten edellisistä kappaleista voitte kuvitella, vastaus on monivivahteinen. Yksinkertaisin tapa välttää KYC:hen liittyvät riskit on olla käyttämättä sitä bitcoinien hankinnassa. Tarkastelemme tätä aihetta perusteellisemmin seuraavassa luvussa. Jos KYC on kuitenkin jo suoritettu ja bitcoineja on ostettu, onko olemassa keinoja vähentää siihen liittyviä riskejä?
Kun on kyse transaktioiden jäljittämisriskistä, coinjoinin käyttö on ratkaisu. Tarkastelemme tätä menetelmää yksityiskohtaisesti myöhemmin kurssilla, mutta sinun on hyvä tietää, että coinjoinin avulla voit katkaista kolikon historian ja estää sen jäljittämisen menneisyydestä nykyhetkeen ja nykyisyydestä menneisyyteen. Jopa säännellyn alustan kautta hankittujen BTC:iden osalta tämä tekniikka voi estää niiden jäljitettävyyden.
Coinjoin ei kuitenkaan poista KYC:hen liittyvää toista riskiä: sitä, että valtio voi saada tiedon siitä, että sinulla on bitcoineja. Vaikka kolikkosi eivät olisikaan enää jäljitettävissä, valtio voi lainkäyttöalueesta riippuen päästä käsiksi kryptovarojen siirtoilmoituksiisi. Koska tämä riski ei ole tekninen vaan hallinnollinen, sen poistamiseksi ei ole olemassa Bitcoin-kohtaisia ratkaisuja, lukuun ottamatta sitä, että et alun alkaenkaan altistu KYC:lle. Ainoa laillinen tapa vähentää tätä riskiä on myydä säännellyillä alustoilla säänneltyjen alustojen kautta hankitut bitcoinit säänneltyjen alustojen kautta ja ostaa ne sitten takaisin KYC-vapaalla tavalla. Kun myyt ja ilmoitat siirrosta, viranomaisten pitäisi nähdä, ettet enää omista niitä.
Henkilötietojen ja henkilöllisyysasiakirjojen vuotamisen riski on Bitcoinin ulkopuolinen vaara, eikä sen välttämiseksi ole olemassa teknistä ratkaisua. Kun tietosi on kerran paljastettu, operaatiota on vaikea perua. Voit yrittää sulkea tilisi alustalla, mutta tämä ei takaa KYC-tietojesi poistamista, varsinkaan kun henkilöllisyyden todentaminen on ulkoistettu. Tietojesi täydellisen poistamisen todentaminen on mahdotonta. Siksi ei ole olemassa ratkaisua, jolla tämä riski voitaisiin estää kokonaan ja varmistaa, ettei sitä enää ole.
KYC:n ja avaintunnistuksen ero
Joskus jotkut bitcoin-asiakkaat pyrkivät laajentamaan termin "KYC" koskemaan kaikkia BTC-vaihtoja, joihin liittyy tilisiirto tai luottokorttimaksu, koska nämä keinot voivat myös paljastaa maksun alkuperän, aivan kuten KYC. KYC:tä ei kuitenkaan pidä sekoittaa avaintunnistukseen. Henkilökohtaisesti minun on myönnettävä, että käsitykseni tästä aiheesta on kehittynyt ajan myötä.
KYC tarkoittaa erityisesti sääntelymenettelyä, jonka tietyt yritykset toteuttavat asiakkaidensa henkilöllisyyden tarkistamiseksi ja rekisteröimiseksi. Se on binäärinen asia: kun hankit bitcoineja, joko teet KYC:n tai et. Avaintunnistus, joka koskee käyttäjän henkilöllisyyden jonkin puolen ja ketjussa tapahtuvan toiminnan välistä yhteyttä, ei kuitenkaan ole yhtä binäärinen, vaan se edustaa pikemminkin jatkumoa. Bitcoinien hankinnan tai siirron yhteydessä tällainen tunnistaminen on aina mahdollista vaihtelevassa määrin.
Jos esimerkiksi ostat bitcoineja säännellyltä alustalta Sveitsissä, KYC-tietoa ei vaadita. Avaimesi voidaan kuitenkin tunnistaa, koska osto tehtiin pankkitilisi kautta. KYC:hen liittyvät kaksi ensimmäistä riskiä - ketjussa tapahtuvan jäljittämisen helpottaminen ja altistuminen valtion valvonnalle - voivat ilmetä myös vaihdossa ilman KYC:tä. Jos sveitsiläinen yksikkö ilmoittaa epäilyttävistä liiketoimista kotimaasi viranomaisille, nämä voivat yksinkertaisesti tarkistaa ostoon käytetyn pankkitilin ja selvittää henkilöllisyytesi. Ostaminen ilman KYC:tä säännellyillä alustoilla on siis melko korkealla riskiasteikolla avaintunnistuksen kannalta.
Säänneltyjen alustojen välttäminen ja P2P-hankintamenetelmien valitseminen ei kuitenkaan poista täysin avaimen tunnistamisen riskiä, vaan ainoastaan vähentää sitä. Otetaan esimerkki Bisqin tai muun P2P-alustan kautta tapahtuvasta ostosta. Maksaaksesi vastapuolellesi käytät todennäköisesti pankkitiliäsi. Jos viranomaiset kuulustelevat henkilöä, jonka kanssa olet käynyt kauppaa, ja kysyvät nimeäsi, palataan riskeihin 1 ja 2. Vaikka nämä riskit ovat paljon pienempiä kuin ostaessasi alustalta, jossa ei ole KYC:tä, ja jopa pienempiä kuin ostaessasi KYC:n kanssa, ne ovat silti läsnä vähäisemmässä määrin.
Vaikka hankkisitkin bitcoinit fyysisen vaihdon kautta käteiseen, et ole täysin anonyymi. Henkilö, jonka kanssa vaihdoit, on nähnyt kasvosi, jotka ovat osa henkilöllisyyttäsi. Vaikka tässä esimerkissä tunnistamisen mahdollisuus on minimaalinen, se on silti mahdollista.
Kun bitcoineja vaihdetaan muihin omaisuuseriin, olipa kyseessä sitten osto valtionvaluutalla tai myynti todellista tavaraa vastaan, on aina olemassa jonkinlainen avaintunnistus. Tunnistamisen intensiteetti voi vaihdossa valitusta menetelmästä riippuen vaihdon intensiteetti voi vaihdella. On tärkeää, ettei tätä tunnistamista sekoiteta KYC-tunnistukseen, joka on hyvin määritelty sääntelyprosessi. KYC:n ja tunnistamisen välillä on kuitenkin yhteys, sillä KYC on spektrin yläpäässä, koska se helpottaa järjestelmällisesti viranomaisten suorittamaa käyttäjän avainten tunnistamista.
Myynti- ja hankintamenetelmät
Edellisen luvun lukemisen jälkeen saatat miettiä, miten voit ostaa tai myydä bitcoineja ilman henkilöllisyyden todentamismenettelyä, jotta vältät KYC:hen liittyvät riskit. Bitcoin-kaupankäyntiin on useita tapoja.
P2P-käteispörssit
Kuten olemme nähneet, luottamuksellisuuden kannalta paras menetelmä on edelleen P2P (henkilöltä henkilölle) -vaihto käteismaksulla. Tämän menetelmän avulla voit minimoida jäljelle jäävät jäljet ja vähentää huomattavasti avaimen tunnistamisen mahdollisuutta, olitpa sitten ostamassa tai myymässä.
Henkilökohtaiseen turvallisuuteen liittyy kuitenkin riskejä. Suurin vaara piilee siinä, että vaihdon aikana vastapuoli tietää, että sinulla on hallussasi suuri summa rahaa joko käteisenä tai bitcoineina. Tämä tieto voi herättää pahantahtoisten henkilöiden huomion. Onkin yleensä suositeltavaa olla hienotunteinen bitcoin-omistuksistaan. Tätä neuvoa voisi soveltaa myös käteiseen. Henkilökohtaisesti vaihdettaessa on kuitenkin väistämätöntä paljastaa, että omistaa bitcoineja, ja tämä voi herättää ei-toivottua huomiota.
Tämän riskin rajoittamiseksi suosittelen käteistapahtumia luotettavien henkilöiden, kuten perheenjäsenten tai läheisten ystävien kanssa. Vaihtoehtoisesti voisit myös harkita kaupankäyntiä paikallisissa Bitcoin-tapaamisissa, kun olet osallistunut muutaman kerran. Näin voit tutustua muihin osallistujiin paremmin etkä ole yksin fyysisen vaihdon aikana. On kuitenkin tärkeää tiedostaa, että P2P-käteisvaihtoihin liittyy luonnostaan henkilökohtaiseen turvallisuuteesi kohdistuvia riskejä, joita ei ole, kun ostat säännellyn alustan ja pankkitilisi kautta.
Lisäksi asuinpaikasta riippuen suurten rahamäärien kuljettaminen ja säilyttäminen voi olla riskialtista, olipa kyseessä sitten bitcoin tai käteinen.
Käteisen vaihtaminen voi myös aiheuttaa oikeudellisia riskejä, jos poliisi tai muut tahot tekevät tarkastuksia. Vaikka useimmissa maissa ei ole rajoituksia käteisen rahan määrälle, jota voit pitää mukanasi, liian suuret määrät voivat herättää epäilyksiä. Ole siis varovainen, varsinkin jos joudut matkustamaan pitkiä matkoja, ja vältä liian montaa isoa maksutapahtumaa kerralla, jotta sinun ei tarvitse perustella suurten summien hallussapitoa.
Toinen P2P-ostojen haittapuoli on se, että hinta on usein korkeampi kuin säännellyillä alustoilla. Myyjät veloittavat usein lisähintaa, joka vaihtelee 1 prosentista joskus yli 10 prosenttiin. Tähän hintaeroon on useita syitä. Ensinnäkin tämä on P2P-myyjien yleinen käytäntö, joka on vakiintunut ajan myötä. Toiseksi myyjillä on maksut, jotka liittyvät transaktioon varojen lähettämisestä ostajalle. P2P-myyntiin liittyy myös suurempi varkausriski kuin kauppapaikkatapahtumiin, mikä oikeuttaa korvauksen ottamasta riskistä. Lisäksi lisäkustannukset voivat liittyä vaihdon kysyntään ja laatuun luottamuksellisuuden osalta. Ostajana luottamuksellisuuden lisääntymisellä on hintansa, joka näkyy myyjän soveltamassa lisähinnassa. Jotkut bitcoin-asiakkaat uskovat myös, että P2P-palvelusta ostetun BTC:n mark-up-hinta heijastaa sen todellista hintaa, ja väittävät, että säänneltyjen alustojen alhaisemmat hinnat ovat seurausta siitä, että henkilötietojen luottamuksellisuudesta on tingitty.
P2P-vaihdot matchmaking-alustan kautta
Henkilökohtaisen turvallisuuden kannalta riskittömämpi vaihtoehto on suorittaa P2P-vaihdot yksinomaan verkossa sähköisten maksutapojen, kuten PayPalin, pankkisiirtojen tai Revolutin, kautta.
Tällä lähestymistavalla vältetään monet käteistapahtumiin liittyvät riskit. Vastapuolen maksukyvyttömyysriski on kuitenkin suurempi verkkokaupassa. Fyysisessä vaihdossa voit nimittäin välittömästi vaatia häntä tilille, jos annat rahaa myyjälle, joka ei lähetä sinulle vastineeksi bitcoineja, koska hän seisoo edessänne. Verkossa sen sijaan on usein mahdotonta jäljittää henkilöä, joka on varastanut sinulta.
Tämän riskin vähentämiseksi on mahdollista käyttää P2P-pörsseihin erikoistuneita alustoja. Näillä alustoilla käytetään konfliktinratkaisumekanismeja loukkaantuneiden käyttäjien suojelemiseksi. Tyypillisesti ne tarjoavat escrow-järjestelmän, jossa bitcoineja säilytetään, kunnes myyjä on vahvistanut maksun fiat-valuutassa.
Henkilökohtaisen turvallisuuden kannalta tämä ostotapa on huomattavasti turvallisempi kuin fyysinen käteisrahan vaihto. Kuten edellä mainittiin, P2P-verkkopörssit jättävät kuitenkin enemmän jälkiä kuin fyysinen vaihto, mikä voi olla haitaksi Bitcoinin yksityisyydelle. Käyttämällä verkossa fiat-maksutapaa, kuten pankkia, paljastat enemmän tietoja, jotka voivat helpottaa avaintunnistusta.
Jälleen kerran, en suosittele liian monien suurten kauppojen tekemistä yhdellä kertaa näillä alustoilla. Jakamalla transaktiot hajautat vastapuolen varkauden riskin.
Toinen P2P-ostojen haittapuoli on se, että hinta on usein korkeampi kuin säännellyillä alustoilla. Myyjät veloittavat usein lisähintaa, joka vaihtelee 1 prosentista joskus yli 10 prosenttiin. Tähän hintaeroon on useita syitä. Ensinnäkin tämä on P2P-myyjien yleinen käytäntö, joka on vakiintunut ajan myötä. Toiseksi myyjillä on maksut, jotka liittyvät transaktioon varojen lähettämisestä ostajalle. P2P-myyntiin liittyy myös suurempi varkausriski kuin kauppapaikkatapahtumiin, mikä oikeuttaa korvauksen ottamasta riskistä. Lisäksi lisäkustannukset voivat liittyä vaihdon kysyntään ja laatuun luottamuksellisuuden osalta. Ostajana luottamuksellisuuden lisääntymisellä on hintansa, joka näkyy myyjän soveltamassa lisähinnassa. Jotkut bitcoin-asiakkaat uskovat myös, että P2P-palvelusta ostetun BTC:n mark-up-hinta heijastaa sen todellista hintaa, ja väittävät, että säänneltyjen alustojen alhaisemmat hinnat ovat seurausta siitä, että henkilötietojen luottamuksellisuudesta on tingitty.
Mitä tulee ratkaisuihin, olen itse aina käyttänyt Bisq ja olen siihen erittäin tyytyväinen. Heidän järjestelmänsä on kokeiltu ja testattu ja vaikuttaa luotettavalta. Bisq on kuitenkin saatavilla vain PC:lle, ja sen käyttöliittymä voi olla liian monimutkainen aloittelijoille. Toinen haittapuoli on se, että Bisq toimii vain onchain-tapahtumilla, mikä voi tulla kalliiksi korkeiden Bitcoin-tapahtumamaksujen aikana.
-> Katso Bisq-opas.
https://planb.network/tutorials/exchange/peer-to-peer/bisq-fe244bfa-dcc4-4522-8ec7-92223373ed04
Yksinkertaisempi vaihtoehto on Peach, mobiilisovellus, joka yhdistää ostajat ja myyjät ja jossa on sisäänrakennettu konfliktinratkaisujärjestelmä. Prosessi on intuitiivisempi kuin Bisqin.
-> Katso Peach-opas.
https://planb.network/tutorials/exchange/peer-to-peer/peach-c6143241-d900-4047-9b73-1caba5e1f874
Toinen online-vaihtoehto on HodlHodl, vakiintunut alusta, joka tarjoaa hyvää likviditeettiä, vaikka en olekaan henkilökohtaisesti testannut sitä.
-> Katso HodlHodl-opas.
https://planb.network/tutorials/exchange/peer-to-peer/hodlhodl-d7344cd5-6b18-40f5-8e78-2574a93a3879
Lightning Network -pohjaisia ratkaisuja löydät RoboSats ja LNP2PBot. RoboSatsiin pääsee verkkosivuston kautta, ja se on suhteellisen helppokäyttöinen. LNP2PBot on epätyypillisempi, sillä se toimii Telegram-viestisovelluksen vaihtojärjestelmän kautta.
-> Katso RoboSats-opas.
-> Katso LNP2PBot-opas.
https://planb.network/tutorials/exchange/peer-to-peer/robosats-b60e4f7c-533a-4295-9f6d-5368152e8c06
Säännellyt alustat ilman KYC:tä
Riippuen siitä, missä maassa asut, voit käyttää säänneltyjä alustoja, jotka eivät vaadi KYC-menettelyjä bitcoinien ostamiseen tai myymiseen. Esimerkiksi Sveitsissä voit käyttää sellaisia alustoja kuin Relai ja MtPelerin.
-> Tutustu Relai-oppaaseemme.
https://planb.network/tutorials/exchange/centralized/relai-v2-30a9671d-e407-459d-9203-4c3eae15b30e
Kuten edellisessä luvussa todettiin, tämäntyyppiset alustat säästävät sinut KYC-menettelyihin liittyviltä riskeiltä, mutta ne aiheuttavat suuremman riskin avaintunnistuksen osalta. Bitcoinin luottamuksellisuuden kannalta nämä alustat tarjoavat siis paremman suojan kuin KYC:n sisältävät ostomenetelmät, mutta ne ovat edelleen vähemmän houkuttelevia kuin P2P-pörssit.
Henkilökohtaisen turvallisuuden kannalta näiden alustojen käyttäminen on kuitenkin paljon vähemmän riskialtista kuin P2P-pörssien. Ne ovat usein myös yksinkertaisempia käyttää kuin P2P-alustat.
Pankkiautomaatit
Toinen vaihtoehto bitcoinien ostamiseen tai myymiseen ilman KYC:tä ovat kryptovaluutta-automaatit. Itse en ole koskaan päässyt testaamaan tätä ratkaisua, koska kotimaassani ei ole yhtään. Mutta tämä menetelmä voi olla hyvin mielenkiintoinen riippuen siitä, missä asut.
Pankkiautomaattien ongelmana on, että ne ovat joko kiellettyjä joissakin maissa tai tiukasti säänneltyjä toisissa maissa. Jos pankkiautomaatti edellyttää henkilöllisyyden todentamismenettelyä, se altistuu samoille riskeille kuin KYC-säännellyt alustat. Toisaalta jos pankkiautomaatti sallii liiketoimet ilman henkilöllisyyden todentamista pienten summien osalta, sen käyttö voi tarjota P2P-käteisrahanvaihtoon verrattavissa olevan luottamuksellisuuden tason ja samalla välttää suurimman osan tämäntyyppiseen rahanvaihtoon liittyvistä riskeistä.
Pankkiautomaattien suurin haittapuoli on niiden usein korkeat valuutanvaihtomaksut, jotka vaihtelevat muutamasta prosentista jopa 15 prosenttiin vaihdetusta summasta.
Lahjakortit
Lopuksi halusin myös esitellä sinulle ratkaisun, joka toimii hyvin niille, jotka haluavat käyttää bitcoinejaan päivittäin ostoksiin sen sijaan, että myisivät niitä fiat-valuuttoja vastaan.
Paras tapa käyttää BTC:tä on tietenkin käyttää Bitcoinia tai Lightning Networkia suoraan tavaran tai palvelun ostamiseen. Monissa maissa Bitcoinin hyväksyvien kauppiaiden määrä on kuitenkin vielä rajallinen. Käytännöllinen vaihtoehto on käyttää lahjakortteja.
Useat alustat, jotka eivät vaadi KYC-menettelyjä, tarjoavat mahdollisuuden vaihtaa bitcoineja lahjakortteihin, joita voi käyttää suurimmissa vähittäiskauppiaissa. Näitä ovat CoinsBee, The Bitcoin Company ja Bitrefill. Nämä alustat helpottavat huomattavasti bitcoinien päivittäistä käyttöä ja antavat sinulle mahdollisuuden käyttää monenlaisia tuotteita ja palveluita ilman, että sinun tarvitsee vaihtaa niitä fiat-valuutaksi.
https://planb.network/tutorials/exchange/centralized/bitrefill-8c588412-1bfc-465b-9bca-e647a647fbc1
Muut hankintamenetelmät
Muita tapoja hankkia bitcoineja yksityisyyttäsi suojaten ovat tietenkin louhinta. Aloittaaksesi satsin louhinnan sinun ei tarvitse paljastaa henkilöllisyyttäsi, vaan sinun tarvitsee vain löytää kelvollinen todiste ja lähettää se verkkoon. Jos valitset poolilaskennan, jotkin poolit vaativat jonkinlaista tunnistamista, kuten KYC-todistuksen, toiset taas eivät.
Toinen tapa on työskennellä bitcoineja vastaan. Tämä hankintamenetelmä voi olla mielenkiintoinen, mutta vaadittava tunnistautumisaste vaihtelee huomattavasti olosuhteista riippuen.
*Kirjoittaakseni tämän luvun käytin @pivi___ Plan ₿ Network -verkkopalvelussa antamaa BTC205-koulutusta (tällä hetkellä saatavilla vain ranskaksi)
Konsolidointi, UTXO:n johto ja CIOH
Yksi monimutkaisimmista omaisuudenhoitosalkun hoitamiseen liittyvistä näkökohdista on konsolidointi. Pitäisikö sinun konsolidoida? Mitä järkeä siinä on? Minkä kokoista UTXO:ta pitäisi kunnioittaa? Millaisia kompromisseja luottamuksellisuuden suhteen tehdään? Tätä tarkastelemme tässä jaksossa.
Mitä on konsolidointi?
Bitcoin toimii huutokauppamarkkinoiden tavoin, ja louhijat suosivat alhaisimpia maksuja tarjoavia transaktioita. Jokaisella lohkolla on kuitenkin enimmäispaino, joka rajoittaa mukaan otettavien transaktioiden määrää. Koska lohko tuotetaan keskimäärin 10 minuutin välein, kussakin lohkossa käytettävissä oleva tila on niukka resurssi.
Kaivostoiminnan harjoittajat, joiden toiminnasta aiheutuu huomattavia kustannuksia sähkön, käyttöomaisuuden ja kunnossapidon muodossa, pyrkivät luonnollisesti maksimoimaan kannattavuutensa. Siksi ne suosivat yleensä transaktioita, jotka tuottavat korkeimmat maksut suhteessa niiden painoarvoon.
Kaikilla Bitcoin-tapahtumilla ei ole samaa painoarvoa. Ne, joissa on enemmän panoksia ja tuotoksia, painavat enemmän. Kuvitellaan esimerkiksi 2 transaktiota:
- Tapahtuma A sisältää 1 tulon ja 1 lähdön. Se jakaa 1 994 satsia maksuja, ja sen paino on 141 vB ;
- Transaktio B, joka on monimutkaisempi transaktio, jossa on 2 tuloa ja 2 lähtöä, jakaa 2 640 satelliittia maksuja, joiden paino on 220 vB.
Tässä esimerkissä, vaikka transaktio B tarjoaa korkeamman kokonaispalkkion, louhijat suosivat transaktiota A, koska se tarjoaa paremman palkkion ja painon välisen suhteen. Seuraavassa on laskelma jokaisesta transaktiosta sateina virtuaalista tavua kohti (sat/vB):
TXA : 1994 / 141 = 14 sats/vB
TXB : 2640 / 220 = 12 sats / vB
Tämä tarkoittaa sitä, että kutakin painoyksikköä kohden liiketoimi A tarjoaa enemmän kustannuksia kuin liiketoimi B, vaikka liiketoimi B tarjoaa absoluuttisesti enemmän kustannuksia.
Käyttäjän kannalta on siis aina kiinnostavampaa käyttää mahdollisimman vähän syötettä liiketoimissaan. On kuitenkin kulutettava riittävästi, jotta tuotosmaksu voidaan tyydyttää. Kun hallinnoit salkkuasi, sinulla on oltava riittävän suuret UTXO:t.
Konsolidoinnin periaatteena on nimenomaan hyödyntää ajanjaksoja, jolloin Bitcoinin maksut ovat alhaiset, ja yhdistää sen pienemmät UTXO:t yhdeksi suuremmaksi. Tällä tavoin, kun Bitcoinin maksut nousevat, voit tehdä transaktioita mahdollisimman pienillä panoksilla ja käyttää siten absoluuttisesti vähemmän maksuja. Tavoitteena on siis ennakoida pakollisia transaktioita, jotka on suoritettava korkeiden maksujen aikana.
Transaktiokustannusten säästämisen lisäksi UTXO:iden konsolidointi auttaa estämään "pölyn" muodostumisen. Pölyllä" tarkoitetaan UTXO:ita, joiden arvo sateina on niin alhainen, ettei se riitä kattamaan niiden käyttämiseen tarvittavia transaktiokustannuksia. Tämä tekee näiden UTXO:iden käytöstä taloudellisesti järjenvastaista niin kauan kuin transaktiokustannukset pysyvät korkeina. Yhdistämällä UTXO-varojasi ennakoivasti estät niiden muuttumisen pölyksi ja varmistat, että kaikki varasi pysyvät käyttökelpoisina.
Mikä on UTXO:n vähimmäiskoko?
Minulta kysytään joskus, mikä on UTXO:n suositeltu vähimmäisarvo. Yleispätevää vastausta ei valitettavasti ole, sillä se riippuu mieltymyksistäsi ja maksumarkkinoiden olosuhteista. Tässä on kuitenkin kaava, joka voi auttaa sinua määrittämään tarpeisiisi sopivan raja-arvon:
\frac {P \times F}T = M Missä:
- p$ on liiketoimen paino;
Fedustaa maksimilatausnopeutta satosheina per vbyte (sats/vB), jota vastaan suojaudut;- t$ on transaktiomaksun prosenttiosuus, jonka olet valmis maksamaan suhteessa UTXO:n kokonaisarvoon;
- m$ on kunkin UTXO:n vähimmäismäärä satosheina.
Oletetaan, että aiot kattaa maksut tavallisesta SegWit-transaktiosta, jossa on 1 tulo ja 2 lähtöä ja joka painaa 141 vB. Jos suojaudut 800 sats/vB:hen asti ja olet valmis käyttämään enintään 12 % UTXO-arvosta maksuihin, laskelma on seuraava:
\frac{141 \times 800}{0.12} = 940\ 000 Tässä esimerkissä olisi siis viisasta pitää salkussaan UTXO:n vähimmäisarvo 940 000 satsia.
Konsolidointi ja CIOH
Yksi laajimmin käytetyistä heuristiikoista lohkoketjuanalyysissä on CIOH (Common Input Ownership Heuristic), jossa oletetaan, että kaikki Bitcoin-tapahtuman syötteet kuuluvat samalle taholle. Itse konsolidoinnin periaatteena on kuluttaa useita UTXO:ita syötteinä ja luoda yksi UTXO tuotoksena. Konsolidointi mahdollistaa siis ICOH:n soveltamisen.
Käytännössä tämä tarkoittaa sitä, että ulkopuolinen tarkkailija voi päätellä, että kaikki konsolidoidut UTXO:t kuuluvat todennäköisesti samalle henkilölle ja että myös tuotettu yksilöllinen tuotos kuuluu hänelle. Tämä tilanne voi vaarantaa luottamuksellisuutesi yhdistämällä eri tapahtumahistoriat. Oletetaan esimerkiksi, että konsolidoin 3 P2P:n kautta hankittua UTXO:ta ja yhden UTXO:n, joka on hankittu KYC:tä edellyttävän alustan kautta :
Tällä tavoin mikä tahansa taho, jolla on pääsy vaihtopalvelun tietoihin, mahdollisesti myös valtion virastot, voi tunnistaa, että omistan muita määriä BTC:tä. Aiemmin nämä UTXO:t eivät olleet suoraan yhteydessä henkilöllisyyteeni, nyt ne ovat. Lisäksi se paljastaa kaikille lähteille, että minulla on hallussani tietty määrä bitcoineja.
UTXO:iden hallinnoinnissa taloudelliset näkökohdat, jotka ajavat yhdistämistä kustannusten vähentämiseksi, ovat ristiriidassa hyvän tietosuojakäytännön kanssa, jonka mukaan UTXO:iden yhdistämistä ei pitäisi koskaan tehdä. Valinta taloudellisuuden ja luottamuksellisuuden välillä riippuu siis kunkin käyttäjän prioriteeteista.
Jos voit välttää konsolidoinnin ja säilyttää samalla huomattavan UTXO:n, se on ihanteellista. Tätä varten optimoi hankintamenetelmääsi. Jos ostat bitcoineja DCA:sta, yritä sijoittaa kertaluonteiset ostot mahdollisimman ajallisesti, jotta arvo keskittyy pienempään määrään UTXO:ita. On helpompi hallita 1000 euron kertaluonteinen osto kahden kuukauden välein kuin 120 euron osto joka viikko. Tämä minimoi syntyvien UTXO:iden määrän ja yksinkertaistaa salkkusi hallintaa säilyttäen samalla luottamuksellisuutesi.
Jos joudut yhdistelemään bitcoinejasi, suosi ensin samasta lähteestä peräisin olevien UTXO:iden yhdistelemistä. Esimerkiksi 10 UTXO:n yhdistäminen yhdeltä alustalta vaikuttaa luottamuksellisuuteesi vähemmän kuin 5 UTXO:n yhdistäminen alustalta A ja 5 UTXO:n yhdistäminen alustalta B. Jos eri lähteiden yhdistäminen on väistämätöntä, pyri erottelemaan ne niiden ominaisuuksien mukaan. Ryhmittele esimerkiksi KYC:n kautta hankitut UTXO:t yhteen transaktioon ja P2P:n kautta hankitut UTXO:t toiseen transaktioon.
Älä kuitenkaan unohda, että konsolidointi merkitsee väistämättä luottamuksellisuuden menettämistä. Arvioi siis huolellisesti tämän toimenpiteen tarve ja mahdolliset vaikutukset yksityisyyteesi ottaen huomioon CIOH.
Muut parhaat käytännöt
Katsotaanpa muutamia muita parhaita käytäntöjä, joilla voit optimoida yksityisyytesi Bitcoinissa.
Täydellinen solmu
Bitcoinien omistaminen omassa säilytyksessä on hienoa, mutta oman täydellisen solmun käyttäminen on vielä hienompaa! Tässä kerrotaan, miksi oman solmun omistaminen on ratkaisevan tärkeää Bitcoinin täysin suvereenin käytön kannalta:
- Sensuurin vastustaminen**: Kukaan ei voi estää transaktioitasi;
- Riippumattomuus kolmansista osapuolista**: Lohkoketjutietojen todentaminen ei ole enää riippuvainen mistään ulkoisesta palvelusta;
- Aktiivinen osallistuminen**: Voit määritellä omat validointisääntösi ja osallistua suoraan konsensukseen;
- Verkon osuus**: Käyttämällä solmua autat vahvistamaan ja jakamaan Bitcoin-verkkoa;
- Tekninen koulutus**: Se on hyvä tapa syventää teknistä tietämystäsi Bitcoinista.
Näiden etujen lisäksi täydellisen solmun käyttö parantaa myös luottamuksellisuutta, kun lähetät tapahtumia. Kun lähetät transaktion, se luodaan ja allekirjoitetaan ensin lompakkosi kautta. Jotta se voidaan lähettää Bitcoin-verkossa, sen on oltava vähintään yhden solmun tiedossa. Käyttämällä omaa solmua sinulla on suora kontrolli tähän jakeluun, mikä vahvistaa luottamuksellisuuttasi ja rajoittaa tietovuodon riskiä.
Jos sinulla ei ole omaa Bitcoin-solmua, sinun on pakko käyttää kolmannen osapuolen solmua, esimerkiksi lompakko-ohjelmiston tarjoajan tarjoamaa solmua. Tapahtumien lähettämisen lisäksi lompakkosi tarvitsee pääsyn erilaisiin tietoihin, kuten vireillä oleviin tapahtumiin, osoitteisiisi liittyviin saldoihin ja tapahtumien vahvistusten määrään. Kaikkiin näihin tietoihin pääsemiseksi sinun on tehtävä kysely solmulle.
Suurin riski, kun et käytä omaa Bitcoin-solmua, on se, että kolmannen osapuolen solmun ylläpitäjä voi tarkkailla toimintojasi lohkoketjussa tai jopa jakaa nämä tiedot muiden tahojen kanssa. Tämän riskin rajoittamiseksi välivaiheen ratkaisu on käyttää lompakko-ohjelmistoa, joka peittää yhteytesi Torin kautta. Tämä voi vähentää tietojesi paljastumista. Optimaalinen ratkaisu on kuitenkin oma Bitcoin-solmu ja sen käyttäminen transaktioiden lähettämiseen. Tietenkin sinun on myös oltava varovainen, ettet vuoda mitään tietoja solmusi kautta, mutta tämä on toinen aihe, jota tarkastelemme myöhemmissä osioissa.
Oman täydellisen solmun omistaminen takaa sinulle yksityisyytesi ilmeisen edun lisäksi myös lohkoketjun tietojen todenperäisyyden, suojaa sinua sensuurilta ja antaa sinulle mahdollisuuden osallistua aktiivisesti Bitcoinin hallintoon. Käyttämällä omaa solmua annat oman taloudellisen painosi valitsemallesi ketjulle, mikä on tärkeää yhteisön sisäisten konfliktien aikana, kuten esimerkiksi vuosina 2015-2017 käydyn lohkosodan aikana. Haarautumistapauksessa kolmannen osapuolen solmun käyttäminen voi johtaa siihen, että tuet ketjua, jota et halua suosia, sillä solmun ylläpitäjä tekee valinnan puolestasi.
Kuten huomaat, luottamuksellisuuden ja yksilöllisen itsemääräämisoikeuden vuoksi on tärkeää käyttää omaa täydellistä solmua!
Petolliset analyysiheuristiikat
Yleisemmin ottaen on tärkeää ymmärtää edellisessä jaksossa käsiteltyjä heuristiikkoja, jotta niitä voi paremmin välttää tai huijata. Useiden parhaiden käytäntöjen omaksumisesta voi olla hyötyä, vaikka ne eivät olisikaan välttämättömiä. Ne tarjoavat ylimääräisen suojakerroksen, joka voi olla tärkeää luottamuksellisuuden säilyttämisessä Bitcoinia käytettäessä.
Ensimmäinen neuvo, jonka voisin antaa, on sulautua tiheimpään väkijoukkoon. Bitcoinissa tämä tarkoittaa laajimmin hyväksyttyjen skriptipohjien käyttöä. Esimerkiksi P2WSH-skriptit, joita käytetään usein SegWit V0 multisig -konfiguraatioissa, ovat hyvin harvinaisia. Niiden avulla et voi piiloutua suureen anonymiteettijoukkoon. Sama pätee vanhempiin malleihin, kuten P2PKH tai P2SH. Vaikka niitä esiintyy laajalti UTXO-joukossa, niitä käytetään yhä harvemmin uusissa transaktioissa.
Yleisesti ottaen on viisaampaa valita uusin skriptausstandardi, jos se on otettu riittävästi käyttöön. Jos siis vuonna 2022 olisin neuvonut olemaan käyttämättä P2TR:ää (Taproot) sen vähäisen hyväksynnän vuoksi, vuonna 2024 suosittelisin sen sijaan tämäntyyppistä skriptiä tai, jos se ei onnistu, SegWit V0 -skriptiä, sillä P2TR:ää käyttävien transaktioiden määrä alkaa olla hyvin merkittävä.
Lähde : txstats.com
Toinen vinkki luottamuksellisuuden säilyttämiseksi on yrittää ohittaa sisäiset transaktio-heuristiikat. Kun esimerkiksi maksat maksun, voit yrittää välttää luomasta tulostetta, jossa on pyöreä summa, koska se voisi viestiä, että toinen tuloste edustaa valuuttaa. Jos sinun on lähetettävä 100 k satsia ystävällesi, harkitse hieman suuremman summan siirtämistä tämän heuristiikan välttämiseksi. Yritä myös olla luomatta valuuttatulosteita, jotka ovat suhteettoman suuria suhteessa suoritettuun maksuun, sillä tämä voi myös paljastaa, mikä tulosteista edustaa valuuttaa.
Jos suoritat säännöllisesti Bitcoin-tapahtumia, varmista, ettet lähetä niitä aina samaan aikaan. Jakamalla transaktioiden lähetyksen koko päivän ja viikon ajalle vältät sen, että ulkopuoliset tarkkailijat voivat havaita aikavyöhykkeisiin perustuvan ajallisen mallin, joka voisi vahvistaa heidän analyysiään.
Kaikkien näiden päivittäin noudatettavien hyvien käytäntöjen lisäksi on olemassa vielä tehokkaampia menetelmiä, joilla bitcoinien jäljitettävyys voidaan katkaista kokonaan. Näihin kuuluvat tietenkin coinjoin-transaktiot, joita tarkastelemme perusteellisesti seuraavassa osiossa.
Coinjoin-transaktioiden ymmärtäminen
Mikä on coinjoin-transaktio?
Kun olemme perehtyneet yksityisyyden suojan perusteisiin, tarkastelemme nyt kehittyneempiä tekniikoita, joilla pyritään aktiivisesti puolustamaan luottamuksellisuuttasi, erityisesti eriyttämällä bitcoin-historiasi. Seuraavassa osassa tarkastelemme lukuisia pieniä tekniikoita, mutta ensin haluan kertoa sinulle coinjoinista.
Coinjoinia pidetään usein tehokkaimpana menetelmänä Bitcoin-käyttäjien yksityisyyden suojaamiseksi. Mutta mitä coinjoin-transaktio tarkalleen ottaen on? Otetaanpa selvää.
Yhteenliittämisen perusperiaatteet
Coinjoin on tekniikka, jolla rikotaan bitcoinien seuranta lohkoketjussa. Se perustuu yhteistoiminnalliseen transaktioon, jolla on samanniminen erityinen rakenne: coinjoin-transaktio.
Kuten tämän kurssin ensimmäisissä osissa nähtiin, Bitcoin-tapahtumat ovat kaikkien käyttäjien tiedossa heidän solmunsa kautta. Siksi on helppo tarkistaa kunkin kolikon sähköinen allekirjoitusketju ja tarkkailla sen historiaa. Tämä tarkoittaa, että kaikki käyttäjät voivat yrittää analysoida muiden käyttäjien transaktioita. Tämän seurauksena anonymiteetti transaktiotasolla on mahdotonta. Anonymiteetti säilyy kuitenkin yksilöllisen tunnistamisen tasolla. Toisin kuin perinteisessä pankkijärjestelmässä, jossa jokainen tili on sidottu henkilökohtaiseen henkilöllisyyteen, Bitcoinissa varat liitetään kryptografisiin avainpareihin (tai skripteihin), mikä tarjoaa käyttäjille eräänlaisen pseudonymiteetin kryptografisten tunnisteiden takana.
Bitcoinin luottamuksellisuus vaarantuu, kun ulkopuoliset tarkkailijat voivat yhdistää tietyt UTXO:t tunnistettuihin käyttäjiin. Kun tämä yhteys on luotu, on mahdollista jäljittää heidän transaktioitaan ja analysoida heidän Bitcoin-historiaansa. Coinjoin on nimenomaan tekniikka, joka on kehitetty UTXO:iden jäljitettävyyden katkaisemiseksi, jotta Bitcoin-käyttäjille voidaan tarjota tietty luottamuksellisuus transaktiotasolla.
Coinjoins vahvistaa Bitcoin-käyttäjien luottamuksellisuutta tekemällä ketjujen analysoinnista monimutkaisempaa ulkopuolisille tarkkailijoille. Niiden rakenne mahdollistaa useiden eri käyttäjien kolikoiden yhdistämisen yhdeksi transaktioksi, mikä hämärtää rajoja ja vaikeuttaa tulo- ja lähtöosoitteiden välisten yhteyksien määrittämistä.
On tärkeää ymmärtää, että coinjoin-transaktion tavoitteena on rikkoa kolikon historia. Tämä tekniikka ei anna pysyvää anonymiteettiä tai estä lopullisesti bitcoinien jäljittämistä, toisin kuin ehkä luulet. Coinjoinin tarkoituksena on vain rikkoa historia siinä vaiheessa, kun coinjoin-transaktio suoritetaan. Ennen ja jälkeen tämän operaation kolikko on kuitenkin edelleen samojen luottamuksellisuuteen liittyvien riskien alainen.
Miten coinjoinit toimivat?
Coinjoinin periaate perustuu yhteistoiminnalliseen lähestymistapaan: useat käyttäjät, jotka haluavat sekoittaa bitcoinejaan, tallettavat identtiset summat samaan transaktioon. Nämä summat jaetaan sitten uudelleen kullekin käyttäjälle samanarvoisina tuotoksina.
Tapahtuman lopussa on mahdotonta yhdistää tiettyä tuotosta käyttäjään, jota kutsutaan syötteeksi. Sisäänmenojen ja ulostulojen välillä ei ole suoraa yhteyttä, mikä rikkoo käyttäjien ja niiden UTXO:iden välisen yhteyden sekä kunkin osan historian.
Otetaanpa Alicen esimerkki. Hän haluaa lähettää siskolleen Eevelle noin 100 000 satsia tämän syntymäpäiväksi. Alice ei kuitenkaan halua, että Eve pystyy jäljittämään hänen tapahtumahistoriansa, sillä hän ei halua paljastaa, kuinka monta bitcoinia hänellä on tai miten hän on ne saanut. Tätä varten Alice päättää rikkoa UTXO-historiansa coinjoin-transaktiolla. Hän järjestää Bobin, Charlesin, Davidin ja Frankin kanssa yhteistransaktion:
- Alice, Bob, Charles, David ja Frank sitoutuvat kukin 105 000 satsin UTXO:n (josta 5 000 satsia louhintamaksuja varten) panokseksi transaktioon:
- Vastineeksi näiden syötteiden kuluttamisesta kukin tuottaa tyhjän osoitteen, jolla luodaan viisi samanlaista 100 000 satsin ulostuloa kukin. Kukin hakee yhden ulostulon:
- Alice löytää itselleen 100 000 satelliitin UTXO:n, jonka historia on sekaisin. Hän käyttää tätä UTXO:ta uudessa transaktiossa lähettääkseen summan Eevalle tämän syntymäpäiväksi:
- Jos Eve yrittää analysoida tätä transaktiota poimiakseen tietoa, hän kohtaa coinjoin-transaktion, jossa ovat mukana Alice, Bob, Charles, David ja Frank. Koska Eve ei pysty erottamaan, mikä panos kuuluu kenellekin, koska summat ovat yhdenmukaiset, hän ei voi jäljittää Alicen UTXO-historiaa eikä määrittää, kuinka monta bitcoinia hänen sisarensa omistaa tai miten hän on ne hankkinut:
Tässä tapauksessa Alice on käyttänyt coinjoin-tekniikkaa lisätäkseen luottamuksellisuutta takautuvan analyysin osalta. Alice suojaa itseään Evan mahdolliselta analyysiltä, joka aloittaisi tietystä transaktiosta ja kulkisi UTXO:n historiaa taaksepäin. Tätä suojaa nykyhetkestä menneisyyteen ulottuvaa analyysia vastaan kutsutaan takautuvaksi anonsetiksi. Tarkastelemme tätä käsitettä tarkemmin tämän jakson viimeisissä luvuissa.
Coinjoin tarjoaa kuitenkin myös mahdollisuuden vahvistaa luottamuksellisuutta menneisyydestä nykyhetkeen tapahtuvan analyysin yhteydessä, jota kutsutaan prospektiiviseksi anonsetiksi. Palataanpa esimerkkiin, jossa Alice lähetti Eevalle 98 000 satsia tämän syntymäpäiväksi, mutta roolit ovat nyt päinvastaiset. Kuvitellaan nyt, että Eve on huolissaan yksityisyydestään. Liisa saattaisi nimittäin tuntea houkutusta jäljittää Eevalle lähettämäänsä kolikkoa saadakseen siitä tietoa. Eve voisi hyvinkin yhdistää tämän juuri saamansa UTXO-kolikon kaikkiin muihin UTXO-kolikoihinsa, mikä voisi paljastaa Alicelle, kuinka paljon bitcoineja hänellä on lompakossaan. Tämän välttämiseksi Eve voi myös rikkoa juuri vastaanottamansa kolikon historian:
- Eve, Grace, Mallory, Oscar ja Victor laittoivat kukin 98 000 satsin UTXO:n Bitcoin-tapahtuman syötteeksi:
- Vastineeksi näiden syötteiden käyttämisestä jokainen käyttäjä antaa tyhjän osoitteen, jota käytetään luomaan 5 ulostuloa, jotka koostuvat 97 500 täysin samansuuruisesta satelliitista. Kukin käyttäjä saa yhden tuotoksen:
- Eevalla on nyt 97 500 satelliitin UTXO, jonka historia on rikottu. Hän voi käyttää sitä pelkäämättä tuleviin liiketoimiin. Jos Alice yrittää jäljittää Eevelle lähettämiään bitcoineja, hän joutuu kohtaamaan coinjoin-transaktion. Hän ei pysty määrittämään, mikä lähtevä UTXO kuuluu Eevalle. Analysoinnista tulee mahdotonta:
Ensimmäisessä esimerkissä näimme, miten coinjoin voi suojata huoneen yksityisyyttä suhteessa sen menneisyyteen, ja toisessa esimerkissä, miten se voi myös turvata huoneen historian suhteessa sen tulevaisuuteen. Siksi mainitsin, että coinjoin olisi nähtävä kertaluonteisena tapahtumana, joka segmentoi osan historiaa molempiin suuntiin:
Sekoitin, coinjoin, sekoitin... Mitä eroa niillä on?
Coinjoineja kutsutaan joskus "sekoittajiksi", ja jotkut bitcoin-asiakkaat hylkäävät tämän termin, koska he pelkäävät, että se voidaan sekoittaa säilytyssekoittajiin. Uskon kuitenkin, että tämä pelko on perusteeton, sillä matemaattisessa kontekstissa coinjoin ilmentää juuri sekoittamisen käsitettä.
Yleisellä matematiikan alalla sekoittumisella tarkoitetaan dynaamisen järjestelmän ominaisuutta, jossa tietyn ajan kuluttua kaikki alkuavaruuden osat voivat teoriassa sekoittua mihin tahansa muuhun osaan. Sekoittuminen merkitsee sitä, että hiukkasen sijainti tai systeemin tila kehittyy siten, että sen tuleva jakauma on riippumaton sen alkujakaumasta, jolloin saavutetaan tila, jossa alkutilan ominaisuudet jakautuvat tasaisesti koko systeemin avaruuteen. Juuri näin tapahtuu kolikkoliitoksessa bitcoineilla. Mielestäni coinjoin on siis todella kolikoiden sekoitusmenetelmä.
Toisaalta on tärkeää erottaa coinjoin ja shufflers toisistaan. Shuffler on palvelu, johon käyttäjät lähettävät bitcoinejaan sekoitettavaksi. Nämä palvelut olivat suosittuja 2010-luvulla, mutta niiden käyttö on vähentynyt, koska niissä on kaksi suurta haittaa coinjoiniin verrattuna:
- Ne edellyttävät, että käyttäjät luopuvat varojensa säilytyksestä sekoitusprosessin aikana, mikä altistaa heidät varkausriskille;
- Ei ole mitään takeita siitä, ettei sekoittaja tallenna tapahtumatietoja tai jopa myy näitä tietoja ketjuanalyysiyrityksille.
Tämän päivän käyttäjät suosivat siksi kolikkoyhteyttä, koska sen ansiosta he voivat hallita varojaan täysin koko prosessin ajan. Coinjoinin osallistujilla ei ole riskiä siitä, että muut osapuolet varastaisivat heidän bitcoininsa. Katsotaan seuraavassa luvussa, miten tämä kaikki on mahdollista.
Zerolink ja chaumian coinjoins -yhteenliittymät
Kolikkoliitoksen tarjoama yksityisyys riippuu sen ryhmän koosta, johon kappaleemme on piilotettu. Tämä tarkoittaa mahdollisimman monen osallistujan löytämistä. On täysin mahdollista luoda coinjoin manuaalisesti itse löytämiemme käyttäjien kanssa, mutta tämä on monimutkainen prosessi, eikä sillä voiteta suuria anonsetteja.
Tämän vuoksi Bitcoiniin on kehitetty coinjoin-koordinaattoreita. Heidän tehtävänään on saattaa eri käyttäjät yhteyteen toisiinsa ja välittää tiedot, joita tarvitaan yhteistapahtuman loppuunsaattamiseksi.
Mutta miten voimme varmistaa, että koordinaattori ei koskaan pääse käsiksi käyttäjien bitcoineihin, ja huolimatta siitä, että hän on henkilö, joka rakentaa coinjoin-transaktion, miten voimme varmistaa, että hän ei voi yhdistää käyttäjien syötteitä ja tuotoksia, mikä voisi olla luottamuksellisuusvuoto?
Chaumin sokeat allekirjoitukset
Nykyaikaiset coinjoin-toteutukset käyttävät David Chaumin sokeaa allekirjoitusta tietojen vuotamisen välttämiseksi. Katsotaanpa lyhyesti, miten nämä sokeat allekirjoitukset toimivat.
Chaumin sokeat allekirjoitukset ovat digitaalisen allekirjoituksen muoto, jossa allekirjoituksen antaja ei tiedä allekirjoittamansa viestin sisältöä. Allekirjoitus voidaan kuitenkin todentaa alkuperäistä viestiä vastaan. Tämän tekniikan kehitti salakirjoittaja David Chaum vuonna 1983.
Otetaan esimerkiksi yritys, joka haluaa todentaa luottamuksellisen asiakirjan, kuten sopimuksen, paljastamatta sen sisältöä. Yritys soveltaa peittämisprosessia, joka muuttaa alkuperäisen asiakirjan kryptografisesti palautuvalla tavalla. Tämä muunnettu asiakirja lähetetään varmentajalle, joka kiinnittää siihen sokean allekirjoituksen tietämättä asiakirjan sisältöä. Kun yritys on saanut allekirjoitetun asiakirjan, se poistaa allekirjoituksen. Tuloksena on alkuperäinen asiakirja, joka on varmennettu viranomaisen allekirjoituksella ilman, että viranomainen on koskaan nähnyt alkuperäistä sisältöä.
Chaumin sokeilla allekirjoituksilla voidaan siis varmentaa asiakirjan aitous tuntematta sen sisältöä, mikä takaa sekä käyttäjän tietojen luottamuksellisuuden että allekirjoitetun asiakirjan eheyden.
Chaumian coinjoins
Niin sanotuissa "Chaumian" coinjoineissa yhdistetään Torin käyttö ja David Chaumin sokeat allekirjoitukset sen varmistamiseksi, että koordinaattori ei voi tietää, mikä tuotos kuuluu millekin käyttäjälle.
Coinjoin-transaktioiden rakentamisprosessiin kuuluu kolme päävaihetta: syötteen rekisteröinti, tuotoksen rekisteröinti ja transaktion allekirjoittaminen. Tarkastellaan tätä prosessia esimerkkinä Alice, yksi coinjoinin osallistujista. Kaikki muut osallistujat noudattavat samoja vaiheita kuin Alice, kukin omana itsenään.
**Vaihe 1: Syötteen rekisteröinti
- Alice lähettää koordinaattorille UTXO-osoitteen, jota hän haluaa käyttää transaktion syöttöosoitteena, sekä naamioidun vastaanotto-osoitteen, jota hän haluaa käyttää lähtöosoitteena bitcoiniensa vastaanottamiseen. Koordinaattorilla ei siis ole mitään mahdollisuutta tietää Alicen osoitetta. Se näkee vain hänen naamioidun versionsa:
- Koordinaattori tarkistaa syötteiden oikeellisuuden ja allekirjoittaa sitten Alicen naamioidun osoitteen yksityisellä avaimellaan. Hän palauttaa sokean allekirjoituksen Alicelle:
Vaihe 2: Tulosten rekisteröinti
- Alice voi paljastaa osoitteensa, joka on nyt allekirjoitettu koordinaattorin yksityisellä avaimella. Hän luo uuden yhteyden eri Tor-tunnuksella. Koordinaattori ei voi tunnistaa, että Alice on se, joka muodostaa yhteyden tällä uudella tunnuksella:
- Alice lähettää peittämättömän osoitteen ja allekirjoituksen koordinaattorille (joka ei vieläkään tiedä, että kyseessä on Alice):
Vaihe 3: Kaupan allekirjoittaminen
- Samalla tavalla koordinaattori hakee kaikkien osallistujien peittämättömät tuotokset. Koordinaattori voi allekirjoitusten ansiosta tarkistaa, että jokainen anonyymisti lähetetty tuotos on allekirjoitettu hänen yksityisellä avaimellaan etukäteen, mikä takaa tuotosten laillisuuden. Tämän jälkeen hän on valmis rakentamaan kolikkoyhteistapahtuman ja lähettää sen osallistujille allekirjoitettavaksi:
- Liisa tarkistaa muiden osallistujien tavoin, että hänen syötteensä ja tuloksensa sisältyvät oikein koordinaattorin rakentamaan tapahtumaan. Jos kaikki on kunnossa, hän lähettää koordinaattorille allekirjoituksen, joka avaa hänen syöttökäsikirjoituksensa:
- Kun koordinaattori on kerännyt allekirjoitukset kaikilta coinjoin-osallistujilta, hän voi lähettää transaktion Bitcoin-verkkoon, jotta se voidaan lisätä lohkoon.
Tässä järjestelmässä koordinaattori ei pysty yhdistämään syötettä tiettyyn tuotokseen. Lisäksi hän ei voi ottaa haltuunsa osallistujien varoja, koska hänellä ei ole koskaan pääsyä UTXO:iden avaamiseen tarvittaviin yksityisiin avaimiin. Koko prosessin ajan, vaiheen 3 loppuun asti, hänellä ei myöskään ole pääsyä allekirjoituksiin. Kun Alice ja muut osallistujat ovat allekirjoittaneet globaalin transaktion tarkistettuaan, että kaikki on oikein, koordinaattori ei voi enää muuttaa transaktiota, mukaan lukien tuotokset, mitätöimättä sitä. Tämä estää koordinaattoria varastamasta bitcoineja.
Rekisteröidessään tuotoksensa transaktioon coinjoin-käyttäjä haluaa samanlaiset takeet kuin vaaleissa äänestävä kansalainen. Näiden toimien julkiset ja yksityiset näkökohdat ovat kaksijakoiset. Toisaalta on se, mitä halutaan pitää yksityisenä: äänestäjä ei halua, että hänen äänestyslippuaan yhdistetään hänen henkilöllisyyteensä; coinjoin-käyttäjä ei halua, että hänen tulostaan yhdistetään hänen panokseensa. Jos koordinaattori tai joku muu osapuoli onnistuu luomaan yhteyden syötteen ja tuloksen välille, kolikkoliitos menettää kaiken kiinnostavuutensa. Kuten edellä on selitetty, kolikkoliitoksen on toimittava katkoksena kolikon historiassa. Tämä pysähdys johtuu juuri siitä, että kolikkojohdon transaktiossa ei ole mahdollista yhdistää tiettyä panosta tiettyyn tuotokseen (prospektiivinen anonset) ja päinvastoin (retrospektiivinen anonset).
Toisaalta on olemassa julkinen näkökulma: äänestäjä haluaa olla varma, että hänen äänestyslippunsa on mukana vaaliuurnassa; samoin kolikkojohdon käyttäjä haluaa olla varma, että hänen tuloksensa on mukana kolikkojohdon tapahtumassa. Coinjoinin osallistujien on ehdottomasti voitava varmistaa, että heidän tuotoksensa ovat mukana ennen transaktion allekirjoittamista, sillä muuten koordinaattori voisi varastaa varat.
Juuri nämä kaksi julkista ja yksityistä näkökohtaa, jotka David Chaumin sokeat allekirjoitukset mahdollistavat, takaavat Chaumian coinjoineihin osallistuville, että heidän bitcoinejaan ei varasteta ja että heidän varojaan ei voida jäljittää.
Kuka keksi coinjoin-konseptin?
On vaikea sanoa varmasti, kuka esitteli ensimmäisenä coinjoin-idean Bitcoinissa ja kuka keksi käyttää David Chaumin sokeita allekirjoituksia tässä yhteydessä. Usein ajatellaan, että Gregory Maxwell mainitsi sen ensimmäisenä BitcoinTalkin viestissä vuonna 2013 :
*"Chaumin sokeiden allekirjoitusten käyttäminen: Käyttäjät kirjautuvat sisään ja antavat syötteet (ja vaihtavat osoitteet) sekä kryptografisesti sokean version osoitteesta, johon he haluavat lähettää yksityiset osuutensa; palvelin allekirjoittaa merkit ja lähettää ne takaisin. Käyttäjät yhdistyvät uudelleen anonyymisti, paljastavat lähtöosoitteensa ja lähettävät ne takaisin palvelimelle. Palvelin näkee, että se on allekirjoittanut kaikki lähdöt ja että kaikki lähdöt ovat peräisin päteviltä osallistujilta. Myöhemmin ihmiset ottavat uudelleen yhteyden ja kirjautuvat sisään Maxwell, G. (2013, 22. elokuuta). CoinJoin: Bitcoinin yksityisyys reaalimaailmassa. BitcoinTalk Forum. https://bitcointalk.org/index.php?topic=279249.0
On kuitenkin muitakin aiempia mainintoja sekä Chaum-allekirjoituksista osana sekoittamista että coinjoineista. Kesäkuussa 2011 Duncan Townsend esitteli BitcoinTalkissa sekoittajan, joka käyttää Chaum-allekirjoituksia tavalla, joka on melko samanlainen kuin nykyaikaiset Chaumian coinjoinit.
Samasta viestiketjusta löytyy hashcoinin viesti vastauksena Duncan Townsendille hänen sekoittimensa parantamiseksi. Tässä viestissä kuvattu prosessi on juuri sitä, mistä coinjoineissa on kyse. Maininta samankaltaisesta järjestelmästä löytyy myös Alex Mizrahin viestistä vuodelta 2012, kun hän neuvoi Tenebrixin, yhden ensimmäisten altcoinien tekijöitä, joka toimi pohjana Litecoinin myöhemmälle luomiselle. Jopa itse termin "coinjoin" sanotaan, että Greg Maxwell ei ole keksinyt sitä, vaan se on peräisin Peter Toddin ideasta.
Zerolink
Zerolink on kattava sekoitusprotokolla, joka sisältää Chaumian coinjoineja ja erilaisia strategioita käyttäjien anonymiteetin suojaamiseksi useilta ketjuanalyysin muodoilta, erityisesti minimoimalla salkunhallintaan liittyvät virheet. Tämän protokollan esittivät nopara73 ja TDevD vuonna 2017.
Kuten nimestä voi päätellä, Zerolink-periaatteena on luoda coinjoin-transaktioita, joilla varmistetaan, että syötteiden ja tuotosten välisiä yhteyksiä ei voida jäljittää. Tämä saavutetaan varmistamalla, että kaikilla tuotoksilla on täysin identtiset määrät.
Tärkeä Zerolinkin toteuttama ennaltaehkäisevä toimenpide on pitää sekoittamattomat UTXO:t täysin erillään sekoitetuista UTXO:ista käyttämällä erillisiä salausavainsarjoja tai jopa erillisiä salkkuja. Näin erotetaan pre-mix-lompakko, joka on tarkoitettu osille ennen sekoittamista, post-mix-lompakosta, joka on varattu sekoitetuille osille.
UTXO:iden tiukalla erottelulla pyritään ennen kaikkea estämään sekoitetun UTXO:n ja sekoittamattoman UTXO:n vahingossa tapahtuva yhdistäminen. Jos tällaisia yhteyksiä tapahtuu, sekoitetun UTXO:n coinjoinin tehokkuus peruuntuu käyttäjän tietämättä, mikä vaarantaa sen UTXO:n luottamuksellisuuden, jonka historian hän luuli rikkoneensa. Tällaisia yhteyksiä voi syntyä joko osoitteen uudelleenkäytön kautta, kun sekoitettu UTXO suojataan sekoittamattomalla UTXO:lla, tai CIOH:n (Common-Input-Ownership Heuristic_) soveltamisen kautta, jos käyttäjä käyttää sekoitettuja ja sekoittamattomia UTXO:ita saman tapahtuman syötteinä. Erottelemalla esisekoitetut ja jälkisekoitetut salkut toisistaan vältämme tällaiset tahattomat yhdistelmät ja suojaamme käyttäjää tahattomilta virheiltä.
Tämä erottelu tarjoaa myös mahdollisuuden soveltaa erillisiä sääntöjä pre-mix- ja post-mix-salkkujen välillä salkkuohjelmistotasolla. Esimerkiksi jälkisekoitussalkussa ohjelmisto voi kieltää UTXO:iden yhdistämisen syötteisiin CIOH:n soveltamisen estämiseksi, mikä vaarantaisi käyttäjän anonsetin. On myös mahdollista standardoida skriptien ja transaktiovaihtoehtojen (kuten esimerkiksi RBF-raportoinnin) käyttö, jotta estetään tunnistaminen lompakon sormenjälkien perusteella.
Whirlpool on tällä hetkellä ainoa coinjoin-toteutus, joka soveltaa tiukasti Zerolink-protokollaa. Seuraavassa luvussa tarkastelemme erilaisia olemassa olevia coinjoin-toteutuksia sekä niiden etuja ja haittoja.
Coinjoin-toteutukset
*Vuonna 2024 olemme todistamassa suuria muutoksia niiden käyttäjien käytettävissä olevissa työkaluissa, jotka haluavat tehdä kolikkoliitoksia Bitcoinissa. Olemme tällä hetkellä käännekohdassa, ja coinjoin-markkinat ovat suuressa rakennemuutoksessa. Tätä lukua päivitetään varmasti ajan myötä
Tällä hetkellä Bitcoinissa on pääasiassa 3 erilaista coinjoin-toteutusta:
- Whirlpool;
- Wabisabi;
- JoinMarket.
Jokaisen näistä toteutuksista tavoitteena on rikkoa UTXO:n historia coinjoin-transaktioiden avulla. Niiden mekanismit vaihtelevat kuitenkin huomattavasti. Siksi on tärkeää ymmärtää, miten kukin toimii, jotta voit valita tarpeisiisi parhaiten sopivan vaihtoehdon.
JoinMarket
Adam Gibsonin ja Chris Belcherin vuonna 2015 perustama JoinMarket erottuu selvästi muista coinjoin-toteutuksista ainutlaatuisen käyttäjien yhdistämismallinsa ansiosta. Järjestelmä perustuu P2P-vaihtomarkkinoihin, joilla jotkut käyttäjät, "tekijät", tarjoavat bitcoinejaan sekoitettavaksi, kun taas toiset, "ottajat", käyttävät tätä käteistä tehdäkseen coinjoineja maksua vastaan.
Tässä mallissa "tekijät" antavat bitcoinejaan "ottajien" käyttöön ja saavat palvelustaan maksun. Ottajat puolestaan maksavat siitä, että he voivat käyttää tekijöiden bitcoineja omien coinjoin-transaktioidensa toteuttamiseen. Palvelumaksut vaihtelevat roolin mukaan: "Tekijät" keräävät maksuja likviditeetin tarjoamisesta, kun taas "ottajat" maksavat maksut. Markkinat toimivat vapaasti ilman käyttöehtoja.
Yksi JoinMarketin suurimmista haittapuolista on sen käytön monimutkaisuus, joka vaatii tietynlaista mukavuutta päätelaitteiden kanssa, jotta sitä voisi käyttää tehokkaasti. Vaikka tämä monimutkaisuus ei ole este kokeneelle käyttäjälle, se saattaa rajoittaa suuren yleisön mahdollisuuksia käyttää sitä. Hiljattain käyttöön otettu JAM-niminen web-käyttöliittymä on kuitenkin helpottanut hieman käyttöä.
Lähde: JAM
Tekniset esteet ovat kuitenkin edelleen suuri este. Coinjoinin ekosysteemissä, jossa luottamuksellisuutta vahvistaa osallistujien määrä, kaikki rajoitukset, jotka vähentävät saatavuutta, vaikuttavat suoraan käytettävissä olevaan likviditeettiin, joka on ratkaiseva tekijä yhdistelmän tehokkuuden kannalta. Bitcoin, joka on jo nyt rahoitusliiketoimien markkinarako, näkee coinjoinin käytön alarakoina, ja JoinMarket edustaa siitä vielä erikoistuneempaa osaa, mikä rajoittaa sen mahdollisuuksia lisätä käyttäjiensä anonyymiä määrää.
Huolimatta innovatiivisesta P2P-linkitysmallistaan kolikkojälleenmyyjille JoinMarketilla on joitakin merkittäviä haittoja, erityisesti transaktiorakenteen osalta. Toisin kuin muut toteutukset, kuten Whirlpool, JoinMarket ei takaa täydellistä tasa-arvoa tuotosten välillä, ja on mahdollista jäljittää deterministisiä linkkejä syötteiden ja tuotosten välillä. Lisäksi siinä ei ole välineitä, joilla estettäisiin jo sekoitettujen osien uudelleen sekoittaminen, mikä voisi vaarantaa käyttäjien toivoman luottamuksellisuuden.
Vaikka JoinMarketin konsepti on mielenkiintoinen erityisesti niille, jotka ovat kiinnostuneita dynaamisista likviditeettimarkkinoista, sen rakenteelliset heikkoudet ja tekninen monimutkaisuus tekevät siitä mielestäni vähemmän kiinnostavan sekä aloittelijoille että asiantuntijoille, jotka etsivät coinjoin-toteutusta.
Wabisabi
Wabisabi on toinen coinjoin-toteutus, jonka lähestymistapa keskittää transaktioiden koordinoinnin. Tämä malli suunniteltiin Ádám Ficsórin (nopara73), Yuval Kogmanin, Lucas Ontiveron ja István András Seresin toimesta vuonna 2021, ja se sisällytettiin Wasabi 2.0 -ohjelmistoon seuraavana vuonna. Wabisabi on nimenomaan vuonna 2018 lanseeratun Wasabi-ohjelmiston coinjoin-mallin evoluutio.
2010-luvun loppupuolella Wasabi otti käyttöön Whirlpoolista radikaalisti poikkeavan coinjoin-transaktiorakenteen. Wasabi käytti hyvin suuria coinjoin-transaktioita, joihin osallistui kymmeniä osallistujia, lisätäkseen osallistujiensa anonseettia. Whirlpool sen sijaan käytti useita pieniä transaktioita, minkä ansiosta anonsetit kasvoivat eksponentiaalisesti jokaisella syklillä.
Myös vaihdonhallintamenetelmät erottavat nämä kaksi toteutusta toisistaan. Whirlpoolissa valuutta suljettiin pois ja eristettiin UTXO:sta ennen coinjoin-sykliä TX0:n ansiosta, ja tätä käsitettä selitän tarkemmin seuraavassa luvussa. Wasabissa taas valuutta oli yksi coinjoin-transaktion tuotoksista, jolloin tiettyjen syötteiden ja tuotosten välillä oli deterministinen yhteys.
Wabisabin myötä Wasabin versio 2.0 on mukauttanut lähestymistapaansa coinjoineihin vastaamaan Whirlpoolin lähestymistapaa. Vaikka coinjoin-transaktiot ovat edelleen hyvin suuria, on nyt mahdollista ketjuttaa useita peräkkäisiä syklejä Whirlpoolin mallin mukaisesti. Erityistä huomiota on kiinnitetty myös valuuttakurssin hallintaan: toisin kuin Wasabi 1.0:ssa, jossa valuuttakurssi oli suoraan sidoksissa käyttäjän syötteisiin, Wabisabissa valuuttakurssi pyritään jakamaan useisiin pieniin summiin, jotka jaetaan kaikille osallistujille samansuuruisiksi nimellisarvoisiksi.
Havainnollistetaan tätä yksinkertaistetulla esimerkillä, jossa on vain kaksi käyttäjää: Alice haluaa sekoittaa 115 000 satsia ja Bob 210 000 satsia. Jos ei oteta huomioon maksuja, Wasabi 1.0:lla coinjoin-transaktio olisi tuottanut kolme 100 000 satsin lähtöä sekä yhden 15 000 satsin vaihdon Alicelle ja yhden 10 000 satsin vaihdon Bobille. Vaihdon tuotokset olisivat edelleen sidoksissa panoksiin:
Wabisabi-järjestelmässä sama liiketoimi olisi tuottanut kolme 100 000 satsin suuruista tuotosta ja viisi 5 000 satsin suuruista tuotosta, jolloin vaihto olisi hajaantunut niin, ettei sitä olisi voitu suoraan yhdistää tiettyyn panokseen:
Henkilökohtaisesti olen sitä mieltä, että Wabisabin valuutanhallintaan liittyy useita riskejä, jotka voivat vaarantaa sen tehokkuuden luottamuksellisuuden kannalta:
- Kun käyttäjä antaa UTXO:n, joka on huomattavasti suurempi kuin muiden osallistujien UTXO, hän saa väistämättä vaihtomäärän, joka on sidoksissa hänen panokseensa. Tämä on vastoin protokollan alkuperäistä tavoitetta, joka on poistaa kaikki tunnistettavat vaihdot;
- Nimellisarvojen moninkertaistaminen vaihtokaupan pirstaloimiseksi voi paradoksaalisesti olla haitaksi sekoittamisen tehokkuudelle. Prosessi voi johtaa siihen, että tiettyjen tuotosten anonsetit vähenevät, koska ne ovat helpommin tunnistettavissa;
- Menetelmä tuottaa myös arvoltaan alhaisia UTXO:ita, jotka aiheuttavat käyttäjälle hallinnointiongelmia. Nämä pienet UTXO:t voivat muuttua "pölyksi", jos niiden käyttäminen tulee liian kalliiksi suhteessa niiden arvoon. Tämä ilmiö saa käyttäjän yhdistämään useita UTXO:ita tulevien liiketoimien panoksiksi tai yhdistämään ne. Kummassakin tapauksessa tämä voi CIOH:n vuoksi joko vähentää saatuja anonsetteja tai mitätöidä kokonaan alkuperäisellä kolikkoyhdistämisellä saadut luottamuksellisuushyödyt.
Toisin kuin Whirlpool, joka soveltaa ZeroLink-protokollaa, jolla varmistetaan, että sekoitusta edeltävät ja sen jälkeiset UTXO:t erotetaan toisistaan, Wabisabi ei pidä yllä tätä tiukkaa erottelua. Joillakin Wasabi-asiakkailla on myös ollut ongelmia osoitteiden uudelleenkäytöstä, mikä on ilmeisesti erittäin haitallista käyttäjälle.
Wasabi-versiossa 2.0 on otettu käyttöön uusi kolikkoyhteyden maksukäytäntö. Tästä lähtien koordinaattoripalkkiot ovat 0,3 % yli 0,01 bitcoinin UTXOille, kun taas pienemmille UTXOille nämä palkkiot tarjotaan täysimääräisinä. Lisäksi näiden pienempien UTXO:iden remixit ovat maksuttomia, vaikka louhintamaksut ovat edelleen käyttäjän maksettavana kaikista transaktioista, myös remixeistä.
Tämä poikkeaa Whirlpoolin politiikasta, jossa maksut pysyvät kiinteinä riippumatta saatujen anoneettien suuruudesta. Wasabi 2.0:ssa koordinaattorimaksuista luovutaan pienistä UTXO:ista, mutta käyttäjän on silti maksettava kaivosmaksut kaikista transaktioista, myös remixeistä.
Näitä rivejä kirjoittaessani Wabisabin käyttö on monimutkaistunut huomattavasti viimeaikaisten tapahtumien seurauksena. Samourai Walletin perustajien pidätyksen jälkeen Wasabin kehitystä rahoittava ja hallinnoiva yritys zkSNACKs ilmoitti, että sen coinjoin-koordinaattoripalvelu lopetetaan 1. kesäkuuta 2024. Tämä koordinaattori, joka oli perustettu oletusarvoisesti Wasabiin, vastasi suurimmasta osasta likviditeettiä.
Koska tämä pääkoordinaattori on lakkautettu, käyttäjien on nyt otettava yhteys uusiin, itsenäisiin koordinaattoreihin. Tämä muutos herättää useita huolenaiheita: toisaalta uusilla koordinaattoreilla ei välttämättä ole riittävästi likviditeettiä, mikä vähentää yhteistoiminnan tehokkuutta luottamuksellisuuden kannalta. Toisaalta on olemassa riski, että törmää pahantahtoiseen koordinaattoriin. Tämä tilanne lisää merkittävästi uusia riskejä niille, jotka haluavat käyttää Wabisabia.
Teknisten ongelmien lisäksi Wasabin takana olevan zkSNACKs-yrityksen päätös käyttää merkkijonoanalyysiyrityksen palveluja coinjoin-osallistujien suodattamiseen herättää vakavia eettisiä ja strategisia kysymyksiä. Alkuperäisenä ajatuksena oli estää rikollisia käyttämästä kolikkoliitoksia Wasabilla, mikä saattaa vaikuttaa oikeutetulta. Se on kuitenkin paradoksaalista: maksetaan maksuja koordinaattorille, jonka ensisijaisena tehtävänä on vahvistaa käyttäjien luottamuksellisuutta, ja sitten rahoitetaan yritystä, jonka tavoitteena on vaarantaa sama luottamuksellisuus.
Vielä huolestuttavampaa on suodatusperiaate, joka on jyrkässä ristiriidassa Bitcoinin filosofian kanssa, jonka mukaan se tarjoaa avoimen, sensuroimattoman rahoitusjärjestelmän. Vaikka voi tuntua perustellulta haluta sulkea pois rikollinen toiminta, tämä suodattaminen voi vaikuttaa myös henkilöihin, joiden toiminta voi olla moraalisesti perusteltua tai yhteiskunnallisesti hyödyllistä, vaikka se luokitellaan tietyissä yhteyksissä laittomaksi. Edward Snowdenin esimerkki havainnollistaa erinomaisesti tätä kahtiajakoa: jotkut hallitukset pitävät häntä rikollisena paljastustensa vuoksi, kun taas toiset pitävät häntä ilmiantajana, joka toimi yleisen edun nimissä. Tämä monitahoisuus korostaa suodatuksen potentiaalista vaaraa, sillä vaikka suodatus onkin hyvää tarkoittava, se voi lopulta heikentää laillisten käyttäjien oikeuksia ja turvallisuutta. Olisin voinut mainita myös aktivistit ja toimittajat, joita vainotaan tietyissä autoritaarisissa järjestelmissä.
Kuten olet varmasti jo ymmärtänyt, suosin ehdottomasti Whirlpool-mallia Bitcoinin kolikkoliitoksissa. Tämä järjestelmä erottuu tiukkuutensa vuoksi ja tarjoaa erinomaiset takeet luottamuksellisuudesta. Se on myös ainoa, joka tarjoaa matemaattisesti täydellisenä pidetyn yhdistelmän. Mielestäni tämä malli edustaa Bitcoinin kolikkojatkojen tulevaisuutta. Kutsun sinut tutustumaan tähän malliin syvällisemmin seuraavassa luvussa.
Miten Whirlpool toimii
Whirlpool eroaa muista coinjoinmenetelmistä käyttämällä "ZeroLink"-tapahtumia, joilla varmistetaan, että kaikkien tulojen ja lähtöjen välillä ei ole minkäänlaista teknistä yhteyttä. Tämä täydellinen yhdistelmä saavutetaan rakenteella, jossa kukin osallistuja osallistuu panoksellaan identtiseen määrään (lukuun ottamatta louhintamaksuja), jolloin tuotokset ovat täysin samansuuruisia.
Tämä rajoittava lähestymistapa tuotantopanoksiin antaa Whirlpoolin coinjoin-transaktioille ainutlaatuisen ominaisuuden: tuotantopanosten ja tuotosten väliset deterministiset yhteydet puuttuvat kokonaan. Toisin sanoen kullakin tuotoksella on sama todennäköisyys kuulua mille tahansa osallistujalle suhteessa kaikkiin muihin liiketoimen tuotoksiin.
Miten Whirlpool toimii
Aluksi osallistujien määrä kussakin Whirlpool-yhteenliittymässä oli rajoitettu viiteen, joista kaksi oli uusia osallistujia ja kolme remixaajia (selitämme nämä käsitteet myöhemmin). Vuonna 2023 havaittu ketjussa tapahtuvien transaktiomaksujen kasvu sai kuitenkin Samourain tiimit miettimään mallia uudelleen, jotta luottamuksellisuutta voitaisiin parantaa ja samalla vähentää kustannuksia. Näin ollen, ottaen huomioon maksumarkkinoiden tilanteen ja osallistujien määrän, koordinaattori voi nyt järjestää coinjoineja, joihin kuuluu 6, 7 tai 8 osallistujaa. Nämä parannetut istunnot tunnetaan nimellä "Surge Cycles". On tärkeää huomata, että kokoonpanosta riippumatta Whirlpool coinjoineihin osallistuu aina vain 2 uutta osallistujaa.
Whirlpoolin liiketoimille on siis ominaista sama määrä panoksia ja tuotoksia, jotka voivat olla :
- 5 tuloa ja 5 lähtöä ;
- 6 tuloa ja 6 lähtöä ;
- 7 tuloa ja 7 lähtöä ;
- 8 tuloa ja 8 lähtöä.
Whirlpoolin malli perustuu pieniin coinjoin-transaktioihin. Toisin kuin Wabisabissa ja JoinMarketissa, joissa anonsettien kestävyys perustuu osallistujien määrään yhdessä syklissä (tai muutamassa syklissä), Whirlpool luottaa useiden pienten syklien sarjaan.
Tässä mallissa käyttäjät maksavat maksun vain liittyessään pooliin, jolloin he voivat osallistua lukuisiin remixeihin ilman lisäkustannuksia. Uudet osallistujat maksavat remixereiden louhintamaksut.
Jokaisen uuden coinjoinin myötä, johon kappale osallistuu, sekä sen aiemmin kohtaamien vertaisten myötä anonsetit kasvavat eksponentiaalisesti. Tavoitteena on hyödyntää näitä ilmaisia remixejä, jotka joka kerta vahvistavat kuhunkin sekoitettuun kappaleeseen liittyvien anonsettien tiheyttä.
Whirlpoolin suunnittelussa on otettu huomioon kaksi tärkeää vaatimusta:
- Mobiililaitteiden käyttömahdollisuudet, sillä Samourai Wallet on ennen kaikkea älypuhelinsovellus;
- Nopeat sekoitussyklit, jotka edistävät anonsettien merkittävää lisääntymistä.
Nämä vaatimukset ohjasivat Samourain lompakon kehittäjien valintoja Whirlpoolin suunnittelussa, minkä vuoksi he rajoittivat osallistujien määrän rajoitetusti sykliä kohden. Liian pieni määrä olisi vaarantanut kolikkojatkamisen tehokkuuden, mikä olisi vähentänyt huomattavasti sykliä kohti tuotettuja anonsetteja, kun taas liian suuri määrä olisi aiheuttanut hallinnointiongelmia mobiilisovelluksissa ja haitannut syklin kulkua.
Whirlpoolissa ei myöskään tarvita suurta osallistujamäärää yhtä coinjoinia kohden, koska anonsetit tehdään useiden coinjoin-syklien kasautumisen perusteella. Tärkein periaate tässä on kaikkien osallistujien UTXO:iden homogeenisuus, sillä se takaa täydellisen sekoittumisen ja siten täyden hyödyn sekoittumis- ja uudelleen sekoittumissykleistä.
Coinjoin poolit ja maksut
Jotta nämä moninkertaiset syklit lisäisivät sekoitettujen osien anonsettiä, tarvitaan tietty kehys, jolla rajoitetaan käytettyjen UTXO:iden määrää. Whirlpool määrittelee erilaisia pooleja.
Pool edustaa ryhmää käyttäjiä, jotka haluavat sekoittaa yhdessä ja jotka sopivat UTXO:iden määrästä, jotta coinjoin-prosessi voidaan optimoida ja samalla säilyttää täydellinen osien homogeenisuus. Kukin pooli määrittää kiinteän UTXO-määrän, jota käyttäjän on noudatettava osallistuakseen. Jotta voit tehdä kolikkoyhdistämisiä Whirlpoolin avulla, sinun on siis valittava pool. Tällä hetkellä käytettävissä ovat seuraavat poolit:
- 0.5 bitcoinia ;
- 0.05 bitcoin ;
- 0.01 bitcoin ;
- 0.001 bitcoin (= 100 000 satsia).
Kun syötät bitcoinisi pooliin, ne jaetaan siten, että ne tuottavat UTXO:t, jotka ovat täysin samanlaisia kuin poolin muiden osallistujien UTXO:t. Jokaisella poolilla on enimmäisraja, joten jos summat ylittävät tämän rajan, sinun on joko tehtävä kaksi erillistä merkintää samaan pooliin tai siirryttävä toiseen pooliin, jossa on suurempi summa:
| Pool (bitcoin) | Maksimimäärä per merkintä (bitcoin) |
|----------------|--------------------------------------|
| 0,5 | 35 |
| 0,05 | 3,5 |
| 0,01 | 0,7 |
| 0,001 | 0,025 |
UTXO:n katsotaan kuuluvan pooliin, kun se on valmis liitettäväksi coinjoiniin. Tämä ei kuitenkaan tarkoita, että käyttäjä menettää sen hallinnan. Kuten tämän jakson ensimmäisissä luvuissa nähtiin, eri sekoitussyklien aikana käyttäjä säilyttää täyden määräysvallan avaimiinsa ja näin ollen myös bitcoineihinsa. Tämä erottaa coinjoin-tekniikan muista keskitetyistä sekoitustekniikoista.
Jos haluat liittyä coinjoin-pooliin, sinun on maksettava palvelumaksu ja louhintamaksu. Palvelumaksut ovat kiinteät jokaiselle poolille, ja niiden tarkoituksena on maksaa korvauksia Whirlpoolin kehittämisestä ja ylläpidosta vastaaville tiimeille.
Porealtaan käytöstä perittävä palvelumaksu maksetaan vain kerran, kun liityt altaaseen. Kun olet liittynyt, voit osallistua rajattomaan määrään remixejä ilman lisämaksua. Tässä ovat kunkin poolin nykyiset kiinteät maksut:
| Pool (bitcoin) | Osallistumismaksu (bitcoin) |
|----------------|---------------------------------|
| 0,5 | 0,0175 |
| 0,05 | 0,00175 |
| 0,01 | 0,0005 (50 000 satelliittia) |
| 0,001 | 0,00005 (5 000 satelliittia) |
Nämä maksut toimivat lähinnä pääsylippuna valittuun pooliin riippumatta siitä, kuinka paljon panostat coinjoiniin. Joten riippumatta siitä, osallistutko 0,01 pooliin tasan 0,01 BTC:llä vai 0,5 BTC:llä, maksut pysyvät absoluuttisesti samoina.
Ennen kuin jatkat Whirlpool-yhteenliittämistä, käyttäjä voi valita kahden strategian välillä:
- Valitse pienempi allas minimoidaksesi palvelukustannukset tietäen, että hän saa vastineeksi useita pienempiä UTXO:ita;
- Tai valita suurempi rahasto, joka on valmis maksamaan korkeampia maksuja, mutta saada lopulta vain pienempi määrä arvokkaampia UTXO-rahastoja.
Yleensä ei ole suositeltavaa yhdistää useita sekalaisia UTXO:ita coinjoin-syklien jälkeen, koska se voi vaarantaa hankitun luottamuksellisuuden, erityisesti yhteisen syötteen omistusoikeusheuristiikan (CIOH: Common-Input-Ownership-Heuristic) vuoksi. Näin ollen voi olla järkevää valita suurempi pooli, vaikka se tarkoittaisikin korkeampaa maksua, jotta vältetään liian monen pienen arvon UTXO:n joutuminen tulosteeksi. Käyttäjän on arvioitava nämä kompromissit valitakseen haluamansa poolin.
Palvelumaksun lisäksi on otettava huomioon myös jokaiseen
Bitcoin-tapahtumaan liittyvä louhintamaksu. Whirlpool-käyttäjänä sinun on
maksettava kaivosmaksu valmistelutransaktiosta (Tx0) sekä
ensimmäisestä coinjoinista. Kaikki myöhemmät remixit ovat maksuttomia,
kiitos Whirlpoolin uusien liittyjien maksullisuuteen perustuvan mallin.
Itse asiassa jokaisessa Whirlpoolin yhteistoiminnassa kaksi käyttäjää on uusia tulokkaita. Muut syötteet tulevat remixereiltä. Näin ollen kaikkien transaktioon osallistuvien louhintakustannukset lankeavat näille kahdelle uudelle tulokkaalle, jotka voivat myös hyötyä ilmaisista remixeistä:
Tämän maksujärjestelmän ansiosta Whirlpool erottuu todella muista
coinjoin-toteutuksista, sillä UTXO:iden anonsetit eivät ole suhteessa
käyttäjän maksamaan hintaan. Tämän seurauksena on mahdollista saavuttaa
huomattavasti korkeampi anonymiteettitaso maksamalla vain poolin
sisäänpääsymaksu ja louhintamaksu kahdesta transaktiosta (Tx0 ja
alkusekoitus).
On tärkeää huomata, että käyttäjän on myös maksettava kaivosmaksut, jotta hän voi nostaa UTXO-varansa altaasta suoritettuaan useita coinjoineja, ellei hän ole valinnut "mix to" -vaihtoehtoa, joka tarjoaa ulkoisen osoitteen, joka vastaanottaa varat suoraan coinjoinista ilman lisätransaktioita.
HD-salkun tilit
Whirlpoolin kautta tapahtuvaa kolikkoliitosta varten lompakon on luotava
useita erillisiä tilejä. Tämä on ZeroLink-protokollan periaate.
HD-portfolion (Hierarchical Deterministic) yhteydessä tili
muodostaa muista täysin eristetyn osion, ja tämä erottelu tapahtuu
portfoliohierarkian kolmannella syvyydellä eli xpub-tasolla.
HD-lompakko voi teoriassa johtaa jopa 2^(31) eri tilejä.
Alkuperäinen tili, jota käytetään oletuksena kaikissa Bitcoin-lompakoissa,
vastaa 0'-indeksiä.
Whirlpooliin mukautetuissa salkuissa käytetään 4 tiliä ZeroLink-prosessin tarpeiden täyttämiseksi:
- Talletustili**, jonka tunnus on indeksi
0'; - Pahan pankin (tai "doksisen muutoksen") tili, joka on
merkitty indeksillä
2 147 483 644'; - Premix**-tili, joka on merkitty indeksillä "2 147 483 645" ;
- postmix-tili, jonka tunnus on "2 147 483 646".
Kullakin näistä tileistä on oma tehtävänsä coinjoin-prosessissa, jota tarkastellaan seuraavissa kappaleissa.
Kaikki nämä tilit on yhdistetty yhteen siemeneen, jolloin käyttäjä voi palauttaa pääsyn kaikkiin bitcoineihinsa käyttämällä palautuslausettaan ja tarvittaessa salasanaansa. Palauttamistoiminnon aikana ohjelmistolle on kuitenkin ilmoitettava käytetyt eri tili-indeksit.
Tarkastellaan Whirlpoolin yhteisliittymän eri vaiheita näillä tileillä.
TX0
Kaikkien Whirlpool-kolikkoliittymien lähtökohtana on talletustili. Tätä tiliä käytät automaattisesti, kun luot uuden Bitcoin-lompakon. Tälle tilille on hyvitettävä bitcoinit, jotka haluat yhdistää.
Tx0" on Whirlpoolin sekoitusprosessin ensimmäinen vaihe. Sen tarkoituksena on valmistella ja tasata UTXO:t yhteissekoitusta varten jakamalla ne valitun altaan määrää vastaaviin yksiköihin homogeenisen sekoituksen varmistamiseksi. Näin tasoitetut UTXO:t lähetetään sitten premix-tilille. Erotus, joka ei voi mennä pooliin, erotetaan erityiselle tilille: paha pankki (tai "doksinen muutos").
Tätä alkuperäistä "Tx0"-tapahtumaa käytetään myös kolikkoyhdistyskoordinaattorille maksettavan palvelumaksun maksamiseen. Toisin kuin seuraavat vaiheet, tämä transaktio ei ole yhteistoiminnallinen, joten käyttäjän on vastattava kaikista louhinnan kustannuksista:
Tässä esimerkissä Tx0-tapahtumasta, 372 000 satsin panos talletustililtämme jaetaan useisiin UTXO-ulostuloihin, jotka
jakautuvat seuraavasti:
- 5 000 satsin suuruinen määrä koordinaattorille palvelumaksuja varten, mikä vastaa 100 000 satsin suuruista poolimerkintää;
- 3 UTXO:ta valmistellaan sekoittamista varten, ohjataan premix-tilillemme ja rekisteröidään koordinaattorille. Nämä UTXO:t tasataan 108 000 satsin kappalehintaan, jotta niiden tulevan alkusekoituksen louhintakustannukset voidaan kattaa;
- Ylijäämää, joka ei pääse altaaseen, koska se on liian pieni, pidetään myrkyllisenä valuuttana. Se lähetetään omalle tililleen. Tässä tapauksessa tämä vaihto on 40 000 satsia;
- Lopuksi jäljellä on vielä "3000 satsia", jotka eivät ole tuotos, vaan louhintakustannukset, joita tarvitaan "Tx0" vahvistamiseksi.
Tässä on esimerkiksi aito Whirlpool Tx0 (ei minun): edef60744f539483d868caff49d4848e5cc6e805d6cdc8d0f9bdbbaedcb5fc46
Doksiset muutokset
Ylijäämä, jota ei voitu integroida pooliin, tässä tapauksessa 40 000 satsia, ohjataan pahan pankin tilille, joka tunnetaan myös nimellä "doksinen vaihto", jotta varmistetaan, että se on tiukasti erillään muista salkun UTXO-operaatioista.
Tämä UTXO on vaarallinen käyttäjän luottamuksellisuuden kannalta, koska se on edelleen sidoksissa menneisyyteensä ja siten mahdollisesti omistajansa henkilöllisyyteen, mutta sen lisäksi se on myös merkitty kuuluvaksi käyttäjälle, joka on tehnyt coinjoinin.
Jos tämä UTXO yhdistetään sekatulosten kanssa, jälkimmäinen menettää kaiken coinjoin-syklien aikana saavutetun luottamuksellisuuden erityisesti CIOH:n (Common-Input-Ownership-Heuristic) vuoksi. Jos se yhdistetään muiden doksisten muutosten kanssa, käyttäjä on vaarassa menettää luottamuksellisuuden, koska se yhdistää eri coinjoin-syklien merkinnät. Sen vuoksi siihen olisi suhtauduttava varovaisesti. Käymme tarkemmin läpi näiden UTXOs doxxicin hallintaa tämän luvun viimeisessä osassa.
Alkuperäinen yhdistelmä
Tx0:n jälkeen tasatut UTXO:t lähetetään salkkumme premix-tilille, joka on valmis ensimmäiseen kolikkoyhdistymissykliin, joka
tunnetaan myös nimellä "alkusekoitus". Jos, kuten esimerkissämme, Tx0 tuottaa useita UTXO:ita sekoitettavaksi, kukin niistä yhdistetään
erilliseen alkusekoitukseen.
Näiden ensimmäisten sekoitusten päätyttyä premix-tili on tyhjä, kun taas kolikoidemme, jotka ovat maksaneet louhintapalkkiot tästä ensimmäisestä coinjoinista, määräytyy täsmälleen valitun poolin määrittelemän määrän mukaan. Esimerkissämme alkuperäiset UTXO:t, jotka olivat 108 000 satsia, ovat pienentyneet tasan 100 000 satsiksi.
Remixit
Ensimmäisen sekoituksen jälkeen UTXO:t siirretään postmix-tilille. Tälle tilille kerätään jo miksatut UTXO:t ja ne UTXO:t, jotka odottavat remixausta. Kun Whirlpool-asiakas on aktiivinen, postmix-tilillä olevat UTXO:t ovat automaattisesti käytettävissä uudelleensekoituksia varten, ja ne valitaan satunnaisesti osallistumaan näihin uusiin sykleihin.
Muistutuksena mainittakoon, että remixit ovat 100-prosenttisesti ilmaisia: mitään ylimääräisiä palvelumaksuja tai louhintamaksuja ei vaadita. UTXO:iden pitäminen postmix-tilillä pitää siis niiden arvon ennallaan ja parantaa samalla niiden anonsettiä. Siksi on tärkeää, että nämä kolikot voivat osallistua useisiin coinjoin-sykleihin. Se ei maksa sinulle yhtään mitään, ja lisää niiden anonymiteettitasoja.
Kun päätät käyttää UTXO-sekoituksia, voit tehdä sen suoraan tältä postmix-tililtä. Suosittelemme pitämään UTXO-sekoitukset tällä tilillä, jotta voit hyötyä ilmaisista remixeistä ja estää niiden poistumisen Whirlpool-piiristä, mikä voisi heikentää niiden luottamuksellisuutta.
Miten hallinnoit postmixejäsi?
Kun olet suorittanut coinjoin-syklejä, paras strategia on säilyttää UTXO:t postmix-tilillä odottamassa tulevaa käyttöä. On jopa suositeltavaa antaa niiden remixata loputtomiin, kunnes sinun on käytettävä ne.
Jotkut käyttäjät saattavat harkita sekoitettujen bitcoiniensa siirtämistä laitteistolompakolla suojattuun lompakkoon. Tämä on mahdollista, mutta on tärkeää noudattaa tunnollisesti Samourai Walletin suosituksia, jotta saavutettu luottamuksellisuus ei vaarannu.
UTXO:iden yhdistäminen on yleisin virhe. CIOH:n (Common-Input-Ownership-Heuristic) välttämiseksi on vältettävä sekoitettujen UTXO:iden ja sekoittamattomien UTXO:iden yhdistämistä samassa tapahtumassa. Tämä edellyttää UTXO:iden huolellista hallintaa salkussa, erityisesti merkintöjen osalta.
Varovaisuutta on noudatettava myös konsolidoitaessa sekalaisia UTXO:ita. Kohtalainen konsolidointi on mahdollista, jos UTXO-sekoituksissasi on huomattavia anonseetteja, mutta tämä vähentää väistämättä osien luottamuksellisuutta. Varmista, että konsolidoinnit eivät ole liian laajoja tai että niitä ei suoriteta riittävän monen uudelleen sekoituksen jälkeen, sillä tämä saattaa johtaa siihen, että UTXO:iden välille syntyy pääteltävissä olevia yhteyksiä ennen ja jälkeen coinjoin-syklien. Kun olet epävarma näistä manipuloinneista, paras käytäntö on olla konsolidoimatta yhdistämisen jälkeisiä UTXO:ita, vaan siirtää ne yksi kerrallaan laitteistolompakkoosi luoden joka kerta uuden tyhjän osoitteen. Muista jälleen kerran merkitä jokainen vastaanottamasi UTXO.
Ei myöskään ole suositeltavaa siirtää postmix UTXO:t lompakkoon käyttämällä
skriptejä, joita ei käytetä yleisesti. Jos esimerkiksi siirryt Whirlpooliin
multisig-lompakosta käyttäen P2WSH-skriptejä, on
epätodennäköistä, että sinut sekoitetaan muiden käyttäjien kanssa, joilla on
alun perin ollut samantyyppinen lompakko. Jos sekoitat postmixejäsi
uudelleen tähän samaan multisig-lompakkoon, sekoitettujen bitcoinien
luottamuksellisuuden taso heikkenee huomattavasti. Skriptien lisäksi on
monia muita lompakon sormenjälkiä, jotka voivat tehdä temppuja.
Kuten minkä tahansa Bitcoin-tapahtuman kohdalla, on myös tärkeää, että vastaanottavaa osoitetta ei käytetä uudelleen. Jokainen uusi transaktio on vastaanotettava uuteen, tyhjään osoitteeseen.
Yksinkertaisin ja turvallisin ratkaisu on jättää sekoitetut UTXO:t lepäämään postmix-tililleen, antaa niiden sekoittua uudelleen ja koskettaa niitä vain kulutusta varten. Samurai- ja Sparrow-lompakoissa on lisäsuojaus kaikkia näitä ketjuanalyysin riskejä vastaan. Nämä suojaukset auttavat sinua välttämään virheitä.
Miten hallitset myrkyllisiä vaihtoja?
Seuraavaksi sinun on oltava varovainen doxxic exchange -vaihtopankin hallinnoinnissa, joka ei päässyt coinjoin-pooliin. Nämä Whirlpoolin käytöstä johtuvat myrkylliset UTXO:t aiheuttavat riskin yksityisyydellesi, sillä ne luovat yhteyden sinun ja coinjoinin käyttäjän välille. Siksi niitä on ehdottomasti hallinnoitava huolellisesti eikä niitä saa yhdistää muihin UTXOihin, varsinkaan sekamuotoisiin UTXOihin.
Seuraavassa on muutamia strategioita niiden käyttämiseksi:
- Sekoita ne pienempiin altaisiin:** Jos myrkyllinen UTXO on tarpeeksi suuri mahtuakseen pienempään altaaseen yksinään, harkitse sen sekoittamista. Tämä on usein paras vaihtoehto. Ei kuitenkaan ole suositeltavaa yhdistää useita myrkyllisiä UTXO:ita päästäkseen yhteen pooliin, sillä tämä voi yhdistää eri merkintöjäsi;
- Merkitse ne "käyttökelvottomiksi":** Toinen tapa on lopettaa niiden käyttö, merkitä ne "käyttökelvottomiksi" niille tarkoitetulle tilille ja vain hodlata ne. Näin varmistat, ettet käytä niitä vahingossa. Jos bitcoinin arvo nousee, voi syntyä uusia pooleja, jotka sopivat paremmin myrkyllisille UTXO:ille;
- Tee lahjoituksia:** Harkitse lahjoitusten tekemistä Bitcoinin ja siihen liittyvien ohjelmistojen parissa työskenteleville kehittäjille, vaikka ne olisivat kuinka vaatimattomia. Voit myös lahjoittaa yhdistyksille, jotka hyväksyvät BTC:tä. Jos myrkyllisten UTXO:iden hallinta tuntuu liian monimutkaiselta, voit yksinkertaisesti hankkiutua niistä eroon ja tehdä lahjoituksen;
- Osta lahjakortteja:** Alustojen, kuten Bitrefill, avulla voit vaihtaa bitcoineja lahjakortteihin, joita voit käyttää eri kauppiailla. Tämä voi olla keino luopua myrkyllisistä UTXO:istasi menettämättä niihin liittyvää arvoa;
- Konsolidoi ne Moneroon:** Samourai Wallet tarjoaa atomivaihtopalvelun BTC:n ja XMR:n välillä. Tämä sopii erinomaisesti myrkyllisten UTXO:iden hallintaan konsolidoimalla ne Moneroon vaarantamatta luottamuksellisuuttasi CIOH:n kautta, ennen kuin lähetät ne takaisin Bitcoiniin. Tämä vaihtoehto voi kuitenkin olla kallis kaivosmaksujen ja preemion osalta likviditeettirajoitusten vuoksi;
- Lähetä ne Lightning-verkkoon:** Näiden UTXO:iden siirtäminen Lightning-verkkoon voi olla houkutteleva vaihtoehto, jos haluat hyötyä alennetuista transaktiomaksuista. Tämä menetelmä voi kuitenkin paljastaa tiettyjä tietoja riippuen siitä, miten käytät Lightningia, ja siksi sitä tulisi käyttää varoen.
Miten käytän Whirlpoolia?
Samourai Walletin perustajien pidätyksen ja heidän palvelimiensa takavarikoimisen jälkeen 24. huhtikuuta 2024 Whirlpool-työkalu ei enää toimi, ei edes niillä, joilla on oma Dojo. Aiemmin se oli käytettävissä Samourai Walletissa ja Sparrow Walletissa.
On kuitenkin mahdollista, että tämä väline otetaan uudelleen käyttöön tulevina viikkoina kokeiden tuloksista riippuen tai että se käynnistetään uudelleen eri tavalla. Joka tapauksessa en usko, että Bitcoin coinjoin -markkinat ovat pitkään ilman tarjontaa, sillä kysyntää on. Lisäksi, koska Whirlpoolin malli on luottamuksellisuuden kannalta edistynein, se on varmasti tulevaisuudessa muiden toteutusten valintamalli.
Seuraamme tiiviisti tätä tapausta ja siihen liittyvien työkalujen kehitystä. Voit olla varma, että päivitämme tätä koulutusta sitä mukaa, kun uutta tietoa tulee saataville.
Seuraavassa luvussa selvitetään, mitä "anonsetit" ovat, miten nämä indikaattorit lasketaan ja miten niiden avulla voidaan arvioida coinjoin-syklien tehokkuutta.
https://planb.network/tutorials/privacy/on-chain/coinjoin-dojo-c4b20263-5b30-4c74-ae59-dc8d0f8715c2
Anonymiteettisarjat
Kun olemme tutkineet, miten coinjoins toimii ja mitä asioita tehokkaaseen yhdistämiseen liittyy, selvitämme nyt, miten niiden tehokkuutta voidaan mitata. Miten voimme määrittää, onko coinjoining-prosessi ollut tehokasta ja kuinka anonyymiksi osa on muuttunut? Tämä selvitetään tässä luvussa anonymiteettijoukkojen eli "anonsettien" avulla.
Muistutus coinjoinin hyödyllisyydestä
Yhteenliittämisen hyödyllisyys perustuu sen kykyyn tuottaa uskottavaa salattavuutta upottamalla oma osasi erottamattomien osien ryhmään. Tämän toiminnan tavoitteena on katkaista jäljitettävyysyhteydet sekä menneisyydestä nykyhetkeen että nykyisyydestä menneisyyteen.
Toisin sanoen analyytikko, joka tuntee alkuperäisen transaktiosi (Tx0) coinjoin-syklien alkaessa, ei pitäisi pystyä tunnistamaan varmuudella
UTXO:tasi remix-syklien päättyessä (syklin alkaessa syklin päättyessä
analyysi).
Sitä vastoin analyytikko, joka tuntee UTXO:n coinjoin-syklien päättyessä, ei saa pystyä määrittämään alkuperäistä transaktiota syklien alkaessa (analyysi syklin päättyessä syklin alkaessa).
Arvioidaksemme, kuinka vaikeaa analyytikon on yhdistää menneisyys nykyhetkeen ja päinvastoin, meidän on määritettävä niiden homogeenisten osien ryhmien koko, joihin oma osasi on piilotettu. Tämä mitta kertoo meille, kuinka monella analyysillä on sama todennäköisyys. Jos siis oikea analyysi hukkuu kolmen muun yhtä todennäköisen analyysin joukkoon, piilotettavuutesi taso on hyvin alhainen. Toisaalta, jos oikea analyysi löytyy 20 000 yhtä todennäköisen analyysin joukosta, osasi on hyvin piilotettu. Näiden ryhmien koko edustaa indikaattoreita, jotka tunnetaan nimellä "anonsetit".
Ymmärtäminen anonsettien ymmärtäminen
Anonyymejä käytetään indikaattoreina, joiden avulla voidaan arvioida tietyn UTXO:n luottamuksellisuuden astetta. Tarkemmin sanottuna ne mittaavat erottamattomien UTXO:iden lukumäärää joukossa, joka sisältää tutkittavan osan. Vaatimus UTXO:iden homogeenisesta joukosta tarkoittaa, että anonsetit lasketaan yleensä coinjoin-sykleistä. Näiden indikaattoreiden käyttö on erityisen tärkeää Whirlpool-yhteenliittymien osalta, koska ne ovat yhtenäisiä.
Tarvittaessa anonsetteja voidaan käyttää rinnakkaisliitosten laadun arviointiin. Suuri anonset tarkoittaa korkeaa anonymiteettitasoa, koska tiettyä UTXO:ta on vaikea erottaa homogeenisesta joukosta.
on olemassa 2 erilaista anonyymiä asetusta:
- Tuleva anonset ;**
- Takautuva anonset.**
Mahdollinen alkamisajankohta
Eteenpäin suuntautuva anonset ilmoittaa sen ryhmän koon, jonka joukossa syklin lopussa tutkittu UTXO on piilossa, kun otetaan huomioon UTXO alussa, eli tässä ryhmässä olevien erottamattomien osien lukumäärän. Tämän indikaattorin nimi on "tulevaisuuteen suuntautuvat mittarit".
Tämä indikaattori mittaa huoneen luottamuksellisuuden kestävyyttä menneisyydestä nykyhetkeen (input-to-output) -analyysissä.
Tätä mittaria käytetään arvioimaan, missä määrin UTXO:si on suojattu yrityksiltä rekonstruoida sen historiaa kolikonliitosprosessin tulopisteestä poistumispisteeseen.
Jos esimerkiksi transaktiosi on osallistunut ensimmäiseen coinjoin-sykliin
ja kaksi muuta laskevaa sykliä on suoritettu, kolikkosi mahdollinen anonset
on 13 :
Kuvitellaan esimerkiksi, että kolikollamme on kolikkoliitossyklin alussa
anonset-arvo "86,871". Käytännössä tämä tarkoittaa, että se on piilotettu 86,871 erottamattomien osien joukkoon. Ulkopuolinen tarkkailija, joka tuntee tämän
kolikon kolikkosyklin alussa ja yrittää jäljittää sen poistumista, kohtaa 86,871 mahdollista UTXO:ta, joista jokainen on identtisellä todennäköisyydellä
hänen etsimänsä kolikko.
Jälkikäteen tapahtuva anonset
Takautuva anonset ilmoittaa tietyn osan mahdollisten lähteiden määrän, kun UTXO tunnetaan syklin lopussa. Tämä indikaattori mittaa osan luottamuksellisuuden vastustuskykyä nykyhetkestä menneisyyteen (output-to-input) -analyysille eli sitä, kuinka vaikeaa analyytikon on jäljittää osaasi takaisin sen alkuperään ennen coinjoin-sykliä. Tämän indikaattorin nimi on "backward anonset" tai "backward-looking metrics".
Kun tiedetään UTXO-arvosi syklien päättyessä, retrospektiivinen anonset määrittää niiden mahdollisten Tx0-transaktioiden määrän, jotka olisivat voineet muodostaa sisäänpääsysi coinjoin-sykleihin. Alla olevassa kaaviossa tämä vastaa kaikkien oranssien kuplien summaa.
Kuvitellaan esimerkiksi, että coinjoin-osamme takautuva anonset on 42,185. Käytännössä tämä tarkoittaa, että tälle UTXO:lle on 42,185 mahdollista lähdettä. Jos ulkopuolinen tarkkailija tunnistaa tämän kolikon
syklien lopussa ja pyrkii jäljittämään sen alkuperän, hän kohtaa 42,185 mahdollista lähdettä, joilla kaikilla on yhtä suuri todennäköisyys
olla etsitty alkuperä.
Miten lasketaan anonsetit?
Pienille kokonaisuuksille on mahdollista laskea anonsetit manuaalisesti lohkoetsintä käyttäen. Suurempien anonsettien tapauksessa on kuitenkin välttämätöntä käyttää erikoistunutta työkalua. Tietääkseni ainoa ohjelma, joka pystyy suorittamaan tämän tehtävän, on Whirlpool Stats Tool, Python-työkalu, jonka Samourai- ja OXT-ryhmät ovat kehittäneet. Valitettavasti tämä työkalu on tällä hetkellä poissa käytöstä Samourain perustajien pidätyksen ja OXT:n toiminnan keskeytymisen jälkeen, ja sitä käytettiin tietojen poimimiseen lohkoketjusta.
Kuten olemme nähneet tässä luvussa, anonsetit voidaan laskea vain, jos coinjoin-rakenteessa on tietty homogeenisuus. Seuraavassa luvussa selvitetään, miten tämä homogeenisuus voidaan määrittää määrällisesti Bitcoin-tapahtumassa, olipa kyseessä sitten coinjoin tai perinteisempi tapahtuma.
https://planb.network/tutorials/privacy/analysis/wst-anonsets-0354b793-c301-48af-af75-f87569756375
Entropia
Kuten olemme nähneet tässä kolikkoliitoksia käsittelevässä jaksossa, UTXO:iden homogeenisuudella syötteen ja tuotoksen osalta on tärkeä rooli Bitcoin-tapahtuman luottamuksellisuuden parantamisessa. Tämä parametri luo uskottavan kiistettävyyden lohkoketjuanalyysin edessä. Tätä homogeenisuutta voidaan mitata useilla menetelmillä, mutta yksi tehokkaimmista on mielestäni OXT- ja Samourai Wallet -tiimien kehittämän Boltzmann-työkalun tarjoamien indikaattoreiden ja erityisesti transaktion entropian käyttö. Tätä tarkastelemme yksityiskohtaisesti tässä luvussa.
Toisin kuin anonsetit, jotka lasketaan joukosta transaktioita, tässä esitetyt indikaattorit keskittyvät yhteen transaktioon, olipa kyseessä sitten coinjoin tai perinteisempi transaktio.
Tulkintojen määrä
Ensimmäinen indikaattori, joka voidaan havaita Bitcoin-tapahtumasta, on mahdollisten tulkintojen kokonaismäärä, kun ulkopuolinen tarkkailija analysoi niitä. Kun otetaan huomioon transaktioon osallistuvien UTXO:iden arvot, tämä indikaattori osoittaa, kuinka monella eri tavalla syötteet voidaan liittää tuotoksiin. Toisin sanoen se määrittää mahdollisten tulkintojen määrän, jonka transaktio voi saada aikaan bitcoin-virroissa sitä analysoivan ulkopuolisen tarkkailijan näkökulmasta.
Esimerkiksi yksinkertaisella maksutapahtumalla, jossa on yksi panos ja kaksi tulosta, on vain yksi tulkinta, nimittäin että panos nro 0 rahoittaa tuotoksen nro 0 ja tuotoksen nro 1. Muuta mahdollista tulkintaa ei ole:
Toisaalta Whirlpoolin 5x5-kulmassa on 1,496 $ mahdollisia yhdistelmiä:
Whirlpool Surge Cycle 8x8 -kolikkoliitoksella on 9,934,563 $ mahdollisia tulkintoja:
Entropia
Bitcoin-tapahtuman tulkintojen määrästä voidaan laskea sen entropia.
Kryptografian ja informaation yleisessä yhteydessä entropia on tietolähteeseen tai satunnaisprosessiin liittyvän epävarmuuden tai arvaamattomuuden määrällinen mitta. Toisin sanoen entropia on tapa mitata, kuinka vaikeaa jokin tieto on ennustaa tai arvata.
Lohkoketjuanalyysin yhteydessä entropia on myös nimi indikaattorille, joka on johdettu Shannonin entropiasta ja LaurentMT:n keksimä ja joka voidaan laskea Bitcoin-tapahtumasta.
Kun tapahtumalla on suuri määrä mahdollisia tulkintoja, on usein tarkoituksenmukaisempaa viitata sen entropiaan. Tämä indikaattori mittaa analyytikoiden tietämättömyyttä tapahtuman tarkasta kokoonpanosta. Toisin sanoen, mitä suurempi entropia on, sitä vaikeampaa analyytikkojen on tunnistaa bitcoinien virtausta syötteiden ja tulosteiden välillä.
Käytännössä entropia paljastaa, onko tapahtumalla ulkoisen tarkkailijan näkökulmasta useita mahdollisia tulkintoja, jotka perustuvat pelkästään panos- ja tuotosmääriin ottamatta huomioon muita ulkoisia tai sisäisiä malleja ja heuristiikkoja. Suuri entropia on siis synonyymi transaktion suuremmalle luottamuksellisuudelle.
Entropia määritellään mahdollisten yhdistelmien lukumäärän
binäärilogaritmiksi. Tässä on käytetty kaava, jossa E on tapahtuman entropia ja C mahdollisten
tulkintojen lukumäärä:
E = \log_2(C) Matematiikassa binäärilogaritmi (base-2 logaritmi) on käänteisoperaatio 2:n
potensoinnille. Toisin sanoen x:n binäärilogaritmi on eksponentti, johon 2 on korotettava, jotta saadaan x. Tämä indikaattori
ilmaistaan siis bitteinä.
Otetaan esimerkki entropian laskemisesta Whirlpoolin 5x5-mallin mukaisesti
jäsennellylle coinjoin-transaktiolle, jonka mahdollisten tulkintojen määrä
on 1\,496, kuten edellisessä
kappaleessa mainittiin:
\begin{align*}
C &= 1\,496 \\
E &= \log_2(1\,496) \\
E &= 10.5469 \text{ bits}
\end{align*} Näin ollen tämän coinjoin-transaktion entropia on 10,5469 $ bittiä, mitä pidetään erittäin tyydyttävänä. Mitä suurempi tämä arvo on, sitä enemmän erilaisia tulkintoja tapahtumasta voidaan tehdä, mikä vahvistaa sen luottamuksellisuutta.
Kun kyseessä on 8x8-kolikkotapahtuma, jossa on 9\,934\,563 tulkintoja, entropia on :
\begin{align*}
C &= 9\,934\,563 \\
E &= \log_2(9\,934\,563) \\
E &= 23.244 \text{ bits}
\end{align*} Otetaan toinen esimerkki, jossa on klassinen maksutapahtuma, jossa on 1 tulo ja 2 lähtöä: 1b1b0c3f0883a99f1161c64da19471841ed12a1f78e77fab128c69a5f578ccce
Tämän tapahtuman tapauksessa ainoa mahdollinen tulkinta on: (In.0) > (Out.0 ; Out.1). Näin ollen sen entropia on 0 :
\begin{align*}
C &= 1 \\
E &= \log_2(1) \\
E &= 0 \text{ bits}
\end{align*} Tehokkuus
Tapahtuman entropian perusteella voimme myös laskea sen tehokkuuden luottamuksellisuuden kannalta. Tällä indikaattorilla arvioidaan tapahtuman tehokkuutta vertaamalla sitä optimaaliseen tapahtumaan, joka voitaisiin suunnitella samassa kokoonpanossa.
Tästä päästäänkin käsitteeseen maksimientropia, joka vastaa suurinta entropiaa, jonka tietty transaktiorakenne voi teoreettisesti saavuttaa. Tapahtuman tehokkuus lasketaan sitten vertaamalla tätä maksimikentropiaa analysoitavan tapahtuman todelliseen entropiaan.
Käytetty kaava on seuraava:
- e_R$: tapahtuman todellinen entropia bitteinä ilmaistuna;
- e_M$: transaktiorakenteen suurin mahdollinen entropia, joka ilmaistaan myös bitteinä;
Ef: transaktion tehokkuus bitteinä :
Ef = E_R - E_M Esimerkiksi Whirlpool 5x5 coinjoin -rakenteen suurin entropia on 10.5469 :
\begin{align*}
E_R &= 10.5469 \\
E_M &= 10.5469 \\
Ef &= E_R - E_M \\
Ef &= 10.5469 - 10.5469 \\
Ef &= 0 \text{ bits}
\end{align*} Tämä indikaattori ilmaistaan myös prosentteina. Käytetty kaava on seuraava: :
- c_R$ : mahdollisten reaalisten tulkintojen lukumäärä ;
- c_M$: saman rakenteen mahdollisten tulkintojen enimmäismäärä;
Ef: tehokkuus prosentteina ilmaistuna:
\begin{align*}
E_f &= \frac{C_R}{C_M} \\
E_f &= \frac{1\,496}{1\,496} \\
E_f &= 100 \%
\end{align*} Tehokkuus 100 dollaria osoittaa, että liiketoimi hyödyntää luottamuksellisuuspotentiaalinsa mahdollisimman hyvin, riippuen sen rakenteesta.
Entropian tiheys
Entropia on hyvä indikaattori mittaamaan tapahtuman luottamuksellisuutta, mutta se riippuu osittain tapahtuman tulojen ja lähtöjen määrästä. Vertaillaksemme kahden eri transaktion entropiaa, joissa on eri määrä syötteitä ja lähtöjä, voimme laskea entropian tiheyden. Tämä indikaattori antaa näkökulman tapahtuman kunkin syötteen tai lähdön entropiaan. Tiheys on hyödyllinen arvioitaessa ja vertailtaessa erikokoisten transaktioiden tehokkuutta.
Sen laskemiseksi jaetaan transaktion kokonaisentropia transaktioon osallistuvien tulojen ja lähtöjen kokonaismäärällä:
- e_D$: entropian tiheys bitteinä ilmaistuna;
- e$: tapahtuman entropia bitteinä ilmaistuna;
- t$: tapahtuman tulojen ja lähtöjen kokonaismäärä:
E_D = \frac{E}{T} Otetaan esimerkki Whirlpoolin 5x5-kaksoiskoneesta:
\begin{align*}
T &= 5 + 5 = 10 \\
E &= 10.5469 \\
E_D &= \frac{E}{T} \\
E_D &= \frac{10.5469}{10} \\
E_D &= 1.054 \text{ bits}
\end{align*} Lasketaan myös 8x8 Whirlpool-koliittymän entropiatiheys:
\begin{align*}
T &= 8 + 8 = 16 \\
E &= 23.244 \\
E_D &= \frac{E}{T} \\
E_D &= \frac{23.244}{16} \\
E_D &= 1.453 \text{ bits}
\end{align*} Analysoimalla näiden kahden rinnakkaisliitostyypin entropiatiheyttä käy selväksi, että vaikka entropia normalisoitaisiinkin elementtien lukumäärän mukaan, "Surge Cycle 8x8" - rinnakkaisliitos tuottaa enemmän epävarmuutta analyysin kannalta.
Boltzmannin pisteet
Toinen transaktiossa analysoitava tieto on kunkin elementin Boltzmann-pistemäärä suhteessa toiseen elementtiin. Tämä on taulukko syötteiden ja tuotosten vastaavuustodennäköisyyksistä. Taulukosta käy ilmi Boltzmann-pistemäärän avulla ehdollinen todennäköisyys sille, että tietty panos liittyy tiettyyn tuotokseen. Se on siis määrällinen mittari ehdolliselle todennäköisyydelle, että tapahtuman panoksen ja tuotoksen välinen yhteys toteutuu, ja se perustuu tämän tapahtuman suotuisien esiintymisten määrän suhteeseen mahdollisten esiintymisten kokonaismäärään tulkintojen joukossa.
Käyttämällä esimerkkinä Whirlpoolin coinjoinia ehdollinen todennäköisyystaulukko korostaisi kunkin syötteen ja tuloksen välisen yhteyden todennäköisyyttä ja tarjoaisi kvantitatiivisen mittarin tapahtuman assosiaatioiden moniselitteisyydestä:
| % | Lähtö 0 | Lähtö 1 | Lähtö 2 | Lähtö 3 | Lähtö 4 | Lähtö 4 |
| ------- | -------- | -------- | -------- | -------- | -------- |
| Syöttö 0 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% |
| Tulo 1 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | Tulo 1
| Syöttö 2 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34
| Tulo 3 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | Tulo 3
| Input 4 | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34% | 34
On selvää, että jokaisella syötteellä on yhtäläinen mahdollisuus liittyä mihin tahansa tuotokseen, mikä vahvistaa tapahtuman luottamuksellisuutta.
Boltzmann-pistemäärä lasketaan jakamalla niiden tulkintojen lukumäärä,
joissa tietty tapahtuma esiintyy, käytettävissä olevien tulkintojen
kokonaismäärällä. Jos siis halutaan määrittää pistemäärä, joka yhdistää
syötteen #0 tulokseen #3 (tapahtuma esiintyy 512 tulkinnoissa), toimitaan seuraavasti:
\begin{align*}
\text{Interpretations (IN.0 > OUT.3)} &= 512 \\
\text{Interpretations totales} &= 1496 \\
\text{Score} &= \frac{512}{1496} \\
\text{Score} &= 34 \%
\end{align*} Jos otamme esimerkkinä Whirlpool 8x8 Surge Cycle -yhdistelmän, Boltzmannin taulukko näyttää seuraavalta:
| OUT.0 | OUT.1 | OUT.2 | OUT.3 | OUT.4 | OUT.5 | OUT.6 | OUT.7 | OUT.7 |
|-------|-------|-------|-------|-------|-------|-------|-------|-------|
| IN.0 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
| IN.1 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
| IN.2 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
| IN.3 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
| IN.4 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
| IN.5 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
| IN.6 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
| IN.7 | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% | 23% |
Kun kyseessä on yksinkertainen tapahtuma, jossa on yksi tulo ja kaksi lähtöä, tilanne on kuitenkin toinen:
| Lähtö 0 | Lähtö 1 |
|---------|----------|----------|
| Input 0 | 100% | 100% | 100% |
Tässä nähdään, että todennäköisyys sille, että kukin lähtö on peräisin syötteestä #0, on 100 %. Pienempi todennäköisyys kuvastaa siis suurempaa luottamuksellisuutta, mikä heikentää panosten ja tuotosten välisiä suoria yhteyksiä.
Deterministiset linkit
Voimme myös laskea tapahtuman determinististen linkkien määrän. Tämä indikaattori paljastaa, kuinka moni analysoidun liiketoimen tulojen ja lähtöjen välisistä yhteyksistä on 100 prosentin todennäköisyydellä kiistattomia. Tätä indikaattoria voidaan täydentää laskemalla determinististen linkkien suhde. Suhde antaa kuvan näiden determinististen linkkien painosta liiketoimen kaikkien linkkien joukossa.
Esimerkiksi Whirlpoolin coinjoin-transaktiolla ei ole deterministisiä linkkejä tulojen ja lähtöjen välillä, joten sen indikaattorina on 0 linkkiä ja suhdelukuna 0 %. Toisessa tarkastellussa yksinkertaisessa maksutapahtumassa (jossa on yksi tulo ja kaksi lähtöä) indikaattori kertoo, että deterministisiä linkkejä on kaksi, ja suhde on 100 prosenttia. Toisin sanoen nollaindikaattori osoittaa erinomaista luottamuksellisuutta, koska panosten ja tuotosten välillä ei ole suoria ja kiistattomia yhteyksiä.
Miten nämä indikaattorit lasketaan?
Näiden indikaattoreiden laskeminen manuaalisesti antamieni yhtälöiden avulla on suhteellisen yksinkertaista. Vaikeutena on lähinnä määrittää transaktion mahdollisten tulkintojen määrä. Klassisen transaktion osalta tämä laskelma voidaan tehdä käsin. Rinnakkaistapahtuman osalta tehtävä on kuitenkin paljon monimutkaisempi.
Aiemmin oli olemassa OXT- ja Samourai-tiimien kehittämä Python-työkalu nimeltä Boltzmann Calculator, joka laski automaattisesti kaikki nämä indikaattorit Bitcoin-tapahtumalle:
Näissä analyyseissä voitiin käyttää myös KYCP.org-sivustoa:
Valitettavasti Samourain perustajien pidätyksen jälkeen nämä välineet eivät enää toimi.
Nyt kun olemme käsitelleet coinjoineja yksityiskohtaisesti, tarkastelemme kurssimme viimeisessä osassa muita Bitcoinissa käytettävissä olevia yksityisyystekniikoita. Tarkastelemme payjoineja, erityisiä pseudo-coinjoin-transaktiotyyppejä, staattisia osoiteprotokollia sekä toimenpiteitä, joilla vahvistetaan luottamuksellisuutta ei itse transaktioiden vaan solmujen verkon tasolla.
Muiden kehittyneiden luottamuksellisuustekniikoiden haasteiden ymmärtäminen
Payjoin maksutapahtumat
Coinjoin on tällä hetkellä tehokkain menetelmä epävarmuuden lisäämiseksi osien jäljittämiseen ketjuanalyysissä. Kuten aiemmissa luvuissa on todettu, tehokkaan yhdistelmän aikaansaamiseksi panosten ja tuotosten on oltava mahdollisimman homogeenisia. Lisäksi on tärkeää, että osat integroidaan mahdollisimman suureksi ryhmäksi, jotta anonsetit voidaan maksimoida. Jotta yhteisliitokset olisivat tehokkaita, niissä on siis oltava mukana suuri määrä yhtenäisiä osia. Tämä vaatimusten moninaisuus tarkoittaa, että coinjoin-transaktioilla on hyvin jäykkä rakenne: määrät on vahvistettu etukäteen, ja kaikkien osallistujien on noudatettava niitä prosessin yhdenmukaisuuden takaamiseksi. Lisäksi coinjoinit edellyttävät synkronointia kaikkien osallistujien ja koordinaattorin välillä transaktion rakentamisen aikana.
Näiden vaatimusten vuoksi coinjoin ei sovellu suoriin tukiin. Jos sinulla on esimerkiksi 1 miljoonan satsin kolikko coinjoin-poolissa, sen käyttäminen suoraan maksuna olisi monimutkaista. Se edellyttäisi synkronointia muiden osallistujien ja koordinaattorin kanssa, jotta yhteistapahtuma voitaisiin rakentaa juuri sillä hetkellä, kun haluat suorittaa maksun, ja ostosumman olisi vastattava täsmälleen kolikkosi arvoa, mikä on käytännössä mahdotonta. Coinjoin-transaktio on siis luonteeltaan yhteistoiminnallinen pyyhkäisytransaktio, eli tulosteissa on yleensä samat omistajat kuin tulosteissa.
Olisi kuitenkin mielenkiintoista, että transaktiorakenteet mahdollistaisivat maksujen suorittamisen käytännöllisellä tavalla ja samalla toisivat epäilyksiä ketjuanalyysiin. Juuri tätä tarkastelemme tässä ja seuraavassa luvussa.
Mikä on payjoin-transaktio?
Payjoin on erityinen Bitcoin-tapahtumarakenne, joka parantaa käyttäjän yksityisyyttä rahankäytön yhteydessä tekemällä yhteistyötä maksun vastaanottajan kanssa.
Vuonna 2015 LaurentMT esitteli ensimmäisen kerran tämän menetelmän nimellä "steganographic transactions", kuten tässä dokumentissa näkyy. Tämän tekniikan otti myöhemmin käyttöön Samourai Wallet, joka vuonna 2018 oli ensimmäinen asiakas, joka toteutti sen Stowaway-työkalulla. Payjoin-käsite esiintyy myös BIP79, BIP78 ja BIP77 asiakirjoissa. Useita termejä käytetään viittaamaan payjoiniin:
- Payjoin ;
- Salamatkustaja;
- P2EP (Pay-to-End-Point) ;
- Steganografinen tapahtuma.
Payjoinin erityispiirre on sen kyky luoda transaktio, joka näyttää ensi silmäyksellä tavalliselta, mutta on itse asiassa kahden henkilön välinen mini-Coinjoin. Tämän saavuttamiseksi transaktiorakenteessa maksun vastaanottaja on mukana syötteissä varsinaisen lähettäjän rinnalla. Vastaanottaja sisällyttää näin maksutapahtuman keskelle itselleen suoritettavan maksun, joka itsessään mahdollistaa maksun suorittamisen hänelle.
Otetaanpa esimerkki, jonka avulla tätä prosessia voidaan ymmärtää paremmin. Alice ostaa patongin 4 000 satsilla käyttäen 10 000 satsin UTXO:ta ja valitsee payjoinin. Hänen leipurinsa Bob lisää panoksena 15 000 satsin UTXO:n, joka kuuluu hänelle ja jonka hän saa kokonaisuudessaan takaisin tuotoksena Alicen 4 000 satsin lisäksi.
Tässä esimerkissä leipuri Bob syöttää syötteenä 15 000 satsia ja poistuu 19 000 satsia, jolloin erotus on tasan 4 000 satsia eli patongin hinta. Alicen puolella hän syöttää 10 000 satsia ja saa tuotokseksi 6 000 satsia, mikä vastaa -4 000 satsin saldoa eli patongin hintaa. Esimerkin yksinkertaistamiseksi olen tarkoituksella jättänyt pois kaivostoiminnan kustannukset tässä transaktiossa.
Mitä varten payjoin on?
Payjoin-toiminnolla on kaksi tavoitetta, sillä sen avulla käyttäjät voivat parantaa maksunsa luottamuksellisuutta.
Ensinnäkin payjoin pyrkii johtamaan ulkopuolista tarkkailijaa harhaan luomalla ketjuanalyysissä houkuttimen. Tämän mahdollistaa CIOH-heuristiikka (Common Input Ownership Heuristic). Kuten osassa 3 nähtiin, yleensä kun lohkoketjussa olevalla transaktiolla on useita syötteitä, oletetaan, että kaikki nämä syötteet kuuluvat samalle taholle tai käyttäjälle.
Kun analyytikko tutkii payjoin-transaktiota, hän saa uskoteltua, että kaikki syötteet ovat peräisin samalta henkilöltä. Tämä käsitys on kuitenkin väärä, koska myös maksunsaaja osallistuu panoksiin varsinaisen maksajan ohella. Näin ollen ketjuanalyysi ohjautuu väärään tulkintaan, joka osoittautuu vääräksi.
Otetaanpa esimerkkinä payjoin-transaktio patongin maksamista varten:
Kun ulkopuolinen tarkkailija näkee tämän transaktion lohkoketjussa, hän tekisi lohkoketjuanalyysin tavanomaisia heuristiikkoja noudattaen seuraavan tulkinnan: "Alice yhdisti 2 UTXO:ta transaktion syötteeksi maksaakseen 19 000 satsia Bobille".
Tämä tulkinta on ilmeisen virheellinen, sillä kuten jo tiedät, kaksi UTXO:ta ei kuulu samalle henkilölle. Toinen tulee Alicelta, patongin ostajalta, ja toinen Bobilta, leipurilta.
Tällä tavoin ulkopuolisen tarkkailijan analyysi ohjataan kohti virheellistä johtopäätöstä, jolloin varmistetaan, että sidosryhmien luottamuksellisuus säilyy.
Steganografinen tapahtuma
Payjoinin toinen tarkoitus on johtaa ulkopuolista tarkkailijaa harhaan suoritetun maksun todellisesta määrästä. Tapahtuman rakennetta tarkastelemalla analyytikko saattaa uskoa, että maksu vastaa yhden tuotoksen määrää.
Jos palaamme takaisin esimerkkiin patongin ostamisesta, analyytikko ajattelee, että maksun määrä vastaa joko 6 000 satsin UTXO:ta tai 19 000 satsin UTXO:ta. Tässä tapauksessa analyytikko ajattelee pikemminkin, että maksun määrä on 19 000 satsia, koska tuotoksissa on kaksi UTXO:ta, joista ainakin toinen on suurempi kuin 6 000 satsia (ei ole mitään loogista syytä käyttää kahta UTXO:ta 6 000 satsin maksamiseen, kun yksi UTXO olisi riittänyt maksun suorittamiseen).
Todellisuudessa tämä analyysi on kuitenkin virheellinen. Maksun määrä ei vastaa mitään tuotosta. Se on itse asiassa tuensaajan UTXO:n tuotoksen ja tuensaajan UTXO:n panoksen välinen erotus.
Tässä suhteessa payjoin-transaktio kuuluu steganografian piiriin. Sen avulla transaktion todellinen summa voidaan piilottaa väärennettyyn transaktioon, joka toimii harhautuksena.
Steganografia on tekniikka, jolla tieto kätketään muun datan tai esineiden sisälle niin, että piilotetun tiedon läsnäolo ei ole havaittavissa. Esimerkiksi salainen viesti voidaan kätkeä pisteen sisään tekstiin, joka ei liity tekstiin, jolloin sitä ei voi havaita paljain silmin (tämä on microdot -tekniikka).
Toisin kuin salaus, joka tekee tiedon käsittämättömäksi ilman salausavainta, steganografia ei muuta tietoa. Se pysyy näkyvissä selvänä tekstinä. Sen tavoitteena on pikemminkin salata salaisen viestin olemassaolo, kun taas salaus paljastaa selvästi kätketyn tiedon olemassaolon, vaikkakin ilman avainta siihen ei pääse käsiksi. Tämän vuoksi payjoinin alkuperäinen nimi oli "steganografiset transaktiot".
Kryptografian ja coinjoinin sekä steganografian ja payjoinin välillä voidaan tehdä analogia. Coinjoinilla on samankaltaisia ominaisuuksia kuin salauksella: menetelmä on tunnistettavissa, mutta tietoa ei voida salata. Payjoin taas muistuttaa steganografiaa: tieto on teoriassa saatavilla, mutta koska kätkentämenetelmä ei ole tunnistettavissa, siitä tulee saavuttamattomissa.
Miten käytän payjoinia?
Tunnettuja ohjelmistoja, jotka tukevat payjoinia, ovat Sparrow Wallet, Wasabi Wallet, Mutiny, BitMask, BlueWallet ja JoinMarket sekä maksuprosessori BTCPay.
Edistynein payjoin-toteutus oli vain Stowaway Samourai Walletissa. Ohjelmiston perustajien pidätyksen jälkeen tämä työkalu on kuitenkin vain osittain toimiva. Stowawayn etuna on, että se on kattava ja helppokäyttöinen protokolla, joka tukee sekä payjoinien vastaanottamista että lähettämistä. Osittain allekirjoitettuja transaktioita voidaan vaihtaa manuaalisesti skannaamalla useita QR-koodeja tai automaattisesti Torin kautta Sorobanin kautta. Jälkimmäinen viestintävaihtoehto on tällä hetkellä poissa käytöstä.
Payjoinin käytön vaikeus on sen riippuvuus kauppiaan osallistumisesta. Asiakkaana et voi käyttää payjoinia, jos kauppias ei tue sitä. Tämä lisää ostoprosessin vaikeutta entisestään: ei ole pelkästään vaikeaa löytää kauppiaita, jotka hyväksyvät bitcoinin, vaan jos etsit myös niitä, jotka tukevat payjoineja, tilanne mutkistuu entisestään.
Yksi ratkaisu olisi käyttää transaktiorakenteita, jotka tuovat ketjuanalyysiin epäselvyyttä ilman, että vastaanottajan on tehtävä yhteistyötä. Näin voisimme parantaa maksujen luottamuksellisuutta turvautumatta kauppiaiden aktiiviseen osallistumiseen. Juuri tätä tarkastelemme seuraavassa luvussa.
Maksu minikolikkoyhteys
Kun haluat suorittaa maksutapahtuman säilyttäen tietynasteisen luottamuksellisuuden, payjoin on hyvä vaihtoehto. Mutta kuten juuri näimme, payjoin edellyttää vastaanottajan osallistumista. Mitä teet, jos vastaanottaja kieltäytyy osallistumasta payjoiniin tai jos et yksinkertaisesti halua ottaa häntä mukaan? Yksi vaihtoehto on käyttää Stonewall- tai Stonewall x2 -tapahtumaa. Tutustutaanpa tarkemmin näihin kahteen transaktiotyyppiin.
Stonewall-tapahtuma
Stonewall on erityinen Bitcoin-tapahtuman muoto, joka on suunniteltu lisäämään käyttäjien luottamuksellisuutta rahankäytön yhteydessä jäljittelemällä kahden henkilön välistä pseudo-coin-liittymää, joka ei kuitenkaan ole itse asiassa yksi. Itse asiassa tämä transaktio ei ole yhteistoiminnallinen. Käyttäjä voi rakentaa sen yksin käyttäen syötteenä vain omistamiaan UTXO-rahoja. Voit siis luoda Stonewall-tapahtuman mihin tahansa tilaisuuteen ilman, että sinun tarvitsee synkronoitua toisen käyttäjän tai vastaanottajan kanssa.
Stonewall-transaktio toimii seuraavasti: liikkeeseenlaskija käyttää transaktion syötteenä kahta hänelle kuuluvaa UTXO:ta. Lähtönä transaktio tuottaa 4 UTXO:ta, joista 2 on täsmälleen samansuuruisia. Loput 2 UTXO:ta muodostavat valuuttaa. Kahdesta samansuuruisesta tulosteesta vain toinen menee tosiasiallisesti maksunsaajalle.
Stonewall-tapahtumassa on siis vain kaksi roolia:
- Liikkeeseenlaskija, joka suorittaa maksun ;
- Vastaanottaja, joka ei välttämättä tiedä tapahtuman erityisluonnetta ja odottaa yksinkertaisesti maksua lähettäjältä.
Otetaan esimerkki tämän tapahtumarakenteen ymmärtämiseksi. Alice menee leipuri Bobin luo ostamaan patonkia, joka maksaa 4 000 satsia. Hän haluaa maksaa bitcoineilla ja säilyttää samalla jonkinlaisen luottamuksellisuuden maksunsa suhteen. Niinpä hän päättää rakentaa maksua varten Stonewall-tapahtuman.
Analysoimalla tätä tapahtumaa voimme nähdä, että leipuri Bob sai itse asiassa 4 000 satsia maksuna patongista. Alice käytti syötteenä kahta UTXO:ta: toinen 10 000 satsia ja toinen 15 000 satsia. Tuotoksina hän on saanut takaisin 3 UTXO:ta: yhden 4 000 satsista, yhden 6 000 satsista ja yhden 11 000 satsista. Liisan nettosaldo tästä liiketoimesta on siis -4 000 satsia, mikä vastaa patongin hintaa.
Tässä esimerkissä olen tarkoituksella jättänyt kaivosmaksut huomiotta, jotta se olisi helpompi ymmärtää. Todellisuudessa transaktiokulut jäävät kokonaan liikkeeseenlaskijan maksettaviksi.
Mitkä ovat Stonewall-tapahtuman tavoitteet?
Stonewall-rakenne lisää liiketoimiin valtavasti entropiaa, mikä hämärtää ketjuanalyysin rajoja. Ulkopuolelta katsottuna tällainen transaktio voitaisiin tulkita kahden ihmisen väliseksi minikolikkoliitoksi. Todellisuudessa kyseessä on kuitenkin maksu. Tämä menetelmä aiheuttaa siis epävarmuutta ketjuanalyysiin tai johtaa jopa vääriin johtolankoihin.
Otetaanpa esimerkki Alicesta leipuri Bobin luona. Lohkoketjussa tapahtuma näyttäisi seuraavalta:
Ulkopuolinen tarkkailija, joka luottaa tavalliseen ketjuanalyysin heuristiikkaan, saattaa virheellisesti päätellä, että "kaksi ihmistä on tehnyt pienen coinjoinin, jossa kummallakin on yksi UTXO sisääntulossa ja kaksi UTXO:ta ulostulossa". Tämän tapahtuman analysointi ulkopuolelta ei johda CIOH:n soveltamiseen, sillä kahden samansuuruisen tuotoksen olemassaolo viittaa coinjoin-malliin. Ulkopuolelta katsottuna CIOH:ta ei näin ollen voida soveltaa tähän erityistapaukseen.
Tämä tulkinta on epätarkka, sillä kuten tiedätte, yksi UTXO lähetettiin leipuri Bobille, kaksi UTXO-syöttöä tuli Alicelta, ja hän sai kolme vaihtotulosta.
Erityisen mielenkiintoista Stonewall-kaupan rakenteessa on se, että ulkopuolisen tarkkailijan näkökulmasta se muistuttaa kaikin tavoin Stonewall x2 -kauppaa.
Stonewall-tapahtuma x2
Stonewall x2 on toinen erityinen Bitcoin-tapahtuman muoto, jolla pyritään myös lisäämään käyttäjän luottamuksellisuutta kulutuksen yhteydessä, mutta tällä kertaa tekemällä yhteistyötä kolmannen henkilön kanssa, joka ei ole osallisena kyseisessä kulutuksessa. Tämä menetelmä toimii kuin kahden osallistujan välinen pseudo-coinliitäntä, ja samalla suoritetaan maksu kolmannelle henkilölle.
Stonewall x2 -tapahtuman toiminta on suhteellisen yksinkertaista: käytämme hallussamme olevaa UTXO:ta maksun suorittamiseen ja pyydämme apua kolmannelta osapuolelta, joka myös osallistuu maksuun omistamallaan UTXO:lla. Tapahtumasta saadaan neljä tulostetta: kaksi yhtä suurta, joista toinen on tarkoitettu maksun saajan osoitteeseen ja toinen yhteistyökumppanin osoitteeseen. Kolmas UTXO palautetaan toiseen yhteistyökumppanille kuuluvaan osoitteeseen, jolloin tämä voi saada takaisin alkuperäisen summan (mikä on hänelle neutraali toimenpide, kun otetaan huomioon louhintakustannukset), ja viimeinen UTXO palautetaan meille kuuluvaan osoitteeseen, joka muodostaa maksun vaihdon.
Stonewall x2 -tapahtumissa määritellään siis kolme erilaista roolia:
- Liikkeeseenlaskija, joka suorittaa varsinaisen maksun ;
- Vastaanottaja, joka ei välttämättä tiedä tapahtuman erityisluonnetta ja odottaa yksinkertaisesti maksua lähettäjältä;
- Yhteistyökumppani, joka asettaa bitcoineja saataville kyseenalaistaakseen transaktion analyysin ja saadakseen lopussa takaisin kaikki varansa (neutraali toiminta hänelle, modulo louhintakustannukset).
Palataanpa esimerkkiin Alicen kanssa, joka on leipuri Bobin luona ostamassa patonkia, joka maksaa 4 000 satsia. Hän haluaa maksaa bitcoineilla ja säilyttää samalla tietyn luottamuksellisuuden maksunsa suhteen. Niinpä hän kutsuu ystävänsä Charlesin, joka auttaa häntä tässä prosessissa.
Analysoimalla tätä liiketapahtumaa voimme nähdä, että leipuri Bob sai itse asiassa 4 000 satsia maksuna patongista. Alice käytti 10 000 satsia panoksena ja sai takaisin 6 000 satsia tuotoksena, eli nettosaldo oli -4 000 satsia, mikä vastaa patongin hintaa. Charles käytti 15 000 satsia panoksena ja sai kaksi tuotosta: 4 000 satsia ja 11 000 satsia, jolloin saldoksi tuli 0 satsia.
Tässä esimerkissä olen tarkoituksella jättänyt maksut pois, jotta se olisi helpompi ymmärtää. Todellisuudessa kaivosmaksut jaetaan yleensä tasan maksun antajan ja maksajan kesken.
Mitkä ovat Stonewall x2 -tapahtuman tavoitteet?
Kuten Stonewall-rakenne, myös Stonewall x2 -rakenne lisää paljon entropiaa transaktioon ja sekoittaa ketjuanalyysin. Ulkopuolelta katsottuna tällainen transaktio voidaan tulkita pieneksi kolikkoliitoksi kahden henkilön välillä. Todellisuudessa kyseessä on kuitenkin maksu. Tämä menetelmä aiheuttaa siis epävarmuutta ketjuanalyysissä tai johtaa jopa vääriin johtolankoihin.
Otetaan esimerkiksi Alice, leipuri Bob ja Charles. Lohkoketjussa tapahtuma näyttäisi seuraavalta:
Ulkopuolinen tarkkailija, joka luottaa tavalliseen ketjuanalyysin heuristiikkaan, saattaa virheellisesti päätellä, että "Alice ja Charles ovat suorittaneet pienen coinjoinin, jossa kummallakin on yksi UTXO tulossa ja kaksi UTXO:ta tulossa". Myöskään tämän tapahtuman analysointi ulkopuolelta ei johda ICOH:n soveltamiseen, sillä kahden samansuuruisen tuotoksen olemassaolo viittaa coinjoin-malliin. Ulkopuolisesta näkökulmasta katsottuna CIOH:ta ei siis voida soveltaa tähän erityistapaukseen.
Tämä tulkinta on virheellinen, koska kuten tiedätte, yksi UTXO on lähetetty leipuri Bobille, Alicella on vain yksi vaihtolähtö ja Charlesilla kaksi.
Stonewall x2 -kaupan rakenteessa on erityisen mielenkiintoista se, että ulkopuolisen tarkkailijan näkökulmasta se muistuttaa kaikin tavoin Stonewall-kaupan rakennetta.
Mitä eroa on Stonewallilla ja Stonewall x2:lla?
StonewallX2-tapahtuma toimii täsmälleen samoin kuin Stonewall-tapahtuma, paitsi että ensin mainittu on yhteistoiminnallinen, kun taas jälkimmäinen ei ole. Kuten olemme nähneet, StonewallX2-tapahtumaan osallistuu kolmas osapuoli (Charles), joka on maksun ulkopuolinen ja joka antaa bitcoinejaan saataville parantaakseen tapahtuman luottamuksellisuutta. Klassisessa Stonewall-tapahtumassa lähettäjä on yhteistyökumppanin roolissa.
Ulkoisesta näkökulmasta katsottuna tapahtumakaava on täsmälleen sama.
Se, että näillä kahdella transaktiorakenteella on täsmälleen sama kuvio, tarkoittaa, että vaikka ulkopuolinen tarkkailija onnistuisi tunnistamaan "Stonewall(x2)" -kuvion, hänellä ei ole kaikkea tietoa. Hän ei pysty määrittämään, kumpi kahdesta samansuuruisesta UTXO:sta vastaa maksua. Hän ei myöskään pysty päättelemään, ovatko nämä kaksi UTXO:ta, joissa on tuloja, peräisin kahdelta eri henkilöltä (Stonewall x2) vai kuuluvatko ne yhdelle henkilölle, joka on yhdistänyt ne (Stonewall).
Viimeksi mainittu seikka johtuu siitä, että Stonewall x2 -tapahtumat noudattavat täsmälleen samaa kaavaa kuin Stonewall-tapahtumat. Ulkopuolelta katsottuna ja ilman lisätietoja on mahdotonta erottaa Stonewall-tapahtumaa Stonewall x2 -tapahtumasta. Ensin mainitut eivät ole yhteistyöhön perustuvia liiketoimia, kun taas jälkimmäiset ovat. Tämä lisää entisestään epäilyksiä yhden tällaisen liiketoimen analysointiin.
Milloin Stonewall- ja Stonewall x2 -tapahtumia tulisi käyttää?
Logiikan pitäisi olla seuraava, kun haluat käyttää salassapitovälinettä menoihin:
- Ensisijaisesti voimme valita maksullisen liittymän;
- Jos kauppias ei tue payjoineja, yhteistapahtuma voidaan tehdä toisen henkilön kanssa maksun ulkopuolella käyttämällä Stonewall x2 -rakennetta;
- Jos et löydä ketään, joka tekisi Stonewall x2 -tapahtuman, voit tehdä pelkän Stonewall-tapahtuman, joka jäljittelee Stonewall x2 -tapahtuman käyttäytymistä.
Miten käytän Stonewall- ja Stonewall x2 -tapahtumia?
Stonewall- ja Stonewall x2 -tapahtumat ovat käytettävissä sekä Samourai Wallet -sovelluksessa että Sparrow Wallet -ohjelmistossa.
Samourain perustajien pidättämisen jälkeen Stonewall x2 -tapahtumat toimivat kuitenkin payjoinsin tapaan vain vaihtamalla PSBT-tunnukset manuaalisesti osapuolten välillä. Automaattinen vaihto Sorobanin kautta ei valitettavasti ole enää käytettävissä.
Tämäntyyppinen transaktio on mahdollista suorittaa myös manuaalisesti millä tahansa Bitcoin-lompakko-ohjelmistolla.
Seuraavassa luvussa tarkastelemme toista salassapitotekniikkaa, joka on suhteellisen tuntematon, mutta joka on erittäin hyödyllinen täydentämään sitä, mitä olemme jo opiskelleet.
https://planb.network/tutorials/privacy/on-chain/stonewall-033daa45-d42c-40e1-9511-cea89751c3d4
https://planb.network/tutorials/privacy/on-chain/stonewall-x2-05120280-f6f9-4e14-9fb8-c9e603f73e5b
Kimmokkeet
Yksityisyyden suojan kannalta on erityisen hyödyllistä käyttää Bitcoin-tapahtumarakenteita, jotka lisäävät ketjuanalyysin epäselvyyttä, kuten coinjoin. Kuten käsittelimme payjoineja koskevassa luvussa, coinjoin-transaktiot ovat kuitenkin luonnollisesti tunnistettavissa ketjussa. Muistakaa salaus- ja coinjoin-transaktioiden välinen analogia: kun tiedosto on salattu, kolmas osapuoli, joka löytää salatun tiedoston, ei pääse käsiksi sen sisältöön, mutta voi selvästi tunnistaa, että tiedostoa on muutettu sen sisällön salaamiseksi. Sama pätee coinjoiniin: kun analyytikko tutkii coinjoin-transaktiota, vaikka hän ei pysty osoittamaan suoria yhteyksiä syötteiden ja tuotosten välillä (ja päinvastoin), hän voi kuitenkin tunnistaa, että havaittu transaktio on coinjoin.
Riippuen siitä, miten aiot käyttää osaasi liitosjaksojen jälkeen, se, että se on käynyt läpi tämän prosessin, voi olla ongelmallista. Jos esimerkiksi aiot myydä kolikkosi säännellyllä vaihtoalustalla, mutta se on hiljattain käynyt läpi coinjoinin, alustan ketjuanalyysityökalu havaitsee tämän. Alusta voi tällöin kieltäytyä hyväksymästä coinjointtia UTXO:ta tai jopa vaatia sinulta selitystä, jolloin vaarana on, että tilisi keskeytetään tai varasi jäädytetään. Joissain tapauksissa alusta voi myös ilmoittaa käyttäytymisestäsi valtion viranomaisille (näin esimerkiksi TRACFIN vaatii PSAN:ia Ranskassa).
Tämän välttämiseksi tarvitsemme työkalun, joka pystyy häivyttämään Bitcoin-kolikon menneisyyden jäljet, jotta voimme palauttaa jonkinlaisen vaihdettavuuden. Juuri tämä on ricochetin tarkoitus.
Mikä on kimpoaminen?
Rikoketju on tekniikka, joka koostuu useiden fiktiivisten transaktioiden suorittamisesta itseensä nähden (sweep), jotta voidaan simuloida bitcoinin omistusoikeuden siirtoa. Tämä työkalu eroaa muista käsittelemistämme transaktiorakenteista siinä, että sillä ei saavuteta prospektiivista anonymiteettiä, vaan pikemminkin eräänlainen retrospektiivinen anonymiteetti. Itse asiassa ricochet hämärtää ne erityispiirteet, jotka voivat vaarantaa Bitcoin-kolikon vaihdettavuuden sen menneisyyden vuoksi.
Tasoittaakseen kolikkoon aiemmin tapahtuneen tapahtuman jättämää jälkeä, kuten kolikoiden liittymissykliä, ricochet suorittaa neljä peräkkäistä tapahtumaa, joissa käyttäjä siirtää varoja itselleen eri osoitteisiin.
Tämän tapahtumasarjan jälkeen ricochet-työkalu ohjaa bitcoinit lopulta lopulliseen määränpäähänsä, esimerkiksi vaihtopalveluun.
Tarkoituksena on luoda etäisyyttä kolikon vaihdettavuuteen, kuten kolikkojohdannaistapahtumassa, ja lopulliseen kulutukseen, jossa kolikko saatetaan hylätä sen menneisyyden vuoksi. Näin ollen ketjuanalyysityökalut voisivat päätellä, että tapahtuman jälkeen on todennäköisesti tapahtunut omistajanvaihdos, ja pitää tätä kolikkoa siedettävänä. Lohkoketjuanalyysityökalut voisivat tällöin olettaa, että kyseessä ei ollut sama henkilö, joka lähetti bitcoinit ja suoritti coinjoinin, ja että lähettäjää vastaan ei näin ollen kannata ryhtyä toimenpiteisiin.
Miksi se toimii?
Tämän kimallusmenetelmän kohdalla voisi kuvitella, että ketjuanalyysiohjelmisto syventäisi tarkasteluaan neljän pompun jälkeen. Näillä alustoilla on kuitenkin ongelma havaintokynnyksen optimoinnissa. Niiden on asetettava raja sille hyppyjen määrälle, jonka jälkeen ne hyväksyvät, että ominaisuusmuutos on todennäköisesti tapahtunut ja että yhteys aiempaan tapahtumaan (kuten coinjoiniin) olisi jätettävä huomiotta.
Tämän kynnysarvon asettaminen on kuitenkin riskialtista: jokainen havaittujen hyppyjen määrän kasvu lisää eksponentiaalisesti väärien positiivisten tulosten määrää, toisin sanoen henkilöitä, jotka on virheellisesti merkitty tapahtumaan osallistuneiksi, vaikka todellisuudessa operaation suoritti joku muu. Tämä skenaario on suuri riski näille yrityksille, sillä väärät positiiviset tulokset johtavat tyytymättömyyteen, joka voi ajaa asianomaiset asiakkaat kilpailemaan. Pitkällä aikavälillä liian korkea havaitsemiskynnys johtaa siihen, että foorumi menettää enemmän asiakkaita kuin sen kilpailijat, mikä voi uhata sen elinkelpoisuutta. Siksi näiden alustojen on hankalaa lisätä havaittujen hyppyjen määrää, ja 4 on usein riittävä määrä niiden analyysien vastapainoksi.
Tässä havaittu ilmiö vastaa jossain määrin kuuden erotusasteen teoriaa.
Kuuden eriytymisasteen teorian mukaan jokainen ihminen maapallolla on yhteydessä toisiinsa korkeintaan kuuden välikäden muodostaman ihmissuhdeketjun kautta. Näin ollen riittäisi, että kulkisi kuuden ihmisen kautta, joista jokainen tuntee henkilökohtaisesti toisensa, saavuttaakseen minkä tahansa yksilön maailmassa.
Bitcoin-tapahtumissa on havaittavissa samanlainen ilmiö. Kun jäljitämme riittävän määrän Bitcoin-tapahtumia, törmäämme väistämättä coinjoiniin. Ricochet-menetelmässä hyödynnetään tätä periaatetta käyttämällä suurempaa hyppyjen määrää kuin mitä vaihtofoorumit pystyvät kohtuudella jäljittämään. Jos alustat päättävät jäljittää enemmän transaktioita, on mahdollista yksinkertaisesti lisätä ylimääräinen hyppy tämän toimenpiteen kiertämiseksi.
Milloin ja miten käyttää ricochetia?
Yleisin käyttötapaus ricochetille on silloin, kun on tarpeen salata aiempi osallistuminen omistamasi UTXO:n coinjoiniin. Ihannetapauksessa on parasta välttää coinjoinin läpikäyneiden bitcoinien siirtämistä säännellyille yhteisöille. Jos sinulla ei kuitenkaan ole muuta vaihtoehtoa, erityisesti jos sinulla on kiireellinen tarve realisoida bitcoineja valtion valuutassa, ricochet tarjoaa tehokkaan ratkaisun.
Menetelmä on tehokas ei ainoastaan rinnakkaisliitoksissa vaan myös kaikissa muissa merkinnöissä, jotka voivat vaarantaa osan korvattavuuden.
Idea tästä ricochet-menetelmästä tuli alun perin Samourai Wallet -tiimiltä, jotka integroivat sen sovellukseensa prosessin automatisoimiseksi. Palvelu ei ole ilmainen Samourailla, sillä ricochetista peritään 100 000 satsin palvelumaksu sekä louhintakustannukset. Sen käyttöä suositellaan siksi merkittävien summien siirroissa.
Samurai-sovellus tarjoaa kaksi ricochet-vaihtoehtoa:
- Vahvistettu ricochet eli "porrastettu toimitus", jonka etuna on Samurai-palvelumaksun jakautuminen viidelle peräkkäiselle maksutapahtumalle. Tällä vaihtoehdolla varmistetaan myös, että jokainen transaktio lähetetään erillisenä ajankohtana ja kirjataan eri lohkoon, mikä jäljittelee mahdollisimman hyvin omistajanvaihdoksen käyttäytymistä. Vaikka tämä menetelmä on hitaampi, se on suositeltavampi niille, joilla ei ole kiire, sillä se maksimoi ricochetin tehokkuuden vahvistamalla sen vastustuskykyä ketjuanalyysille;
- Klassinen ricochet, joka on suunniteltu suorittamaan operaatio nopeasti ja lähettämään kaikki tapahtumat lyhennetyssä ajassa. Tämä menetelmä tarjoaa siis vähemmän luottamuksellisuutta ja vähemmän vastustuskykyä analyysille kuin vahvistettu menetelmä. Sitä tulisi käyttää vain kiireellisiin lähetyksiin.
Ricocheting tarkoittaa yksinkertaisesti bitcoinien lähettämistä itsellesi. On täysin mahdollista lähettää bitcoineja manuaalisesti millä tahansa lompakko-ohjelmistolla ilman erikoistyökalua. Sinun tarvitsee vain siirtää sama kolikko peräkkäin itsellesi käyttämällä joka kerta uutta, tyhjää osoitetta.
Seuraavassa luvussa tarkastelemme erilaisia tekniikoita omistusoikeuden salaisiin siirtoihin. Nämä menetelmät eroavat radikaalisti tähän mennessä tarkastelemistamme menetelmistä sekä toiminnan että tulosten osalta.
https://planb.network/tutorials/privacy/on-chain/ricochet-e0bb1afe-becd-44a6-a940-88a463756589
Salaiset omistusoikeuden siirrot
Toinen Bitcoinin luottamuksellisuustekniikoista on omistuksen salainen siirto. Tällä menetelmällä pyritään siirtämään bitcoinien omistusoikeus yhdeltä henkilöltä toiselle ja päinvastoin ilman, että transaktio näkyy selvästi lohkoketjussa. Katsotaanpa erilaisia käytettävissä olevia tekniikoita sekä niiden etuja ja haittoja.
Kolikonvaihto
Coinwap perustuu suhteellisen yksinkertaiseen konseptiin: se käyttää älykkäitä sopimuksia helpottaakseen bitcoinien omistuksen siirtoa kahden käyttäjän välillä ilman luottamusta ja ilman, että tämä siirto näkyy selvästi lohkoketjussa.
Kuvitellaanpa naiivi esimerkki, jossa ovat Alice ja Bob. Alicella on 1 BTC,
joka on suojattu yksityisellä avaimella A, ja Bobilla on myös 1 BTC, joka on suojattu yksityisellä avaimella B. He voisivat teoriassa
vaihtaa yksityiset avaimensa ulkoisen viestintäkanavan kautta salaisen
siirron toteuttamiseksi.
Tämä naiivi menetelmä on kuitenkin suuri riski luottamuksen kannalta. Mikään
ei estä Alicea pitämästä kopiota A:n yksityisestä avaimesta vaihdon jälkeen ja käyttämästä sitä myöhemmin
bitcoinien varastamiseen, kun avain on Bobin hallussa.
Lisäksi ei ole mitään takeita siitä, ettei Alice saa Bobin yksityistä
avainta B eikä koskaan anna
vastineeksi omaa yksityistä avainta A. Tämä vaihto perustuu siis
osapuolten väliseen liialliseen luottamukseen, eikä se ole tehokas keino
varmistaa turvallista salaista omistusoikeuden siirtoa.
Näiden ongelmien ratkaisemiseksi ja sellaisten osapuolten välisen vaihdon mahdollistamiseksi, jotka eivät luota toisiinsa, käytämme sen sijaan älykkäitä sopimusjärjestelmiä. Älykäs sopimus on ohjelma, joka suoritetaan automaattisesti, kun ennalta määritellyt ehdot täyttyvät. Meidän tapauksessamme tämä varmistaa, että omaisuuden vaihto tapahtuu automaattisesti ilman keskinäistä luottamusta.
Tämä voidaan toteuttaa käyttämällä HTLC:tä (Hash Time-Locked Contracts) tai PTLC:tä (Point Time-Locked Contracts). Nämä kaksi protokollaa toimivat samalla tavalla käyttämällä aikalukitusjärjestelmää, joka varmistaa, että vaihto joko suoritetaan onnistuneesti tai peruutetaan kokonaan, mikä suojaa molempien osapuolten varojen koskemattomuutta. Suurin ero HTLC:n ja PTLC:n välillä on se, että HTLC käyttää hasheja ja esikuvia transaktion suojaamiseen, kun taas PTLC käyttää Adaptor Signatures -signaatiota.
Kolikonvaihtoskenaariossa, jossa käytetään HTLC- tai PTLC-menetelmää Alicen ja Bobin välillä, vaihto tapahtuu turvallisesti: joko se onnistuu ja kumpikin saa toisen BTC:n, tai se epäonnistuu ja kumpikin pitää oman BTC:nsä. Näin kumpikaan osapuoli ei voi huijata tai varastaa toisen BTC:tä.
HTLC on myös mekanismi, jota käytetään maksujen turvalliseen reitittämiseen Lightning Networkin kaksisuuntaisten kanavien kautta Adaptor-allekirjoitusten käyttö on erityisen mielenkiintoista tässä yhteydessä, koska sen avulla voidaan luopua perinteisistä skripteistä (mekanismia kutsutaan joskus "skriptittömiksi skripteiksi"). Tämä ominaisuus vähentää vaihtoon liittyviä kustannuksia. Adaptor-allekirjoitusten toinen merkittävä etu on se, että ne eivät edellytä yhteisen hash-tunnisteen käyttöä molemmille transaktion osapuolille, jolloin niiden välistä suoraa yhteyttä ei tarvitse paljastaa tietyntyyppisissä vaihdoissa.
Sovittimen allekirjoitukset
Adaptiiviset allekirjoitukset ovat salausmenetelmä, jossa voimassa oleva allekirjoitus yhdistetään salaisen tiedon paljastamiseksi ylimääräiseen allekirjoitukseen, jota kutsutaan "adaptiiviseksi allekirjoitukseksi". Tämä mekanismi on suunniteltu siten, että kun tiedetään kaksi seuraavista kolmesta elementistä: voimassa oleva allekirjoitus, sovitinallekirjoitus ja salainen tieto, voidaan päätellä puuttuva kolmas elementti.
Kolikonvaihdossa Adaptor-allekirjoitusten käyttö mahdollistaa kahden arkaluonteisen tiedon samanaikaisen paljastamisen osallistujien välillä, jolloin keskinäistä luottamusta ei tarvita. Havainnollistetaan tätä prosessia esimerkillä, jossa Alice ja Bob haluavat vaihtaa kumpikin 1 BTC:n, mutta eivät luota toisiinsa. He käyttävät Adaptor-allekirjoituksia poistaakseen tarpeen luottaa toisiinsa tässä vaihdossa. Näin he tekevät sen:
- Alice aloittaa vaihdon luomalla
m_A-tapahtuman, joka lähettää 1 BTC Bobille. Hän luo allekirjoituksens_A, joka vahvistaa tämän tapahtuman, käyttäen yksityistä avaintap_A(P_A = p_A \cdot G), noncen_A(N_A = n_A \cdot G) ja salaisuuttat(T = t \cdot G) :
$$s_A = n_A + t + H(N_A + T \paralleli P_A \paralleli m_A) \cdot p_A$$$
- Alice laskee sovittimen allekirjoituksen
s_A'vähentämällä salaisuudentsen todellisesta allekirjoituksestas_A:
$$s_A' = s_A - t$$$
- Alice lähettää Bobille allekirjoitussovittimensa
s'_A, allekirjoittamattoman tapahtumanm_A, salaisuutta vastaavan pisteen (T) ja noncea vastaavan pisteen (N_A). Nämä elementit muodostavat niin sanotun "sovittimen". On tärkeää huomata, että pelkästään näiden tietojen avulla Bob ei voi palauttaa Alicen BTC:tä. - Bob voi kuitenkin tarkistaa, ettei Alice yritä varastaa häneltä. Tätä
varten hän tarkistaa, vastaako Alicen sovittimen allekirjoitus
s_A'todella ehdotettua transaktiotam_A. Jos seuraava yhtälö on oikein, hän voi olla varma, että Alicen allekirjoitussovitin on pätevä:
$$s_A' \cdot G = N_A + H(N_A + T \paralleeli P_A \paralleeli m_A) \cdot P_A$$$
- Tämä todentaminen antaa Bobille riittävät takeet siitä, että hän voi
jatkaa vaihtoa täysin luotettavasti. Tämän jälkeen hän luo oman tapahtuman
m_B, jonka tarkoituksena on lähettää 1 BTC Alicelle, ja luo sovittimensa allekirjoituksens_B', joka myös liittyy samaan salaisuuteent. Tässä vaiheessa vain Alice tietäät:n arvon; Bob tietää vain vastaavan kohdanT, jonka Alice on lähettänyt hänelle:
$$s_B' = n_B + H(N_B + T \paralleeli P_B \paralleeli m_B) \cdot p_B$$$
- Bob lähettää Alicelle sovittimensa allekirjoituksen
s_B', allekirjoittamattoman tapahtumanm_Bsekä salaisuutta vastaavan pisteen (T) ja noncea vastaavan pisteen (N_B). Liisa, joka tietää salaisuudent, voi nyt yhdistää Bobin sovittajan allekirjoituksens_B'tähän salaisuuteen luodakseen pätevän allekirjoituksens_Btransaktiollem_B, jolla Bobin BTC siirretään hänelle:
$$s_B = s_B' + t$$$
(s_B' + t) \cdot G = N_B + T + H(N_B + T \paralleeli P_B \paralleeli m_B)
\cdot P_B
- Alice lähettää tämän allekirjoitetun
m_B-tapahtuman Bitcoin-lohkoketjussa saadakseen Bobin lupaamat BTC:t. Kun Bob näkee tämän transaktion lohkoketjussa, hän voi poimia allekirjoituksens_B = s_B' + t. Tämän tiedon avulla Bob pystyy sitten eristämään tarvitsemansa kuuluisan salaisuudent:
$$t = (s_B' + t) - s_B' = s_B - s_B'$$$
- Ja tämä salaisuus
toli ainoa puuttuva elementti, jonka avulla Bob pystyi luomaan kelvollisen allekirjoituksens_AAlicen sovitinallekirjoituksestas_A'. Tämä allekirjoitus validoim_A-tapahtuman, joka lähettää BTC:n Alicelta Bobille. Tämän jälkeen Bob laskees_A:n ja lähettääm_A-tapahtuman lohkoketjuun:
$$s_A = s_A' + t$$$
$$$(s_A' + t) \cdot G = N_A + T + H(N_A + T \paralleeli P_A \paralleeli m_A) \cdot P_A$$
Kerrataanpa lyhyesti, miten Adaptor Signature toimii kolikonvaihdossa. Aluksi Alice lähettää Bobille allekirjoittamattoman transaktion, jonka mukana on adapteri, jonka avulla Bob voi varmistaa, että myöhemmin paljastettu salaisuus antaa hänelle pääsyn bitcoineihin. Vastineeksi Bob lähettää Alicelle oman allekirjoittamattoman transaktionsa ja sovittimen. Tämän jälkeen Alice voi viimeistellä Bobin transaktion ja hakea bitcoinit lähettämällä pätevän transaktion salaisuuden ansiosta. Kun tämä transaktio julkaistaan lohkoketjussa, Bobilla on mahdollisuus purkaa salaisuus ja siten avata Alicen transaktio. Näin ollen, jos Alice aloittaa Bobin bitcoinien siirron, Bob voi vuorostaan käyttää Alicen bitcoineja ilman keskinäistä luottamusta.
Huomaa, että kolikonvaihtoa ehdotti ensimmäisen kerran Gregory Maxwell lokakuussa 2013 BitcoinTalkissa.
Atomivaihto
Samalla tavalla kuin coinswap ja käyttämällä samantyyppisiä älykkäitä sopimuksia on myös mahdollista tehdä atomivaihtoja. Atomic swap mahdollistaa eri kryptovaluuttojen, kuten BTC:n ja XMR:n, suoran vaihdon kahden käyttäjän välillä ilman luottamusta tai välittäjän väliintuloa. Näitä vaihtoja kutsutaan "atomisiksi", koska niillä on vain kaksi mahdollista lopputulosta: joko vaihto onnistuu ja molemmat osapuolet ovat tyytyväisiä tai se epäonnistuu ja kumpikin säilyttää alkuperäiset kryptovaluuttansa, jolloin ei tarvitse luottaa toiseen osapuoleen.
Atomic swap- ja coinswap-toiminnoilla on samanlainen toimintatapa, ja ne tarjoavat samat edut ja haitat luottamuksellisuuden kannalta. Bitcoinin näkökulmasta atomivaihto on verrattavissa kahdessa vaiheessa toteutettavaan kolikonvaihtoon. Ensin vaihdamme BTC:n toiseen kryptovaluuttaan, minkä jälkeen tämä kryptovaluutta voidaan vaihtaa toiseen BTC:hen. Lopuksi saamme takaisin toisen käyttäjän BTC:n. Tämän vuoksi luokittelen nämä kaksi protokollaa luottamuksellisuuskysymyksiä analysoidessani omaan salaisten vaihtojen luokkaan.
Varo kuitenkin, että toisin kuin coinswapissa, atomic swapissa voi olla epätasapainoa käytettävissä olevan likviditeetin suhteen, erityisesti BTC/XMR-pörsseissä. Bitcoineja on yleensä helpompi vaihtaa altcoineihin, koska bitcoineilla on kova kysyntä, mikä pitää preemiot alhaisina tässä muuntosuunnassa. Altcoinien vaihtaminen BTC:ksi voi kuitenkin olla monimutkaisempaa pienemmän kysynnän vuoksi, mikä johtaa usein hyvin korkeisiin palkkioihin.
Kun atomivaihtoon osallistuu ketjussa olevia bitcoineja ja Lightning-verkossa olevia bitcoineja, puhutaan "vedenalaisesta vaihdosta".
Onko siitä todella hyötyä?
Salaiset omistusoikeuden siirrot, kuten kolikoiden ja atomien vaihdot, voivat huijata ketjuanalyysin heuristiikkaa. Nämä menetelmät voivat antaa ymmärtää, että transaktioissa on mukana sama käyttäjä, vaikka todellinen omistus on vaihtanut omistajaa. Näiden menetelmien suurin haittapuoli on kuitenkin se, että ne ovat hyvin riskialttiita ilman lisätekniikkaa kolikon historian rikkomiseen.
Kun Alice suorittaa kolikonvaihdon tai atomivaihdon Bobin kanssa, hän
vaihtaa bitcoininsa Bobin bitcoineihin. Atomivaihdon tapauksessa vaihtoon
sisältyy altcoin, mutta periaate on sama. Näin ollen Alice saa haltuunsa B-kolikon ja Bob A-kolikon.
Tämä lisää ketjuanalyysin epäilyttävyyttä, mutta kolikoiden historia pysyy
jäljitettävissä. Jos analyytikko tutkii A-osaa, hän voi jäljittää
Alicen aiemmat toimet ja päinvastoin B-osan osalta.
Alicen näkökulmasta riski on, että tietyt tahot voivat pitää B-kolikon historiaa epäilyttävänä. Jos esimerkiksi Bob olisi hankkinut B-kolikon rikollisella
teolla, kuten hakkeroinnilla, kolikko jäisi kytköksissä hänen laittomaan
toimintaansa. Alice saattaisi tällöin saada haltuunsa kolikon, jota hän ei
voisi siirtää säänneltyihin vaihtoportaisiin ilman, että hänen varansa
jäädytettäisiin, tai häntä voitaisiin jopa syyttää Bobin rikoksista, vaikka
hänellä ei olisi mitään tekemistä niiden kanssa.
Rikolliset, joiden varoja viranomaiset valvovat, suosivat väistämättä salassapitomenetelmiä, kuten kolikonvaihtoa tai atomivaihtoa. Näiden protokollien avulla he voivat luopua valvotuista bitcoineistaan ja vaihtaa ne täysin vaihdettavissa oleviin bitcoineihin. Sen avulla he voivat myös harhauttaa heitä ohjaamalla viranomaiset muiden käyttäjien suuntaan. Näillä ihmisillä on siis kaksinkertainen tarkoitus.
Coinjoinin avulla kolikkosi historia katkeaa, vaikka kolikkosi sekoittuisi valvottuihin bitcoineihin, mikä tarjoaa uskottavan kiistettävyyden, jota ei ole olemassa salaisissa omistuksensiirtoprotokollissa, kuten coinswapissa tai atomic swapissa.
Jos Alice haluaa välttää riskin, hänen on välttämättä käytettävä menetelmää,
jolla hän voi rikkoa B-kolikon historian, esimerkiksi kuljettamalla sen kolikkoliitosten kautta.
Tämä herättää kysymyksen omistusoikeuden salaisen siirron ja kolikkojohdon
yhdistämisen hyödyllisyydestä. Kolikkoliitos, joka rikkoo kolikon historian,
tarjoaa jo riittävän luottamuksellisuuden tason Alicelle. Näin ollen olen
sitä mieltä, että jos Alice haluaa suojella yksityisyyttään, olisi
järkevämpää siirtyä suoraan kolikkojohtamiseen kuin tehdä kolikonvaihto ja
sen jälkeen kolikkojohtaminen.
Jotta salaiset omistusoikeuden siirtomenetelmät olisivat todella tehokkaita
ja jotta vältettäisiin riski yhdistää A-käyttäjän historia B-käyttäjään, olisi
paradoksaalisesti välttämätöntä, että niiden käyttö olisi laajalti tiedossa.
Jos kolikonvaihtoa käytetään laajalti ja viranomaiset ovat tietoisia tästä
yleisestä käytännöstä, voitaisiin luoda uskottava kieltämisen muoto. Niin
kauan kuin näiden siirtojen käyttö pysyy kuitenkin marginaalisena, uskon,
että nämä menetelmät pysyvät liian riskialttiina käyttäjille.
Tähän mennessä olemme tutkineet luottamuksellisuusmenetelmiä lähinnä itse tapahtumien tasolla. Seuraavassa luvussa tarkastelemme verkkotasolla ja transaktioiden levittämisessä esiintyviä ongelmia.
Yksityisyys P2P-verkossa
Osassa 4 käsiteltiin, miten tärkeää on käyttää täydellistä solmua tapahtumien luottamuksellisuuden suojaamiseksi. On kuitenkin tärkeää ymmärtää, että solmupisteesi voi itse joutua hyökkäysten kohteeksi, joilla pyritään saamaan tietoja toiminnoistasi. Siksi tässä luvussa tarkastelemme erilaisia toimenpiteitä, joita voit toteuttaa yksityisyytesi suojaamiseksi, ei itse transaktioiden tai bitcoin-virtojen tasolla vaan verkon tasolla.
Voikukka
Yksi tapa välttää erilaiset nimettömyyshyökkäykset on käyttää Dandelion-ehdotusta. Tämä lähetysprotokolla virallistettiin BIP156:ssa, mutta sitä ei ole koskaan toteutettu Bitcoinissa.
Dandelionin ideana on parantaa transaktioiden reitityksen luottamuksellisuutta Bitcoin-verkossa erilaisten hyökkäysten torjumiseksi. Sen päätavoitteena on piilottaa lähdesolmu, joka alun perin lähetti transaktion verkkoon. Tämän solmun paljastaminen voisi mahdollistaa Bitcoin-tapahtuman yhdistämisen tiettyyn IP-osoitteeseen (jos solmu toimii clearnetissä), mikä voisi tarjota pääsyn ketjuanalyysiin.
Tämä yhteys Bitcoin-aktiviteetin ja IP-osoitteen välillä muodostaa huomattavan riskin käyttäjien luottamuksellisuudelle. Monet tahot pystyvät helposti yhdistämään IP-osoitteen henkilöllisyyteen. Näihin kuuluvat hallitukset ja Internet-palveluntarjoajat. Lisäksi nämä tiedot voivat tulla julkisesti saataville, esimerkiksi jos IP-osoite ja henkilötiedot vuotavat, kun verkkosivuston tietokantaan murtaudutaan.
Klassisessa Bitcoin-toiminnassa käyttäjän lompakko-ohjelmistoonsa rakentamat transaktiot siirretään hänen henkilökohtaiseen solmuunsa.
Kun transaktio on validoitu, kukin vertaisryhmä puolestaan välittää sen eteenpäin vertaisryhmilleen ja niin edelleen.
Lohkoon integroitumista odottavien transaktioiden jakautuminen on melko tasapainoinen ja tilastollisesti ennustettavissa. Tätä heikkoutta voivat käyttää hyväkseen vakoilusolmut, jotka tekevät yhteistyötä verkon valvomiseksi ja analysoimiseksi ja jotka voivat tunnistaa ensimmäisenä transaktion lähettäneen solmun. Jos tarkkailija onnistuu paikallistamaan lähdesolmun, hän voi olettaa, että transaktio on peräisin kyseisen solmun operaattorilta. Tämäntyyppisen havainnoinnin avulla voidaan yhdistää normaalisti anonyymit transaktiot tiettyihin IP-osoitteisiin.
BIP156:n tavoitteena on puuttua tähän ongelmaan. Tätä varten siinä otetaan käyttöön uuden transaktion levittämisessä lisävaihe, jossa säilytetään anonymiteetti ennen sen levittämistä laajalle yleisölle. Dandelionissa käytetään ensin "varsi"-vaihetta, jossa transaktio lähetetään satunnaisen solmupolun kautta.
Tämän jälkeen tapahtuma lähetetään koko verkkoon "Fluff"-vaiheessa.
Varsi ja "Fluff"-vaihe viittaavat tapahtuman leviämiskäyttäytymiseen verkossa, joka muistuttaa voikukan (englanniksi "Dandelion") muotoa ja kehitystä.
Vakoilunoodit voivat siten mahdollisesti jäljittää tapahtuman siihen noodin, joka aloitti "Fluff"-vaiheen (massalähetyksen), mutta kyseinen noodi ei ole se, joka alun perin lähetti tapahtuman, koska se vastaanotti sen varren viimeiseltä noodilta. Jos vakoilunoodit eivät pysty jäljittämään vartta, ne eivät voi myöskään tunnistaa lähdenoodia.
Vaikka vakoilusolmuja olisi läsnä kantavaiheessa, epäilys säilyy aina, sillä heti kun ne kohtaavat rehellisen solmun diffuusiograafissa, vakoilijat eivät voi päätellä, onko tämä solmu alkuperäinen lähde vai pelkkä välikäsi.
Tämä reititysmenetelmä hämärtää lähdesolmuun johtavaa jälkeä, jolloin on vaikea jäljittää tapahtumaa verkon kautta sen alkuperään. Dandelion parantaa siten luottamuksellisuutta rajoittamalla vastustajien mahdollisuuksia purkaa verkon anonymiteetti. Menetelmä on sitäkin tehokkaampi, kun tapahtuma kulkee "stemming"-vaiheessa solmun kautta, joka salaa verkkoviestintänsä, kuten Tor tai P2P Transport V2.
BIP156:ta ei ole integroitu Bitcoin Coreen, ja se on tällä hetkellä luokiteltu "hylätyksi". Yksi tämän protokollan suurimmista huolenaiheista on se, että varsi-vaiheessa transaktiot on välitettävä välityssolmujen kautta ennen niiden todentamista. Kuten olemme nähneet, tavallisessa Bitcoin-mallissa jokainen solmu tarkistaa ensin transaktion ennen kuin se lähettää sen vertaisilleen. Jos transaktio ei ole solmun konsensussääntöjen tai paikallisten standardointisääntöjen mukainen, solmu jättää sen huomiotta eikä levitä sitä. Tämä prosessi on tärkeä DoS-hyökkäysten torjumiseksi, sillä vain kelvolliset transaktiot lähetetään koko verkkoon. Virheelliset transaktiot, jotka mahdollisesti syntyvät joukoittain verkon ylikuormittamiseksi, pysäytetään ensimmäiseen kohdattavaan solmuun, eikä niitä levitetä. Dandelionin suurin riski on se, että tämä uusi protokolla voi luoda uusia DoS-hyökkäysten vektoreita sallimalla virheellisten transaktioiden lähettämisen osalle verkkoa.
P2P-liikenne V2
P2P-siirto V2 on toinen BIP324:ssä esitelty verkkoprotokolla. Se on uusi versio Bitcoinin P2P-kuljetusprotokollasta, joka sisältää opportunistisen salauksen solmujen välisen viestinnän luottamuksellisuuden ja turvallisuuden parantamiseksi.
Tämän parannuksen tarkoituksena on ratkaista useita P2P-protokollan perusversion ongelmia. Toisaalta se tekee vaihdettavasta datasta passiivisen tarkkailijan kannalta erottamattoman muunlaisesta Internetissä liikkuvasta datasta. Päätavoitteena on estää hallituksia, Internet-palveluntarjoajia ja VPN-palveluntarjoajia tarkkailemasta laajamittaisesti Bitcoin-käyttäjiä. Näin näiden tahojen on myös vaikeampi määrittää, onko Internetin käyttäjä myös Bitcoinin käyttäjä eli käyttääkö hän kokonaista solmua.
P2P V2 auttaa myös vähentämään sensuurin ja hyökkäysten riskiä havaitsemalla tietopakettien tietyt mallit. Se vaikeuttaa ja tekee kalliimmaksi erityyppisten Sybil-hyökkäysten toteuttamisen verkkotasolla. Sybil-hyökkäys tapahtuu, kun toimija luo useita vääriä henkilöllisyyksiä saadakseen epäreilua etua. Bitcoin-verkossa tämä ilmenee usein siten, että toimija hallitsee suurta määrää kokonaisia solmuja ja käyttää niitä aggressiivisesti yhteyksien moninkertaistamiseen. Sybil-hyökkäykset voivat olla passiivisia, joilla kerätään tietoja ja vaarannetaan käyttäjien luottamuksellisuus, tai aktiivisia, kuten Eclipse-hyökkäykset. Jälkimmäiset eristävät tietyn solmun muusta verkosta ja joko sensuroivat käyttäjän tai muuttavat sen vastaanottamaa tietoa. P2P V2 tekee myös Man-In-The-Middle (MITM) -hyökkäyksistä kalliimpia ja helpommin havaittavia.
P2P V2:n toteuttamaan salaukseen ei sisälly todennusta, jotta se ei lisäisi tarpeetonta monimutkaisuutta tai vaarantaisi sitä, että yhteys verkkoon pysyy luvatta. Tämä uusi P2P-siirtoprotokolla tarjoaa kuitenkin paremman suojan passiivisia hyökkäyksiä vastaan ja tekee aktiivisista hyökkäyksistä huomattavasti kalliimpia ja helpommin havaittavia. Koska verkkoviesteissä käytetään pseudosattumanvaraista tietovirtaa, hyökkääjien on vaikeampi sensuroida tai manipuloida viestintää.
P2P V2 -kuljetus sisällytettiin vaihtoehtona (oletusarvoisesti pois
käytöstä) Bitcoin Core -versioon 26.0, joka otettiin käyttöön joulukuussa
2023. Sen jälkeen se otettiin oletusarvoisesti käyttöön huhtikuussa 2024
julkaistussa versiossa 27.0. Sitä voidaan muuttaa konfiguraatiotiedoston v2transport=-optiolla.
Tor
Toinen yksinkertainen ratkaisu välttää verkon solmun luottamuksellisuuden menettämisen riski on käyttää sitä kokonaan Torin alla.
Tor on relepalvelimien (solmujen) verkosto, joka anonymisoi TCP-yhteyksien alkuperän Internetissä. Se toimii kapseloimalla tiedot useisiin salauskerroksiin. Jokainen välityssolmu poistaa kerroksen paljastaakseen seuraavan solmun osoitteen, kunnes lopullinen määränpää on saavutettu. Tor-verkko varmistaa anonymiteetin estämällä välityssolmuja tietämästä sekä tiedon alkuperää että määränpäätä, jolloin tarkkailijan on hyvin vaikea jäljittää käyttäjän toimintaa.
Tor ei ainoastaan salaa tietoja, vaan myös peittää viestinnän alkuperän ja määränpään. Käyttämällä Toria henkilökohtaisesta solmusta lähtevään viestintään vahvistat tapahtumien luottamuksellisuutta: Internet-palveluntarjoajasi ei voi purkaa viestintää, eivätkä Bitcoin-verkon muut solmut voi tunnistaa lähdesolmun IP-osoitetta. Lisäksi Tor myös piilottaa Bitcoinin käytön ISP:ltäsi.
Suurin riski tässä menetelmässä on se, että Tor on Bitcoinista riippumaton protokolla. Jos Bitcoin-solmu toimii Torin alla ja Tor lakkaa toimimasta, Bitcoin-solmusi ei pysty enää kommunikoimaan.
On myös tärkeää huomata, että viestintä Torissa on hitaampaa. Tämä viive on erityisen ärsyttävää solmun ensimmäisen käynnistyksen aikana, koska IBD (Initial Block Download) vaatii paljon viestintää. Tämän seurauksena ensimmäinen synkronointi Bitcoin-verkon kanssa voi kestää huomattavasti kauemmin Torin avulla. On myös mahdollista suorittaa IBD clearnetissä ja aktivoida Tor sitten toisena vaiheena. Vaikka tämä menetelmä paljastaa Bitcoin-solmusi olemassaolon Internet-palveluntarjoajallesi, se suojaa henkilökohtaiset transaktiotietosi, kun siirryt Toriin.
Tutustuttuasi erilaisiin verkkotason luottamuksellisuusmenetelmiin haluaisin seuraavissa luvuissa esitellä sinulle myös kaksi tyylikästä ratkaisua osoitteiden uudelleenkäytön välttämiseksi: BIP47 ja Silent Payments.
BIP47 ja uudelleenkäytettävät maksukoodit
Kuten osassa 3 nähtiin, osoitteiden uudelleenkäyttö on vakava este käyttäjien luottamuksellisuudelle Bitcoin-protokollassa. Näiden riskien vähentämiseksi on erittäin suositeltavaa luoda tyhjä vastaanottoosoite jokaista uutta lompakkoon vastaanotettua maksua varten. Vaikka uuden osoitteen luominen on nykyään yksinkertaisempaa nykyaikaisten ohjelmistojen ja hierarkkisten determinististen lompakoiden ansiosta, tämä käytäntö voi vaikuttaa intuition vastaiselta.
Esimerkiksi perinteisessä pankkijärjestelmässä olemme tottuneet jakamaan IBAN-tilinumeromme, joka pysyy aina samana. Kun olemme antaneet sen jollekin, hän voi lähettää meille useita maksuja ilman, että hänen tarvitsee olla kanssamme uudelleen tekemisissä. Neopankit tarjoavat myös nykyaikaisempia mahdollisuuksia, kuten yksilöllisten sähköpostiosoitteiden käyttö PayPalissa tai RevTags Revolutissa. Rahoitusalan ulkopuolellakin jokapäiväiset tunnisteemme, kuten postiosoitteemme, puhelinnumeromme ja sähköpostiosoitteemme, ovat myös ainutlaatuisia ja pysyviä. Meidän ei tarvitse uusia niitä jokaista uutta vuorovaikutusta varten.
Bitcoin toimii kuitenkin eri tavalla: jokaiselle saapuvalle transaktiolle on luotava uusi vastaanottava osoite. Tämä helppokäyttöisyyden ja luottamuksellisuuden välinen kompromissi juontaa juurensa Bitcoinin valkoisen kirjan alkulähteille. Satoshi Nakamoto varoitti tästä riskistä jo julkaisemalla asiakirjansa ensimmäisen version vuoden 2008 lopussa:
**Lisäpalomuurina voitaisiin käyttää uutta avainparia jokaiselle tapahtumalle, jotta ne eivät olisi sidoksissa yhteiseen omistajaan
On monia tapoja vastaanottaa useita maksuja yhdellä tunnisteella ilman, että osoitetta tarvitsee käyttää uudelleen. Jokaisella on omat kompromissinsa ja haittansa. Yksi näistä menetelmistä on Justus Ranvierin kehittämä ja vuonna 2015 julkaistu ehdotus BIP47 . Ehdotuksen tavoitteena on luoda uudelleenkäytettäviä maksutunnuksia, jotka mahdollistavat useiden maksutapahtumien suorittamisen samaa henkilöä vastaan ja välttävät samalla osoitteen uudelleenkäytön. Lyhyesti sanottuna BIP47:n tavoitteena on tarjota maksujärjestelmä, joka on yhtä intuitiivinen kuin yksilöllinen tunniste, mutta säilyttää samalla maksutapahtumien luottamuksellisuus.
BIP47 ei suoraan paranna käyttäjien luottamuksellisuutta, sillä BIP47-maksu tarjoaa saman luottamuksellisuustason kuin perinteinen Bitcoin-tapahtuma, jossa käytetään tyhjiä osoitteita. Se tekee kuitenkin Bitcoinin käytöstä helpompaa ja intuitiivisempaa, mikä normaalisti vaarantaisi luottamuksellisuuden. BIP47:n ansiosta tämä helppokäyttöisyys saavuttaa saman luottamuksellisuustason kuin klassinen transaktio. Siksi BIP47 on niin arvokas väline yksityisyyden säilyttämisessä.
Alun perin BIP47:ää ehdotettiin integroitavaksi Bitcoin Coreen, mutta sitä ei koskaan toteutettu. Jotkin ohjelmistosovellukset päättivät kuitenkin toteuttaa sen itse. Esimerkiksi Samourai Wallet -tiimit ovat kehittäneet oman BIP47-toteutuksensa nimeltä "PayNym".
BIP47:n ja PayNymin yleinen periaate
BIP47:n tavoitteena on mahdollistaa useiden maksujen vastaanottaminen ilman osoitteiden uudelleenkäyttöä. Se perustuu uudelleenkäytettävän maksukoodin käyttöön, jonka avulla eri myöntäjät voivat lähettää useita maksuja yhdelle toiselle käyttäjälle kuuluvalle koodille. Näin ollen vastaanottajan ei tarvitse antaa uutta, tyhjää osoitetta jokaista maksutapahtumaa varten, mikä helpottaa vaihtoa huomattavasti ja säilyttää samalla luottamuksellisuuden.
Käyttäjä voi näin ollen jakaa maksukoodinsa täysin vapaasti joko sosiaalisissa verkostoissa tai verkkosivuillaan vaarantamatta luottamuksellisuuttaan, toisin kuin perinteisen vastaanottajan osoitteen tai julkisen avaimen tapauksessa.
Tapahtuman toteuttamiseksi molemmat osapuolet tarvitsevat Bitcoin-lompakon, jossa on BIP47-toteutus, kuten PayNym Samurai Walletissa tai Sparrow Walletissa. Heidän maksukoodiensa yhteinen käyttö luo salaisen kanavan heidän välilleen. Jotta tämä kanava voidaan luoda tehokkaasti, liikkeeseenlaskijan on suoritettava Bitcoin-lohkoketjussa erityinen transaktio, jota kutsutaan "ilmoitustransaktioksi" (tästä lisää myöhemmin).
Kahden käyttäjän maksukoodien yhdistäminen tuottaa yhteisiä salaisuuksia, jotka puolestaan luovat suuren määrän yksilöllisiä Bitcoin-vastaanottoosoitteita (tasan 2^32 eli noin 4 miljardia). Näin BIP47:n kautta suoritettuja maksuja ei itse asiassa osoiteta itse maksukoodille, vaan pikemminkin klassisille vastaanotto-osoitteille, jotka on johdettu osallistuvien käyttäjien maksukoodeista.
Maksukoodi toimii siten virtuaalisena tunnisteena, joka on johdettu salkun siemenestä. Salkun hierarkkisessa johdannaisrakenteessa maksukoodi on tasolla 3 eli tilitasolla.
BIP47:n derivaatiokohde tunnistetaan indeksillä 47' (0x8000002F), joka viittaa BIP47:ään. Esimerkki uudelleenkäytettävän maksukoodin
johdannaispolusta olisi seuraava:
m/47'/0'/0'/
Jotta saisit käsityksen siitä, miltä maksukoodi näyttää, tässä on omani:
PM8TJSBiQmNQDwTogMAbyqJe2PE2kQXjtgh88MRTxsrnHC8zpEtJ8j7Aj628oUFk8X6P5rJ7P5qDudE4Hwq9JXSRzGcZJbdJAjM9oVQ1UKU5j2nr7VR5
Tämä koodi voidaan koodata myös QR-koodiksi, jotta viestiminen olisi helpompaa, aivan kuten perinteinen vastaanotto-osoite.
PayNym Bots -robotit, joita näkee toisinaan Twitterissä, ovat Samourai
Walletin luomia maksukoodin visuaalisia esityksiä. Ne luodaan käyttämällä
hash-funktiota, jolloin ne ovat lähes ainutlaatuisia. Ne ovat muodoltaan
pieni merkkijono, joka alkaa kirjaimella + :
+throbbingpond8B1
+twilightresonance487
+billowingfire340
Nämä avatarit voidaan esittää myös kuvina:
Vaikka näillä roboteilla ei ole erityisiä teknisiä toimintoja BIP47:n puitteissa, ne helpottavat käyttäjien vuorovaikutusta tarjoamalla helposti tunnistettavan visuaalisen identiteetin.
Tämän luvun seuraavissa BIP47:ää käsittelevissä osioissa tarkastelemme yksityiskohtaisesti sen toimintaa ja kiinnitämme erityistä huomiota käytettyihin salausmenetelmiin. Näiden hieman teknisten selitysten ymmärtäminen edellyttää, että ymmärrät ensin HD-lompakoiden rakenteen, avainten johtamismenetelmät ja elliptisten käyrien kryptografian perusteet. Jos haluat syventyä näihin käsitteisiin syvällisemmin, Plan ₿ -verkossa on saatavilla toinenkin ilmainen kurssi :
https://planb.network/courses/46b0ced2-9028-4a61-8fbc-3b005ee8d70f
Suosittelen silti seuraamaan niitä, koska BIP47:n teknisen toiminnan ymmärtäminen helpottaa huomattavasti muiden samankaltaisten ehdotusten ymmärtämistä, joita käsittelemme seuraavissa luvuissa
Uudelleenkäytettävä maksukoodi
Kuten aiemmin mainittiin, uudelleenkäytettävä maksukoodi sijaitsee
HD-lompakossa syvyydellä 3, joten se on verrattavissa xpubiin sekä
sijainniltaan lompakkorakenteessa että roolinsa puolesta.
80 tavun maksukoodi jakautuu seuraavasti:
- Tavu
0: Versio**. BIP47:n ensimmäisessä versiossa tämä tavu on0x01; - Tavu
1: Bittikenttä**. Tämä tila on varattu lisämerkintöjen integroimiseksi erityiskäyttöön. Perinteisessä PayNym-käytössä tämä tavu asetetaan arvoon0x00; - 2-byte: Pariteetti
y**. Tämä tavu on0x02tai0x03, mikä osoittaa, onko julkisen avaimen ordinaatti parillinen vai pariton, koska käytetään pakattua julkista avainta; - Tavusta "3" tavuun "34": Arvo
x**. Nämä tavut edustavat julkisen avaimen abessiivia.x:n jay:n pariteetin ketjutus muodostaa täydellisen pakatun julkisen avaimen; - Tavusta "35" tavuun "66": Merkkijonokoodi**. Tämä tila sisältää julkiseen avaimeen liittyvän merkkijonokoodin;
- Tavusta "67" tavuun "79": Pehmuste**. Tämä tila on tarkoitettu mahdollista
tulevaa kehitystä varten. Nykyisessä versiossa asetamme tänne vain nollia,
jotta saavutamme 80 tavun koon, joka vaaditaan
OP_RETURN-tulostusta varten.
Tässä on edellisessä jaksossa jo esitellyn uudelleenkäytettävän maksukoodini heksadesimaalinen esitys:
0x010002a0716529bae6b36c5c9aa518a52f9c828b46ad8d907747f0d09dcd4d9a39e97c3c5f37c470c390d842f364086362f6122f412e2b0c7e7fc6e32287e364a7a36a00000000000000000000000000
Seuraavaksi on lisättävä etuliitteen "P" tavu alkuun, jotta voidaan selvästi
osoittaa, että kyseessä on maksukoodi. Tämä tavu esitetään muodossa 0x47 :
0x47010002a0716529bae6b36c5c9aa518a52f9c828b46ad8d907747f0d09dcd4d9a39e97c3c5f37c470c390d842f364086362f6122f412e2b0c7e7fc6e32287e364a7a36a00000000000000000000000000
Lopuksi maksukoodin eheyden varmistamiseksi suoritetaan tarkistussumman
laskenta käyttämällä HASH256-toimintoa, joka koostuu
kaksinkertaisesta hash-arvosta, jossa käytetään SHA256-funktiota. Tämän hashin neljä ensimmäistä tavua
liitetään maksukoodin loppuun:
0x47010002a0716529bae6b36c5c9aa518a52f9c828b46ad8d907747f0d09dcd4d9a39e97c3c5f37c470c390d842f364086362f6122f412e2b0c7e7fc6e32287e364a7a36a00000000000000000000000000567080c4
Kun nämä vaiheet on suoritettu, maksukoodi on valmis. Nyt se on enää muunnettava 58-alkuiseksi, jotta saat lopullisen version:
PM8TJSBiQmNQDwTogMAbyqJe2PE2kQXjtgh88MRTxsrnHC8zpEtJ8j7Aj628oUFk8X6P5rJ7P5qDudE4Hwq9JXSRzGcZJbdJAjM9oVQ1UKU5j2nr7VR5
Maksukoodin luomisessa käytetään pakattua julkista avainta ja merkkijonokoodia. Molemmat johdetaan deterministisesti ja hierarkkisesti lompakon siemenestä. Tähän käytetty johdannaispolku on :
m/47'/0'/0'/
Käytännössä uudelleenkäytettävään maksukoodiin liittyvän pakatun julkisen
avaimen ja merkkijonokoodin luominen aloitetaan laskemalla yksityinen
pääavain lompakon siemenestä. Sen jälkeen johdamme tytäravainparin
käyttämällä indeksiä 47 + 2^31 (vahvistettu johdanto). Tämän
jälkeen johdetaan vielä kaksi peräkkäistä tytäravainparia, joissa
kummassakin käytetään indeksiä 2^31 (vahvistettu johdanto).
Diffie-Hellman-avainten vaihto elliptisillä käyrillä (ECDH)
BIP47:n ytimessä oleva salausprotokolla tunnetaan lyhenteellä ECDH, joka tarkoittaa Elliptic-Curve Diffie-Hellman. Menetelmä on muunnelma alkuperäisestä Diffie-Hellman-avaintenvaihdosta.
Diffie-Hellman on vuonna 1976 käyttöön otettu avainsopimusprotokolla, jonka avulla kaksi osapuolta, joilla kummallakin on oma avainparinsa (julkinen ja yksityinen), voivat sopia yhteisestä salaisuudesta, vaikka he kommunikoivat vain julkisen, suojaamattoman kanavan kautta.
Tätä jaettua salaisuutta (tässä tapauksessa sinistä avainta) voidaan sitten käyttää muihin toimintoihin. Tyypillisesti tätä jaettua salaisuutta voidaan käyttää viestinnän salaamiseen ja purkamiseen suojaamattomassa verkossa:
Tämän saavuttamiseksi Diffie-Hellman käyttää modulaarista aritmetiikkaa jaetun salaisuuden laskemiseen. Näin se toimii maallikon kielellä:
- Alice ja Bob sopivat yhteisestä väristä, tässä tapauksessa keltaisesta, joka on julkista tietoa (hyökkääjät tietävät tämän värin);
- Liisa valitsee salaisen värin, tässä tapauksessa punaisen, ja sekoittaa nämä kaksi väriä saadakseen oranssin;
- Bob valitsee myös salaisen värin, tässä tapauksessa sinisen, ja sekoittaa sen keltaisen kanssa saadakseen vihreän;
- Sitten he vaihtavat tuloksena olevat värit, oranssin ja vihreän. Tämä vaihto voi tapahtua turvattomassa verkossa, ja hyökkääjät voivat tarkkailla sitä;
- Sekoittamalla Bobin vihreän värin omaan salaiseen väriinsä Alice saa aikaan ruskean värin;
- Bob, joka tekee saman Alicen oranssilla ja salaisella sinisellä, saa myös ruskean.
Tässä popularisoinnissa ruskea väri edustaa Alicen ja Bobin jakamaa salaisuutta. Kuvittele, että todellisuudessa hyökkääjän on mahdotonta erottaa oranssia ja vihreää väriä toisistaan löytääkseen Alicen tai Bobin salaiset värit.
Katsotaanpa nyt, miten tämä protokolla oikeasti toimii, mutta ei värien analogioiden avulla, vaan reaalilukujen ja modulaarisen aritmetiikan avulla!
Ennen kuin siirrymme Diffie-Hellmanin mekanismeihin, muistutan sinua lyhyesti kahdesta keskeisestä matemaattisesta käsitteestä, joita tarvitsemme:
- Primiluku on luonnollinen luku, jolla on vain kaksi
jakajaa:
1ja itsensä. Esimerkiksi7on alkuluku, koska se voidaan jakaa vain1:lla ja7:lla. Toisaalta8ei ole alkuluku, koska se on jaollinen luvuilla1,2,4ja8. Sillä on siis neljän positiivisen kokonaisluvun jakaja kahden sijasta; - modulo (myös
modtai\%) on matemaattinen operaatio, joka palauttaa kahden kokonaisluvun välillä jäännöksen, joka on saatu jakamalla ensimmäinen kokonaisluku toisella kokonaisluvulla euklidisesti. Esimerkiksi16\bmod 5 =1$.
Diffie-Hellman-avaimen vaihto Alicen ja Bobin välillä tapahtuu seuraavasti:
- Alice ja Bob sopivat kahdesta yhteisestä luvusta:
pjag.pon alkuluku, ja mitä suurempi luku on, sitä varmempi Diffie-Hellman on.gonp:n alkujuuri. Nämä kaksi lukua voidaan välittää turvattomassa verkossa. Ne vastaavat keltaista väriä edellisessä popularisoinnissa. Siksi on tärkeää, että Alice ja Bob käyttävät täsmälleen samoja arvojap:lle jag:lle. - Kun nämä parametrit on määritelty, Alice ja Bob valitsevat kumpikin
salaisen satunnaisluvun. Alice nimeää salaisen satunnaislukunsa
a(vastaa punaista väriä) ja Bobb(vastaa sinistä väriä). Näiden lukujen on pysyttävä salaisina. - Sen sijaan, että vaihdettaisiin suoraan numerot
ajab, kumpikin osapuoli laskeeAjaBseuraavasti:
A on yhtä suuri kuin g korotettuna potenssiin a modulo p :
A = g^a \bmod p B on yhtä suuri kuin g korotettuna potenssiin b modulo p :
B = g^b \bmod p - Osapuolet vaihtavat arvot
A(vastaa oranssia väriä) jaB(vastaa vihreää väriä). Tämä vaihto voi tapahtua selvänä tekstinä suojaamattomassa verkossa; - Kun Alice on saanut
B, hän laskeez:n arvon seuraavasti:
z on yhtä suuri kuin B korotettuna potenssiin a modulo p :
z = B^a \bmod p Muistutus:
B = g^b \bmod p Tulos on :
z = B^a \bmod p z = (g^b)^a \bmod p Soveltamalla tehosääntöjä :
(x^n)^m = x^{nm} Tulos on :
z = g^{ba} \bmod p - Bob puolestaan, saatuaan
A, laskee myösz:n arvon seuraavasti:
z on yhtä suuri kuin A korotettuna potenssiin b modulo p :
z = A^b \bmod p Tulos on :
z = (g^a)^b \bmod p z = g^{ab} \bmod p z = g^{ba} \bmod p Modulo-operaattorin distributiivisuuden ansiosta Alice ja Bob saavat
täsmälleen saman arvon z.
Tämä luku edustaa heidän yhteistä salaisuuttaan, joka vastaa ruskeaa väriä aiemmassa popularisoinnissa maalipurkeilla. He
voivat nyt käyttää tätä yhteistä salaisuutta symmetrisesti salatakseen viestinsä
suojaamattomassa verkossa.
Hyökkääjä, vaikka hänellä olisi hallussaan p, g, A ja B (julkiset arvot), ei
pysty laskemaan a, b tai z (yksityiset arvot). Tätä
varten eksponentiaalin potensointi pitäisi kääntää päinvastaiseksi, mikä on mahdotonta
kokeilematta kaikkia mahdollisuuksia yksi kerrallaan, koska se on yhtä kuin diskreetin
logaritmin laskeminen eli eksponentiaalin käänteislukema äärellisessä syklisessä
ryhmässä.
Niin kauan kuin a, b ja p ovat riittävän suuria,
Diffie-Hellman-protokolla on turvallinen. Kun parametrit ovat 2048 bittiä
(600-numeroinen desimaaliluku), kaikkien a- ja b-vaihtoehtojen testaaminen
ei ole käytännössä mahdollista. Toistaiseksi tätä algoritmia pidetään
tällaisilla luvuilla turvallisena.
Tässä piilee Diffie-Hellman-protokollan suurin haittapuoli. Jotta algoritmi olisi turvallinen, sen on käytettävä suuria lukuja. Siksi nykyään käytetään mieluummin ECDH-algoritmia (Elliptic Curve Diffie-Hellman), joka on Diffie-Hellman-algoritmin muunnos, joka perustuu algebralliseen käyrään, tarkemmin sanottuna elliptiseen käyrään. Tämän lähestymistavan ansiosta voidaan työskennellä paljon pienemmillä luvuilla säilyttäen samalla vastaava turvallisuus, mikä vähentää laskentaan ja tallennukseen tarvittavia resursseja.
Algoritmin yleinen periaate pysyy samana. Sen sijaan, että käytettäisiin
satunnaislukua a ja lukua A, joka lasketaan a:sta modulaarisella
eksponentioinnilla, käytetään elliptiselle käyrälle määritettyä avainparia.
Sen sijaan, että luottaisimme modulo-operaattorin distributiivisuuteen,
käytämme elliptisten käyrien ryhmälakia ja tarkemmin sanottuna tämän lain
assosiatiivisuutta.
Lyhyesti selitän elliptisten käyrien salauksen periaatteen: yksityistä
avainta edustaa satunnaisluku välillä 1 ja n-1, jossa n edustaa käyrän järjestystä.
Julkinen avain puolestaan on tämän käyrän tietty piste, joka saadaan yksityisestä
avaimesta lisäämällä ja kaksinkertaistamalla pisteitä generoivasta pisteestä
yhtälön mukaisesti:
K = k \cdot G Tässä kaavassa K tarkoittaa
julkista avainta, k yksityistä avainta ja G generaattoripistettä.
Näiden avainten olennainen piirre on se, että K voidaan laskea helposti k:sta
ja G:sta, kun taas k:n löytäminen K:sta ja G:sta on käytännössä
mahdotonta. Tämä epäsymmetria luo yksisuuntaisen funktion. Toisin sanoen
julkinen avain on helppo laskea, jos tiedät yksityisen avaimen, mutta
yksityisen avaimen saaminen julkisesta avaimesta on mahdotonta. Tätä
turvallisuutta tukee lisäksi diskreetin logaritmin laskennallinen vaikeus.
Käytämme tätä ominaisuutta Diffie-Hellmanin algoritmin mukauttamiseen. ECDH:n toimintaperiaate on seuraava:
- Alice ja Bob sopivat kryptografisesti turvallisesta elliptisestä käyrästä ja sen parametreista. Nämä tiedot ovat julkisia;
- Alice luo satunnaisluvun
ka, joka on hänen yksityinen avaimensa. Tämän yksityisen avaimen on pysyttävä salassa. Hän määrittää julkisen avaimensaKalisäämällä ja kaksinkertaistamalla pisteitä valitulla elliptisellä käyrällä:
K_a = k_a \cdot G - Bob luo myös satunnaisluvun
kb, joka on hänen yksityinen avaimensa. Hän laskee siihen liittyvän julkisen avaimenKb:
K_b = k_b \cdot G - Alice ja Bob vaihtavat julkiset avaimensa
KajaKbsuojaamattomassa julkisessa verkossa. - Alice laskee käyrän pisteen
(x,y)soveltamalla yksityistä avaintakaBobin julkiseen avaimeenKb:
(x,y) = k_a \cdot K_b - Bob laskee käyrän pisteen
(x,y)soveltamalla yksityistä avaintakbAlicen julkiseen avaimeenKa:
(x,y) = k_b \cdot K_a - Alice ja Bob saavat saman pisteen elliptisellä käyrällä. Jaettu salaisuus
on tämän pisteen abskissa
x.
Ne saavat saman jaetun salaisuuden, koska :
(x,y) = k_a \cdot K_b = k_a \cdot (k_b \cdot G) = (k_a \cdot k_b) \cdot G = (k_b \cdot k_a) \cdot G = k_b \cdot (k_a \cdot G) = k_b \cdot K_a Mahdollinen hyökkääjä, joka tarkkailee suojaamatonta julkista verkkoa, voi saada selville vain kunkin henkilön julkiset avaimet ja valitun elliptisen käyrän parametrit. Kuten edellä on selitetty, nämä tiedot eivät yksin riitä yksityisten avainten määrittämiseen. Näin ollen hyökkääjä ei voi löytää Alicen ja Bobin välistä jaettua salaisuutta.
ECDH on siis avaintenvaihtoalgoritmi. Sitä käytetään usein yhdessä muiden salausmenetelmien kanssa täydellisen protokollan luomiseksi. ECDH on esimerkiksi TLS:n (Transport Layer Security) ydin, joka on Internetin siirtokerroksessa käytettävä salaus- ja todennusprotokolla. TLS käyttää ECDHE:tä avainten vaihtoon, joka on ECDH:n muunnos, jossa avaimet ovat lyhytaikaisia, ja joka takaa pysyvän luottamuksellisuuden. Lisäksi TLS käyttää todentamisalgoritmeja, kuten ECDSA, salausalgoritmeja, kuten AES, ja hash-funktioita, kuten SHA256.
TLS on vastuussa https-sanassa olevastas:stä` ja selaimesi
osoitepalkissa olevasta riippulukosta, jotka ovat salatun viestinnän
symboleja. Käymällä tämän kurssin käytät ECDH:ta, ja on hyvin todennäköistä,
että käytät sitä päivittäin tietämättäsi.
Ilmoitustapahtuma
Kuten edellisessä jaksossa todettiin, ECDH on muunnelma Diffie-Hellman-vaihdosta, jossa käytetään elliptisellä käyrällä muodostettuja avainpareja. On hyvä, että meillä on jo monia tätä standardia noudattavia avainpareja Bitcoin-lompakoissa! BIP47:n ideana on käyttää molempien osapuolten hierarkkisten determinististen Bitcoin-lompakoiden avainpareja niiden välisten jaettujen, hetkellisten salaisuuksien luomiseen. BIP47 käyttää sen sijaan ECDHE:tä (Elliptic Curve Diffie-Hellman Ephemeral).
ECDHE:tä käytetään ensimmäisen kerran BIP47:ssä maksukoodin siirtämiseen lähettäjältä vastaanottajalle. Tämä on kuuluisa ilmoitustapahtuma. Tämä vaihe on välttämätön, koska BIP47:n tehokas toiminta edellyttää, että molemmat osapuolet (lähettäjä ja vastaanottaja) tuntevat toistensa maksukoodit. Tämän tiedon avulla voidaan johtaa lyhytaikaiset julkiset avaimet ja näin ollen myös niihin liittyvät tyhjät vastaanottajaosoitteet.
Ennen tätä vaihtoa lähettäjä on loogisesti jo tietoinen vastaanottajan maksukoodista, sillä hän on hakenut sen ketjun ulkopuolelta, esimerkiksi verkkosivustoltaan, laskultaan tai sosiaalisista verkostoista. Vastaanottaja ei kuitenkaan välttämättä ole tietoinen lähettäjän maksukoodista. Koodi on kuitenkin välitettävä hänelle, sillä muuten hän ei voi johtaa efemerisiä avaimia, joita hän tarvitsee tunnistaakseen osoitteet, joissa hänen bitcoininsa ovat tallessa, tai päästäkseen käsiksi varoihinsa. Vaikka tämä lähettäjän koodin lähettäminen voidaan teknisesti toteuttaa ketjun ulkopuolella muilla viestintävälineillä, tämä aiheuttaa ongelman, jos lompakko on tarkoitus hakea vain siemenestä.
Tämä johtuu siitä, että toisin kuin tavanomaiset osoitteet, BIP47-osoitteita ei johdeta suoraan vastaanottajan siemenestä - "xpub"-osoitteen käyttäminen olisi tässä tapauksessa yksinkertaisempaa - vaan ne perustuvat laskelmaan, jossa yhdistetään kaksi maksukoodia: lähettäjän ja vastaanottajan koodit. Jos vastaanottaja siis kadottaa lompakkonsa ja yrittää palauttaa sen siemenestään, hän saa takaisin oman maksukoodinsa, joka on suoraan johdettu hänen siemenestään. Ephemeral-osoitteiden palauttamiseksi hän tarvitsee kuitenkin myös kaikkien niiden maksukoodit, jotka ovat lähettäneet hänelle bitcoineja BIP47:n kautta. Tästä syystä ilmoitustapahtuma on tärkeä, sillä sen avulla nämä tiedot voidaan tallentaa Bitcoinin lohkoketjuun, mutta ne ovat silti helposti löydettävissä ilman, että niitä tarvitsee etsiä miljardista transaktiosta, jotka on toteutettu sen jälkeen, kun se lanseerattiin vuonna 2009.
Näin ollen olisi mahdollista toteuttaa BIP47 ilman ilmoitustapahtumaa, jos kukin käyttäjä säilyttää varmuuskopion vertaistensa maksukoodeista. Tätä menetelmää on kuitenkin vaikea hallita, kunnes kehitetään yksinkertainen, kestävä ja tehokas ratkaisu varmuuskopioiden tekemiseen, tallentamiseen ja päivittämiseen. Nykytilanteessa ilmoitustapahtuma on lähes välttämätön.
Seuraavissa luvuissa tarkastelemme kuitenkin muita protokollia, joilla on samanlaiset tavoitteet kuin BIP47:llä, mutta jotka eivät edellytä ilmoitustapahtumaa. Näissä vaihtoehdoissa on kuitenkin omat kompromissinsa.
Sen lisäksi, että ilmoitustapahtuma tallentaa maksukoodit, sillä on nimensä mukaisesti myös ilmoitustoiminto vastaanottajalle. Se ilmoittaa vastaanottajan asiakkaalle, että uusi maksutunneli on luotu, ja ehdottaa, että hän pitää silmällä syntyneitä epheemisiä osoitteita.
BIP47-luottamuksellisuusmalli
Ennen kuin ilmoitustapahtuman teknistä toimintaa käsitellään yksityiskohtaisesti, on tärkeää käsitellä BIP47:ään liittyvää luottamuksellisuusmallia, joka oikeuttaa tietyt toimenpiteet, joita on toteutettu tätä alkuperäistä tapahtumaa luotaessa.
Maksukoodi itsessään ei aiheuta suoraa riskiä luottamuksellisuudelle. Toisin kuin perinteisessä Bitcoin-mallissa, jossa pyritään katkaisemaan yhteys käyttäjän identiteetin ja hänen transaktioidensa (jotka ovat julkisia) välillä säilyttämällä avainten ja osoitteiden anonymiteetti, maksukoodi voidaan yhdistää avoimesti identiteettiin ilman, että se aiheuttaa uhkaa.
Tämä johtuu siitä, että maksukoodia ei käytetä suoraan BIP47-maksuja saavien osoitteiden määrittämiseen. Sen sijaan nämä osoitteet luodaan ECDH-sovelluksen avulla kahden osapuolen maksukoodeista johdettujen avainten avulla.
Näin ollen maksukoodi itsessään ei suoraan johda luottamuksellisuuden menettämiseen, koska siitä johdetaan vain ilmoitusosoite. Vaikka tämä osoite voi paljastaa tiettyjä tietoja, se ei yleensä paljasta osapuolia, joiden kanssa asioit, ellei perusteellista ketjuanalyysia suoriteta. Jos lähettäjä nimittäin käyttää ilmoitustapahtuman suorittamiseen UTXO-tunnuksia, jotka voidaan yhdistää hänen henkilöllisyyteensä, on mahdollista päätellä, että hänen henkilöllisyytensä liittyy todennäköisesti BIP47-maksuihin maksukoodisi kanssa. Tämä ei paljasta taustalla olevia maksutapahtumia, mutta osoittaa niiden todennäköisen olemassaolon.
Sen vuoksi on olennaisen tärkeää säilyttää tämä tiukka erottelu käyttäjien maksukoodien välillä. Tämän vuoksi koodin ensimmäinen ilmoittaminen on maksujen luottamuksellisuuden kannalta kriittinen hetki, mutta välttämätön protokollan moitteettoman toiminnan kannalta. Jos yksi maksukoodeista on julkisesti saatavilla (esimerkiksi verkkosivustolla), toista koodia, lähettäjän koodia, ei saa missään tapauksessa yhdistää ensimmäiseen.
Otetaanpa konkreettinen esimerkki: Haluan tehdä lahjoituksen poliittiselle liikkeelle BIP:n47 kautta:
- Järjestö on julkistanut maksukoodinsa verkkosivuillaan tai sosiaalisissa verkostoissaan;
- Tämä koodi liittyy siis poliittiseen liikkeeseen;
- Saan tämän maksukoodin ;
- Ennen lähettämistä minun on varmistettava, että he tietävät oman maksukoodini, joka on myös sidottu henkilöllisyyteeni, koska käytän sitä sosiaalisten verkostojeni maksutapahtumien vastaanottamiseen.
Miten voin välittää koodini eteenpäin ilman riskejä? Perinteisten viestintävälineiden käyttäminen voisi johtaa tietojen vuotamiseen ja siten liittää minut tähän poliittiseen liikkeeseen. Ilmoitustapahtuma tarjoaa ratkaisun, sillä salauskerros estää juuri tällaisen yhdistämisen kahden koodin välillä. Vaikka se ei olekaan ainoa menetelmä lähettäjän maksukoodin salaiseen lähettämiseen, se on erittäin tehokas.
Alla olevassa kaaviossa oranssit viivat osoittavat kohdat, joissa tiedonkulku on keskeytettävä, ja mustat nuolet osoittavat yhteydet, joita kolmannet osapuolet voivat havaita:
Todellisuudessa Bitcoinin perinteisessä luottamuksellisuusmallissa on usein monimutkaista erottaa avainparin ja käyttäjän välinen tietovirta täysin toisistaan, erityisesti etätransaktioissa. Esimerkiksi lahjoituskampanjan yhteydessä vastaanottajan on väistämättä paljastettava osoite tai julkinen avain verkkosivustonsa tai sosiaalisten verkostojensa kautta. BIP47:n oikea käyttö, erityisesti ilmoitustapahtuman yhteydessä, mahdollistaa tämän ongelman kiertämisen ECDHE:n ja myöhemmin tarkastelemamme salaustason ansiosta.
Bitcoinin klassinen luottamuksellisuusmalli pätee tietysti edelleen efemerisiin julkisiin avaimiin, jotka saadaan kahden maksukoodin yhdistelmästä. Nämä kaksi mallia itse asiassa täydentävät toisiaan. Haluan korostaa tässä yhteydessä, että toisin kuin tavanomaisessa julkisen avaimen käytössä Bitcoineja vastaanotettaessa, maksukoodi voidaan yhdistää tiettyyn henkilöllisyyteen, sillä tieto "Alice tekee liiketoimia Bobin kanssa" katkeaa toisessa vaiheessa. Maksukoodia käytetään maksuosoitteiden luomiseen, mutta pelkästään lohkoketjun havainnoinnin perusteella on mahdotonta yhdistää BIP47-maksutapahtumaa sen suorittamiseen käytettyihin maksukoodeihin, elleivät asianomaiset UTXO:t ole jo aiemmin yhdistetty johonkin identiteettiin ja käyttäjät yhdistäneet maksukoodinsa omiin identiteetteihinsä.
Yhteenvetona voidaan todeta, että BIP47-maksujen tarjoamaa luottamuksellisuusmallia voidaan pitää parempana kuin Bitcoinin perusmallia, vaikka tämä ei tarkoita, että se olisi taikuutta.
Ilmoitustapahtuman rakentaminen
Katsotaan nyt, miten tämä ilmoitustapahtuma toimii. Kuvitellaan, että Alice haluaa lähettää varoja Bobille BIP47:n avulla. Esimerkissäni Alice toimii lähettäjänä ja Bob vastaanottajana. Bob on julkaissut maksukoodinsa verkkosivustollaan. Alice siis jo tietää Bobin maksukoodin.
1- Alice laskee jaetun salaisuuden ECDH:n avulla :
- Hän valitsee HD-lompakostaan avainparin, joka on eri haarassa kuin hänen maksukoodinsa. Huomaa, että tämä pari ei saa olla helposti yhdistettävissä Alicen ilmoitusosoitteeseen eikä Alicen henkilöllisyyteen (ks. edellinen jakso);
- Alice valitsee tämän parin yksityisen avaimen. Kutsumme sitä nimellä
a(pienillä kirjaimilla);
a - Alice hakee Bobin ilmoitusosoitteeseen liittyvän julkisen avaimen. Tämä
avain on Bobin maksukoodin (indeksi
/0) ensimmäinen lapsi. Kutsumme tätä julkista avainta nimelläB(isoilla kirjaimilla). Tähän julkiseen avaimeen liittyvä yksityinen avain on nimeltäänb(pieni kirjain).Bmääritetään lisäämällä ja kaksinkertaistamalla elliptisen käyrän pisteitäG:stä (generointipiste) jab:stä (yksityinen avain):
$$ B = b \cdot G $$$
- Liisa laskee elliptisen käyrän salaisen pisteen
S(iso kirjain) lisäämällä ja kaksinkertaistamalla pisteitä ja käyttämällä Bobin julkisesta avaimestaBsaatavaa yksityistä avaintaa.
$$ S = a \cdot B $$$
- Alice laskee sokeutuskertoimen
f, jota käytetään hänen maksukoodinsa salaamiseen. Tätä varten hän käyttää HMAC-SHA512-funktiota pseudosattumanumeron määrittämiseen. Tämän funktion toisena syötteenä on arvo, jonka vain Bob pystyy löytämään:x, joka on edellä lasketun salaisen pisteen abessissa. Ensimmäinen tulo ono, joka on UTXO, joka kulutetaan tämän tapahtuman syötteenä (outpoint).
$$ f = \text{HMAC-SHA512}(o, x) $$$
**2 - Liisa muuntaa henkilökohtaisen maksukoodinsa binäärikoodiksi (2) **
3- Se käyttää tätä sokaisutekijää avaimena suorittaakseen symmetrisen salauksen maksukoodinsa hyötykuormalle. Käytetty salausalgoritmi on yksinkertaisesti "XOR". Suoritettu operaatio on verrattavissa Vernam-salaukseen, joka tunnetaan myös nimellä "One-Time Pad".
- Alice jakaa ensin sokaisutekijänsä kahtia: ensimmäiset 32 tavua ovat
nimeltään
f1ja viimeiset 32 tavuaf2. Näin saadaan :
$$ f = f1 || f2 $$$
- Liisa laskee maksukoodinsa julkisen avaimen
xabskissanx'ja merkkijonokoodinsacsalakirjoituksenc'erikseen.f1jaf2toimivat vastaavasti salausavaimina. Käytetty operaatio onXOR(tai eksklusiivinen).
x' = x \oplus f1 $$
c' = c \oplus f2 $$
- Alice korvaa maksukoodissaan julkisen avaimen abskissan
xja merkkijonokoodinctodelliset arvot salatuilla arvoillax'jac'.
4- Alicella on siis tällä hetkellä maksukoodinsa salatun
hyötykuorman kanssa. Hän rakentaa ja lähettää transaktion, jossa hänen
julkinen avaimensa A on
syötteenä, lähtö Bobin ilmoitusosoitteeseen ja lähtö "OP_RETURN", joka
koostuu hänen maksukoodistaan ja salatusta hyötykuormasta. Tämä transaktio on ilmoitustransaktio.
OP_RETURN on op-koodi, joka merkitsee Bitcoin-tapahtuman ulostulon virheelliseksi. Nykyään sitä käytetään tietojen lähettämiseen tai ankkuroimiseen Bitcoin-lohkoketjuun. Se voi tallentaa enintään 80 tavua tietoa, joka sitten kirjoitetaan ketjuun ja näkyy kaikille muille käyttäjille.
Kuten aiemmissa jaksoissa on todettu, ECDH:ta käytetään luomaan jaettu salaisuus kahden käyttäjän välille, jotka kommunikoivat turvattoman verkon välityksellä ja joita hyökkääjät voivat mahdollisesti tarkkailla. BIP47:ssä ECDH:ta käytetään kommunikointiin Bitcoin-verkossa, joka on luonteeltaan läpinäkyvä viestintäverkko ja jota monet hyökkääjät voivat tarkkailla. ECDH-avaimenvaihdon avulla laskettua jaettua salaisuutta käytetään sitten salatun tiedon salaamiseen: lähettäjän maksukoodi (Alice).
Teen yhteenvedon äsken yhdessä näkemistämme vaiheista ilmoitustapahtuman suorittamiseksi:
- Alice hakee Bobin maksukoodin ja ilmoitusosoitteen;
- Alice valitsee HD-salkustaan UTXO:n ja vastaavan avainparin;
- Se laskee elliptisen käyrän salaisen pisteen ECDH:n avulla;
- Se käyttää tätä salaista pistettä HMAC:n laskemiseen, joka on sokaistumiskerroin;
- Hän käyttää tätä sokaisevaa tekijää salatakseen henkilökohtaisen maksukoodinsa hyötykuorman;
- Se käyttää
OP_RETURN-tapahtumalähdettä piilotetun maksukoodin välittämiseen Bobille.
Transaktioilmoitus: käytännön tutkimus
Jotta ymmärtäisimme tarkemmin, miten se toimii, ja erityisesti OP_RETURN:n käyttöä, tarkastellaan todellista ilmoitustapahtumaa. Suoritin tällaisen
tapahtuman testiverkossa, jonka löydät klikkaamalla tästä.
Kun tarkastelemme tätä tapahtumaa, voimme jo nähdä, että sillä on yksi tulo ja 4 lähtöä:
- Ensimmäinen tuloste on
OP_RETURN, joka sisältää piilotetun maksukoodini; - Toinen 546 satsin tuloste osoittaa vastaanottajan ilmoitusosoitteeseen;
- Kolmas 15 000 satsin tuotos edustaa palvelumaksua, koska käytin Samourai-lompakkoa tämän tapahtuman rakentamiseen;
- Neljäs 2 miljoonan satsin ulostulo edustaa vaihtokurssia, toisin sanoen jäljellä olevaa eroa syötteessäni, joka palaa toiseen minulle kuuluvaan osoitteeseen.
Mielenkiintoisin tutkittava on luonnollisesti ulostulo 0 käyttäen OP_RETURN. Katsotaanpa tarkemmin, mitä se sisältää. Tässä on scriptPubKey heksadesimaalisessa muodossa :
6a4c50010002b13b2911719409d704ecc69f74fa315a6cb20fdd6ee39bc9874667703d67b164927b0e88f89f3f8b963549eab2533b5d7ed481a3bea7e953b546b4e91b6f50d800000000000000000000000000
Tässä käsikirjoituksessa on useita osia. Ensinnäkin :
6a4c
Op-koodeista voidaan tunnistaa 0x6a, joka tarkoittaa OP_RETURN, ja 0x4c, joka tarkoittaa OP_PUSHDATA1.
Tätä viimeistä op-koodia seuraava tavu ilmoittaa seuraavan hyötykuorman
koon. Se tarkoittaa 0x50 eli 80 tavua:
6a4c50
Seuraavaksi meillä on maksukoodini metatiedot selvänä tekstinä:
010002
Maksukoodini julkisen avaimen salattu abscissa :
b13b2911719409d704ecc69f74fa315a6cb20fdd6ee39bc9874667703d67b164
Maksukoodini salattu merkkijonokoodi :
927b0e88f89f3f8b963549eab2533b5d7ed481a3bea7e953b546b4e91b6f50d8
Ja lopuksi täytetään 80 tavuun, joka on OP_RETURN:n vakiokoko:
00000000000000000000000000
Jotta ymmärtäisit paremmin, tässä on maksukoodini tavallisena tekstinä 58-alkuisena :
PM8TJQCyt6ovbozreUCBrfKqmSVmTzJ5vjqse58LnBzKFFZTwny3KfCDdwTqAEYVasn11tTMPc2FJsFygFd3YzsHvwNXLEQNADgxeGnMK8Ugmin62TZU
Ja 16-alkuisena :
4701000277507c9c17a89cfca2d3af554745d6c2db0e7f6b2721a3941a504933103cc42add94881210d6e752a9abc8a9fa0070e85184993c4f643f1121dd807dd556d1dc000000000000000000000000008604e4db
Jos verrataan selväkielistä maksukoodiani ja OP_RETURN-koodia,
nähdään, että HRP (0x47) ja tarkistussumma (0x8604e4db) eivät siirry. Tämä on normaalia, koska nämä tiedot on tarkoitettu
ihmisille.
Seuraavaksi voimme tunnistaa version (0x01), bittikentän (0x00) ja julkisen avaimen pariteetin (0x02). Ja maksukoodin
lopussa tyhjät tavut (0x0000000000000000000000000000000000000000000000), jotka mahdollistavat pehmusteiden lisäämisen yhteensä 80 tavuun. Kaikki
nämä metatiedot lähetetään salaamattomina.
Lopuksi voimme havaita, että julkisen avaimen abscissa (0x77507c9c17a89cfca2d3af554745d6c2db0e7f6b2721a3941a504933103cc42a) ja merkkijonokoodi (0xdd94881210d6e752a9abc8a9fa0070e85184993c4f643f1121dd807dd556d1dc) on salattu. Tämä on maksukoodin hyötykuorma.
Mikä on XOR?
Olemme nähneet edellisissä jaksoissa, että maksukoodi lähetetään salattuna XOR-operaation avulla. Katsotaanpa tarkemmin, miten tämä operaatio toimii, sillä sitä käytetään laajalti salakirjoituksessa.
XOR on Boolen algebraan perustuva bittimainen looginen operaattori. Kun
kaksi operandia on bitteinä, se palauttaa arvon 1, jos
samanarvoiset bitit ovat eri arvoisia, ja arvon 0, jos
samanarvoiset bitit ovat samat. Tässä on XOR-totuustaulukko operandien D ja E arvojen mukaan:
| D | E | D TAI E | D XOR E |
| --- | --- | ------- |
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
Esimerkiksi:
0110 \oplus 1110 = 1000 Tai :
010011 \oplus 110110 = 100101 ECDH:ssa XOR:n käyttö salaustasona on erityisen johdonmukaista. Ensinnäkin tämän operaattorin ansiosta salaus on symmetrinen. Tämä tarkoittaa, että vastaanottaja voi purkaa maksukoodin samalla avaimella, jota käytetään salaukseen. Salaus- ja purkuavaimet lasketaan jaetusta salaisuudesta ECDH:n avulla. Symmetrisyyden mahdollistavat XOR-operaattorin kommutatiivisuus- ja assosiatiivisuusominaisuudet:
- Muut ominaisuudet :
D \oplus D = 0 D \oplus 0 = D - Kommutatiivisuus :
D \oplus E = E \oplus D - Assosiatiivisuus :
D \oplus (E \oplus Z) = (D \oplus E) \oplus Z = D \oplus E \oplus Z Jos :
D \oplus E = L Sitten :
D \oplus L = D \oplus (D \oplus E) = D \oplus D \oplus E = 0 \oplus E = E \\
\therefore D \oplus L = E Toiseksi tämä salausmenetelmä on hyvin samankaltainen kuin Vernam-salausmenetelmä (One-Time Pad), joka on ainoa tähän mennessä tunnettu salausalgoritmi, jolla on ehdoton (tai absoluuttinen) turvallisuus. Jotta Vernamin salausmenetelmällä olisi tämä ominaisuus, salausavaimen on oltava täysin satunnainen, samankokoinen kuin viesti ja sitä on käytettävä vain kerran. Tässä BIP47:ssä käytetyssä salausmenetelmässä avain on todellakin samankokoinen kuin viesti, ja sokeutumistekijä on täsmälleen samankokoinen kuin julkisen avaimen abessiivin ja maksukoodin merkkijonokoodin ketjutus. Tätä salausavainta käytetään vain kerran. Toisaalta tätä avainta ei johdeta täydellisestä satunnaisuudesta, koska se on HMAC. Se on pikemminkin pseudosattumanvarainen. Kyseessä ei siis ole Vernam-salaus, mutta menetelmä on lähellä sitä.
Ilmoitustapahtuman vastaanottaminen
Nyt kun Alice on lähettänyt ilmoitustapahtuman Bobille, katsotaan, miten Bob tulkitsee sen. Muistutettakoon, että Bobilla on oltava pääsy Alicen maksukoodiin. Ilman tätä tietoa, kuten näemme seuraavassa jaksossa, hän ei voi johtaa Alicen luomia avainpareja eikä näin ollen päästä käsiksi BIP47:n kautta saamiinsa bitcoineihin. Toistaiseksi Alicen maksukoodin hyötykuorma on salattu. Katsotaanpa, miten Bob purkaa sen salauksen.
1- Bob valvoo tapahtumia, jotka luovat hänen ilmoitusosoitteensa sisältäviä tuotoksia.
2- Kun transaktion ilmoitusosoitteessa on ulostulo, Bob analysoi sen nähdäkseen, sisältääkö se BIP47-standardin mukaisen OP_RETURN-ulostulon.
3- Jos OP_RETURN-nettilatauksen ensimmäinen tavu on 0x01, Bob aloittaa mahdollisen ECDH:n kanssa jaetun salaisuuden
etsimisen:
- Bob valitsee julkisen avaimen tapahtumaa varten. Toisin sanoen Alicen
julkinen avain nimeltä
A, jossa on :
A = a \cdot G $$
- Bob valitsee henkilökohtaiseen ilmoitusosoitteeseensa liittyvän yksityisen
avaimen
b:
b
- Bob laskee elliptisen käyrän salaisen pisteen
S(jaettu salaisuus ECDH) lisäämällä ja kaksinkertaistamalla pisteitä ja soveltamalla yksityistä avaintabAlicen julkiseen avaimeenA:
S = b \cdot A $$
- Bob määrittää sokaisukertoimen
f, jonka avulla Alicen maksukoodin hyötykuorma voidaan purkaa. Samalla tavalla kuin Alice oli laskenut sen aiemmin, Bob löytääfsoveltamalla HMAC-SHA512:ta salaisen pisteenSabskissiarvoonxja tämän ilmoitustapahtuman syötteenä käytettyyn UTXO-arvoono:
$$ f = \text{HMAC-SHA512}(o, x) $$$
4- Bob tulkitsee ilmoitustapahtuman OP_RETURN-tiedon
maksukoodiksi. Hän yksinkertaisesti purkaa tämän mahdollisen maksukoodin
hyötykuorman käyttämällä f-sokkokerrointa:
- Bob jakaa sokaisutekijän
fkahteen osaan:f:n ensimmäiset 32 tavua ovatf1ja viimeiset 32 tavuaf2; - Bob purkaa salatun abskissan
x'arvon Alicen maksukoodin julkisella avaimella:
x = x' \oplus f1 $$
- Bob purkaa salatun merkkijonokoodin
c'arvon Alicen maksukoodista:
c = c' \oplus f2 $$
5- Bob tarkistaa, kuuluuko Alicen maksukoodin julkisen avaimen arvo secp256k1-ryhmään. Jos vastaus on kyllä, hän tulkitsee sen kelvolliseksi maksukoodiksi. Jos ei, hän jättää tapahtuman huomiotta.
Nyt kun Bob tietää Alicen maksukoodin, Alice voi lähettää hänelle enintään 2^32 maksua ilman, että hänen tarvitsee koskaan toistaa tämäntyyppistä ilmoitustapahtumaa.
Miksi se toimii? Miten Bob voi määrittää saman sokaisutekijän kuin Alice ja siten tulkita hänen maksukoodinsa? Katsotaanpa tarkemmin ECDH:n toimintaa siinä, mitä juuri kuvailimme.
Ensinnäkin kyseessä on symmetrinen salaus. Tämä tarkoittaa, että salausavain ja purkuavain ovat sama arvo. Tämä avain on ilmoitustapahtumassa sokeuttava tekijä:
$$ f = f1 || f2 $$$
Alicen ja Bobin on siis saatava sama arvo f:lle lähettämättä sitä suoraan, koska hyökkääjä voisi varastaa sen ja
purkaa salaisen tiedon. Tämä sokaisukerroin saadaan soveltamalla
HMAC-SHA512:ta kahteen arvoon:
- salaisen pisteen abskissa ;
- ja UTXO:n kulutus tapahtuman tulossa.
Bob tarvitsee siis molemmat tiedot purkaakseen Alicen maksukoodin hyötykuorman. Bob voi yksinkertaisesti saada syötetyn UTXO:n tarkkailemalla ilmoitustapahtumaa. Salaisen pisteen osalta Bobin on käytettävä ECDH:ta. Kuten edellisessä Diffie-Hellmania käsittelevässä jaksossa todettiin, Alice ja Bob voivat löytää tarkan salaisen pisteen elliptisellä käyrällä yksinkertaisesti vaihtamalla julkiset avaimensa ja soveltamalla salaa yksityisiä avaimiaan toistensa julkiseen avaimeen. Ilmoitustapahtuma perustuu tähän mekanismiin:
- Bobin avainpari :
$$ B = b \cdot G $$$
- Alicen avainparin :
A = a \cdot G $$
- Salaisuudelle
S (x, y):
S = a \cdot B = a \cdot (b \cdot G) = (b \cdot a) \cdot G = b \cdot A $$
Nyt kun Bob tuntee Alicen maksukoodin, hän pystyy havaitsemaan Alicen BIP47-maksut, ja hän pystyy päättelemään yksityiset avaimet, jotka estävät vastaanotetut bitcoinit.
Tiivistän yhteen juuri yhdessä näkemämme vaiheet ilmoitustapahtuman vastaanottamiseksi ja tulkitsemiseksi:
- Bob valvoo tapahtuman ulostuloa ilmoitusosoitteeseensa;
- Kun se havaitsee sellaisen, se hakee OP_RETURN -tiedon;
- Bob valitsee syötteeksi julkisen avaimen ja laskee salaisen pisteen ECDH:n avulla;
- Se käyttää tätä salaista pistettä HMAC:n laskemiseen, joka on sokaistumiskerroin;
- Se käyttää tätä sokaisevaa tekijää purkaakseen OP_RETURN-lähetykseen sisältyvän Alicen maksukoodin hyötykuorman.
BIP47-maksutapahtuma
Katsotaanpa BIP47:n maksuprosessia. Muistutetaan sinua nykytilanteesta :
- Alice tietää Bobin maksukoodin, jonka hän yksinkertaisesti haki Bobin verkkosivuilta;
- Bob tietää Alicen maksukoodin ilmoitustapahtumasta;
- Alice suorittaa ensimmäisen maksun Bobille. Hän voi tehdä monta muuta samalla tavalla.
Ennen tämän prosessin selittämistä on mielestäni tärkeää muistaa, mitä
indeksejä parhaillaan käsittelemme. Maksukoodin johtamispolku kuvataan
seuraavasti: m/47'/0'/0'. Seuraava syvyys jakaa indeksit
seuraavasti:
- Ensimmäinen normaali (ei-vahvistettu) tytärpari on se, jota käytetään
edellisessä jaksossa käsitellyn ilmoitusosoitteen muodostamiseen:
m/47'/0'/0'/0'/0; - ECDH:ssa käytetään tavallisia tytäravainpareja
BIP47-maksukuittiosoitteiden luomiseksi, kuten näemme tässä jaksossa:
m/47'/0'/0'/0'/0'/0-m/47'/0'/0'/0'/2,147,483,647; - Vahvistetut tytäravainparit ovat hetkellisiä maksukoodeja:
m/47'/0'/0'/0'/0'-m/47'/0'/0'/0'/2,147,483,647'`.
Aina kun Alice haluaa lähettää maksun Bobille, hän saa uuden, ainutlaatuisen, tyhjän osoitteen, jälleen ECDH-protokollan avulla:
- Alice valitsee ensimmäisen yksityisen avaimen, joka on johdettu hänen henkilökohtaisesta uudelleenkäytettävästä maksukoodistaan :
a
- Alice valitsee ensimmäisen käyttämättömän julkisen avaimen, joka on
johdettu Bobin maksukoodista. Kutsumme tätä julkista avainta nimellä
B. Se liittyy yksityiseen avaimeenb, jonka vain Bob tuntee:
$$ B = b \cdot G $$$
- Liisa laskee elliptisen käyrän salaisen pisteen
Slisäämällä ja kaksinkertaistamalla pisteitä käyttämällä Bobin julkisesta avaimestaBhänen yksityistä avaintaana:
$$ S = a \cdot B $$$
- Tästä salaisesta pisteestä Alice laskee jaetun salaisuuden
s(pienellä). Tätä varten hän valitsee salaisen pisteenSabskissan nimeltäSxja siirtää tämän arvon SHA256-hash-funktiolle:
$$ S = (Sx, Sy) $$$
$$ s = \text{SHA256}(Sx) $$$
- Alice käyttää tätä jaettua salaisuutta
sBitcoin-maksun vastaanottoosoitteen laskemiseen. Ensin hän tarkistaa, ettässisältyy secp256k1-käyrän järjestykseen. Jos näin ei ole, hän kasvattaa Bobin julkisen avaimen indeksiä saadakseen toisen jaetun salaisuuden ; - Toisessa vaiheessa hän laskee julkisen avaimen
K0lisäämällä elliptisen käyrän pisteetBjas-G. Toisin sanoen Alice lisää Bobin maksukoodistaBsaadun julkisen avaimen toiseen pisteeseen, joka lasketaan elliptisellä käyrällä lisäämällä ja kaksinkertaistamalla pisteitä jaetulla salaisuudellassecp256k1-käyrän generaattoripisteestäG. Tämä uusi piste edustaa julkista avainta, ja kutsumme sitäK0:
K0 = B + s \cdot G $$
- Tämän julkisen avaimen
K0avulla Alice voi johtaa tyhjän vastaanotto-osoitteen tavanomaisella tavalla (esim. SegWit V0 bech32:ssa).
Kun Alice on saanut Bobin K0-vastaanotto-osoitteen, hän voi suorittaa Bitcoin-tapahtuman tavalliseen
tapaan. Tätä varten hän valitsee omistamansa UTXO:n, joka on suojattu
HD-lompakkonsa eri haaran avainparilla, ja kuluttaa sen täyttääkseen Bobin K0-osoitteeseen osoitetun
lähdön. On tärkeää huomata, että tämä maksu, kun osoite on johdettu,
noudattaa klassista prosessia eikä enää riipu BIP47:ään liittyvistä
avaimista.
Teen yhteenvedon juuri näkemistämme vaiheista BIP47-maksun lähettämiseksi:
- Alice valitsee ensimmäisen tyttären yksityisen avaimen, joka on johdettu hänen henkilökohtaisesta maksukoodistaan ;
- Se laskee elliptisen käyrän salaisen pisteen ECDH:n avulla ensimmäisestä käyttämättömästä julkisesta tytäravaimesta, joka on johdettu Bobin maksukoodista;
- Se käyttää tätä salaista pistettä jaetun salaisuuden laskemiseen SHA256-menetelmällä;
- Hän käyttää tätä jaettua salaisuutta laskeakseen uuden salaisen pisteen elliptisellä käyrällä;
- Hän lisää tämän uuden salaisen pisteen Bobin julkiseen avaimeen;
- Hän saa uuden väliaikaisen julkisen avaimen, johon liittyvä yksityinen avain on vain Bobilla;
- Liisa voi tehdä klassisen transaktion Bobille johdetulla epheerisellä vastaanotto-osoitteella.
Jos Alice haluaa suorittaa toisen maksun, hän noudattaa samoja ohjeita kuin
aiemmin, mutta tällä kertaa hän valitsee toisen julkisen avaimen, joka on
johdettu Bobin maksukoodista. Tarkemmin sanottuna hän käyttää seuraavaa
käyttämätöntä avainta. Näin hän saa uuden Bobille kuuluvan
vastaanotto-osoitteen, joka on nimeltään K1 :
Se voi jatkaa tällä tavalla ja johtaa jopa 2^32 tyhjää osoitetta,
jotka kuuluvat Bobille.
Lohkoketjua ulkopuolisen näkökulmasta katsottuna on teoriassa mahdotonta erottaa BIP47-maksua tavanomaisesta maksusta. Tässä on esimerkki BIP47-maksutapahtumasta Testnetissä:
94b2e59510f2e1fa78411634c98a77bbb638e28fb2da00c9f359cd5fc8f87254
Se näyttää klassiselta transaktiolta, jossa on kulutettu panos, maksun lähtö ja valuuttakurssi:
BIP47-maksun vastaanottaminen ja yksityisen avaimen johtaminen
Alice on juuri suorittanut ensimmäisen maksunsa Bobille kuuluvaan tyhjään BIP47-osoitteeseen. Katsotaan nyt, miten Bob vastaanottaa tämän maksun. Katsotaan myös, miksi Alice ei pääse käsiksi äsken luodun osoitteen yksityiseen avaimeen ja miten Bob löytää tämän avaimen käyttääkseen juuri saamansa bitcoinit.
Heti kun Bob saa Alicelta ilmoitustapahtuman, hän saa julkisen avaimen BIP47 K0 jo ennen kuin hänen kirjeenvaihtajansa on lähettänyt maksun. Näin ollen hän
havaitsee kaikki maksut kyseiseen osoitteeseen. Itse asiassa hän saa
välittömästi useita havaitsemiaan osoitteita (K0, K1, K2, K3...). Näin se johtaa tämän
julkisen avaimen K0 :
- Bob valitsee ensimmäisen tyttären yksityisen avaimen, joka on johdettu
hänen maksukoodistaan. Tämän yksityisen avaimen nimi on
b. Se liittyy julkiseen avaimeenB, jolla Alice teki laskelmansa edellisessä vaiheessa:
b
- Bob valitsee Alicen ensimmäisen julkisen avaimen, joka on johdettu hänen
maksukoodistaan. Tämän avaimen nimi on
A. Se liittyy yksityiseen avaimeena, jolla Alice teki laskelmansa ja joka on vain Alicen tiedossa. Bob voi suorittaa tämän prosessin, koska hän tietää Alicen maksukoodin, joka lähetettiin hänelle ilmoitustapahtuman yhteydessä:
A = a \cdot G $$
- Bob laskee salaisen pisteen
Slisäämällä ja kaksinkertaistamalla elliptisen käyrän pisteitä soveltamalla yksityistä avaintabAlicen julkiseen avaimeenA. Tässäkin tapauksessa ECDH:ta käytetään takaamaan, että tämä pisteSon sama sekä Bobille että Alicelle:
S = b \cdot A $$
- Samalla tavalla kuin Alice, Bob eristää tämän pisteen
Sabskissan. Nimesimme tämän arvonSx. Hän siirtää tämän arvon SHA256-funktiolle jaetun salaisuudens(pienellä) löytämiseksi:
$$ s = \text{SHA256}(Sx) $$$
- Samalla tavalla kuin Alice, Bob laskee
s-G-pisteen elliptisellä käyrällä. Sitten hän lisää tämän salaisen pisteen julkiseen avaimeensaB. Tämän jälkeen hän saa elliptisen käyrän uuden pisteen, jonka hän tulkitsee julkiseksi avaimeksiK0:
K0 = B + s \cdot G $$
Kun Bobilla on tämä julkinen avain K0, hän voi johtaa siihen liittyvän yksityisen avaimen, jolla hän voi käyttää
bitcoinejaan. Vain hän voi luoda tämän yksityisen avaimen:
- Bob lisää tyttärensä yksityisen avaimen
b, joka on peräisin hänen henkilökohtaisesta maksukoodistaan. Vain hän voi saadab:n arvon. Sitten hän lisääbjaettuun salaisuuteenssaadakseenk0,K0:n yksityisen avaimen:
k0 = b + s $$
Elliptisen käyrän ryhmälain ansiosta Bob saa täsmälleen Alicen käyttämää julkista avainta vastaavan yksityisen avaimen. Näin ollen meillä on :
$$ K0 = k0 \cdot G $$$
Tiivistän yhteen juuri yhdessä näkemämme vaiheet BIP47-maksun vastaanottamiseksi ja vastaavan yksityisen avaimen laskemiseksi:
- Bob valitsee ensimmäisen tyttären yksityisen avaimen, joka on johdettu hänen henkilökohtaisesta maksukoodistaan ;
- Se laskee elliptisen käyrän salaisen pisteen ECDH:n avulla Alicen merkkijonokoodista saadusta ensimmäisestä julkisesta tytäravaimesta;
- Se käyttää tätä salaista pistettä jaetun salaisuuden laskemiseen SHA256-menetelmällä;
- Hän käyttää tätä jaettua salaisuutta laskeakseen uuden salaisen pisteen elliptisellä käyrällä;
- Hän lisää tämän uuden salaisen pisteen henkilökohtaiseen julkiseen avaimeensa;
- Hän saa uuden epheerisen julkisen avaimen, johon Alice lähettää ensimmäisen maksunsa;
- Bob laskee tähän epheeriseen julkiseen avaimeen liittyvän yksityisen avaimen lisäämällä siihen maksukoodistaan ja jaetusta salaisuudesta johdetun tyttärensä yksityisen avaimen.
Koska Alice ei voi saada b:tä
(Bobin yksityistä avainta), hän ei voi määrittää k0:tä (Bobin
BIP47-vastaanotto-osoitteeseen liittyvä yksityinen avain). Kaavamaisesti
voimme esittää jaetun salaisuuden S laskemisen seuraavasti:
Kun jaettu salaisuus on löydetty ECDH:n avulla, Alice ja Bob laskevat
BIP47-maksun julkisen avaimen K0, ja Bob laskee myös siihen liittyvän yksityisen avaimen k0 :
BIP47-maksun palautus
Koska Bob tietää Alicen uudelleenkäytettävän maksukoodin, hänellä on jo
kaikki tiedot, joita hän tarvitsee lähettää Alicelle hyvityksen. Hänen ei
tarvitse ottaa yhteyttä Aliceen uudelleen kysyäkseen mitään tietoja. Hänen
tarvitsee vain ilmoittaa siitä Alicelle ilmoitustapahtumalla, jotta tämä voi
hakea BIP47-osoitteensa siemenellään, ja sitten hän voi myös lähettää
Alicelle enintään 2^32 maksua.
Palautusominaisuus on BIP47:n erityispiirre, ja se on yksi sen eduista verrattuna muihin menetelmiin, kuten Hiljaisiin maksuihin, joita tarkastelemme myöhemmissä luvuissa.
Bob voi sitten korvata Liisalle maksun samalla tavalla kuin Alice lähetti hänelle maksuja. Roolit ovat päinvastaiset:
*Suuret kiitokset Fanis Michalakisille oikoluvusta ja asiantuntevista neuvoista tämän luvun kirjoittamiseen innoittaneen artikkelin osalta!
https://planb.network/tutorials/privacy/on-chain/paynym-bip47-a492a70b-50eb-4f95-a766-bae2c5535093
Hiljaiset maksut
BIP47:ää on kritisoitu laajalti sen tehottomuudesta ketjussa. Kuten edellisessä luvussa selitettiin, se edellyttää ilmoitustapahtuman suorittamista jokaisen uuden vastaanottajan kohdalla. Tästä rajoituksesta tulee vähämerkityksinen, jos aiomme luoda kestävän maksukanavan tämän vastaanottajan kanssa. Yksi ilmoitustapahtuma tasoittaa tietä lähes äärettömälle määrälle myöhempiä BIP47-maksuja.
Tietyissä tilanteissa ilmoitustapahtuma voi kuitenkin olla käyttäjälle esteenä. Otetaan esimerkki kertaluonteisesta lahjoituksesta vastaanottajalle: klassisella Bitcoin-osoitteella yksi transaktio riittää lahjoituksen loppuunsaattamiseen. Mutta BIP47-osoitteessa tarvitaan kaksi transaktiota: yksi ilmoitusta varten ja toinen varsinaista maksua varten. Kun lohkotilan kysyntä on vähäistä ja transaktiomaksut alhaisia, tämä ylimääräinen vaihe ei yleensä ole ongelma. Ruuhka-aikoina transaktiomaksut voivat kuitenkin nousta kohtuuttoman korkeiksi yhdestä maksusta, jolloin käyttäjän kustannukset saattavat kaksinkertaistua tavanomaiseen Bitcoin-tapahtumaan verrattuna, mikä voi osoittautua käyttäjälle mahdottomaksi hyväksyä.
Tilanteisiin, joissa käyttäjä aikoo suorittaa vain muutamia maksuja staattiseen tunnisteeseen, on kehitetty muita ratkaisuja. Näitä ovat esimerkiksi hiljaiset maksut, jotka on kuvattu asiakirjassa [BIP352] (https://github.com/bitcoin/bips/blob/master/bip-0352.mediawiki). Tämä protokolla mahdollistaa staattisen tunnisteen käyttämisen maksujen vastaanottamiseen ilman osoitteen uudelleenkäyttöä ja vaatimatta ilmoitustapahtumien käyttöä. Katsotaanpa, miten tämä protokolla toimii.
Tämän luvun ymmärtäminen edellyttää ECDH:n (Elliptic Curve Diffie-Hellman) ja HD-lompakon salausavainten johtamisen hallintaa. Näitä käsitteitä käsiteltiin yksityiskohtaisesti edellisessä luvussa BIP47. En toista niitä tässä. Jos et vielä tunne näitä käsitteitä, suosittelen, että tutustut edelliseen lukuun ennen kuin jatkat tähän lukuun. En käy vielä kerran läpi vastaanotto-osoitteiden uudelleenkäyttöön liittyviä riskejä enkä sitä, miten tärkeää on, että maksujen vastaanottamisessa on yksilöllinen tunniste. Mainitsen vain muutaman seikan, jotka haluan tässä yhteydessä tuoda esiin
Miksi ilmoitusta ei siirretä?
Kuten luvussa BIP47 käsitellään, ilmoitustapahtumalla on kaksi päätehtävää:
- Se ilmoittaa vastaanottajalle ;
- Se välittää lähettäjän maksukoodin.
Naiivisti voisi ajatella, että tämä ilmoitusprosessi voitaisiin toteuttaa ketjun ulkopuolella. Teoriassa se on täysin mahdollista: vastaanottajan tarvitsee vain ilmoittaa viestintäväline, jolla hän voi vastaanottaa BIP47-maksukoodit lähettäjiltä. Tässä lähestymistavassa on kuitenkin kaksi suurta ongelmaa:
- Ensinnäkin se siirtäisi koodinsiirtoprosessin toiseen viestintäprotokollaan. Vaihdon kustannuksiin ja luottamuksellisuuteen liittyvät ongelmat säilyisivät, mutta ne vain siirrettäisiin tähän uuteen protokollaan. Luottamuksellisuuden osalta tämä voisi myös luoda yhteyden käyttäjän henkilöllisyyden ja ketjussa tapahtuvan toiminnan välille, minkä pyrimme välttämään suorittamalla ilmoituksen suoraan lohkoketjussa. Lisäksi ilmoituksen tekeminen lohkoketjun ulkopuolella toisi mukanaan sensuuririskejä (kuten varojen estäminen), joita ei ole Bitcoinissa;
- Toiseksi tämä aiheuttaisi palautusongelman. BIP47:ssä vastaanottajan on tiedettävä lähettäjien maksukoodit, jotta hän voi käyttää varoja. Tämä pätee sekä vastaanotettaessa että siinä tapauksessa, että varat saadaan takaisin siemenen kautta, jos lompakko katoaa. Onchain-ilmoituksissa tämä riski vältetään, sillä käyttäjä voi hakea ja purkaa ilmoitustapahtumat yksinkertaisesti tietämällä siemenensä. Jos ilmoitus kuitenkin tehdään lohkoketjun ulkopuolella, käyttäjän olisi pidettävä yllä dynaamista varmuuskopiota kaikista saamistaan maksukoodeista, mikä on keskivertokäyttäjän kannalta epäkäytännöllistä.
Kaikki nämä rajoitukset tekevät ketjussa tapahtuvan ilmoittamisen käytöstä olennaisen tärkeää BIP47:lle. Silent Payments pyrkii kuitenkin välttämään tätä ketjussa tapahtuvaa ilmoitusvaihetta juuri sen kustannusten vuoksi. Ratkaisu ei siis ole ilmoituksen siirtäminen vaan sen poistaminen kokonaan. Tätä varten on hyväksyttävä kompromissi: skannaus. Toisin kuin BIP47:ssä, jossa käyttäjä tietää tarkalleen, mistä hän löytää varansa ilmoitustapahtumien ansiosta, Hiljaisissa maksuissa käyttäjän on tutkittava kaikki olemassa olevat Bitcoin-tapahtumat havaitakseen hänelle tarkoitetut maksut. Tämän toiminnallisen taakan vähentämiseksi Silent Payments -haun rajoitetaan koskemaan vain transaktioita, jotka todennäköisesti sisältävät tällaisia maksuja, eli transaktioita, joissa on vähintään yksi Taproot P2TR -tuloste. Etsintä keskittyy myös yksinomaan lompakon luontipäivämäärän jälkeisiin tapahtumiin (ei ole tarpeen etsiä tapahtumia vuodesta 2009, jos lompakko on luotu vuonna 2024).
Voit siis ymmärtää, että vaikka BIP47:llä ja Hiljaisilla maksuilla on samankaltainen tavoite, niihin liittyy erilaisia kompromisseja, ja siksi ne todellisuudessa vastaavat eri käyttötarkoituksia. Kertaluonteisiin maksuihin, kuten kertaluonteisiin lahjoituksiin, hiljaiset maksut soveltuvat paremmin, koska niiden kustannukset ovat alhaisemmat. Toisaalta BIP47 voi olla parempi vaihtoehto, kun kyseessä ovat säännölliset maksut samalle vastaanottajalle, kuten vaihtoalustojen tai kaivospoolien tapauksessa.
Katsotaanpa Silent Paymentsin teknistä toimintaa, jotta ymmärretään paremmin, mistä on kyse. Tätä varten ehdotan, että noudatamme samaa lähestymistapaa kuin BIP352:n selittävässä asiakirjassa. Puramme vähitellen suoritettavat laskelmat elementti elementiltä ja perustelemme jokaisen uuden lisäyksen.
Muutamia käsitteitä ymmärrettäväksi
Ennen kuin aloitamme, on tärkeää huomauttaa, että Hiljaiset maksut perustuvat yksinomaan P2TR-skriptityyppien (Pay to Taproot) käyttöön. Toisin kuin BIP47:ssä, vastaanottoosoitteita ei tarvitse johtaa lasten julkisista avaimista hashaamalla. P2TR-standardissa muokattua julkista avainta käytetään suoraan ja salaamattomana osoitteessa. Taproot-vastaanotto-osoite on siis pohjimmiltaan julkinen avain, johon on liitetty joitakin metatietoja. Tämä muokattu julkinen avain on kahden muun julkisen avaimen yhdistelmä: toinen mahdollistaa suoran, perinteisen rahankäytön yksinkertaisella allekirjoituksella ja toinen edustaa MASTin Merkle-juurta, joka valtuuttaa rahankäytön, jos jokin Merkle-puuhun mahdollisesti kirjatuista ehdoista täyttyy.
Päätökselle rajoittaa Silent Payments yksinomaan Taprootiin on kaksi pääsyytä:
- Ensinnäkin se helpottaa huomattavasti salkkuohjelmistojen käyttöönottoa ja tulevia päivityksiä, koska on noudatettava vain yhtä standardia;
- Toiseksi tämä lähestymistapa auttaa parantamaan käyttäjien anonsetia kannustamalla heitä olemaan jakamatta itseään erityyppisiin skripteihin, jotka tuottavat ketjuanalyysissä erillisiä salkun sormenjälkiä (lisätietoja tästä käsitteestä on osan 2 luvussa 4).
Hiljaisten maksujen julkisen avaimen naiivi johtaminen
Aloitetaan yksinkertaisella esimerkillä, jotta pääsemme perille siitä, miten SP:t (hiljaiset maksut) toimivat. Otetaan Alice ja Bob, kaksi Bitcoin-käyttäjää. Alice haluaa lähettää Bitcoineja Bobille tyhjään vastaanotto-osoitteeseen. Tällä prosessilla on kolme tavoitetta:
- Alicen on pystyttävä luomaan tyhjä osoite;
- Bobin on pystyttävä tunnistamaan tähän tiettyyn osoitteeseen lähetetty maksu;
- Bobin on saatava tähän osoitteeseen liittyvä yksityinen avain, jotta hän voi käyttää varansa.
Alicella on UTXO suojatussa Bitcoin-lompakossaan seuraavalla avainparilla:
a: yksityinen avain ;A: julkinen avain (A = a \cdot G)
Bobilla on SP-osoite, jonka hän on julkaissut Internetissä osoitteella :
b: yksityinen avain ;B: julkinen avain (B = b \cdot G)
Saamalla Bobin osoitteen Alice pystyy laskemaan uuden tyhjän osoitteen, joka
kuuluu Bobille ECDH:n avulla. Kutsutaan tätä osoitetta P :
$$ P = B + \text{hash}(a \cdot B) \cdot G $$$
Tässä yhtälössä Alice on yksinkertaisesti laskenut yksityisen avaimensa a ja Bobin julkisen avaimen B skalaaritulon. Hän on syöttänyt tämän tuloksen kaikkien tuntemaan
hash-funktioon. Tuloksena saatu arvo kerrotaan sitten skalaarisesti
elliptisen käyrän secp256k1 generointipisteellä G. Lopuksi Alice lisää
tuloksena saadun pisteen Bobin julkiseen avaimeen B. Kun Alicella on tämä
osoite P, hän käyttää sitä
transaktion tulona eli lähettää siihen bitcoineja.
*Hiljaisten maksujen yhteydessä 'hash'-funktio vastaa SHA256-hash-funktiota, joka on erityisesti merkitty tunnisteella
BIP0352/SharedSecret, jolla varmistetaan, että luodut hashit ovat ainutlaatuisia tämän protokollan osalta eikä niitä voida käyttää uudelleen muissa yhteyksissä, ja joka samalla tarjoaa lisäsuojaa allekirjoituksissa käytettävien noncesien uudelleenkäyttöä vastaan. Tämä standardi vastaa [BIP340:ssä Schnorr-allekirjoituksille määriteltyä] (https://github.com/bitcoin/bips/blob/master/bip-0340.mediawiki) standardia "secp256k1":ssä. * ECDH:n perustana olevan elliptisen käyrän ominaisuuksien ansiosta tiedämme, että :
$$ a \cdot B = b \cdot A $$$
Bob pystyy siis laskemaan vastaanottavan osoitteen, johon Alice on lähettänyt bitcoineja. Tätä varten hän tarkkailee kaikkia Hiljaisten maksujen kriteerit täyttäviä Bitcoin-tapahtumia ja soveltaa kuhunkin niistä seuraavaa laskutoimitusta nähdäkseen, onko maksu osoitettu hänelle (skannaus):
$$ P' = B + \text{hash}(b \cdot A) \cdot G $$$
Kun hän skannaa Alicen tapahtuman, hän huomaa, että P' on yhtä suuri kuin P. Hän
siis tietää, että maksu on osoitettu Aliceen:
P' = B + \text{hash}(b \cdot A) \cdot G = B +
\text{hash}(a \cdot B) \cdot G = P $$
Tästä Bob voi laskea yksityisen avaimen p, jonka avulla osoite P voidaan
käyttää:
p = (b + \text{hash}(b \cdot A)) \bmod n $$
Kuten näet, tämän yksityisen avaimen p laskeminen edellyttää, että sinulla on yksityinen avain b. Vain Bobilla on tämä
yksityinen avain b. Hän on
siis ainoa, joka voi käyttää hänen Silent Payments -osoitteeseensa lähetetyt
bitcoinit.
Legenda:
B: Bobin julkaisema julkinen avain / staattinen osoiteb: Bobin yksityinen avainA: Alicen UTXO-avain, jota käytetään tapahtuman syöttötietonaa: Alicen yksityinen avainG: Elliptisen käyränsecp256k1generointipiste\text{SHA256}: SHA256-hajausfunktio, joka on merkitty tunnisteellaBIP0352/SharedSecrets: ECDH:n yhteinen salaisuusP: Julkinen avain/yksilöllinen osoite, josta maksu suoritetaan Bobille
Seuraavassa on melko naiivi lähestymistapa, jossa Bobin staattista
osoitetta, B, käytetään
yksilöllisen osoitteen P saamiseksi,
johon bitcoineja lähetetään. Menetelmä on kuitenkin liian yksinkertainen, ja
siinä on useita puutteita, jotka on korjattava. Ensimmäinen ongelma on se, että
tässä järjestelmässä Alice ei voi luoda useita lähetteitä Bobille samassa transaktiossa.
Miten luon useita tuotoksia?
Edellisen jakson esimerkissä Alice luo yhden tulosteen, joka lähetetään
Bobille hänen yksilölliseen osoitteeseensa P. Kun sama tulo on valittu, Liisa ei voi luoda Bobille kahta erillistä
tyhjää osoitetta, koska käytetty menetelmä johtaisi aina samaan tulokseen P:lle eli samaan
osoitteeseen. Voi kuitenkin olla monia tilanteita, joissa Alice haluaa jakaa
maksunsa Bobille useampaan pienempään summaan ja luoda siten useita
UTXO-osoitteita. Tämän vuoksi on tarpeen löytää menetelmä, jolla tämä
voidaan toteuttaa.
Tätä varten muutamme hieman laskutoimitusta, jonka Alice suorittaa
saadakseen P:n, niin että hän
voi luoda Bobille kaksi eri osoitetta, nimittäin P_0 ja P_1.
Jos haluat muuttaa laskutoimitusta ja saada kaksi eri osoitetta, voit
yksinkertaisesti lisätä tulosta muuttavan kokonaisluvun. Alice siis lisää
laskelmaan 0 saadakseen
osoitteen P_0 ja 1 saadakseen osoitteen P_1.
Kutsutaan tätä kokonaislukua i :
P_i = B + \text{hash}(a \cdot B \text{ ‖ } i) \cdot G $$
Laskentaprosessi pysyy muuttumattomana edelliseen menetelmään verrattuna,
paitsi että tällä kertaa Alice yhdistää a \cdot B ja i ennen hash-määrityksen
aloittamista. Tämän jälkeen yksinkertaisesti muutetaan i, jotta saadaan uusi Bobille
kuuluva osoite. Esimerkiksi:
P_0 = B + \text{hash}(a \cdot B \text{ ‖ } 0) \cdot G $$
$$ P_1 = B + \text{hash}(a \cdot B \text{ ‖ } 1) \cdot G $$$
Kun Bob etsii lohkoketjusta hänelle tarkoitettuja Hiljaisia maksuja, hän
aloittaa käyttämällä i = 0 osoitetta P_0. Jos hän ei
löydä yhtään maksua osoitteesta P_0, hän päättelee, että tämä
transaktio ei sisällä hänelle tarkoitettuja hiljaisia maksuja, ja keskeyttää
skannauksen. Jos P_0 on
kuitenkin kelvollinen ja sisältää hänelle tarkoitetun maksun, hän jatkaa P_1:llä samassa tapahtumassa
tarkistaakseen, onko Alice suorittanut toisen maksun. Jos P_1 osoittautuu virheelliseksi, hän lopettaa tämän tapahtuman etsimisen; muussa
tapauksessa hän jatkaa peräkkäisten i-arvojen testaamista:
$$ P_0 = B + \text{hash}(b \cdot A \text{ ‖ } 0) \cdot G $$$
$$ P_1 = B + \text{hash}(b \cdot A \text{ ‖ } 1) \cdot G $$$
Koska Bob pysähtyy välittömästi arvoon i = 0, jos P_0 ei toimi, tämän kokonaisluvun
käyttäminen ei lisää Bobin toimintakuormitusta tapahtuman skannausvaiheessa juuri
lainkaan.
Bob voi sitten laskea yksityiset avaimet samalla tavalla:
p_0 = (b + \text{hash}(b \cdot A \text{ ‖ } 0)) \bmod n p_1 = (b + \text{hash}(b \cdot A \text{ ‖ } 1)) \bmod n
Legenda:
B: Bobin julkaisema julkinen avain / staattinen osoiteb: Bobin yksityinen avainA: Alicen UTXO-avain, jota käytetään tapahtuman syöttötietonaa: Alicen yksityinen avainG: Elliptisen käyränsecp256k1generointipiste\text{SHA256}: SHA256-hajausfunktio, joka on merkitty tunnisteellaBIP0352/SharedSecrets_0: ensimmäinen yhteinen salaisuus ECDHs_1: Toinen ECDH:n yhteinen salaisuusP_0: Ensimmäinen julkinen avain / yksilöllinen osoite Bobille suoritettavaa maksua vartenP_1: Toinen julkinen avain / yksilöllinen osoite Bobille suoritettavaa maksua varten
Tällä menetelmällä alamme saada aikaan hienon protokollan, mutta vielä on ratkaistavana muutamia haasteita, eikä vähiten osoitteiden uudelleenkäytön estäminen.
Miten vältetään osoitteen uudelleenkäyttö?
Kuten edellisissä jaksoissa todettiin, Alice käyttää UTXO:nsa suojaavaa
avainparia, jonka avulla hän laskee jaetun ECDH-salaisuuden Bobin kanssa.
Tämän salaisuuden avulla hän voi johtaa yksilöllisen osoitteen P_0. Alicen käyttämä avainpari (a, A) voi kuitenkin turvata
useita UTXO:ita, jos hän on käyttänyt tätä osoitetta useita kertoja. Jos
Alice suorittaa kaksi maksua Bobin staattiseen osoitteeseen B käyttäen kahta UTXO:ta, jotka on suojattu samalla avaimella A, Bob käyttää osoitetta
uudelleen.
Osoitteiden uudelleenkäyttö on erittäin huono käytäntö käyttäjän luottamuksellisuuden kannalta. Jos haluat tietää miksi, suosittelen sinua tutustumaan tämän kurssin ensimmäisiin osiin. Koska ainutkertainen osoite
P_0on johdettuA:sta jaB:sta, jos Alice johtaa toisen osoitteen toista maksua vartenB:lle samalla avaimellaA, hän päätyy täsmälleen samaan osoitteeseenP_0. Tämän riskin välttämiseksi ja osoitteen uudelleenkäytön estämiseksi Hiljaisten maksujen sisällä meidän on muutettava laskelmiamme hieman.
Haluamme, että jokainen UTXO, jonka Alice käyttää maksun syötteenä, antaa
Bobin puolella yksilöllisen osoitteen, vaikka useat UTXO:t olisi suojattu
samalla avainparilla. Meidän on siis vain lisättävä viittaus UTXO:hon
laskettaessa yksilöllistä osoitetta P_0. Tämä viittaus on yksinkertaisesti syötteenä käytetyn UTXO:n hash:
\text{inputHash} =
\text{hash}(\text{outpoint} \text{ ‖ } A) $$
Alice lisää tämän viittauksen yksilöllisen osoitteen P_0 laskennan syötteeksi:
P_0 = B + \text{hash}(\text{inputHash} \cdot a \cdot
B \text{ ‖ } 0) \cdot G$
Skannatessaan Bob voi myös lisätä \text{inputHash}, koska hänen tarvitsee vain tarkkailla tapahtumaa päättääkseen \text{outpoint} :
P_0 = B + \text{hash}(\text{inputHash} \cdot b \cdot
A \text{ ‖ } 0) \cdot G$
Kun se löytää kelvollisen P_0:n, se voi laskea vastaavan p_0:n yksityisen avaimen:
p_0 = (b + \text{hash}(\text{inputHash} \cdot b \cdot A \text{ ‖ } 0)) \bmod n
Legenda:
B: Bobin julkaisema julkinen avain / staattinen osoiteb: Bobin yksityinen avainA: Alicen UTXO-avain, jota käytetään tapahtuman syöttötietonaa: Alicen yksityinen avainH: syötteenä käytetty UTXO-hashG: Elliptisen käyränsecp256k1generointipiste\text{SHA256}: SHA256-hajausfunktio, joka on merkitty tunnisteellaBIP0352/SharedSecrets_0: Ensimmäinen ECDH:n yhteinen salaisuusP_0: Ensimmäinen julkinen avain / yksilöllinen osoite Bobille suoritettavaa maksua varten
Laskelmissamme oletetaan toistaiseksi, että Liisa käyttää liiketoimessaan yhtä syötettä. Hänen pitäisi kuitenkin pystyä käyttämään useita syötteitä. Näin ollen Bobin pitäisi teoriassa laskea ECDH jokaiselle syötteelle jokaisesta tapahtumasta, johon liittyy useita syötteitä, määrittääkseen, onko maksu tarkoitettu hänelle. Tämä menetelmä ei ole tyydyttävä, joten meidän on löydettävä ratkaisu työmäärän vähentämiseksi!
Julkisten avainten muokkaaminen syötteiksi
Tämän ongelman ratkaisemiseksi käytämme sen sijaan, että käytämme avainparia, joka varmistaa tietyn syötteen Alicen puolella, kaikkien tapahtuman syötteissä käytettyjen avainparien summaa. Tätä summaa pidetään sitten uutena avainparina. Tämä tekniikka tunnetaan nimellä "tweaking".
Kuvitellaan esimerkiksi, että Alicen transaktiossa on kolme syötettä, joista jokainen on suojattu eri avainparilla:
a_0:tä käytetään suojaamaan tulo #0 ;a_1käytetään syötteen #1 suojaamiseen;a_2varmistaa tulon nro 2.
Aiemmin kuvatun menetelmän mukaisesti Alicen on valittava yksi avainpari
seuraavista: a_0, a_1 ja a_2 ECDH-salaisuuden
laskemiseksi ja yksittäisen maksuosoitteen P luomiseksi Bobin staattisesta osoitteesta B. Tämä lähestymistapa
edellyttää kuitenkin, että Bob testaa jokaisen vaihtoehdon peräkkäin
aloittaen a_0:lla, sitten a_1:lla ja niin edelleen,
kunnes hän löytää parin, joka tuottaa kelvollisen P-osoitteen. Tämä prosessi
edellyttää, että Bob suorittaa ECDH-laskennan kaikkien transaktioiden
kaikille syötteille, mikä lisää huomattavasti skannauksen operatiivista
kuormitusta.
Tämän välttämiseksi pyydämme Alicea laskemaan P käyttäen kaikkien syötettyjen avainten summaa. Esimerkissämme muokattu
yksityinen avain a lasketaan seuraavasti:
$$ a = a_0 + a_1 + a_2 $$$
Samalla tavalla Alice ja Bob voivat laskea viritetyn julkisen avaimen:
$$ A = A_0 + A_1 + A_2 $$$
Tällä menetelmällä Bobin tarvitsee vain laskea transaktion julkisten
avainten summa ja laskea sitten ECDH-salaisuus pelkän A:n perusteella, mikä vähentää huomattavasti skannausvaiheessa tarvittavien
laskutoimitusten määrää.
Muista kuitenkin edellinen jakso. Olimme lisänneet laskelmaamme \text{inputHash}-hashin, jota käytetään nonceena osoitteen uudelleenkäytön välttämiseksi:
\text{inputHash} =
\text{hash}(\text{outpoint} \text{ ‖ } A) $$
Mutta jos sinulla on useita syötteitä tapahtumassa, sinun on voitava
määrittää, mikä \text{outpoint} valitaan tässä laskennassa. BIP352:n mukaan \text{outpoint}-valintaperusteena on valita pienin leksikografisesti, mikä tarkoittaa,
että valitaan aakkosjärjestyksessä ensimmäisenä esiintyvä UTXO. Tällä
menetelmällä vakioidaan kussakin tapahtumassa valittava UTXO. Jos
esimerkiksi leksikografisesti pienin \text{outpoint} on \text{outpoint}_L, \text{inputHash}:n
laskenta on :
\text{inputHash} =
\text{hash}(\text{outpoint}_ L \text{ ‖ } A) $$
Laskutoimitukset pysyvät tällöin samanlaisina kuin edellisessä jaksossa
esitetyt, paitsi että yksityinen avain a ja sitä vastaava julkinen avain A eivät enää ole pari, jota käytetään
yhden syötteen suojaamiseen, vaan ne edustavat nyt kaikkien syötteiden avainparien
viritystä.
Erilliset kulu- ja skannausavaimet
Olemme toistaiseksi kutsuneet Silent Paymentin staattista osoitetta B ainutlaatuiseksi julkiseksi avaimeksi. Muista, että Alice käyttää tätä
julkista avainta B luodakseen
jaetun salaisuuden ECDH, joka puolestaan laskee yksilöllisen maksuosoitteen P. Bob käyttää tätä julkista
avainta B ja vastaavaa
yksityistä avainta b skannausvaiheessa. Mutta hän käyttää myös yksityistä avainta b laskeakseen yksityisen avaimen p, joka mahdollistaa
maksamisen osoitteesta P.
Tämän menetelmän haittapuolena on se, että Bob käyttää myös b:n yksityistä avainta, jota käytetään kaikkien hiljaisia maksuja
vastaanottaneiden osoitteiden yksityisten avainten laskemiseen, tapahtumien
skannaamiseen. Tämä vaihe edellyttää, että b-avain on saatavilla
internetiin liitetyssä lompakko-ohjelmistossa, mikä altistaa sen suuremmalle
varkausriskille kuin sen säilyttäminen kylmässä lompakossa.
Ihannetapauksessa olisi hyödyllistä pystyä hyödyntämään Hiljaisia maksuja ja
pitää samalla b:n yksityinen
avain, joka valvoo pääsyä kaikkiin muihin yksityisiin avaimiin, turvassa
laitteistolompakossa. Onneksi protokollaa on mukautettu niin, että se
mahdollistaa juuri tämän.
Tätä varten BIP352 edellyttää, että vastaanotin käyttää kahta eri avainparia:
- b_{\text{spend}}}$: yksilöllisten maksuosoitteiden yksityisten avainten laskemiseen;
- b_{\text{scan}}$: yksilöllisten maksuosoitteiden etsiminen.
Tällä tavoin Bob voi pitää yksityisen avaimen b_{\text{spend}} laitteiston lompakossa ja käyttää yksityistä avainta b_{\text{scan}} online-ohjelmistossa löytääkseen Hiljaiset maksunsa paljastamatta b_{\text{spend}}. Toisaalta julkiset avaimet B_{\text{scan}}} ja B_{\text{spend}}} paljastuvat molemmat julkisesti, koska ne sijaitsevat Bobin staattisessa
osoitteessa B :
B = B_{\text{scan}} \text{ ‖ }
B_{\text{spend}}
Laskeakseen Bobille kuuluvan yksilöllisen maksuosoitteen P_0 Alice suorittaa nyt seuraavan laskutoimituksen:
P_0 = B_{\text{spend}} +
\text{hash}(\text{inputHash} \cdot a \cdot
B_{\text{scan}} \text{ ‖ } 0) \cdot G
Bob tekee seuraavan laskelman saadakseen selville hänelle osoitetut maksut:
P_0 = B_{\text{spend}} +
\text{hash}(\text{inputHash} \cdot
b_{\text{scan}} \cdot A \text{ ‖ } 0) \cdot
G
Kuten näet, Bobin ei ole toistaiseksi tarvinnut käyttää b_{\text{spend}}, joka on hänen laitteistolompakossaan. Kun hän haluaa käyttää P_0, hän voi tehdä seuraavan
laskutoimituksen löytääkseen yksityisen avaimen p_0 :
p_0 = (b_{\text{spend}} +
\text{hash}(\text{inputHash} \cdot
b_{\text{scan}} \cdot A \text{ ‖ } 0)) \bmod
n
Legenda:
B_{\text{scan}}: Bobin julkinen skannausavain (staattinen osoite)b_{\text{scan}}: Bobin yksityinen skannausavainB_{\text{spend}}: Bobin julkinen rahankäyttöavain (staattinen osoite)b_{\text{spend}}: Bobin yksityinen rahankäyttöavainA: Julkisen avaimen syötteiden summa (hienosäätö)a: Yksityinen avain, joka vastaa muokattua julkista avaintaH: syötteenä käytetyn pienimmän UTXO:n hash (leksikografisesti)G: Elliptisen käyränsecp256k1generointipiste\text{SHA256}: SHA256-hajausfunktio, joka on merkitty tunnisteellaBIP0352/SharedSecrets_0: ensimmäinen yhteinen salaisuus ECDHP_0: Ensimmäinen julkinen avain / yksilöllinen osoite Bobille suoritettavaa maksua varten
SP-osoitteiden käyttäminen etiketin kanssa
Bobilla on siis staattinen osoite B hiljaisia maksuja varten, kuten :
B = B_{\text{scan}} \text{ ‖ }
B_{\text{spend}}
Tämän menetelmän ongelmana on se, että sen avulla et voi erottaa eri maksuja, jotka lähetetään tähän osoitteeseen. Jos Bobilla on esimerkiksi kaksi eri asiakasta ja hän haluaa erottaa maksut kummallekin, hän tarvitsee kaksi eri staattista osoitetta. Naiivi ratkaisu nykyisellä lähestymistavalla olisi, että Bob loisi kaksi erillistä lompakkoa, joilla kummallakin olisi oma staattinen osoite, tai jopa kaksi eri staattista osoitetta saman lompakon sisällä. Tämä ratkaisu edellyttää kuitenkin koko lohkoketjun skannaamista kahdesti (kerran kummallekin osoitteelle), jotta kummallekin osoitteelle tarkoitetut maksut voidaan havaita. Tämä kaksinkertainen skannaus lisää kohtuuttomasti Bobin toimintakuormaa.
Tämän ongelman ratkaisemiseksi BIP352 käyttää etikettijärjestelmää, joka
sallii erilaiset staattiset osoitteet ilman, että hiljaisten maksujen
löytäminen lohkoketjusta lisää kohtuuttomasti työmäärää. Tätä varten
lisätään kokonaisluku m julkiseen menoavaimeen B_{\text{spend}}. Tämä kokonaisluku voi saada arvon 1 ensimmäiselle staattiselle osoitteelle, 2 toiselle ja niin edelleen. Kulutusavaimia B_{\text{spend}} kutsutaan nyt nimellä B_m, ja
ne rakennetaan näin:
B_m = B_{\text{spend}} +
\text{hash}(b_{\text{scan}} \text{ ‖
} m) \cdot G $
Esimerkiksi ensimmäiselle kustannusavaimelle, jonka nimi on 1 :
B_1 = B_{\text{spend}} +
\text{hash}(b_{\text{scan}} \text{ ‖
} 1) \cdot G
Bobin julkaisema staattinen osoite koostuu nyt seuraavista osista: B_{\text{scan}} ja B_m. Esimerkiksi
ensimmäinen staattinen osoite, jossa on merkintä 1, on :
B = B_{\text{scan}} \text{ ‖ } B_1
Aloitamme vain etiketistä 1, koska etiketti 0 on varattu muutosta varten. Liisa puolestaan johtaa yksittäisen maksun osoitteen
Psamalla tavalla kuin aiemmin, mutta käyttäen uuttaB_1B_{\text{spend}}:n sijastaB_{\text{spend}}:
P_0 = B_1 + \text{hash}(\text{inputHash} \cdot a
\cdot B_{\text{scan}} \text{ ‖ } 0) \cdot G$
Todellisuudessa Alice ei edes välttämättä tiedä, että Bobilla on merkitty
osoite, sillä hän käyttää vain Bobin antaman staattisen osoitteen toista
osaa, ja tässä tapauksessa se on arvo B_1 eikä B_{text{spend}}.
Maksujen skannaamiseen Bob käyttää aina alkuperäisen staattisen osoitteensa
arvoa B_{\text{spend}}:n kanssa tällä tavalla:
P_0 = B_{\text{spend}} +
\text{hash}(\text{inputHash} \cdot
b_{\text{scan}} \cdot A \text{ ‖ } 0) \cdot
G
Sitten hän yksinkertaisesti vähentää P_0:lle löytämänsä arvon jokaisesta ulostulosta yksi kerrallaan. Sitten hän
tarkistaa, vastaako jokin näiden vähennysten tuloksista yhden portfoliossaan
käyttämänsä merkinnän arvoa. Jos esimerkiksi ulostulo #4 vastaa merkintää 1 , tämä tarkoittaa, että tämä ulostulo on hiljainen maksu, joka liittyy sen
staattisesti merkittyyn osoitteeseen B_1 :
Out_4 - P_0 = \text{hash}(b_{\text{scan}}
\text{ ‖ } 1) \cdot G $$
Se toimii, koska :
B_1 = B_{\text{spend}} +
\text{hash}(b_{\text{scan}} \text{ ‖
} 1) \cdot G
Tämän menetelmän ansiosta Bob voi käyttää useita staattisia osoitteita (B_1, B_2, B_3...), jotka kaikki on
johdettu hänen staattisesta perusosoitteestaan (B = B_{\text{scan}} \text{ ‖ }
B_{\text{spend}}}), jotta käyttö pysyy erillään.
Huomaa kuitenkin, että tämä staattisten osoitteiden erottelu on voimassa
vain henkilökohtaisen salkunhallinnan näkökulmasta, mutta se ei erota
identiteettejä. Koska niillä kaikilla on sama B_{\text{scan}}, on hyvin helppoa yhdistää kaikki staattiset osoitteet yhteen ja päätellä,
että ne kuuluvat yhdelle kokonaisuudelle.
Legenda:
B_{\text{scan}}: Bobin julkinen skannausavain (staattinen osoite)b_{\text{scan}}: Bobin yksityinen skannausavainB_{\text{spend}}: Bobin julkinen rahankäyttöavain (alkuosoite)B_m: Bobin julkinen rahankäyttöavain merkittynä (staattinen osoite)b_m: Bobin yksityinen rahankäyttöavain, joka on merkitty merkinnälläA: Julkisen avaimen syötteiden summa (hienosäätö)a: Yksityinen avain, joka vastaa muokattua julkista avaintaH: syötteenä käytetyn pienimmän UTXO:n hash (leksikografisesti)G: Elliptisen käyränsecp256k1generointipiste\text{SHA256}: SHA256-hajausfunktio, joka on merkitty tunnisteellaBIP0352/SharedSecrets_0: Ensimmäinen ECDH:n yhteinen salaisuusP_0: Ensimmäinen julkinen avain / yksilöllinen osoite Bobille suoritettavaa maksua vartenp_0: Bobin ensimmäisen yksilöllisen maksuosoitteen yksityinen avainX: Skannattavan yksityisen avaimen hash, jossa on merkintä
Miten rakennan Hiljaiset maksut -osoitteen?
Jotta voit luoda osoitteen, joka on omistettu Hiljaisille maksuille, sinun on ensin saatava kaksi avainparia Bitcoin HD -lompakostasi:
- Pari
b_{\text{scan}},B_{\text{scan}}, jolla etsitään meille osoitettuja maksuja; - Pari
b_{\text{spend}},B_{\text{spend}}}ajattelemaan saamiamme bitcoineja.
Nämä parit johdetaan seuraavien polkujen avulla (Bitcoin Mainnet):
scan : m / 352' / 0' / 0' / 1' / 0
spend : m / 352' / 0' / 0' / 0' / 0
Kun meillä on nämä kaksi avainparia, yhdistämme ne yksinkertaisesti (päästä päähän) luodaksemme staattisen osoitteen hyötykuorman:
B = B_{\text{scan}} \text{ ‖ }
B_{\text{spend}}
Jos haluamme käyttää merkintöjä, korvaamme B_{\text{spend}} arvolla B_m :
B = B_{\text{scan}} \text{ ‖ } B_m $$
Merkillä m :
B_m = B_{\text{spend}} +
\text{hash}(b_{\text{scan}} \text{ ‖
} m) \cdot G $
Kun tämä hyötykuorma on saatu, lisätään HRP (Human-Readable Part) sp ja versio q (= versio 0). Lisäämme myös tarkistussumman ja muotoilemme
osoitteen muotoon bech32m.
Esimerkiksi tässä on minun Hiljaiset maksut -palveluni staattinen osoite:
sp1qqvhjvsq2vz8zwrw372vuzle7472zup2ql3pz64yn5cpkw5ngv2n6jq4nl8cgm6zmu48yk3eq33ryc7aam6jrvrg0d0uuyzecfhx2wgsumcurv77e
Tärkeä staattisiin osoitteisiin liittyvä seikka, jonka olet ehkä ymmärtänyt
edellisissä kappaleissa, on se, että nämä osoitteet eivät näy
Bitcoin-tapahtumissa. Ainoastaan lähdöissä käytetyt P-maksuosoitteet näkyvät lohkoketjussa tavallisessa Taproot-muodossa.
Ulkopuolelta on siis mahdotonta erottaa Silent Paymentia sisältävää
transaktiota tavallisesta P2TR-ulostuloja käyttävästä transaktiosta.
Kuten BIP47:n tapauksessa, on mahdotonta luoda yhteyttä staattisen osoitteen B ja B:stä johdetun
maksuosoitteen P välille.
Itse asiassa, vaikka Eve, mahdollinen hyökkääjä, yrittäisi skannata
lohkoketjua Bobin staattisella B-osoitteella, hän ei pysty
suorittamaan P:n
määrittämiseen tarvittavia laskutoimituksia. Tähän hän tarvitsisi joko Bobin
yksityisen avaimen b_{\text{scan}} tai lähettäjän yksityiset avaimet a, mutta molemmat ovat
luonnollisesti yksityisiä. On siis mahdollista yhdistää staattinen osoite
nimenomaisesti eräänlaiseen henkilöllisyyteen.
Miten käytän Hiljaisia maksuja?
Hiljaisia maksuja koskeva ehdotus on suhteellisen tuore, ja tällä hetkellä vain hyvin harvat lompakot ovat toteuttaneet sen. Tietääkseni vain kolme ohjelmistotuotetta tukee niitä:
Saat pian yksityiskohtaisen ohjeen siitä, miten voit perustaa oman Hiljaiset maksut -palvelun staattisen osoitteen.
Koska tämä ominaisuus on uusi, suosittelemme varovaisuutta ja välttämään Hiljaisten maksujen käyttämistä suurten summien maksamiseen Mainnetissä.
Tämän hiljaisia maksuja käsittelevän luvun laatimisessa käytin hiljaisten maksujen selityssivustoa ja BIP352-selitysasiakirjaa.
Lopullinen osio
Arvostelut & arvostelut
true
Loppukoe
true
Päätelmä
true
