-
-
Save Chike-O-IT/4c2e4a6ca69f6ae8f2a8da9c27019681 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import hashlib as hasher | |
import datetime as date | |
# Define what a Snakecoin block is | |
class Block: | |
def __init__(self, index, timestamp, data, previous_hash): | |
self.index = index | |
self.timestamp = timestamp | |
self.data = data | |
self.previous_hash = previous_hash | |
self.hash = self.hash_block() | |
def hash_block(self): | |
sha = hasher.sha256() | |
sha.update(str(self.index) + str(self.timestamp) + str(self.data) + str(self.previous_hash)) | |
return sha.hexdigest() | |
# Generate genesis block | |
def create_genesis_block(): | |
# Manually construct a block with | |
# index zero and arbitrary previous hash | |
return Block(0, date.datetime.now(), "Genesis Block", "0") | |
# Generate all later blocks in the blockchain | |
def next_block(last_block): | |
this_index = last_block.index + 1 | |
this_timestamp = date.datetime.now() | |
this_data = "Hey! I'm block " + str(this_index) | |
this_hash = last_block.hash | |
return Block(this_index, this_timestamp, this_data, this_hash) | |
# Create the blockchain and add the genesis block | |
blockchain = [create_genesis_block()] | |
previous_block = blockchain[0] | |
# How many blocks should we add to the chain | |
# after the genesis block | |
num_of_blocks_to_add = 20 | |
# Add blocks to the chain | |
for i in range(0, num_of_blocks_to_add): | |
block_to_add = next_block(previous_block) | |
blockchain.append(block_to_add) | |
previous_block = block_to_add | |
# Tell everyone about it! | |
print "Block #{} has been added to the blockchain!".format(block_to_add.index) | |
print "Hash: {}\n".format(block_to_add.hash) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment