0x01 賬戶抽象(AA)與智能合約錢包有啥不同?
最核心的差別在于是否可以直接從智能合約發(fā)送交易。對 “直接”這個詞的理解很關(guān)鍵。
賬戶抽象的目標(biāo)是讓智能合約賬戶和 EOA 賬戶一樣作為交易的發(fā)起方。在賬戶抽象實現(xiàn)前,這樣是不可能的。目前智能合約錢包的實現(xiàn)基本上都需要依賴一個 EOA 賬戶:
- 當(dāng)我們創(chuàng)建一個智能合約錢包時,仍然需要先創(chuàng)建一個 EOA 賬戶,通過 EOA 賬戶調(diào)用錢包智能合約。
- 為了達(dá)到屏蔽 EOA 賬戶的效果,就不能讓 EOA 賬戶支付 gas 費(fèi),這樣就依賴元交易(meta-transaction) 來達(dá)到這樣的效果,而元交易往往依賴一個比較中心化的 relay 服務(wù)來轉(zhuǎn)發(fā)交易。
而有了賬戶抽象,我們通過智能合約發(fā)送交易的過程就像現(xiàn)在 EOA 賬戶直接喚起 metamask 發(fā)送交易的過程類似,不再需要 meta-transaction 那一套了。
0x02 為啥使用賬戶抽象就不需要 EOA 賬戶了呢
- 首先,我們要明白:私鑰≠EOA。雖然每個私鑰都有一個相應(yīng)的 EOA,但私鑰本身就是一個可以簽名的密鑰。典型的賬戶抽象錢包會像 MetaMask 一樣存儲和保護(hù)私鑰,并使用私鑰為智能合約賬戶簽署交易。這個私鑰對應(yīng)的 EOA,其存在的意義僅用作驗證簽名的公鑰。
- 其次,由于賬戶抽象使交易能夠通過智能合約進(jìn)行驗證,驗證邏輯可以是任意的,技術(shù)上是有可能不用私鑰而用其它的方式對交易進(jìn)行驗證的。
0x03 MPC 與賬戶抽象的關(guān)系
使用 MPC,你實際上擁有一個“虛擬私鑰”,而無需將其存儲在某個地方,這比必須寫下 12 個單詞的助記詞的有了很大的改進(jìn)。
賬戶抽象更多是關(guān)于當(dāng)你發(fā)送交易時會發(fā)生什么—誰支付 gas?哪些代幣用于支付 gas?誰簽署交易?所有這些都可以用賬戶抽象給抽象掉,而帶來更多樣的實現(xiàn)和更豐富的體驗。
所以,可以簡單理解為:
- MPC 提升了私鑰管理體驗。
- 賬戶抽象提升交易體驗。