Bitcoinin käyttäjät voivat jo pitkään hyötyä Taproot-nimisestä temppusta. Ensimmäinen ehdotettu Bitcoin Core -edustajan ja entisen Blockstream-teknologiajohtaja Gregory Maxwellin mukaan Taproot laajentaisi Bitcoinin älykkääseen sopimukseen liittyvää joustavuutta tarjoamalla samalla enemmän yksityisyyttä. Jopa monimutkaisimmat älykkäät sopimukset eivät lohkoketjussa ole tyypillisesti erotettavissa tavallisista liiketoimista.

Vaikka tämä on iso yritys, se ei ole vain teoria. Useat tuottoisimmista Bitcoin Core -operaattoreista – mukaan lukien Pieter Wuille, Anthony Towns, Johnson Lau, Jonas Nick, Andrew Poelstra, Tim Ruffing, Rusty Russell ja todellakin Gregory Maxwell – työskentelevät Schnorr-allekirjoitusehdotuksen parissa, joka sisältäisi Taprootin, kaikki yhdessä protokollapäivityksessä.

Tässä on mitä Taproot on ja miten se toimii.

P2SH

Kaikki bitcoinit ovat olennaisesti “lukittuina” skripteihin: pari riviriviä koodia, jotka on upotettu lohkoketjuun sisältyvään tapahtumaan, jotka määrittelevät, kuinka kolikot voidaan käyttää seuraavassa tapahtumassa. Kulutusolosuhteisiin kuuluu yleensä allekirjoituksen antaminen kolikoiden omistajuuden osoittamiseksi. Mutta muita tunnettuja ehtoja ovat esimerkiksi aikalukot (kolikoita voidaan käyttää vain tietyn lohkon korkeuden tai päivämäärän jälkeen) tai monisika (kolikoita voidaan käyttää vain, jos jokin joukko yksityisiä avaimia yksityisistä avaimista antaa allekirjoituksia).

Eri ehdot voidaan sekoittaa ja sovittaa monimutkaisten älykkäiden sopimusten luomiseksi. Esimerkki tällaisesta sopimuksesta voisi olla, että kolikoita voidaan käyttää, jos sekä Alice että Bob allekirjoittavat, tai jos Alice yksin allekirjoittaa viikon kuluttua, tai jos Bob yksin allekirjoittaa ja antaa samalla salaisen numeron. Kumpi näistä kolmesta ehdosta täyttyy ensin, on se, miten kolikot käytetään.

Vuodesta 2012 lähtien skriptit (ehdot) eivät usein ole aluksi julkisesti näkyvissä; vain uusi kolikoiden omistaja tietää, miten ne voidaan käyttää. Tämä tehdään temppu nimeltä P2SH (pay to script hash), jossa aluksi vain komentosarjan hash sisältyy lohkoketjuun. Tämä näennäisesti satunnaisesti salattu numero pitää kolikot. Kun omistaja käyttää kolikoita, hän paljastaa koko käsikirjoituksen yhtä hyvin kuin komentosarjan “ratkaisu” samaan aikaan. Kuka tahansa voi sitten käyttää alkuperäistä hajautusta tarkistaakseen, että toimitettu kirjoitus oli todellakin alkuperäinen kirjoitus, joka lukitsee kolikot, ja voi heti todeta, että skriptin vaatimukset täyttyivät.

Kolikoiden käytön jälkeen on kuitenkin paljastettava kaikki mahdolliset ehdot, jotka olisivat voineet täyttyä – mukaan lukien ehdot, joita ei täytetty. Tällä on kaksi päähaittapuolta. Yksi, se on paljon tietoa, varsinkin jos olosuhteita on paljon. Ja kaksi, se on haitallista yksityisyydelle. Jokainen oppii kaikki erilaisia ​​tapoja, joilla varoja olisi voitu käyttää, mikä voi esimerkiksi paljastaa, millaista lompakkoa käytettiin ja ehkä jopa enemmän.

MASTO

