Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import hashlib
- def main():
- data = []
- with open('test_merkle_full.txt', 'r', encoding='utf-8') as file:
- content = file.read().splitlines()
- for line in content:
- data.append(line)
- starting_leaf = data.pop(0)
- parrent_lvl = data.pop(0)
- starting_lvl = get_starting_depth(data)
- print(data)
- print("The leaf we start with: " + starting_leaf)
- print("The level of the parrent we want: " + parrent_lvl)
- print("We start at level: " + str(starting_lvl))
- #Building our tree
- index_lvl = starting_lvl
- all_nodes = []
- all_nodes.append(data)
- while index_lvl >= 0:
- index_lvl -= 1
- if is_uneven(all_nodes[len(all_nodes) - 1]):
- temp_list = all_nodes[len(all_nodes) - 1]
- all_nodes[len(all_nodes) - 1].append(temp_list[len(temp_list) - 1])
- all_nodes.append(build_next_lvl(all_nodes[len(all_nodes) - 1]))
- print(all_nodes)
- def get_starting_depth(data):
- our_lvl = 0
- amount_of_nodes = 1
- while len(data) > amount_of_nodes:
- our_lvl += 1
- amount_of_nodes *= 2
- return our_lvl
- def is_uneven(data):
- if len(data) % 2 != 0:
- return True
- else:
- return False
- def concatenate_hash(node_left, node_right):
- return hashlib.sha1(bytearray.fromhex(node_left + node_right)).hexdigest()
- def build_next_lvl(data):
- temp_lvl = []
- for left, right in zip(data[0::2], data[1::2]):
- temp_lvl.append(concatenate_hash(left, right))
- return temp_lvl
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement