En av de største fordelene med Bitcoin er hvor enkelt det er å jobbe med fra en utviklers synspunkt. Bitcoin har ingen tredjepartsavhengigheter, ingen proprietære API-er og ikke noe raskt skiftende grensesnitt; alt du trenger er ditt eget programmeringsspråk, og sjansen er stor for at det allerede finnes et enkelt Bitcoin-bibliotek som du kan bruke til å sende og motta bitcoins innen få timer. Formålet med denne artikkelen vil være å introdusere noen få av disse bibliotekene, og vise det grunnleggende om å jobbe med Bitcoin-adresser og transaksjoner på hvilket som helst språk.

Adresser, nøkler, transaksjoner, Oh My!

Bitcoin-protokollen generelt kan deles i tre deler: adresse- og nøkkeladministrasjon, transaksjoner og blokker og gruvedrift. Blokker og gruvedrift er ikke viktig for deg som en begynnende Bitcoin-utvikler; i de fleste tilfeller er det lettere å bare stole på en tredjepartshentingstjeneste som trekker ut konseptet med blokker, og hvis du er interessert i gruvedrift, er den beste tilnærmingen å kjøpe en vanlig Bitcoin-gruver. Adresser, nøkler og transaksjoner, men du kan rett og slett ikke unngå å håndtere.

I Bitcoin-nøkkeladministrasjon er det tre typer objekter du må håndtere: private nøkler, offentlige nøkler og adresser. Du har kanskje hørt om begrepene “privat nøkkel” og “offentlig nøkkel” i sammenheng med kryptering av offentlig nøkkel; det er akkurat den typen private og offentlige nøkler vi snakker om her. Imidlertid bruker Bitcoin en nyere type kryptografi kalt elliptisk kurvekryptografi, og ikke de eldre faktorbaserte kryptografiske algoritmene som RSA, så Bitcoin-nøkler ser litt annerledes ut, for eksempel, PGP-nøkler. En privat nøkkel ser slik ut:

9d86361789d13823fd888fa45c9b356b76d41a7e33b2b2c3056632721c4c1255

Og den tilhørende offentlige nøkkelen er:

04d8f08938e78447b2b1a629c503d5e17483b0d15751a9e8f83c8460e6ec32fd68d0b4068e83c012f54df995e52ed8bae38056a8d922f9687200ae83e5a6728dff

En privat nøkkel kan konverteres til en offentlig nøkkel, men en offentlig nøkkel kan ikke konverteres til en privat nøkkel. En Bitcoin-adresse er faktisk hash av den offentlige nøkkelen; Bitcoin-adressen som tilsvarer ovennevnte offentlige nøkkel er:

172YRdGzPqyXm9rm1EWKwPXTRsmcApoPQ6

En ting du kanskje legger merke til er at Bitcoin-adressen ikke er i heksadesimal form som de private og offentlige nøklene er. Dette er fordi, for noen av formatene, bruker Bitcoin sitt eget representasjonsformat, kjent som base58check. “Base58” -delen kommer av det faktum at 58 forskjellige bokstaver og tall brukes; O, 0, l og jeg er utelatt fordi de er for enkle å feile for hverandre. Base 58 er lik base 2, eller base 3, eller base 10. For eksempel er tallet 31337 i base 2 ‘111101001101001’; i base 3 er det ‘1120232122’, i base 10 er det ‘31337’, i base 16 er det ‘7a69’, i base 58 er det ‘AKJ’ og til slutt i base 256 er det bare ‘zi’. “Sjekk” -delen av base58check er også viktig; hva det betyr er at de første fire byte av hashen til en melding blir lagt til slutten av meldingen før koding av resultatet i base58. For eksempel fungerer prosessen med å konvertere ‘zi’ fra base 256 til base 58 som følger:

  • Trinn 1: sjekksum = sha256 (sha256 (‘x00’ + ‘zi’)) (merk at vi legger til en nullbyte foran) ’97fbc63584f26bd0109f99d467c447607dbecff51b903e450207466114672261 ′
  • Trinn 2: mellomliggende = ‘x00’ + ‘zi’ + sjekksum [: 4] (i binær form) ‘x00zix97xfbxc6x35’
  • Trinn 3: Konverter til base 58 ‘123xZAaruJ’

Imidlertid trenger du personlig ikke å håndtere alle disse kompleksitetene; Bitcoin-biblioteker eksisterer for å håndtere alt for deg, og vi vil snakke om noen senere i artikkelen. Men først, transaksjonshåndtering.

