예제 #1
0
def test_is_valid_block(last_block, block):
    # last_block = Block.genesis()
    # block = Block.mine_block(last_block, 'test-data')
    Block.is_valid_block(last_block, block)
def test_is_valid_block(last_block, block):
    Block.is_valid_block(last_block, block)
def test_is_valid_block_bad_proof_of_work(last_block, block):
    block.hash = 'fff'

    with pytest.raises(Exception,
                       match='proof of work requirement was not met'):
        Block.is_valid_block(last_block, block)
def test_is_valid_block_bad_block_hash(last_block, block):
    block.hash = '00000000000000000acabb'

    with pytest.raises(Exception, match='The block hash must be correct'):
        Block.is_valid_block(last_block, block)
def last_block():
    return Block.genesis()
예제 #6
0
def test_slowly_mined_block():
    last_block = Block.mine_block(Block.genesis(), 'foo')
    time.sleep(MINE_RATE / SECONDS)
    mined_block = Block.mine_block(last_block, 'bar')

    assert mined_block.difficulty == last_block.difficulty - 1
예제 #7
0
def test_is_valid_block_bad_last_hash(last_block, block):
    block.last_hash = 'evil_last_hash'

    with pytest.raises(Exception, match='last_hash must be correct'):
        Block.is_valid_block(last_block, block)
예제 #8
0
def test_quickly_mine_block():
    last_block = Block.mine_block(Block.genesis(), 'foo')
    mined_block = Block.mine_block(last_block, 'z1234')

    assert last_block.difficulty - mined_block.difficulty == -1
예제 #9
0
def test_is_valid_block():
    last_block = Block.genesis()
    block = Block.mine_block(last_block, 'foo')
    Block.is_valid_block(last_block, block)
예제 #10
0
def block(last_block):
    return Block.mine_block(last_block, 'Test-data')
예제 #11
0
def test_slowly_mine_block():
    last_block = Block.mine_block(Block.genesis(), 'foo')
    sleep(MINE_RATE)
    mined_block = Block.mine_block(last_block, 'z1234')

    assert last_block.difficulty - mined_block.difficulty == +1
 def add_block(self, data):
     prev_block = self.chain[-1]
     self.chain.append(Block.mine_block(prev_block, data))
예제 #13
0
def block(last_block):
    return Block.mine_block(last_block, "test_data")
예제 #14
0
def test_quickly_mined_block():
    last_block = Block.mine_block(Block.genesis(), "foo")
    mined_block = Block.mine_block(last_block, "bar")

    assert mined_block.difficulty == last_block.difficulty + 1
예제 #15
0
def test_is_valid_block_bad_block_hash(last_block, block):
    block.hash = '000000000000000bbababababbabbabaab'

    with pytest.raises(Exception, match="block hash must be correct"):
        Block.is_valid_block(last_block, block)
예제 #16
0
def test_is_valid_bad_proof_of_work(last_block, block):
    block.hash = 'fff'

    with pytest.raises(Exception, match='The proof of work was not right'):
        Block.is_valid_block(last_block, block)
예제 #17
0
def test_genesis():
    genesis = Block.genesis()

    assert isinstance(genesis, Block)
    for key, value in GENESIS_DATA.items():
        getattr(genesis, key) == value
예제 #18
0
 def add_block(self, data):
     block = Block.mine_block(self.chain[-1], data)
     self.chain.append(block)
예제 #19
0
def test_is_valid_block(last_block, block):
    block = Block.mine_block(last_block, 'test_data')
    Block.is_valid_block(last_block, block)
예제 #20
0
 def add_block(self, data):
     last_block = self.chain[-1]
     self.chain.append(Block.mine_block(last_block, data))
예제 #21
0
def test_is_valid_block_jumped_difficulty(last_block, block):
    jumped_difficulty = 10
    block.difficulty = jumped_difficulty
    block.hash = f'{"0" * jumped_difficulty}111abc'
    with pytest.raises(Exception, match='difficulty must only adjust by 1'):
        Block.is_valid_block(last_block, block)
예제 #22
0
 def add_block(self, data):
     self.chain.append(Block.mine_block(self.chain[-1], data))
def test_quickly_mined_block():
    last_block = Block.mine_block(Block.genesis(), 'foo')
    mined_block = Block.mine_block(last_block, 'bar')

    assert mined_block.difficulty == last_block.difficulty + 1
예제 #24
0
def block(last_block):
    return Block.mine_block(last_block, "dummy data")
def block(last_block):
    return Block.mine_block(last_block, 'test_data')
예제 #26
0
def test_is_valid_block(last_block, block):
    # block.last_hash = "We're hacking you" # What would be the case if they tried to inject a branch or block. False hashes
    Block.is_valid_block(last_block, block)
def test_is_valid_block_bad_last_hash(last_block, block):
    block.last_hash = 'changing the last_block.hash'

    # assert last_block.hash == block.last_hash
    with pytest.raises(Exception, match='last_hash must be correct'):
        Block.is_valid_block(last_block, block)
예제 #28
0
def test_is_valid_block_bad_last_hash(last_block, block):
    block.last_hash = "Evil last hash"

    with pytest.raises(Exception, match="last_hash must be correct"):
        Block.is_valid_block(last_block, block)
예제 #29
0
 def __init__(self):
     self.chain = [Block.genesis()]
예제 #30
0
 def add_block(self, data):
     # instantiate block at the top of blockchain method
     self.chain.append(Block.mine_block(self.chain[-1], data))