Ich versuche, meine private Ethereum-Blockchain mit dem homesteadBlock-Wert zu erstellen, den ich zuweisen möchte. Soweit ich weiß, ist der Standardwert von homesteadBlock 1500000.
[F] Wie kann ich den homesteadBlock-Wert 0 zuweisen? Und in Geth ist es möglich, seinen Wert zu überprüfen, ob er auf 0 aktualisiert wurde? oder wie kann ich überprüfen, ob der homesteadBlock-Wert aktualisiert wird?
und was noch wichtiger ist, wie könnte ich meine private Ethereum-Blockchain erstellen? Ich weiß, dass es viele Ressourcen zu diesem Problem gibt, aber ich konnte keine für die Version 1.4.17 von Geth finden.
Ich bin mir nicht sicher, ob der homesteadBlock-Wert meiner privaten Blockchain aktualisiert wird. Hier ist der Weg, den ich befolgt habe, um meine private Ethereum-Blockchain von Grund auf neu zu erstellen:
Erste leere vorherige Setup-Daten:
[$] rm -rf ~/.ethash/* && rm -rf ~/.ethereum/*
[$] sudo rm -rf /home/miner/MyEthereumEbloc/ && mkdir /home/miner/MyEthereumEbloc/
Erstellen Sie ein neues Konto:
[$] sudo geth --datadir="/home/miner/MyEthereumEbloc/" account new
Konto neue Adresse: {eda8c89a68f059c1659272076e85e4373717b0d8}
Diese Adresse wird der CustomGenesis.json-Datei hinzugefügt.
Setup CustomGenesis.json: Diese Datei sollte für alle Knoten gleich sein, die sich mit dem privaten Ethereum-Netzwerk verbinden:
{
"config": {
"homesteadBlock": 0
},
"nonce": "0",
"difficulty": "0x400",
"mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x3B4A1B44",
"alloc": {
"0xeda8c89a68f059c1659272076e85e4373717b0d8": //added line
{ "balance": "1000000000000000000000000000000" } //added line
}
}
Blockchain-Initialisierung:
[$] sudo geth --datadir="/home/miner/MyEthereumEbloc/" init /home/CustomGenesis.json
Beachten Sie, dass ich das aktualisierte Guthaben sehen kann, wenn ich Folgendes ausführe:
sudo geth --datadir="/home/miner/MyEthereumEbloc/" console
primaryAddress = eth.accounts[0]
> web3.fromWei(eth.getBalance(primaryAddress), "ether")
1000000000000000000000000000000
Zu mir:
$ sudo ./geth --port 3000 --networkid 23422 --identity node1 --verbosity 3
--nodiscover --nat none --datadir="/home/miner/MyEthereumEbloc" --mine
--ipcpath /home/miner/MyEthereumEbloc/geth.ipc console
Vielen Dank für Ihre wertvolle Hilfe und Zeit.
Um den Homestead-Block zu ändern, müssen Sie Geth aus den Quellen neu kompilieren.
Sie können die entsprechende Zeile sehen :
MainNetHomesteadBlock = big.NewInt(1150000)
Ändern Sie dies einfach in zu
MainNetHomesteadBlock = big.NewInt(0)
und mit den Anweisungen neu kompilieren
Sie können testen, ob Homestead aktiviert ist, indem Sie diesen Vertrag erstellen:
contract TestHomestead{
function test () constant returns(bool){
return address(4).delegatecall(1);
}
}
Wenn Sie in Homestead sind, wird dies sehr wenig Benzin verbrauchen (ungefähr 300), was nicht stimmt. Wenn Sie sich an der Grenze befinden, verbrauchen Sie das gesamte Gas, das in der Transaktion gesendet wird, und es wird eine Ausnahme ausgelöst.
Dies ist Teil der Antwort auf Wie rufe ich eine Bibliotheksfunktion aus einem Vertrag auf? => [Fehler] Der Vertragscode konnte nicht gespeichert werden, bitte überprüfen Sie Ihre Gasmenge. undefiniert .
Ich habe meine private Blockchain mit einem benutzerdefinierten homesteadBlock
Wert mithilfe der folgenden Verfahren eingerichtet:
Wocket:ESE bok$ more genesis.json
{
"config": {
"homesteadBlock": 10
},
"nonce": "0",
"difficulty": "0x400",
"mixhash": "0x00000000000000000000000000000000000000647572616c65787365646c6578",
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x00",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0x3B4A1B44",
"alloc": {}
}
Ich habe eine Passwortdatei erstellt testpassword
, die mein Kontopasswort enthält
Ich habe ein Skript erstellt, um meine Blockchain zu initialisieren:
Wocket:ESE bok$ more 02_runGethGenesisInit
#!/bin/sh
geth --datadir /Users/bok/ESE/gethgenesis init /Users/bok/ESE/genesis.json
geth --datadir /Users/bok/ESE/gethgenesis --password testpassword account new
Und ich habe chmod 700 02_runGethGenesisInit
das ausführbare Bit gesetzt.
Ich habe ein Skript erstellt, um meinen privaten geth
Knoten im Mining-Modus zu starten:
Wocket:ESE bok$ more 02_runGethGenesis
#!/bin/sh
geth --datadir /Users/bok/ESE/gethgenesis --unlock 0 --password /Users/bok/ESE/testpassword --rpc --rpccorsdomain '*' --mine --minerthreads 1 console
Und ich habe chmod 700 02_runGethGenesis
das ausführbare Bit gesetzt.
Ich habe Browser Solidity von https://github.com/ethereum/browser-solidity/tree/gh-pages heruntergeladen .
Ich habe die Dateien entpackt und index.html
in meinen Webbrowser geladen.
Ich habe meine Blockchain-Daten mit dem folgenden Befehl initialisiert:
Wocket:ESE bok$ ./02_runGethGenesisInit
Ich habe meinen Knoten mit dem folgenden Befehl gestartet und führe ihn seit einiger Zeit aus:
Wocket:ESE bok$ ./02_runGethGenesis
...
I1015 09:56:14.364062 miner/worker.go:342] 🔨 Mined block (#5210 / f881b1be). Wait 5 blocks for confirmation
I1015 09:56:14.364333 miner/worker.go:539] commit new work on block 5211 with 0 txs & 0 uncles. Took 281.474µs
I1015 09:56:14.364360 miner/worker.go:435] 🔨 🔗 Mined 5 blocks back: block #5205
I1015 09:56:14.364492 miner/worker.go:539] commit new work on block 5211 with 0 txs & 0 uncles. Took 114.592µs
I1015 09:56:16.394886 miner/worker.go:342] 🔨 Mined block (#5211 / 420c7edc). Wait 5 blocks for confirmation
I1015 09:56:16.395189 miner/worker.go:539] commit new work on block 5212 with 0 txs & 0 uncles. Took 262.993µs
I1015 09:56:16.395222 miner/worker.go:435] 🔨 🔗 Mined 5 blocks back: block #5206
Ich habe das Testskript durch @TjadenHess
die Antwort von auf diese Frage in Solidity Browser geladen:
contract TestHomestead{
function test () returns(bool){
return address(4).delegatecall(1);
}
}
Ich habe Solidity Browser mit meinem lokalen privaten Knoten verbunden, indem ich auf das Blocksymbol geklickt und Web3 Provider ausgewählt habe . Ich habe dann auf Erstellen geklickt , um den Vertrag oben in der Blockchain bereitzustellen. Ich habe auf Test geklickt und die Meldung Transaction cost: 21657 gas.
zeigt, dass sich meine Blockchain im Homestead-Modus befindet.
Hinweis: Wenn ich die Funktion ändere, um sie zu einer Konstante zu machen function test () constant returns(bool){
, erhalte ich die folgenden Ergebnisse für eine Blockkette im Homestead-Modus - true :
Siehe Abschnitt 7 unten für die Meldung, die angezeigt wird, wenn sich die Blockchain im Nicht-Homestead-Modus befindet.
Ich habe Browser Solidity mit einer geth --dev
Blockchain verbunden:
geth --dev --datadir /Users/bok/ESE/gethdata --unlock 0 --password /Users/bok/ESE/testpassword --rpc --rpccorsdomain '*' --mine --minerthreads 1 console
Ich habe denselben Homestead-Testcode ausgeführt, um die Meldung zu erzeugen, dass das erforderliche Gas die Grenze überschreitet: 50000000 , was zeigt, dass sich diese --dev
Blockchain im Nicht-Homestead-Modus befindet:
Hinweis: Wenn ich die Funktion ändere, um sie zu einer Konstante zu machen function test () constant returns(bool){
, erhalte ich die folgenden Ergebnisse für eine Blockchain im Nicht-Homestead-Modus - false :