The Fuse archival node has a size of 2.5TB on Septmber 3rd, 2024
Copy sudo apt update -y && sudo apt upgrade -y && sudo apt autoremove -y
sudo apt install -y git make wget gcc pkg-config libusb-1.0-0-dev libudev-dev jq gcc g++ curl libssl-dev screen apache2-utils build-essential pkg-config unzip
Copy sudo ufw default deny incoming
sudo ufw default allow outgoing
Copy sudo ufw allow from ${REMOTE.HOST.IP} to any port 8545 8546
Not advised to allow all or unknown IP address to RPC port
Copy sudo ufw allow 30303/tcp
sudo ufw allow 30303/udp
Since 08.2022 Fuse is moving from OE client to Nethermind . To bootstrap Fuse archive node this guide covers the steps on how to build Nethermind from source and configure it to run for Fuse Network
Copy wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt update
sudo apt install -y apt-transport-https
sudo apt update
sudo apt install -y dotnet-sdk-8.0
Copy wget "$(curl -s https://api.github.com/repos/NethermindEth/nethermind/releases/latest \
| grep "browser_download_url" \
| grep "linux-x64.zip" \
| cut -d '"' -f 4)" -O nethermind-latest-linux-x64.zip
Copy unzip nethermind-latest-linux-x64.zip
Copy sudo bash -c 'echo "nethermind soft nofile 100000" > /etc/security/limits.d/nethermind.conf'
sudo bash -c 'echo "nethermind hard nofile 100000" >> /etc/security/limits.d/nethermind.conf'
Copy mkdir -p /root/fuse-archive/chainspec
nano /root/fuse-archive/chainspec/fuse.json
Copy {
"name": "FuseNetwork",
"engine": {
"authorityRound": {
"params": {
"stepDuration": "5",
"blockReward": "0x0",
"blockRewardContractAddress": "0x63D4efeD2e3dA070247bea3073BCaB896dFF6C9B",
"blockRewardContractTransition": 100,
"validators": {
"multi": {
"0": {
"list": ["0xd9176e84898a0054680aec3f7c056b200c3d96c3"]
},
"100": {
"safeContract": "0x3014ca10b91cb3D0AD85fEf7A3Cb95BCAc9c0f79"
}
}
}
}
}
},
"params": {
"gasLimitBoundDivisor": "0x400",
"maximumExtraDataSize": "0x20",
"minGasLimit": "0x1388",
"networkID": "0x07a",
"eip155Transition": 0,
"validateChainIdTransition": 0,
"eip140Transition": 0,
"eip211Transition": 0,
"eip214Transition": 0,
"eip658Transition": 0,
"eip150Transition": "0x0",
"eip160Transition": "0x0",
"eip161abcTransition": "0x0",
"eip161dTransition": "0x0",
"eip98Transition": "0x7fffffffffffff",
"eip145Transition": "0x38ada7",
"eip1014Transition": "0x38ada7",
"eip1052Transition": "0x38ada7",
"eip1283Transition": "0xd29240",
"eip1344Transition": "0xd29240",
"eip1706Transition": "0xd29240",
"eip1884Transition": "0xd29240",
"eip2028Transition": "0xd29240",
"eip2929Transition": "0xd29240",
"eip2930Transition": "0xd29240",
"eip1559Transition": "0x1D653E8",
"eip2565Transition": "0x1D653E8",
"eip3198Transition": "0x1D653E8",
"eip3529Transition": "0x1D653E8",
"eip3541Transition": "0x1D653E8",
"eip1559BaseFeeMinValueTransition": "0x1D653E8",
"eip3651TransitionTimestamp": "0x66A78440",
"eip3855TransitionTimestamp": "0x66A78440",
"eip3860TransitionTimestamp": "0x66A78440",
"eip1153TransitionTimestamp": "0x66A78440",
"eip5656TransitionTimestamp": "0x66A78440",
"eip6780TransitionTimestamp": "0x66A78440",
"eip1559BaseFeeMaxChangeDenominator": "0x8",
"eip1559ElasticityMultiplier": "0x2",
"eip1559BaseFeeInitialValue": "0x3b9aca00",
"eip1559BaseFeeMinValue": "0x2540be400",
"maxCodeSize": 24576,
"maxCodeSizeTransition": "0x0"
},
"genesis": {
"seal": {
"authorityRound": {
"step": "0x0",
"signature": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"
}
},
"difficulty": "0x20000",
"baseFeePerGas": "0x2540BE400",
"gasLimit": "0x989680"
},
"nodes": [
"enode://60ca021ca7a60c5fedeb39344d6ef282c6c8574c87bf492dcef7ed8dd9611c5a33da2b286f12eb81554c403718565a749d5028c9bcfc1d5b90b8d105ac04da4b@35.205.73.124:30303",
"enode://550041c1883866ee537ddf220c0ea84b614bce27e9adb8de85b3b86bd745d7ed9575043a78fabe192f1f0ceee71a343f1d5b35f09e6bb41f24ac69bfe214f414@34.76.228.61:30303"
],
"accounts": {
"0x0000000000000000000000000000000000000001": {
"balance": "1",
"builtin": {
"name": "ecrecover",
"pricing": {
"linear": {
"base": 3000,
"word": 0
}
}
}
},
"0x0000000000000000000000000000000000000002": {
"balance": "1",
"builtin": {
"name": "sha256",
"pricing": {
"linear": {
"base": 60,
"word": 12
}
}
}
},
"0x0000000000000000000000000000000000000003": {
"balance": "1",
"builtin": {
"name": "ripemd160",
"pricing": {
"linear": {
"base": 600,
"word": 120
}
}
}
},
"0x0000000000000000000000000000000000000004": {
"balance": "1",
"builtin": {
"name": "identity",
"pricing": {
"linear": {
"base": 15,
"word": 3
}
}
}
},
"0x0000000000000000000000000000000000000005": {
"builtin": {
"name": "modexp",
"pricing": {
"0": {
"price": {
"modexp": {
"divisor": 20
}
}
},
"0xd29240": {
"info": "EIP-2565: ModExp Gas Cost.",
"price": {
"modexp2565": {}
}
}
}
}
},
"0x0000000000000000000000000000000000000006": {
"builtin": {
"name": "alt_bn128_add",
"pricing": {
"0": {
"price": {
"alt_bn128_const_operations": {
"price": 500
}
}
},
"0xd29240": {
"info": "EIP-1108 Istanbul HF",
"price": {
"alt_bn128_const_operations": {
"price": 150
}
}
}
}
}
},
"0x0000000000000000000000000000000000000007": {
"builtin": {
"name": "alt_bn128_mul",
"pricing": {
"0": {
"price": {
"alt_bn128_const_operations": {
"price": 4000
}
}
},
"0xd29240": {
"info": "EIP-1108 Istanbul HF",
"price": {
"alt_bn128_const_operations": {
"price": 6000
}
}
}
}
}
},
"0x0000000000000000000000000000000000000008": {
"builtin": {
"name": "alt_bn128_pairing",
"pricing": {
"0": {
"price": {
"alt_bn128_pairing": {
"base": 100000,
"pair": 80000
}
}
},
"0xd29240": {
"info": "EIP-1108 Istanbul HF",
"price": {
"alt_bn128_pairing": {
"base": 45000,
"pair": 34000
}
}
}
}
}
},
"0x0000000000000000000000000000000000000009": {
"builtin": {
"name": "blake2_f",
"pricing": {
"0xd29240": {
"info": "EIP-152 Istanbul HF",
"price": {
"blake2_f": {
"gas_per_round": 1
}
}
}
}
}
},
"0xd9176e84898a0054680aec3f7c056b200c3d96c3": {
"balance": "300000000000000000000000000"
}
}
}
Copy mkdir -p /root/fuse-archive/config
nano /root/fuse-archive/config/empty.cfg
Copy mkdir /root/fuse-archive/fuse_data
Copy sudo chmod +x /root/fuse-archive/Nethermind.Runner
Copy sudo nano /etc/systemd/system/nethermind.service
Copy [Unit]
Description=Nethermind Node
Documentation=https://docs.nethermind.io
After=network.target
[Service]
User=root
Environment=DOTNET_BUNDLE_EXTRACT_BASE_DIR=/root/fuse-archive/fuse-data/basedir
ExecStart=/root/fuse-archive/Nethermind.Runner \
--datadir=/root/fuse-archive/fuse-data/datadir/ \
--config=/root/fuse-archive/config/empty.cfg \
--Init.DiscoveryEnabled=true \
--Init.WebSocketsEnabled=true \
--Init.StoreReceipts=true \
--Init.ChainSpecPath=/root/fuse-archive/chainspec/fuse.json \
--Init.BaseDbPath=/root/fuse-archive/fuse-data/basedir \
--Init.GenesisHash=0x6e778e9491576a28bd06fac93844d8494be1f153e60ba7d29b4b51d991d4f830 \
--Network.DiscoveryPort=30303 \
--Network.P2PPort=30303 \
--Network.LocalIp=0.0.0.0 \
--Network.ExternalIp=0.0.0.0 \
--JsonRpc.Enabled=true \
--JsonRpc.Timeout=20000 \
--JsonRpc.Host=0.0.0.0 \
--JsonRpc.Port=9656 \
--JsonRpc.WebSocketsPort=9756 \
--JsonRpc.JwtSecretFile=/root/fuse-archive/jwt.hex \
--Receipt.TxLookupLimit=0 \
--Metrics.NodeName=fuse_archive \
--Bloom.IndexLevelBucketSizes="[ 16, 16, 16, 16 ]" \
--Pruning.Mode=none \
--Mining.MinGasPrice=1000000000 \
--Merge.Enabled=false \
--TraceStore.Enabled=true \
--TraceStore.BlocksToKeep=0 \
--TraceStore.TraceTypes=Trace,Rewards \
--Sync.FastSync=false
Restart=on-failure
LimitNOFILE=1000000
KillSignal=SIGKILL
[Install]
WantedBy=multi-user.target
Copy systemctl enable nethermind #enable nethermind service at system startup
sudo systemctl daemon-reload #refresh systemd configuration when changes made
sudo systemctl start nethermind #start nethermind
sudo systemctl stop nethermind #stop nethermind
To check or modify nethermind.service
parameters simply run
sudo nano /etc/systemd/system/nethermind.service
Ctrl+X and Y to save changes
Copy journalctl -f -u nethermind #follow logs of nethermind service
28 Jun 01:13:08 | Finalizing validators for transition signalled within contract at block 473632 after block 473633 (0xba9913...ff8838).
28 Jun 01:13:08 | Applying validator set change before block 473634 (0xae6e4c...881217).
28 Jun 01:13:08 | Downloaded 473,680 / 30,284,955 ( 1.56 %) | current 102 Blk/s | total 156 Blk/s
28 Jun 01:13:09 | Processed 473428... 473681 | 193.72 ms | slot 2,151 ms |⛽ Gas gwei: 0.00 .. 0.00 (0.00) .. 0.00
28 Jun 01:13:09 | - Blocks 254 0.14 MGas | 6 txs | calls 1,835 ( 0) | sload 4,835 | sstore 735 | create 0
28 Jun 01:13:09 | - Block throughput 0.74 MGas/s | 30.97 t/s | 1311.17 Blk/s | recover 0 | process 7
28 Jun 01:13:09 | Signal for transition within contract at block 473732 (0x89197a...464a90). New list of 2 : [0xc736793ff31e04807cbf20b39d50ac7a04a4bdad, 0xd9176e84898a0054680aec3f7c056b200c3d96c3].