Det første viktige punktet å huske på er at Bitcoin ikke internt har begrepet “kontoer” eller “saldoer”; alle midlene er lagret i objekter kjent som “transaksjonsutganger”. En transaksjon har en eller flere innganger, hver inngang bruker en eksisterende ubrukt transaksjonsoutput (“UTXO”), og transaksjonen kan deretter sende opp til samme mengde BTC i totale utganger som den har innganger. Slik ser en transaksjon ut i deserialisert form:

{ "låsetid": 0, "inn": [{ "manus": "", "outpoint": { "indeks": 0, "hasj": "319ba90f1645eed46a8fd48e9754ca979c3371f59099d32634a8b56549ce02aa" }, "sekvens": 4294967295}], "outs": [{ "verdi": 1000000, "manus": "76a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac" }, { "verdi": 344164, "manus": "76a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac" }], "versjon": 1}

Og i serieform:

0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b310000000000ffffffff2275750000000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac2040000

Parameteren “skript” er bare en annen måte å representere en adresse på; konvertering av de to skriptene i ovennevnte transaksjon til adresser får vi henholdsvis “1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq” og “1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T”. Den eneste inngangen i transaksjonen er en referanse til en tidligere transaksjonsoutput; ser vi opp på blockchain, ser vi at den har 1354164 satoshier tilgjengelig å bruke (1 satoshi er den minste enheten i en bitcoin, med 100 millioner satoshi = 1 BTC). De to utgangene bruker 1344164, og etterlater 10000 satoshier som gebyr.

Merk at en transaksjon bare kan bruke en produksjon i sin helhet, og ikke delvis. For å komme rundt dette, er standardmekanismen begrepet “endring” – send en utgang til den tiltenkte destinasjonen, og deretter en annen utgang som sender resten tilbake til deg selv. Ovennevnte transaksjon er et eksempel på det – den første utgangen vil være en 0,01 BTC-betaling, og den andre vil være endringen. Når du har opprettet en transaksjon, må du signere hver inngang med den private nøkkelen som tilsvarer hver adresse. Prosessen for å gjøre det er ganske involvert, men heldigvis håndterer biblioteker det for deg. Slik ser transaksjonen ovenfor ut når den er signert:

0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b31000000008b48304502203bcabb367ca84b2af394597bff4a6169fa55b156708557256d2c584f1bd54e1502210086fdf257e58dbb5e1f3b4686f4385e86ea89e677a6c90a3c87ce276d88ad2b31014104e6eb4c73192bcc7b63f7e3c05ed52c0d98abac6f6aa0876e2e57eeda6b60fe03098cb63633d08077b14cc30efe9bc5c9866ebc1297c03399e27381539025f887ffffffff0240420f00000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac64400500000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000

Så, til slutt, må du skyve den signerte transaksjonen til blockchain. Den beste måten å gjøre dette manuelt på er http://blockchain.info/pushtx. Og det er i utgangspunktet alt det er med Bitcoin – til vi kommer inn på avanserte funksjoner som multisignaturtransaksjoner, det vil si, men de er best beskrevet mer detaljert i en annen artikkel.

Bitcoind

Bitcoind er “referanseklient” opprettet av Bitcoin utviklingsteam; det er en full Bitcoin-node som laster ned hele blockchain og behandler transaksjoner. Bitcoind er noe begrenset i funksjonalitet; for eksempel kan den ikke gi deg en transaksjonshistorikk til en adresse med mindre du hadde importert den adressen på forhånd. Det er likevel ganske kraftig. Når du laster ned bitcoind fra prosjektsiden og bygge den, er det første trinnet å lage en fil i Bitcoin-katalogen din (~ / .bitcoin på Linux) med følgende innhold:

rpcuser = brukerrpcpassword = passrpcport = 8332txindex = 1

Bytt inn ditt eget brukernavn og passord hvis ønskelig. Når du har gjort dette, navigerer du til katalogen som inneholder den kjørbare filen (/ bin hvis versjonen kom med en kjørbar pre-laget, / src hvis du laget den selv), og kjører ./bitcoind – demon på kommandolinjen for å starte opp daemon. På det tidspunktet har du to måter å kjøre bitcoind-kommandoer på.

Den første måten er enklere: bare skriv inn “bitcoind” etterfulgt av navnet på kommandoen og argumentene på kommandolinjen. For eksempel:

