(圖片來源:https://zipmex.com/learn/what-is-smart-contract/)
2022.12馬克介紹了加密貨幣錢包的定義與運作方式,並以運作機制分成冷錢包、熱錢包,介紹各自的需求跟特點。一般來說加密貨幣錢包透過公鑰(錢包地址)跟私鑰(資產的所有權跟控制權的代碼)接收跟傳送代幣,但隨著科技發展出現了新的錢包類型─智能合約錢包(Smart Contract Wallet),以「智能合約」運作錢包,捨棄了私鑰的功能。智能合約錢包的運作方式是什麼呢?它的安全性跟未來發展如何呢?一起看看這篇文章吧!
為何需要智能合約錢包?
在事前閱讀的文章中提到目前的加密貨幣虛擬錢包的類型,依運作機制分成線下儲存私鑰的冷錢包跟線上儲存私鑰的熱錢包,冷錢包又分成硬體錢包跟紙錢包,熱錢包也因載體區分成桌面錢包、手機錢包跟網頁錢包等。每個錢包的運作方式皆透過公鑰跟私鑰接收跟傳送代幣,但根據Chainalysis 的研究報告顯示,截止 2021 年,約有20%流通的比特幣,因為使用者忘記或搞丟私鑰而遺失,而助記詞跟私鑰的洩漏使資產被盜在安全性也是一大問題。
目前若要登入帳號已發展許多方便且多元的驗證方式,像是綁定其他帳戶、傳送pin 碼到手機或是以生物驗證登入等,這也不禁讓人好奇,為何使用虛擬錢包時還是只能透過輸入私鑰方式驗證呢?難道不能將傳統驗證方式應用到web3.0呢?
(事前閱讀:冷錢包熱錢包怎麼選? - by Mark Lin - 馬克解讀金融科技 | MarkReadFintech)
先談什麼是智能合約
智能合約將雙方合約以程式碼在區塊鏈上運行,儲存在共同資料庫裡,資訊透明且無法被更改。智能合約的交易運作在以太坊虛擬機中,當協議中的條件被滿足時,無須第三者即可觸發交易,自動強制執行且完全去中心化。
智能合約包含三個要素:自治、自足、去中心化。自治指合約啟動後不需要任何人為干預;自足是指智能合約可以自主控制計算範圍,像是調配合約雙方的資金;去中心化則是可以透過分散的節點自動執行,不用以中心化伺服器運作。
智能合約優點
1、完全強制執行,不須第三方介入,資訊公開透明且無法被更改。省略第三方介入,省時省錢。
2、可一次進行多項交易
3、合約中區塊之間的前後紀錄相連,較難被入侵,安全性較高。
智能合約缺點
1、制定合約時要足夠嚴謹,否則容易使執行結果跟用戶預期不同,也會給駭客以正常程序轉移資金的機會。(如2016年The DAO事件)
2、法律層面上較難畫線,如上述The DAO事件中駭客鑽漏洞以正常流程轉移資金,資產損失是否可被法律約束?
3、智能合約使用在區塊鏈上為轉移加密貨幣,需承擔加密貨幣的交易風險。
外部帳戶(EOA)和合約帳戶(CA)的區別
以太坊有兩種帳戶,外部帳戶(external owned account)即是平常我們使用的錢包帳戶,本身有程式碼,用戶以私鑰控制,獨立於以太坊虛擬機外;合約帳戶(contract account)是智能合約,程式碼由以太坊虛擬機運作,用戶不用管理私鑰。外部帳戶是大多數用戶與以太坊互動的方式,這時Metamask 或其他錢包服務就會當這些帳戶交互的窗口。
(參考文章:詳解近期熱議的「帳戶抽象」:Devcon後的新風口? | Anue鉅亨 - 鏈文)
智能合約錢包與MPC 錢包
以太坊的問題在於智能合約帳戶無法主動發起交易,只能仰賴外部帳戶改變合約,並由外部帳戶支付以太幣。目前合法性驗證為確認「事務發起人和以太幣資產所有人(即外部帳戶的擁有者)相同」,方法是用戶通過錢包簽署交易,而簽名驗證需跟某個共鑰對應的私鑰相同,因此用戶必須掌握私鑰。
EOA 沒有程式碼邏輯,若要使用更複雜的代碼邏輯如多簽等功能,無法在外部帳戶上進行。如果要實現多簽等功能,目前市面上有的解法有兩個─智能合約錢包和MPC錢包。
※補充
單簽:錢包只有一組私鑰,任何人只要持有相對應私鑰即可控制資金。管理方便但安全風險較大。
多簽:允許多個用戶共同控管一個錢包的資產。可想像有個保險箱擁有兩個鑰匙跟兩個鎖,若要打開這個保險箱必須兩個人同時提供鑰匙開鎖,單憑一把鑰匙無法打開。必須有超過半數管理者同意才可動用資金,多人管理較不便但能減少資產遭竊的風險。
(一)智能合約錢包(SCW,Smart Contract Wallet)
智能錢包是基於智能合約CA作為地址的錢包,EOA錢包則是由公鑰變換結果當作地址。由於智能錢包具備內部邏輯,可實現很多EOA沒有的功能,像是gas代付、提供用戶管理資金、web 3.0 登入跟與dApp 交互的界面。而一般區塊鏈錢包會需要自行管理私鑰(可理解為密碼),一但丟失便無法取回資產。智能合約錢包捨棄私鑰,透過智能合約可做到像是帳戶凍結、引入社群私鑰回覆、權限管理、離線授權、帳戶復原、限額交易等更安全的功能,但在智能合約的定義目前還不一致,加上成本高昂,相比MPC錢包,在普及度上還需要更多時間。
(二)MPC錢包(Multi-party computation wallet)
MPC 錢包是一種需要多個參與者才能授權交易的加密錢包。 之所以稱為「多方計算(multi-party computation )」,是因為生成錢包密鑰和創建數字簽名的過程,是由多個分佈計算協議的單位所執行。
延伸說明:
MPC 錢包v.s.多簽錢包(multisig wallet)
兩種錢包的相似之處在於都需要多方批准後才能進行交易。儘管如此兩種錢包在運作上還是有以下不同:
智能合約錢包的優缺點
(一)智能合約錢包優點
1、多重簽名安全:執行交易需多個簽名,安全性較高。
2、帳戶凍結:當遺失或被盜時可凍結帳戶或停用受信任的設備。
3、可恢復像是以簽名或監護人等方式將資金回收到智能錢包。
4、高級身分認證,可將錢包連結到其他錢包或應用程式。
5、白名單/黑名單,可設置地址,允許或永遠阻止交易。
6、鏈上問責制,可透過鏈上千名在錯誤發生時確認誰參與交易。
7、可擴展跟開源。智能合約可藉由程式語言組合,錢包人員可創建模組供用戶選擇使用。在維護上也可以解決漏洞跟添加新功能。
(二)智能合約錢包缺點
1、費用更高,因鏈上交易且需要驗證多個簽名。
2、恢復成本更高,雖然可回復,但須支付鏈上費用。
3、與不可升級的合約不兼容。
4、錢包依賴程式碼,可能會有漏洞而遭受攻擊。
5、目前暫時缺乏支持,許多交易所不支持以智能合約錢包的轉帳。
帳戶抽象與ERC-4337
(一)帳戶抽象(AA,Account Abstraction)
帳戶抽象指簡化使用帳戶的能力,讓用戶減少了解整個帳戶運作方式的程度,藉此有機會捨棄助記詞。就像我們開一台車或使用一個Gmail帳戶,我們只要知道怎麼駕駛、或是怎麼發送郵件即可,不用知道他們是如何運作的。
帳戶抽象的實際應用包含:
1、提案允許用戶使用自定義簽名方案。像是可以使用iOS 和Android 設備的內置方案,將每部手機變成硬體錢包。
2、允許在以太坊上為多個簽名者提供原生支援。兩個或更多用戶現在可以批准單筆交易,提高安全性。
3、可社交恢復。若用戶丟失密鑰,可透過讓他的朋友和家人為他恢復帳戶。
(二)ERC-4337
ERC-4337 只是帳戶抽象的其中一個提案,但為什麼一講到AA或SCW 就會提到它呢?ERC-4337 的特別之處在於避免從共識層更改,而是轉向SCW 用戶層的方案。
ERC-4337 定義一些 SCW 應該出現的接口,讓目前差異很大的SCW 可以統一用戶交互介面,跟共用一些開放基礎設施,自建自己需要的SCW 方案。整體而言ERC-4337 有助於 SCW 跟其他生態互動的兼容性。
ERC-4337的優勢跟其他智能合約錢包相比,
每個智能合約錢包不需要單獨運營一個中繼器(relayer)
有通用的模板可減少打造SCW的成本
交易的固定成本得以被攤銷,最終降低用戶的交易成本
智能合約錢包普及
可以看出以太坊對帳戶抽象的目標是讓更多人使用智能合約錢包,並消除對EOA 的依賴。目前市面上已經有不少的智能合約錢包,但因為這些智能合約的邏輯是自定義的,還缺乏統一的行業標準,且有合約漏洞還有跟其他合約兼等問題,加上成本昂貴,目前還沒被廣泛使用。
目前SCW 最大問題是合約漏洞的安全性問題,從長遠來看MPC 和 SCW 不是競爭關係而是互補關係,MPC 的安全性較高,而SCW 可帶來更多功能跟彈性。隨著區塊鏈的發展,智能合約錢包可能是用戶們的最終願景,而MPC 錢包在短期內可能是可行性較高的中繼方案。目前ERC-4337 是最可行的帳戶抽象方案,或許在之後SCW 也能發展出更相同規模跟兼容的運作方式。