WavesKit - Framework PHP untuk bekerja dengan blockchain Waves

Saya suka PHP untuk kecepatan pengembangan dan portabilitas yang sangat baik. Sangat bagus bila Anda selalu memiliki alat yang siap untuk menyelesaikan masalah di saku Anda.

Sangat memalukan ketika berkenalan dengan blockchain domestik Platform Gelombang dia tidak memiliki PHP SDK yang sudah jadi di gudang senjatanya. Yah, aku harus menulisnya.

Awalnya saya harus menggunakan node untuk menandatangani transaksi. Jadi, untuk mengelola tiga alamat, Anda harus menjalankan tiga node ... Itu pemandangan yang menyedihkan, meskipun menyelesaikan beberapa masalah. Hingga muncul pemahaman bahwa mengandalkan node adalah jalan buntu. Pertama, karena fungsi yang terbatas API, kedua, karena kecepatannya (node ​​sangat lambat pada masa itu).

Saya memulai dua pekerjaan paralel. Salah satunya adalah membuat penjelajah blockchain yang cepat dan sepenuhnya independen dari API node. Yang kedua adalah mengumpulkan semua fungsi untuk bekerja dengan Waves Platform di satu tempat. Beginilah proyek-proyek itu muncul. w8io и GelombangKit.

Langkah pertama di balik layar blockchain Waves adalah peramban w8io. Itu tidak mudah, tetapi masih berhasil menulis perhitungan independen dari semua saldo dan bahkan menemukan kesalahan dalam perhitungan pada node asli (program hadiah bug Omong-omong, ini berhasil untuk mereka, mereka membayar untuk kesalahan yang ditemukan). Anda dapat mempelajari lebih lanjut tentang fungsionalitas browser w8io di utas ini: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Dalam proses mengerjakan w8io, saya sudah memiliki keraguan, tetapi ketika pekerjaan berakhir secara logis dan saya mulai membuat SDK, keraguan saya terkonfirmasi. Saya tidak dapat menemukan beberapa fungsi di mana pun, termasuk fungsi kriptografi yang paling penting. Kemudian saya mulai dengan membuat batu bata pondasi saya. Beginilah cara mereka dilahirkan: Kode ABC untuk menyandikan di base58 (sebenarnya untuk menyandikan alfabet apa pun ke apa pun), Curve25519 untuk membuat dan memverifikasi tanda tangan yang kompatibel (dengan opsi pada steroid), Blake2b untuk menghitung salah satu hash (yang baru tersedia sejak PHP 7.2), dll.

Di sini saya harus berterima kasih Inala Kardanova untuk beberapa nasihat berharga yang mengarahkan saya ke arah itu penyusun bukan yang biasa bagi saya, tapi ketinggalan zaman, sertakan file.

Setelah beberapa bulan WavesKit melihat cahaya hari, keluar versi beta dan sekarang siap bekerja dengan semua fungsionalitas standar platform Waves. Semua tersedia di jaringan utama transaksi dapat dengan mudah dibuat, ditandatangani, dan dikirim hanya dengan satu paket yang berjalan di semua versi 64-bit PHP mulai dari 5.6 inklusif.

Kami menghubungkan WavesKit ke proyek kami:

composer require deemru/waveskit

Kita gunakan:

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 );

Pada contoh di atas, kita membuat objek WavesKit yang berjalan di testnet "T". Kami menetapkan frase awal, dari mana kunci dan alamat akun dihitung secara otomatis berdasarkan kunci publik. Selanjutnya, kami membuat transaksi transfer 0.00000001 Gelombang dari alamat yang dihitung secara otomatis dari frase seed ke alamat alias "tes", transfer untuk ditandatangani dengan kunci pribadi dan kirimkan ke jaringan. Setelah itu, kami memastikan transaksi berhasil dikonfirmasi oleh jaringan.

Transaksi difokuskan pada fungsi dimulai dengan tx. Untuk pemahaman yang lebih baik tentang bekerja dengan transaksi, Anda dapat belajar dokumentasi WavesKit atau langsung ke contoh ilustratif di tes integrasi berkelanjutan.

Karena WavesKit telah dikembangkan dalam penggunaan nyata, ia sudah memiliki fitur-fitur canggih. Fitur pembunuh pertama adalah memastikan fungsi, yang mengontrol pencapaian tingkat kepercayaan yang diperlukan agar transaksi tidak hilang, tetapi sebaliknya, dikonfirmasi dan mencapai jumlah konfirmasi yang diperlukan di jaringan.

Mekanisme antipeluru lainnya adalah bagaimana WavesKit berkomunikasi dengan node. Dalam kondisi rumah kaca, kerangka kerja hanya bekerja dengan node utama, mempertahankan koneksi konstan dengannya, tetapi jika terjadi kesalahan, kerangka kerja dapat secara otomatis beralih ke cadangan. Jika Anda menyiapkan larik node siaga, Anda dapat memanggil fungsi tersebut setBestNode untuk menentukan node terbaik sebagai node utama dengan nilai maksimum dari ketinggian arus dan kecepatan respon. Sekarang tambahkan cache kueri internal ke dalamnya dan rasakan perhatian pengguna dan pemilik node.

Salah satu mekanisme canggih terbaru adalah fungsinya com.txMonitor. Hal itu muncul sehubungan dengan kebutuhan untuk merespon transaksi yang masuk secara real time. Fungsi ini sepenuhnya menyelesaikan semua nuansa yang terkait dengan pemrosesan transaksi di blockchain. Tidak perlu repot lagi, cukup atur fungsi panggilan balik Anda dengan opsi yang Anda inginkan dan tunggu transaksi baru untuk memulai proses Anda. Misalnya, salah satu proyek saya VEKRO sepenuhnya dibangun di sekitar fungsi ini, Anda dapat dengan mudah mempelajari cara kerjanya dengan benar dalam kode proyek.

Saya suka open source, itu salah satu pencapaian terbesar umat manusia. Karena saya satu-satunya pengembang dan telah mencapai keadaan di mana semua kebutuhan saya terpenuhi, saya mengundang Anda untuk menggunakan dan berkontribusi GelombangKit.

Sumber: www.habr.com

Tambah komentar