Ich versuche, mit meinem SmartContract zu interagieren, bekomme aber den Fehler: Uncaught TypeError: MyContract.at is not a function
Mein Code:
var web3 = require('ethereum.js');
web3.setProvider(new web3.providers.HttpProvider());
var MyContract = web3.eth.contract([{"constant":false,"inputs":[{"name":"x","type":"uint256"}],"name":"set","outputs":[],"type":"function"},{"constant":true,"inputs":[],"name":"get","outputs":[{"name":"retVal","type":"uint256"}],"type":"function"}]);
var result = MyContract.at("MyContractAddress").get();
console.log(result);
Wenn ich die standardmäßige Geth-Funktionalität anfordere, erhalte ich eine korrekte Antwort:
var version = web3.version.api;
console.log(version); "0.2.4"
Sie müssen dem HttpProvider-Konstruktor die Adresse Ihres geth-Knotens mitteilen, damit Ihr web3-Client mit einem Knoten verbunden wird. Bestimmte web3-Funktionen wie contract.at() funktionieren nur, wenn Sie mit einem Knoten verbunden sind. web3.version.api benötigt keine Ethereum-Verbindung, um zu funktionieren.
web3.setProvider(new web3.providers.HttpProvider('http://geth-node-ip:8545'));
Wenn Sie eine Adresse für den HttpProvider festgelegt haben, überprüfen Sie, ob IP und Portnummer korrekt sind. (Ich verwende 8545 als Beispiel, da dies der Standard-RPC-Port ist.)
var Web3 = require('web3'); var web3 = new Web3();
Sie müssen eine Instanz dieses Vertrags erstellen, wie hier beschrieben . Sie haben den Vertragsgegenstand korrekt erstellt (erwägen Sie, Ihre ABI in einer separaten Datei abzulegen), müssen dann aber eine Instanz über erstellen
var MyContract = web3.eth.contract(ABI);
var contractInstance = MyContract.at(address);
Wenn Sie Ihren Vertrag noch nicht bereitgestellt haben, müssen Sie dies zuerst tun (dadurch erhalten Sie den Vertrag, address
den Sie fortan wiederverwenden können:
var contractInstance = MyContract.new([contructorParam1] [, contructorParam2], {data: '0x12345...', from: myAccount, gas: 1000000});
Ich habe eine vollständigere Anleitung auf meinem Github platziert .
console.log(JSON.stringify(MyContract))
.
eur10
var web3 = require('ethereum.js');
bist du sicher, dass es nicht sein solltevar web3 = require('web3.js');