-
Bob 是一名 NEST 預言機報價礦工,他在參與 ETH/USDT 價格預言機報價時,需要按照自己的報價數據往報價合約中同時轉入 ETH 和 USDT 資產,這里假設是 10 ETH 和 1600 USDT,去進行一次報價操作。
-
那么 Bob 首先要將 USDT 資產進行一次授權操作,授權給NEST預言機的報價合約,讓報價合約擁有操作 Bob 錢包中 USDT 資產的權限,以便在報價生命周期內有驗證者吃單時順利執行涉及到 USDT 資產的交易邏輯。
-
這里的授權本質上也是一筆鏈上交易,需要用戶支付礦工費(Gas費)。目的是為了告訴 USDT Token 合約,目標智能合約 A 擁有支配我錢包 X 數量 USDT 資產的權限。然后,當目標合約 A 內需要去進行 USDT 交易的時候,它就會主動去從 USDT Token 合約中獲取不高于 X 數量的 USDT 資產。
但在上面這個案例中又出現了另一個疑惑,為什么在報價過程中,只有 USDT 這類的 ERC20 Token 需要進行授權操作,而 ETH 不需要呢?
技術解析:因為 ETH 作為以太坊網絡原生資產,在向目標智能合約轉賬時,以太坊網絡底層強制要求目標合約要有確定的接收方法,所以交易本身可以攜帶 ETH 資產到目標合約中;而 ERC20 Token 在向目標合約轉賬時,只是更改 ERC20 Token 合約本身的賬本信息,目標合約不會收到任何通知。
所以,ETH 在與智能合約進行價值交互時不需要像 ERC20 Token 那樣進行授權操作。
準確來說,授權操作有 2 步:
第 1 步:授權交易本身。是為了告訴某 ERC20 Token 合約,將來可能會有目標智能合約地址 A 來我的錢包賬戶取走 X 數量的該 Token 資產;
第 2 步:交易執行本身。當目標合約 A 中的邏輯執行需要進行該 Token 交易時,合約 A 會去主動去觸發 ERC20 Token 取走 X 數量的該 Token 的轉賬交易;反之,如果沒有涉及到該 Token 的交易,即使已經授權了,也不會真實發生資產交易。








