def main(): # Creating Clients Dinesh = client.Client() yash = client.Client() John = client.Client() Dexter = client.Client() # Creating Transactions (Senders , reciver , Amount/Value) t0 = Transaction("Genesis", Dinesh.identity, 10) t1 = Transaction(Dinesh, yash.identity, 100) t2 = Transaction(yash, John.identity, 1000) t3 = Transaction(yash, Dexter.identity, 1000) t4 = Transaction(John, Dexter.identity, 223) t5 = Transaction(John, Dexter.identity, 102) t6 = Transaction(yash, Dexter.identity, 100) t7 = Transaction(Dinesh, yash.identity, 10000) t8 = Transaction(yash, John.identity, 100) t9 = Transaction(yash, John.identity, 500) # Signing_transactions t1.sign_transaction() t2.sign_transaction() t3.sign_transaction() t4.sign_transaction() t5.sign_transaction() t6.sign_transaction() t7.sign_transaction() t8.sign_transaction() t9.sign_transaction() # appending to global transaction list client.transactions.append(t0) client.transactions.append(t1) client.transactions.append(t2) client.transactions.append(t3) client.transactions.append(t4) client.transactions.append(t5) client.transactions.append(t6) client.transactions.append(t7) client.transactions.append(t8) client.transactions.append(t9) # Miner adds a block ( every block has three trasaction details) for i in range(0, 3): block = Block() for i in range(3): temp_transaction = client.transactions[ client.last_transaction_index] # validate transaction (remaining) # if valid (remaining) block.verified_transactions.append(temp_transaction) client.last_transaction_index += 1 # updating pervious hash block.previous_block_hash = client.last_block_hash # calling miner block.Nonce = hashes.mine(block, 10) digest = hash(block) # adding block to the blockchain client.TPCoins.append(block) client.last_block_hash = digest # dumping blockChain displaying_methods.dump_blockchain(client.TPCoins)
# Mining def mine(message, difficulty=1): assert difficulty >= 1 prefix = '1' * difficulty digest = None for i in range(10_000): digest = sha256(str(message) + str(i)) if digest.startswith(prefix): print('After', i, 'iteration, NONCE FOUND with', digest) break return digest def sha256(message): return hashlib.sha256(message.encode('ascii')).hexdigest() # Miner 1 block = Block() for tx in transactions: block.verified_transactions.append(tx) block.previous_block_hash = last_block_hash block.Nonce = mine(block, 2) digest = hash(block) ANUBIS.append(block) display_blockchain(ANUBIS)