MAST (Merkelized Abstract Syntax Tree) on ehdotettu ratkaisu, joka käyttää Merklen puita (vuosikymmeniä vanha, kompakti tietorakenne, jonka kryptografi Ralph Merkle keksi) kiertämään näitä kahta haittapuolta. Lyhyesti sanottuna kaikki erilaiset ehdot, joilla varoja voidaan käyttää, ovat erikseen tiivistetty (toisin kuin yhdistetty yhdeksi hashiksi) ja sisällytetty Merkle-puuhun, joka lopulta tuottaa yhden hash: Merkle-juuren. Tämä Merklen juuri “lukitsee” kolikot.

Ainutlaatuinen etu on, että jos minkä tahansa Merkle-puun tiedoista paljastuu, Merkle-juurta ja joitain muita tietoja (kutsutaan Merkle-poluksi) voidaan käyttää varmistamaan, että kyseiset tiedot sisällytettiin Merkle-puuhun. Loput Merkle-puun jäännöksistä on sekoitettu ja piilotettu.

MAST tarkoittaa, että vain täytetty ehto on paljastettava. Jos Alice käyttää yllä olevassa esimerkissä yksin varoja viikon kuluttua, hän vain paljastaa kyseisen ehdon (ja Merklen polun). Kukaan ei opi, että rahat olisivat voineet käyttää myös Alice ja Bob yhdessä tai Bob yksin, jos hän olisi lisännyt salaisen numeron. Tämä tekee MAST-datasta tehokkaampaa kuin monimutkaiset P2SH-älykkäät sopimukset ja lisää yksityisyyttä käynnistykseen.

Silti Schnorrin kanssa Taproot voi tehdä vieläkin paremmin: tapahtuma voi piilottaa, että MAST-rakenne oli olemassa ollenkaan.

Schnorr

Schnorr-allekirjoitusjärjestelmä on jo pitkään ollut monien Bitcoin-kehittäjien toivelistalla, ja sitä kehitetään parhaillaan käytettäväksi pehmeän haarukan protokollapäivityksenä. Monet salakirjoittajat pitävät Schnorr-allekirjoitusjärjestelmää alan parhaana, koska sen matemaattiset ominaisuudet tarjoavat vahvan oikeellisuuden, se ei kärsi muokattavuudesta ja on suhteellisen nopea todentamaan.

Tunnetuimpana etuna Bitcoin-kontekstissa Schnorrin “lineaarinen matematiikka” mahdollistaa allekirjoitusten yhdistämisen: useita allekirjoituksia samassa tapahtumassa voidaan yhdistää yhdeksi. Samanlaista temppua voitaisiin soveltaa multisig-tapahtumiin. Yhdistämällä sekä julkiset avaimet että allekirjoitukset ”julkisiin kynnysavaimiin” ja “kynnysallekirjoituksiin”, multisig-tapahtuma voidaan erottaa kaikista tavallisista tapahtumista.

Ja allekirjoitusjärjestelmää voidaan käyttää vielä mielenkiintoisemmilla tavoilla. Esimerkiksi tietojen avulla on mahdollista “säätää” sekä yksityistä että julkista avainta. Yksinkertaistettuna esimerkkinä yksityistä avainta ja sitä vastaavaa julkista avainta voitaisiin muokata kertomalla molemmat kahdella. “Yksityinen avain x 2” ja “julkinen avain x 2” vastaavat edelleen, ja “yksityinen avain x 2” voisi silti allekirjoittaa viestejä, jotka voidaan vahvistaa “julkisella avaimella x 2”. Kukaan, joka ei tiedä alkuperäisen avainparin säätämistä, ei edes näe mitään eroa; muutetut näppäimet näyttävät miltä tahansa muulta avainparilta.

Tämä mahdollistaa Taprootin.

Taproot

Taproot perustuu mielenkiintoiseen oivallukseen: kuinka monimutkaisesta tahansa, melkein mihin tahansa MAST-rakenteeseen voisi (tai sen pitäisi) sisältyä ehto, jonka avulla kaikki osallistujat voivat sopia tuloksesta ja yksinkertaisesti allekirjoittaa sovintotapahtuman yhdessä. Aikaisemmassa esimerkissä, jos Bob tietää, että Alice voi itse vaatia kaikki varat ensi viikolla, hän voisi yhtä hyvin tehdä yhteistyötä hänen kanssaan nyt allekirjoittamaan yhdessä. (Monissa tyypillisissä älykkäissä sopimuksissa hän jopa rangaistaan, jos ei. Monimutkaisuus todellakin vain pitää kaikki rehellisinä.)

