Verschiedene Fehler beim Deployment mit der Geth-Konsole und Truffle

Ich versuche, einen Vertrag auf zwei verschiedene Arten bereitzustellen, es gelingt mir nicht.
Erster Weg:
1. Ich habe Ether auf meinem Konto, ich gebe mein Passwort richtig ein, ich bin mir geth console —rinkeby —rpc —rpcapi db,eth,net,web3,personal —unlock="0x..." 2>>geth.log
sicher, dass das Konto auf der eth.accounts-Liste steht Variablen und . Ich habe Binärcode vorangestellt. 3. 4.
solcbinabi0x
var contract = web3.eth.contract(abi)
var token = myContract.new( {from: eth.coinbase, data: bin, gas: 1000000}, function(e, myContract) { if (e) { console.log(e); } else { if (myContract.address) { console.log ("mined " +myCcontract.address); } } })

Und das sagt es

Fehler: Der Vertragscode konnte nicht gespeichert werden, bitte überprüfen Sie Ihre Gasmenge.

Der zweite Weg ist die Verwendung von Trüffel. Es ist mir schon oft gelungen, den Vertrag für rinkeby bereitzustellen, aber jetzt stecke ich bei diesem Fehler fest.
1. Ich starte gethund entsperre mein Konto
2. Da ist mein truffle.js:

module.exports = {
Netzwerke: {
Entwicklung: {
Host: "localhost",
Port: 8545,
Netzwerk-ID: "*", Gas: 900000 },
rinkeby: {
Host: '127.0.0.1',
Port: 8545,
Netzwerk-ID: 4 ,
Gas: 4612388, // Gaslimit für Deployments
von: "0xeb1eb48fc3c2756cde3dce8a53472e437062f976" } } };

3. truffle migrate --reset --network rinkeby
Und es sagt

Fehler aufgetreten, Bailing. Netzwerkstatus unbekannt. Überprüfen Sie erfolgreiche Transaktionen manuell. TypeError: contract.detectNetwork ist keine Funktion unter /usr/local/lib/node_modules/truffle/build/cli.bundled.js:201861:21 unter /usr/local/lib/node_modules/truffle/build/cli.bundled. js:326484:15 at

Mein Ziel war es zu lernen, wie man mit den Vertragsfunktionen von Geth oder der Truffle-Konsole interagiert. Aber irgendwas ging schief. Bitte helfen Sie mir, es zu reparieren.
Wenn Sie es bis zum Ende dieser Frage geschafft haben, danke schon jetzt

Antworten (2)

versuchen Sie es zuerst mit testrpc - https://github.com/ethereumjs/testrpc .

Und diese Fehlermeldung "Fehler aufgetreten, Bailing. Netzwerkstatus unbekannt" bedeutet, dass geth nicht richtig funktioniert oder Port 8545 nicht verwendet oder wegen der IP 127.0.0.1 nicht funktioniert.

Versuchen Sie es mit testrpc. Sie werden eine großartige Erfahrung machen. Es ist schneller, mit Verträgen zu Testzwecken zu interagieren

Ich werde es jetzt versuchen, nur um herauszufinden, ob es bereitgestellt wird oder nicht. Aber ich muss es auf Testnet bereitstellen, damit meine Kollegen versuchen können, damit zu interagieren.
Eine andere Möglichkeit, sich ohne Geth mit einem Knoten zu verbinden, ist die Verwendung von Infura. Vergessen Sie nicht, "npm install truffle-hdwallet-provider" auszuführen. Hier ist der Text, der in truffle.js eingefügt werden muss: var HDWalletProvider = require("truffle-hdwallet-provider"); var mnemonic = "Ihre Kontenwörter"; module.exports = { migrations_directory: "./migrations", networks: { rinkeby: { provider: new HDWalletProvider(mnemonic, " rinkeby.infura.io/" ), gas: 4500000, network_id: 4 } } }

Alternativ habe ich eine kleine Bibliothek für die Bereitstellung geschrieben, die für jemanden von Nutzen sein kann. Es wird mit ethers.js (dem stabilen Cousin von web3.js) bereitgestellt und ist ausführlich und glänzend :)

const etherlime = require('etherlime');

const ICOTokenContract = require('./build/contracts/ICOToken.json');

const randomAddress = '0xda8a06f1c910cab18ad187be1faa2b8606c2ec86';

const defaultConfigs = {
    gasPrice: 20000000000,
    gasLimit: 4700000
}

const deployer = new etherlime.InfuraPrivateKeyDeployer('Your Privste KEY', 'ropsten', 'Your infura API key', defaultConfigs);

const runICODeployment = async () => {
    const contractWrapper = await deployer.deploy(ICOTokenContract);
    const transferTransaction = await contractWrapper.contract.transferOwnership(randomAddress);
    const result = await contractWrapper.verboseWaitForTransaction(transferTransaction.hash, 'Transfer Ownership');
}
runICODeployment()

Legen Sie dies in eine Datei und führen Sie es mit node.