Accounts
將乙太幣接收到多個地址的最佳實踐
假設我是一個有很多使用者的交易所。當我要求使用者存入 ETH 時,我會給他一個唯一的地址,這樣我就可以將 ETH 歸於他。
使用比特幣,這很容易。比特幣錢包軟體可以處理這個問題,我可以在多個地址上擁有 BTC,並將其視為一個帳戶。
我知道乙太坊是不同的。
我找到了 2 個選項來實現這一點:
- 為每個使用者部署一次轉發器智能合約,將地址提供給使用者。當智能合約收到 ETH 時,它會將其轉發到我的主 ETH 地址。
優點:
使用者支付轉發 ETH 的 gas 費用
只需跟踪一個帳戶(1 個私鑰)。缺點:
我必須支付多次部署貨運契約的 gas 費用
- 為每個使用者創建一個帳戶。不要將私鑰提供給使用者。定期檢查我控制的所有“使用者賬戶”並將 ETH 發送到“主賬戶”
優點:
我不需要為部署任何智能合約支付 gas缺點:
我必須跟踪多個帳戶
這兩種方法中的哪一種會花費我更多的汽油?直覺上我認為 2nd 會花費更少的 gas,因為部署智能合約比發送 ETH 更昂貴。但第一種方法似乎更受交易所歡迎。這是為什麼?
我應該注意,我不希望使用者多次存入 ETH。(或者更確切地說,對於每筆存款,我都會給他們一個新地址,以便更容易跟踪他們的存款)
假設我是一個有很多使用者的交易所。當我要求使用者存入 ETH 時,我會給他一個唯一的地址,這樣我就可以將 ETH 歸於他。
使用比特幣,這很容易。比特幣錢包軟體可以處理這個問題,我可以在多個地址上擁有 BTC,並將其視為一個帳戶。
我知道乙太坊是不同的。
不確定我是否了解您要達到的目標。如果你想讓人們將乙太幣存入你的合約,你不能簡單地維護一個地址到餘額的映射嗎?您將使用 msg.sender 獲得發件人的地址
您將創建一個契約來創建契約。您的主合約會為您的使用者創建新的“子錢包”。
然後,您可以讓孩子們聽在製作新錢包時創建的給定所有者。這樣他們就有了一個你可以控制的特定地址。如果您只想將錢立即發送到您自己的錢包,您可以在新合約中設置一個功能,即將所有 ETH 發送到某個給定地址的備份功能。