1. 程式人生 > >實現中心錢包系統 (交易所中心錢包)

實現中心錢包系統 (交易所中心錢包)

交易所是如何給你分配地址的,如果檢測你充幣的,如何有讓你提幣的,這篇文章給你答案。


很多業務上去中心化的應用上,需要很多中心化的管理,例如交易所,每秒交易量非常大,這都是 比特幣,以太坊的網路辦不到的。所以才會在去中心化的應用上 進行中心化的管理(市面上大多交易所並不是完全去中心化的),希望eos得到來可以解決這一痛點

再例如一個遊戲,每秒進行達不到需求級別,也應該採用去去中心化的進行模式(例如以太坊合約),中心化的資金管理。只有充幣提幣的時候在鏈上進行 其他都是一個虛擬的金額對,對應你的真實金額

遊戲

做一個dapp的同時你應該考慮,有些東西是否真的需要去中心化。例如一個部落格、論壇 去中心化是完全沒必要的

先簡單的設計一下我們需要的業務方式。

使用者充幣 -- >  錢進入分配地址 --> 分配地址轉入主錢包 -->  使用者提幣 --> 從主錢包直接轉入使用者提幣地址

(如果採用冷熱錢包配合,只需將百分之二十資金留在熱錢包便可供日常提幣) 具體的架構設計應根據業務來判斷,有些錢包的做法是 使用者充的幣留在原錢包裡

轉賬進主錢包的時候 以太幣可以 採用 (使用者轉入金額除開手續費全部轉入中心錢包),但是更推薦的做法是 使用者第一次註冊時 為使用者錢包轉入一定的手續費

 接下來來看一下具體的實現它

首先根據 咱們設計的業務 主要點是 檢測使用者的充幣, 使用者提幣 轉出, 轉幣進入 中心錢包。除開 涉及區塊鏈的業務,架構設計方面的,其他就比較簡單了。咱們來看一下具體實現

先實現 使用者建立賬號時  分配賬號


檢測eth 充值,和erc20代幣充值 方式有些差別,因為eth代幣 沒有地址,是以太坊內部貨幣,erc20代幣可以進行檢測幣種合約來進行

下面講一下erc20代幣檢測具體實現邏輯:

檢測代幣地址 可以獲得此代幣所有的 交易資訊,下面的連線為 api連線,startblock 為開始區塊  endblock為結束區塊  可以5分鐘監控一次,一次監控20個塊,以太坊是15秒出一個塊 

資訊裡 from 為轉賬地址 to 為合約地址, 然而接收地址和代幣數量呢?在input裡,第一個引數是接受地址,第二個引數是 代幣數量,代幣數量在後邊64位  是16進位制的,轉成10進位制,除開代幣精度就是轉幣的數量

接收地址怎麼獲得呢,從 後邊除開64位以後 在40位 就是接收地址。然後把接受地址對比 自己 使用者的賬號地址就可以了。然後在做一些中心化的處理, 餘額加減了啊等等

http://api-ropsten.etherscan.io/api?module=account&action=txlist&address="+contractAddress+"&startblock="+startblock+"&endblock="+endblock+"&sort=asc&apikey=YourApiKeyToken

例項:


下面檢測eth代幣:

eth代幣 我們從塊中分析,獲取 一個塊裡的所有交易, 然後分析所有轉賬value 不為0的交易(為0沒必要檢測,不存在數值變化),然後 從獲得的所有交易資料中比對 和自己使用者地址相同的  下面的blockNumber

是16進位制的 。應把十進位制的數字轉成16進位制的獲取交易

https://api-ropsten.etherscan.io/api?module=proxy&action=eth_getBlockByNumber&tag=0x"+blockNumber+"&boolean=true&apikey=YourApiKeyToken


使用者提幣的時候 要考慮nonce , 本地nonce和線上nonce比對,如果本地比線上少 就同步成為線上的


轉賬 eth 和轉賬 erc20代幣也不同 web3j 百度有很多方法,下面貼出來例子吧 邏輯都是先簽名,在傳送進網路

eth轉賬(專案裡是 由keystore 檔案裡獲取私鑰,用私鑰來簽名) :


erc20代幣轉賬:


注意 轉賬 和提幣的nonce差別

接下來改些配置檔案作為專案的開始吧


專案初次執行 把錯誤的全部配置就行了, 還有一個地方要注意,就是 使用者資訊通知, 傳送 簡訊驗證碼,和郵箱驗證碼


介面文件地址 訪問密碼 skyhuihui

https://www.showdoc.cc/web/#/128880456266091?page_id=735603450466975

github 程式碼地址

https://github.com/skyhuihui/exchange.git

如果您想支援我 可以像我的地址上轉一些以太幣 0x2207358972e37f663a5480dbaa09715e8b0fc4ff,什麼你只有新潮的eos 沒有以太幣,放心放心,eos地址我也有 eosskyhuihui

算了開玩笑的了,哈哈, 您的轉發就是對我最大的支援。