首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用EIP712的固定性标志

使用EIP712的固定性标志
EN

Stack Overflow用户
提问于 2021-04-15 21:41:06
回答 1查看 276关注 0票数 0

我读了“智能合同”,感到很困惑。当课程告诉我们关于ABI的时候

代码语言:javascript
复制
The Contract Application Binary Interface (ABI) is the standard way to interact with contracts in the Ethereum ecosystem, both from outside the blockchain and for contract-to-contract interaction.
代码语言:javascript
复制
 bytes32 public constant DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");

...

    function delegateBySig(address delegatee, uint nonce, uint expiry, uint8 v, bytes32 r, bytes32 s) public {
        bytes32 domainSeparator = keccak256(abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this)));
        bytes32 structHash = keccak256(abi.encode(DELEGATION_TYPEHASH, delegatee, nonce, expiry));
        bytes32 digest = keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash));
        address signatory = ecrecover(digest, v, r, s);
        require(signatory != address(0), "Comp::delegateBySig: invalid signature");
        require(nonce == nonces[signatory]++, "Comp::delegateBySig: invalid nonce");
        require(now <= expiry, "Comp::delegateBySig: signature expired");
        return _delegate(signatory, delegatee);
    }

我很困惑,ABI如何使用EIP712Domain?(EIP712Domain不是全局变量)是evm的EIP712Domain exist方法,所以它可以理解...还是存在其他合同?

EN

回答 1

Stack Overflow用户

发布于 2021-04-15 22:40:12

在您已经展示的上下文中,EIP712Domain既不是函数也不是公共属性。它也不是一个可靠的全局变量。

它只是在delegateBySig()函数中签名的字符串消息的一部分。

ABI代表“应用程序二进制接口”,它是一个包含encoding参数的规范(根据规范)。以及表示您可能熟悉的函数定义的JSON。

所以这个函数的作用是:

代码语言:javascript
复制
string DOMAIN_TYPEHASH = keccak256("EIP712Domain(string name,uint256 chainId,address verifyingContract)");
abi.encode(DOMAIN_TYPEHASH, keccak256(bytes(name)), getChainId(), address(this))

如果您使用参数keccak256(bytes(name))getChainId()address(this)调用EIP712Domain()函数,它将生成与事务数据相同的二进制输出。

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

https://stackoverflow.com/questions/67109613

复制
相关文章

相似问题

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