背景
Eth包含兩類賬戶, 外部賬戶和合約賬戶。
外部賬戶由私鑰控制, 合約賬戶由合約代碼控制。
對于外部賬戶,發(fā)送的每一筆交易,需要包含特定的橢圓曲線(secp256k1)簽名,以及nonce,來預(yù)防重放攻擊。
以太坊的賬戶抽象,是指統(tǒng)一兩種賬戶類型,以后只有合約一種賬戶類型。
因此,交易中的需要驗證的簽名和nonce,不再成為協(xié)議的一部分(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 驗證合約,提供和當前以太網(wǎng)絡(luò)類似的交易驗證工作。
通過賬戶抽象,下面是一些可以創(chuàng)新的方向,
- Bitcoin-sytle mutisig, 賬戶可以同時驗證多個簽名,而不是每次存儲一個簽名到內(nèi)存。
- 其他的橢圓曲線。ed25519。
- 其他的簽名算法。環(huán)簽名/門限簽名。
- 其他的Nonce驗證邏輯。
- UTXO-based token
- 交易手續(xù)費的支付方式。對于dapp而言,相對于交易發(fā)送者支付fee,合約賬戶支付fee 是更合理的模式。通常情況,dapp的用戶并沒有eth。Dapp合約可以將付費邏輯編碼,礦工通過靜態(tài)的代碼分析,從而確保他們會獲得交易手續(xù)費。
技術(shù)規(guī)范
EIP 101
- Account 只包含code和storage。
- Ether 不再存儲在Account中。Ether是一個合約token,合約部署在0地址中。
- msg.value 不再存在。
- Tx 的結(jié)構(gòu)
現(xiàn)在的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方案,代價比較大,包括開發(fā)/遷移/額外存儲/兼容等等。
幾種折中方案,在討論。
Lazy full abstration/ Remove nonce abstraction/ 等9種方案。
V主推 gasprice + PANIC , 缺點是犧牲gas payment的抽象,從而無法支持ERC20作為gas費用。
時間點, 君士坦丁堡硬分叉
TBD.