Go 語言實現開源優雅的跨平臺 USDT 收付中間件
Epusdt(全稱:Easy Payment Usdt)是一個由 Go 語言編寫的私有化部署 Usdt 支付中間件 (Trc20 網絡)。站長或開發者可以通過 Epusdt 提供的 http api 集成至任何系統,無需過多的配置,僅僅依賴 mysql 和 redis。通過它,可以實現 USDT 的在線支付和消息回調,均可在優雅和瞬間完成。私有化搭建使得無需額外的手續費和簽約費用,Usdt 代幣直接進入您的錢包。Epusdt 遵守 GPLv3 開源協議。
- 項目地址:assimon/epusdt[1]
Epusdt 項目特點
Epusdt 前所未有的採用了 Go 語言進行開發,這意味着它可以跨平臺實現,支持 x86 和 arm 芯片架構的 win/linux 設備。下面列舉了 Epusdt 的一些主要特點:
-
支持私有化部署,無需擔心錢包被篡改和吞單
-
Go 語言跨平臺實現,支持 x86 和 arm 芯片架構的 win/linux 設備
-
多錢包地址輪詢,提高訂單併發率
-
異步隊列響應,優雅及高性能
-
無需額外環境配置,僅運行一個編譯後二進制文件即可
-
支持 http api,其他系統亦可接入
-
Telegram 機器人接入,便捷使用和支付消息快速通知
Epusdt 項目結構
Epusdt 的項目結構清晰明瞭,下面是其主要的組成部分:
Epusdt
├── plugins ---> (已集成的插件庫,例如dujiaoka)
├── src ---> (項目核心目錄)
├── sdk ---> (接入SDK)
├── sql ---> (安裝sql文件或更新sql文件)
└── wiki ---> (知識庫)
Epusdt 教程
作爲一款開源的軟件,Epusdt 還提供了詳細的使用教程,包括寶塔運行 epusdt 教程,手動運行 epusdt 教程,開發者接入 epusdt 文檔,以及使用 PHPAPI-for-epusdt 極速接入 epusdt 的指導。
-
寶塔運行 epusdt 教程:寶塔運行 epusdt[2]
-
手動運行 epusdt 教程:手動運行 epusdt[3]
-
開發者接入 epusdt 文檔:開發者接入 epusdt[4]
-
使用 PHPAPI-for-epusdt 極速接入 epusdt:使用 PHPAPI-for-epusdt 極速接入 epusdt[5]
Epusdt 設計實現
Epusdt 的實現方式與其他項目原理類似,都是通過監聽 trc20 網絡的 api 或節點,監聽錢包地址 usdt 代幣入賬事件,通過金額差異和時效性來判定交易歸屬信息。以下是流程圖以及簡單的原理:
- 簡單的原理:
-
客戶需要支付 20.05usdt
-
服務器有一個 hash 表存儲錢包地址對應的待支付金額 例如: address_1 : 20.05
-
發起支付的時候,我們可以判定錢包 address_1 的 20.05 金額是否被佔用,如果沒有被佔用那麼可以直接返回這個錢包地址和金額給客戶,告知客戶需按規定金額 20.05 準確支付,少一分都不行。且將錢包地址和金額 address_1:20.05 鎖起來,有效期 10 分鐘。
-
如果訂單併發下,又有一個 20.05 元需要支付,但是在第 3 步的時候上一個客戶已經鎖定了該金額,還在等待支付中...,那麼我們將待支付金額加上 0.0001,再次嘗試判斷 address_1:20.0501 金額是否被佔用?如果沒有則重複第三步,如果還是被佔用就繼續累加嘗試,直到加了 100 次後都失敗。
-
新開一個線程去監聽所有錢包的 USDT 入賬事件,網上有公開的 api 或 rpc 節點。如果發現有入賬金額與待支付的金額相等。則判斷該筆訂單支付成功。
在這個過程中,開發者只需要關注自身業務邏輯,可以忽略關於區塊鏈交易的所有細節問題,大大降低了開發難度和投入的時間成本。
聲明與注意事項
Epusdt 爲開源的產品,僅用於學習交流使用,不可用於任何違反中華人民共和國 (含臺灣省) 或使用者所在地區法律法規的用途。同時項目中所涉及區塊鏈代幣均爲學習用途,作者並不贊成區塊鏈所繁衍出代幣的金融屬性,亦不鼓勵和支持任何 "挖礦","炒幣","虛擬幣 ICO" 等非法行爲。虛擬幣市場行爲不受監管要求和控制,投資交易需謹慎,僅供學習區塊鏈知識。
參考資料
[1]
assimon/epusdt: https://github.com/assimon/epusdt
[2]
寶塔運行 epusdt: https://github.com/assimon/epusdt/blob/master/wiki/BT_RUN.md
[3]
手動運行 epusdt: https://github.com/assimon/epusdt/blob/master/wiki/manual_RUN.md
[4]
開發者接入 epusdt: https://github.com/assimon/epusdt/blob/master/wiki/API.md
[5]
使用 PHPAPI-for-epusdt 極速接入 epusdt: https://github.com/BlueSkyXN/PHPAPI-for-epusdt
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/VoNCMKw5y37fy1WxEkxp0Q