邦卡
邦卡

Banka 邦卡 Facebook 粉絲團:https://www.facebook.com/Banka1987 邦卡部落格:https://banka.com.tw/

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 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

第一个支持了这篇作品
加载中…

发布评论