2018-07-23 ETH 账户抽象

2018-07-24  本文已影响35人  logz2020

背景

Eth包含两类账户, 外部账户和合约账户。
外部账户由私钥控制, 合约账户由合约代码控制。

对于外部账户,发送的每一笔交易,需要包含特定的椭圆曲线(secp256k1)签名,以及nonce,来预防重放攻击。

以太坊的账户抽象,是指统一两种账户类型,以后只有合约一种账户类型。
因此,交易中的需要验证的签名和nonce,不再成为协议的一部分(hard-coded in tx process)。而是由账户通过合约代码自己来保障交易的安全。

The goal of “account abstraction”, is to reduce the number of account types from 2 (EOA and contract) to 1 (just contract), and to move functionality such as signature verification, gas payment and replay protection out of the core protocol and into the EVM.

比如ECDSA 验证合约,提供和当前以太网络类似的交易验证工作。

通过账户抽象,下面是一些可以创新的方向,

技术规范

EIP 101

  1. Account 只包含code和storage。
  2. Ether 不再存储在Account中。Ether是一个合约token,合约部署在0地址中。
  3. msg.value 不再存在。
  4. Tx 的结构
    现在的Tx,包含9个部分。通过RLP编码后传输。
    [nonce, gasprice, startgas, to, value, data, v, r, s]

未来的Tx,包含4个部分。
[to, startgas, data, code]
startgas - max amount of gas allowed for tx

[expire, ref_block, ref_block_prefix, delay_sec...]

进展

EIP101, in discussion

https://ethresear.ch/t/tradeoffs-in-account-abstraction-proposals/263
EIP101方案,代价比较大,包括开发/迁移/额外存储/兼容等等。
几种折中方案,在讨论。
Lazy full abstration/ Remove nonce abstraction/ 等9种方案。

V主推 gasprice + PANIC , 缺点是牺牲gas payment的抽象,从而无法支持ERC20作为gas费用。

时间点, 君士坦丁堡硬分叉
TBD.

上一篇下一篇

猜你喜欢

热点阅读