Yksi Bitcoinin suurimmista eduista on kuinka helppoa on työskennellä kehittäjän näkökulmasta. Bitcoinilla ei ole kolmansien osapuolten riippuvuuksia, ei omia sovellusliittymiä eikä nopeasti muuttuvaa käyttöliittymää; tarvitset vain oman suosikki ohjelmointikielesi, ja on todennäköistä, että jo on olemassa yksinkertainen Bitcoin-kirjasto, jonka avulla voit aloittaa bitcoinien lähettämisen ja vastaanottamisen muutamassa tunnissa. Tämän artikkelin tarkoituksena on esitellä muutama näistä kirjastoista ja näyttää Bitcoin-osoitteiden ja tapahtumien käsittelyn perusteet millä tahansa kielellä.

Osoitteet, avaimet, tapahtumat, Oh My!

Bitcoin-protokolla voidaan yleensä jakaa kolmeen osaan: osoitteen ja avaimen hallinta, tapahtumat, lohkot ja kaivostoiminta. Lohkot ja kaivostoiminta eivät ole tärkeitä sinulle aloittelevana Bitcoin-kehittäjänä; useimmissa tapauksissa on helpompaa luottaa yksinkertaisesti kolmannen osapuolen tapahtumanhakupalveluun, joka tiivistää korttelien käsitteen, ja jos olet kiinnostunut kaivostoiminnasta, paras tapa on yksinkertaisesti ostaa tavallinen Bitcoin-kaivosmies. Osoitteita, avaimia ja tapahtumia ei kuitenkaan voida välttää.

Bitcoin-avainten hallinnassa on kolmenlaisia ​​esineitä, joita sinun on käsiteltävä: yksityiset avaimet, julkiset avaimet ja osoitteet. Olet ehkä kuullut termeistä “yksityinen avain” ja “julkinen avain” julkisen avaimen salauksen yhteydessä; juuri niistä yksityisistä ja julkisista avaimista puhumme täällä. Bitcoin käyttää kuitenkin uudentyyppistä salausta, jota kutsutaan elliptisen käyrän salaukseksi, eikä vanhempia factoring-pohjaisia ​​salausalgoritmeja, kuten RSA, joten Bitcoin-avaimet näyttävät hieman erilaisilta kuin sanotaan, PGP-näppäimet. Yksityinen avain näyttää tältä:

9d86361789d13823fd888fa45c9b356b76d41a7e33b2b2c3056632721c4c1255

Ja sitä vastaava julkinen avain on:

04d8f08938e78447b2b1a629c503d5e17483b0d15751a9e8f83c8460e6ec32fd68d0b4068e83c012f54df995e52ed8bae38056a8d922f9687200ae83e5a6728dff

Yksityinen avain voidaan muuntaa julkiseksi, mutta julkista avainta ei voi muuntaa yksityiseksi avaimeksi. Bitcoin-osoite on itse asiassa julkisen avaimen hash; yllä olevaa julkista avainta vastaava Bitcoin-osoite on:

172YRdGzPqyXm9rm1EWKwPXTRsmcApoPQ6

Yksi asia, jonka saatat huomata, on, että Bitcoin-osoite ei ole heksadesimaalimuodossa, kuten yksityiset ja julkiset avaimet ovat. Tämä johtuu siitä, että joissakin muodoissaan Bitcoin käyttää omaa esitysmuotoa, joka tunnetaan nimellä base58check. ”Base58” -osa tulee siitä, että käytetään 58 erilaista kirjainta ja numeroa; O, 0, l ja I jätetään pois, koska niitä on liian helppo erehtyä toisilleen. Pohja 58 on samanlainen kuin tukikohta 2 tai tukikohta 3 tai tukikohta 10. Esimerkiksi numero 31337 kannassa 2 on ”111101001101001”; tukiasemassa 3 se on “1120222122”, tukikohdassa 10 se on “31337”, tukikohdassa 16 se on “7a69”, tukikohdassa 58 on “AKJ” ja lopuksi tukikohdassa 256 vain “zi”. Base58checkin “check” -osa on myös tärkeä; mitä se tarkoittaa, että sanoman tiivisteen neljä ensimmäistä tavua lisätään viestin loppuun ennen koodausta tulokseen base58: ssa. Esimerkiksi prosessi, jolla zi muunnetaan tukiasemasta 256 tukiasemaan 58, toimii seuraavasti:

  • Vaihe 1: Tarkistussumma = sha256 (sha256 (’x00’ + ’zi’)) (huomaa, että lisäämme nolla tavua eteen) ’97fbc63584f26bd0109f99d467c447607dbecff51b903e450207466114672261 ′
  • Vaihe 2: välituote = ’x00’ + ’zi’ + tarkistussumma [: 4] (binäärimuodossa) ‘x00zix97xfbxc6x35’
  • Vaihe 3: Muunna tukiasemaan 58 ‘123xZAaruJ’

Sinun ei kuitenkaan henkilökohtaisesti tarvitse käsitellä kaikkia näitä monimutkaisuuksia; Bitcoin-kirjastot ovat olemassa käsittelemään kaikkea puolestasi, ja puhumme muutamasta myöhemmin artikkelissa. Mutta ensin, tapahtumien käsittely.

Ensimmäinen tärkeä mielessä pidettävä asia on, että Bitcoinilla ei ole sisäisesti käsitettä “tilit” tai “saldot”; kaikki varat on tallennettu kohteisiin, joita kutsutaan “tapahtumien tuotoksiksi”. Tapahtumassa on yksi tai useampia panoksia, joista kukin kuluttaa olemassa olevan käyttämättömän tapahtumalähdön (“UTXO”), ja tapahtuma voi sitten lähettää enintään saman määrän BTC: tä kokonaislähtöinä kuin syötteillä. Näin tapahtuma näyttää deserialisoidussa muodossa:

{ "lukitusaika": 0, "ins": [{ "käsikirjoitus": "", "outpoint": { "indeksi": 0, "hash": "319ba90f1645eed46a8fd48e9754ca979c3371f59099d32634a8b56549ce02aa" }, "järjestys": 4294967295}], "outit": [{ "arvo": 1000000, "käsikirjoitus": "76a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac" }, { "arvo": 344164, "käsikirjoitus": "76a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac" }], "versio": 1}

Ja sarjamuotoisessa muodossa:

0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b310000000000ffffffff0230750000000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac204e0000000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000

Parametri “script” on vain yksi tapa esittää osoite; muuntamalla yllä olevan tapahtuman kaksi komentosarjaa osoitteiksi saat vastaavasti “1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq” ja “1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T”. Tapahtuman yksittäinen syöte on viittaus edelliseen tapahtuman lähtöön; etsimällä sitä lohkoketjusta, näemme, että sillä on käytettävissä olevat 1354164 satoa (yksi satoshi on bitcoinin pienin yksikkö, 100 miljoonaa satoshi = 1 BTC). Nämä kaksi lähtöä käyttävät 1344164, jättäen 10000 satoshia maksuksi.

Huomaa, että tapahtuma voi käyttää vain koko tuotoksen eikä osittain. Tämän kiertämiseksi vakiomekanismi on “muutoksen” käsite – lähetä yksi lähtö aiottuun määränpäähän ja sitten toinen lähtö, joka lähettää loput takaisin itsellesi. Yllä oleva tapahtuma on esimerkki siitä – ensimmäinen lähtö olisi 0,01 BTC-maksu ja toinen olisi muutos. Kun olet luonut tapahtuman, sinun on allekirjoitettava kukin syöttö yksityistä avainta, joka vastaa kutakin osoitetta. Prosessi siihen on melko mukana, mutta onneksi kirjastot hoitavat sen puolestasi. Tältä näyttää yllä oleva tapahtuma, kun se on allekirjoitettu:

0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b31000000008b48304502203bcabb367ca84b2af394597bff4a6169fa55b156708557256d2c584f1bd54e1502210086fdf257e58dbb5e1f3b4686f4385e86ea89e677a6c90a3c87ce276d88ad2b31014104e6eb4c73192bcc7b63f7e3c05ed52c0d98abac6f6aa0876e2e57eeda6b60fe03098cb63633d08077b14cc30efe9bc5c9866ebc1297c03399e27381539025f887ffffffff0240420f00000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac64400500000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000

Lopuksi sinun on työnnettävä allekirjoitettu tapahtuma lohkoketjuun. Paras tapa tehdä tämä manuaalisesti on http://blockchain.info/pushtx. Ja siinä on pohjimmiltaan kaikki mitä Bitcoinilla on – kunnes pääsemme edistyneisiin ominaisuuksiin, kuten moniallekirjoitustapahtumiin, mutta ne kuvataan parhaiten tarkemmin toisessa artikkelissa.

