數字資產交易所記錄


  1. 交易所為每位用戶提供獨立的地址,用於區分不同用戶的充幣行為,這樣交易所就能知道每一筆充值是哪個用戶的。

  2. 提幣不是從用戶的地址中提取,而是從交易所地址中提取。

  3. ERC20的token,不能用普通地址作為充值地址,因為充到普通地址的token無法做歸集,因為這個地址上不一定有ETH。那怎么辦?只能用合約地址作為用戶的充值地址,合約創建者可以調用合約地址上的合約方法來轉移token,費用由合約創建者出。

  4. 用戶的以太坊和ERC20幣使用相同的地址,為什么要這么做,因為3里面提的,充值地址是合約地址,部署合約是要費用的。

  5. 不預先給用戶生成地址,只有當用戶想充值的時候才給其地址,原因和4一樣。

  6. 用戶提幣的費用由用戶出,如果是提ERC20的token,從這個用戶的ETH里扣礦工費,如果這個用戶沒有ETH,那么不給提幣。

  7. ERC20到賬監聽方法:監視所有發送到token合約地址調用transfer方法的transaction

前提是提幣失敗,比如交易所地址中沒有幣了,那么這個流程就被中斷了,這個時候有兩個辦法:

  1. 回退

  2. 交易所地址充幣,然后繼續執行

1. 回退

回退就是使用戶的賬戶回到沒有提幣時的狀態,當然也去除所有記錄:

// 第一步找出這個用戶的賬戶,並update記錄到原先的狀態
SELECT * FROM `accounts` WHERE `member_id` = 26;
UPDATE ...

// 第二步通過賬戶找到提幣記錄,刪除
SELECT * FROM `withdraws` WHERE `member_id` = 26 and `account_id` = 232;
DELETE FROM `withdraws` WHERE `member_id` = 26 and `account_id` = 232;

// 第三步找到賬戶變化歷史記錄,清楚
SELECT * FROM `account_versions` WHERE `member_id` = 26 and `account_id` = 232 and `modifiable_type` = 'Withdraw';
DELETE FROM  `account_versions` WHERE `member_id` = 26 and `account_id` = 232 and `modifiable_type` = 'Withdraw';

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM