2
0

chain.py 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import json
  2. from lib.block import Block
  3. class Chain:
  4. def __init__(self):
  5. self.blocks = []
  6. self.block_store = []
  7. def add_block(self, block: Block):
  8. self.save()
  9. self.blocks.append(block)
  10. self.log(f'Added block. Height: {block.height}')
  11. def last_block(self):
  12. return self.blocks[-1] if len(self.blocks) > 0 else None
  13. def get_height(self):
  14. return self.last_block().height if self.last_block() is not None else None
  15. def find_transactions(self, address):
  16. found = []
  17. for block in self.blocks:
  18. for transaction in block.transactions:
  19. if transaction.key == address.public:
  20. found.append(transaction)
  21. return found
  22. def save(self):
  23. if self.last_block() is not None:
  24. self.block_store.append(self.last_block().serialize())
  25. with open('data/block.json', 'w+') as f:
  26. json.dump(self.block_store, f)
  27. self.log(f'Saved up to block {self.get_height()}')
  28. def log(self, text):
  29. print(f'[ CHAIN ] {text}')