Bitcoind

Bitcoind on “referenssiasiakas”, jonka on luonut ydin Bitcoin-kehitystiimi; se on täysi Bitcoin-solmu, joka lataa koko lohkoketjun ja käsittelee tapahtumia. Bitcoindin toiminnallisuus on jonkin verran rajoitettu; se ei esimerkiksi voi antaa sinulle osoitteen tapahtumahistoriaa, ellet ole tuonut kyseistä osoitetta etukäteen. Se on kuitenkin melko voimakas. Kun olet ladannut bitcoindin sen projektisivulta ja rakenna se, ensimmäinen askel on luoda tiedosto Bitcoin-hakemistoon (~ / .bitcoin Linuxissa), jonka sisältö on seuraava:

rpcuser = userrpcpassword = passrpcport = 8332txindex = 1

Korvaa oma käyttäjätunnuksesi ja salasanasi haluttaessa. Kun olet tehnyt tämän, siirry hakemistoon, joka sisältää suoritettavan tiedoston (/ bin, jos versiosi mukana on valmiiksi tehty suoritettava tiedosto, / src, jos teit sen itse), ja käynnistä komentorivillä ./bitcoind – daemon käynnistääksesi daemon. Siinä vaiheessa sinulla on kaksi tapaa suorittaa bitcoind-komentoja.

Ensimmäinen tapa on yksinkertaisempi: kirjoita vain “bitcoind”, jota seuraa komennon nimi ja argumentit komentorivillä. Esimerkiksi:

>./ bitcoind getblockhash 100000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048>./ bitcoind getblock 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 { "hash" : "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", "vahvistukset" : 212362, "koko" : 215, "korkeus" : 1, "versio" : 1, "merkleroot" : "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", "tx" : [ "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098" ], "aika" : 1231469665, "seksuaalirikollinen" : 2573394689, "bittiä" : "1d00ffff", "vaikeus" : 1.00000000, "edellinenblockhash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "seuraavablockhash" : "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"}> bitcoind getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd51209801000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0704ffff001d0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac00000000

Toinen tapa on käyttää JSON-RPC: tä. JSON-RPC on yleinen käyttöliittymä, jonka avulla voit muodostaa yhteyden bitcoindiin ja suorittaa komentoja sen avulla millä tahansa kielellä – mahdollisesti myös toiselta tietokoneelta. Bitcoin-wiki on sivu kuvataan joitain tapoja tehdä JSON-RPC-puhelu eri ohjelmointikielillä; Lyhyyden vuoksi luetelen vain kaksi.

Pythonissa:

tuo httplib, json, base64def mkrequest (url, user, pass, method, params, hasresponse = True): yhteys = httplib.HTTPConnection (url) postdata = json.dumps ({ "menetelmä": menetelmä, "parametrit": params}) req = urllib2.Request (‘http: // localhost: 8001’, postdata, {‘Authorization’: b’Basic ‘+ base64.b64encode (user +’: ‘+ pass),}) jos hasresponse: return urllib2.urlopen (req). lue (). nauha ()

Ja komentorivillä käpristämällä:

curl – käyttäjä – pass – data-binaarinen ‘{"menetelmä":,"parametrit": [, …]} ‘http: // localhsot: 8332

SX

Bitcoin-tapahtumien käsittelemiseksi on kaksi vaihtoehtoista komentorivityökalua: työvälineitä ja SX. SX: n on luonut libbitcoin-kehittäjä Amir Taaki, ja pieni tiimi ylläpitää sitä nyt aktiivisesti. pybitcointools kirjoitin itse. Syntaksi on melko samanlainen, vaikka onkin eroja. SX: n asentaminen on suhteellisen yksinkertaista; sinun tarvitsee vain ladata tekstitiedosto nimeltä install-sx.sh, asentaa muutama kirjasto ja suorittaa tekstitiedosto. Ubuntussa komentorivin ohjeet ovat seuraavat:

wget http://sx.dyne.org/install-sx.shsudo apt-get install git build-essential autoconf libtool libboost-all-dev pkg-config libcurl4-openssl-dev libleveldb-dev libzmq-dev libconfig ++ – dev libncurses5- dev qrencodechmod + x install-sx.sh./install-sx.sh

Sitten, kun SX on asennettu, tässä on joitain asioita, joita voit tehdä sen kanssa. Jos rakennat yksinkertaisesti maksujen käsittelyalustaa, riittää, että haet yksinkertaisesti osoitehistorian ja ehkä haet tapahtumia:

> sx historia 114tTpMrJHJpNvkPZmz8KVcJoQjD5UtosdAddress: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd lähtö: eb84dd62287a1d85e3f31b0de869534a8f800fad559e36f779a45470aa4e8976: 0 output_height: 277978 arvo: 100000 viettää: 3216bc4b8294532cddab1ae2a95a336ee841be02e6246c1ad9cf1e7db788d10e: 0 spend_height: 277979Address: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd lähtö: 5a45c86c5aff8200db4c7f8a91b9a3e51932510cbeb2dc173fc8611bee5aeaaf: 1 output_height: 278076 arvo: 70000 viettää: 4817f863ace4337be7ea95476b2c73723fb83fbe0e1a6236fbf30f2a8aa14dee: 0 spend_height: 278076> sx noutamaan transaktion 516f0bfe2ed3703112434f645fdc7d805bba51c94c9d8f88b666f1c832eb423c010000000142f2e85e078a214d5c61b58276da5cec01311e026355c570b650c2e665585011010000008a47304402203aa40adefd0dc4a3f960b230a9e1b284d78a4b4dec9119368fdeb006af3b6c7b022071165df64ea4502003d8b6e9c46c28b5c5c748226737b4fe1ee8fc4269b50ee5014104a70f7c8b0a835f549f061b725bd3e06744963a07cb2f76097bafe040f939d6e6d23c6cc89e5b50aa944d26b7d1c8a1f3b8b4e6f7c2f54cf35fb46b0e4b9442e1ffffffff02a0860100000000001976a914ba55b9859c7356c5e5549c8a30c463e3db64e84488ac80054800000000001976a9145a35a4558b8a0140f4a73aaac0be891b99e3790e88ac00000000

Jos haluat laskea osoitteen saldon, sinun on hankittava historia (ehkä käyttämällä sx-historiaa -j 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd tietokoneystävällisemmässä muodossa), suodatettava jo käytetyt kohteet ja lisäämällä loput. Tämä antaa sinulle satoshien kokonaismäärän, jonka osoite voi käyttää (100 miljoonaa satoshia = 1 BTC). Jos haluat ymmärtää tapahtumia, voit liittää tapahtuman tiedostoon ja suorittaa sitten sx showtx-tiedoston.

Voit työskennellä myös yksityisten avainten ja osoitteiden kanssa:

> sx newkey > priv1> kissa priv15JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1> kissa priv1 | sx pubkey04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff> kissa priv1 | sx addr1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7

Ja tehdä liiketoimia. Tässä käytämme lähtöä 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 lähettääksesi 90000 satoshisä 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:

> sx mktx txfile.tx -i 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:> kissa txfile.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa7191810000000000ffffffff01905f0100000000001976a9145600d581a94f00503001> sx rawscript dup hash160 [`echo 1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7 | sx decode-addr`] equifify checkig > raw.script> kissa raaka.script76a9146ed8c762b24ba024df09cb323ea525b06da3acb788ac> kaiku 5JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1 | sx sign-input txfile.tx 0 `kissa raaka.script` > sig> kissa sig3044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b72> sx rawscript [`cat sig`] [04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40a2a40a3d sx set-input txfile.tx 0 > txfile2.tx> kissa txfile2.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa719181000000008a473044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729986420d014104bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2ffffffff01905f0100000000001976a9145600d581a94f65067a09103609e919e3c01141ed88ac00000000> sx broadcast-tx txfile2.tx

Ja voit myös vahvistaa tapahtuman:

> sx validtx txfile2.txStatus: Tulojen vahvistus epäonnistui Vahvistamaton: 0

Virhe on järkevä, koska edellä käyttämäni tuotokset olivat jo käytetty. Kaiken kaikkiaan SX: n avulla voit olennaisesti koota lentopainon “Bitcoin-asiakkaan”, valita tapahtumien tuotokset ja tehdä tapahtumia manuaalisesti. Pelkästään varoitus: tämä on erittäin riskialtista asia, koska jos jätät vahingossa nollan tapahtumalähdöstä, järjestelmä on liian matala virheen havaitsemiseksi ja maksat lopulta 90 maksun.

Pybitcointoolit

Pybitcointools on oikeastaan ​​kaksi asiaa yhdessä; se on samalla Python-kirjasto, jonka avulla voit manipuloida Bitcoin-osoitteita, avaimia ja tapahtumia sekä SX-tyyppistä komentorivityökalua. Jos haluat asentaa molemmat, lataa pybitcointools tässä, siirry hakemistoon ja suorita sudo python setup.py install. Sieltä avaa Python-konsoli ja kirjoita pybitcointools import * -toiminnolla tuodaksesi kaikki pybitcointools-komennot.

Ensimmäinen avaimen hallinta:

> priv = sha256 (‘iso iso aivojen lompakon salasana’)> priv’57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4 ‘> pub = privtopub (priv)> pub’0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9 ”> addr = pubtoaddr (pubi)> addr’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘

Mutta kuten edellä mainittiin, pybitcointools sisältää myös pybtctool, SX: n kaltaisen komentorivityökalun. Käytä pybtctoolia suorittamalla:

> pybtctool sha256 "iso iso pitkä aivopakkauksen salasana"57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4> pybtctool privtopub 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a40420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52bbccbccc> pybtctool pubtoaddr 0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71A203cc034ced46ea92a8df16c

Seuraavaksi historiaan ja tapahtumien hakemiseen:

> h = historia (addr)> h [{ ‘lähtö’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘arvo’: 50000, ‘osoite’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ lähtö ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘arvo’: 50000, ‘osoite ‘: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6′}]> fetchtx ( ’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e’) ‘0100000002b8497b5d250420d0e0ef55150ae49f451846791f54b858e4d7b50e23c087b560010000008c493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3affffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c000000008c493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5ffffffff0250c30000000000001976a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac953d0800000000001976a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac00000000’

Huomaa, että pybtctool sisältää kätevän -s-kytkimen, jonka avulla voit ketjuttaa joitain toimintoja yhteen:

> pybtctool sha256 ‘iso iso aivojen lompakon salasana’ | pybtctool -s privtoaddr | pybtctool -s historia [{ ‘lähtö’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘arvo’: 50000, ‘osoite’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ lähtö ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘arvo’: 50000 , ‘osoite’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}]> pybtctool fetchtx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e | pybtctool -s deserialize {"lukitusaika": 0, "outit": [{"arvo": 50000, "käsikirjoitus": "76a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac"}, {"arvo": 540053, "käsikirjoitus": "76a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac"}], "versio": 1, "ins": [{"käsikirjoitus": "493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3a", "outpoint": {"indeksi": 1, "hash": "60b587c0230eb5d7e458b8541f794618459fe40a1555efe0d02004255d7b49b8"}, "järjestys": 4294967295}, {"käsikirjoitus": "493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5", "outpoint": {"indeksi": 0, "hash": "4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171"}, "järjestys": 4294967295}]}

Huomaa deserialize-komento; voit tietysti käyttää sitä myös pybitcointools-kirjastossa. Ja tietysti voit tehdä tapahtumia:

> pybtctool mktx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 4cc806bb04f730c445c60b3e0f4f44B1B1B1B1B4B1B1B1B4B1B1B4B1B4B1B4B1B4B1B4B1B1B4B1B1B1B4B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1Bcc1B1bcb1bcc1b1b1bcc1b1b1bcc1c1b1bc4d1b1dcccdcc1 pybtctool -S merkki 0 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a401000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000

Sitten voit työntää tapahtuman käyttämällä pushtx- tai rightsius_pushtx-tiedostoa ja siirtyä suoraan keskikokoiseen kaivospooliin. rightsius_pushtx on hyödyllinen niin kutsuttuihin “epätyypillisiin” tapahtumiin, jotka tavalliset Bitcoin-solmut hylkäävät; esimerkiksi usean allekirjoituksen transaktiot yli kolmen osapuolen välillä voidaan lähettää täältä.

Kirjastot

Pybitcointools ja SX eivät ole ainoat työkalut siellä; Bitcoin-kirjastoja on melkein kaikilla kielillä. Tässä on muutama:

Hyvää koodausta!