如何轉移靈魂綁定代幣並在OpenSea上售賣?

SBT即使代幣本身不可轉移,也會伴隨其地址許可權本身的轉移,而動搖靈魂綁定的意義。

原文標題:《一種轉移並在Os拍賣不可轉移靈魂綁定代幣的方法》

撰文:十四君

5月初乙太坊創始人Vitalik ; 的靈魂代幣SBT論文發表之後,迅速成為整個Web3領域最熱門的話題之一,不久前Vitalik發佈新書時便使用了此SBT,任何人均可捐贈任意金額,並獲得一個靈魂綁定的NFT,但是新的Token標準不僅是缺乏市場上對靈魂綁定的可靠應用,更是其靈魂代幣本身還存在強制轉移的漏洞。

對於合約科技的老手而言,只需合約錢包/A3S協定兩個關鍵字即可理解覈心內容但如果對實現細節有興趣,且同本文一同探索吧。

1、靈魂綁定代幣是什麼

一直以來,自由主義都是Web3或者說區塊鏈世界發展蓬勃發展的基石,但是蠻橫的自由主義催生的是只有駭客才是web2向web3轉型的最成功的群體。 所以如果說真正有價值的Web3,需要怎樣的意識形態呢?

Vitalik認為,Web3需要以負責任的自由主義作為新的信念基礎。 所以SBT其本質就是將信譽機制引入到了Web3當中,使得數字世界能够對帳戶的信譽進行評估和度量,在去中心化世界裏建立聲譽、責任和社會資本。

而實現的管道,就是以錢包地址的目標之下,發行不可以轉移的Token,並稱之為Soulbond(靈魂綁定)。

1.1、SBT的應用場景案例

SBT,Soulbond Token(靈魂綁定通證),顧名思義,就是綁定於用戶帳戶或錢包的Token,一旦生成則不可交易。 可用來代表承諾、資格、從屬關係等,類似於履歷表作為相應社會關係的一種證明。

在Vitalik的論文中,把綁定SBT的相關帳戶定義為Soul(靈魂)。

舉例來說,乙太坊基金會所綁定的帳戶(Soul)可以向參加其開發者大會的人發放相應的SBT,某大學所綁定的帳戶(Soul)也可以向其畢業生發放代表學位證書的SBT,等等。

而本文的樣例目標,就是由Vitalik發佈新書時候,將會附帶贈送給捐贈地址的SBT。

1.2、SBT的最小實現

其實無論ERC20還是ERC721都是通過合約標準中的transfer和SafeTransferFrom來執行轉移功能,囙此對SBT的最小實現,只需要删除掉transfer的程式碼,讓其只有Mint時可以修改用戶餘額錶_ balances即可。

2、轉移SBT的漏洞是什麼?

2.1、錢包分類概述

其實很簡單,能够鏈上發起交易的是錢包,而錢包分單簽和多簽。

單簽錢包,我們要往區塊鏈上發送一筆轉帳交易,需要去用錢包去做一個簽名,我們自己簽好名把交易發送出去,交易執行成功轉帳就成功,這就是典型的單簽錢包,也是我們平時使用最多的錢包。

而多簽錢包,顧名思義,就是需要多個人去簽名執行某個操作的錢包。 使用多簽錢包進行轉帳,往往需要>;= 1個人去簽名發送交易之後,轉帳操作才真正完成。 使用多簽錢包時,我們可以指定m/n的簽名模式,就是n個人裡面有m個人簽名即可完成操作。

多簽錢包,常常應用為需求强安全性的個人,以及管理公共資產的投資機構、交易所以及項目方。 核心價值是資金安全與資金共同管理

2.2、多簽錢包如何mintNFT?

在乙太坊中,多簽錢包往往是一個智慧合約,而合約要實現多簽管理,有兩大種路徑分別對應

  • Ownbit多簽錢包使用持簽授權法:用你的私密金鑰對相應的花費(金額、目標地址等等)進行簽名,並給出簽名結果

  • Gnosis多簽錢包使用交易授權法:用你的私密金鑰發送一筆乙太坊交易,去調用某個特定介面,並給予特定參數;

咱們用Gnosis的早期版本實現V1版做例子

2.3、Gnosis多簽執行任意交易的流程

