Amir Taakin libbitcoin on tullut yksi kehittyneimmistä vaihtoehtoisista Bitcoin-protokollan toteutuksista. Vaikka markkinoilla on nyt kymmeniä vaihtoehtoisia toteutuksia, libbitcoin on yksi harvoista, joka toteuttaa täydellisen Bitcoin-standardin uudelleen, jolloin käyttäjät voivat suorittaa deterministinen lompakko, an elliptisen käyrän viestin allekirjoitusrajapinta ja tietysti a täysin toimiva Bitcoin-solmu. Jopa moniallekirjoitustapahtumat, joita monet suositut lompakot, kuten blockchain.info ja Bitcoin Wallet Androidille, eivät vieläkään tue, libbitcoin hoitaa hienosti. Libbitcoin on ainutlaatuinen myös modulaarisuudellaan; Paketti itsessään on ohjelmistokirjasto, joka sisältää joukon komponentteja, joista kutakin voidaan kutsua ohjelmallisesti erikseen, välttäen tarvetta käynnistää täysimittainen, monoliittinen ohjelmistopäällikkö vain muutaman yksinkertaisen tapahtuman tai kyselyn tekemiseksi. Jos haluat täyden asiakkaan, joka toimii paikallisesti, voit käyttää libbitcoinia tekemään sen, mutta voit myös käyttää yhtä helposti vain libbitcoinia tapahtumien hallintaan ja verkostoitumiseen ja luottaa muihin solmuihin tapahtumadatassa. Mitä tarvitset, sitä käytät, ja mitä et tarvitse, sinun ei tarvitse vaivautua.

Ensimmäisenä suurena käytännön sovelluksena libbitcoin, Amir Taaki on hiljattain julkaissut sx, joukko komentorivin apuohjelmia Bitcoin-avainten ja tapahtumien käsittelemiseksi. Perustarkoitus on yksinkertainen: antaa Bitcoin-käyttäjille, jotka ovat jonkin verran teknisesti taitavia, mutta eivät kokeneita ohjelmoijia, olla vuorovaikutuksessa Bitcoinin kanssa paitsi käyttöliittymänä, johon he kirjoittavat määrän ja kohdeosoite ja bitcoind tekevät kaiken heidän puolestaan, mutta toimivat myös suoraan rakennusosien kanssa. Jokainen sx-työkalu noudattaa Unix-filosofiaa: se tekee yhden asian ja tekee sen hyvin. genaddr

ottaa Electrumin lompakon siemen- tai isäntäkoodin ja palauttaa osoitteen.

mktx

luo allekirjoittamattomat tapahtumat ja

merkki-syöttö

allekirjoittaa transaktiotiedot.

historia

palauttaa luettelon Bitcoin-osoitteeseen liittyvistä käyttämättömistä tapahtumista, joita voidaan käyttää syötteinä – ja niin edelleen.

Näitä työkaluja voidaan käyttää komentorivillä rakentamaan Bitcoin-tapahtumia yksi askel kerrallaan, tai niitä voidaan kutsua ohjelmallisesti (esim. Os.popen (command) .read ()

Pythonissa) luoda Bitcoin-ohjelmistoja, kuten kauppiaspaketteja ja lompakoita. Tähän asti uuden Bitcoin-lompakon luominen oli vaikeaa – joudutaan joko toteuttamaan kaikki uudelleen tyhjästä, ottamaan olemassa oleva lompakko ja työskentelemään kovasti selvittääkseen koodi erottaaksesi tapahtumalogiikan lompakon logiikasta, tai luottaa bitcoind-solmu käynnissä taustalla. Libbitcoinin ja sx: n avulla työkalut työskennellä alhaisimmalla tasolla Bitcoin-tapahtumien kanssa ovat kuitenkin jo olemassa – vapauttavat kehittäjät ongelmien ratkaisemiseksi, jotka todella tarvitsevat eniten työtä – kuten tietoturvan ja käyttökokemuksen optimointi.

Enemmän kuin vain kirjasto

