Menu

  • Home
  • Trending
  • Recommended
  • Latest

分類

  • #2021 新年特輯
  • 100天區塊鏈挑戰
  • 2019 台灣區塊鏈產業指南
  • 2020 台灣區塊鏈產業年鑑
  • 2022 台灣年度最影響力人物榜
  • 2023 台灣年度影響力人物榜
  • 2023 新春特輯
  • 2024 TON Hacker House
  • 2024新春特輯
  • ABS 2018 專題報導
  • AI
  • CBDC是什麼?為何全球都在積極研究、有什麼優點與隱憂
  • Cefi
  • dao
  • dApps
  • defi
  • DePIN 如何開啟去中心化物理網路革命?
  • Entertainment
  • EOS
  • EOS insights
  • Gaming
  • Howto & Style
  • ICO
  • JiaJia
  • Layer 2
  • Libra
  • Movie
  • Music
  • News
  • nft
  • Plurality 多元宇宙
  • Starknet 空投落地,後續帶來什麼影響?
  • TON的崛起之路》背靠 Telegram 如何實現 Web3 大規模應用?
  • Uncategorized
  • Web3.0
  • 中國
  • 亞太
  • 交易所
  • 人物專訪
  • 以太坊
  • 以太坊
  • 以太坊 Dencun 坎昆升級將臨,你需要知道的所有事
  • 以太坊再質押協議為何成為最熱門賽道?
  • 供應鏈
  • 保險
  • 債券
  • 元宇宙
  • 全台最大詐騙案!Ace交易所涉垃圾幣詐騙
  • 全球加密貨幣監管最新動態統整
  • 其他國家
  • 其他幣別
  • 分散式帳本技術
  • 創投
  • 加密貨幣「詐騙手法」整理,學習如何保護你的資產
  • 加密貨幣市場
  • 區塊鏈平台
  • 區塊鏈新手全攻略,你需要知道的加密貨幣基礎
  • 區塊鏈新手教學
  • 區塊鏈活動
  • 區鍵禧
  • 即時新聞
  • 台灣
  • 哈希派
  • 國際組織報告
  • 多元宇宙Plurality有多重要?未來20年人類躍進關鍵
  • 央行
  • 娛樂平台
  • 安全
  • 專欄作者
  • 巴拉區塊事
  • 市場分析
  • 幣安與美國司法部達成 43 億美元和解,CZ認罪
  • 影片測試的分類
  • 快訊
  • 技術
  • 抓住空投爆擊!值得埋伏的項目、互動教學總整理
  • 投資分析
  • 挖礦
  • 推薦閱讀
  • 搶先看
  • 支付
  • 政府報告
  • 數位產權
  • 數據報告
  • 概念
  • 歐洲
  • 比特幣
  • 比特幣現貨ETF上市,真帶來了增量資金?
  • 比特幣第四次減半將臨,行情怎麼走?
  • 比特幣銘文大爆發,Oridinal 如何改變 BTC 生態?
  • 比特彭
  • 汪彪
  • 法規
  • 測試網
  • 灰度
  • 物聯網
  • 犯罪
  • 獨立觀點
  • 瑞波
  • 環境永續
  • 社交
  • 私人機構報告
  • 稅務
  • 穩定幣
  • 管制
  • 美國
  • 肺炎
  • 能源
  • 訴訟
  • 評級報告
  • 財金哥 & 區塊妹
  • 身份驗證
  • 遊戲
  • 鄧庶杭
  • 金融市場
  • 銀行
  • 錢包

Subscriptions

  • 零壹財經 01 binary
    01 Binary
  • 0xdt
  • 0xJigglypuff
  • aaaaYYYY
  • ABCDELabs

Recent News

  • 圖解多元宇宙》V神、Glen力推的Plurality是什麼?為何協作技術是人類社會進步關鍵
  • 精選文章搶先看!動區登入Access質押訂閱服務,解鎖寶貴資訊快人一步
  • ABS獨家專訪》Gitcoin共同創辦人Scott:台灣是現實與Web3治理的重要交匯點
動區動趨-最具影響力的區塊鏈新聞媒體
  • Home
    • Home Layout 1
    • Home Layout 2
    • Home Layout 3
  • Browse
    • News
    • Movie
    • Music
    • Technology
    • Howto & Style
    • Entertainment
    • Gaming
  • Features
    • Youtube Video
    • Vimeo Video
    • Dailymotion Video
    • Self-hosted Video
    • User Profile
    • Playlists
    • User-created Playlist
    • Favorite Playlist (Private)
    • Watch Later Playlist (Private)
    • All JNews Features
