当我更改编译器版本 0.8 然后通过错误时,Solidity 相关问题

Solidity related question when i change compiler version 0.8 then through error

通过使用 solidity 编译器 0.8 通过不允许从“地址”到“uint256”的显式类型转换。

for (uint idx = 0; idx < v.length; idx++){
            address signer = ecrecover(signedHash, v[idx], r[idx], s[idx]);
            require(admins[signer]);
            require(uint256(signer) > uint256(lastVoter));
            lastVoter = signer;
            emit NewCheckpointVote(_sectionIndex, _hash, v[idx], r[idx], s[idx]);

            // Sufficient signatures present, update latest checkpoint.
            if (idx+1 >= threshold){
                hash = _hash;
                height = block.number;
                sectionIndex = _sectionIndex;
                return true;
            }
        }
        // We shouldn't wind up here, reverting un-emits the events
        revert();
    }

使用最新版本的 solidity 编译器,您必须将地址显式转换为所需类型的 20 字节长值。在您的情况下,您可以使用 uint256(uint160(someAddress));