Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Blockchain Programmierung Python (3.6) » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Blockchain Programmierung Python (3.6)
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Nassimal
Grünschnabel


Dabei seit: 17.03.2019
Beiträge: 1

Blockchain Programmierung Python (3.6) Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Meine Frage:
Hallo, ich versuche eine Blockchain zu Programmieren. Der Code unten scheint nicht richtig zu funktionieren. Er fängt mit Block 1 an (obwohl mit dem Genesis Block begonnen werden muss) und nach 10 Blöcken fängt es von vorne an. Hat jemand ekne Lösung?

import datetime
import hashlib

class Block:
blockNo = 0
data = None
next = None
hash = None
nonce = 0
previous_hash = 0x0
timestamp = datetime.datetime.now()

def __init__(self, data):
self.data = data

def hash(self):
h = hashlib.sha256()
h.update(
str(self.nonce).encode('utf-8') +
str(self.data).encode('utf-8') +
str(self.previous_hash).encode('utf-8') +
str(self.timestamp).encode('utf-8') +
str(self.blockNo).encode('utf-8')
)
return h.hexdigest()

def __str__(self):
return "Block Hash: " + str(self.hash()) + "\nBlockNo: " + str(self.blockNo) + "\nBlock Data: " + str(self.data) + "\nHashes: " + str(self.nonce) + "\n--------------"

class Blockchain:

diff = 20
maxNonce = 2**32
target = 2 ** (256-diff)

block = Block("Genesis")
dummy = head = block

def add(self, block):

block.previous_hash = self.block.hash()
block.blockNo = self.block.blockNo + 1

self.block.next = block
self.block = self.block.next

def mine(self, block):
for n in range(self.maxNonce):
if int(block.hash(), 16) <= self.target:
self.add(block)
print(block)
break
else:
block.nonce += 1

blockchain = Blockchain()

for n in range(10):
blockchain.mine(Block("Block " + str(n+1)))

while blockchain.head != None:
print(blockchain.head)
blockchain.head = blockchain.head.next


Meine Ideen:
Leider habe ich keine Ideen. Vielleicht liegt es an der Schleife.

Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Nassimal: 17.03.2019 12:50.

17.03.2019 12:49 Nassimal ist offline Beiträge von Nassimal suchen Nehmen Sie Nassimal in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Versuche mal den [code] tag zu benutzen, das hilft es deinen Code lesbarer zu machen.

Zwei Fragen zu deinem code:
1. Was genau versuchst Du denn zu erreichen, mit diesem Code?
2. Was ist faslsch,, was passiert stattdessen?
23.03.2019 09:41 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Blockchain Programmierung Python (3.6)