來自|Visa,Andrew Beams、Catherine Gu等

編譯|PANews,Jordan

隨著區塊鏈採用率不斷提高,人們對於卓越用戶體驗和支持實際用例的產品需求也變得越來越大。 Visa已經為客戶(尤其是年輕客戶)提供了便捷的自動扣款和定期自動付款功能,但像以太坊這樣的區塊鏈來說,實現這一功能似乎仍存在難度。以太坊是支付量最大的區塊鍊網絡,對於某些類型的鏈上數字錢包來說,定期從用戶帳戶中自動提取付款仍是一項“大工程”。

對此,Visa提出了賬戶抽象(AccoutAbstraction)概念,並以此探索如何用智能合約來實現自動化可編程支付,以及演示如何為支持自動提取資金的自託管錢包編寫智能合約。

用例場景

考慮一個場景:假設今天是2月25日,愛麗絲要去阿爾卑斯山度假,她將於3月10日返回,但又必須在每個月的5日之前支付房貸、有線電視費和水電費,問題是她在休假前並沒有足夠的錢去付款,不過在3月1日領到薪水時就會有足夠的錢。現在問題來了,愛麗絲如何在不拖欠付款的情況下享受她的假期?

如何把以太坊改造成自動支付系統?讀懂Visa要用“賬戶抽象”做什麼

沒錯,答案就是——自動扣款。事實上,如果愛麗絲有一個銀行賬戶,自動扣款是個非常簡單的過程,只需將其扣款賬戶與Visa卡做個關聯綁定即可。不過在區塊鏈上,執行這樣一個操作並不那麼簡單,然而作為一種新技術,值得我們探索上述場景的區塊鏈智能合約解決方案。

在進入正題之前,讓我們先了解一下以太坊賬戶的概念,目前以太坊網絡上有兩種類型的賬戶:

1、外部擁有賬戶(ExternallyOwnedAccounts),通常被稱為“用戶賬戶”

2、合約賬戶(ContractAccounts),通常被稱為“智能合約”

由私鑰控制的用戶帳戶可以發送交易,而智能合約需要關聯代碼才能執行,但智能合約無法“自己發起交易”,因為交易必須始終源自用戶帳戶並由用戶簽名,這些交易包括:以太坊區塊鏈上用戶賬戶之間的簡單代幣轉移,或是觸發一系列通過智能合約執行許多不同操作、更複雜的交易。

那麼,如何在以太坊區塊鏈上實現自動支付呢?

讓我們回顧一下愛麗絲的狀況。

假設愛麗絲在以太坊區塊鏈上擁有一個用戶賬戶,並且把自己的薪水存放在賬戶裡並用來支付房貸、有線電視費和水電費。今天,為了支付她的賬單,必鬚髮起一項交易,將代幣從她的“外部擁有賬戶”轉移到收款人的用戶帳戶。

詳細點說,愛麗絲的“外部擁有賬戶”有一個只有她本人才知道的密鑰/私鑰,也只有她可以使用這個私鑰生成橢圓曲線數字簽名算法(ECDSA) 簽名,這個前面對於創建有效交易至關重要。然而如果愛麗絲外出度假,誰來生成這個簽名並創建費用支付交易呢?

目前有一種解決方案,就是讓愛麗絲使用託管錢包,即讓第三方控制愛麗絲的私鑰。換句話說,愛麗絲信任第三方來保護她的資金並在她想交易或將資金發送到指定賬戶,這麼做的好處是愛麗絲可以通過資金託管方來生成為預定自動付款創建交易所需的簽名,但壞處是她必須完全信任這個第三方。

那麼,如果愛麗絲因為擔心風險不想使用託管錢包,而是使用自我保管的錢包並安排自動付款,該怎麼做呢?接下來,讓我們引入另一個概念——賬戶抽象(AccountAbstraction)。

什麼是賬戶抽象?

賬戶抽像是一項嘗試通過使用戶賬戶像智能合約一樣運行、並且將用戶賬戶和智能合約合併為一個全新以太坊賬戶類型的提案。未來,賬戶抽象將能使我們為自動支付設計一個簡潔的解決方案,而且在鏈上驗證交易過程中具有更大的靈活性,比如:

