Exemplo n.º 1
0
 def validate_seal(cls, header: BlockHeader) -> None:
     """
     Validate the seal on the given header.
     """
     check_pow(
         header.block_number, header.mining_hash,
         header.mix_hash, header.nonce, header.difficulty)
Exemplo n.º 2
0
 def check():
     header = random.choice(ropsten_epoch_headers)
     check_pow(
         header.block_number,
         header.mining_hash,
         header.mix_hash,
         header.nonce,
         header.difficulty,
     )
Exemplo n.º 3
0
def test_chain_builder_enable_pow_mining():
    chain = build(
        MiningChain,
        frontier_at(0),
        enable_pow_mining(),
        genesis(),
    )
    block = chain.mine_block()
    check_pow(
        block.number,
        block.header.mining_hash,
        block.header.mix_hash,
        block.header.nonce,
        block.header.difficulty,
    )
Exemplo n.º 4
0
def test_chain_builder_disable_pow_check():
    chain = build(
        MiningChain,
        frontier_at(0),
        disable_pow_check(),
        genesis(),
    )
    block = chain.mine_block()
    with pytest.raises(ValidationError, match='mix hash mismatch'):
        check_pow(
            block.number,
            block.header.mining_hash,
            block.header.mix_hash,
            block.header.nonce,
            block.header.difficulty,
        )
def test_mining_tools_proof_of_work_mining(base_vm_class):
    vm_class = type(base_vm_class.__name__, (POWMiningMixin, base_vm_class),
                    {})

    class ChainClass(MiningChain):
        vm_configuration = ((0, vm_class), )

    chain = genesis(ChainClass)

    block = chain.mine_block()
    check_pow(
        block.number,
        block.header.mining_hash,
        block.header.mix_hash,
        block.header.nonce,
        block.header.difficulty,
    )
Exemplo n.º 6
0
    async def _handle_new_block(self, sender: SessionAPI,
                                block: NewBlockPayload) -> None:
        header = block.block.header
        sender_peer_str = str(
            ETHProxyPeer.from_session(sender, self._event_bus,
                                      TO_NETWORKING_BROADCAST_CONFIG))

        # Add peer to tracker if we've seen this block before
        if header.hash in self._peer_block_tracker:
            if sender_peer_str not in self._peer_block_tracker[header.hash]:
                self._peer_block_tracker[header.hash].append(sender_peer_str)
        else:
            # Verify the validity of block, add to tracker and broadcast to eligible peers
            try:
                check_pow(header.block_number, header.mining_hash,
                          header.mix_hash, header.nonce, header.difficulty)
            except ValidationError:
                self.logger.info("Received invalid block from peer: %s",
                                 sender_peer_str)
            else:
                self._peer_block_tracker[header.hash] = [sender_peer_str]
                await self._broadcast_newly_seen_block(header)
Exemplo n.º 7
0
Arquivo: base.py Projeto: veox/py-evm
 def validate_seal(cls, header: BlockHeaderAPI) -> None:
     check_pow(header.block_number, header.mining_hash, header.mix_hash,
               header.nonce, header.difficulty)