Utvecklare introduktion till bitcoin

Kursrekord för bitcoin – på väg att bli rumsren? (Mars 2019).

Anonim

En av de stora fördelarna med Bitcoin är hur lätt det är att arbeta med från en utvecklar ståndpunkt. Bitcoin har inga tredjepartsberoende, inga proprietära API och inget snabbt växlande gränssnitt. Allt du behöver är ditt eget favoritprogrammeringssprå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 denna artikel är att introducera några av dessa bibliotek och visa grunderna i att arbeta med Bitcoin-adresser och transaktioner på vilket språk som helst.

Adresser, nycklar, transaktioner, åh min!

Bitcoinprotokollet kan i allmänhet delas upp i tre delar: adress- och nyckelhantering, transaktioner och block och gruvdrift. Block och gruvdrift är inte viktiga för dig som en början Bitcoin utvecklare; i de flesta fall är det lättare att helt enkelt lita på en tredje part som hämtar transaktionen, som abstraherar begreppet block borta, och om du är intresserad av gruvdrift är det bästa sättet att helt enkelt köpa en standard Bitcoin miner. Adresser, nycklar och transaktioner, men du kan helt enkelt inte undvika att hantera.

I Bitcoin-nyckelhantering finns tre typer av objekt som du behöver hantera: privata nycklar, offentliga nycklar och adresser. Du kan ha hört talas om "privat nyckel" och "offentlig nyckel" i samband med public key kryptografi; Det är precis den typ av privata och offentliga nycklar vi pratar om här. Bitcoin använder dock en nyare typ av kryptografi, kallad elliptisk kurvkryptografi, och inte de äldre factoringbaserade kryptografiska algoritmerna som RSA, så Bitcoin-nycklarna ser lite annorlunda ut än, säger PGP-nycklar. En privat nyckel ser ut så här:

9d86361789d13823fd888fa45c9b356b76d41a7e33b2b2c3056632721c4c1255

och dess motsvarande publika nyckel är:

04d8f08938e78447b2b1a629c503d5e17483b0d15751a9e8f83c8460e6ec32fd68d0b4068e83c012f54df995e52ed8bae38056a8d922f9687200ae83e5a6728dff

En privat nyckel kan omvandlas till en publik nyckel, men en publik nyckel kan inte omvandlas till en privat nyckel . En Bitcoin-adress är faktiskt hash av den offentliga nyckeln; Bitcoin-adressen som motsvarar den ovanstående offentliga nyckeln ä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 representationstyp, känt som base58check. "Base58" -delen kommer från det faktum att 58 olika bokstäver och siffror används; O, 0, 1 och I utelämnas för att de är för lätta att misstaga för varandra. Basen 58 liknar bas 2 eller bas 3 eller bas 10. Exempelvis är nummer 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'. "Check" -delen av base58check är också viktig; Vad det betyder är att de första fyra byte av hash för ett meddelande läggs till i slutet av meddelandet innan kodning av resultatet i bas58.Processen att konvertera "zi" från bas 256 till bas 58 fungerar till exempel enligt följande:

    Steg 1: checksum = sha256 (sha256 (' x00' + 'zi')) (observera att vi lägger till en noll byte på framsidan)

    '97fbc63584f26bd0109f99d467c447607dbecff51b903e450207466114672261'

    Steg 2: mellanliggande = ' x00' + 'zi' + checksum [: 4] (i binär form)

    ' x00zi x97 xfb xc6 x35 '

    Steg 3: konvertera till bas 58

    ' 123xZAaruJ '

Men du behöver inte personligen hantera alla dessa komplexiteter; Bitcoin-bibliotek finns för att hantera allt för 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 "balans". alla fonder lagras i objekt som kallas "transaktionsutgångar". En transaktion har en eller flera ingångar, varje ingång spenderar en befintlig transaktion utan transaktion ("UTXO"), och transaktionen kan sedan skicka upp till samma mängd BTC i totala utdata som den har i ingångar. Här är vad en transaktion ser ut i deserialiserad form:

{"locktime": 0, "ins": [{"script": "", "outpoint": {"index": 0, "hash" 319ba90f1645eed46a8fd48e9754ca979c3371f59099d32634a8b56549ce02aa "}, "sekvens": 4294967295}], "outs": [{" värde ": 1.000.000, "skript": "76a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac"}, {" värde ": 344.164, "skript": "76a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac"}], "version": 1}

Och i serialiserade formen:

0100000001aa02ce4965b5a83426d 0f571339c97ca54978ed48f6ad4ee45160fa99b310000000000ffffffff0230750000000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac204e0000000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000

Den "script" parameter är bara ett annat sätt att representera en adress; konvertera 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 transaktionsutgång; ser vi upp på blockchain ser vi att den har 1354164 satoshis tillgängliga att spendera (1 satoshi är den minsta enheten i bitcoin, med 100 miljoner satoshi = 1 BTC). De två utgångarna spenderar 1344164 och lämnar 10000 satoshis som 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 till dig själv. Ovanstående transaktion är ett exempel på det - den första utmatningen 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 inblandat, men lyckligtvis brukar bibliotek hantera det för dig. Här är vad ovanstående transaktion ser ut när det är undertecknat:

0100000001aa02ce4965b5a83426d 0f571339c97ca54978ed48f6ad4ee45160fa99b31000000008b48304502203bcabb367ca84b2af394597bff4a6169fa55b156708557256d2c584f1bd54e1502210086fdf257e58dbb5e1f3b4686f4385e86ea89e677a6c90a3c87ce276d88ad2b31014104e6eb4c73192bcc7b63f7e3c05ed52c0d98abac6f6aa0876e2e57eeda6b60fe03098cb63633d08077b14cc30efe9bc5c9866ebc1297c03399e27381539025f887ffffffff0240420f00000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac64400500000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000

, slutligen, måste du skjuta det undertecknade transaktionen till blockchain.Det bästa sättet att göra det manuellt finns på // blockchain. info / pushtx. Och det är i grunden allt som finns till Bitcoin - tills vi går in på avancerade funktioner som multisignaturtransaktioner, det vill säga, men de beskrivs bäst i en annan artikel.

Bitcoind

Bitcoind är den "referensklient" som skapades av Bitcoins utvecklingsteam; Det är en fullständig Bitcoin-nod som hämtar 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 hämtar bitcoind från projektsidan och bygger den är det första steget 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 körbar (/ bin om din version kom med en körbar pre-made, / src om du själv gjorde det) och kör . / bitcoind - daemon på kommandoraden för att starta upp demonen. Då har du två sätt att köra bitcoind-kommandon.

Första sättet är enklare: skriv bara in "bitcoind" följt av namnet på 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årighets": 1. 00 miljoner, "previousblockhash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "nextblockhash": "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"}> bitcoind getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd51209801000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0704ffff001d0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac00 000000

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 som beskriver några av sätten att göra ett JSON-RPC-samtal i 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): connection = httplib.HTTPConnection (url) postdata = json. dumper ({"method": metod, "params": params}) req = urllib2. Begäran (' // localhost: 8001', postdata, {'Authorization': b'Basic '+ base64. B64encode (user +': '+ pass)}) om harrespons: returnera urllib2. urlopen (req). läsa(). strip ()

och på kommandoraden med curl:

curl --user - pass - data-binär '{"method':," params ": [ …]} ' // localhsot: 8332

SX

Det finns två alternativa kommandoradsverktyg för hantering av Bitcoin-transaktioner: pybitcointools och SX. SX skapades av libbitcoin-utvecklaren Amir Taaki, och underhålls nu aktivt av ett litet lag; Pybitcointools skrevs av mig själv. Syntaxen är ganska lik, även om det finns skillnader. Installera SX är relativt enkelt; allt du behöver göra är att hämta en textfil kallad install-sx. sh , installera några bibliotek och kör textfilen. På Ubuntu är kommandoradsinstruktionerna följande:

wget // sx. dyn. 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 är installerat, här är några av vad du kan göra med det. Om du bara bygga en betalningshantering plattform, skulle det vara tillräckligt för att helt enkelt hämta itu med historien om adresser och kanske hämta transaktioner:

> sx historia 114tTpMrJHJpNvkPZmz8KVcJoQjD5UtosdAddress: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd utgång: eb84dd62287a1d85e3f31b0de869534a8f800fad559e36f779a45470aa4e8976: 0 output_height: 277.978 värde: 100000 nota: 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 516f0bfe2ed3703112434f645fdc7d805bba51c94c9d8f88b666f1c832eb423c010000000142f2e85e078a214d5c61b58276da5cec01311e026355c570b650c2e665585011010000008a47304402203aa40adefd0dc4a3f960b230a9e1b284d78a4b4dec9119368fdeb006af3b6c7b022071165df64ea4502003d8b6e9c46c28b5c5c74822 6737b4fe1ee8fc4269b50ee5014104a70f7c8b0a835f549f061b725bd3e06744963a07cb2f76097bafe040f939d6e6d23c6cc89e5b50aa944d26b7d1c8a1f3b8b4e6f7c2f54cf35fb46b0e4b9442e1ffffffff02a0860100000000001976a914ba55b9859c7356c5e5549c8a30c463e3db64e84488ac80054800000000001976a9145a35a4558b8a0140f4a73aaac0be891b99e3790e88ac00000000

Om du vill beräkna summan av en adress, skulle du behöver för att få historien (kanske med sx historia -j 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd för en mer datorvänligt format), filtrera bort de objekt som har redan spenderats och lägger till resten av värdet. Detta ger dig det totala antalet satoshis som adressen är tillgänglig för att spendera (100 miljoner satoshis = 1 BTC).Om du vill känna av 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 nyckeln> priv1> katt priv15JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1> cat priv1 | sx pubkey04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2> katt priv1 | sx addr1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7

Och göra 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. tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa7191810000000000ffffffff01905f0100000000001976a9145600d581a94f65067a09103609e919e3c01141ed88ac00000000> sx rawscript DUP hash160 [ 'echo 1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7 | sx decode-addr '] jämföra kontrollen> rå. script> cat raw. script76a9146ed8c762b24ba024df09cb323ea525b06da3acb788ac> echo 5JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1 | sx sign-input txfile. tx 0 'kattråvara. script> sig> cat sig3044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729986420d01> sx rawscript [ 'cat sig'] [04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2] | sx set-input txfile. tx 0> txfile2. tx> cat txfile2. tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa719181000000008a473044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729986420d014104bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2ffffffff01905f0100000000001976a9145600d581a94f65067a09103609e919e3c01141ed88ac00000000> sx broadcast-tx txfile2. tx

Och du kan också validera en transaktion:

> sx validtx txfile2. txStatus: Validering av ingångar misslyckadesUnbekräftad: 0

Felet är meningsfullt eftersom utgångarna jag använde ovan redan spenderades. Sammantaget tillåter SX att du väsentligen sätter ihop en "Flyweight" Bitcoin-klient, väljer transaktionsutgångar och gör transaktioner manuellt. Bara en varning men det här är en mycket riskabel sak att göra, eftersom om du av misstag lämnar noll av en transaktionsutgång är systemet för lågt för att fånga ditt fel och du kommer sluta betala en 90% avgift.

Pybitcointools

Pybitcointools är egentligen två saker i en; Det är samtidigt ett Python-bibliotek som låter dig hantera Bitcoin-adresser, nycklar och transaktioner och ett SX-liknande kommandoradsverktyg. För att installera båda, ladda ner pybitcointools här, navigera till katalogen och kör sudo python setup.py installera . Därifrån, öppna en Python-konsol och skriv från pybitcointools import * för att importera alla pybitcointools-kommandon.

Första nyckelhantering:

> priv = sha256 (några stora lång brainwallet lösenord ')> priv'57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4> pub = privtopub (priv)> pub'0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9> addr = pubtoaddr (pub)> addr' 1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 '

Men som nämnts ovan inkluderar pybitcointools också pybtctool, ett SX-liknande kommandoradsverktyg. Om du vill använda pybtctool, kör:

> pybtctool sha256 "några stora lång brainwallet lösenord" 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4> pybtctool privtopub 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a40420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9> pybtctool pubtoaddr 0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e91CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6

Nu till historien och transaktions hämtning:

> h = historia (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 ('97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465 e ') 0100000002b8497b5d250420d0e0ef55150ae49f451846791f54b858e4d7b50e23c087b560010000008c493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3affffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c000000008c493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5ffffffff0250c30000000000001976a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac953d0800000000001976a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac00000000'

Observera att pybtctool innehåller en bekväm -s switch som du kan använda för att kedjan vissa operationer tillsammans :

> pybtctool sha256 "något stort långt hjärnväggslösenord" | 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-deserialize {"locktime": 0, "outs": [{"värde": 50000, "script": "76a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac"}, {"värde": 540053, "script": "76a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac"}] version ": 1, "ins": [{" script ": "493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3a", "poängbesegra": {" index ": 1, "hash": "60b587c0230eb5d7e458b8541f794618459fe40a1555efe0d02004255d7b49b8"}, "sekvens": 4294967295}, {" script" : "493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5", "poängbesegra": { "index": 0, "hash": "4cc806bb04f7 30c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171 "}," sekvens ": 4294967295}]}

Observera kommandot deserialize ; du kan självklart också använda det i pybitcointools-biblioteket.Och naturligtvis kan du göra transaktioner:

> pybtctool mktx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1 16iw1MQ1sy1DtRPYw3ao1bCamoyBJtRB4t: 90000 | pybtctool -s sign 0 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a401000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000

Du kan sedan trycka transaktionen med pushtx eller eligius_pushtx för att skjuta direkt till en medelstor gruv pool. eligius_pushtx är användbart för så kallad "non-standard" -transaktion som vanliga Bitcoin-noder avvisar; Till exempel kan multisignaturtransaktioner mellan mer än tre parter skickas genom här.

Bibliotek

Pybitcointools och SX är inte det enda verktyget där ute; Det finns Bitcoin-bibliotek på nästan alla språk. Här är några:

  • BitcoinJS (Javascript): Stefan Thomas ursprungliga versionen eller min gaffel
  • python-ecdsa (Python)
  • Haskoin (Haskell)
  • libbitcoin (C ++)
  • BitcoinJ )
  • btcd (Go)

Lycklig kodning!