Created
July 7, 2018 17:55
-
-
Save Jzarecta/84a7b26c688501011f81f7d3d37d5e28 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 la estructura del bloque | |
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() | |
# Genera el bloq inicial o genesis | |
def create_genesis_block(): | |
# Manualmente construimos un bloque | |
# con el indice cero y con un hash vacio | |
return Block(0, date.datetime.now(), "Genesis Block", "0") | |
# Genera los siguientes bloques | |
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) | |
# Crea los bloques así como el bloq inicial | |
blockchain = [create_genesis_block()] | |
previous_block = blockchain[0] | |
# Especificamos el numero de bloq a armar | |
# despues del block genesis | |
num_of_blocks_to_add = 20 | |
# Agrega el bloque a la cadena | |
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 | |
# Le dice a todos sobre este | |
print "Bloq #{} ha sido agregado a nuestra cadena de bloques!".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