Tämä artikkeli koskee ehdotettua Taproot-protokollapäivitystä perustuvaa teknologiakonseptia. Jos et ole vielä perehtynyt Taprootin toiminnan perusteisiin, suosittelemme, että luet ensin tämän selittimen.
Taproot, joka on potentiaalinen päivitys Bitcoin-protokollaan, jonka ensimmäisenä ehdotti Bitcoin Core -edustaja Gregory Maxwell, on kehitysvaiheessa. Teknologia koostuu älykkäästä salaustemppujen yhdistelmästä, jonka avulla käyttäjät voivat piilottaa monimutkaiset älykkäät sopimukset säännöllisen näköisissä tapahtumissa – monimutkaisuus paljastuu vain, jos sopimuksen osapuolet eivät ole yhteistyössä.
Tämän idean avulla Bitcoin Core -yhteisön avustajat, mukaan lukien (mutta ei rajoittuen) Jeremy Rubin, Antoine Riard, Gleb Naumenko ja Gregory Maxwell itse ovat spekuloineet yleisestä käsitteestä, jota kutsutaan nimellä maksupoolit, liittymät tai kolikoita. Nämä altaat – pidämme kiinni siitä, että kutsumme heitä toistaiseksi maksupooliksi – antaisivat käyttäjäryhmien jakaa saman kolikon (teknisesti: UTXO: n) omistusoikeuden Bitcoin-lohkoketjuun tallennettuna samalla, kun joku näistä käyttäjistä antaa (tai vastaanottaa) maksuja heidän kanssaan. Kun ryhmä ja sen yksittäiset jäsenet “piiloutuvat” Taproot-rakenteeseen, heillä kaikilla on enemmän yksityisyyttä, älykästä sopimusten joustavuutta ja muita etuja … ja he mahdollisesti jopa nauttivat näistä eduista ketjun ulkopuolella, mikä tekee maksupoolista uuden Layer Two -ratkaisun.
Vaikka suunnittelun yksityiskohdat vaihtelevat hieman maksupooliehdotuksesta toiseen, yleinen käsite on sama. Tässä on perusidea …
Kolikon jakaminen
Ensinnäkin maksupoolin luomiseksi käyttäjät yhdistävät kolikkonsa (murto-osansa) yhdistämällä ne heidän keskenään jakamaan Taproot-osoitteeseen. Oletetaan, että Alice omistaa kolme kolikkoa, Bob omistaa kaksi kolikkoa ja Carol yhden kolikon, yhteensä kuusi. Yhdessä he luovat tapahtuman, joka lähettää nämä kolikot jaettuun osoitteeseen, mikä tekee siitä kuuden kolikon maksupoolin.
Lohkoketjussa maksupoolin osoite näyttää tavalliselta Bitcoin-osoitteelta, jolla on nyt kuusi kolikkoa. Mutta pinnan alla, Alice, Bob ja Carol käyttivät nokkelasti Taprootia varmistaakseen, että kukin heistä hallitsee omaa kolikoiden osuuttaan maksupoolissa. Alice voi milloin tahansa vaatia kolme kolikkoa osoitteesta, Bob voi milloin tahansa vaatia kahta ja Carol yhtä.
Tämä johtuu siitä, että kolikoiden käyttämiseen osoitteesta on vain kaksi päävaihtoehtoa.
Ensimmäinen vaihtoehto on käyttää rahaa suoraan osoitteesta, teknisesti Taproot-avainpolku. Tämä edellyttää kaikkien kolmen osanottajan yhteistyötä (ts. Salausallekirjoituksia). Jos Alice, Bob ja Carol ovat kaikki samaa mieltä, kuusi kolikkoa voidaan käyttää haluamallaan tavalla, ja tämä näyttää siltä kuin mikä tahansa muu säännöllinen tapahtuma Bitcoin-verkossa. Trio voi esimerkiksi päättää lähettää saldonsa takaisin yksittäisiin osoitteisiin: kolme Alicelle, kaksi Bobille ja yksi Carolille. Mutta jos he niin haluaisivat, he voisivat myös yhteistyössä lahjoittaa kaikki kuusi kolikkoa Julianille tai käyttää sitä muulla tavalla, josta he sopivat. Tärkeää on, että kaikkien kolmen on osallistuttava, joten kenenkään saldo ei kulu ilman hänen omaa yhteistyötään.
Toinen päävaihtoehto koostuu itse asiassa useista alavaihtoehdoista. Ennen kolikoiden lähettämistä maksupooliin Alice, Bob ja Carol piilottivat jotain salauspuuhun Taproot-osoitteen taakse: he sisälsivät vaihtoehtoisia tapoja lähettää varoja maksupoolista. (Tällä hetkellä tämä voidaan toteuttaa siten, että kaikki kolme osallistujaa allekirjoittavat tapahtumia ennalta näiltä poluilta, mikä vaatii jonkin verran monimutkaisuutta kaikkien vaihtoehtojen asettamiseen ja ei skaalautu kovin hyvin; ehdotetut protokollapäivitykset voivat mahdollisesti tehdä tämän helpommaksi tulevaisuudessa .)
Jos joku osallistujista päättäisi käyttää kolikoita maksupoolissa vaihtoehtoisen Taproot-polun kautta, he lähettävät tyypillisesti kyseisen osallistujan saldoa vastaavan määrän valitsemaansa osoitteeseen, kuten heidän hallitsemaansa henkilökohtaiseen osoitteeseen. (Alicen tapauksessa kolme kolikkoa hänen omaan osoitteeseensa, Bobin tapauksessa kaksi kolikkoa hänen osoitteeseensa ja Carolin tapauksessa yksi.)
Tätä vaihtoehtoista polkua käytettäessä myös jäljellä olevat kolikot kulutetaan automaattisesti. Tämä voidaan tehdä useilla tavoilla riippuen maksupoolin rakenteesta, tarjoten erilaisia kompromisseja monimutkaisuuden ja skaalautuvuuden suhteen.
Yksinkertaisin ratkaisu on lähettää jokaiselle osallistujalle myös osuus kolikoista valitsemaansa osoitteeseen. Toisin sanoen: jos yksi käyttäjä poistuu altaasta, kaikki poistuvat altaasta.
Toinen ratkaisu, jonka Riard ja Naumenko suosivat, on lähettää kaikki jäljellä olevat kolikot uuteen maksupooliin, joka näyttää täsmälleen ensimmäiseltä maksupoolilta, joka on juuri poistettu kaikesta, mikä koski nyt poistunutta käyttäjää. Tämä malli tarjoaa parhaan käyttökokemuksen, mutta sitä on vaikeinta skaalata, mikä tärkeintä, koska on varauduttava kaikkiin mahdollisiin poistumisskenaarioihin, mukaan lukien kaikki mahdolliset poistumisskenaariot kaikille mahdollisille uusille altaille. Mittakaava voidaan kuitenkin saavuttaa vielä nimettävällä mahdollisella Bitcoin-protokollan päivityksellä sen varmistamiseksi, että edellisen maksupoolin säännöt siirretään mihin tahansa uuteen maksupooliin.
Rubin uskoo, että tämä toinen ratkaisu on epäkäytännöllinen, ja haluaa mieluummin mennä johonkin ensimmäisen ja toisen ratkaisun väliin: jotkut osallistujat saavat kolikonsa heti valitsemaansa osoitteeseen, toiset osallistujat lähettävät kolikkonsa uuteen maksupooliin. Tämä malli tarjoaa vähemmän ihanteellisen käyttökokemuksen, mutta skaalautuu paremmin, ja mahdollinen OP_CHECKTEMPLATEVERIFY -protokollapäivitys auttaisi yksinkertaistamaan suunnittelua ja lisäämään mittakaavaa entisestään. (Poistuminen tapahtuu puumaksujen kautta; tämän tyyppisiä maksuja tarkastellaan tarkemmin tässä artikkelissa.)
(Toisen ja kolmannen ratkaisun välillä on enemmän kompromisseja, mutta kaikkien hyvien ja huonojen puolien yksityiskohdat eivät kuulu tämän artikkelin piiriin; lue bitcoin-dev postituslista keskustelu yksityiskohtia varten.)
Oletetaan, että Alice, Bob ja Carol valitsevat toisen vaihtoehdon, jossa kaikki jäljellä olevat kolikot lähetetään uuteen maksupooliin, jotta näet, mitä jäljellä olevat kolikot lähetetään uuteen maksupooliin. Jos tässä mallissa Alice poistuu ensimmäisestä maksupoolista, kolme kolikkoa lähetetään valitsemaansa osoitteeseen, kun taas kolme muuta kolikkoa lähetetään uuteen maksupooliin Bobin ja Carolin välillä. Alicella on tuolloin yksinomainen määräysvalta omissa kolikoissaan, mutta Bobilla ja Carolilla ei ole tapahtunut paljon muutoksia. Nämä kaksi voivat silti tehdä yhteistyötä kuluttaa kolme jäljellä olevaa kolikkoa haluamallaan tavalla, tai jompikumpi voi irtautua yksipuolisesti, kuten Alice oli aiemmin tehnyt.
Jos Bob poistuu yksipuolisesti toisesta maksupoolista, hän lähettää kaksi kolikkoa valitsemaansa osoitteeseen ja yhden kolikon vielä uudempaan maksupooliin (kolmas), jolloin vain Carol on jäljellä. (Tässä yksinkertaistetussa esimerkissä tietysti järkevämpi on muotoilu, jossa tämä viimeinen maksupooli korvataan Carolin valitsemalla osoitteella, mutta se on toteutuksen yksityiskohta.)
Tärkeä nouto on, että maksupoolin osallistujat voivat tehdä yhteistyötä minkä tahansa tyyppisten maksujen suorittamiseksi haluamastaan poolista, kun taas kukin heistä voi milloin tahansa poistua omilla kolikoillaan, jolloin muut osallistujat voivat hallita omiaan.
Maksun suorittaminen maksupooliin
Joten olemme todenneet, että kaikki osallistujat voivat erikseen nostaa saldonsa maksupoolista tai – jos he kaikki sopivat – käyttää rahaa poolista. Tämä toinen vaihtoehto mahdollistaa todella älykkyyden: maksupooli voi olla dynaaminen. Niin kauan kuin kaikki osallistujat ovat yhtä mieltä, he eivät voi vain maksaa itselleen varojaan takaisin tai maksaa muille (kuten Julian), mutta he voivat tehdä jotain vielä mielenkiintoisempaa. He voivat siirtää varansa uusimpiin maksupoolin versioihin, joissa on erilainen muotoilu.
Tämä antaa esimerkiksi kenellekään heistä viettää uima-altaalta.
Oletetaan, että Alice ostaa uuden auton ja haluaa maksaa siitä yhdellä bitcoinilla. Alice, Bob ja Carol voisivat sitten luoda maksutapahtumasta tapahtuman, joka lähettää yhden kolikon autoliikkeelle ja lähettää loput viisi kolikkoa uudelle maksupoolille, joka näyttää samalta kuin ensimmäinen, paitsi että tällä kertaa Alice voi vain poistua siitä yksipuolisesti kahdella kolikolla, yhdellä vähemmän kuin aikaisemmin.
Sillä välin kauppa näytti siltä kuin mikä tahansa muu tavallinen Bitcoin-tapahtuma. Autoliike (tai blockchain-vakoojat) voi päätellä, että Alice omisti kaikki kuusi kolikkoa ja käytti vain yhtä auton ostamiseen ja säilytti muut viisi. Heillä ei olisi aavistustakaan siitä, että osa kolikoista kuuluu Bobille ja Carolille tai että he olivat lainkaan mukana kaupassa.
Seuraavan kerran, kun Bob suorittaa maksun ja Alice ja Carol tekevät yhteistyötä, se suoritetaan samasta maksupoolista ja näyttää jälleen tavalliselta Bitcoin-tapahtumalta ulkomaailmaan. Tuloksena olevassa maksupoolin iteroinnissa Bob voi poistua yhdellä kolikolla kahden sijaan. Samaan aikaan samat blockchain-vakoojat ovat saattaneet ajatella, että Alice suorittaa maksun uudelleen, sekoittamalla heidät edelleen. (Ja vaikka blockchain-vakoojat tietäisivät jotenkin, että osoite on todella Alice, Bob ja Carol välinen maksuallas, he eivät silti voineet kertoa, kumpi kolmesta suoritti viimeisimmän maksun.)
Aina kun Alice, Bob tai Carol kuluttaa kolikoita, tapahtuma on saattanut tulla joltakin heistä, eikä kukaan maksupoolin ulkopuolella voi kertoa eroa.
Maksupoolit eivät salli vain menoja. Jos Alice haluaa lisätä “saldonsa” maksupooliin, hän voisi tehdä myös tämän. Alice, Bob ja Carol tekisivät tässä tapauksessa yhteistyötä siirtääkseen nykyiset viisi kolikkoa uudelle Taproot-osoitteelle, johon Alice lähettäisi samassa tapahtumassa yhden ylimääräisen kolikon yhdestä omasta (henkilökohtaisesta) osoitteestaan. Uusi Taproot-osoite sisältää jälleen kuusi kolikkoa, joista kolme kuuluu Alicelle, mikä näkyy hänen yksipuolisessa poistumisvaihtoehdossaan.
Samoin täysin uudet käyttäjät voisivat liittyä maksupooliin. Jos Alice, Bob ja Carol suostuvat antamaan Daveen osallistumaan, he kaikki yhdessä tekevät Daveen luomaan tapahtuman, joka lähettää maksupoolin varat yhdessä Davein uusien kolikoiden kanssa uuteen maksupooliin, joka on suunniteltu antamaan Dave myös osallistumaan – ja poistumaan jos hän niin haluaisi.
Lisäksi maksupoolin osallistujat voivat maksaa toisilleen. Jos Alice maksaisi esimerkiksi Bobille yhden kolikon, nämä kolme voisivat yhteistyössä lähettää varat uudelle maksupoolille, jossa Alicella on vähennetty kolikko saldostaan ja Bobille lisätty kolikko. Blockchainissa se näyttää jälleen tavalliselta maksulta, ja blockchain-vakoojilla ei olisi aavistustakaan kuka maksoi kuka tai kuinka paljon. (On syytä huomauttaa, että Dave olisi voinut päästä samalla tavalla uima-altaaseen saamalla sisäisen maksun yhdeltä nykyisistä osallistujista.)
Pienellä monimutkaisuudella (ja mieluiten ainakin yhdellä ylimääräisellä Bitcoin-protokollan päivityksellä, kuten Noinput) siirrot voidaan jopa suorittaa myös ketjun ulkopuolella. Kun Alice maksaa Bobille, kaikki osallistujat luovat tässä tapauksessa tapahtuman, joka käyttää varoja uuteen maksupooliin samalla tavalla, mutta tämä tapahtuma jaetaan vain heidän keskenään – ei lähetetä verkkoon (ellei joku koskaan yritä huijata). Tällä tavalla Alice, Bob ja Carol voisivat päivittää tasapainonsa “sisäisesti” ja jopa päästää Davein jossain vaiheessa altaaseen. Kun he kaikki suostuvat sulkemaan poolin, he voivat luoda lopullisen tapahtuman, joka kuluttaa alkuperäisestä maksupoolista ja myöntää kullekin viimeisen saldonsa.
Samanlainen kuin vanhempi idea, joka tunnetaan nimellä Channel Factory, tämäntyyppiset maksupoolit voidaan lopulta jopa käyttää itsensä isännöimään Lightning-kanavia, holveja tai muita Layer Two -protokollia. Tämä voi tarjota mahdollisuuden “kietoa” minkä tahansa tyyppisen lisäprotokollakerroksen tällaisiin altaisiin, piilottaen siten kaiken monimutkaisuutensa identtisiin ja säännöllisen näköisiin tapahtumiin.