Joten miksi libbitcoinilla ja SX: llä on merkitystä? Kuten käy ilmi, vastaus menee paljon pidemmälle kuin yksinkertainen tosiasia, että ne ovat käteviä. Yksi suurimmista ongelmista Bitcoin-ekosysteemissä on, että vaikka Bitcoin on nimellisesti hajautettu, todellisuudessa kaivostyöläiset, jotka pitävät verkkoa käynnissä, käyttävät kaikki samaa Bitcoin-ydinohjelmistoa: bitcoind. Bitcoind on alkuperäisen Bitcoin-asiakkaan “päätön” (ts. Vain komentorivillä varustettu) versio, jota on kehitetty siitä lähtien, kun Satoshi julkaisi ensimmäisen version vuonna 2009, ja se toimii ohjelmistona, jota kaikki kaivostyöläiset ja melkein kaikki yritykset käyttävät kommunikointiinsa Bitcoin-verkko.

Tämä on epäterveellistä kahdesta syystä. Ensinnäkin monopolin omistaminen voi johtaa erittäin häiritseviin blockchain-haarukoihin; esimerkiksi tämän vuoden maaliskuussa tietokantavirheen poistaminen, joka estää bitcoind-solmuja käsittelemästä lohkoa, joka vaikuttaa samanaikaisesti yli 5000 tapahtuman tilaan, sai Bitcoin-verkon hajoamaan puoliksi noin kuuden tunnin ajan solmuina virheen kanssa ja ilman virhettä olivat eri mieltä lohkon pätevyydestä ja alkoivat työskennellä kahden erillisen lohkoketjun parissa. Korjaus: Bitcoin-yhteisö kokoontui ja suostui sulkemaan version 0.8 solmut ja lisäsi tietokantavirheen viralliseen protokollaan kahdeksi kuukaudeksi, kunnes se voitiin poistaa hallitusti kaksi kuukautta myöhemmin. Jos aktiivisessa ja laaja-alaisessa käytössä olisi viisi erilaista Bitcoin-toteutusta, kenenkään epäonnistuminen vaikuttaisi vain pieneen osaan Bitcoin-verkkoa – eikä todennäköisesti vaikuta tavallisten käyttäjien asiakkaisiin, jotka tyypillisesti vain tarkistavat tapahtumia eikä estoja. ollenkaan, koska haarukan tapauksessa “laillinen” lohkoketju olisi melkein aina se, joka komentaa verkon enemmistöä.

Toinen syy on poliittinen. Monet bitcoin-ytimen kehittäjät, erityisesti pääkehittäjä Gavin Andresen, ovat myös osa Bitcoin Foundationia, organisaatiota, joka on ottanut selkeät askeleet kohti poliittisen edunvalvonnan käyttämistä strategiana Bitcoinin suojaamiseksi. Pelko on, että tulevaisuudessa hallitus voi yrittää säännellä Bitcoinia enemmän ja antaa säätiölle ultimaatumin: sisällytät tiettyjä yksityisyyttä heikentäviä ominaisuuksia (kohtalainen esimerkki voi olla “osoitteen vahvistusmaksu”, joka estää ihmisiä kattamasta heidän kappaleita luomalla monia Bitcoin-osoitteita) protokollaan, tai kiellämme Bitcoin-vaihdot. Säätiö voi hyvinkin noudattaa sitä, ja Yhdysvaltain hallitus tietää sen. Jos säätiöllä ei olisi valtaa tehdä tällaisia ​​muutoksia pöytäkirjaan ilman laajaa kansainvälistä suostumusta, Yhdysvaltain hallituksella ei kuitenkaan olisi tätä vaihtoehtoa – heidät pakotetaan joko yrittämään kieltää Bitcoin suoraan, massiivisen kustannuksella. hyvän tahdon ainakin tekniikan ja avoimen lähdekoodin yhteisössä, tai anna sen olla ja keskittyä pehmeämpiin sääntelystrategioihin. Siksi Bitcoinin kannattajat kuten Amir Taaki, Joerg Platzer ja muut ovat jo pitkään tukeneet Bitcoinin ekosysteemin monipuolistamista ja kansainvälistämistä. Ja libbitcoin voi vain olla katalysaattori, joka lopulta käynnistää prosessin.

Kuinka käytät SX: tä?

Sx: n asentaminen on hyvin yksinkertaista, jos käytät Linuxia; komentorivillä, wget http://sx.dyne.org/install-sx.sh

