首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以用EIP712存储一个“真正私有”的变量吗?

我可以用EIP712存储一个“真正私有”的变量吗?
EN

Ethereum用户
提问于 2021-10-11 20:12:42
回答 1查看 99关注 0票数 0

我遇到过开放zepplin中的程712实用程序。我还找到了一份使用草案版本这里的合同。我已经修改了他们的合同,使之更接近我想做的事情。

我很好奇在链上存储一些东西的散列,然后再把它暴露出来。下面的示例代码可以在任何情况下被操作吗?即在用户发现"myParam“之前检索它?

代码语言:javascript
复制
contract MyContract is EIP712 {
    
    mapping(address => bytes32) public digests;    
    mapping (address => uint256) nonces;

    function storeDigest(address owner,
        uint256 myParam,
        uint256 deadline) {
       digests[msg.sender] = _hashTypedDataV4(keccak256(abi.encode(
            keccak256("MyFunction(address owner,uint256 myParam,uint256 nonce,uint256 deadline)"),
            owner,
            myParam,
            nonces[owner],
            deadline
        )));
    }

    function revealMyParam(
        bytes memory signature,
        address owner,
        uint256 myParam,
        uint256 deadline
    ) external {
        bytes32 digest = _hashTypedDataV4(keccak256(abi.encode(
            keccak256("MyFunction(address owner,uint256 myParam,uint256 nonce,uint256 deadline)"),
            owner,
            myParam,
            nonces[owner],
            deadline
        )));
        
        require(digests[msg.sender] == digest, "different digest")
        address signer = ECDSA.recover(digests[msg.sender], signature);
        require(signer == owner, "MyFunction: invalid signature");
        require(signer != address(0), "ECDSA: invalid signature");

        require(block.timestamp < deadline, "MyFunction: signed transaction expired");
        nonces[owner]++;

        _doSomethingWithMyParamSinceItIsNowRevealed(owner, myParam);
    }
}
EN

回答 1

Ethereum用户

回答已采纳

发布于 2021-10-12 07:06:53

我会说是的,在揭发之前可以揭发。契约本身是很好的,但是当用户调用storeDigest时,myParam属性在内存池/稍后的以太扫描中是公开可见的。因此,如果攻击者能够找到存储的tx,他/她就可以看到普通的param值。

也许您想要创建散列链,并将其传递给合同。然后,在显示阶段,发送普通值,并让契约将原始哈希(从存储阶段)与来自纯值的计算哈希进行比较。您可以在提交-显示模式下找到更多关于此主题的信息,该模式用于链上投票。

票数 2
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/111419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档