l8
New Member
Posts: 31
|
Post by l8 on Apr 14, 2018 22:13:04 GMT 1
Hej, Jag har precis startat med inlämning 5. Jag lyckas inte riktigt luska ut hur jag ska generera en nyckel. Jag gissar att jag ska använda något i pycoin package? Jag har letat lite på nätet men tycker inte jag hittar något bra. Någon som har något tips? mvh L8
|
|
|
Post by christian on Apr 15, 2018 8:19:24 GMT 1
Hej,
Om du installerar "pycoin" paketet. Finns hint i m5-wallet-tx-python-v2.pdf (https://disco.hv.se/courses/11671/199654/?action=download&modchoiceid=199654&lang=sv&fileid=3126)
from pycoin import key
mykey = key.Key(123)
|
|
l8
New Member
Posts: 31
|
Post by l8 on Apr 15, 2018 9:04:10 GMT 1
Tack! Det Funkade alldeles lysande!
|
|
nikke
New Member
Posts: 30
|
Post by nikke on Apr 15, 2018 10:02:40 GMT 1
|
|
ric
New Member
Posts: 43
|
Post by ric on Apr 16, 2018 10:05:27 GMT 1
|
|
|
Post by thomaslundqvist on Apr 16, 2018 21:24:08 GMT 1
Bra länkar! Jag har också gjort en beskrivning nu (se disco). Men länkarna du postade var nästan bättre...
|
|
|
Post by tedskyvell on Apr 17, 2018 17:38:30 GMT 1
Fråga på hur man hittar dokumentation till t.ex. pycoin. Det enda jag hittar i form av dokumentation är: pycoin.readthedocs.io/en/latest/source/pycoin.html#module-pycoin.encodingMen under exempelvis modulen "Encoding" så finns ingen information alls vilka funktioner den innehåller. Finns det något sätt att se dessa på som jag missar? Kanske i python? (jag är relativt ny inom programmeringsvärlden)
|
|
|
Post by thomaslundqvist on Apr 18, 2018 19:38:04 GMT 1
Jag har märkt att pycoin är rätt kasst dokumenterat. Jag läser källkoden på github: github.com/richardkiss/pycoin (tänk dock på att den är mycket färskare än den som normalt ingår i paketen man installerar). Speciellt är det intressant med ku-kommandot: github.com/richardkiss/pycoin/blob/master/pycoin/cmds/ku.py. Den filen innehåller bra exempel på hur pycoin kan användas. Men jag kan t ex skriva så här för att omvandla binärdata (hash160-adress) till base58check (vanlig bitcoin adress): import binascii import pycoin.encoding as enc addr = enc.b2a_hashed_base58(binascii.unhexlify(b'00' + b'500de0c9a7c7777e02ab8e0e86c9f55bda5df756')) print(addr)
"hashed"-varianten gör allt jobb åt dig med checksumma och sådant...
|
|
|
Post by thomaslundqvist on Apr 18, 2018 19:44:41 GMT 1
Glömde lägga till allmänt python-knep. Om du kör grundinstallationen med Idle-editorn så finns det autocomplete men inte alltid. Editorn lär sig variabelinnehåll efter du har kört ett program. Om du t ex skriver ett program med en enda rad:
import binascii så kan du på raden under skriva 'binascii.' (obs punkt efter) och trycka TAB och få upp förslag på funktioner att köra. Men: detta fungerar bara efter att du kört första raden en gång (F5). Då finns objektet binascii definierat så att editorn kan inspektera det.
I linux-miljö så kan kommandorads-python inte autocomplete med tab. Jag kör därför IPython istället (t ex, i debian installera paketet ipython3).
|
|
|
Post by tedskyvell on Apr 20, 2018 16:29:46 GMT 1
Tack för bra svar Thomas! Det fungerade utmärket med .tab i ipython och spyder ide:n. Jag har använd vim innan (CLI), men lyckas inte aktivera samma funktionalitet där, kanske blir att köra med spyder istället.
Jag försöker koda från privat nycket till wif format själv, men får fel slutresultat (får en jättekort wif). Hittade nu felet när jag kollade på din kod - du gör hex-värdet 17 till 32 bytes genom att lägga till nollor framför?
Du kan inte förklara vad koden nedan gör? Gärna genom att använda python3's .format då jag inte riktigt förstår vad som händer här.
k_hex = '%064x' % k
|
|
|
Post by thomaslundqvist on Apr 23, 2018 10:20:04 GMT 1
Jag försöker koda från privat nycket till wif format själv, men får fel slutresultat (får en jättekort wif). Hittade nu felet när jag kollade på din kod - du gör hex-värdet 17 till 32 bytes genom att lägga till nollor framför? Du kan inte förklara vad koden nedan gör? Gärna genom att använda python3's .format då jag inte riktigt förstår vad som händer här. k_hex = '%064x' % k Yepp, raden lägger till nollor framför så att det blir 32 bytes (vilket motsvarar 64 hexadecimala siffror, därför 064). Jag gillar de gammaldags formatsträngarna i python men de nyare .format går fint också: '%x' % k # omvandla till hex fast utan att fylla 0:or framför '%64x' % k # samma men med mellanslag framför istället (meningslöst i vårt fall) '%064x' % k # med nollor '{0:064x}'.format(k) # motsvarande med format (som jag är lite mer ovan vid)
Alternativt kunde man förmodligen omvandlat till binärt först och sedan fyllt ut med 0-bytes så det blir 32 totalt. Kanske lite klurigare...
|
|
|
Post by tedskyvell on Apr 23, 2018 16:53:14 GMT 1
Tack Thomas! Nu blev det tydligt
|
|
|
Post by thomaslundqvist on Apr 24, 2018 15:56:50 GMT 1
Enligt 'help createrawtransaction' i bitcoin edu-debugfönstret så kan man t ex skicka:
"[{\"txid\":\"myid\",\"vout\":0}]" "{\"address\":0.01}" Dvs, en lista med txid/vout-par som första argument (eftersom det kan vara många inputs till transaktionen) och adress:summa som andra argument. Allt ligger inuti params-listan (två argument totalt). Lite lurigt är att adressen sist är en dictionary {} som kan innehålla många adresser om man vill...
Studera 'help createrawtransaction' noga...
|
|