No Result
View All Result
  • Login
  • Register
UPLOAD
動區動趨-最具影響力的區塊鏈新聞媒體
No Result
View All Result
Home 區塊鏈新手教學

文組也該知道的區塊鏈技術知識 <8> 為何發送 ERC20 Token 需要兩次交易?

Blockchain Technical Overview Transfer of ERC20 Token

Lai Jack 賴彥廷 by Lai Jack 賴彥廷
2020-12-29
in 區塊鏈新手教學, 專欄作者
942 19
0
文組也該知道的區塊鏈技術知識《1》 從一筆交易來看 ETH 與 BTC 之異同
1.3k
SHARES
6k
VIEWS
Share on FacebookShare on Twitter

本文作者為賴彥廷,於區塊鏈解決方案服務商 Pelith 沛理科技擔任專案經理,本系列文章並不會談到太深的技術鑽研,而是以深入淺出的方式,讓每一個想要了解區塊鏈技術的讀者,都可以在讀完後說出:原來如此!

本文目錄

    • RelatedPosts
    • 以太坊現貨ETF是什麼?與期貨差異、如何投資、優缺點、發行方式..完整分析
    • 以太坊聚合 L3 zkEVM 網路「zkLink Nova」 TVL 突破10億美元
    • 比特幣符文(Runes)是什麼?與銘文、BRC-20差異、蝕刻原理、生態系…全整理
  • 發送以太幣
    • ERC-20 代幣的本質
    • 我們實際來看一個範例:
    • 我們就直接開門見山講答案
      • Tx1: Approve(授權)
      • Tx2: Swap Token(兌換)
    • Tx1: Approve(授權)
    • Tx2: Swap Token
    • 結論
      • 德國銀行報告|與黃金模型對比分析得出,比特幣將於 2020 年獎勵減半時上看 90,000 美元
      • 農曆新年到,該如何和長輩解釋「什麼是區塊鏈」?
      • 尼克森下台,《銀行保護法》到現今恐怖主義,Mastering Bitcoin作者講述「銀行終究會被比特幣摧毀」的故事

 

RelatedPosts

以太坊現貨ETF是什麼?與期貨差異、如何投資、優缺點、發行方式..完整分析

以太坊聚合 L3 zkEVM 網路「zkLink Nova」 TVL 突破10億美元

比特幣符文(Runes)是什麼?與銘文、BRC-20差異、蝕刻原理、生態系…全整理

為什麼發送 ERC20 Token 給別人需要兩次交易?

許多人可能對此感到疑問,透過本篇文章相信能充分為您解惑。上一節我們帶大家一窺以太坊的架構全貌並為迄今為止七篇文章做了小結。我們將在這基礎之上闡明發送 ERC20 Token 背後的技術解析。

發送以太幣

發送以太幣時其實蠻符合我們的直覺,就是把錢發給別人,別人收到這樣。然而發送 ERC20 代幣卻彷彿不是這麼單純,為什麼呢?

EOA 互動(發送 ETH)
EOA 互動(發送 ETH)

ERC-20 代幣的本質

首先回顧一下 上一節 提到的,ERC20 代幣只是用 ERC20 之智慧合約底下的記憶體來儲存記錄各個地址持有數量的帳本。既然對象是個智慧合約,就要再回顧一下 第二節 提到的,個人帳戶(Externally Owned Account, EOA)與 合約帳戶(Contract Account)的不同,由於智慧合約沒有主觀意識,動作皆需要由 EOA 發交易來觸發。因此當合約地址收到 ETH 外的其它代幣時,它並不會知道。因為更動的是「另一個智慧合約底下的記憶體」!

EOA 與 合約帳戶
EOA 與 合約帳戶

我們實際來看一個範例:

假設我想要透過去中心化交易所 Uniswap 將我持有的 82 顆 cDAI 兌換成 0.0092 顆 ETH,在技術上是如何做到的呢?

先備知識:cDAI 是我將 DAI 存入 Compound 放貸後,Compound 發回給我的 ERC20 Token。所以 cDAI 是由 Compound 管理的 cDAI 智慧合約底下之記憶體(帳本)來記錄追蹤的。

Uniswap 的 Token Swap 介面
Uniswap 的 Token Swap 介面

我的 Token Swap 需求在常規邏輯上是:
我把我的 cDAI token 發送給 Uniswap,Uniswap 把 ETH 發送給我。

