test_proto.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. from src.protocol import Protocol
  2. from src.mining import Miner
  3. from src.block import GENESIS_BLOCK
  4. from src.crypto import Signing
  5. from src.transaction import Transaction, TransactionInput, TransactionTarget
  6. from time import sleep
  7. reward_key = Signing.generatePrivateKey()
  8. proto1 = Protocol([], GENESIS_BLOCK, 1337)
  9. proto2 = Protocol([("127.0.0.1", 1337)], GENESIS_BLOCK, 1338)
  10. miner1 = Miner(proto1, reward_key)
  11. miner2 = Miner(proto2, reward_key)
  12. miner2.start_mining()
  13. miner1.start_mining()
  14. sleep(5)
  15. strans1 = miner2.chainbuilder.primary_block_chain.blocks[20].transactions[0]
  16. strans1 = TransactionInput(strans1.get_hash(), 0)
  17. trans = Transaction([strans1], [])
  18. trans.sign([reward_key])
  19. print(trans.verify(miner1.chainbuilder.primary_block_chain, set()))
  20. proto2.received('transaction', trans.to_json_compatible(), None)
  21. sleep(5)
  22. print(len(miner1.chainbuilder.primary_block_chain.blocks))
  23. print(len(miner2.chainbuilder.primary_block_chain.blocks))
  24. hashes1 = [b.hash for b in miner1.chainbuilder.primary_block_chain.blocks[:70]]
  25. hashes2 = [b.hash for b in miner2.chainbuilder.primary_block_chain.blocks[:70]]
  26. print(hashes1 == hashes2)
  27. print(trans.verify(miner1.chainbuilder.primary_block_chain, set()))