Esempio n. 1
0
    def test_block_serialize(self):
        a = Block(0, 1, datetime.datetime.utcnow().timestamp())
        t1 = Transaction(0, 1, 2)
        a.add_transaction(t1)
        t2 = Transaction(0, 1, 2)
        a.add_transaction(t2)

        b = Block.from_json(a.to_json())
        self.assertEqual(a.get_hash(), b.get_hash())
Esempio n. 2
0
 def test_walk_transactions(self):
     b = Block(0, 0, 0)
     t = Transaction(0, 1, 2)
     b.add_transaction(t)
     self.assertEqual(len(list(b.get_transactions())), 1)
     t = Transaction(0, 1, 2)
     b.add_transaction(t)
     self.assertEqual(len(list(b.get_transactions())), 2)
     for x in b.get_transactions():
         self.assertIsInstance(x, Transaction)
Esempio n. 3
0
    def test_import_transactions(self):
        b = Block(0, 0)
        w = Wallet()
        w.create_keys()
        t = Transaction(w.get_address(), 1, 1)
        w.sign_transaction(t)
        b.add_transaction(t)

        tp = TransactionPool()
        self.assertTrue(tp.import_transactions(b))
        self.assertEqual(len(tp), 1)

        t2 = tp.pull_transaction()
        self.assertEqual(t.get_hash(), t2.get_hash())

        # Importing unsigned transactions returns False
        tp = TransactionPool()
        t2 = Transaction(0, 1, 1)
        b.add_transaction(t2)
        self.assertFalse(tp.import_transactions(b))
Esempio n. 4
0
    def test_create_block(self):
        b = Block(0, 0, 0)
        self.assertIsInstance(b, Block)

        t = Transaction(0, 1, 2)

        self.assertTrue(b.add_transaction(t))

        header = b.get_header()
        header = json.loads(header)
        self.assertIsInstance(header, dict)
        self.assertIsInstance(header["trans_tree"], str)
Esempio n. 5
0
    def test_discard_block(self):
        bc = BlockChain()

        cbtx = WalletHelper.generate_coinbase_with_unused_wallet()
        b = bc.new_block(cbtx)
        mine(b)
        self.assertTrue(bc.discard_block(b))

        b = Block(1337, bc.get_block_from_index(1).get_hash())
        cbtx = WalletHelper.generate_coinbase_with_unused_wallet()
        b.add_transaction(cbtx)
        mine(b)
        self.assertFalse(bc.discard_block(b))
        self.assertEqual(len(bc.chain), 2)

        b = Block(bc.get_block_from_index(-1).index, "obviously_fake_hash")
        cbtx = WalletHelper.generate_coinbase_with_unused_wallet()
        b.add_transaction(cbtx)
        mine(b)
        self.assertFalse(bc.discard_block(b))
        self.assertEqual(len(bc.chain), 2)

        b = Block(
            bc.get_block_from_index(1).index + 1,
            bc.get_block_from_index(1).get_hash())
        cbtx = WalletHelper.generate_coinbase_with_unused_wallet()
        b.add_transaction(cbtx)  # coinbase
        mine(b)
        self.assertTrue(bc.discard_block(b))
        self.assertEqual(len(bc.chain), 3)