iT邦幫忙

2024 iThome 鐵人賽

DAY 14
1

當你送出一個 ERC20 代幣(token)的時候發生了什麼事?USDC 算是常見的 ERC-20 代幣。以 USDC 代幣來當例子。想像情境:你想發送一筆交易,把 1 塊錢的 USDC 給你的韓國人朋友。這背後是發生什麼事情呢?

ERC20 交易的生命週期

首先,你在瀏覽器,打開狐狸錢包 MetaMask,敲一敲,按下發送。這個時候會出現一筆交易,交易會廣播(broadcast)到以太坊的 p2p 網路。這筆交易上面資料寫了什麼呢?交易(transactions)實際上是一筆有很多欄位的資料。

這些欄位包括:

  • 發送人的地址,就是你的 EOA 地址。
  • 收款方的地址,其實會是 USDC 的 ERC20 合約的地址。
  • Calldata。包含要呼叫的合約的 function 函式和參數。

這個 calldata 是 call 什麼呢?是呼叫 USDC 合約裡面的 transfer function 轉帳函式。這個 transfer function 吃幾個 argument 呢?argument 有 from、to,和 value。from 就是你的 USDC 的地址。to 是收款人韓國人朋友的 USDC 的地址。value 是 1 塊 USDC。

當你送出這筆交易之後,交易進了以太坊的 p2p 網路。進到區塊鏈驗證者(validator)的記憶池(memory pool)或稱交易池(transaction pool)。區塊鏈驗證者(validator)會把這筆交易拿出來打包成區塊,區塊再廣播(broadcast)到以太坊的 p2p 網路。其他節點會執行這筆交易。

這個時候,USDC 合約的 contract account 裡的 storage 有一個 balance 的映射(mapping),會記載哪一個 USDC 的地址有多少餘額。這邊運作的感覺,會比較類似「查表」。先查原來你的帳戶有多少錢,再把查表的表更新。比如說,你的 USDC 餘額減少一塊錢 USDC,韓國人朋友的 USDC 餘額增加一塊錢 USDC。


上一篇
Life of a Transaction 理解以太坊交易是如何運作的
下一篇
認識 L2 Optimism OP token 交易
系列文
合約開發特訓班30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言