Einen Vertrag in der Geth-Konsole abschließen

Ich habe den folgenden Code in einem Skript namens contract.js (foo, pwd und id werden durch ihren Wert in meinem tatsächlichen Skript ersetzt)

var web3=require('web3');
personal.unlockAccount('id', "pwd")
var aContract = web3.eth.contract([]);
var a = aContract.new(
{
    from: web3.eth.accounts[1], 
    data: 'foo',
    gas: 3000000
}, function (e, contract){
    console.log(e, contract);
    if (typeof contract.address !== 'undefined') {
        console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
    }
})

Ich wollte diesen Code in der Geth-Konsole ausführen, also habe ich eingegeben

loadScript("/usr/username/contract.js")

Aber ich habe nur folgenden Fehler:

Fehler: TypeError: Zugriff auf Member „Vertrag“ von undefined false nicht möglich

Ich weiß, dass ich kein ABI definiert habe, aber wenn ich den obigen Code direkt in die Geth-Konsole eingebe, funktioniert es einfach und dann kann ich diesen Vertrag (lokal) abbauen.

Ist es also wirklich möglich, mit loadscript dasselbe Ergebnis zu erzielen?

Antworten (1)

Ihr Problem ist höchstwahrscheinlich, dass Sie web3.

web3ist standardmäßig in der Geth-Konsole vorhanden und bereits mit dem Knoten verbunden. Sofern Sie nicht eine bestimmte Version benötigen, die nicht von Geth verwendet wird, müssen Sie sie nicht manuell hinzufügen. In dieser Situation ist es wahrscheinlich kaputt, weil es require('web3')eine Factory für web3-Objekte zurückgibt, nicht web3 selbst.

Kurz gesagt, versuchen Sie es ohne web3.