Solidity
為什麼我們授予對我們資金的訪問權限,而不是僅僅將它們發送到智能合約?
在 DeFi 中,我看到使用者被提示訪問他們的資金。為什麼不直接將這些資金發送到智能合約呢?
這種設計有什麼好處?
沒有“優勢”。大多數 DeFi 應用程序要求使用者“允許”轉移他們的資金的原因是這些資金表示為ERC-20代幣。乙太坊社區面臨著一個經典路徑依賴問題的例子。
這是深入探討 ERC-20 配額的指南。以下是一些實用的解決方案:
- ERC-20 Permit:在 ERC-20 標準中添加了“permit”功能。
- ERC-777:完全是一個新的令牌標準。據我所知,這沒有太大的吸引力。
一般有兩種方式轉移(ERC20)代幣:
- 直接轉移
transfer
。您可以呼叫此函式將您的代幣直接轉移到另一個地址。approve
用和間接轉移transferFrom
。這樣您就可以進行兩種不同的交易:首先您批准接收方提取您的代幣。然後你在接收器中呼叫一些功能,然後執行transferFrom
它來獲取你的令牌。我認為使用間接方法有兩個優點:
- 功能性。如果你使用直接轉賬,接收方不知道他收到了代幣。無論如何,你需要第二次交易來告訴接收者“嘿,我給你發了代幣,現在做你的交易”,你也會在安全方面受到影響。此外,通過批准,如果您信任接收者,您可以批准您的所有代幣並在同一批准下進行多筆交易 - 因此只需一次批准和多次“第二次”交易。
- 安全。如果需要兩次單獨的交易,就更難誘騙使用者將代幣發送到錯誤的地方。此外,通過這種方式,您可以提前閱讀接收方的合約程式碼,看看您進行第二次交易時會發生什麼。使用直接傳輸,您只需要希望接收方按照承諾進行即可。