Saya suka PHP karena kecepatan pengembangan dan portabilitasnya yang luar biasa. Ini sangat baik ketika selalu ada alat yang siap untuk memecahkan masalah di saku Anda.
Agak mengecewakan ketika, ketika bertemu dengan blockchain Waves Platform domestik, tidak ada SDK PHP siap pakai di gudang senjata. Yah, aku harus menulisnya.
Pada awalnya, saya harus menggunakan node untuk menandatangani transaksi. Jadi, untuk mengelola tiga alamat, tiga node harus diluncurkan ... Itu adalah pemandangan yang menyedihkan, meskipun itu memecahkan beberapa masalah. Sampai suatu pemahaman muncul bahwa mengandalkan node adalah jalan buntu. Pertama, karena fungsionalitas API yang terbatas, dan kedua, karena kecepatannya (pada masa itu, simpulnya sangat lambat).
Saya memulai dua karya paralel. Salah satunya adalah membuat browser blockchain yang akan cepat dan sepenuhnya independen dari node API. Yang kedua adalah mengumpulkan semua fungsi untuk bekerja dengan Waves Platform di satu tempat. Jadi ada proyek w8io dan WavesKit .
Langkah pertama di belakang layar Wchain blockchain adalah browser w8io . Itu tidak mudah, tetapi masih mungkin untuk menulis perhitungan independen dari semua saldo dan bahkan menemukan kesalahan dalam perhitungan pada node asli ( program bug-bounty, omong - omong, bekerja untuk mereka, mereka membayar kesalahan yang ditemukan). Anda dapat mempelajari lebih lanjut tentang fungsionalitas browser w8io dalam topik ini: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite
Dalam proses pengerjaan w8io, saya sudah memiliki keraguan, tetapi ketika pekerjaan berakhir secara logis dan saya mulai membuat SDK, keraguan tersebut dikonfirmasi. Saya tidak dapat menemukan beberapa fungsi di mana pun, termasuk yang paling penting, kriptografi. Kemudian saya mulai dengan membuat batu bata sendiri untuk yayasan. Jadi mereka dilahirkan: ABCode untuk pengkodean di base58 (sebenarnya untuk pengkodean alfabet apa pun di mana saja), Curve25519 untuk membuat dan memeriksa tanda tangan yang kompatibel (dengan opsi pada steroid ), Blake2b untuk menghitung salah satu hash (yang hanya tersedia dimulai dengan PHP 7.2) dll.
Di sini saya harus berterima kasih kepada Inal Kardanov untuk beberapa tips berharga yang mengarahkan saya ke arah komposer, bukan yang biasa, tetapi sudah ketinggalan zaman, termasuk file.
Setelah beberapa bulan, WavesKit melihat cahaya , meninggalkan versi beta dan sekarang siap untuk bekerja dengan semua fungsionalitas platform Waves standar. Semua transaksi yang tersedia di jaringan utama dapat dengan mudah dibuat, ditandatangani, dan dikirim hanya dengan menggunakan satu paket yang berjalan pada semua versi PHP 64-bit mulai dari 5,6 inklusif.
Kami menghubungkan WavesKit ke proyek kami:
composer require deemru/waveskit
Kami menggunakan:
use deemru\WavesKit; $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 );
Dalam contoh di atas, kami membuat objek WavesKit yang berjalan di jaringan uji "T". Tetapkan frase awal dari mana kunci dan alamat akun dihitung secara otomatis berdasarkan kunci publik. Selanjutnya, kami membuat transaksi transfer 0,00000001 Gelombang dari frase alamat secara otomatis dihitung menggunakan frase seed ke alias alamat "test", transfer untuk tanda tangan dengan kunci pribadi dan mengirimkannya ke jaringan. Setelah ini, kami memverifikasi bahwa transaksi telah berhasil dikonfirmasi oleh jaringan.
Bekerja dengan transaksi terkonsentrasi pada fungsi yang dimulai dengan tx . Untuk pemahaman yang lebih baik tentang bekerja dengan transaksi, Anda dapat mempelajari dokumentasi WavesKit atau segera beralih ke contoh visual dalam tes integrasi berkelanjutan .
Karena WavesKit telah berkembang di bawah kondisi dunia nyata, ia sudah memiliki fitur-fitur canggih. Fitur pembunuh pertama adalah fungsi memastikan , yang mengontrol pencapaian tingkat kepercayaan yang diperlukan agar transaksi tidak hilang, tetapi lebih dikonfirmasi dan mencapai jumlah konfirmasi yang diperlukan pada 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, ia dapat secara otomatis beralih ke node cadangan. Jika Anda memasang larik node cadangan, Anda dapat memanggil fungsi setBestNode untuk menentukan simpul terbaik sebagai simpul utama dengan nilai maksimum tinggi saat ini dan kecepatan respons. Sekarang tambahkan ke cache permintaan internal ini dan rasakan kepedulian pengguna dan pemilik node.
Salah satu mekanisme canggih terbaru adalah fungsi txMonitor . Dia muncul sehubungan dengan kebutuhan untuk menanggapi transaksi yang masuk secara real time. Fungsi ini sepenuhnya menyelesaikan semua nuansa yang terkait dengan pemrosesan transaksi di blockchain. Tidak ada lagi rasa sakit, cukup instal fungsi panggilan balik Anda dengan opsi yang diinginkan dan tunggu transaksi baru yang akan memulai proses Anda. Misalnya, proyek VECRO saya yang lain sepenuhnya dibangun di sekitar fungsi ini, Anda dapat dengan mudah mempelajari cara kerjanya langsung dalam kode proyek .
Saya suka open source, ini adalah salah satu pencapaian terbesar umat manusia. Karena saya adalah satu-satunya pengembang dan telah mencapai titik bahwa semua kebutuhan saya telah diselesaikan, saya mengundang Anda untuk menggunakan dan berkontribusi pada WavesKit .