jonka jälkeen

sudo bash./install-sx.sh

on kaikki mitä se tarvitsee. Jos käytössäsi on Windows tai Mac, asiat ovat jonkin verran monimutkaisempia, vaikkakaan ei enempää kuin mikään muu vastaava ohjelmistopaketti; lähdekoodi on ladattavissa osoitteesta https://github.com/genjix/sx, ja sieltä voit asentaa sen manuaalisesti.

Kun sx on asennettu, tässä on joitain asioita, joita voit tehdä sen kanssa. Ensinnäkin perusosoite ja avainkäsittelyt.

Luo yksityinen avain / julkinen avain / osoitekolmio:

sx newkey > pk1kissa pk1 | sx pubkey > pub1cat pk1 | sx osoite > kissa pk1 pub1 addr1

Luo yksityinen avain / osoitepari Electrum-lompakosta:

sx newseed > x: n siemen “sekvenssissä 0 9”; tee kissan siemeniä sx genpriv $ x; kissan siemenet | sx genaddr $ x; tehty

Luo vain osoitteet julkisesta pääavaimesta:

kissan siemenet | sx mpk > mpkfor x luvussa “sekvenssi 0 9”; tee kissa mpk | sx genaddr $ x; tehty

Tapahtumat

Nyt on aika ryhtyä liiketoimiin. Ensinnäkin tarvitaan vähän ymmärrystä siitä, miten liiketoimet toimivat. Bitcoinilla ei ole tilien käsitettä; sen sijaan liiketoimen, joka käyttää rahaa osoitteesta, on viitattava suoraan joihinkin tapahtumiin, jotka lähettävät vähintään saman määrän rahaa kyseiseen osoitteeseen; näitä kutsutaan yleensä “edellisiksi tapahtumien tuotoksiksi”. Esimerkiksi, jos sinulla on osoite, johon lähetit 2 BTC: tä, 3 BTC: tä ja sitten 4 BTC: tä ja haluat käyttää 5 BTC: tä, et kuluta 5 BTC: tä kyseisestä osoitteesta; pikemminkin käytät 2 BTC- ja 3 BTC-tapahtumalähtöä. Lisäksi tuotosta ei voida käyttää “osittain”; vaikka haluat lähettää vain 0,1 BTC: tä, sinun on käytettävä koko lähtö. Voit välttää 1,9 BTC: n tuhlaamisen lisäämällä tapahtumaan erityisen tuotoksen, nimeltään “muutos”, jossa lähetät jäljellä olevat varat takaisin itsellesi..

Peruskomento, jota käytät näiden käyttämättömien tapahtumalähtöjen saamiseen, on sx-historia

:

sx historia `kissa addr1`

Tämä itsessään palauttaa kuitenkin kaikki tähän osoitteeseen liittyvät tapahtumat, ei vain haluamamme, joten meidän on suodatettava lähtö hieman. Tämä on monimutkainen komentosarja; pohjimmiltaan se etsii ensin sanaa “käyttämätön” historiasta ja saa nämä rivit sekä tapahtumatiedot kahdella rivillä niiden yläpuolella. Sitten se käyttää grep- ja awk-tiedostoja vain tarvitsemiemme tietojen purkamiseen. Huomaa, että komento palauttaa arvot satoshis; 100 miljoonaa satoshaa vastaa yhtä BTC: tä. Lähetä 0.001 BTC osoitteeseen, joka sisältyy tiedostoon addr1 (kissa addr1

nähdä sen, ja

sx qrcode `kissa addr1` qrcode.png

luodaksesi skannattavan QR-koodin), ja suorita seuraava komento:

sx historia `kissa addr1` | grep Käyttämätön -B 2 | grep-lähtö | awk ‘{print $ 2}’ > inputcat-tulo

Nyt kun meillä on historia, käytämme sx: tä luomaan ja lähettämään tapahtuma.

sx mktx txfile.tx `kissan syöttö` -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 90000sx rawscript dup hash160 [` cat addr1 | sx decode-addr`] equifify checkig > raw.scriptcat pk1 | sx sign-input txfile.tx 0 `kissa raaka.script` > sigsx rawscript [`cat sig`] [` cat pub1`] | sx set-input txfile.tx 0 > txfile2.tx; mv txfile2.tx txfile.txsx broadcast-tx txfile.tx