整體分成4個階段:初始化階段→提案階段→投票階段→執行階段

  • 初始化階段:定義若干管理員_ owners,後續的交易僅這些地址可調用

  • 提案階段:任意管理員之一通過submitTransaction方法提交交易,得到一個交易號transactionId,提交的交易需要攜帶destination,value,data這三個參數

  • 投票階段:其餘管理員通過提交ETH ; 交易來投票,調用合約的confirmTransaction方法

  • 執行階段:當confirm的人數達到最低要求,executeTransaction的內部邏輯將被觸發,

最終合約通過call遠程調用執行任意操作

2.4、為何可以執行任意操作?

因為其中destination是目標地址,value是金額,data是交易附帶的參數。

在一筆乙太坊交易中,Data欄位是交易的附帶資訊,有明確的規則控制,比如下圖是最常規的ERC20轉帳交易,其在Etherscan解析後的展示邏輯如下,而其實交易解析前的原文是

0xa9059cbb0000000000000000000000003baf10686c60680d491f49ea3f720a1831c3391e00000000000000000000000000000000000000000000f92e1b81422bfc3a0000

其解析的原理是,依據前8比特對應合約的ABI檔案可以得知對應的函數名與參數列表,後續每64比特按不同參數類型做不同轉換做解析

所以,對於提案,只需要清晰的規定,目標地址、金額、交易附帶參數,即可執行任意操作

2.5、小結-合約錢包模式優缺對比

這裡概述了覈心的GnosisV1版本實現邏輯,其實後來他已經逐步改版成類Ownbit的形式,採用持簽驗簽的模式了,主要原因是

用發送交易代表提案和投票,有著簡單易懂規避了複雜簽名計算,且全程線上實現任何時候追溯都有據可查等優勢,但是缺點也很顯著

  • 一次提案需要多人交易成本高昂

  • 最後投票者gas費更高,即成本不平衡

  • 再交易實際邏輯在data欄位中,難以閱讀理解

所以用戶利弊成本權衡,最終放弃了交易確認法,讓他走向持簽驗簽的模式。

3、SBT如何在OpenSea上售賣?

至此已經非常顯著了,只需要用合約錢包無論是Gnosis還是Ownbit的方法,都可以發起捐贈然後領走NFT,那轉移不了Token本身,連著錢包本身一起賣不就可以了麼。

當然,獲得不是終點,我們的目標是還要有合適的方法來拍賣他! 從而為SBT實現定價

這裡就需要使用一種特殊的協定名為:A3S

A3S協定架構圖

他是構建下一代地址標準的多鏈協定。 為地址提供了流動性和可綜合性,A3S使地址能够安全地交易、租賃和託管。 囙此,他是地址成為可以轉移和定價的鏈上基礎設施。

用戶從智慧合約地址工廠中鑄造一個Commander NFT,它就會自動部署相應的智慧合約。 智慧合約的所有者指向相應的NFT持有者。 合約可以接收任何類型的鏈上資產,並且只允許所有者發送資產,就是將這個智慧合約將作為用戶與任何區塊鏈dApp互動的載體。

誰持有這個NFT,即是拿著這個智慧合約的遙控器,如果NFT發生了轉移,那麼智慧合約的管理權也發送了轉移。

通過此原理最終,我們可以看到出現了一些基於此協定的在Opensea上的掛單,當然沒啥價格,畢竟錢包地址的交易還不具備較大規模的社會共識。

總結

本文概述了SBT的理念基石,高度認可Web3需要以負責任的自由主義作為新的信念基礎,但是新的概念需要周全的考慮智慧合約這樣的黑暗森林中發出的狙擊槍,通過概述鏈上合約錢包Gnosis和Ownbit的實現原理,並結合較為前沿的A3S錢包地址轉移協定,系統的說明SBT即使Token本身不可轉移, 也會伴隨其地址許可權本身的轉移,而動搖靈魂綁定的意義。

最後當我收集本文資料的時候,也發現原來已經有類似思路的研究者5660.eth,將此種SBT合約錢包轉移給到Vitalik的錢包地址,或許可以提醒V神以及其乙太坊基金會能够對後續EIp圍繞SBT的提案,做更週期的優化,比如檢測授予對象是否為合約地址等等。