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.solc
bin
abi
0x
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 geth
und 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
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
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.
Олеся Костеева
Luis Soares