Run a Full Node

Operating a MySocial Full Node enables you to validate blockchain activities, contributing to the network's security and decentralization.

If you haven't already, you need to install MySocial CLI on your system.

Hardware Requirements

Ensure your system meets these minimum specifications:

  • CPU: 8 physical cores / 16 virtual CPUs

  • RAM: 128 GB

  • Storage: 4 TB NVMe SSD

Software Requirements

MySocial recommends using a Linux system, preferably Ubuntu or Debian. However, you can also run a Full Node on macOS for development purposes. Below are the instructions for both operating systems.

Linux

Update your system and install necessary dependencies:

sudo apt-get update && sudo apt-get upgrade -y
sudo apt-get install -y --no-install-recommends \
  tzdata libprotobuf-dev ca-certificates build-essential \
  libssl-dev libclang-dev libpq-dev pkg-config openssl \
  protobuf-compiler git clang cmake

macOS

Ensure you have Homebrew installed. Then, install the required dependencies:

brew update
brew install protobuf openssl llvm cmake pkg-config

Set environment variables for OpenSSL and LLVM:

export PATH="/usr/local/opt/openssl@3/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
export CPPFLAGS="-I/usr/local/opt/openssl@3/include"
export PATH="/usr/local/opt/llvm/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/llvm/lib"
export CPPFLAGS="-I/usr/local/opt/llvm/include"

Install Rust

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustup update stable

Verify the installation:

cargo --version
rustc --version

Building and Installing MySocial Full Node

Clone the MySocial repository and build the node:

git clone https://github.com/the-social-proof-foundation/mysocial-core.git
cd mysocial-core
git remote add upstream https://github.com/the-social-proof-foundation/mysocial-core
git fetch upstream
git checkout --track upstream/mainnet
cargo build --release -p mysocial-node -p mysocial

Move the binaries to /usr/local/bin:

sudo mv target/release/mysocial-node /usr/local/bin/
sudo mv target/release/mysocial /usr/local/bin/

Configuring the Full Node

Set up the configuration:

mkdir -p $HOME/.mysocial
cp crates/mysocial-config/data/fullnode-template.yaml $HOME/.mysocial/fullnode.yaml
curl -fLJO https://github.com/the-social-proof-foundation/mysocial-genesis/raw/main/mainnet/genesis.blob -o $HOME/.mysocial/genesis.blob

Edit fullnode.yaml to include peer nodes for state synchronization:

p2p-config:
  seed-peers:
    - address: /dns/mel-00.mainnet.mysocial.io/udp/8084
      peer-id: d32b55bdf1737ec415df8c88b3bf91e194b59ee3127e3f38ea46fd88ba2e7849
    - address: /dns/ewr-00.mainnet.mysocial.io/udp/8084
      peer-id: c7bf6cb93ca8fdda655c47ebb85ace28e6931464564332bf63e27e90199c50ee
    - address: /dns/ewr-01.mainnet.mysocial.io/udp/8084
      peer-id: 3227f8a05f0faa1a197c075d31135a366a1c6f3d4872cb8af66c14dea3e0eb66
    - address: /dns/lhr-00.mainnet.mysocial.io/udp/8084
      peer-id: c619a5e0f8f36eac45118c1f8bda28f0f508e2839042781f1d4a9818043f732c

Ensure db-path and genesis-file-location point to the correct locations:

db-path: "/home/your-username/.mysocial/db"
genesis:
  genesis-file-location: "/home/your-username/.mysocial/genesis.blob"

Replace /home/your-username with your actual home directory path.

Running the Full Node

Create a systemd service file (Linux only):

sudo tee /etc/systemd/system/mysocial-node.service > /dev/null <<EOF
[Unit]
Description=MySocial Node
After=network-online.target

[Service]
User=$USER
WorkingDirectory=$HOME/mysocial
ExecStart=/usr/local/bin/mysocial-node --config-path $HOME/.mysocial/fullnode.yaml
Restart=on-failure
RestartSec=3
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
EOF

Enable and start the service (Linux only):

sudo systemctl enable mysocial-node
sudo systemctl daemon-reload
sudo systemctl start mysocial-node

For macOS, run the node directly:

mysocial-node --config-path $HOME/.mysocial/fullnode.yaml

Check the service status (Linux):

sudo systemctl status mysocial-node

View logs:

journalctl -u mysocial-node -f

By following these steps, you’ll have a MySocial Full Node up and running, contributing to the network’s integrity and performance.

Last updated