En av de största fördelarna med Bitcoin är hur enkelt det är att arbeta med utifrån utvecklarens synvinkel. Bitcoin har inga beroenden från tredje part, inga egna API: er och inget snabbt föränderligt gränssnitt; allt du behöver är ditt eget programmeringsspråk, och chansen är att det redan finns ett enkelt Bitcoin-bibliotek som du kan använda för att börja skicka och ta emot bitcoins inom några timmar. Syftet med den här artikeln kommer att vara att introducera några av dessa bibliotek och visa grunderna för att arbeta med Bitcoin-adresser och transaktioner på vilket språk som helst.
Adresser, nycklar, transaktioner, Oh My!
Bitcoin-protokollet kan i allmänhet delas in i tre delar: adress- och nyckelhantering, transaktioner och block och gruvdrift. Block och gruvdrift är inte viktigt för dig som början av Bitcoin-utvecklare; i de flesta fall är det lättare att helt enkelt förlita sig på en tredje parts tjänster för att hämta transaktioner som tar bort begreppet kvarter bort, och om du är intresserad av gruvdrift är det bästa sättet att helt enkelt köpa en vanlig Bitcoin-gruvarbetare. Adresser, nycklar och transaktioner, men du kan helt enkelt inte undvika att hantera.
I Bitcoin-nyckelhantering finns det tre typer av objekt som du kommer att behöva hantera: privata nycklar, offentliga nycklar och adresser. Du kanske har hört talas om “privat nyckel” och “offentlig nyckel” i samband med kryptering av offentlig nyckel; det är precis den typen av privata och offentliga nycklar vi pratar om här. Men Bitcoin använder en nyare typ av kryptografi som kallas elliptisk kurvkryptografi, och inte de äldre factoringbaserade kryptografiska algoritmer som RSA, så Bitcoin-nycklar ser lite annorlunda ut än, säg, PGP-nycklar. En privat nyckel ser ut så här:
9d86361789d13823fd888fa45c9b356b76d41a7e33b2b2c3056632721c4c1255
Och dess motsvarande offentliga nyckel är:
04d8f08938e78447b2b1a629c503d5e17483b0d15751a9e8f83c8460e6ec32fd68d0b4068e83c012f54df995e52ed8bae38056a8d922f9687200ae83e5a6728dff
En privat nyckel kan konverteras till en offentlig nyckel, men en offentlig nyckel kan inte konverteras till en privat nyckel. En Bitcoin-adress är faktiskt hash för den offentliga nyckeln; Bitcoin-adressen som motsvarar ovanstående offentliga nyckel är:
172YRdGzPqyXm9rm1EWKwPXTRsmcApoPQ6
En sak som du kanske märker är att Bitcoin-adressen inte är i hexadecimal form som de privata och offentliga nycklarna är. Detta beror på att Bitcoin för vissa av dess format använder sitt eget representationsformat, känt som base58check. ”Base58” -delen kommer från det faktum att 58 olika bokstäver och siffror används; O, 0, l och jag utelämnas eftersom de är för lätta att misstaga för varandra. Bas 58 liknar bas 2 eller bas 3 eller bas 10. Exempelvis är antalet 31337 i bas 2 ‘111101001101001’; i bas 3 är det ‘1120222122’, i bas 10 är det ‘31337’, i bas 16 är det ‘7a69’, i bas 58 är det ‘AKJ’ och slutligen i bas 256 är det bara ‘zi’. ”Kontroll” -delen av base58check är också viktig; vad det betyder är att de första fyra bytes av hash för ett meddelande läggs till i slutet av meddelandet innan resultatet kodas i base58. Till exempel fungerar processen att konvertera ”zi” från bas 256 till bas 58 enligt följande:
- Steg 1: kontrollsumma = sha256 (sha256 (‘x00’ + ‘zi’)) (notera att vi lägger till en nollbyte på framsidan) ’97fbc63584f26bd0109f99d467c447607dbecff51b903e450207466114672261 ′
- Steg 2: mellanliggande = ‘x00’ + ‘zi’ + kontrollsumma [: 4] (i binär form) ‘x00zix97xfbxc6x35’
- Steg 3: Konvertera till bas 58 ‘123xZAaruJ’
Du kommer emellertid personligen inte att behöva hantera alla dessa komplexiteter; Bitcoin-bibliotek finns för att hantera allt åt dig, och vi kommer att prata om några senare i artikeln. Men först transaktionshantering.
Den första viktiga punkten att komma ihåg är att Bitcoin inte internt har begreppet “konton” eller “saldon”; alla medel lagras i objekt som kallas ”transaktionsutgångar”. En transaktion har en eller flera ingångar, varje ingång spenderar en befintlig outnyttjad transaktionsutgång (“UTXO”), och transaktionen kan sedan skicka upp till samma mängd BTC i totala utgångar som den har ingångar. Så här ser en transaktion ut i deserialiserad form:
{ "låsningstid": 0, "ins": [{ "manus": "", "outpoint": { "index": 0, "hash": "319ba90f1645eed46a8fd48e9754ca979c3371f59099d32634a8b56549ce02aa" }, "sekvens": 4294967295}], "outs": [{ "värde": 1000000, "manus": "76a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac" }, { "värde": 344164, "manus": "76a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac" }], "version": 1}
Och i serieform:
0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b310000000000ffffffff2275750000000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac2040000
Parametern “script” är bara ett annat sätt att representera en adress; konvertering av de två skripten i ovanstående transaktion till adresser får vi “1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq” respektive “1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T”. Den enda ingången i transaktionen är en referens till en tidigare transaktionsoutput; när vi letar upp den på blockchain ser vi att den har 1354164 satoshis tillgängliga att spendera (1 satoshi är den minsta enheten i en bitcoin, med 100 miljoner satoshi = 1 BTC). De två utgångarna spenderar 1344164 och lämnar 10000 satoshis som en avgift.
Observera att en transaktion endast kan spendera en produktion i sin helhet och inte delvis. För att komma runt detta är standardmekanismen begreppet ”förändring” – skicka en utgång till den avsedda destinationen, och sedan en annan utgång som skickar resten tillbaka till dig själv. Ovanstående transaktion är ett exempel på det – den första utgången skulle vara en 0,01 BTC-betalning, och den andra skulle vara förändringen. När du har skapat en transaktion måste du signera varje ingång med den privata nyckeln som motsvarar varje adress. Processen för att göra det är ganska involverad, men lyckligtvis hanterar bibliotek det åt dig. Så här ser ovanstående transaktion ut när den har undertecknats:
0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b31000000008b48304502203bcabb367ca84b2af394597bff4a6169fa55b156708557256d2c584f1bd54e1502210086fdf257e58dbb5e1f3b4686f4385e86ea89e677a6c90a3c87ce276d88ad2b31014104e6eb4c73192bcc7b63f7e3c05ed52c0d98abac6f6aa0876e2e57eeda6b60fe03098cb63633d08077b14cc30efe9bc5c9866ebc1297c03399e27381539025f887ffffffff0240420f00000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac64400500000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000
Slutligen måste du driva den signerade transaktionen till blockchain. Det bästa sättet att göra detta manuellt är på http://blockchain.info/pushtx. Och det är i princip allt som finns med Bitcoin – tills vi kommer in i avancerade funktioner som multisignaturtransaktioner, det vill säga, men de beskrivs bäst i mer detalj i en annan artikel.
Bitcoind
Bitcoind är ”referensklient” som skapats av Bitcoin-utvecklingsgruppen; det är en fullständig Bitcoin-nod som laddar ner hela blockchain och behandlar transaktioner. Bitcoind är något begränsad i funktionalitet; det kan till exempel inte ge dig en transaktionshistorik för en adress om du inte hade importerat den adressen i förväg. Det är dock ändå ganska kraftfullt. När du laddar ner bitcoind från projektsidan och bygg den, det första steget är att skapa en fil i din Bitcoin-katalog (~ / .bitcoin på Linux) med följande innehåll:
rpcuser = userrpcpassword = passrpcport = 8332txindex = 1
Ersätt i ditt eget användarnamn och lösenord om så önskas. När du har gjort det, navigerar du till katalogen som innehåller den körbara filen (/ bin om din version levererades med en förinställd körbar, / src om du själv skapade den) och kör ./bitcoind – daemon på kommandoraden för att starta demon. Vid den tiden har du två sätt att köra bitcoind-kommandon.
Det första sättet är enklare: skriv bara “bitcoind” följt av kommandot och argumenten på kommandoraden. Till exempel:
>./ bitcoind getblockhash 100000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048>./ bitcoind getblock 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 { "hash" : "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", "bekräftelser" : 212362, "storlek" : 215, "höjd" : 1, "version" : 1, "merkleroot" : "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", "tx" : [ "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098" ], "tid" : 1231469665, "nonce" : 2573394689, "bitar" : "1d00ffff", "svårighet" : 1.00000000, "previousblockhash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "nästa blockhash" : "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"}> bitcoind getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd51209801000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0704ffff001d0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac00000000
Det andra sättet är att använda JSON-RPC. JSON-RPC är ett generiskt gränssnitt som låter dig ansluta till bitcoind och köra kommandon med det från vilket språk som helst – eventuellt även från en annan dator. Bitcoin wiki har en sida beskriva några av sätten att ringa ett JSON-RPC-samtal på olika programmeringsspråk; för korthetens skull kommer jag bara att lista två.
I Python:
importera httplib, json, base64def mkrequest (url, användare, pass, metod, params, hasresponse = True): anslutning = httplib.HTTPConnection (url) postdata = json.dumps ({ "metod": metod, "params": params}) req = urllib2.Request (‘http: // localhost: 8001’, postdata, {‘Authorization’: b’Basic ‘+ base64.b64encode (user +’: ‘+ pass),}) om har svar: return urllib2.urlopen (req) .read (). strip ()
Och på kommandoraden med curl:
curl – user – pass – data-binary ‘{"metod":,"params": [, …]} ‘http: // localhsot: 8332
SX
Det finns två alternativa kommandoradsverktyg för att hantera Bitcoin-transaktioner: pybitcointools och SX. SX skapades av libbitcoin-utvecklaren Amir Taaki och underhålls nu aktivt av ett litet team. pybitcointools skrevs av mig själv. Syntaxen är ganska lika, även om det finns skillnader. Installera SX är relativt enkelt; allt du behöver göra är att ladda ner en textfil som heter install-sx.sh, installera några bibliotek och köra textfilen. På Ubuntu är kommandoradsinstruktionerna följande:
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
Sedan, när SX är installerat, här är några av vad du kan göra med det. Om du helt enkelt bygger en betalningsplattform skulle det vara tillräckligt att helt enkelt hämta adresshistorik för adresser och kanske hämta transaktioner:
> sx historia 114tTpMrJHJpNvkPZmz8KVcJoQjD5UtosdAddress: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd utgång: eb84dd62287a1d85e3f31b0de869534a8f800fad559e36f779a45470aa4e8976: 0 output_height: 277.978 värde: 100 tusen spendera: 3216bc4b8294532cddab1ae2a95a336ee841be02e6246c1ad9cf1e7db788d10e: 0 spend_height: 277979Address: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd output: 5a45c86c5aff8200db4c7f8a91b9a3e51932510cbeb2dc173fc8611bee5aeaaf: 1 output_height: 278.076 värde: 70 tusen spendera: 4817f863ace4337be7ea95476b2c73723fb83fbe0e1a6236fbf30f2a8aa14dee: 0 spend_height: 278.076> sx fetch-transaktion 516f0bfe2ed3703112434f645fdc7d805bba51c94c9d8f88b666f1c832eb423c010000000142f2e85e078a214d5c61b58276da5cec01311e026355c570b650c2e665585011010000008a47304402203aa40adefd0dc4a3f960b230a9e1b284d78a4b4dec9119368fdeb006af3b6c7b022071165df64ea4502003d8b6e9c46c28b5c5c748226737b4fe1ee8fc4269b50ee5014104a70f7c8b0a835f549f061b725bd3e06744963a07cb2f76097bafe040f939d6e6d23c6cc89e5b50aa944d26b7d1c8a1f3b8b4e6f7c2f54cf35fb46b0e4b9442e1ffffffff02a0860100000000001976a914ba55b9859c7356c5e5549c8a30c463e3db64e84488ac80054800000000001976a9145a35a4558b8a0140f4a73aaac0be891b99e3790e88ac00000000
Om du vill beräkna saldot på en adress måste du hämta historiken (kanske med sx history -j 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd för ett mer datorvänligt format), filtrera bort de objekt som redan har använts och lägg till värdena för resten. Detta ger dig det totala antalet satoshis som adressen har tillgänglig att spendera (100 miljoner satoshis = 1 BTC). Om du vill förstå transaktioner kan du klistra in transaktionen i en fil och sedan köra sx showtx på filen.
Du kan också arbeta med privata nycklar och adresser:
> sx nyckel > priv1> katt priv15JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1> katt priv1 | sx pubkey04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb51251> katt priv1 | sx addr1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7
Och gör transaktioner. Här använder vi utgången 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 för att skicka 90000 satoshis till 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:
> sx mktx txfile.tx -i 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 90000> cat txfile.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa7191810000000000ffffffff1905f0100000000001976a9145600d581a94f65067a0910360e> sx rawscript dup hash160 [`echo 1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7 | sx decode-addr`] equalverify checksig > raw.script> cat raw.script76a9146ed8c762b24ba024df09cb323ea525b06da3acb788ac> eko 5JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1 | sx sign-input txfile.tx 0 `cat raw.script` > sig> katt sig3044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729964> sx rawscript [`cat sig`] [04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a402930051 | sx set-input txfile.tx 0 > txfile2.tx> katt txfile2.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa719181000000008a473044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729986420d014104bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2ffffffff01905f0100000000001976a9145600d581a94f65067a09103609e919e3c01141ed88ac00000000> sx sändning-tx txfile2.tx
Och du kan också validera en transaktion:
> sx validtx txfile2.txStatus: Valideringen av ingångarna misslyckades Obekräftad: 0
Felet är vettigt eftersom utgångarna jag använde ovan redan använts. Sammantaget låter SX dig i huvudsak sätta ihop en “Bitcoin-klient” med låg vikt, välja transaktionsutgångar och göra transaktioner manuellt. Men bara en varning: detta är en mycket riskabel sak att göra, eftersom om du av misstag lämnar noll av en transaktionsutmatning är systemet för lågt för att fånga ditt fel och du kommer att betala en avgift på 90.
Pybitcointools
Pybitcointools är verkligen två saker i ett; det är samtidigt ett Python-bibliotek som låter dig manipulera Bitcoin-adresser, nycklar och transaktioner och ett SX-liknande kommandoradsverktyg. Ladda ner pybitcointools för att installera båda här, navigera till katalogen och kör sudo python setup.py install. Därifrån öppnar du en Python-konsol och skriver från pybitcointools import * för att importera alla pybitcointools-kommandon.
Första nyckelhantering:
> priv = sha256 (‘något stort långt hjärnväggslösenord’)> priv’57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4 ‘> pub = privtopub (priv)> pub’0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9 ‘> addr = pubtoaddr (pub)> addr’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘
Men som nämnts ovan innehåller pybitcointools också pybtctool, ett SX-liknande kommandoradsverktyg. För att använda pybtctool, kör:
> pybtctool sha256 "något stort långt lösenord för hjärnväggen"57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4> pybtctool privtopub 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a40420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed> pybtctool pubtoaddr 0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c
Nu vidare till historik och hämtning av transaktioner:
> h = historik (addr)> h [{ ‘output’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘värde’: 50 tusen, ‘adress’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ output ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘värde’: 50 tusen, ‘adress ‘: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6′}]> fetchtx ( ’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e’) ‘0100000002b8497b5d250420d0e0ef55150ae49f451846791f54b858e4d7b50e23c087b560010000008c493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3affffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c000000008c493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5ffffffff0250c30000000000001976a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac953d0800000000001976a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac00000000’
Observera att pybtctool innehåller en praktisk switch som du kan använda för att kedja vissa operationer tillsammans:
> pybtctool sha256 “något stort långt lösenord för hjärnväggar” | pybtctool -s privtoaddr | pybtctool -s historia [{ ‘output’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘värde’: 50 tusen, ‘adress’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ output ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘värde’: 50 tusen , ‘adress’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}]> pybtctool fetchtx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e | pybtctool -s deserialize {"låsningstid": 0, "outs": [{"värde": 50000, "manus": "76a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac"}, {"värde": 540053, "manus": "76a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac"}], "version": 1, "ins": [{"manus": "493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3a", "outpoint": {"index": 1, "hash": "60b587c0230eb5d7e458b8541f794618459fe40a1555efe0d02004255d7b49b8"}, "sekvens": 4294967295}, {"manus": "493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5", "outpoint": {"index": 0, "hash": "4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171"}, "sekvens": 4294967295}]}
Notera kommandot deserialize; Du kan naturligtvis också använda den i pybitcointools-biblioteket. Och naturligtvis kan du göra transaktioner:
> pybtctool mktx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca3d4 pybtctool -s sign 0 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a401000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000
Du kan sedan trycka på transaktionen med pushtx eller eligius_pushtx för att skjuta direkt till en medelstor gruvpool. eligius_pushtx är användbart för så kallade “icke-standardiserade” transaktioner som vanliga Bitcoin-noder avvisar; till exempel kan multisignaturtransaktioner mellan mer än tre parter skickas här.
Bibliotek
Pybitcointools och SX är inte de enda verktygen där ute; det finns Bitcoin-bibliotek på nästan alla språk. Här är några:
- BitcoinJS (Javascript): Stefan Thomas originalversion, eller min gaffel
- python-ecdsa (Pytonorm)
- Haskoin (Haskell)
- libbitcoin (C ++)
- BitcoinJ (Java)
- btcd (Go)
Lycklig kodning!