Visa 提出了帳戶抽象(AccoutAbstraction)概念,並以此探索如何用智能合約來實現自動化可編程支付。本文源自《Visa introduces automatic payments for crypto wallets》,由 PANews 編譯、整理。
(前情提要:Visa 發表《自託管錢包的自動循環支付》:利用帳戶抽象、提議使用 StarkNet)
隨著區塊鏈採用率不斷提高,人們對於卓越用戶體驗和支援實際用例的產品需求也變得越來越大。Visa 已經為客戶(尤其是年輕客戶)提供了便捷的自動扣款和定期自動付款功能,但像以太坊這樣的區塊鏈來說,實現這一功能似乎仍存在難度。以太坊是支付量最大的區塊鏈網路,對於某些類型的鏈上數字錢包來說,定期從用戶帳戶中自動提取付款仍是一項「大工程」。
對此,Visa 提出了帳戶抽象(Accout Abstraction)概念,並以此探索如何用智能合約來實現自動化可編程支付,以及演示如何為支援自動提取資金的自託管錢包編寫智能合約。
用例場景
考慮一個場景:假設今天是 2 月 25 日,愛麗絲要去阿爾卑斯山度假,她將於 3 月 10 日回傳,但又必須在每個月的 5 日之前支付房貸、有線電視費和水電費,問題是她在休假前並沒有足夠的錢去付款,不過在 3 月 1 日領到薪水時就會有足夠的錢。現在問題來了,愛麗絲如何在不拖欠付款的情況下享受她的假期?
沒錯,答案就是 —— 自動扣款。事實上,如果愛麗絲有一個銀行帳戶,自動扣款是個非常簡單的進程,只需將其扣款帳戶與 Visa 卡做個關聯綁定即可。不過在區塊鏈上,執行這樣一個操作並不那麼簡單,然而作為一種新技術,值得我們探索上述場景的區塊鏈智能合約解決方案。
在進入正題之前,讓我們先了解一下以太坊帳戶的概念,目前以太坊網路上有兩種類型的帳戶:
- 外部擁有帳戶(ExternallyOwnedAccounts),通常被稱為「用戶帳戶」
- 合約帳戶(ContractAccounts),通常被稱為「智能合約」
由私鑰控制的用戶帳戶可以發送交易,而智能合約需要關聯代碼才能執行,但智能合約無法「自己發起交易」,因為交易必須始終源自用戶帳戶並由用戶簽名,這些交易包括:以太坊區塊鏈上用戶帳戶之間的簡單代幣轉移,或是觸發一系列透過智能合約執行許多不同操作、更複雜的交易。
那麼,如何在以太坊區塊鏈上實現自動支付呢?
讓我們回顧一下愛麗絲的狀況。
假設愛麗絲在以太坊區塊鏈上擁有一個用戶帳戶,並且把自己的薪水存放在帳戶裡並用來支付房貸、有線電視費和水電費。今天,為了支付她的帳單,必需髮起一項交易,將代幣從她的 「外部擁有帳戶」轉移到收款人的用戶帳戶。
詳細點說,愛麗絲的「外部擁有帳戶」有一個只有她本人才知道的密鑰 / 私鑰,也只有她可以使用這個私鑰生成橢圓曲線數字簽名算法 (ECDSA) 簽名,這個前面對於創建有效交易至關重要。然而如果愛麗絲外出度假,誰來生成這個簽名並創建費用支付交易呢?
目前有一種解決方案,就是讓愛麗絲使用託管錢包,即讓第三方控制愛麗絲的私鑰。換句話說,愛麗絲信任第三方來保護她的資金並在她想交易或將資金發送到指定帳戶,這麼做的好處是愛麗絲可以透過資金託管方來生成為預定自動付款創建交易所需的簽名,但壞處是她必須完全信任這個第三方。
那麼,如果愛麗絲因為擔心風險不想使用託管錢包,而是使用自我保管的錢包並安排自動付款,該怎麼做呢?接下來,讓我們引入另一個概念 —— 帳戶抽象(AccountAbstraction)。
什麼是帳戶抽象?
帳戶抽像是一項嘗試透過使用戶帳戶像智能合約一樣運行、並且將用戶帳戶和智能合約合併為一個全新以太坊帳戶類型的提案。未來,帳戶抽象將能使我們為自動支付設計一個簡潔的解決方案,而且在鏈上驗證交易進程中具有更大的靈活性,比如:
- 可透過多重簽名驗證啟用多所有者帳戶。
- 允許使用後量子簽名來驗證交易。
- 允許一個所謂的公共帳戶,任何人都可以透過完全取消簽名驗證來進行交易。
本質上,帳戶抽象允許可編程的有效性來驗證和確認任何區塊鏈交易,基於以太坊協議的交易不必完全基於有效性條件的硬編碼,而是可以基於 「定制化」方式將一些條件寫入帳戶智能合約中。
更重要的是,由於可以設置不再包括簽名驗證的有效性規則,帳戶抽象支援自動支付,下面就讓我們來看看如何實現吧。
可委託帳戶 —— 用帳戶抽象來實現以太坊鏈上自動支付功能
Visa 的以太坊自動支付解決方案是利用帳戶抽象概念並創建一種新型帳戶合約 —— 可委託帳戶,其主要想法是擴展交易的可編程有效性規則以包括預先批准的允許列表。簡單來說,帳戶抽象可以將用戶帳戶發起的自動支付操作委託給預先批准的自動支付智能合約。
首先,商戶需要部署自動支付智能合約。當擁有可委託帳戶的用戶訪問商家網站時,他們將看到批准自動支付的請求 —— 類似於 Visa 接受的帳單。此時,用戶可以看到自動支付合約將以用戶的名義執行操作,其中能夠按照用戶需要設定參數,比如每月只能向用戶收費一次、收費不能超過設定的最大金額等。最重要的是,由於這是一個智能合約,用戶可以確信自動支付合約不會以其他方式被執行。
如果用戶同意批准自動支付,錢包會將自動支付合約的地址添加到用戶可委託帳戶的允許合約列表中。
接下來,商戶透過調用自動支付合約的 charge(收費)函數觸發支付。自動支付合約就會觸髮用戶的帳戶發起一筆推送支付交易,這筆交易將是有效交易,因為已被預先添加到允許列表中。
除了經常性支付之外,該解決方案還可以滿足現實世界裡的其他不同應用,Visa 委託帳戶解決方案未來甚至可以擴展到第三方帳戶恢復等服務。
在 StarkNet 上實施帳戶抽象
由於以太坊尚不支援帳戶抽象,Visa 已經在 StarkNet 上實施可委託帳戶解決方案,StarkNet 是 Layer2 區塊鏈,建立在以太坊區塊鏈之上,以提高交易吞吐量以及其他功能以改善底層區塊鏈結算層能力,由加密新創公司 StarkWare 開發。StarkNet 的帳戶模型就是 Visa 目前所說的帳戶抽象,抽象帳戶則會檢查交易是否來自給定地址。
對於具體帳戶(concrete accounts),如果有人向用戶帳戶發送代幣,會與代幣合約交互,代幣合約會檢查用於簽署交易以進行此傳輸的身份(密鑰)是否記錄為代幣的當前所有者。對於抽象帳戶(abstract accounts),如果有人向您的帳戶發送代幣,也會與代幣合約交互,代幣合約會檢查用於進行此轉移的身份(合約)是否被記錄為代幣的當前所有者。對於抽象帳戶,重要的是誰(地址)在執行交易,而不是如何(簽名)執行交易。
借助 StarkNet 帳戶模型,Visa 能夠實施可委託帳戶解決方案,從而為自託管錢包啟用自動支付功能。
結論
作為世界上最大的支付網路之一,Visa 正在積極探索智能合約創新解決方案,以推動實現可編程貨幣和支付。
自動支付是現有區塊鏈基礎設施所缺乏的核心功能之一,但利用帳戶抽象的概念可以為自託管錢包提供自動定期支付功能,甚至可以將自動支付之外的其他現實世界應用引入區塊鏈,繼而為傳統支付渠道和新興支付渠道創造更好的用戶體驗。
📍相關報導📍
科普 | 以太坊EIP-4337「帳戶抽象(AA)」是什麼?如何改善以太坊UX?
V神「對以太坊技術不再興奮」,更看好落地應用:加密支付、身份生態、DAO未來
科普|智能合約錢包什麼時候能普及?一文看懂 ERC-4337