Example #1
0
def main():
    target_interval_sec = 5
    diff_calc = diff.MADifficultyCalculator(
        ma_samples=32, target_interval_sec=target_interval_sec)
    hash_power = 100

    cTime = 0.0
    chain = [Block(0, 0.002)]
    usedTimeList = []
    p = proof_of_work.PoW(hash_power)

    for i in range(1000):
        required_diff = diff_calc.calculate_diff(chain)
        cTime = cTime + p.mine(required_diff)
        block = Block(cTime, required_diff)
        used_time = block.n_time - chain[-1].n_time
        chain.append(block)
        usedTimeList.append(used_time)
        print("Time %.2f, block %d, requiredWork %.2f, used_time %.2f" %
              (block.n_time, i + 1, 1 / block.required_diff, used_time))

    print("Max: %.2f, min: %.2f, avg: %.2f, std: %.2f" % (
        max(usedTimeList),
        min(usedTimeList),
        stat.mean(usedTimeList),
        stat.stdev(usedTimeList),
    ))
Example #2
0
 def __init__(self, shard_size, hash):
     self.shard_size = shard_size
     self.genesis_block = create_genesis_major_block(shard_size, hash)
     self.block_map = {hash: self.genesis_block}
     self.best_chain = [self.genesis_block]
     self.diff_calc = diff.MADifficultyCalculator(
         ma_samples=144,
         bootstrap_samples=64,
         slide_size=1,
         target_interval_sec=MAJOR_BLOCK_RATE_SEC,
     )
     self.pending_minor_block_map = {}
Example #3
0
 def __init__(self, shard_size, shard_id, hash):
     self.shard_size = shard_size
     self.shard_id = shard_id
     self.genesis_block = create_genesis_minor_block(
         shard_size, shard_id, hash)
     # Map from block hash to block
     self.block_map = {hash: self.genesis_block}
     self.best_chain = [self.genesis_block]
     self.diff_calc = diff.MADifficultyCalculator(
         ma_samples=1440,
         bootstrap_samples=64,
         slide_size=1,
         target_interval_sec=MINOR_BLOCK_RATE_SEC,
     )
Example #4
0
 def test_two_sample(self):
     chain = [Block(0, 0.1), Block(4.0, 0.1), Block(10, 0.08)]
     diff_calc = diff.MADifficultyCalculator(ma_samples=2,
                                             target_interval_sec=5.0)
     self.assertEqual(diff_calc.calculate_diff(chain), 1 / 11.25)
Example #5
0
 def test_none_sample(self):
     chain = [Block(0, 0.1)]
     diff_calc = diff.MADifficultyCalculator(ma_samples=2,
                                             target_interval_sec=5.0)
     self.assertEqual(diff_calc.calculate_diff(chain), 0.1)