Näin voit tehdä, jos sinulla on useita maksutapahtumia, jotka haluat käyttää. Lähetä 0.0002 BTC osoitteeseesi viisi kertaa, suorita yllä oleva sx history -komento uudelleen ja varmista, että se palauttaa viisi lähtöä. Jotta vältetään viiden tapahtuman syötteen kopioiminen ja liittäminen käsin, teemme hieman enemmän komentorivin taikuutta:

sx historia `kissa addr1` | grep Käyttämätön -B 2 | grep-lähtö | awk ‘{print $ 2}’ > temp1kissa temp1 | sed ‘s / ^ / – i /’ | tr ‘n’ ” > temp2kissa temp2

Huomaa, kuinka temp2 sisältää kaikki syötteet täsmälleen oikeassa muodossa sx mktx: lle

. Nyt vain liitämme ne:

sx mktx txfile.tx `kissa temp2` -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 90000sx rawscript dup hash160 [` kissa addr1 | sx decode-addr`] equifify checkig > raw.scriptfor x: lle sarjassa “seq 0 4”; tee kissa pk1 | sx sign-input txfile.tx $ x `cat raw.script` > sig $ x; tehty x x: lle “sekvenssissä 0 4”; tee sx rawscript [`cat sig $ x`] [` cat pub1`] | sx set-input txfile.tx $ x > txfile2.tx; mv txfile2.tx txfile.tx; donesx broadcast-tx txfile.tx,

Pyhä Graal: Moniallekirjoitustapahtumat

Ensin luomme 3 sarjaa yksityisiä avaimia, pub-avaimia ja osoitteita.

x: lle luvussa “sekvenssi 1 3”; tee sx newkey > pk $ x; tehty x: lle “sekvenssissä 1 3”; tee kissa pk $ x | sx pubkey > pubi $ x; tehty x: lle “sekvenssissä 1 3”; tee kissa pk $ x | sx osoite > addr $ x; tehty

Sitten luomme multisig-osoitteen.

sx rawscript 2 [`kissapubi1`] [` kissapubi2`] [`kissapubi3`] 3 tarkistusmultisig > msig.scriptcat msig.script | sx showscriptcat msig.script | sx scripthash > 3addrcat 3addr

Lähetä 0.001 BTC osoitteeseen (ei toimi kaikkien lompakoiden kanssa!) Ja suorita sitten seuraava saadaksesi tapahtuman hash:

sx historia `kissa 3addr` | grep Käyttämätön -B 2 | grep-lähtö | awk ‘{print $ 2}’ > inputcat-tulo

Nyt meidän on muodostettava tapahtuma ja allekirjoitettava se, tässä tapauksessa käyttämällä ensimmäistä ja kolmatta yksityistä avainta (ensimmäinen ja toinen tai toinen ja kolmas toimivat yhtä hyvin). Lähetämme vain 50000 satoshis, jättäen 0,0005 BTC palkkiona.

sx mktx txfile.tx -i “kissan syöttö” -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 50000kissa pk1 | sx sign-input txfile.tx 0 `kissa msig.script` > sig1kissa pk3 | sx sign-input txfile.tx 0 `kissa msig.script` > sig3sx rawscript nolla [`cat sig1`] [` cat sig3`] [`cat msig.script`] > input.scriptcat input.script | sx set-input txfile.tx 0

Ja lopuksi, lähetä tapahtuma.

sx broadcast-tx txfile.tx

Melko monimutkaiset, mutta moniallekirjoitustapahtumat eivät ole missään tapauksessa aivan yksinkertaisia. Sx: n avulla monimutkaisuus pienenee sarjaksi vaiheita, joita voit yksinkertaisesti seurata tai jopa sisällyttää omiin ohjelmiin ajaaksesi aina, kun tarvitset. Olitpa sitten komentoriviharrastaja, Bitcoin-kehittäjä tai vain joku, joka on kiinnostunut tarkastelemaan syvemmin Bitcoin-tapahtumien toimintaa, sx on työkalu sinulle. Hyvää hakkerointia!