不過事情並非這麼單純。由於 Uniswap 是去中心化,由智慧合約來運作的。因此當 Uniswap 收到了 cDAI token 時,它不像人一樣可以點開 Metamask 去查看是否有收到,確認有收到後再把 ETH 發送給我,因此需要用特殊的做法來實現這樣的流程。

我們就直接開門見山講答案

用比喻來說明的話,做法是:

  1. 我先到 銀行(ERC20 Token 的智慧合約)開啟 授權,
    允許 對方(第三方智慧合約)能夠到我的戶頭
    提取 錢(ERC20 Token),並設定「能夠提取的額度」。
  2. 接著我開給對方一張「寫上金額的支票」,
    讓對方拿著支票到 銀行 中提領我帳戶中的 錢。

因為對象(智慧合約)是一段程式碼,如此做法方能 讓智慧合約確認提取到 Token 並執行後續的合約邏輯操作。

因此,回到區塊鏈的世界,必須透過以下兩個交易步驟來進行:

Tx1: Approve(授權)

我必須先發一筆交易到「Compound cDAI Token 智慧合約」(銀行),
授權「Uniswap 的 cDAI to ETH 交易對智慧合約」(對方)
可以到「Compound 的 cDAI Token 智慧合約」
(銀行)
提取我的「cDAI Token」(錢)。

Tx2: Swap Token(兌換)

隨後,我再發送一筆「將 cDAI 兌換為 ETH」的交易(支票)
到「Uniswap 的 cDAI to ETH 交易對智慧合約」(對方)觸發,
讓「Uniswap 的 cDAI to ETH 交易對智慧合約」(對方)
至「Compound 的 cDAI Token 智慧合約」(銀行)
提領我的 82 顆「cDAI Token」(錢)。
「Uniswap 的 cDAI to ETH 交易對智慧合約」(對方)提領到 Token(錢)後再將 0.0092 顆 ETH 發送給我。

如下方示意圖所示:

Tx2: Swap Token(兌換)
Tx2: Swap Token(兌換)

接著我們帶大家實際走一次操作流程以搞懂背後技術邏輯。


Tx1: Approve(授權)

首先,當我們來到 Uniswap 交易所,選好 Input 與 Output 的加密貨幣種類並在 Input 輸入欲兌換的數量,便可以在我欲兌換成 ETH 的 cDAI Token 旁邊看到「Unlock」的按鈕。這就是要求我進行「Tx1:授權」的操作。

Uniswap
Uniswap

點選「Unlock」按鈕後,便會跳出「批准」的交易來讓我簽署。一但簽署後,我便批准了 Uniswap 能夠到 Compound 提領我的 cDAI 的權限。

Metamask
Metamask

這筆交易被確認後,我們便可以憑 Txn Hash 到 Etherscan 上找到這筆交易。可以發現這筆交易是發給「Compound 的 cDAI ERC20 Token 智慧合約」。

Etherscan
Etherscan

點進去這筆交易後,便可以看到呼叫的正是 approve 的 function。我同意了「Uniswap 的 ETH-cDAI 交易對」合約地址能夠來提領我的 cDAI,而授權的提領金額量為「最大」。

可能會有些人好奇為什麼不把 amount 設成我要兌換的量:82 就好。原因是為了便利於未來提領操作時不用再次授權,通常呼叫智慧合約的 approve 函式時都會預設為開啟最大值,這樣未來再次需要提領時就不用再次進行 approve 的操作。

然而要注意的部分是:針對「可能存在漏洞或不被信任的智慧合約」,若是仍按照預設將權限開至最大值,則將面臨 Token 遭到竊取的風險。

同意「Uniswap 的 ETH-cDAI 交易對」合約地址能夠來提領我的 cDAI,而授權的提領金額量為「最大」
同意「Uniswap 的 ETH-cDAI 交易對」合約地址能夠來提領我的 cDAI,而授權的提領金額量為「最大」

 


在完成「Tx1:Approve 授權」後,便可以看到「Unlock」的按鈕消失,並且「Swap」按鈕已能夠點選。

「Swap」按鈕已能夠點選
「Swap」按鈕已能夠點選

Tx2: Swap Token

接著便能夠來進行將我的 cDAI 兌換成 ETH 的 Swap Token 動作。

Swap Token
Swap Token

同樣透過 Metamask 來簽署完成這筆交易後,我們到 Etherscan 上追縱這筆交易:能夠發現這筆交易是從我的錢包發送給「Uniswap 的 ETH-cDAI 交易對 智慧合約」。

