Blockchain

如何使用智能合約從使用者錢包中自動檢索每月付款?

  • November 8, 2022

我正在製定一個智能合約,允許使用者支付 Netflix、亞馬遜等月度訂閱費用。智能合約的設計方式是,為了讓使用者支付他的月度訂閱費用,他必須批准智能合約代他轉移 X 數量代幣的合約(ERC20 規則)訂閱,但智能合約每月從使用者的錢包中提取 X 數量的代幣。由於區塊鏈的限制和它的安全性,我認為這是不可能的。但如果有任何其他解決方案或方法,我想向你學習

對於區塊鏈上的任何交易,必須有人開始執行。因此,為了每個月從使用者那裡轉移代幣,必須有人(不一定是使用者)啟動鏈上交易來轉移代幣。智能合約不會在沒有某人或某物呼叫它們的情況下自動執行操作。

也就是說,如果使用者使用您程式的特定令牌付款,您可以編寫條件邏輯,其中使用者的餘額基於與時間和訂閱相關的條件。這個邏輯需要完全是被動的,也就是說你不能在沒有交易發生的情況下對合約進行任何狀態更改。這包括外部代幣合約,其中狀態是某人的餘額。這是相當先進的,需要深入考慮在使用者的 balanceOf 函式中檢查的條件,以及何時需要在鏈上呼叫 balanceOf 函式時的氣體注意事項(例如,在驗證使用者是否有代幣的傳輸中放棄)。從理論上講,我認為您可以製作一些系統,其中使用者’ s 和 providers 餘額根據 balanceOf 邏輯根據時間戳被動更新,但請記住它必須是高效和可擴展的。此外,弄亂 ERC20 內部邏輯功能可能很危險,所以如果您決定這樣做,請小心!

您還可以考慮訂閱提供商進行交易以收款,或者由協議團隊控制的地址在月底打電話收取所有訂閱。不過請記住,這方面的 gas 成本會很高,因為您實際上並沒有消除交易成本,只是改變了支付費用的人。所以很多使用者的gas需要一次性全部付清。

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