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)
Beiträge zu diesem Thema Autor Datum
 Blockchain Programmierung Python (3.6) Nassimal 17.03.2019 12:49
 RE: Blockchain Programmierung Python (3.6) ed209 23.03.2019 09:41

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)