Uniswap 的 ETH-cDAI 交易對 智慧合約
Uniswap 的 ETH-cDAI 交易對 智慧合約

點進去這筆交易後可以看到在這筆交易中執行了兩件事:

  1. 將 82 cDAI 從「Compound 的 cDAI 智慧合約」轉至 「Uniswap 的 ETH-cDAI 交易對合約地址」中。
  2. 將 0.0092 ETH 從「Uniswap 的 ETH-cDAI 交易對合約地址」中轉給我。
Uniswap 的 ETH-cDAI 交易對合約地址
Uniswap 的 ETH-cDAI 交易對合約地址

接著我們可以在「Uniswap 的 ETH-cDAI 交易對合約地址」的
「Internal Txns」中看到 0.0092 ETH 轉移至我的錢包地址;以及
在「Erc20 Token Txns」中看到 82 cDAI 從「Compound 的 cDAI 智慧合約」轉移至「Uniswap 的 ETH-cDAI 交易對合約地址」中。

Erc20 Token Txns
Erc20 Token Txns

同時,這筆交易在「Compound 的 cDAI 智慧合約」中也可以查看到 82 cDAI 被轉移出的記錄。

82 cDAI 被轉移出的記錄

 


結論

  1. 發送 ETH 與 發送 ERC20 Token 給智慧合約有本質上的差異。ETH 是 push-based,單純把 ETH 發過去就可以。ERC20 Token 的發送則是 pull-based,讓合約去主動提取 Token。
  2. 必須先發送一筆交易至 ERC20 合約進行 授權(Approve),允許某合約地址能夠至 ERC20 智慧合約提取我持有的 ERC20 Token。
  3. 再發送一筆交易來觸發合約地址進行 提取 ERC20 Token 與後續的邏輯操作。

至此,相信讀者都已充分理解發送 ERC20 Token 給智慧合約背後的技術邏輯。

下一節我們將來介紹「Oracle(預言機)」,這個扮演 真實世界與區塊鏈間橋樑 的技術,並帶大家認識 MakerDAO、Compound 等大專案的實作方式。敬請期待!

以上若有任何

A. 不夠清楚的地方
B.
撰寫上改進的建議
C.
希望我能夠撰寫分享的區塊鏈技術知識內容

?相關報導?

德國銀行報告|與黃金模型對比分析得出,比特幣將於 2020 年獎勵減半時上看 90,000 美元

農曆新年到,該如何和長輩解釋「什麼是區塊鏈」?

尼克森下台,《銀行保護法》到現今恐怖主義,Mastering Bitcoin作者講述「銀行終究會被比特幣摧毀」的故事


《BlockTempo動區動趨》LINE官方號開通囉~立即加入獲得第一手區塊鏈、加密貨幣新聞報導!

加入好友

Recommended videos

3:41

2019 Ubud Writers & Readers Festival: 8 reasons why you should come

2.5k Views
2024-06-12
    10:54

    Trump Whistleblower Saga Threatens to Blow Up 2020 Campaign

    2.5k Views
    2024-06-17
      精選文章搶先看!動區登入Access質押訂閱服務,解鎖寶貴資訊快人一步

      精選文章搶先看!動區登入Access質押訂閱服務,解鎖寶貴資訊快人一步

      2.5k Views
      2024-09-04
        0:20

        6 Sci-fi Gadgets in Movie We Wish Actually Existed

        2.5k Views
        2024-08-02
          Show More
          Copyright (c) 2019 by Jegtheme.
          • About
          • Buy JNews
          • Request A Demo
          • Contact
          No Result
          View All Result
          • Account
          • BlockTempo Beginner – 動區新手村
          • Change Password
          • Forgot Password?
          • Home 1
          • Home 2
          • Home 3
          • Jin-homepage
          • Latest
          • Login
          • Profile
          • Register
          • Reset Password
          • Trending
          • Users
          • Users List Item
          • 不只加密貨幣,談談那些你不知道的區塊鏈應用|動區新手村
          • 所有文章
          • 關於 BlockTempo

          © 2025 JNews - Premium WordPress news & magazine theme by Jegtheme.

          Welcome Back!

          Login to your account below

          Forgotten Password? Sign Up

          Create New Account!

          Fill the forms below to register

          All fields are required. Log In

          Retrieve your password

          Please enter your username or email address to reset your password.

          Log In

          Add New Playlist