织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

技术层面解读 EIP-3074 将如何提升以太坊用户体验(2)

时间:2021-07-13 10:28来源:未知 作者:admin 点击:
AUTH ( 0xf6 )—— 基于签名和 commit (提交)提出授权的外部账户。共有 4 个输入参数: commit 以及签名的 yParity 、 r 和 s 。 AUTHCALL ( 0xf7 ) —— 代替已

AUTH0xf6)—— 基于签名和 commit (提交)提出授权的外部账户。共有 4 个输入参数:commit 以及签名的 yParityrs

  • AUTHCALL0xf7) —— 代替已授权的外部账户发送调用(事务) 。共有 8 个输入参数:gasaddrvaluevalueExtargsOffsetargsLengthretOffsetretLength。与现有的 CALL 操作码相似。

  • 确认外部账户的授权需要来自该外部账户的签名消息。调用 AUTH 的智能合约可以通过消息签名复原出签名者,然后将其设置成 authorized EVM 环境变量。这样一来,该智能合约每次调用 AUTHCALL 时,调用者都会被设置成 authorized 地址。当被调用的智能合约调用 CALLER(例如,通过 Solidity 的 msg.sender)时,将由已授权的外部账户的地址而非调用者地址(智能合约)执行调用。

    发送一个或多个事务的基本流程如下图所示:

    科普 | EIP-3074:提升以太坊用户体验- 上图显示了 EIP 3074 的基本流程,其中调用者合约发送多个事务 -

    1. 外部账户签署授权消息;

    2. 外部账户或其他 gas 支付方将事务数据和授权消息发送给调用者合约;

    3. 调用者合约使用 AUTH 操作码执行授权,并使用 AUTHCALL 操作码发送事务。

    将事务发送到合约的是谁并不重要,只要外部账户的签名是有效的即可。因此,其他人(或账户)也可以发送事务。

    请注意,目前无法使用 EIP 3074 通过外部账户发送 ETH。这样做会极大地改变当前的一些重要假设,例如,检查事务是否有效。调用者需要使用自己的 ETH 余额来发送 ETH。但是,你可以将 ETH 发送给调用者,并由调用者代为发送。目前,AUTHCALL 操作码所包含的 valueExt 字段必须被硬编码成 0。将来,如果找到适当的解决方案,我们可以更改这个字段,允许调用者外部账户发送 ETH。

    授权消息和 commit

    为了执行授权,外部账户必须签署特定格式的消息:
    ``` *

    0x03 || || (责任编辑:admin)

    织梦二维码生成器
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线----------------------------
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    评价:
    表情:
    用户名: 验证码:点击我更换图片
    栏目列表
    推荐内容