web3 js eth.contrato equivalente en 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")

¿Cómo se haría esto en PHP?

Por ejemplo, con la biblioteca ethereum.php que uso, puedo hacer cosas como esta:

$data = new Ethereum_Transaction($users_eth_address, "x0_eth_address, $gas, $gasPrice, $hex_balance);
$result = $ethereum->eth_sendTransaction($data);
¿Encontraste una respuesta?
Básicamente tuve que convertir todo mi PHP a js/node.js para que funcionara usando web3js. Luego, ejecuto el nodo como un cron en una página a la que no se puede acceder desde la web debido a que la contraseña de la cuenta de desbloqueo personal y la contraseña del RPC no pueden ser visibles para el público.
Dulce, entonces podría valer la pena responder tu propia pregunta. ¡Diría que la gente estaría interesada en los detalles de cómo lo hiciste!

Respuestas (2)

btelle/ethereum-php está incompleto y desactualizado. El último compromiso es de 2015.

Podrías usar 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()

Según el depósito

// 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();

Esto le permitirá conectarse a una instancia local de Geth en su máquina escuchando en el puerto 8545.

Para acceder a un contrato, consulte el test.phparchivo que incluye más ejemplos de cómo hacer uso de las funciones disponibles para usted.

Puede encontrar la documentación para la API JSON RPC particularmente útil aquí. Esto se debe a que el ethereum.phpproyecto es esencialmente solo un contenedor de la implementación de Ethereum que se ejecuta en localhost:8545.

Espero que esto ayude.

Ya estoy usando esto a través de mi ejemplo de php de transacción de envío en mi publicación de preguntas. Solicito específicamente el equivalente en php de var token = web3.eth.contract(ABI).at("x0x_contract_address") para poder acceder al token para transferir. Probé $ethereum->eth_contract(ABI)->at('x0_contract address')
la at(address)función no corresponde a una API JSON RPC en particular. Por lo tanto, no verá una función equivalente en el ethereum.phpproyecto. at(address)se llama para obtener acceso al contrato existente en una cadena de bloques. Bajo el capó, cuando crea un nuevo contrato. Web3 solo está invocando funciones JSON RPC estándar para dar me gusta eth_sendTransaction. No obtendrá una API tan "limpia" con el contenedor php como lo hace con Web3js.
Esta biblioteca está totalmente desactualizada.
Al momento de responder esta pregunta no lo era.
Está desactualizado desde 2015;)