WavesKit - Khung PHP để làm việc với chuỗi khối Waves

như PHP cho tốc độ phát triển và tính di động tuyệt vời. Sẽ rất tốt khi bạn luôn có sẵn một công cụ trong túi, sẵn sàng giải quyết vấn đề.

Thật là xấu hổ khi làm quen với blockchain trong nước Nền tảng sóng anh ấy không có SDK PHP làm sẵn trong kho vũ khí của mình. Vâng, tôi đã phải viết nó.

Lúc đầu tôi phải sử dụng điểm giao để ký giao dịch. Vì vậy, để quản lý ba địa chỉ, cần phải khởi chạy ba nút... Đó là một cảnh tượng đáng thương, mặc dù nó đã giải quyết được một số vấn đề. Cho đến khi hiểu ra rằng việc dựa vào các nút là một ngõ cụt. Thứ nhất, do chức năng hạn chế API, thứ hai, vì tốc độ (thời đó các nút rất chậm).

Tôi bắt đầu hai công việc song song. Một là tạo ra một trình khám phá blockchain nhanh và hoàn toàn độc lập với API nút. Thứ hai là tập hợp tất cả các chức năng để làm việc với Nền tảng Waves vào một nơi. Đây là cách các dự án xuất hiện w8io и SóngKit.

Bước đầu tiên đằng sau hậu trường của chuỗi khối Waves là trình duyệt w8io. Điều đó không hề dễ dàng, nhưng chúng tôi vẫn có thể viết một phép tính độc lập cho tất cả số dư và thậm chí tìm thấy lỗi trong phép tính trên các nút ban đầu (chương trình tiền thưởng lỗi Nhân tiện, nó có tác dụng với họ, họ trả tiền cho những lỗi được tìm thấy). Bạn có thể tìm hiểu thêm về chức năng của trình duyệt w8io trong chủ đề này: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

Khi làm việc trên w8io, tôi đã có những nghi ngờ, nhưng khi công việc đi đến hồi kết hợp lý và tôi bắt đầu tạo SDK, những nghi ngờ của tôi đã được xác nhận. Tôi không thể tìm thấy một số chức năng ở bất cứ đâu, kể cả những chức năng quan trọng nhất, chức năng mật mã. Sau đó, tôi bắt đầu bằng việc tự làm gạch cho phần móng. Đây là cách họ được sinh ra: Mã ABC để mã hóa thành base58 (thực ra là mã hóa bất kỳ bảng chữ cái nào thành bất kỳ bảng chữ cái nào), Curve25519 để tạo và xác minh chữ ký tương thích (với các tùy chọn trên steroid), Blake2b để tính toán một trong các giá trị băm (chỉ có từ PHP 7.2), v.v.

Đây là nơi tôi phải cảm ơn Inala Kardanova vì một số lời khuyên có giá trị đã chỉ cho tôi phương hướng nhà soạn nhạc thay vì các tệp đính kèm quen thuộc với tôi nhưng đã lỗi thời.

Sau vài tháng WavesKit đã được phát hành, đi ra phiên bản beta và hiện đã sẵn sàng hoạt động với tất cả chức năng tiêu chuẩn của nền tảng Waves. Tất cả đều có sẵn ở mạng chính các giao dịch có thể được tạo, ký và gửi dễ dàng chỉ bằng một gói, chạy trên tất cả các phiên bản PHP 64-bit kể từ 5.6.

Chúng tôi kết nối WavesKit với dự án của mình:

composer require deemru/waveskit

Chúng tôi sử dụng:

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

Trong ví dụ trên, chúng tôi tạo một đối tượng WavesKit chạy trên testnet “T”. Chúng tôi cài đặt một cụm từ gốc mà từ đó các khóa và địa chỉ tài khoản được tự động tính toán dựa trên khóa chung. Tiếp theo, chúng tôi tạo một giao dịch chuyển 0.00000001 Sóng từ địa chỉ được tính toán tự động bằng cách sử dụng cụm từ hạt giống đến địa chỉ bí danh “kiểm tra”, chuyển nó để được ký bằng khóa riêng và gửi nó vào mạng. Sau đó, chúng tôi đảm bảo rằng giao dịch được mạng xác nhận thành công.

Công việc với các giao dịch tập trung ở các hàm bắt đầu bằng tx. Để hiểu rõ hơn về cách làm việc với các giao dịch, bạn có thể nghiên cứu Tài liệu WaveKit hoặc chuyển ngay sang ví dụ minh họa trong kiểm tra tích hợp liên tục.

Vì WavesKit đã được phát triển để sử dụng trong thế giới thực nên nó đã có các tính năng nâng cao. Tính năng sát thủ đầu tiên là đảm bảo chức năng, kiểm soát việc đạt được mức độ tin cậy cần thiết rằng giao dịch không bị mất mà ngược lại, đã được xác nhận và đạt số lượng xác nhận cần thiết trong mạng.

Một cơ chế chống đạn khác là cách WavesKit giao tiếp với các nút. Trong điều kiện nhà kính, khung chỉ hoạt động với nút chính, duy trì kết nối liên tục với nó, nhưng trong trường hợp có lỗi, nó có thể tự động chuyển sang nút dự phòng. Nếu bạn thiết lập một loạt các nút dự phòng, bạn có thể gọi hàm setBestNode để xác định nút tốt nhất làm nút chính dựa trên giá trị tối đa của chiều cao và tốc độ phản hồi hiện tại. Bây giờ hãy thêm vào bộ đệm truy vấn nội bộ này và cảm thấy được chăm sóc cho cả người dùng và chủ sở hữu nút.

Một trong những cơ chế tiên tiến mới nhất là chức năng txMonitor. Nó xuất hiện do nhu cầu đáp ứng các giao dịch đến trong thời gian thực. Chức năng này giải quyết hoàn toàn mọi sắc thái liên quan đến việc xử lý các giao dịch trong blockchain. Không còn khó khăn nữa, chỉ cần thiết lập chức năng gọi lại với các tùy chọn mong muốn và đợi các giao dịch mới bắt đầu quy trình của bạn. Ví dụ, một dự án khác của tôi VECRO được xây dựng hoàn toàn xung quanh chức năng này, bạn có thể dễ dàng nghiên cứu cách thức hoạt động của nó một cách trực tiếp trong mã dự án.

Tôi yêu nguồn mở, đó là một trong những thành tựu vĩ đại nhất của nhân loại. Vì tôi là nhà phát triển duy nhất và đã đạt đến trạng thái giải quyết được mọi nhu cầu của mình nên tôi mời bạn sử dụng và đóng góp cho SóngKit.

Nguồn: www.habr.com

Thêm một lời nhận xét