|
Post by christian on Mar 17, 2018 13:02:34 GMT 1
|
|
|
Post by christian on Mar 18, 2018 9:29:49 GMT 1
Använd size_on_disk i getblockchaininfo. Exempel requests.post(url, data=json.dumps(payload), headers=headers).json()['result']['size_on_disk']
|
|
|
Post by thomaslundqvist on Mar 18, 2018 16:22:02 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? När det gäller att söka igenom efter adresser så tar det lite tid, det är helt ok! De andra menyvalen (lista block, etc) bör ju gå snabbt, där behövs ingen loop...
|
|
|
Post by thomaslundqvist on Mar 18, 2018 16:24:26 GMT 1
Använd size_on_disk i getblockchaininfo. Perfekt med folk som svarar sig själva Men, den uppgiften blev lite extra lurig visst då size_on_disk inte fanns dokumenterad.
|
|
s
New Member
1SeanW4LgPMph7N5g5ZT38bEoHXQU4dn6
Posts: 31
|
Post by s on Mar 19, 2018 9:27:40 GMT 1
[...] 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. [...] Är det bara ett anslutningsfel eller nåt fel med koden i som jag missar? socketadress - på linux kan det ibland hända att ett program, även om man stängt / avbrutit (och även efter kill -9) kan ha kvar en socket i någon slags låst läge, där enda lösningen är att vänta, eller starta om datorn. Kanske liknande problem kan inträffa på windows. Så...
|
|
s
New Member
1SeanW4LgPMph7N5g5ZT38bEoHXQU4dn6
Posts: 31
|
Post by s on Mar 19, 2018 9:50:19 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? Kanske vår BitcoinQT har någon inställning för hur snabbt man får göra frågor via JSON RPC som går höja? Blocken före första inlämningsuppgiften är mest 1eduGsrv... men troligen även några till. Söker man inte efter 1edu... och ev. andra tidiga adresser så kan tidiga block hoppas över. Risk för "reorg" (omorganisering?) av kedjan finns, så säkrast att programmet kontrollerar mot en känd hash på första blocket efter man hoppat över några block.
|
|
|
Post by tedskyvell on Mar 19, 2018 22:59:10 GMT 1
Tänkte lite på uppgift 4. Den listar ouputs, spenderade och ospenderande? Hur skulle man gå tillväga om man endast velat ha de ospenderade?
|
|
|
Post by thomaslundqvist on Mar 20, 2018 8:30:18 GMT 1
Tänkte lite på uppgift 4. Den listar ouputs, spenderade och ospenderande? Hur skulle man gå tillväga om man endast velat ha de ospenderade? Det är lurigare. En output har ingen referens framåt i tiden till en input som spenderar den. Man måste titta igenom alla inputs och se om det finns någon senare input som spenderar outputen. Normalt bygger man en databas i minnet eller på disk med alla outputs, sen kikar man igenom alla inputs och bockar av de outputs som är spenderade. T ex, kan du spara alla outputs i en python-dictionary och för varje input leta upp den tidigare outputen och sätta en flagga: spent = True. När alla inputs har traverserats så har man koll på spenderade och ospenderade outputs.
|
|
|
Post by hibryda on Mar 31, 2018 9:28:17 GMT 1
Otroligt sent ute, men vill ändå försöka förstå det här. Är helt ny till Python (bara gått en grundkurs i programmeringsteknik i Java på LTH), så det är många frågetecken.
Jag håller på med getblock och allt ser bra ut - förutom transaktions som jag sitter helt fast med. Det står att man ska få ut en array med TXID-strängar om man kör 'tx'. Jag har försökt att spara den som en variabel (eller vad man nu säger i Python), printat den, osv., men inget funkar. Det jag får när jag försöker spara arrayn är följande: Traceback (most recent call last): File "3069_2018-03-0519_07_53.py", line 52, in <module> transactions = response['result']['tx'] KeyError: 'tx'
response['result']['hash'] etc. funkar ju för alla andra.
Tacksam för svar!
|
|
geir
New Member
Posts: 9
|
Post by geir on Apr 2, 2018 22:59:38 GMT 1
Otroligt sent ute, men vill ändå försöka förstå det här. Är helt ny till Python (bara gått en grundkurs i programmeringsteknik i Java på LTH), så det är många frågetecken. Jag håller på med getblock och allt ser bra ut - förutom transaktions som jag sitter helt fast med. Det står att man ska få ut en array med TXID-strängar om man kör 'tx'. Jag har försökt att spara den som en variabel (eller vad man nu säger i Python), printat den, osv., men inget funkar. Det jag får när jag försöker spara arrayn är följande: Traceback (most recent call last): File "3069_2018-03-0519_07_53.py", line 52, in <module> transactions = response['result']['tx'] KeyError: 'tx' response['result']['hash'] etc. funkar ju för alla andra. Tacksam för svar! Det ser rätt ut vad du har gjort... är du säker på att du har stavat rätt på response vart du får svaret från requesten? Men detta funkar för getBlock: getBlock = { "method": "getblock", "params": [ blockHash ], }
block = requests.post(url, data=json.dumps(getBlock), headers=headers).json() #print(json.dumps(block, indent=2, sort_keys=True)) txId = block['result']['tx']
|
|
|
Post by hibryda on Apr 3, 2018 8:58:43 GMT 1
Otroligt sent ute, men vill ändå försöka förstå det här. Är helt ny till Python (bara gått en grundkurs i programmeringsteknik i Java på LTH), så det är många frågetecken. Jag håller på med getblock och allt ser bra ut - förutom transaktions som jag sitter helt fast med. Det står att man ska få ut en array med TXID-strängar om man kör 'tx'. Jag har försökt att spara den som en variabel (eller vad man nu säger i Python), printat den, osv., men inget funkar. Det jag får när jag försöker spara arrayn är följande: Traceback (most recent call last): File "3069_2018-03-0519_07_53.py", line 52, in <module> transactions = response['result']['tx'] KeyError: 'tx' response['result']['hash'] etc. funkar ju för alla andra. Tacksam för svar! Det ser rätt ut vad du har gjort... är du säker på att du har stavat rätt på response vart du får svaret från requesten? Men detta funkar för getBlock: getBlock = { "method": "getblock", "params": [ blockHash ], }
block = requests.post(url, data=json.dumps(getBlock), headers=headers).json() #print(json.dumps(block, indent=2, sort_keys=True)) txId = block['result']['tx']
Japp, har gjort exakt så. Skrivit om det många gånger också, och har alltid blivit fel. Allt annat funkar. Suttit med detta ett bra tag utan att komma fram till något. Har Mac, men borde väl kvitta då det andra funkar?
|
|
|
Post by thomaslundqvist on Apr 11, 2018 20:32:46 GMT 1
print(json.dumps(block, indent=2, sort_keys=True))
print-raden ovan är ju bra. Det borde gå att se exakt hur json-strukturen ser ut. En variant är också att i Python skriva block.get('tx') istället...
|
|