>./ bitcoind getblockhash 100000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048>./ bitcoind getblock 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 { "hasj" : "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", "bekreftelser" : 212362, "størrelse" : 215, "høyde" : 1, "versjon" : 1, "merkleroot" : "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", "tx" : [ "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098" ], "tid" : 1231469665, "nonce" : 2573394689, "biter" : "1d00ffff", "vanskelighet" : 1.00000000, "previousblockhash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "neste blokkering" : "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"}> bitcoind getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd51209801000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0704ffff001d0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac00000000

Den andre måten er å bruke JSON-RPC. JSON-RPC er et generelt grensesnitt som lar deg koble til bitcoind og kjøre kommandoer med det fra hvilket som helst språk – potensielt til og med fra en annen datamaskin. Bitcoin wiki har en side beskriver noen av måtene å ringe JSON-RPC på forskjellige programmeringsspråk; for korthets skyld vil jeg bare liste opp to.

I Python:

import httplib, json, base64def mkrequest (url, user, pass, method, params, hasresponse = True): connection = httplib.HTTPConnection (url) postdata = json.dumps ({ "metode": metode, "params": params}) req = urllib2.Request (‘http: // localhost: 8001’, postdata, {‘Authorization’: b’Basic ‘+ base64.b64encode (user +’: ‘+ pass),}) hvis har svar: return urllib2.urlopen (req) .les (). stripe ()

Og på kommandolinjen ved hjelp av krøll:

krøll – bruker – pass – data-binær ‘{"metode":,"params": [, …]} ‘http: // localhsot: 8332

SX

Det er to alternative kommandolinjeverktøy for å håndtere Bitcoin-transaksjoner: pybitcointools og SX. SX ble opprettet av libbitcoin-utvikleren Amir Taaki, og vedlikeholdes nå aktivt av et lite team; pybitcointools ble skrevet av meg selv. Syntaksen er ganske lik, selv om det er forskjeller. Installering av SX er relativt enkelt; alt du trenger å gjøre er å laste ned en tekstfil kalt install-sx.sh, installere noen få biblioteker og kjøre tekstfilen. På Ubuntu er kommandolinjeinstruksjonene som følger:

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

Så når SX er installert, her er noe av det du kan gjøre med det. Hvis du bare bygger en betalingsbehandlingsplattform, ville det være nok å bare hente adresseloggen og kanskje hente transaksjoner:

> sx historie 114tTpMrJHJpNvkPZmz8KVcJoQjD5UtosdAddress: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd utgang: eb84dd62287a1d85e3f31b0de869534a8f800fad559e36f779a45470aa4e8976: 0 output_height: 277978 verdi: 100 000 regning: 3216bc4b8294532cddab1ae2a95a336ee841be02e6246c1ad9cf1e7db788d10e: 0 spend_height: 277979Address: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd utgang: 5a45c86c5aff8200db4c7f8a91b9a3e51932510cbeb2dc173fc8611bee5aeaaf: 1 output_height: 278076 verdi: 70000 regning: 4817f863ace4337be7ea95476b2c73723fb83fbe0e1a6236fbf30f2a8aa14dee: 0 spend_height: 278076> sx hente transaksjon 516f0bfe2ed3703112434f645fdc7d805bba51c94c9d8f88b666f1c832eb423c010000000142f2e85e078a214d5c61b58276da5cec01311e026355c570b650c2e665585011010000008a47304402203aa40adefd0dc4a3f960b230a9e1b284d78a4b4dec9119368fdeb006af3b6c7b022071165df64ea4502003d8b6e9c46c28b5c5c748226737b4fe1ee8fc4269b50ee5014104a70f7c8b0a835f549f061b725bd3e06744963a07cb2f76097bafe040f939d6e6d23c6cc89e5b50aa944d26b7d1c8a1f3b8b4e6f7c2f54cf35fb46b0e4b9442e1ffffffff02a0860100000000001976a914ba55b9859c7356c5e5549c8a30c463e3db64e84488ac80054800000000001976a9145a35a4558b8a0140f4a73aaac0be891b99e3790e88ac00000000

Hvis du vil beregne balansen til en adresse, må du hente historikken (kanskje bruke sx historie -j 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd for et mer datamaskinnvennlig format), filtrere ut elementene som allerede er brukt, og legge til verdiene til resten. Dette vil gi deg totalt antall satoshier som adressen har tilgjengelig å bruke (100 millioner satoshier = 1 BTC). Hvis du ønsker å gi mening om transaksjoner, kan du lime inn transaksjonen i en fil og deretter kjøre sx showtx på filen.

Du kan også jobbe med private nøkler og adresser:

> sx nøkkel > priv1> cat priv15JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1> katt priv1 | sx pubkey04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb51251> katt priv1 | sx addr1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7

Og gjør transaksjoner. Her bruker vi utgangen 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 for å sende 90000 satoshier til 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:

> sx mktx txfile.tx -i 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 90000> katt txfile.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa7191810000000000ffffffff1905f0100000000001976a9145600d581a94f65067a0910360e> sx rawscript dup hash160 [`echo 1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7 | sx decode-addr`] equalverify checksig > raw.script> cat raw.script76a9146ed8c762b24ba024df09cb323ea525b06da3acb788ac> ekko 5JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1 | sx sign-input txfile.tx 0 `cat raw.script` > sig> cat sig3044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729964> sx rawscript [`cat sig`] [04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a402930051 | sx set-input txfile.tx 0 > txfile2.tx> katt txfile2.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa719181000000008a473044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729986420d014104bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2ffffffff01905f0100000000001976a9145600d581a94f65067a09103609e919e3c01141ed88ac00000000> sx kringkasting-tx txfile2.tx

Og du kan også validere en transaksjon:

> sx validtx txfile2.txStatus: Validering av innganger mislyktes Ikke bekreftet: 0

Feilen er fornuftig fordi utgangene jeg brukte ovenfor allerede var brukt. Til sammen lar SX deg i hovedsak sette sammen en “Bitcoin-klient” med flyvekt, velge transaksjonsutganger og foreta transaksjoner manuelt. Bare en advarsel: Dette er en veldig risikabel ting å gjøre, siden hvis du ved et uhell legger igjen en null av en transaksjonsutgang, er systemet for lavt nivå for å få feilen din, og du vil ende opp med å betale 90.

Pybitcointools

Pybitcointools er egentlig to ting i ett; det er samtidig et Python-bibliotek som lar deg manipulere Bitcoin-adresser, nøkler og transaksjoner og et SX-lignende kommandolinjeverktøy. For å installere begge deler, last ned pybitcointools her, naviger til katalogen, og kjør sudo python setup.py install. Derfra åpner du en Python-konsoll og skriver fra pybitcointools import * for å importere alle pybitcointools-kommandoene.

Første nøkkeladministrasjon:

> priv = sha256 (‘noe stort langt brainwallet passord’)> priv’57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4 ‘> pub = privtopub (priv)> pub’0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9 ‘> addr = pubtoaddr (pub)> addr’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘

Men, som nevnt ovenfor, inkluderer pybitcointools også pybtctool, et SX-lignende kommandolinjeverktøy. For å bruke pybtctool, kjør:

> pybtctool sha256 "noe stort langt hjernepallet passord"57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4> pybtctool privtopub 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a40420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2bb> pybtctool pubtoaddr 0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c

Nå, videre til historikk og henting av transaksjoner:

> h = historie (addr)> h [{ ‘output’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘verdi’: 50000, ‘adresse’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ output ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘verdi’: 50000, ‘adresse ‘: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6′}]> fetchtx ( ’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e’) ‘0100000002b8497b5d250420d0e0ef55150ae49f451846791f54b858e4d7b50e23c087b560010000008c493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3affffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c000000008c493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5ffffffff0250c30000000000001976a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac953d0800000000001976a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac00000000’

Merk at pybtctool inkluderer en praktisk bryter som du kan bruke til å kjede noen operasjoner sammen:

> pybtctool sha256 ‘noe stort langt passord for hjernevogn’ | pybtctool -s privtoaddr | pybtctool -s historie [{ ‘output’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘verdi’: 50000, ‘adresse’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ output ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘verdi’: 50000 , ‘adresse’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}]> pybtctool fetchtx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e | pybtctool -s deserialize {"låsetid": 0, "outs": [{"verdi": 50000, "manus": "76a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac"}, {"verdi": 540053, "manus": "76a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac"}], "versjon": 1, "inn": [{"manus": "493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3a", "outpoint": {"indeks": 1, "hasj": "60b587c0230eb5d7e458b8541f794618459fe40a1555efe0d02004255d7b49b8"}, "sekvens": 4294967295}, {"manus": "493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5", "outpoint": {"indeks": 0, "hasj": "4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171"}, "sekvens": 4294967295}]}

Legg merke til kommandoen deserialize; Du kan selvfølgelig også bruke den i pybitcointools-biblioteket. Og selvfølgelig kan du gjøre transaksjoner:

> pybtctool mktx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca3d4 pybtctool -s tegn 0 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a401000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000

Du kan deretter skyve transaksjonen ved hjelp av pushtx eller eligius_pushtx for å skyve rett til et mellomstort gruvebasseng. eligius_pushtx er nyttig for såkalte “ikke-standard” transaksjoner som vanlige Bitcoin-noder avviser; for eksempel kan multisignaturtransaksjoner mellom mer enn tre parter sendes her.

Biblioteker

Pybitcointools og SX er ikke de eneste verktøyene der ute; det er Bitcoin-biblioteker på nesten alle språk. Her er noen få:

God koding!