Création d’une blockchain Ethereum privée.
Distribution de travail : Ubuntu 18.04
Liens :
https://www.une-blockchain.fr/ethereum-creer-une-blockchain-privee/
https://blog.webnet.fr/implementation-blockchain-privee-geth/
1/ Mise-à-jour de la distribution.
util01@station01:~$ sudo apt-get update && sudo apt-get upgrade
2/ Installation de Geth.
util01@station01:~$ sudo add-apt-repository -y ppa:ethereum/ethereum
util01@station01:~$ sudo apt-get install ethereum
3/ Création d’un répertoire de travail.
util01@station01:~$ mkdir -p ETHEREUM/data
util01@station01:~$ cd ETHEREUM/
util01@station01:~/ETHEREUM$
4/ Création du fichier de configuration.
Créer :
~/ETHEREUM/genesis.json
Ajouter :
{
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"difficulty": "0x20000",
"alloc": {},
"coinbase": "0x0000000000000000000000000000000000000000",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"extraData": "0x",
"gasLimit": "0xffffffff",
"config": {
"chainId": 7789,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0
}
}
5/ Initialisation de la blockchain.
util01@station01:~/ETHEREUM$ geth --nousb --identity "hackcoin" --datadir "~/ETHEREUM/data" init genesis.json
INFO [10-03|21:50:30.376] Maximum peer count ETH=50 LES=0 total=50
...
INFO [10-03|21:50:30.612] Successfully wrote genesis state database=lightchaindata hash="047862…906579"
6/ Démarrage de la blockchain.
util01@station01:~/ETHEREUM$ geth --datadir "~/ETHEREUM/data" --networkid 666 --http --http.port "8545" --http.corsdomain "*" --nodiscover --rpcapi="admin,eth,net,web3,personal,txpool,miner" --nousb --allow-insecure-unlock
WARN [10-03|21:57:38.848] Sanitizing cache to Go's GC limits provided=1024 updated=664
...
INFO [10-03|21:57:39.054] HTTP server started endpoint=127.0.0.1:8545 cors=* vhosts=localhost
7/ Lancement de la console Javascript pour une connexion à la blockchain.
util01@station01:~$ geth attach http://127.0.0.1:8545
Welcome to the Geth JavaScript console!
instance: Geth/v1.9.22-stable-c71a7e26/linux-amd64/go1.15
at block: 0 (Thu Jan 01 1970 01:00:00 GMT+0100 (CET))
datadir: /home/util01/ETHEREUM/data
modules: admin:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
>
8/ Affichage des informations sur la blockchain.
> admin.nodeInfo
9/ Création d’un compte.
> personal.newAccount()
Passphrase:
Repeat passphrase:
"0x32aa8d0e0141e924e8e487c5863642128c3e0221"
>
10/ Liste des comptes.
> eth.accounts
["0x32aa8d0e0141e924e8e487c5863642128c3e0221"]
11/ Récupérer la balance du compte.
> eth.getBalance("0x32aa8d0e0141e924e8e487c5863642128c3e0221")
> eth.getBalance(eth.accounts[0])
> web3.fromWei(eth.getBalance(eth.accounts[0]),"ether")
12/ Minage.
– Définir le compte qui va miner :
> miner.setEtherbase(web3.eth.accounts[0])
true
– Lancement du minage :
> miner.start()
null
Attendre quelques minutes.
– Arrêter le minage :
> miner.stop()
<h3>- Affichage du solde :</h3>
[sourcecode language="plain"]
> eth.getBalance("0x32aa8d0e0141e924e8e487c5863642128c3e0221")
255000000000000000000
> eth.getBalance(eth.coinbase)
290000000000000000000
13/ Transfert d’Ether.
– Arrêter le minage :
> miner.stop()
null
– Création d’un autre compte :
>
personal.newAccount()
Passphrase:
Repeat passphrase:
"0x05683a17c9fd8488e340da80a08400ba610963d5"
– Liste des comptes :
> eth.accounts
["0x32aa8d0e0141e924e8e487c5863642128c3e0221", "0x05683a17c9fd8488e340da80a08400ba610963d5"]
– Solde de compte :
> eth.getBalance("0x05683a17c9fd8488e340da80a08400ba610963d5")
– Déverrouillage du compte source :
> personal.unlockAccount("0x32aa8d0e0141e924e8e487c5863642128c3e0221")
Unlock account 0x32aa8d0e0141e924e8e487c5863642128c3e0221
Passphrase:
true
– Transfert :
> eth.sendTransaction({from: "0x32aa8d0e0141e924e8e487c5863642128c3e0221", to: "0x05683a17c9fd8488e340da80a08400ba610963d5", value: web3.toWei(1, "ether")})
"0x75592128b8c19c1181b9fe713713ab4dcf18f56c5291c1f84a307334256b83fc"
>
– Vérification :
> txpool.status
{
pending: 1,
queued: 0
}
– Redémarrage du minage :
> miner.start()
null
Attendre quelques minutes.
– Vérification de la transation :
> txpool.status
{
pending: 0,
queued: 0
}
> eth.getBalance("0x32aa8d0e0141e924e8e487c5863642128c3e0221")
739000000000000000000
> eth.getBalance("0x05683a17c9fd8488e340da80a08400ba610963d5")
1000000000000000000
Comments are closed, but trackbacks and pingbacks are open.