Contract-Invocation

我的 dapp 可以在不徵求使用者許可的情況下收取代幣嗎?

  • August 25, 2017

例如,假設點擊按鈕將執行某種類型的操作,它會向使用者收取 1 個令牌,但不會顯示任何彈出對話框。

我不希望每次可能發生 tx 時打開 Metamask 視窗來送出交易,因為它可能會破壞使用者體驗。使用者當然會同意允許 dapp 在沒有明確許可的情況下使用代幣的條款和條件。

我只是想知道,這是否可以通過智能合約以及如何實現?

ERC20有一個名為的函式approve(address _spender, uint _value),它允許使用者授予您的地址或合約 ( _spender) 的權限,以從您的代幣中扣除指定金額 ( _value)。獲得批准後,您可以使用 代表他們轉移資金transferFrom()

因此,讓您的使用者批准 Metamask 中的單筆交易,授予您的地址或合約借記其資金的權限,然後您可以代表他們執行任何未來操作,而無需他們通過 Metamask 批准另一筆交易。

請注意,您仍然需要以某種方式向網路進行交易以藉記這些資金;顯而易見的方法是執行一個伺服器端程序來監聽使用者操作,以某種方式驗證它們確實來自相關使用者,並在幕後為他們發送交易。

PS。如果使用者要讓您在任何情況下借記許多小交易中使用的資金,您可能還需要查看不同的方法,特別是狀態通道,它們不需要它們或您繼續發送交易到區塊鏈。例如,請參閱此關於快速、可驗證的鏈下賭博的提案

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