You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解码以太坊区块链中智能合约存储的原始文本数据

SimpleStorage合约交易参数解码方案

待解析合约代码

contract Simplestorage {
    string data;

    function store(string memory _data) public {
        data = _data;
    }

    function retrieve() public view returns (string memory) {
        return data;
    }
}

待解析交易数据

AttributeDict({'hash': HexBytes('0x81bd6e7c3a02100cc79b96f05197f4cfab26e1dcce43b1ef3f9d6b34c494a55b'), 
'nonce': 35, 
'blockHash':HexBytes('0x0b66c58c5158cc03135ce8c866923f3110ffa1a0a17a14f1003fe123824a76ef'), 'blockNumber': 36, 
'transactionIndex': 0, 
'from': '0xe67E47A0B42d20643c723E31D0dBA0cE64e5c071', 
'to': '0xdef7b161ef19A9d79d94B8244750cdddcbA41206', 
'value': 0, 
'gas': 43468, 
'gasPrice': 20000000000, 
'input': '0x131a06800000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001a686920686f772061726520796f7520686f772061726520796f75000000000000', 
'v': 2710, 
'r': HexBytes('0xd1acd5be3dad14eb0ee9e5078aa7dde1e494e31723e12e4765f475ffeddec431'), 
's': HexBytes('0x4ba1b8e2778fc2d350d866bd2876d7fdedeefebe5fd5452ac352600c4ed6f1e9')})

核心结论

解码交易中存储的原始文本完全不需要私钥。EVM链上的交易输入数据是公开的,所有合约调用参数都按照ABI规范明文编码在交易的input字段中,直接按规则解析即可。私钥仅用于交易签名阶段,交易上链后参数解析不需要任何签名相关的密钥信息。交易结构里的v/r/s字段仅用于校验交易发送者身份,和参数解码无关。

解码规则与步骤

EVM合约调用的input字段遵循ABI编码规范,针对本次调用store(string)的场景,解析步骤如下:

  • 第一步:提取前4字节(8个十六进制字符)为函数选择器,值为0x131a0680,对应函数签名store(string)的Keccak256哈希前4字节,确认调用的是目标存储函数。
  • 第二步:函数选择器之后的32字节为动态参数偏移量,本次值为0x20(十进制32),代表字符串参数的起始位置在选择器之后偏移32字节处。
  • 第三步:从偏移位置开始读取32字节为字符串长度,本次值为0x1a(十进制26),代表存储的文本共26字节。
  • 第四步:从长度字段之后读取对应26字节的内容,按UTF-8/ASCII编码转码即为原始文本,末尾补位的0值直接丢弃即可。

本次交易解析结果

提取到的26字节内容段为686920686f772061726520796f7520686f772061726520796f75,转码后得到原始存储文本:

hi how are you how are you

内容的提问来源于stack exchange,提问作者Naresh Muthumula

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:03:26