contract.address ist undefiniert, wenn ein Vertrag mit cpp-ethereum und ethconsole bereitgestellt wird

Ich möchte einen neuen Vertrag mit cpp-ethereum (aus der Quelle erstellt) und ethconsole erstellen. Ich bin dieser Anleitung gefolgt: https://www.ethereum.org/greeter .

Ich habe den Vertrag so geändert, dass er nur eine Klasse ohne Funktionen enthält, um die Gaskosten zu minimieren:

contract greeter{   
}

Ich mache das im Testnetzwerk und habe 5 Ether auf meinem Konto.

Hier ist der js-Code, den ich nach der Verwendung des Online-Solidity-Compilers erhalten habe:

 web3.eth.getAccounts(function(err, accounts){
    var account = accounts[3];
    console.log("Using account: " + account);
    var greeterContract = web3.eth.contract([]);
    var greeter = greeterContract.new(
    {
        from: account, 
        data: '6060604052600a8060106000396000f360606040526008565b00', 
        gas: 3000000
    }, function(e, contract){
        console.log(e);
        console.log(contract.address);
        if (typeof contract.address != 'undefined') {
            console.log('Contract mined! address: ' + contract.address + ' transactionHash: ' + contract.transactionHash);
        }
    })
  })

Dies ist die Ausgabe, die ich bekomme:

null
undefined

Aus irgendeinem Grund wird der Vertrag nicht bereitgestellt, die Funktion gibt keinen Fehler zurück und die Datei contract.address ist nicht definiert.

Übersehe ich etwas?

Antworten (1)

Der Guide hat eine andere Funktion:

wenn(!e) {

      if(!vertrag.adresse) {
        console.log("Vertragstransaktion senden: TransactionHash: " + contract.transactionHash + " wartet darauf, abgebaut zu werden ...");

      } anders {
        console.log("Vertrag abgeschlossen! Adresse: " + vertrag.adresse);
        console.log (Vertrag);
      }

    }

Tatsächlich wird diese Funktion zweimal aufgerufen .

  • Das erste Mal wird es mit dem Transaktionshash sein. console.log(contract);Überzeugen Sie sich selbst .
  • Das zweite Mal wird es mit dem Vertrag selbst sein. Vorausgesetzt es gibt ein Node Mining.
Aus irgendeinem Grund enthielten die cpp-ethereum-Binärdateien, die ich aus dem Quellcode erstellt habe, keinen Solidity-Compiler. Ich habe den Build 1.2.1 heruntergeladen, der in dieser Frage erwähnt wird: ethereum.stackexchange.com/questions/1793/… und ich konnte Code aus der von Ihnen erwähnten Anleitung ausführen. Es funktionierte! Vielen Dank.