var Web3 = require('web3');
var web3 = new Web3();
web3.setProvider(new web3.providers.HttpProvider("http://blahblah.com:8545"));
var token = web3.eth.contract(ABI).at("x0x_contract_address")
Как это будет сделано в PHP?
Например, с библиотекой ethereum.php, которую я использую, я могу делать такие вещи:
$data = new Ethereum_Transaction($users_eth_address, "x0_eth_address, $gas, $gasPrice, $hex_balance);
$result = $ethereum->eth_sendTransaction($data);
btelle/ethereum-php неполный и устаревший. Последний коммит датирован 2015 годом.
Вы можете использовать digitaldonkey/ethereum-php
// The json file "$fileName" used is what you get when you compile a contract with Truffle.
$ContractMeta = json_decode(file_get_contents($fileName));
$contract = new SmartContract(
$ContractMeta->abi,
$ContractMeta->networks->{NETWORK_ID}->address,
new Ethereum(SERVER_URL)
);
$someBytes = new EthBytes('34537ce3a455db6b')
$x = $contract->myContractMethod();
echo $x->val()
Согласно репозиторию
// include the class file
require 'ethereum.php';
// create a new object
$ethereum = new Ethereum('127.0.0.1', 8545);
// do your thing
echo $ethereum->net_version();
Это позволит вам подключиться к локальному экземпляру Geth на вашем компьютере, который прослушивает порт 8545
.
Чтобы получить доступ к контракту, обратитесь к test.php
файлу, который содержит дополнительные примеры того, как использовать доступные вам функции.
Документация по JSON RPC API может оказаться особенно полезной здесь. Это связано с тем, что ethereum.php
проект, по сути, является просто оболочкой реализации Ethereum, работающей на localhost:8545
.
Надеюсь это поможет.
at(address)
не соответствует конкретному JSON RPC API. ethereum.php
Поэтому эквивалентной функции в проекте вы не увидите . at(address)
вызывается для получения доступа к существующему контракту в блокчейне. Под капотом, когда вы создаете новый Contract. Web3 просто вызывает стандартные функции JSON RPC, чтобы понравиться eth_sendTransaction
. Вы не получите «чистый» API с оболочкой php, как с Web3js.
Мэлоун
Марк Александр
Мэлоун