WavesKit - چارچوب PHP برای کار با بلاک چین Waves

Мне нравится پی اچ پی برای سرعت توسعه و قابلیت حمل عالی. خیلی خوب است که همیشه ابزاری در جیب خود داشته باشید که برای حل مشکلات آماده است.

وقتی با بلاک چین داخلی آشنا شدیم بسیار شرم آور بود سکوی امواج او یک PHP SDK آماده در زرادخانه خود نداشت. خب مجبور شدم بنویسمش

ابتدا مجبور شدم استفاده کنم گره ها برای امضای معاملات بنابراین، برای مدیریت سه آدرس، نیاز به راه اندازی سه گره بود... منظره رقت انگیزی بود، هرچند مشکلاتی را حل کرد. تا اینکه فهمیدیم تکیه بر گره ها بن بست است. اولا، به دلیل عملکرد محدود APIثانیاً به دلیل سرعت (آن روزها گره ها بسیار کند بودند).

دو کار موازی شروع کردم. یکی ساختن یک کاوشگر بلاک چین است که سریع و کاملا مستقل از Node API باشد. دوم این است که تمام عملکردهای کار با Waves Platform را در یک مکان جمع آوری کنید. اینگونه بود که پروژه ها ظاهر شدند w8io и WavesKit.

اولین قدم در پشت صحنه بلاک چین امواج بود مرورگر w8io. کار آسانی نبود، اما ما هنوز موفق شدیم یک محاسبه مستقل از تمام موجودی ها بنویسیم و حتی یک خطا در محاسبات روی گره های اصلی پیدا کنیم (برنامه bug-bounty به هر حال، برای آنها کار می کند، آنها برای خطاهای یافت شده پرداخت می کنند). در این مبحث می توانید در مورد عملکرد مرورگر w8io بیشتر بدانید: https://forum.wavesplatform.com/t/w8io-waves-explorer-based-on-php-sqlite

در حین کار روی w8io قبلاً شک داشتم اما وقتی کار به پایان منطقی خود رسید و شروع به ساخت SDK کردم شکم تأیید شد. من هیچ جا نتوانستم برخی از توابع را پیدا کنم، از جمله مهمترین آنها، موارد رمزنگاری. سپس با ساختن آجرهای خودم برای فونداسیون شروع کردم. اینگونه به دنیا آمدند: کد ABC برای رمزگذاری به base58 (در واقع برای رمزگذاری هر الفبای به هر کدام)، منحنی 25519 برای ایجاد و تأیید امضاهای سازگار (با گزینه‌ها روی استروئیدها), Blake2b برای محاسبه یکی از هش ها (که فقط از زمان PHP 7.2 موجود بود) و غیره.

اینجاست که باید تشکر کنم اینالا کاردانووا برای توصیه های ارزشمندی که به من اشاره کرد آهنگساز به جای شامل فایل هایی که برای من آشنا هستند، اما قدیمی هستند.

بعد از یکی دو ماه WavesKit منتشر شد، بیرون آمد نسخه های بتا و اکنون آماده کار با تمام عملکردهای استاندارد پلت فرم Waves است. همه موجود در شبکه اصلی تراکنش‌ها را می‌توان به راحتی با استفاده از یک بسته ایجاد، امضا و ارسال کرد، که در تمام نسخه‌های 64 بیتی PHP از نسخه 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 ایجاد می کنیم که روی شبکه آزمایشی "T" اجرا می شود. ما یک عبارت seed را نصب می کنیم که از آن کلیدها و آدرس حساب به طور خودکار بر اساس کلید عمومی محاسبه می شود. در مرحله بعد، ما یک تراکنش انتقال 0.00000001 Waves از آدرسی که به طور خودکار با استفاده از عبارت seed محاسبه می شود به آدرس مستعار "test" ایجاد می کنیم، آن را برای امضا با یک کلید خصوصی منتقل می کنیم و آن را به شبکه ارسال می کنیم. پس از این کار، مطمئن می شویم که تراکنش با موفقیت توسط شبکه تایید شده است.

کار با معاملات متمرکز در توابعی که با tx شروع می شوند. برای درک بهتر کار با تراکنش ها می توانید مطالعه کنید مستندات WavesKit یا بلافاصله به مثال های گویا در تست های ادغام مداوم.

از آنجایی که WavesKit برای استفاده در دنیای واقعی توسعه یافته است، در حال حاضر دارای ویژگی های پیشرفته است. اولین ویژگی قاتل این است اطمینان از عملکرد، که دستیابی به سطح اطمینان لازم را کنترل می کند که تراکنش از بین نرفت، بلکه برعکس، تأیید شد و به تعداد مورد نیاز تأیید در شبکه رسید.

یکی دیگر از مکانیسم های ضد گلوله نحوه ارتباط WavesKit با گره ها است. در شرایط گلخانه ای، چارچوب فقط با گره اصلی کار می کند و ارتباط ثابتی با آن حفظ می کند، اما در صورت بروز خطا، می تواند به طور خودکار به موارد پشتیبان تبدیل شود. اگر آرایه ای از گره های پشتیبان تنظیم کنید، می توانید تابع را فراخوانی کنید setBestNode برای تعیین بهترین گره به عنوان گره اصلی بر اساس حداکثر مقدار ارتفاع فعلی و سرعت پاسخ. اکنون به این یک کش کوئری داخلی اضافه کنید و احساس کنید که به کاربران و صاحبان گره ها اهمیت می دهید.

یکی از جدیدترین مکانیزم های پیشرفته، عملکرد است txMonitor. به دلیل نیاز به پاسخگویی به تراکنش های دریافتی در زمان واقعی ظاهر شد. این تابع به طور کامل تمام تفاوت های ظریف مرتبط با پردازش تراکنش ها در بلاک چین را حل می کند. دیگر هیچ دردسری ندارید، کافی است عملکرد برگشت تماس خود را با گزینه های مورد نظر تنظیم کنید و منتظر بمانید تا تراکنش های جدید فرآیندهای شما را آغاز کنند. مثلا یکی دیگر از پروژه های من VECRO به طور کامل حول این تابع ساخته شده است، شما به راحتی می توانید نحوه عملکرد آن را مستقیما مطالعه کنید در کد پروژه.

من عاشق منبع باز هستم، این یکی از بزرگترین دستاوردهای بشریت است. از آنجایی که من تنها توسعه دهنده هستم و به وضعیتی رسیده ام که تمام نیازهای من برطرف شده است، از شما دعوت می کنم از شما استفاده کنید و در آن مشارکت کنید WavesKit.

منبع: www.habr.com

اضافه کردن نظر