web3 js eth.contract-Äquivalent in 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")

Wie würde dies in PHP geschehen?

Mit der Bibliothek ethereum.php, die ich verwende, kann ich beispielsweise Folgendes tun:

$data = new Ethereum_Transaction($users_eth_address, "x0_eth_address, $gas, $gasPrice, $hex_balance);
$result = $ethereum->eth_sendTransaction($data);
Hast du eine Antwort gefunden?
Ich musste im Grunde mein gesamtes PHP in js / node.js konvertieren, damit es mit web3js funktioniert. Dann führe ich den Knoten als Cron auf einer nicht über das Internet zugänglichen Seite aus, da das persönliche Unlockaccount-Passwort und das Passwort für den RPC für die Öffentlichkeit nicht sichtbar sind.
Süß, dann könnte es sich lohnen, deine eigene Frage zu beantworten. Ich würde sagen, die Leute wären an den Details interessiert, wie Sie das gemacht haben!

Antworten (2)

btelle/ethereum-php ist unvollständig und veraltet. Der letzte Commit ist von 2015.

Sie können digitaldonkey/ethereum-php verwenden

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

Laut Repositorium

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

Dadurch können Sie eine Verbindung zu einer lokalen Geth-Instanz auf Ihrem Computer herstellen, die Port überwacht 8545.

Um auf einen Vertrag zuzugreifen, beziehen Sie sich bitte auf die test.phpDatei, die weitere Beispiele enthält, wie Sie die Ihnen zur Verfügung stehenden Funktionen nutzen können.

Hier finden Sie möglicherweise die Dokumentation für die JSON-RPC-API besonders hilfreich. Dies liegt daran, dass das ethereum.phpProjekt im Wesentlichen nur ein Wrapper um die Ethereum-Implementierung ist, die unter läuft localhost:8545.

Hoffe das hilft.

Ich verwende dies bereits über mein PHP-Beispiel für Sendetransaktionen in meinem Fragebeitrag. Ich frage speziell nach dem PHP-Äquivalent von var token = web3.eth.contract(ABI).at("x0x_contract_address"), damit ich auf das zu übertragende Token zugreifen kann. Ich habe versucht $ethereum->eth_contract(ABI)->at('x0_contract address')
Die at(address)Funktion entspricht keiner bestimmten JSON-RPC-API. Daher sehen Sie im Projekt keine entsprechende Funktion ethereum.php. at(address)wird aufgerufen, um Zugriff auf einen bestehenden Vertrag in einer Blockchain zu erhalten. Unter der Haube, wenn Sie einen neuen Vertrag erstellen. Web3 ruft nur standardmäßige JSON-RPC-Funktionen auf, um eth_sendTransaction. Mit dem PHP-Wrapper werden Sie nicht so "sauber" wie mit Web3js.
Diese Bibliothek ist völlig veraltet.
Zum Zeitpunkt der Beantwortung dieser Frage war dies nicht der Fall.
Es ist seit 2015 veraltet ;)