Erc-20
接受 ERC-20 代幣作為付款
我希望將 ERC-20 代幣集成到我的商店中。現在我有很多產品,所以我需要自動化系統來跟踪付款。我做了一些閱讀,看起來如果我編寫智能合約來處理這個問題,我需要提示使用者兩次(一次用於津貼,一次用於轉賬),這不是很好。我想知道處理這個問題的常見做法是什麼?我知道 ERC-223 解決了這個問題,但不幸的是大多數代幣都是 ERC-20。
另一種解決方案可能是為每次購買生成新地址,但隨後我需要將 ETH 轉移到每個地址以移動可能會變得非常昂貴的代幣。
您可以使用作為 ERC20 定義一部分的事件來跟踪付款。有人付款時會觸發 Transfer 事件。因此,您需要偵聽
_to
參數與您的收件人地址匹配的 Transfer 事件。Transfer(address indexed _from, address indexed _to, uint256 _value)
您可能仍然會遇到兩個客戶同時購買同一產品的問題,這將無法區分誰已付款和誰未付款。如果您不想為每次付款使用單獨的收款賬戶,您可以為每次付款使用單獨的金額:您可以在金額的最低有效數字(1-3 位)處循環使用不同的值(可能的最小值通常是一文不值)。您還可以循環瀏覽不同的支付地址,因此只有十個或一百個您收到的支付地址,確保一次只有一個在使用。
您甚至可以結合使用這兩種策略來消除無法區分兩個付款請求的“付款衝突”風險。