برقراری ارتباط با Node RPC با Web3.php

سلام خدمت جامعه توسعه دهندگان بلاکچین و قرار داد های هوشمند

در تاپیک قبلیم درباره ارتباط با یک نود RPC شبکه اتریومی نوشتم و با زبان پایتون با اون ارتباط برقرار کردیم

در این تاپیک قصد دارم اینکار رو با php کنم. چرا؟ چون php تقریبا روی هر وب سروری اجرا میشه و برای تست کردن روی هاست های اشتراکی که خیلی دم دست هستند مناسب هست

f4b1ed867f903661437779f548a5978e9a817f6b_2_690x192

تا به امروز هیچ پیاده سازی رسمی از web3 برای php وجود نداره اما من این مورد رو خیلی میپسندم و کار رو با همین جلو میبریم

چرا که جدای پیاده سازی خوبش سازنده خوش ذوقش یک ابزار cli-based مشابه ganache رو با php توسعه داده

بریم برای شروع :smiley:

نصب web3.php

در قدم اول باید مدیریت کننده پکیج های php رو نصب کنیم که میتونید بنا بر سیستم عاملی که باهاش کار میکنید نصبش کنید:

حالا با دستور زیر web3.php رو نصب میکنیم:

composer require web3-php/web3 dev-master

حالا composer شروع میکنه به ساخت فایلی با اسم composer.json و کتابخونه مورد نظر رو در همون دایرکتوری در دایرکتوری ای به نام vendor نصب میکنه. اگر که قبلا به شکل دستی وارد composer.json کردید با دستور زیر میتونید نصبش کنید:

composer install

اضافه کردن web3.php به پروژه

حالا میریم که web3.php رو به پروژمون اضافه کنیم:

<?php

include 'vendor/autoload.php';

use Web3\Web3;

$web3 = new Web3('https://testnet-rpc.coinex.net/');

خیلی خب حالا که web3 رو به پروژمون اضافه کردیم میریم تا مشابه ابزاری که در تاپیک قبلی ساختیم رو بسازیم

$accounts = $web3->eth()->accounts();
echo accounts[0];

در اینجا یک اکانت ساختیم و اون رو در متغیری به نام account ریختیم که در واقع یک ارایه ای از ادرس هایی که توسط این client تصاحب شدن رو ذخیره کرده که ادرس ما در اندیس 0 ام اون ذخیره شده.

حالا که ادرس داریم بریم یک تراکنش بسازیم

ساخت تراکنش

<?php

include 'vendor/autoload.php';

use Web3\Web3;
use Web3\ValueObjects\{Transaction, Wei};

$web3 = new Web3('https://testnet-rpc.coinex.net/');

$accounts = $web3->eth()->accounts();

$from = accounts[0];
$to = '0x108d1089e4a737c0be63527a6e464564be948b03';
$value = Wei::fromEth('1');

$transaction = Transaction::between($from, $to)->withValue($value);

$web3->eth()->sendTransaction($transaction); 


در کد بالا من مقدار یک اتر ( یا یک واحد از کوین شبکه اتریومی مورد نظر که در اینجا CSC هست ) رو به ادرس فوق ارسال کردم

حالا بریم ببینیم که بعد از این تراکنش بالانس کیف پولمون چقدر هست؟

Balance

برای گرفتن بالانس کیف پول از getBalance استفاده میکنیم:

$web3->eth()->getBalance(accounts[0])->toEth(); 

Gas Price

برای گرفتن gas price از شبکه میتونیم به این شکل عمل کنیم:

$web3->eth()->gasPrice()->toEth();

hashrate

برای گرفتن هش ریت شبکه به این شکل عمل میکنیم:

$web3->eth()->hashrate();

برای اشنایی با توابع بیشتر این کتابخونه میتونید به گیت هابش مراجعه کنید

ولی چه چیزایی میشه با این ساخت ؟ شما ایده بدین. من که میگم یه ربات کیف پول حضانتی برای tipping و یا نقل و انتقالات در شبکه های اجتماعی :yum: