WavesKit - เฟรมเวิร์ก PHP สำหรับการทำงานร่วมกับ Waves blockchain

Мненравится PHP เพื่อความรวดเร็วในการพัฒนาและการพกพาที่ดีเยี่ยม จะดีมากเมื่อคุณมีเครื่องมือสำหรับแก้ปัญหาติดกระเป๋าอยู่เสมอ

เป็นเรื่องน่าละอายเมื่อทำความคุ้นเคยกับบล็อกเชนในประเทศ เวฟส์ แพลตฟอร์ม เขาไม่มี PHP SDK สำเร็จรูปในคลังแสงของเขา ฉันต้องเขียนมัน

ตอนแรกฉันต้องใช้ โหนด เพื่อลงนามการทำธุรกรรม ดังนั้นเพื่อจัดการที่อยู่สามแห่งคุณต้องเรียกใช้โหนดสามโหนด ... เป็นภาพที่น่าสมเพชแม้ว่ามันจะแก้ปัญหาบางอย่างได้ จนเกิดความเข้าใจว่าการอาศัยโหนเป็นทางตัน ประการแรก เนื่องจากฟังก์ชันการทำงานที่จำกัด APIประการที่สองเนื่องจากความเร็ว (โหนดช้ามากในสมัยนั้น)

ฉันเริ่มงานสองงานคู่ขนานกัน หนึ่งคือการสร้าง blockchain explorer ที่รวดเร็วและเป็นอิสระจาก node API อย่างสมบูรณ์ ประการที่สองคือการรวบรวมฟังก์ชั่นทั้งหมดสำหรับการทำงานร่วมกับ Waves Platform ไว้ในที่เดียว นี่คือที่มาของโครงการ w8io и เวฟคิท.

ขั้นตอนแรกที่อยู่เบื้องหลังของ Waves blockchain คือ เบราว์เซอร์ w8io. ไม่ใช่เรื่องง่าย แต่ก็ยังสามารถเขียนการคำนวณยอดคงเหลือทั้งหมดได้อย่างอิสระและยังพบข้อผิดพลาดในการคำนวณบนโหนดดั้งเดิม (โปรแกรมรางวัลบั๊ก อย่างไรก็ตาม มันได้ผลสำหรับพวกเขา พวกเขาจ่ายสำหรับข้อผิดพลาดที่พบ) คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการทำงานของเบราว์เซอร์ w8io ในหัวข้อนี้: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

ในกระบวนการทำงานกับ w8io ฉันมีข้อสงสัยอยู่แล้ว แต่เมื่องานมาถึงจุดสิ้นสุดเชิงตรรกะ และฉันเริ่มสร้าง SDK ข้อสงสัยของฉันก็ได้รับการยืนยัน ฉันไม่พบฟังก์ชันบางอย่างที่ใดก็ได้ รวมถึงฟังก์ชันการเข้ารหัสที่สำคัญที่สุด จากนั้นฉันก็เริ่มด้วยการก่ออิฐฐานรากของฉัน นี่คือวิธีที่พวกเขาเกิดมา: ABCcode เพื่อเข้ารหัสใน base58 (จริง ๆ แล้วเพื่อเข้ารหัสตัวอักษรใด ๆ ก็ตาม) Curve25519 เพื่อสร้างและตรวจสอบลายเซ็นที่เข้ากันได้ (พร้อมตัวเลือก เกี่ยวกับสเตียรอยด์), เบลค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 );

ในตัวอย่างข้างต้น เราสร้างวัตถุ WavesKit ที่ทำงานบน testnet "T" เราตั้งค่าวลีเริ่มต้นซึ่งคีย์และที่อยู่ของบัญชีจะถูกคำนวณโดยอัตโนมัติตามคีย์สาธารณะ ต่อไป เราสร้างธุรกรรมการถ่ายโอน 0.00000001 Waves จากที่อยู่ซึ่งคำนวณโดยอัตโนมัติจากวลีเริ่มต้นไปยังที่อยู่ของนามแฝง "ทดสอบ" ถ่ายโอนเพื่อลงนามด้วยรหัสส่วนตัว และส่งไปยังเครือข่าย หลังจากนั้นเราตรวจสอบให้แน่ใจว่าธุรกรรมได้รับการยืนยันจากเครือข่ายเรียบร้อยแล้ว

