WavesKit - 用於使用 Waves 區塊鏈的 PHP 框架

我喜歡 PHP 以實現開發速度和出色的可移植性。 當你口袋裡總有一個工具隨時可以解決問題時,這是非常好的。

剛開始接觸國內區塊鏈的時候,挺遺憾的 波浪平台 他的武器庫中沒有現成的 PHP SDK。 好吧,我必須寫它。

起初我不得不使用 節點 簽署交易。 所以,要管理三個位址,就需要啟動三個節點……雖然解決了一些問題,但還是很可憐。 直到人們認識到依賴節點是一條死胡同。 首先,由於功能有限 API,其次是因為速度(那時候節點非常慢)。

我開始了兩份並行的工作。 一是製作一個快速且完全獨立於節點 API 的區塊鏈瀏覽器。 第二個是將 Waves 平台使用的所有功能集中在一個地方。 項目就是這樣出現的 w8io и 波浪工具包.

Waves 區塊鏈幕後的第一步是 w8io瀏覽器。 這並不容易,但我們仍然設法編寫了所有餘額的獨立計算,甚至發現原始節點上的計算有錯誤(錯誤賞金計劃 順便說一句,這對他們有用,他們為發現的錯誤付出代價)。 您可以在本主題中了解有關 w8io 瀏覽器功能的更多資訊: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

在開發 w8io 時,我已經產生了懷疑,但是當工作達到邏輯終點並且我開始創建 SDK 時,我的懷疑得到了證實。 我在任何地方都找不到一些功能,包括最重要的功能,即加密功能。 然後我開始自己製作地基磚。 他們是這樣誕生的: AB程式碼 編碼為base58(實際上是將任何字母編碼為任何), 曲線25519 建立和驗證相容的簽名(使用選項 服用類固醇), 布雷克2b 計算哈希值之一(僅自 PHP 7.2 起可用)等。

這就是我要感謝的地方 伊娜拉·卡丹諾娃 一些寶貴的建議為我指明了方向 撰寫 而不是我熟悉但過時的包含文件。

幾個月後 WavesKit 發布, 出來 測試版 現在已準備好使用 Waves 平台的所有標準功能。 全部可用 主網 只需使用一個套件即可輕鬆建立、簽署和發送交易,該套件可在 PHP 64 及以上的所有 5.6 位元版本上運行。

我們將 WavesKit 連接到我們的專案:

composer require deemru/waveskit

我們用:

use deemruWavesKit;
$wk = new WavesKit( 'T' );
$wk->setSeed( 'manage manual recall harvest series desert melt police rose hollow moral pledge kitten position add' );
$tx = $wk->txBroadcast( $wk->txSign( $wk->txTransfer( 'test', 1 ) ) );
$tx = $wk->ensure( $tx );

在上面的範例中,我們建立了一個在「T」測試網路上執行的 WavesKit 物件。 我們安裝一個種子短語,根據公鑰自動計算金鑰和帳戶地址。 接下來,我們建立一筆轉帳交易 0.00000001 Waves,從使用助記詞自動計算的地址到別名地址“test”,轉帳以使用私鑰簽署並發送到網路。 之後,我們確保交易成功被網路確認。

事務處理工作集中於 以 tx 開頭的函數。 為了更好地理解事務處理,您可以學習 WavesKit 文檔 或立即轉向說明性範例 持續集成測試.

由於 WavesKit 已在實際使用中開發,因此它已經具有高級功能。 第一個殺手級功能是 確保功能,它控制著交易沒有遺失,而是被確認並達到網路中所需確認數量的所需置信度的實現。

另一個防彈機制是 WavesKit 如何與節點通訊。 在溫室條件下,該框架僅與主節點一起工作,與其保持持續連接,但如果發生錯誤,它可以自動切換到備份節點。 如果設定了備份節點數組,可以呼叫函數 設定最佳節點 根據目前高度的最大值和響應速度確定最佳節點作為主節點。 現在添加一個內部查詢緩存,並感受到對用戶和節點所有者的關心。

最新的先進機制之一是功能 發送監視器。 它的出現是因為需要即時回應傳入的交易。 該功能完全解決了與處理區塊鏈中的交易相關的所有細微差別。 不再痛苦,只需使用所需的選項設定回調函數,然後等待新交易啟動您的流程即可。 例如我的另一個項目 維可羅 完全圍繞這個功能構建,您可以輕鬆地直接研究它是如何工作的 在專案程式碼中.

我喜歡開源,這是人類最偉大的成就之一。 由於我是唯一的開發者,並且已經達到了我所有需求都已解決的狀態,因此我邀請您使用並做出貢獻 波浪工具包.

來源: www.habr.com

添加評論