美文网首页
GetContractCode

GetContractCode

作者: 小吖么小一郎 | 来源:发表于2020-11-24 09:57 被阅读0次
    pragma solidity 0.6.2;
    
    /*
        获取已部署的合约地址代码
    */
    contract GetContractCode{
    
       function getCode(address _addr) public view returns(bytes memory o_code){
            assembly {
                // 获取代码大小,这需要汇编语言
                let size := extcodesize(_addr)
                // 分配输出字节数组 – 这也可以不用汇编语言来实现
                // 通过使用 o_code = new bytes(size)
                o_code := mload(0x40)
                // 包括补位在内新的“memory end”
                mstore(0x40, add(o_code, and(add(add(size, 0x20), 0x1f), not(0x1f))))
                // 把长度保存到内存中
                mstore(o_code, size)
                // 实际获取代码,这需要汇编语言
                extcodecopy(_addr, add(o_code, 0x20), 0, size)
            }
        }
    }

    相关文章

      网友评论

          本文标题:GetContractCode

          本文链接:https://www.haomeiwen.com/subject/itvkiktx.html