No soy el autor de la parte de Ethereum, pero tengo que conectarme usando php. Paquete Ethereum-PHP elegido ( https://github.com/digitaldonkey/ethereum-php ). Tiene conexión a ethereum y contrato inteligente, pero no puede ejecutar la función de contrato inteligente con el parámetro correctamente. Tengo contrato de esquema y prueba de función ():
function test(uint value) public returns(uint) {
return value*2;
}
y ABI:
...
{"constant":false,"inputs":[{"name":"value","type":"uint256"}],
"name":"test","outputs":
[{"name":"","type":"uint256"}],
"payable":false,"stateMutability":"nonpayable","type":"function"}
...
Ahora en php tengo:
$eth = new Ethereum('https://kovan.infura.io/<unique address>');
$schemaContract = new SmartContract($abi, '<contract address>', $eth);
// Call a function with result : 2
$result = $schemaContract->test(1)->Val();
No puedo recibir el resultado. No sé exactamente cómo lograr esto. Probé muchas opciones diferentes como:
$result = $schemaContract->test(1);
$result = $schemaContract->test('1');
$result = $schemaContract->test(1);
$result = $schemaContract->__call('test',1);
Pero siempre recibía algunos mensajes de error.
¿Qué estoy haciendo mal?
Saludos, T.B.
Comprobando las pruebas unitarias que encontré
public function testSimpleContract()
{
$number = 2;
$result = $this->contract->multiplyWithSeven(
new EthQ($number, ['abi'=> 'uint256'])
);
$this->assertEquals($number*7, $result->val());
}
Probablemente funcionaría si haces esto
$result = $schemaContract->test(
new EthQ(1, ['abi' => 'uint256'])
);
echo $result->val();
burro digital