🐧Mining on Linux
script was made for Docker but can be used for Geth *USE sudo everytime you call docker command*
Pre-requisites
sudo apt-get updatesudo apt-get install -y
ca-certificates
curl
gnupg
lsb-releasesudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgecho
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-pluginsudo groupadd docker sudo usermod -aG docker $USERVariable Declaration :
CHAIN_NAME="berylbit"
CHAIN_ID="9012"
NETWORK_ID="9012"
WORKING_DIR=$HOME'/.'$CHAIN_NAME'-docker'
CONTAINER_NAME_PREFIX="$CHAIN_NAME-node"
BOOTNODE_URL="enode://6c2cc2b8184b5fd75e7ae6c00ae5bfc64e505089ad8fb018306845f5a4d94bd896a38c065f5ae480e456ff8fea4e4429c1f05640539c98ab6de8439a293370c0@45.63.108.190:30303"
NODE_ROLE="miner"
CONTAINER_IMAGE="berylbit/go-ethereum:0.0.4"
WALLET_PASSWORD="xxxxxxxxxxx"Please alter this value of "xxxxxxxxxxx"
Initialize the blockchain
Create new folder as working directory
mkdir -p $WORKING_DIR/$NODE_ROLECreate new genesis.json file
cat << EOF > $WORKING_DIR/$NODE_ROLE/genesis.json
{
"config": {
"chainId": $CHAIN_ID,
"homesteadBlock": 0,
"eip150Block": 0,
"eip155Block": 0,
"eip158Block": 0,
"byzantiumBlock": 0,
"constantinopleBlock": 0,
"petersburgBlock": 0,
"istanbulBlock": 0,
"berlinBlock": 0,
"londonBlock": 0
},
"alloc": {
"0x768A5e67b3E8cf3c5562dd221b12B62438F43184": {
"balance": "300000000000000000000000000"
}
},
"coinbase": "0x0000000000000000000000000000000000000000",
"difficulty": "0x20000",
"extraData": "",
"gasLimit": "0x2fefd8",
"nonce": "0x0000000000000042",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp": "0x00"
}
EOFdocker run
-v $WORKING_DIR/$NODE_ROLE:/root
--rm
-i
--platform linux/amd64
$CONTAINER_IMAGE init /root/genesis.jsonCreate new mining wallet
MINING_WALLET_ADDRESS=$(echo "$WALLET_PASSWORD $WALLET_PASSWORD" | docker run
-v $WORKING_DIR/$NODE_ROLE:/root
--rm
-i
--platform linux/amd64
$CONTAINER_IMAGE
account new |
sed -n 's/Public address of the key: //p'
)Display the value of $MINING_WALLET_ADDRESS in Linux terminal
echo $MINING_WALLET_ADDRESSdocker kill $CONTAINER_NAME_PREFIX-$NODE_ROLEdocker rm $CONTAINER_NAME_PREFIX-$NODE_ROLEdocker run -d --name $CONTAINER_NAME_PREFIX-$NODE_ROLE
-v $WORKING_DIR/$NODE_ROLE:/root
--platform linux/amd64
-p 30303:30303
-p 30303:30303/udp
$CONTAINER_IMAGE
--port=30303
--mine
--miner.threads=1
--miner.etherbase $MINING_WALLET_ADDRESS
--networkid=$NETWORK_ID
--bootnodes=$BOOTNODE_URLPEERS=$(docker run
-v $WORKING_DIR/$NODE_ROLE:/root
--rm
-i
--platform linux/amd64
$CONTAINER_IMAGE attach
--exec "admin.peers" | tr -d '"')echo $PEERSPEERS=$(docker run \
-v $WORKING_DIR/$NODE_ROLE:/root \
--rm \
-i \
--platform linux/amd64 \
$CONTAINER_IMAGE attach \
--exec "eth.sync" | tr -d '"')Check Mining Wallet Balance
PEERS=$(docker run \
-v $WORKING_DIR/$NODE_ROLE:/root \
--rm \
-i \
--platform linux/amd64 \
$CONTAINER_IMAGE attach \
--exec "eth.getBalance('xxxxxxxxxxxxxxxxxxxxxxxx')"please replace xxxxxxxxxxxxxxxx string with your mining wallet.
Last updated
Was this helpful?