Web3js

如何為交易所建立乙太坊熱錢包

  • July 3, 2020

我正在開發一個交易所。當新使用者在網站上註冊時,我們將為他們創建新的 eth 錢包。當他們將 USDT 存入錢包時,我如何將 USDT 金額轉移到另一個地址(池)並用另一個賬戶支付 gas 費(因為新使用者的 eth 餘額為 0)?

對乙太坊最友好的解決方案是

  1. 創建和部署控制器智能合約。這表明我們有用於支付轉發智能合約的確定性地址。

  2. 對於每個新的存款地址,使用存款人控制器的 CREATE2 部署一個付款轉發智能合約。您需要預先部署一批這些智能合約,然後在客戶進來時將它們分配給他們。

  3. 智能合約只有一個功能——將存入的 ETH 和代幣轉發到熱錢包。交易所費用錢包呼叫此功能,交易所支付費用。

Coinbase 商家非託管架構概述貨運代理契約範例。其他 CREATE2 使用者是大多數基於移動智能合約的錢包,支持“朋友找回錢包”和非 ETH 費用市場,例如 Pillar、Gnosis、Argent。

優點

  • 可以處理transfer()來自不支持 ERC-20approve()transferFrom()機制的中心化交易所的 ERC-20 交易
  • 使用CREATE2EVM 操作碼,合約可以追溯部署到使用者已經發送付款的確定地址,即使部署系統由於某種原因關閉

缺點

  • 可能會使用更多氣體(請參閱CREATE2 氣體成本統計
  • 需要一個集中的協調器來分配支付轉發器地址
  • 商家為每個使用者部署轉發合約然後呼叫該合約以將其內容 ETH 和代幣轉發到集中管理的錢包的額外 gas 成本

與普通乙太坊賬戶轉發器的區別

  • 你不需要用 gas 充值普通的乙太坊轉發賬戶,因為可以集中支付代理合約的 gas
  • 非託管邏輯 - 即使部署者私鑰被洩露,整個系統也不會被洩露
  • 智能合約可以與支付代理合約互動

然而,具有分層確定性私鑰的普通乙太坊賬戶也可以工作,只要你弄清楚如何讓它們充值以獲得汽油錢。

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