Taproot muistuttaa MAST ja aina sisältää ehdon, jossa kaikki osallistujat voivat tehdä yhteistyötä varojen käyttämiseksi: “osuuskunta lähellä”.

Schnorr-allekirjoituksia hyödyntämällä se on mielenkiintoista.

Ensinnäkin osuuskunnan lähellä oleva yritys hyödyntäisi Schnorrin kynnystemppua, jotta se näyttäisi tavalliselta liiketapahtumalta ihmiseltä toiselle. Joten kaikkien osallistujien julkiset avaimet lisätään yhteen, jolloin saadaan “julkisen avaimen kynnys”. Tätä kynnysarvon julkista avainta vastaava kaikkien osallistujien allekirjoitusten – niiden “kynnysallekirjoituksen” – yhdistelmä antaa heille mahdollisuuden käyttää varoja.

Toistaiseksi niin hyvä, mutta varojen käyttö ikään kuin se olisi normaali tapahtuma, on ainoa asia, jonka he voivat tehdä – ei vielä MAST-tyyppisiä rakenteita. Siellä tulee toinen Schnorr-temppu.

Kaikki vaihtoehtoiset tapoja, joilla varat voidaan käyttää – ei-yhteistyöhön perustuvat tulokset – yhdistetään tällä kertaa eri käsikirjoitukseen. Tämä käsikirjoitus on sitten hajautettu ja tottunut nipistää kynnyksen julkinen avain. Aiemmassa esimerkissä käytetyn “julkisen avaimen x 2” sijaan tämä johtaa “julkisen avaimen kynnys -komentoon”. (Yksinkertaistamme edelleen.) Tämä “kynnysarvon julkisen avaimen x komentosarja” vastaa tietysti “kynnysallekirjoitus x-komentosarjaa”.

Jos rahat käytetään yhteistyössä, kaikki osallistujat yhdistävät allekirjoituksensa “kynnysallekirjoitukseen” ja säätävät sitä käsikirjoituksen kanssa. Tuloksena oleva “kynnysallekirjoitus x-skripti” antaa heille mahdollisuuden käyttää varoja. Ja mikä tärkeintä, ulkomaailmalle kaikki tämä näyttäisi silti vain tavalliselta julkiselta avaimelta ja säännölliseltä allekirjoitukselta – säännöllinen tapahtuma.

Vain jos osuuskunnan sulkeutuminen osoittautuu mahdottomaksi, kynnysarvoinen julkinen avain voidaan näyttää sille, mikä se todellisuudessa on: viritetty.

Tässä tapauksessa molemmat alkuperäinen kynnyksen julkinen avain ja komentosarja paljastetaan. Tämä todistaa, että ”kynnysarvoinen julkinen avain x-komentosarja” oli muokattu tähän erityiseen komentosarjaan. Joten, kuten P2SH: n hash, nipistää todistaa maailmalle, että varojen pitäisi olla käytettävissä, jos tässä ohjelmassa määritetyt vaihtoehtoiset ehdot täyttyvät. (Ja kuten P2SH: lla, nämä ehdot täyttyvät tietysti välittömästi varojen käyttämiseen.)

Vaihtoehtoisesti kynnysarvon julkisen avaimen säätämisen sijaan komentojonolla kynnysarvon julkista avainta voidaan säätää Merkle-juurella Merkle-puulla, joka sisältää kaikki erilaiset olosuhteet, joissa varoja voidaan käyttää: MAST-rakenne. Varojen käyttämistä varten on siis paljastettava vain täyttämisvaatimus.

Sellaisena Taproot tarjoaa kaikki MASTin edut, kun taas normaaliolosuhteissa kukaan ei koskaan tiedä, että säännöllinen kauppa kätkee niin monimutkaisen älykkään sopimuksen varalla.

Tämä on yleinen kuvaus Taproot-konseptista; toteutuksen yksityiskohdat voivat vaihdella. Lisätietoja, lue alkuperäisen Taproot-ehdotuksen kirjoittanut Gregory Maxwell tai katso tämän esityksen Pieter Wuille.