Tutorial*
*below are additional steps not covered in tutorial
Open a Terminal application
1. Install rust, cargo, rustfmt etc
Install rustc, cargo and rustfmt.
Copy curl https://sh.rustup.rs -sSf | sh
source $HOME/.cargo/env
rustup component add rustfmt
Make sure you are using the latest stable rust version by running:
Also install git, libssl-dev, pkg-config, zlib1g-dev, protobuf etc.
Copy sudo apt-get update
sudo apt-get install -y git libssl-dev libudev-dev pkg-config zlib1g-dev llvm clang cmake make libprotobuf-dev protobuf-compiler
2. Install Tachyon v2.0 and Solana tools
Clone the Tachyon repository:
Copy git clone https://github.com/x1-labs/tachyon.git
Build Tachyon and the solana tools:
Copy cd tachyon
cargo build --release
Update your PATH
environment variable:
Copy export PATH=\$PATH:$(pwd)/target/release
echo "export PATH=\$PATH:$(pwd)/target/release" >> ~/.bashrc
Verify the installation:
Copy solana --version
tachyon-validator --version
tachyon-ledger-tool --version
If you see the versions listed below, the installation was successful:
Copy solana-cli 2.0.21 (src:00000000; feat:607245837, client:Tachyon)
tachyon-validator 2.0.21 (src:00000000; feat:2908148756, client:Tachyon)
tachyon-ledger-tool 2.0.21 (src:00000000; feat:2908148756, client:Tachyon)
3. System Tuning (Linux)
Your system will need to be tuned in order to run properly. Your validator may not start without the settings below.
Optimize sysctl knobs
Copy sudo bash -c "cat >/etc/sysctl.d/21-tachyon-validator.conf <<EOF
# Increase UDP buffer sizes
net.core.rmem_default = 134217728
net.core.rmem_max = 134217728
net.core.wmem_default = 134217728
net.core.wmem_max = 134217728
# Increase memory mapped files limit
vm.max_map_count = 1000000
# Increase number of allowed open file descriptors
fs.nr_open = 1000000
EOF"
Copy sudo sysctl -p /etc/sysctl.d/21-tachyon-validator.conf
Increase systemd and session file limits
Add
to the [Service]
section of your systemd service file, if you use one, otherwise add
Copy DefaultLimitNOFILE=1000000
to the [Manager]
section of /etc/systemd/system.conf, using
Copy nano /etc/systemd/system.conf
Execute configuration
Copy sudo systemctl daemon-reload
Copy sudo bash -c "cat >/etc/security/limits.d/90-solana-nofiles.conf <<EOF
# Increase process file descriptor count limit
* - nofile 1000000
EOF"
Close all open sessions (log out then, in again)
4. Set to X1 Testnet network
Copy solana config set -u https://rpc.testnet.x1.xyz
To verify set network, use:
5. Create keypairs
Using command solana-keygen to generate a new wallet. It will generate a 12-word seed (aka. mnemonic, or recovery) phrase. Save it safe.
Copy solana-keygen new --no-passphrase -o ~/.config/solana/id.json
solana-keygen new --no-passphrase -o ~/.config/solana/identity.json
solana-keygen new --no-passphrase -o ~/.config/solana/vote.json
solana-keygen new --no-passphrase -o ~/.config/solana/stake.json
To switch between keypairs:
Copy solana config set -k id.json
6. Fund wallet
Check balance:
7. Create a validator startup script & start node
In your ubuntu home directory (e.g. /home/ubuntu/
), create a folder called bin
. Inside that folder create a file called validator.sh
and make it executable:
Copy mkdir -p /home/ubuntu/bin
touch /home/ubuntu/bin/validator.sh
Next, open the validator.sh
file for editing:
Copy nano /home/ubuntu/bin/validator.sh
Copy and paste the following contents into validator.sh
then save the file:
Copy #!/bin/bash
exec tachyon-validator \
--identity ~/.config/solana/identity.json \
--vote-account ~/.config/solana/vote.json \
--known-validator Abt4r6uhFs7yPwR3jT5qbnLjBtasgHkRVAd1W6H5yonT \
--known-validator 5NfpgFCwrYzcgJkda9bRJvccycLUo3dvVQsVAK2W43Um \
--known-validator FcrZRBfVk2h634L9yvkysJdmvdAprq1NM4u263NuR6LC \
--only-known-rpc \
--log ./validator.log \
--ledger ./ledger \
--rpc-port 8899 \
--full-rpc-api \
--dynamic-port-range 8000-8020 \
--entrypoint entrypoint1.testnet.x1.xyz:8001 \
--entrypoint entrypoint2.testnet.x1.xyz:8000 \
--entrypoint entrypoint3.testnet.x1.xyz:8000 \
--wal-recovery-mode skip_any_corrupted_record \
--limit-ledger-size 50000000 \
--enable-rpc-transaction-history \
--enable-extended-tx-metadata-storage \
--rpc-pubsub-enable-block-subscription \
--full-snapshot-interval-slots 5000 \
--maximum-incremental-snapshots-to-retain 10 \
--maximum-full-snapshots-to-retain 50
Make validator startup script executable:
Copy chmod +x /home/ubuntu/bin/validator.sh
Make sure you're in the home directory:
Start validator with nohup:
Copy nohup /home/ubuntu/bin/validator.sh &
Check validator logs to see if it's running:
Copy tail -f /home/ubuntu/validator.log
Check catch up status:
Copy solana catchup --our-localhost
Use monitor command to check validator operations:
Copy tachyon-validator --ledger ./ledger monitor
See all nodes connected to network, whether they are staked or not. Your identity.json should show up there.
Check validator process:
Copy ps aux | grep validator
Kill validator process:
Copy tachyon-validator exit -f