|
Post by thomaslundqvist on Mar 5, 2018 20:20:31 GMT 1
Startar en tråd om inlämningsuppgiften för modul 3. Ställ frågor om RPC, json, Python, transaktioner och block...
|
|
nikke
New Member
Posts: 30
|
Post by nikke on Mar 8, 2018 10:54:01 GMT 1
Efter att jag ändrat bitcoin.conf får jag segmentation fault
$ bitcoin-qt Segmentation fault
|
|
|
Post by thomaslundqvist on Mar 8, 2018 12:04:57 GMT 1
Ajaj, prova att ta bort 'blocks'- och 'chainstate'-katalogerna så att blockkedjan hämtas på nytt... (gissar vilt)...
|
|
ric
New Member
Posts: 43
|
Post by ric on Mar 12, 2018 10:02:12 GMT 1
Hej!
Jag har stött på problem.
Gettransaction kan ju bara hämta transaktioner som gjort i plånboken.
Jag har försökt med getrawtransaction och får tillbaka en "serialized transaction". Jag har har försökt få denna "lättläst" men ej lyckats.
Enligt dokumentationen ska man kunna slå på verbose för att få till detta.... jag har sett två varianter ("params": "1" och "params": "true") men ej lyckats.....
I desperation testatade jag med att lägga på ['blockhash'] på resultatet men får felmeddelade om att stringindex måste vara integer.
Jag har även försökt med decodetransaction.......
Kan man få en hint...... eller är tanken att man ska köra med regex i "serialized transaction"?
|
|
|
Post by andreasdeblanche on Mar 12, 2018 11:29:53 GMT 1
Hej Ric,
getrawtransaction returnerar transaktionen serialized. getrawtransaction 0dccc7b120583c998ebeb50b7467a2d2b7e9f89a00ff9c2c85dcd5017c6018a4
Man kan ta strängen och skicka till "decoderawtransaction" för att få den som en json.
Eller så kan man ange att getrawtransaction skall skriva ut den som en json direkt genom att lägga till true, exempel:
getrawtransaction 0dccc7b120583c998ebeb50b7467a2d2b7e9f89a00ff9c2c85dcd5017c6018a4 true
Problemet är dock att getrawtransaction bara plockar transaktioner som finns i mempoolen. Om man inte lagt till txindex=1 i bitcoin.conf (men det har du säkert) Behöver då även ha rescan=1 första gången man startar walleten efter att ha lagt till txindex.
|
|
ric
New Member
Posts: 43
|
Post by ric on Mar 12, 2018 13:10:11 GMT 1
Tack för svar men jag är fortfarande ej 100 med... eller jag tycker att jag har försökt göra det du skriver
Jag har txindex = 1 och jag har rescannat.
Jag har kört getrawtrasaction med payload = { "method": "getrawtransaction" "params": [ hash ], "params": "1" }
Jag har även provat med 1 och true men jag får bara tillbaka det "serialized" eller null
Jag har även provar decodetransaction men får tillbaka serialized.
|
|
|
Post by thomaslundqvist on Mar 12, 2018 17:08:52 GMT 1
Jag har kört getrawtrasaction med payload = { "method": "getrawtransaction" "params": [ hash ], "params": "1" } Jag har även provat med 1 och true men jag får bara tillbaka det "serialized" eller null Jag har även provar decodetransaction men får tillbaka serialized. Jag har kört med True (stort T i början) och inga citattecken. "decoderawtransaction" borde ju dock fungera...
|
|
ric
New Member
Posts: 43
|
Post by ric on Mar 12, 2018 17:31:16 GMT 1
Jag har kört getrawtrasaction med payload = { "method": "getrawtransaction" "params": [ hash ], "params": "1" } Jag har även provat med 1 och true men jag får bara tillbaka det "serialized" eller null Jag har även provar decodetransaction men får tillbaka serialized. Jag har kört med True (stort T i början) och inga citattecken. "decoderawtransaction" borde ju dock fungera... Hej igen! Ja, jag gör väl något fel.... Jag har följande funktioner def getRawTransaction(hash): payload = { "method": "getrawtransaction", "params": [ hash ], "params": True } return requests.post(url, data=json.dumps(payload), headers=headers).json()['result'] def decodeRawTransaction(hash): payload = { "method": "decoderawtransaction", "params": [hash], } return requests.post(url, data=json.dumps(payload), headers=headers).json()['result'] Jag skickar in '56199e6a587842d7deb8dbe58bbdbcf13928eefb82dbf6d4c175663f6afd8588' till dessa Om jag bara kör med hash får jag tillbaka serialized. Jag har testat med "True", True, "1" och 1 men får då "None"
|
|
|
Post by thomaslundqvist on Mar 12, 2018 20:58:25 GMT 1
def getRawTransaction(hash): payload = { "method": "getrawtransaction", "params": [ hash ], "params": True } return requests.post(url, data=json.dumps(payload), headers=headers).json()['result'] Du har 'params' med två gånger i dictionaryn. Prova: "params": [ hash, True ] params är ju en lista med alla parametrar...
|
|
ric
New Member
Posts: 43
|
Post by ric on Mar 13, 2018 7:48:46 GMT 1
def getRawTransaction(hash): payload = { "method": "getrawtransaction", "params": [ hash ], "params": True } return requests.post(url, data=json.dumps(payload), headers=headers).json()['result'] Du har 'params' med två gånger i dictionaryn. Prova: "params": [ hash, True ] params är ju en lista med alla parametrar... Tack!! Jag hade testat att ha de i samma params men då med 1 som var innan 0.14. Nu fick jag väntat reslutat
|
|
|
Post by antonjohansson on Mar 13, 2018 13:36:42 GMT 1
Hej!
Jag har ett problem i "Alternativ 4". När jag itererar genom blocken får jag flera felmeddelande. Här är det som står längst ner:
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8332): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x05BB7B10>: Failed to establish a new connection: [WinError 10048] Normalt tillåts bara en användare för varje socketadress (protokoll/nätverkadress/port)',))
Problemet uppstår inte alltid utan ibland går det att köra "Alternativ 4" ett par tre gånger innan problemet uppstår, ibland går det bara en gång, och ibland ingen gång. Så här ser min kod ut:
Alternativ 4
def print_address_transactions_info(address):
print("Söker efter adress: ", address)
# Itererar genom alla block for i in range(0, get_blockchain_length()):
block = get_block(get_blockhash_with_blocknr(i))
# Mer kod........
def get_blockhash_with_blocknr(blocknr):
payload = {"method": "getblockhash", "params": [blocknr]}
response = requests.post(url, data=json.dumps(payload), headers=headers).json()
return response['result']
def get_block(blockhash):
payload = {"method": "getblock", "params": [blockhash]}
response = requests.post(url, data=json.dumps(payload), headers=headers).json()
return response['result']
Är det bara ett anslutningsfel eller nåt fel med koden i som jag missar?
|
|
|
Post by thomaslundqvist on Mar 14, 2018 9:23:16 GMT 1
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8332): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x05BB7B10>: Failed to establish a new connection: [WinError 10048] Normalt tillåts bara en användare för varje socketadress (protokoll/nätverkadress/port)',)) Är det bara ett anslutningsfel eller nåt fel med koden i som jag missar? Lurigt! Din kod ser ok ut. Jag har inte sett något liknande. Kör du på windows? Linux mest själv...
|
|
|
Post by antonjohansson on Mar 14, 2018 12:27:04 GMT 1
requests.exceptions.ConnectionError: HTTPConnectionPool(host='localhost', port=8332): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x05BB7B10>: Failed to establish a new connection: [WinError 10048] Normalt tillåts bara en användare för varje socketadress (protokoll/nätverkadress/port)',)) Är det bara ett anslutningsfel eller nåt fel med koden i som jag missar? Lurigt! Din kod ser ok ut. Jag har inte sett något liknande. Kör du på windows? Linux mest själv... Yes, använder windows. Jag använder funktionerna i andra alternativ också och de har inte orsakat något problem i dem, det är bara i "alternativ 4" som jag fått problemet.
|
|
|
Post by thomaslundqvist on Mar 15, 2018 11:13:08 GMT 1
Yes, använder windows. Jag använder funktionerna i andra alternativ också och de har inte orsakat något problem i dem, det är bara i "alternativ 4" som jag fått problemet. Du får köra på och lämna in ändå! Tillräckligt bra förmodligen... Jag kan provköra på min linux senare också när jag provkör alla inlämningar...
|
|
|
Post by pontus on Mar 16, 2018 20:11:44 GMT 1
Har ett problem på uppgift 4, det tar jättelång tid för min kod att köra, använder mig utav for loopar, finns det något snabbare sätt i python att göra jämförelsen?
|
|