Revision history and IPFS entry, back to latest
邦卡
IPFS What is this

Content Hash

NFT 邦卡說: 區塊鏈的互動合約類型

邦卡
·
·

每次使用加密貨幣錢包在簽署合約的時候,會看到各種不同的訊息,常常有看沒有懂,也不確定自己簽署的東西到底安不安全,今天就來跟大家介紹在區塊鏈闖蕩可能會遇到的互動合約類型。


區塊鏈還在發展早期的證明

目前加密貨幣錢包的很多功能與介面都還相當的粗糙,就跟智慧型手機發展的早期一樣,在安裝很多 APP 時,甚至連這些 APP 要求存取了智慧型手機的甚麼權限都不知道,在現今行動裝置 APP 這個高度發展的領域,以及資安、隱私權意識的崛起下,所有安裝的 APP 一定都會先告知使用者它會存取甚麼權限,如果覺得要求的權限不合理,使用者可以直接拒絕使用該 APP。

相信隨著區塊鏈的持續發展,接下來可以期待在簽署合約前顯示的畫面會有更人性化的介面與訊息告知使用者簽署這個合約後會給出的權限是甚麼,但在那個階段來臨前,只能先好好的充實自己的知識庫,來了解究竟有哪幾種不同的互動合約類型。


互動合約的類型

在區塊鏈上,只要做了會導致鏈上的數據有變化的行為,就需要支付手續費給礦工,請礦工幫忙完成這些鏈上的行為,因此在鑄造、購買 NFT ,甚至是與一些 DAPP 互動都需要讓加密貨幣錢包簽署一些互動合約才能繼續想要執行的動作,在如今詐騙及陷阱如此猖狂的時代,你知道你簽署合約的內容與功能是甚麼嗎?

其實我跟很多人一樣,不是技術背景出身的,因此很多內容常常是有看沒有懂,除了做好「加密貨幣錢包安全分級」來分散風險之外,我們還可以在互動合約的類型上來辨別究竟這些合約向我們的加密貨幣錢包要求甚麼樣的權限。

延伸閱讀: 加密貨幣錢包管理及安全分級的重要性及方法                             

目前依照互動合約要求的權限以及執行的動作的不同,大致可以將其分成以下 4 大類型:

  1. 簽署合約(Signature request contract)
  2. 轉移合約(Transfer contract)
  3. 授權合約(Approve contract)
  4. 完全授權合約(Set Approval for all contract)

簽署合約(Signature request contract)

這種通常是在連結網站、DAPP 時會第一個跳出來的合約類型,用途是確認簽署人是不是加密貨幣錢包持有人,通常資料不需要上鏈,因此簽署此類合約通常不需要消耗手續費。

這種類型的合約在畫面上都會顯示「Signature request」,如果你使用的是中文版的 Metamask 則會顯示「簽署合約」,依使用的方法不同又可以再切分成 3 種不同類型的 Signature request 合約:

第 1 種 Personal Sign

這種方式最常見於連結網站,可以清楚的看到要簽署的內容。

Personal Sign

第 2 種 EIP712 Sign

這是更為安全的簽署合約形式,加入了詳細的資訊要求,讓簽名者可以知道在對誰、對那個地址、簽署甚麼樣的內容。

EIP712 Sign


第 3 種 eth_sign

這是早期的簽名方式,也是可能會有風險的簽名方式,因此可以看到 Metamask 很貼心的為此種簽名訊息的文字標上紅色,此種簽名方式會由外部傳入一個檔案來供簽名,因為不確定可能夾帶的內容,所以除非是非常信任的第三方,否則建議看到這種帶有紅色字樣的簽名不要簽,如果真的要簽,建議拿一個可以拋棄的熱錢包來簽署。

eth_sign

轉移合約(Transfer contract)

此種合約是用來轉移資產的,如果你要將你的 NFT 從 A 錢包轉移到 B 錢包,就會看到這種類型的合約,在畫面上可以找到「Transfer」的字樣。

有些詐騙陷阱也會把 Transfer 合約包裝成鑄造合約,當原本的意圖是要鑄造 NFT,但在畫面上卻顯示出 Transfer 時,就應該要意識到這是一個詐騙,需要馬上終止交易!

Transfer

授權合約(Approve contract)

這是授權合約,最常見的是在使用 Defi 相關的 DAPP 時會遇到,簽署了這種合約會讓第三方獲得加密貨幣錢包裡某一個資產的存取權,下圖就是要授與第三方可以存取加密貨幣錢包中的 USDC。

通常大部分的合約為了避免需要使用者頻繁的授與權限,預設都會是無上限(Unlimited),可以避免使用者授權超過上限時還要再支付一次手續費,但壞處是如果這個合約被入侵,他們可以取用的額度也會是無上限,因此也可以點擊上圖的「Edit Permission」來設定授與第三方可提取的最高上限,這樣即使第三方是惡意的或是被駭客入侵,你的損失也會有一個上限,下圖就是編輯要授與權限額度的示意圖。

編輯要授與權限的額度

延伸閱讀: 如何撤銷加密貨幣錢包的合約授權                                       


完全授權合約(Set Approval for all contract)

最後這個類型的合約是最危險的一種,因為授與的是最高權限,對方可以對你的加密貨幣錢包做任何的事情,像是在 Opensea 上架 NFT 就會需要簽署這種合約,這樣 Opensea 才可以在你的 NFT 售出後轉移給購買者。

因此除非是非常信任的第三方,否則當你簽署任何帶有「Set Approval for all」的合約時,如果對方要是是懷有惡意的,就要準備跟你的資產說再見了,平常沒事千萬不要簽署任何要求「Set Approval for all」的合約。

完全授權合約

本文同步發表於邦卡部落格:https://banka.com.tw/the-type-of-contract/

CC BY-NC-ND 2.0