سلام خدمت جامعه توسعه دهندگان بلاکچین و قرار داد های هوشمند
در تاپیک قبلیم درباره ارتباط با یک نود RPC شبکه اتریومی نوشتم و با زبان پایتون با اون ارتباط برقرار کردیم
در این تاپیک قصد دارم اینکار رو با php کنم. چرا؟ چون php تقریبا روی هر وب سروری اجرا میشه و برای تست کردن روی هاست های اشتراکی که خیلی دم دست هستند مناسب هست
تا به امروز هیچ پیاده سازی رسمی از web3 برای php وجود نداره اما من این مورد رو خیلی میپسندم و کار رو با همین جلو میبریم
چرا که جدای پیاده سازی خوبش سازنده خوش ذوقش یک ابزار cli-based مشابه ganache رو با php توسعه داده
بریم برای شروع
نصب 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 و یا نقل و انتقالات در شبکه های اجتماعی