pragma solidity ^0.4.24; contract GetEthBlock { mapping (uint => hash) blockHash; mapping (bytes32 => bytes32) blockStateRoot; function markBlock() public { // block.stateRoot? blockHash[block.number] = block.hash; } function submitBlockData(uint256 blockNumber, bytes blockData) public { bytes32 targetHash = blockHash[blockNumber]; require(sha3(blockData) == targetHash); blockStateRoot[targetHash] = parseEthBlock(blockData).stateRoot; } function getStateRootByNumber(uint256 blockNumber) public returns (bytes32) { return blockStateRoot[blockHash[blockNumber]]; } function getStateRootByHash(bytes32 blockhash) public returns (bytes32) { return blockStateRoot[blockhash]; } }
0.4.24