En af de største fordele ved Bitcoin er, hvor let det er at arbejde med fra en udviklers synspunkt. Bitcoin har ingen tredjepartsafhængigheder, ingen proprietære API’er og ingen hurtig skiftende grænseflade; alt hvad du behøver, er dit eget yndlingsprogrammeringssprog, og chancerne er, at der allerede er et simpelt Bitcoin-bibliotek, som du kan bruge til at sende og modtage bitcoins inden for få timer. Formålet med denne artikel vil være at introducere et par af disse biblioteker og vise det grundlæggende i at arbejde med Bitcoin-adresser og transaktioner på ethvert sprog.
Adresser, nøgler, transaktioner, Oh My!
Bitcoin-protokollen kan generelt opdeles i tre dele: adresse- og nøglehåndtering, transaktioner og blokke og minedrift. Blokke og minedrift er ikke vigtigt for dig som en begyndende Bitcoin-udvikler; i de fleste tilfælde er det lettere at bare stole på en tredjeparts transaktionshentningstjeneste, der abstrakterer begrebet blokke væk, og hvis du er interesseret i minedrift, er den bedste tilgang simpelthen at købe en standard Bitcoin-minearbejder. Adresser, nøgler og transaktioner, men du kan simpelthen ikke undgå at beskæftige dig med.
I Bitcoin-nøglehåndtering er der tre typer objekter, som du bliver nødt til at håndtere: private nøgler, offentlige nøgler og adresser. Du har muligvis hørt om udtrykkene “privat nøgle” og “offentlig nøgle” i forbindelse med kryptografi med offentlig nøgle; det er nøjagtigt den slags private og offentlige nøgler, vi taler om her. Imidlertid bruger Bitcoin en nyere type kryptografi kaldet elliptisk kurve-kryptografi og ikke de ældre factoring-baserede kryptografiske algoritmer som RSA, så Bitcoin-nøgler ser lidt anderledes ud end at sige, PGP-nøgler. En privat nøgle ser sådan ud:
9d86361789d13823fd888fa45c9b356b76d41a7e33b2b2c3056632721c4c1255
Og dens tilsvarende offentlige nøgle er:
04d8f08938e78447b2b1a629c503d5e17483b0d15751a9e8f83c8460e6ec32fd68d0b4068e83c012f54df995e52ed8bae38056a8d922f9687200ae83e5a6728dff
En privat nøgle kan konverteres til en offentlig nøgle, men en offentlig nøgle kan ikke konverteres til en privat nøgle. En Bitcoin-adresse er faktisk hash af den offentlige nøgle; Bitcoin-adressen svarende til ovenstående offentlige nøgle er:
172YRdGzPqyXm9rm1EWKwPXTRsmcApoPQ6
En ting, som du måske bemærker, er, at Bitcoin-adressen ikke er i hexadecimal form, som de private og offentlige nøgler er. Dette skyldes, at Bitcoin i nogle af dets formater bruger sit eget repræsentationsformat, kendt som base58check. “Base58” -delen kommer fra det faktum, at der bruges 58 forskellige bogstaver og tal; O, 0, l og jeg er udeladt, fordi de er for lette at tage fejl af hinanden. Base 58 svarer til 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 sidst i base 256 er det bare ‘zi’. Den “check” del af base58check er også vigtig; hvad det betyder er, at de første fire byte af hash af en meddelelse føjes til slutningen af meddelelsen, før resultatet kodes i base58. For eksempel fungerer processen med at konvertere ‘zi’ fra base 256 til base 58 som følger:
- Trin 1: kontrolsum = sha256 (sha256 (‘x00’ + ‘zi’)) (bemærk, at vi tilføjer en nulbyte foran) ’97fbc63584f26bd0109f99d467c447607dbecff51b903e450207466114672261 ′
- Trin 2: mellemliggende = ‘x00’ + ‘zi’ + kontrolsum [: 4] (i binær form) ‘x00zix97xfbxc6x35’
- Trin 3: Konverter til base 58 ‘123xZAaruJ’
Dog behøver du personligt ikke at håndtere alle disse kompleksiteter; Der findes Bitcoin-biblioteker, der håndterer alt for dig, og vi vil tale om et par senere i artiklen. Men først transaktionshåndtering.
Det første vigtige punkt at huske på er, at Bitcoin ikke internt har begrebet “konti” eller “saldi”; alle midler er gemt i genstande kendt som “transaktionsoutputs”. En transaktion har en eller flere input, hvor hver input bruger en eksisterende ubrugt transaktionsoutput (“UTXO”), og transaktionen kan derefter sende op til det samme antal BTC i samlede output, som den har input. Sådan ser en transaktion ud i deserialiseret form:
{ "låsetid": 0, "ins": [{ "manuskript": "", "outpoint": { "indeks": 0, "hash": "319ba90f1645eed46a8fd48e9754ca979c3371f59099d32634a8b56549ce02aa" }, "sekvens": 4294967295}], "outs": [{ "værdi": 1000000, "manuskript": "76a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac" }, { "værdi": 344164, "manuskript": "76a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac" }], "version": 1}
Og i serieform:
0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b310000000000ffffffff227575000000000000000076x914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac2040000
Parameteren “script” er blot en anden måde at repræsentere en adresse på; konvertering af de to scripts i ovenstående transaktion til adresser får vi henholdsvis “1FxkfJQLJTXpW6QmxGT6oF43ZH959ns8Cq” og “1JwSSubhmg6iPtRjtyqhUYYH7bZg3Lfy1T”. Den enkelte input i transaktionen er en reference til en tidligere transaktionsoutput; Når vi ser det op på blockchain, ser vi, at det har 1354164 satoshier til rådighed at bruge (1 satoshi er den mindste enhed i en bitcoin med 100 millioner satoshi = 1 BTC). De to output bruger 1344164 og efterlader 10000 satoshier som et gebyr.
Bemærk, at en transaktion kun kan bruge en output i sin helhed og ikke delvist. For at omgå dette er standardmekanismen begrebet “ændring” – send en output til den tilsigtede destination, og derefter en anden output, der sender resten tilbage til dig selv. Ovenstående transaktion er et eksempel på det – den første output ville være en 0,01 BTC-betaling, og den anden ville være ændringen. Når du har oprettet en transaktion, skal du derefter underskrive hvert input med den private nøgle, der svarer til hver adresse. Processen til at gøre det er temmelig involveret, men heldigvis håndterer biblioteker det for dig. Sådan ser ovenstående transaktion ud, når den er underskrevet:
0100000001aa02ce4965b5a83426d39990f571339c97ca54978ed48f6ad4ee45160fa99b31000000008b48304502203bcabb367ca84b2af394597bff4a6169fa55b156708557256d2c584f1bd54e1502210086fdf257e58dbb5e1f3b4686f4385e86ea89e677a6c90a3c87ce276d88ad2b31014104e6eb4c73192bcc7b63f7e3c05ed52c0d98abac6f6aa0876e2e57eeda6b60fe03098cb63633d08077b14cc30efe9bc5c9866ebc1297c03399e27381539025f887ffffffff0240420f00000000001976a914a41d15ae657ad3bfd0846771a34d7584c37d54a288ac64400500000000001976a914c4c5d791fcb4654a1ef5e03fe0ad3d9c598f982788ac00000000
Derefter skal du endelig skubbe den underskrevne transaktion til blockchain. Den bedste måde at gøre dette manuelt på er http://blockchain.info/pushtx. Og det er stort set alt, hvad der er med Bitcoin – indtil vi kommer ind i avancerede funktioner som multisignaturtransaktioner, det vil sige, men de er bedst beskrevet mere detaljeret i en anden artikel.
Bitcoind
Bitcoind er “referenceklient” oprettet af kernen i Bitcoin-udviklingsteamet; det er en fuld Bitcoin-node, der downloader hele blockchain og behandler transaktioner. Bitcoind er noget begrænset i funktionalitet; det kan for eksempel ikke give dig en transaktionshistorik for en adresse, medmindre du på forhånd havde importeret den adresse. Det er dog ikke desto mindre ret kraftigt. Når du har downloadet bitcoind fra sin projektside og opbyg det, det første trin er at oprette en fil i din Bitcoin-mappe (~ / .bitcoin på Linux) med følgende indhold:
rpcuser = brugerrpcpassword = passrpcport = 8332txindex = 1
Udskift om nødvendigt dit eget brugernavn og din adgangskode. Når du har gjort dette, skal du navigere til det bibliotek, der indeholder den eksekverbare (/ bin, hvis din version kom med en eksekverbar foruddefineret, / src, hvis du selv lavede den), og køre ./bitcoind – dæmon på kommandolinjen for at starte dæmon. På det tidspunkt har du to måder at køre bitcoind-kommandoer på.
Den første måde er enklere: Indtast bare “bitcoind” efterfulgt af navnet på kommandoen og argumenterne på kommandolinjen. For eksempel:
>./ bitcoind getblockhash 100000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048>./ bitcoind getblock 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048 { "hash" : "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048", "bekræftelser" : 212362, "størrelse" : 215, "højde" : 1, "version" : 1, "merkleroot" : "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098", "tx" : [ "0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd512098" ], "tid" : 1231469665, "nonce" : 2573394689, "bits" : "1d00ffff", "vanskelighed" : 1.00000000, "previousblockhash" : "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f", "næste blokhash" : "000000006a625f06636b8bb6ac7b960a8d03705d1ace08b1a19da3fdcc99ddbd"}> bitcoind getrawtransaction 0e3e2357e806b6cdb1f70b54c3a3a17b6714ee1f0e68bebb44a74b1efd51209801000000010000000000000000000000000000000000000000000000000000000000000000ffffffff0704ffff001d0104ffffffff0100f2052a0100000043410496b538e853519c726a2c91e61ec11600ae1390813a627c66fb8be7947be63c52da7589379515d4e0a604f8141781e62294721166bf621e73a82cbf2342c858eeac00000000
Den anden måde er at bruge JSON-RPC. JSON-RPC er en generisk grænseflade, der giver dig mulighed for at oprette forbindelse til bitcoind og køre kommandoer med det fra ethvert sprog – potentielt endda fra en anden computer. Bitcoin wiki har en side beskriver nogle af måderne til at foretage et JSON-RPC-opkald på forskellige programmeringssprog; for kortfattethed vil jeg kun nævne to.
I Python:
import httplib, json, base64def mkrequest (url, bruger, pass, metode, params, hasresponse = True): forbindelse = 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) .læs (). strip ()
Og på kommandolinjen ved hjælp af krølle:
curl – bruger – pass – data-binær ‘{"metode":,"params": [, …]} ‘http: // localhsot: 8332
SX
Der er to alternative kommandolinjeværktøjer til håndtering af Bitcoin-transaktioner: pybitcointools og SX. SX blev oprettet af libbitcoin-udvikleren Amir Taaki og vedligeholdes nu aktivt af et lille team; pybitcointools blev skrevet af mig selv. Syntaksen er ret ens, selvom der er forskelle. Installation af SX er relativt enkel; alt hvad du skal gøre er at downloade en tekstfil kaldet install-sx.sh, installere et par biblioteker og køre tekstfilen. På Ubuntu er kommandolinjeanvisningerne 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 installeret, er her noget af, hvad du kan gøre med det. Hvis du blot bygger en betalingsbehandlingsplatform, ville det være nok blot at hente adressehistorikken over adresser og måske hente transaktioner:
> sx historie 114tTpMrJHJpNvkPZmz8KVcJoQjD5UtosdAddress: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd udgang: eb84dd62287a1d85e3f31b0de869534a8f800fad559e36f779a45470aa4e8976: 0 output_height: 277.978 værdi: 100000 bruger: 3216bc4b8294532cddab1ae2a95a336ee841be02e6246c1ad9cf1e7db788d10e: 0 spend_height: 277979Address: 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd udgang: 5a45c86c5aff8200db4c7f8a91b9a3e51932510cbeb2dc173fc8611bee5aeaaf: 1 output_height: 278.076 værdi: 70000 bruger: 4817f863ace4337be7ea95476b2c73723fb83fbe0e1a6236fbf30f2a8aa14dee: 0 spend_height: 278.076> sx hente-transaktion 516f0bfe2ed3703112434f645fdc7d805bba51c94c9d8f88b666f1c832eb423c010000000142f2e85e078a214d5c61b58276da5cec01311e026355c570b650c2e665585011010000008a47304402203aa40adefd0dc4a3f960b230a9e1b284d78a4b4dec9119368fdeb006af3b6c7b022071165df64ea4502003d8b6e9c46c28b5c5c748226737b4fe1ee8fc4269b50ee5014104a70f7c8b0a835f549f061b725bd3e06744963a07cb2f76097bafe040f939d6e6d23c6cc89e5b50aa944d26b7d1c8a1f3b8b4e6f7c2f54cf35fb46b0e4b9442e1ffffffff02a0860100000000001976a914ba55b9859c7356c5e5549c8a30c463e3db64e84488ac80054800000000001976a9145a35a4558b8a0140f4a73aaac0be891b99e3790e88ac00000000
Hvis du vil beregne saldoen på en adresse, skal du hente historikken (måske ved hjælp af sx historie -j 114tTpMrJHJpNvkPZmz8KVcJoQjD5Utosd til et mere computervenligt format), filtrere de emner, der allerede er brugt, og tilføje værdierne for resten. Dette giver dig det samlede antal satoshier, som adressen har til rådighed at bruge (100 millioner satoshier = 1 BTC). Hvis du vil have mening med transaktioner, kan du indsætte transaktionen i en fil og derefter køre sx showtx på filen.
Du kan også arbejde med private nøgler og adresser:
> sx nøgle > priv1> kat priv15JRLqUG1FwSimZwSzNLPG1BKCENCRhDwkVveL59AEqt97bbkCD1> kat priv1 | sx pubkey04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb51251> kat priv1 | sx addr1B772AGqphjSQqqeecdTBmnBdgMBPYDXt7
Og foretag transaktioner. Her bruger vi output 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 for at sende 90000 satoshier til 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6:
> sx mktx txfile.tx -i 819171fa2eaa33fc684c800ae2ce34cff8400d4d966e995c6a2f0e970b6f703d: 0 -o 18qk7SqRHuS4Kf3f6dmsvqqv7iw1xy77Z6: 90000> kat 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> kat sig3044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729964> sx rawscript [`cat sig`] [04bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a402930051 | sx sæt-input txfile.tx 0 > txfile2.tx> kat txfile2.tx01000000013d706f0b970e2f6a5c996e964d0d40f8cf34cee20a804c68fc33aa2efa719181000000008a473044022069f05eacfe93fc6c028bd078228d7807af07c5ed7566491c709b181950d735830220788e089c63512c07239b94740a36de724b54c076192dbd27584b5b729986420d014104bfc8181cd833567e078cb03ec44034c226bf23dbb2482db53513e0fcea205c40bd6dc73db0c33296d8fa8e0bd347099e07787e17a2a40293004efdb512ff51e2ffffffff01905f0100000000001976a9145600d581a94f65067a09103609e919e3c01141ed88ac00000000> sx udsendelse-tx txfile2.tx
Og du kan også validere en transaktion:
> sx validtx txfile2.txStatus: Validering af input mislykkedes Ubekræftet: 0
Fejlen giver mening, fordi de output, jeg brugte ovenfor, allerede var brugt. Alt i alt giver SX dig i det væsentlige mulighed for at sammensætte en “Bitcoin-klient” med flyvevægt, vælge transaktionsoutputs og foretage transaktioner manuelt. Bare en advarsel: Dette er en meget risikabel ting at gøre, da hvis du ved et uheld efterlader et nul fra en transaktionsoutput, er systemet for lavt niveau til at fange din fejl, og du ender med at betale et gebyr på 90.
Pybitcointools
Pybitcointools er virkelig to ting i én; det er samtidig et Python-bibliotek, der giver dig mulighed for at manipulere Bitcoin-adresser, nøgler og transaktioner og et SX-lignende kommandolinjeværktøj. For at installere begge dele skal du downloade pybitcointools her, naviger til biblioteket, og kør sudo python setup.py installation. Derfra skal du åbne en Python-konsol og skrive fra pybitcointools import * for at importere alle pybitcointools-kommandoer.
Første nøglehåndtering:
> priv = sha256 (‘noget stort langt brainwallet-kodeord’)> priv’57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4 ‘> pub = privtopub (priv)> pub’0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9 ‘> addr = pubtoaddr (pub)> addr’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘
Men som nævnt ovenfor inkluderer pybitcointools også pybtctool, et SX-lignende kommandolinjeværktøj. For at bruge pybtctool skal du køre:
> pybtctool sha256 "nogle store lange brainwallet adgangskoder"57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a4> pybtctool privtopub 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a40420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2b2b> pybtctool pubtoaddr 0420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c
Nu videre til historik og hentning af transaktioner:
> h = historie (addr)> h [{ ‘output’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘værdi’: 50000, ‘adresse’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ output ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘værdi’: 50000, ‘adresse ‘: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6′}]> fetchtx ( ’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e’) ‘0100000002b8497b5d250420d0e0ef55150ae49f451846791f54b858e4d7b50e23c087b560010000008c493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3affffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c000000008c493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5ffffffff0250c30000000000001976a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac953d0800000000001976a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac00000000’
Bemærk, at pybtctool inkluderer en praktisk-switch, som du kan bruge til at kæde nogle operationer sammen:
> pybtctool sha256 ‘noget stort langt brainwallet kodeord’ | pybtctool -s privtoaddr | pybtctool -s historie [{ ‘output’: u’97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0′ , ‘værdi’: 50000, ‘adresse’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}, {‘ output ‘: u’4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171: 1’, ‘value’: 50000 , ‘adresse’: u’1CQLd3bhw4EzaURHbKCwM5YZbUQfA4ReY6 ‘}]> pybtctool fetchtx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e | pybtctool -s deserialize {"låsetid": 0, "outs": [{"værdi": 50000, "manuskript": "76a9147d13547544ecc1f28eda0c0766ef4eb214de104588ac"}, {"værdi": 540053, "manuskript": "76a9145fe616df99d43ae8001ca941f381572cd1cb74b388ac"}], "version": 1, "ins": [{"manuskript": "493046022100a49c01bbf7a6200b05c61072f79fbbcbb56182e0082f85734ff501efd8f2180a022100a6d2b19a1023c4197206b1ea0d58165fa4d6170e7823d90d1cdb0f2704ceb5d0014104ba8b7ec1189b046d0f6dc68d2cafa4bfc30ea34b8f52a0f815550ffd5f5dfe12df06f2c9a3c1b206b833fe274601fe19e0afd9c47e251ba247edfa7a0237ab3a", "outpoint": {"indeks": 1, "hash": "60b587c0230eb5d7e458b8541f794618459fe40a1555efe0d02004255d7b49b8"}, "sekvens": 4294967295}, {"manuskript": "493046022100c7309b13e54896533ebb6c369b1f46992ed7f8d96c8eb606cfd66a06bf6a061d022100e1cb8d32b380dac42584a5e1a6ff00c209767471b8bb82a13bf8d36221a39aa9014104a88f9a448cfcf259df1da679a37dd8e4c148cb6f0ba6a9b1e7d7019b09ef1034495f02d4cdf27d2bab41da3bce3f9508b20f6ad265b5940799610b69a12d02a5", "outpoint": {"indeks": 0, "hash": "4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d8d4002135e4abd171"}, "sekvens": 4294967295}]}
Bemærk kommandoen deserialize; du kan selvfølgelig også bruge det i pybitcointools-biblioteket. Og selvfølgelig kan du foretage transaktioner:
> pybtctool mktx 97f7c7d8ac85e40c255f8a763b6cd9a68f3a94d2e93e8bfa08f977b92e55465e: 0 4cc806bb04f730c445c60b3e0f4f44b54769a1c196ca37d4 pybtctool -s tegn 0 57c617d9b4e1f7af6ec97ca2ff57e94a28279a7eedd4d12a99fa11170e94f5a401000000025e46552eb977f908fa8b3ee9d2943a8fa6d96c3b768a5f250ce485acd8c7f797000000008b483045022100dd29d89a28451febb990fb1dafa21245b105140083ced315ebcdea187572b3990220713f2e554f384d29d7abfedf39f0eb92afba0ef46f374e49d43a728a0ff6046e01410420f34c2786b4bae593e22596631b025f3ff46e200fc1d4b52ef49bbdc2ed00b26c584b7e32523fb01be2294a1f8a5eb0cf71a203cc034ced46ea92a8df16c6e9ffffffff71d1abe4352100d4d837ca96c1a16947b5444f0f3e0bc645c430f704bb06c84c0100000000ffffffff01905f0100000000001976a9143ec6c3ed8dfc3ceabcc1cbdb0c5aef4e2d02873c88ac00000000
Du kan derefter skubbe transaktionen ved hjælp af pushtx eller eligius_pushtx for at skubbe direkte til en mellemstor minepulje. eligius_pushtx er nyttigt til såkaldte “ikke-standardiserede” transaktioner, som almindelige Bitcoin-noder afviser; for eksempel kan multisignaturtransaktioner mellem mere end tre parter sendes igennem her.
Biblioteker
Pybitcointools og SX er ikke de eneste værktøjer derude; der er Bitcoin-biblioteker på næsten alle sprog. Her er et par:
- BitcoinJS (Javascript): Stefan Thomas originale version, eller min gaffel
- python-ecdsa (Python)
- Haskoin (Haskell)
- libbitcoin (C ++)
- BitcoinJ (Java)
- btcd (Go)
Glad kodning!