Solidity

為什麼我們授予對我們資金的訪問權限,而不是僅僅將它們發送到智能合約?

  • September 18, 2021

在 DeFi 中,我看到使用者被提示訪問他們的資金。為什麼不直接將這些資金發送到智能合約呢?

這種設計有什麼好處?

沒有“優勢”。大多數 DeFi 應用程序要求使用者“允許”轉移他們的資金的原因是這些資金表示為ERC-20代幣。乙太坊社區面臨著一個經典路徑依賴問題的例子。

這是深入探討 ERC-20 配額的指南。以下是一些實用的解決方案:

  • ERC-20 Permit:在 ERC-20 標準中添加了“permit”功能。
  • ERC-777:完全是一個新的令牌標準。據我所知,這沒有太大的吸引力。

一般有兩種方式轉移(ERC20)代幣:

  1. 直接轉移transfer。您可以呼叫此函式將您的代幣直接轉移到另一個地址。
  2. approve用和間接轉移transferFrom。這樣您就可以進行兩種不同的交易:首先您批准接收方提取您的代幣。然後你在接收器中呼叫一些功能,然後執行transferFrom它來獲取你的令牌。

我認為使用間接方法有兩個優點:

  1. 功能性。如果你使用直接轉賬,接收方不知道他收到了代幣。無論如何,你需要第二次交易來告訴接收者“嘿,我給你發了代幣,現在做你的交易”,你也會在安全方面受到影響。此外,通過批准,如果您信任接收者,您可以批准您的所有代幣並在同一批准下進行多筆交易 - 因此只需一次批准和多次“第二次”交易。
  2. 安全。如果需要兩次單獨的交易,就更難誘騙使用者將代幣發送到錯誤的地方。此外,通過這種方式,您可以提前閱讀接收方的合約程式碼,看看您進行第二次交易時會發生什麼。使用直接傳輸,您只需要希望接收方按照承諾進行即可。

引用自:https://ethereum.stackexchange.com/questions/110157