эквивалент web3 js eth.contract в PHP

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);
Вы нашли ответ?
В основном мне пришлось преобразовать весь мой PHP в js/node.js, чтобы заставить его работать с использованием web3js. Затем я запускаю узел как cron на странице, недоступной из Интернета, из-за личного пароля разблокировки учетной записи, а пароль к RPC не может быть виден публике.
Милая, тогда, возможно, стоит ответить на твой собственный вопрос. Я бы сказал, что людям будут интересны подробности того, как вы это сделали!

Ответы (2)

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.

Надеюсь это поможет.

Я уже использую это в моем примере php транзакции отправки в моем сообщении с вопросом. Я специально прошу php-эквивалент var token = web3.eth.contract(ABI).at("x0x_contract_address"), чтобы я мог получить доступ к токену для передачи. Я пробовал $ethereum->eth_contract(ABI)->at('x0_contract address')
функция at(address)не соответствует конкретному JSON RPC API. ethereum.phpПоэтому эквивалентной функции в проекте вы не увидите . at(address)вызывается для получения доступа к существующему контракту в блокчейне. Под капотом, когда вы создаете новый Contract. Web3 просто вызывает стандартные функции JSON RPC, чтобы понравиться eth_sendTransaction. Вы не получите «чистый» API с оболочкой php, как с Web3js.
Эта библиотека полностью устарела.
На момент ответа на этот вопрос этого не было.
Он устарел с 2015 года ;)