import unittest from onionrblocks.generators import anonvdf import kasten import mimcvdf from time import time from math import floor class TestAnonVDF(unittest.TestCase): def test_vdf_create(self): test_data = kasten.generator.pack.pack(b"test", "tst", 0) test_vdf = mimcvdf.vdf_create(test_data, 1000, dec=True) generated = anonvdf.AnonVDFGenerator.generate(test_data, rounds=1000) self.assertEqual( generated.get_packed(), test_data ) self.assertEqual(generated.id, int(test_vdf).to_bytes(64, byteorder="big")) def test_vdf_block_validate_ok_time(self): rds = 90000 test_data = kasten.generator.pack.pack(b"test", "tst", 0) rds += len(test_data) * 1000 test_id = mimcvdf.vdf_create(test_data, rds) anonvdf.AnonVDFGenerator.validate_id(test_id, test_data, rounds=rds) def test_vdf_block_validate_not_enough(self): rds = 90000 t = floor(time()) - 60 test_data = kasten.generator.pack.pack(b"test", "tst", 0, timestamp=t) test_id = mimcvdf.vdf_create(test_data, rds) self.assertRaises(ValueError, anonvdf.AnonVDFGenerator.validate_id, test_id, test_data, rounds=rds) def test_vdf_incermental(self): last = 1 for i in range(1, 20): t = time() rds = 90000 test_data = kasten.generator.pack.pack(b"test" * i, "tst", 0) rds += len(test_data) * 1000 test_id = mimcvdf.vdf_create(test_data, rds) anonvdf.AnonVDFGenerator.validate_id(test_id, test_data, rounds=rds) newT = time() self.assertGreater(newT - t, last) unittest.main()