Ena glavnih prednosti Bitcoina je, kako enostavno je delati z vidika razvijalca. Bitcoin nima odvisnosti tretjih oseb, lastniških API-jev in vmesnikov, ki se hitro spreminjajo; vse kar potrebujete je vaš najljubši programski jezik in verjetno obstaja že preprosta Bitcoin knjižnica, s katero lahko v nekaj urah začnete pošiljati in prejemati bitcoine. Namen tega članka bo predstaviti nekaj teh knjižnic in prikazati osnove dela z Bitcoin naslovi in transakcijami v katerem koli jeziku.
Naslovi, tipke, transakcije, oh moj!
Protokol Bitcoin na splošno lahko razdelimo na tri dele: upravljanje naslovov in ključev, transakcije in bloki ter rudarstvo. Bloki in rudarstvo za vas kot začetnika Bitcoin-a niso pomembni; v večini primerov se je lažje preprosto zanesti na storitev tretje osebe za pridobivanje transakcij, ki abstrahira koncept blokov stran, in če vas zanima rudarstvo, je najboljši pristop preprosto kupiti standardni Bitcoin rudar. Naslovi, ključi in transakcije pa se preprosto ne morete izogniti obravnavi.
Pri upravljanju Bitcoin ključev obstajajo tri vrste predmetov, s katerimi boste morali ravnati: zasebni ključi, javni ključi in naslovi. Morda ste že slišali za izraza “zasebni ključ” in “javni ključ” v kontekstu kriptografije javnega ključa; prav o takšnih zasebnih in javnih ključih govorimo tukaj. Vendar Bitcoin uporablja novejšo kriptografijo, imenovano kriptografija eliptične krivulje, in ne starejših kriptografskih algoritmov, ki temeljijo na faktoringu, kot je RSA, zato so bitcoin ključi videti nekoliko drugače kot recimo, PGP tipke. Zasebni ključ je videti tako:
9d86361789d13823fd888fa45c9b356b76d41a7e33b2b2c3056632721c4c1255
Ustrezni javni ključ je:
04d8f08938e78447b2b1a629c503d5e17483b0d15751a9e8f83c8460e6ec32fd68d0b4068e83c012f54df995e52ed8bae38056a8d922f9687200ae83e5a6728dff
Zasebnega ključa je mogoče pretvoriti v javnega, javnega pa v zasebnega. Bitcoin naslov je pravzaprav razpršilnik javnega ključa; Bitcoin naslov, ki ustreza zgornjemu javnemu ključu, je:
172YRdGzPqyXm9rm1EWKwPXTRsmcApoPQ6
Morda boste opazili, da naslov Bitcoin ni v šestnajstiški obliki, kot sta zasebni in javni ključ. To je zato, ker za nekatere svoje formate Bitcoin uporablja lasten format predstavitve, znan kot base58check. Del „base58“ izhaja iz dejstva, da se uporablja 58 različnih črk in številk; O, 0, l in I so izpuščeni, ker jih je enostavno zamenjati. Podnožje 58 je podobno podnožju 2 ali podnožju 3 ali podstavku 10. Število 31337 na podstavku 2 je na primer ‘111101001101001’; v bazi 3 je ‘1120222122’, v bazi 10 je ‘31337’, v bazi 16 je ‘7a69’, v bazi 58 je ‘AKJ’ in končno, v bazi 256 je samo ‘zi’. Pomemben je tudi “check” del base58check; kar pomeni, da se prvi štirje bajti zgoščene oznake sporočila dodajo na konec sporočila, preden kodirajo rezultat v base58. Na primer, postopek pretvorbe “zi” iz baze 256 v bazo 58 deluje na naslednji način:
- 1. korak: kontrolna vsota = sha256 (sha256 (‘x00’ + ‘zi’)) (upoštevajte, da spredaj dodamo nič bajta) ’97fbc63584f26bd0109f99d467c447607dbecff51b903e450207466114672261 ′
- 2. korak: vmesni = ‘x00’ + ‘zi’ + kontrolna vsota [: 4] (v binarni obliki) ‘x00zix97xfbxc6x35’
- 3. korak: pretvorite v osnovno 58 ‘123xZAaruJ’
Vendar vam osebno ne bo treba reševati vseh teh zapletenosti; Bitcoin knjižnice obstajajo, da za vas urejajo vse, o čemer bomo govorili nekaj kasneje v članku. Najprej pa obdelava transakcij.
Prva pomembna točka, ki jo je treba upoštevati, je, da Bitcoin notranje nima pojma “računi” ali “stanja”; vsa sredstva so shranjena v predmetih, imenovanih “izhodni dogodki”. Transakcija ima enega ali več vhodov, pri čemer vsak vhod porabi obstoječi neizrabljeni izhod transakcije (»UTXO«), transakcija pa lahko nato pošlje do enake količine BTC v skupnih izhodih, ki jih ima na vhodih. Takole je videti transakcija v deserializirani obliki:
{ "zaklepanje": 0, "ins": [{ "skripta": "", "izhodišče": { "indeks": 0, "hash": "319ba90f1645eed46a8fd48e9754ca979c3371f59099d32634a8b56549ce02aa" }, "zaporedje": 4294967295}], "outs": [{ "vrednost": 1000000, "skripta": "76a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac" }, { "vrednost": 344164, "skripta": "76a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac" }], "različico": 1}
In v serializirani obliki:
0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b310000000000ffffffff0230750000000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288accd4d04d04d04e0c04e04a0dc04e04a0d04f04a04a04a04f04a04a04f04a04a04f0a04a04a04f04a04a04a04f7a04e04f7a04e04f07e04d07f7b8c04e07e04e07e7b8b8c0eeee
Parameter “script” je le še en način predstavitve naslova; s pretvorbo dveh skriptov v zgornji transakciji na naslova dobimo “1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq” oziroma “1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T”. Posamezni vhod v transakciji je sklic na izhod predhodne transakcije; če ga pogledamo na verigi blokov, vidimo, da ima na voljo 1354164 satošijev (1 satoshi je najmanjša enota bitcoina, s 100 milijoni satoshi = 1 BTC). Oba izhoda porabita 1344164, za plačilo pa 10000 satošijev.
Upoštevajte, da lahko transakcija porabi celoten izhod in ne le delno. Da bi to zaobšli, je standardni mehanizem koncept “spremembe” – pošljite en izhod na predvideni cilj, nato pa drugi izhod pošljete nazaj sebi. Zgornja transakcija je primer tega – prvi izhod bi bil plačilo 0,01 BTC, drugi pa sprememba. Ko ustvarite transakcijo, morate nato vsak podpis podpisati z zasebnim ključem, ki ustreza vsakemu naslovu. Postopek za to je precej vključen, vendar ga knjižnice na srečo rešijo namesto vas. Evo, kako izgleda zgornja transakcija, ko je podpisana:
0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b31000000008b48304502203bcabb367ca84b2af394597bff4a6169fa55b156708557256d2c584f1bd54e1502210086fdf257e58dbb5e1f3b4686f4385e86ea89e677a6c90a3c87ce276d88ad2b31014104e6eb4c73192bcc7b63f7e3c05ed52c0d98abac6f6aa0876e2e57eeda6b60fe03098cb63633d08077b14cc30efe9bc5c9866ebc1297c03399e27381539025f887ffffffff0240420f00000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac64400500000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000
Nato morate podpisano transakcijo potisniti v verigo blokov. Najboljši način, da to storite ročno, je http://blockchain.info/pushtx. In to je v bistvu vse, kar Bitcoin ponuja – dokler ne vstopimo v napredne funkcije, kot so transakcije z več podpisi, to je, vendar so te podrobneje opisane v drugem članku.
Bitcoind
Bitcoind je “referenčni odjemalec”, ki ga je ustvarila glavna razvojna skupina za Bitcoin; gre za polno Bitcoin vozlišče, ki prenese celotno verigo blokov in obdela transakcije. Bitcoind je nekoliko omejen po funkcionalnosti; na primer, ne more vam dati zgodovine transakcij naslova, razen če ste ga predhodno uvozili. Vendar je kljub temu dokaj močan. Ko prenesete bitcoind s strani projekta in ga zgradite, prvi korak je ustvariti datoteko v svojem imeniku Bitcoin (~ / .bitcoin v Linuxu) z naslednjo vsebino:
rpcuser = userrpcpassword = passrpcport = 8332txindex = 1
Po želji nadomestite svoje uporabniško ime in geslo. Ko to storite, se pomaknite do imenika, v katerem je izvedljiva datoteka (/ bin, če je bila v vaši različici vnaprej izdelana izvedljiva datoteka, / src, če ste jo naredili sami), in zaženite ./bitcoind – daemon v ukazni vrstici, da zaženete demon. Takrat imate dva načina za zagon ukazov bitcoind.
Prvi način je enostavnejši: vnesite »bitcoind«, čemur sledi ime ukaza in argumenti v ukazni vrstici. Na primer:
>./ bitcoind getblockhash 100000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048>./ bitcoind getblock 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 { "hash" : "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", "potrditve" : 212362, "velikost" : 215, "višina" : 1, "različico" : 1, "merkleroot" : "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", "tx" : [ "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098" ], "čas" : 1231469665, "nonce" : 2573394689, "bitov" : "1d00ffff", "težavnost" : 100000000, "prejšnji blokhaš" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "nextblockhash" : "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"}> bitcoind getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd51209801000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0704ffff001d0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac00000000
Drugi način je uporaba JSON-RPC. JSON-RPC je generični vmesnik, ki vam omogoča povezavo z bitcoindom in izvajanje ukazov z njim iz katerega koli jezika – morda celo iz drugega računalnika. Bitcoin wiki ima stran opis nekaterih načinov za klicanje JSON-RPC v različnih programskih jezikih; zaradi kratkosti bom navedel le dva.
V Pythonu:
uvoz httplib, json, base64def mkrequest (url, uporabnik, pass, metoda, params, hasresponse = True): connection = httplib.HTTPConnection (url) postdata = json.dumps ({ "metoda": metoda, "params": params}) req = urllib2.Request (‘http: // localhost: 8001’, postdata, {‘Authorization’: b’Basic ‘+ base64.b64encode (user +’: ‘+ pass),}) if hasresponse: return urllib2.urlopen (req) .read (). strip ()
In v ukazni vrstici z uporabo curl:
curl – user – pass – data-binary ‘{"metoda":,"params": [, …]} ‘http: // localhsot: 8332
SX
Obstajata dve nadomestni orodji za ukazno vrstico za obravnavanje Bitcoin transakcij: pybitcointools in SX. SX je ustvaril razvijalec libbitcoinov Amir Taaki, zdaj pa ga aktivno vzdržuje majhna ekipa; pybitcointools sem napisal sam. Sintaksa je precej podobna, čeprav obstajajo razlike. Namestitev SX je razmeroma preprosta; vse, kar morate storiti, je, da prenesete besedilno datoteko z imenom install-sx.sh, namestite nekaj knjižnic in zaženete besedilno datoteko. Navodila za ukazno vrstico v Ubuntu so naslednja:
wget http://sx.dyne.org/install-sx.shsudo apt-get install git build-bitno 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
Ko je SX nameščen, je nekaj, kar lahko z njim storite. Če preprosto gradite platformo za obdelavo plačil, bi bilo dovolj, da preprosto pridobite naslov zgodovine naslovov in morda transakcije:
> sx Zgodovina 114tTpMrJHJpNvkPZmz8KVcJoQjD5UtosdAddress: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd izhod: eb84dd62287a1d85e3f31b0de869534a8f800fad559e36f779a45470aa4e8976: 0 output_height: 277.978 vrednost: 100.000 poraba: 3216bc4b8294532cddab1ae2a95a336ee841be02e6246c1ad9cf1e7db788d10e: 0 spend_height: 277979Address: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd izhod: 5a45c86c5aff8200db4c7f8a91b9a3e51932510cbeb2dc173fc8611bee5aeaaf: 1 output_height: 278.076 vrednost: 70.000 poraba: 4817f863ace4337be7ea95476b2c73723fb83fbe0e1a6236fbf30f2a8aa14dee: 0 spend_height: 278076> sx puščati-transakcijo 516f0bfe2ed3703112434f645fdc7d805bba51c94c9d8f88b666f1c832eb423c010000000142f2e85e078a214d5c61b58276da5cec01311e026355c570b650c2e665585011010000008a47304402203aa40adefd0dc4a3f960b230a9e1b284d78a4b4dec9119368fdeb006af3b6c7b022071165df64ea4502003d8b6e9c46c28b5c5c748226737b4fe1ee8fc4269b50ee5014104a70f7c8b0a835f549f061b725bd3e06744963a07cb2f76097bafe040f939d6e6d23c6cc89e5b50aa944d26b7d1c8a1f3b8b4e6f7c2f54cf35fb46b0e4b9442e1ffffffff02a0860100000000001976a914ba55b9859c7356c5e5549c8a30c463e3db64e84488ac80054800000000001976a9145a35a4558b8a0140f4a73aaac0be891b99e3790e88ac00000000
Če želite izračunati stanje naslova, boste morali dobiti zgodovino (morda z uporabo sx history -j 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd za računalniku bolj prijazno obliko), filtrirajte že porabljene postavke in dodajte vrednosti ostalo. Tako boste dobili skupno število satošijev, ki jih ima naslov na voljo za porabo (100 milijonov satošijev = 1 BTC). Če želite transakcije razumeti, lahko transakcijo prilepite v datoteko in nato na datoteki zaženete sx showtx.
Delate lahko tudi z zasebnimi ključi in naslovi:
> sx nova tipka > priv1> mačka priv15JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1> mačka priv1 | sx pubkey04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff> mačka priv1 | sx addr1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7
In opravljati transakcije. Tu uporabimo izhod 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 za pošiljanje 90000 satošijev na 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:
> sx mktx txfile.tx -i 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:> mačka txfile.> sx rawscript dup hash160 [`echo 1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7 | sx decode-addr`] enakoverify checkig > raw.script> mačka raw.script76a9146ed8c762b24ba024df09cb323ea525b06da3acb788ac> echo 5JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1 | sx sign-input txfile.tx 0 `mačka raw.script` > sig> mačka sig3044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584205b019964> sx rawscript [“mačka sig”] [04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2d40405151 | sx set-input txfile.tx 0 > txfile2.tx> mačka txfile2.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa719181000000008a473044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729986420d014104bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2ffffffff01905f0100000000001976a9145600d581a94f65067a09103609e919e3c01141ed88ac00000000> sx oddaja-tx txfile2.tx
Transakcijo lahko tudi preverite:
> sx validtx txfile2.txStatus: Validacija vhodov ni uspelaNepotrdljeno: 0
Napaka je smiselna, ker so bili rezultati, ki sem jih uporabil zgoraj, že porabljeni. SX vam v celoti omogoča, da v bistvu sestavite muho “odjemalca Bitcoinov”, tako da izberete izhodne transakcije in ročno izvedete transakcije. Vendar samo opozorilo: to je zelo tvegano početje, saj če slučajno pustite ničlo na izhodu transakcije, je sistem prenizek, da bi lahko ugotovil vašo napako in na koncu boste plačali 90 provizij.
Pybitcointools
Pybitcointools je v resnici dve stvari v enem; hkrati je knjižnica Python, ki vam omogoča upravljanje Bitcoin naslovov, ključev in transakcij ter orodje ukazne vrstice, podobno SX. Če želite namestiti oboje, prenesite pybitcointools tukaj, pomaknite se do imenika in zaženite sudo python setup.py install. Od tam odprite konzolo Python in vnesite iz pybitcointools import * za uvoz vseh ukazov pybitcointools.
Prvo upravljanje s ključi:
> priv = sha256 (‘nekaj velikega gesla za dolgo možgansko denarnico’)> priv’57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4 ‘> pub = privtopub (priv)> pub’0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9 ‘> addr = pubtoaddr (pub)> addr’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘
Kot že omenjeno, pybitcointools vključuje tudi pybtctool, orodje ukazne vrstice, podobno SX. Če želite uporabiti pybtctool, zaženite:
> pybtctool sha256 "nekaj velikega gesla za dolgo možgansko denarnico"57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4> pybtctool privtopub 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a40420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9> pybtctool pubtoaddr 0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea9eb4CbDCWEb3CbEb3CbEd3BbEc3CbEdCbEc3CbEdCbEb3CbEb3CbEd3bEb3CbZd
Zdaj pa na zgodovino in pridobivanje transakcij:
> h = zgodovina (naslov)> h [{ ‘izhod’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 “,” vrednost “: 50.000, naslov”: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ izhod ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1 “,” vrednost “: 50.000, naslov ‘: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6’}]> fetchtx ( “97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e ‘)’ 0100000002b8497b5d250420d0e0ef55150ae49f451846791f54b858e4d7b50e23c087b560010000008c493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3affffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c000000008c493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5ffffffff0250c30000000000001976a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac953d0800000000001976a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac00000000 ‘
Upoštevajte, da pybtctool vključuje priročno stikalo -s, s katerim lahko nekatere operacije povežete skupaj:
> pybtctool sha256 “nekaj velikega gesla za dolgo možgansko denarnico” | pybtctool -s privtoaddr | pybtctool -s zgodovina [{ ‘izhod’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 “,” vrednost “: 50.000, naslov”: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ izhod ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1 “,” vrednost “: 50000 , ‘naslov’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}]> pybtctool fetchtx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e | pybtctool -s deserializirajo {"zaklepanje": 0, "outs": [{"vrednost": 50000, "skripta": "76a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac"}, {"vrednost": 540053, "skripta": "76a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac"}], "različico": 1, "ins": [{"skripta": "493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3a", "izhodišče": {"indeks": 1, "hash": "60b587c0230eb5d7e458b8541f794618459fe40a1555efe0d02004255d7b49b8"}, "zaporedje": 4294967295}, {"skripta": "493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5", "izhodišče": {"indeks": 0, "hash": "4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171"}, "zaporedje": 4294967295}]}
Upoštevajte ukaz za deserializacijo; lahko ga seveda uporabite tudi v knjižnici pybitcointools. In seveda lahko opravljate transakcije:
> pybtctool mktx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 4cc806bb04f730c445c60b3e0f4f44b54d1d1d1b1d1b1d1b1d1b1d1b1d1b1d1b1d1b1a pybtctool -s znamenje 0 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a401000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000
Nato lahko potisnete transakcijo s pomočjo pushtx aliligius_pushtx, da potisnete naravnost v srednje velik rudarski bazen. upravičen_pushtx je koristen za tako imenovane “nestandardne” transakcije, ki jih navadna bitcoin vozlišča zavrnejo; na primer, tukaj lahko pošljete transakcije z več podpisi med več kot tremi strankami.
Knjižnice
Pybitcointools in SX niso edino orodje; Bitcoin knjižnice obstajajo v skoraj vseh jezikih. Tu je nekaj:
- BitcoinJS (Javascript): Prvotna različica Stefana Thomasa, ali moja vilica
- python-ecdsa (Python)
- Haskoin (Haskell)
- libbitcoin (C ++)
- BitcoinJ (Java)
- btcd (Pojdi)
Veselo kodiranje!