web3 подключиться к тестовой сети
Я пытаюсь подключиться через web3.php к смарт-контракту, опубликованному в тестовой сети ropsten через метамаску. Я использовал следующую библиотеку web3.php: ( https://github.com/sc0Vu/web3.php). Для создания сервера rpc я использовал ethereum go и выполнил следующие команды:
geth --testnet removedb
geth --testnet --rpc
Который должен сделать тестовый узел, подключенный к тестовой сети ropsten. Теперь я запускаю следующий код в php, но результат, который я получаю, всегда равен "0x0", что означает, что он не находит умный контракт. У кого-нибудь есть идея, почему он не находит контракт в тестовой сети ropsten? Я думаю, что почему-то я не связан с этим с ethereum-go. Я также опубликовал смарт-контракт на локальном testrpc, где он отлично работает.
<?php
require('vendor/autoload.php');
use Web3\Web3;
use Web3\Contract;
use Web3\Providers\HttpProvider;
use Web3\RequestManagers\HttpRequestManager;
$abi='[
{
"constant": true,
"inputs": [],
"name": "value",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getValue",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
}
]';
$web3 = new Web3(new HttpProvider(new HttpRequestManager('http://localhost:8545')));
$contract = new Contract($web3->provider, $abi);
$contractAddress='0x3ed9bd43bb425c0acc202421f54e8de72b8d91f9';
$functionName='getValue';
$contract->at($contractAddress)->call($functionName, function ($err, $result) use ($contract) {
if ($err !== null) {
echo "error";
throw $err;
}
if ($result) {
echo $result;
}
});