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)
def check(): header = random.choice(ropsten_epoch_headers) check_pow( header.block_number, header.mining_hash, header.mix_hash, header.nonce, header.difficulty, )
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, )
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, )
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)
def validate_seal(cls, header: BlockHeaderAPI) -> None: check_pow(header.block_number, header.mining_hash, header.mix_hash, header.nonce, header.difficulty)