1. 程式人生 > >[區塊鏈研究實驗室]EOS代幣交易與提幣開發教程

[區塊鏈研究實驗室]EOS代幣交易與提幣開發教程

交易所的充值與提幣開發

本教程針對希望自動存取符合標準的EOSIO令牌合約的交易所。 EOSIO區塊鏈的本地標記符合標準。在本教程中,我們展示了充值和提幣交易所的方法,但對於自動化過程可能更重要,可以監控和報告活動的方式。

建立

先決條件

假設您有一個本地nodeos伺服器連線到EOSIO區塊鏈;為eosio.token建立了一個帳戶;並且已經部署了eosio.token合同。完成智慧合同入門和Eosio.token,Exchange和Eosio.msig合同教程之前,本教程將滿足這些先決條件。

本教程使用eosio.token合同的轉移操作處理存款和取款。它不使用隨EOSIO原始碼分發提供的樣本交換合同,該合同已載入到Eosio.token,Exchange和Eosio.msig合同中。

確保eosio :: history_api_plugin正在執行

本教程使用cleos命令列工具來查詢帳戶的日誌歷史記錄。這需要安裝eosio :: history_api_plugin。如果您的nodeos未使用此外掛啟動,則需要重新啟動nodeos並在命令列中新增--plugin eosio :: history_api_plugin。

啟用日誌過濾

本教程依賴於來自nodeos的事務日誌記錄。在較早版本的nodeos中,歷史記錄外掛預設記錄所有帳戶的歷史記錄。現在,預設情況下,歷史外掛根本不會記錄transactiona,也不會顯式指定過濾。要記錄事務,請使用過濾器選項並指定您希望記錄的內容。格式為--filter-on <receiver>:<action>:[<actor>](actor可以為空以獲取全部內容)。將以下選項新增到yournodeos命令列以啟用對所有帳戶進行的認證xchangereceiver,transfer`操作的日誌過濾(不要忘記尾部的“:”):

--filter-on tokenxchange:transfer:

您需要篩選您想要跟蹤的每個接收器。 在這種情況下,將以下選項新增到nodeos:

  --filter-on tokenxchange:transfer: --filter-on scott:transfer: --filter-on eosio.token:transfer:

重譯區塊鏈

如果您已經在沒有歷史外掛的情況下同步了區塊鏈,那麼您可能需要重譯區塊鏈以獲取任何歷史活動。 將以下選項新增到您的nodeos命令列以重播區塊鏈。

  --replay-blockchain

你只需要重譯一次。隨後的節點執行不應使用重譯標誌,因為這可能會導致啟動時間過長。

設定其他帳戶

這裡設定的交易所將被稱為tokenxchange,以避免與交易賬戶和合約混淆。使用您從以前的教程中學到的知識建立一個名為tokenxchange的帳戶。

本教程使用名為scott的帳戶。使用你在前面的教程中學到的知識,建立一個名為scott的賬戶並存入900.0000 SYS。

接受充值

在本教程中,我們假設交易所將針對傳入交易對節點進行輪詢,並希望知道傳輸何時被認為是不可逆轉或最終的。

使用基於eosio的鏈,一旦2/3 + 1的塊生產者直接或間接確認該塊,交易就會發生終結。這可能需要不到一秒到幾分鐘的時間,但無論採用哪種方式,nodeos都會讓您釋出狀態。

初始條件

確認帳戶scott具有正確的令牌餘額。

$ cleos get currency balance eosio.token scott SYS
900.0000 SYS

現在我們將一些資金存入tokenxchange。在轉賬備忘錄中,我們將為scott使用一個獨特的內部識別符號,在這種情況下,值為“12345”。

 $ cleos transfer scott tokenxchange "1.0000 SYS" 12345
executed transaction: ce32ac1fbc96e74ea9318d5b18769be9d84f704c9c0f0eab23c6ce95e4b9ce49  136 bytes  505 us
#   eosio.token <= eosio.token::transfer        {"from":"scott","to":"tokenxchange","quantity":"1.0000 SYS","memo":"12345"}
#         scott <= eosio.token::transfer        {"from":"scott","to":"tokenxchange","quantity":"1.0000 SYS","memo":"12345"}
#  tokenxchange <= eosio.token::transfer        {"from":"scott","to":"tokenxchange","quantity":"1.0000 SYS","memo":"12345"}

此輸出表明行動eosio.token :: transfer已交付給三個帳戶/合同:“eosio.token”,“scott”和“tokenxchange”。 eosio令牌標準要求傳送方和接收方帳戶/合同都應得到所有傳輸操作的通知,以便這些帳戶可以執行自定義邏輯。此時,scott和tokenxchange都沒有任何合約集來處理此類通知,但事務日誌仍將顯示他們已收到通知。

區塊鏈技術社群