2018-07-23 ETH 账户抽象

背景

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 验证合约,提供和当前以太网络类似的交易验证工作。

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

  • Bitcoin-sytle mutisig, 账户可以同时验证多个签名,而不是每次存储一个签名到内存。
  • 其他的椭圆曲线。ed25519。
  • 其他的签名算法。环签名/门限签名。
  • 其他的Nonce验证逻辑。
  • UTXO-based token
  • 交易手续费的支付方式。对于dapp而言,相对于交易发送者支付fee,合约账户支付fee 是更合理的模式。通常情况,dapp的用户并没有eth。Dapp合约可以将付费逻辑编码,矿工通过静态的代码分析,从而确保他们会获得交易手续费。

技术规范

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.

你可能感兴趣的:(2018-07-23 ETH 账户抽象)