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;
    }
});

0 ответов

Другие вопросы по тегам