正德本义:整平道路

47行python代码实现区块链

 1 import hashlib as hasher
 2 import datetime as date
 3 
 4 # Define what a Snakecoin block is
 5 class Block:
 6   def __init__(self, index, timestamp, data, previous_hash):
 7     self.index = index
 8     self.timestamp = timestamp
 9     self.data = data
10     self.previous_hash = previous_hash
11     self.hash = self.hash_block()
12   
13   def hash_block(self):
14     sha = hasher.sha256()
15     sha.update(str(self.index) + str(self.timestamp) + str(self.data) + str(self.previous_hash))
16     return sha.hexdigest()
17 
18 # Generate genesis block
19 def create_genesis_block():
20   # Manually construct a block with
21   # index zero and arbitrary previous hash
22   return Block(0, date.datetime.now(), "Genesis Block", "0")
23 
24 # Generate all later blocks in the blockchain
25 def next_block(last_block):
26   this_index = last_block.index + 1
27   this_timestamp = date.datetime.now()
28   this_data = "Hey! I'm block " + str(this_index)
29   this_hash = last_block.hash
30   return Block(this_index, this_timestamp, this_data, this_hash)
31 
32 # Create the blockchain and add the genesis block
33 blockchain = [create_genesis_block()]
34 previous_block = blockchain[0]
35 
36 # How many blocks should we add to the chain
37 # after the genesis block
38 num_of_blocks_to_add = 20
39 
40 # Add blocks to the chain
41 for i in range(0, num_of_blocks_to_add):
42   block_to_add = next_block(previous_block)
43   blockchain.append(block_to_add)
44   previous_block = block_to_add
45   # Tell everyone about it!
46   print ("Block #{} has been added to the blockchain!".format(block_to_add.index))
47   print ("Hash: {}\n".format(block_to_add.hash) )

 

posted @ 2019-12-21 14:35  Jason Wang  阅读(343)  评论(0)    收藏  举报
欲望的奴隶,文化的俘虏,演化的工具