การทำธุรกรรมมุ่งเน้นไปที่ ฟังก์ชันที่ขึ้นต้นด้วย tx. เพื่อความเข้าใจที่ดียิ่งขึ้นเกี่ยวกับการทำงานกับธุรกรรม คุณสามารถศึกษาได้ เอกสาร WavesKit หรือตรงไปที่ตัวอย่างประกอบใน การทดสอบการรวมอย่างต่อเนื่อง.

เนื่องจาก WavesKit ได้รับการพัฒนาในการใช้งานจริง จึงมีคุณสมบัติขั้นสูงอยู่แล้ว คุณสมบัตินักฆ่าคนแรกคือ ตรวจสอบการทำงานซึ่งควบคุมความสำเร็จของระดับความเชื่อมั่นที่ต้องการว่าการทำธุรกรรมไม่สูญหาย แต่ในทางกลับกันได้รับการยืนยันและถึงจำนวนการยืนยันที่ต้องการในเครือข่าย

กลไกกันกระสุนอีกอย่างคือวิธีที่ WavesKit สื่อสารกับโหนด ในสภาวะเรือนกระจก เฟรมเวิร์กจะทำงานเฉพาะกับโหนดหลัก โดยรักษาการเชื่อมต่อกับมันอย่างต่อเนื่อง แต่ในกรณีที่เกิดข้อผิดพลาด เฟรมเวิร์กจะสลับไปใช้โหนดสำรองได้โดยอัตโนมัติ หากคุณกำลังตั้งค่าอาร์เรย์ของโหนดสแตนด์บาย คุณสามารถเรียกใช้ฟังก์ชันได้ setBestNode เพื่อกำหนดโหนดที่ดีที่สุดเป็นโหนดหลักด้วยค่าสูงสุดของความสูงปัจจุบันและความเร็วในการตอบสนอง ตอนนี้เพิ่มแคชแบบสอบถามภายในและรู้สึกถึงการดูแลของทั้งผู้ใช้และเจ้าของโหนด

หนึ่งในกลไกขั้นสูงล่าสุดคือฟังก์ชัน txMonitor.txMonitor. ดูเหมือนว่าจะเกี่ยวข้องกับความจำเป็นในการตอบสนองต่อธุรกรรมที่เข้ามาแบบเรียลไทม์ ฟังก์ชันนี้ช่วยแก้ปัญหาความแตกต่างทั้งหมดที่เกี่ยวข้องกับการประมวลผลธุรกรรมในบล็อกเชนได้อย่างสมบูรณ์ ไม่ต้องเจ็บปวดอีกต่อไป เพียงตั้งค่าฟังก์ชันการโทรกลับด้วยตัวเลือกที่คุณต้องการ และรอธุรกรรมใหม่เพื่อเริ่มกระบวนการของคุณ ตัวอย่างเช่น อีกหนึ่งโครงการของฉัน เวคโคร สร้างขึ้นจากฟังก์ชันนี้อย่างสมบูรณ์ คุณสามารถเรียนรู้วิธีการทำงานได้อย่างถูกต้อง ในรหัสโครงการ.

ฉันชอบโอเพ่นซอร์ส มันเป็นหนึ่งในความสำเร็จที่ยิ่งใหญ่ที่สุดของมนุษยชาติ เนื่องจากฉันเป็นนักพัฒนาเพียงรายเดียวและได้มาถึงสถานะที่ความต้องการทั้งหมดของฉันได้รับการแก้ไขแล้ว ฉันจึงขอเชิญชวนให้คุณใช้และมีส่วนร่วม เวฟคิท.

ที่มา: will.com

เพิ่มความคิดเห็น