Web3js
如何為交易所建立乙太坊熱錢包
我正在開發一個交易所。當新使用者在網站上註冊時,我們將為他們創建新的 eth 錢包。當他們將 USDT 存入錢包時,我如何將 USDT 金額轉移到另一個地址(池)並用另一個賬戶支付 gas 費(因為新使用者的 eth 餘額為 0)?
對乙太坊最友好的解決方案是
創建和部署控制器智能合約。這表明我們有用於支付轉發智能合約的確定性地址。
對於每個新的存款地址,使用存款人控制器的 CREATE2 部署一個付款轉發智能合約。您需要預先部署一批這些智能合約,然後在客戶進來時將它們分配給他們。
智能合約只有一個功能——將存入的 ETH 和代幣轉發到熱錢包。交易所費用錢包呼叫此功能,交易所支付費用。
Coinbase 商家非託管架構概述。貨運代理契約範例。其他 CREATE2 使用者是大多數基於移動智能合約的錢包,支持“朋友找回錢包”和非 ETH 費用市場,例如 Pillar、Gnosis、Argent。
優點
- 可以處理
transfer()
來自不支持 ERC-20approve()
和transferFrom()
機制的中心化交易所的 ERC-20 交易- 使用
CREATE2
EVM 操作碼,合約可以追溯部署到使用者已經發送付款的確定地址,即使部署系統由於某種原因關閉缺點
- 可能會使用更多氣體(請參閱CREATE2 氣體成本統計)
- 需要一個集中的協調器來分配支付轉發器地址
- 商家為每個使用者部署轉發合約然後呼叫該合約以將其內容 ETH 和代幣轉發到集中管理的錢包的額外 gas 成本
與普通乙太坊賬戶轉發器的區別
- 你不需要用 gas 充值普通的乙太坊轉發賬戶,因為可以集中支付代理合約的 gas
- 非託管邏輯 - 即使部署者私鑰被洩露,整個系統也不會被洩露
- 智能合約可以與支付代理合約互動
然而,具有分層確定性私鑰的普通乙太坊賬戶也可以工作,只要你弄清楚如何讓它們充值以獲得汽油錢。