作者:霧月,極客Web3
導(dǎo)語:雖然AA錢包在很大程度上降低了用戶使用門檻,初步實(shí)現(xiàn)了gas代付與web2賬戶登錄,但隱私登錄-隱私交易、全鏈統(tǒng)一AA賬戶、Intent專用架構(gòu)等與mass adoption相關(guān)的設(shè)計(jì),仍然要在AA的基礎(chǔ)上添磚加瓦。
我們雖然能見到很多UX優(yōu)化方案,如ZenGo等MPC錢包或Argent這種智能合約wallet,有效的降低了用戶門檻,但他們只解決了上述問題中的一部分,而沒有全方位覆蓋產(chǎn)品易用性問題。
顯然,目前大多數(shù)AA錢包或者類似產(chǎn)品,還無法支持Web3大規(guī)模采用。另一方面,從生態(tài)角度考量,開發(fā)者側(cè)是非常重要的層面,僅僅在產(chǎn)品上對(duì)普通用戶有吸引力,但在開發(fā)者側(cè)影響力不夠,很難形成規(guī)模。越來越多開發(fā)體驗(yàn)優(yōu)化方案的涌現(xiàn),已經(jīng)說明開發(fā)者端對(duì)于產(chǎn)品生態(tài)的重要意義。
我們將以Particle Network為例,詳解目前Web3產(chǎn)品在體驗(yàn)上的問題,以及如何針對(duì)性地設(shè)計(jì)一套綜合的技術(shù)解決方案,而這種綜合解決方案可能正是mass adoption的必要條件。同時(shí),Particle的BtoBtoC商業(yè)策略,恰好也是許多項(xiàng)目方需要學(xué)習(xí)借鑒的思路。
Particle Network以解決使用門檻為核心,用B2B2C的產(chǎn)品構(gòu)建與生態(tài)發(fā)展思路,針對(duì)Web3大規(guī)模采用提出了一整套解決方案。其核心模塊為三個(gè):
zkWaaS,基于零知識(shí)證明的WaaS(Wallet-as-a-service)服務(wù)。開發(fā)者可以基于Particle提供的SDK,快速將智能錢包模塊集成至自己的dApp內(nèi)。該錢包是基于賬戶抽象的keyless智能合約錢包,不但可以實(shí)現(xiàn)gas代付等AA基本場(chǎng)景,還可以提供Web2式的OAuth隱私登錄方式以及隱私交易等功能。
Particle Chain——專門用于Particle的全鏈賬戶抽象(Omnichain Account Abstraction)方案,致力于解決智能合約錢包的跨鏈部署、維護(hù)和調(diào)用問題。配套的還有通用gas代幣(Unified Gas Token),用以解決多鏈交易時(shí)需要用到不同gas幣種的麻煩。
Intent Fusion Protocol,包含了簡(jiǎn)潔的DSL(Domain Specific Language)語言,Intent框架,Intent Solver Network等,用以構(gòu)建一套基于意圖(Intent)的Web3交互框架,用戶直接聲明自己的交易意圖而非去執(zhí)行每一條具體的操作,使用戶擺脫繁瑣的路徑思考,并減少對(duì)復(fù)雜底層基礎(chǔ)設(shè)施的理解。
zkWaaS——結(jié)合ZK的智能錢包即服務(wù)
在錢包側(cè),Particle主要以WaaS(智能合約錢包即服務(wù))的形式來為dApp開發(fā)者提供SDK,以期讓開發(fā)者接入其完整的Web3 mass adoption框架。這種BtoBtoC方案從商業(yè)和生態(tài)角度看有幾個(gè)優(yōu)點(diǎn):
單純的C端錢包競(jìng)爭(zhēng)已經(jīng)白熱化,功能也較為雷同,C端錢包不再是一個(gè)好的切入點(diǎn)。另一方面,dApp開發(fā)者也開始越來越傾向于在dApp內(nèi)內(nèi)置錢包,以避免用戶連接錢包、交易時(shí)需要到切換錢包等步驟的體驗(yàn)損耗,并提供更多可自定義的功能。
C端的獲客成本高昂,但B端卻不同。WaaS的用戶增長(zhǎng)主要源于集成了SDK的dApp。只要做好BD與開發(fā)者關(guān)系,就能“城市包圍農(nóng)村”式的擴(kuò)展整個(gè)生態(tài)。
目前C端錢包主要專注于金融與資產(chǎn),我們很難說這就是未來Web3的主要場(chǎng)景。真正要實(shí)現(xiàn)Web3的大規(guī)模采用,必須有項(xiàng)目將更基礎(chǔ)的特性——用戶身份(賬戶)和用戶操作(發(fā)送事務(wù)/交易),抽象出來作為一個(gè)底層服務(wù),將上層更豐富的場(chǎng)景交由dApp。
從以往的dApp連接入口,大家可以觀察到錢包和dApp之間較為緊密的綁定關(guān)系。在dApp端盡可能提高錢包的市占率,是非常關(guān)鍵的。這一點(diǎn)對(duì)B2B2C模式而言是近水樓臺(tái)先得月的。
構(gòu)建一套能滿足用戶需求,降低使用門檻,易于開發(fā)者接入的WaaS則是方案成功的另一個(gè)支柱。Particle的zkWaaS有三個(gè)核心:
1.隱私登錄。在合約錢包上利用傳統(tǒng)Web2的登錄方式,如Twitter、Google、微信登錄等OAuth驗(yàn)證方式,讓用戶完全擺脫私鑰管理的桎梏,以最熟悉和簡(jiǎn)單的方式進(jìn)入Web3。同時(shí)利用零知識(shí)證明將用戶身份隱藏。
2.隱私交易。通過智能匿蹤地址(Smart Stealth Address)機(jī)制實(shí)現(xiàn)點(diǎn)對(duì)點(diǎn)的通用性隱私轉(zhuǎn)賬,并使用ERC4337的Paymaster讓匿蹤地址可以免gas地使用資產(chǎn)(gas贊助商)。
3.完備的AA錢包功能。Particle的錢包模塊完全符合ERC-4337的基本要求,包含Bundler、EntryPoint、Paymaster、Smart Wallet Account 等ERC-4337工作流中的重要部分,一站式的滿足DAPP或用戶對(duì)智能錢包的功能需求。
基于web2賬戶的鏈上錢包隱私登錄
Particle的隱私登錄方案利用了JWT(Json Web Token),可以在合約內(nèi)進(jìn)行Web2身份認(rèn)證和操作錢包。
JWT是一種廣泛運(yùn)用于傳統(tǒng)互聯(lián)網(wǎng)中的,由服務(wù)端向客戶端發(fā)放的身份證明,客戶端在每次與服務(wù)端交互時(shí)憑借此證明來進(jìn)行身份認(rèn)證。
(圖源:FlutterFlow Docs)
在JWT中有幾個(gè)關(guān)鍵字段,是合約驗(yàn)證身份的基礎(chǔ):
·"iss" (Issuer) ,表明JWT的發(fā)行者,也即服務(wù)端,如Google、Twitter等。
·"aud" (Audience) ,表明該JWT所使用的服務(wù)或應(yīng)用,如在登錄Medium時(shí)使用Twitter登錄,那么Twitter發(fā)行JWT時(shí)此字段會(huì)寫明該JWT適用于Medium。
·"sub" (Subject) ,指的就是接受該JWT的用戶身份,一般用UID標(biāo)示。
在實(shí)踐中,iss和sub在絕大多數(shù)情況下都不會(huì)變,否則會(huì)帶來內(nèi)部系統(tǒng)和外部引用的巨大混亂。因此,上述這些參數(shù)可用于合約確定用戶身份,這樣用戶完全無需生成和保管私鑰。
與JWT相對(duì)應(yīng)的概念是JWK(JSON Web Key),它是服務(wù)端的一組密鑰對(duì)。服務(wù)端在發(fā)放JWT的時(shí)候會(huì)用JWK的私鑰簽名,而對(duì)應(yīng)的公鑰是公開的,用于給其他服務(wù)驗(yàn)證其簽名。
比如,在Medium使用Twitter登錄,Medium會(huì)對(duì)JWT用Google公開的JWK公鑰進(jìn)行驗(yàn)證,以確認(rèn)該JWT的真實(shí)性——確實(shí)是由Google發(fā)放的。合約對(duì)JWT的校驗(yàn)也會(huì)使用到JWK。
Particle的隱私登錄方案流程如下圖所示:
其中具體的ZK電路我們這里先略過。只列流程中的一些重點(diǎn):
·驗(yàn)證登錄信息的Verifier合約,只會(huì)感知到一個(gè)與用戶身份-JWT相關(guān)的ZK Proof,以及一個(gè)無傷大雅的eph_pk,無法直接獲知對(duì)應(yīng)的錢包公鑰或JWT信息,這樣就可以保護(hù)用戶隱私,外界無法從鏈上數(shù)據(jù)獲知登錄者身份。
·eph_pk(臨時(shí)密鑰對(duì))是一種在單個(gè)會(huì)話中使用的密鑰對(duì),并不是錢包的公私鑰,用戶也無需關(guān)心。
·這套系統(tǒng)也可以做鏈下驗(yàn)證,可用于使用了MPC等邏輯的合約錢包。
由于這是真正基于傳統(tǒng)登錄方式的合約驗(yàn)證方案,用戶還可以指定其他社交聯(lián)系人作為自己的守護(hù)者,以備Web2賬戶被銷戶等非常極端的情況。
DH秘鑰交換方法基礎(chǔ)上的隱私交易
在談到Particle的隱私交易方案前,我們先考察一下如何在現(xiàn)有的EVM體系內(nèi),實(shí)現(xiàn)對(duì)接收者的隱私交易,也即隱藏接收者的地址。
我們假設(shè)Alice為發(fā)送者,Bob為接收者,雙方擁有一些共同的知識(shí):
1.Bob生成根消費(fèi)私鑰(root spending key) m
以及匿蹤元地址(stealth meta-address) M
。M可以被m生成,二者關(guān)系為M = G * m
,代表了一種密碼學(xué)運(yùn)算上的數(shù)學(xué)關(guān)系。
2.Alice通過任意一種方式,獲取到Bob的匿蹤元地址M
。
3.Alice生成一個(gè)臨時(shí)私鑰r
,并使用算法generate_address(r,M)
生成一個(gè)匿蹤地址A
。該地址即為Bob準(zhǔn)備的專屬匿蹤地址,Bob在收到資產(chǎn)后擁有對(duì)該地址的掌控權(quán)。
4.Alice再根據(jù)臨時(shí)私鑰r
生成一個(gè)臨時(shí)公鑰R
,并將其發(fā)送至臨時(shí)公鑰記錄合約(或者是任何雙方認(rèn)可的位置,不管什么渠道只要Bob可以獲取即可)。
5.Bob需要定期掃描臨時(shí)公鑰記錄合約,記錄下更新的每一條臨時(shí)公鑰。由于臨時(shí)公鑰合約是公開的,包含了其他人發(fā)送的隱私交易相關(guān)密鑰,Bob還不知道哪一條是Alice發(fā)給自己看的。
6.Bob掃描每一條更新的記錄,執(zhí)行generate_address(R,m)
來計(jì)算匿蹤地址。如果該地址里有資產(chǎn),那就是Alice生成并授權(quán)給Bob去控制的,否則就和Bob無關(guān)。
7.Bob執(zhí)行generate_spending_key(R,m)
來生成該匿蹤地址的消費(fèi)私鑰,也即p = m + hash(A)
,然后可以控制Alice生成的那個(gè)地址A
。
上面的流程描述其實(shí)簡(jiǎn)化了很多復(fù)雜的數(shù)學(xué)運(yùn)算,整個(gè)情報(bào)交換過程,就好比兩個(gè)特務(wù)在公用的公告板上,寫下一些只有彼此才能破解的暗語,暗語的生成與解密方法雖然是公開的,但只有兩個(gè)特務(wù)知道中間必需的重要數(shù)據(jù),所以外界就算知道暗語的生成與解密方法,還是無法順利解密。
這個(gè)交換流程與著名的Diffie–Hellman秘鑰交換方法大致相同,在不透露各自的秘密(Bob的根消費(fèi)私鑰m和Alice的臨時(shí)私鑰r)的情況下,雙方都可以計(jì)算出共享秘密——上文中的匿蹤地址A。如果對(duì)DH交換不了解可以用下面的染色圖進(jìn)行比喻式的理解。
相比DH需要增加的一步是,在各自算出共享秘密-匿蹤地址A后,并不能用它當(dāng)做私鑰,因?yàn)锳lice也知道A。需要構(gòu)造消費(fèi)私鑰p = m + hash(A)
,而把A當(dāng)做一個(gè)公鑰。由于前面提到,根消費(fèi)私鑰m
只有Bob知道,這樣Bob就成為了該匿蹤地址的唯一控制者。
顯然,這種方式下的隱私轉(zhuǎn)賬,接收者每接收一筆新的交易,該交易的資金都會(huì)流入一個(gè)全新的EOA地址。接收者可以用持有的根消費(fèi)私鑰,去撞運(yùn)氣的方式分別計(jì)算每個(gè)地址的消費(fèi)私鑰,看哪一個(gè)真的與他有關(guān)。
但現(xiàn)在還有一個(gè)問題,這個(gè)新生成的匿蹤地址一開始還是EOA賬戶,上面可能沒有ETH等gas代幣,Bob沒有辦法直接發(fā)起交易,需要用到智能合約錢包的Paymaster功能進(jìn)行g(shù)as代付,才能實(shí)現(xiàn)隱私交易。所以還需要對(duì)接收地址進(jìn)行一定改動(dòng):
用合約部署時(shí)CREATE2
方法中的地址計(jì)算方法,附帶相應(yīng)參數(shù)(將匿蹤地址A設(shè)為該合約的Owner等),計(jì)算一個(gè)Counterfactual地址。這是一個(gè)計(jì)算出的合約地址,但尚未部署合約,暫時(shí)還是EOA。
Alice會(huì)直接向該Counterfactual地址轉(zhuǎn)賬。Bob想使用時(shí),就直接在該地址上進(jìn)行合約錢包創(chuàng)建,這樣就可以調(diào)用gas代付服務(wù)(這一步也可以由Alice或Particle網(wǎng)絡(luò)代勞前置完成)。
我們可以把上述的Counterfactual地址稱為智能匿蹤地址。Bob通過下列流程來匿名地使用該智能匿蹤地址下的資產(chǎn):
·通過自己的任意地址向Paymaster充值,Paymaster會(huì)返還一個(gè)資金證明(ZK化)。
·憑借AA機(jī)制,用其他任意地址(可以沒有余額)向Bundler節(jié)點(diǎn)發(fā)送UserOperation,調(diào)用上述匿蹤地址下的資產(chǎn)。Bob只要用一個(gè)新地址向Paymaster提供資金證明,Paymaster支付Bundler打包交易的費(fèi)用。
這其實(shí)是類似Tornado Cash的工作原理,通過資金證明(ZK化)既可以證明梅克爾樹上的葉子節(jié)點(diǎn)集合中曾經(jīng)有一筆充值,花費(fèi)時(shí)任何人卻無法得知具體消耗了哪個(gè)葉子節(jié)點(diǎn)上的資金,以此切斷消費(fèi)者和充值者之間的聯(lián)系。
綜上,Particle結(jié)合了AA與匿蹤地址,巧妙地通過了智能匿蹤錢包的形式實(shí)現(xiàn)了隱私轉(zhuǎn)賬。
Particle Chain & 全鏈賬戶抽象
Particle Chain是一條為全鏈賬戶抽象(Omnichain Account Abstraction)而設(shè)計(jì)的POS鏈。著眼現(xiàn)狀和未來,都不可能是單鏈的天下,在多鏈工況下提升用戶體驗(yàn)是至關(guān)重要的。
目前ERC4337賬戶抽象系統(tǒng)在多鏈情況下會(huì)出現(xiàn)一定問題:
·同一個(gè)用戶在不同鏈的地址有可能不統(tǒng)一,具體取決于合約的設(shè)計(jì)。
·用戶管理不同鏈上的合約錢包,需要手動(dòng)在多個(gè)鏈之間重復(fù)管理操作,如更換管理員等。更糟糕的情況,如果在一條鏈上更新了管理員權(quán)限隨后丟棄了舊的管理員驗(yàn)證方式,那么在其他鏈上將無法變更,也無法使用錢包。
·使用不同的鏈,需要擁有各個(gè)鏈的gas幣,或者在各個(gè)鏈的Paymaster上有預(yù)存資金。對(duì)開發(fā)者而言也有一定麻煩,如果他想讓用戶在一定條件下零成本使用或?qū)崿F(xiàn)其他功能,也需要在各個(gè)鏈上部署自己自定義的Paymaster,并在其中預(yù)存資金。
Particle Chain的全鏈賬戶抽象針對(duì)上述痛點(diǎn):
·在Particle Chain上建立AA錢包。
·通過LayerZero等AMB(Arbitrary Message Bridge)跨鏈協(xié)議,將各種操作,如新建、升級(jí)、更改權(quán)限等同步至其他鏈上。可以理解為其他鏈上的錢包都是該鏈上錢包的引用,只需要修改主體即可同步至所有錢包。
·通過一致參數(shù)的Deployer Contract來保證各鏈上錢包地址相同。
·各個(gè)鏈之間錢包也可以通過AMB互相調(diào)用,并非都要從Particle Chain發(fā)起。
·發(fā)行Unified Gas Token,全鏈gas幣。由Paymaster機(jī)制實(shí)現(xiàn)ERC20充當(dāng)gas費(fèi)。即使在某條鏈上沒有g(shù)as或Paymaster預(yù)存資金,也可以在符合條件的鏈上發(fā)起跨鏈交易消耗Unified Gas Token。
除了上述用途外,Particle Chain未來也許還可以用于:
·zkWaaS的Proof和Salt生成的去中心化網(wǎng)絡(luò)。
·各鏈Bundler的激勵(lì)層,幫助Bundler實(shí)現(xiàn)更好的去中心化。
·作為Intent Fusion Protocol的Solver網(wǎng)絡(luò)。
在Particle Chain的敘事中,Unified Gas Token是整個(gè)生態(tài)中核心的價(jià)值抓手:
·支付Gas費(fèi)用這一功能,是crypto中反復(fù)驗(yàn)證過的強(qiáng)烈需求和價(jià)值捕獲邏輯。
·Unified Gas Token從既有的公鏈生態(tài)中又抽象出gas層這一概念,而這種抽象,離開了Particle Chain與錢包是無法實(shí)現(xiàn)的,所以Unified Gas Token是Particle整個(gè)生態(tài)的一種價(jià)值的提現(xiàn)。有了gas層之后,各鏈的用戶交互與增長(zhǎng)以及本幣價(jià)值,和Unified Gas Token是互惠共生的關(guān)系。
·統(tǒng)一gas也是實(shí)現(xiàn)Chainless的推動(dòng)因素之一。對(duì)用戶而言,使用單一的幣種支付高度簡(jiǎn)化了使用流程和理解成本。日后即使在多鏈場(chǎng)景下,用戶很可能是無感的,并不需要關(guān)心底層基礎(chǔ)設(shè)施的運(yùn)行情況。就像目前在Web2上我們和服務(wù)器交互并不關(guān)心機(jī)房位于哪個(gè)地區(qū),什么配置,使用什么語言和數(shù)據(jù)庫(kù)工作一樣。
·dApp導(dǎo)入的用戶直接為Unified Gas Token賦能,使用場(chǎng)景非常豐富。
通常,我們?cè)谑褂酶鞣NdApp的時(shí)候需要不斷思考使用路徑:
·在一個(gè)dex上若沒有某種流動(dòng)性,就需要查看另一個(gè)dex。
·對(duì)同品類的dApp不知應(yīng)該選擇哪個(gè)能更好地完成交易或事務(wù)。
·Approve然后才能使用很多功能,approve又是什么?
·錢包除塵,多個(gè)小額代幣轉(zhuǎn)換為某一種幣,過程繁瑣。
·為完成最終目標(biāo)需要?dú)v經(jīng)多個(gè)應(yīng)用。諸如高杠桿借貸:先swap,質(zhì)押,借貸,得到的Token再swap,質(zhì)押,借貸……
上述內(nèi)容只是我們?cè)谀壳暗腄eFi世界的冰山一角,而在dApp越來越多樣化的Web3大規(guī)模采用時(shí)代,交互復(fù)雜度可能遠(yuǎn)超想象。
所以,用意圖Intent代替具體的操作步驟,對(duì)用戶而言體驗(yàn)是天差地別的。意圖較之操作,就像聲明式編程之于函數(shù)式編程。聲明式的語句往往給人簡(jiǎn)單明了的感覺,只需要聲明我要做什么即可而不關(guān)心其后細(xì)節(jié),而這需要底層有層層封裝的各種函數(shù)式編程語句。
那么使用Intent也不例外,也需要有一系列設(shè)施的支持。我們可以從整個(gè)流程來看一下:
1.用戶提交將自己的意圖用某種方式描述,如自然語言等以RFS(Request For Solver)形式提交給Solver網(wǎng)絡(luò)。Solver是意圖的解釋器,目前常見的Solver有1inch等聚合器,可以為用戶尋找最優(yōu)的dex,但相比我們的愿景而言它們并不夠通用和強(qiáng)大。
2.多個(gè)Solver給出回應(yīng),他們之間是競(jìng)爭(zhēng)關(guān)系。這些回應(yīng)由Intent DSL語言編寫,再由客戶端解析為易于用戶理解的形式。這些回應(yīng)包含Input Constraints和Output Constraints,界定了輸入和輸出的界限。用戶也可以自行指定約束。一個(gè)簡(jiǎn)單的例子來理解:在使用Swap的時(shí)候會(huì)提示用戶Swap后最少可獲得的數(shù)量,這就是一種約束。用戶自行在多個(gè)Solver的回應(yīng)中進(jìn)行選擇。
3.對(duì)Intent簽名。
4.Solver指定特定的執(zhí)行合約Executor,并將Intent遞交響應(yīng)合約Reactor。
5.Reactor從用戶賬戶中搜集所需要的輸入(如某種資產(chǎn)),向Executor遞交Intent,Executor再調(diào)用相關(guān)邏輯合約后,將該交易的輸出返回給Reactor。Reactor檢查約束,若無誤則將輸出返給用戶。
我們可以把這個(gè)過程想象為你將需求講給ChatGPT聽,不論多復(fù)雜的需求,他都可以給你生成一個(gè)最終的結(jié)果,只要你對(duì)結(jié)果滿意就可以直接使用,而無需關(guān)心其中的過程。
總結(jié)
Particle Network提出了一種全方位解決方案:通過zkWaaS、Particle Chain、Intent Fusion Protocol三位一體式的綜合形態(tài),實(shí)現(xiàn)了Web2 OAuth隱私登錄,隱私交易,全鏈賬戶抽象和意圖交易范式。每一個(gè)feature都將覆蓋Web3使用的一部分痛點(diǎn),這些進(jìn)步與優(yōu)化將成為日后Web3大規(guī)模采用的產(chǎn)品和技術(shù)基礎(chǔ)。在生態(tài)和商業(yè)模式上,采用B2B2C范式,以WaaS為入口帶動(dòng)整個(gè)產(chǎn)品鏈條規(guī)模化標(biāo)準(zhǔn)化,與dApp開發(fā)者共建生態(tài),共同為用戶打造一個(gè)低門檻高體驗(yàn)的Web3世界。
當(dāng)然,不同的項(xiàng)目對(duì)Web3 mass adoption的實(shí)現(xiàn)路徑理解是不一樣的。除了對(duì)具體項(xiàng)目的審視,我們希望通過不同的方案引出對(duì)Web3目前面臨的onboard friction的理解,對(duì)用戶需求和痛點(diǎn)的思考,以及對(duì)整個(gè)生態(tài)共同串聯(lián)和發(fā)展的考量。