1、可通過多重簽名驗證啟用多所有者帳戶。

2、允許使用後量子簽名來驗證交易。

3、允許一個所謂的公共賬戶,任何人都可以通過完全取消簽名驗證來進行交易。

本質上,賬戶抽象允許可編程的有效性來驗證和確認任何區塊鏈交易,基於以太坊協議的交易不必完全基於有效性條件的硬編碼,而是可以基於“定制化”方式將一些條件寫入賬戶智能合約中。

更重要的是,由於可以設置不再包括簽名驗證的有效性規則,賬戶抽象支持自動支付,下面就讓我們來看看如何實現吧。

可委託賬戶——用賬戶抽象來實現以太坊鏈上自動支付功能

Visa的以太坊自動支付解決方案是利用賬戶抽象概念並創建一種新型賬戶合約——可委託賬戶,其主要想法是擴展交易的可編程有效性規則以包括預先批准的允許列表。簡單來說,賬戶抽象可以將用戶賬戶發起的自動支付操作委託給預先批准的自動支付智能合約。

首先,商戶需要部署自動支付智能合約。當擁有可委託賬戶的用戶訪問商家網站時,他們將看到批准自動支付的請求——類似於Visa接受的賬單。此時,用戶可以看到自動支付合約將以用戶的名義執行操作,其中能夠按照用戶需要設定參數,比如每月只能向用戶收費一次、收費不能超過設定的最大金額等。最重要的是,由於這是一個智能合約,用戶可以確信自動支付合約不會以其他方式被執行。

如果用戶同意批准自動支付,錢包會將自動支付合約的地址添加到用戶可委託賬戶的允許合約列表中。

如何把以太坊改造成自動支付系統?讀懂Visa要用“賬戶抽象”做什麼

接下來,商戶通過調用自動支付合約的charge(收費)函數觸發支付。自動支付合約就會觸髮用戶的賬戶發起一筆推送支付交易,這筆交易將是有效交易,因為已被預先添加到允許列表中。

如何把以太坊改造成自動支付系統?讀懂Visa要用“賬戶抽象”做什麼

除了經常性支付之外,該解決方案還可以滿足現實世界裡的其他不同應用,Visa委託賬戶解決方案未來甚至可以擴展到第三方賬戶恢復等服務。

在StarkNet上實施賬戶抽象

如何把以太坊改造成自動支付系統?讀懂Visa要用“賬戶抽象”做什麼

由於以太坊尚不支持賬戶抽象,Visa已經在StarkNet上實施可委託賬戶解決方案,StarkNet 是Layer2區塊鏈,建立在以太坊區塊鏈之上,以提高交易吞吐量以及其他功能以改善底層區塊鏈結算層能力,由加密初創公司StarkWare開發。 StarkNet的賬戶模型就是Visa目前所說的賬戶抽象,抽象賬戶則會檢查交易是否來自給定地址。

對於具體賬戶(concrete accounts),如果有人向用戶賬戶發送代幣,會與代幣合約交互,代幣合約會檢查用於簽署交易以進行此傳輸的身份(密鑰)是否記錄為代幣的當前所有者。對於抽象賬戶(abstract accounts),如果有人向您的賬戶發送代幣,也會與代幣合約交互,代幣合約會檢查用於進行此轉移的身份(合約)是否被記錄為代幣的當前所有者。對於抽象賬戶,重要的是誰(地址)在執行交易,而不是如何(簽名)執行交易。

借助StarkNet賬戶模型,Visa能夠實施可委託賬戶解決方案,從而為自託管錢包啟用自動支付功能。

結論

作為世界上最大的支付網絡之一,Visa正在積極探索智能合約創新解決方案,以推動實現可編程貨幣和支付。

自動支付是現有區塊鏈基礎設施所缺乏的核心功能之一,但利用賬戶抽象的概念可以為自託管錢包提供自動定期支付功能,甚至可以將自動支付之外的其他現實世界應用引入區塊鏈,繼而為傳統支付渠道和新興支付渠道創造更好的用戶體驗。