Ivynet is building a unified observability solution for all crypto node operators. Primarily, the Ivynet cli daemon is used to grab all information from any actively deployed AVSs it detects (or manually added ones) and push data upwards to the ingress service. This data is then transformed and enriched with eg: active set data and accessed by the api service.
Currently, this repo contains the api, ingress, scanner, and cli modules of the Ivy platform, as well as their dependencies. The interface is separate as it is not built using Rust. See the links to their individual readme files below. Also, view our docs page at docs.ivynet.dev
- Rust
- protobuf-compiler (apt install protobuf-compiler)
- Docker (^27.3.1)
- Docker compose (^2.29.7)
To learn more about GitHub Actions, PreCommit settings, extra scripts and tools check the DevOps documentation.
Until operator registration is ready, please register as an operator using the EigenLayer CLI tool. This tool will check your operator status in order to add you as an operator to individual AVS's, and will check automatically that you are using the correct configuration (eg: CPU cores, memory, storage space) for the requested AVS.
NOTE: Development is happening at pace and there may be bugs - please feel free to open a github issue if any are encountered!
- Run the build
cargo clean
cargo build -r- Copy binaries to an accessible place (e.g.
~/bin)
[[ -d ~/bin ]] || mkdir ~/bin
cp target/release/ivynet ~/bin- Confirm that the build was successful
ivynet --help- Install the eigenlayer CLI
# Install the Eigenlayer CLI:
curl -sSfL https://raw.githubusercontent.com/layr-labs/eigenlayer-cli/master/scripts/install.sh | sh -s- Create a BLS key with optional password:
eigenlayer operator keys create --key-type bls [keyname]Please refer to the CLI documentation here
- Bring up the postgres database container:
Optional: Ensure that no existing instance of the database is running:
docker compose -f ./ivynet-database/backend-compose.yaml down -vBring up the database:
docker compose -f ./ivynet-database/backend-compose.yaml up -d- Set the DATABASE_URL environment variable:
export DATABASE_URL=postgresql://ivy:secret_ivy@localhost:5432/ivynet- Run database migrations and prepare sqlx:
sqlx migrate run
cargo sqlx prepare --workspace- Initialize test organization and AVS versions from backend, and register your node:
cd api
cargo run -- --add-organization testuser@ivynet.dev:test1234/testorg
cd ..
cargo run register-node- Populate version hashes table from remote docker repositories and latest node versions table:
cargo run --bin ivynet-backend -- --add-node-version-hashes
cargo run --bin ivynet-backend -- --update-node-data-versions- Run ingress from ./ingress:
cd ingress
cargo run- Run the api from ./api:
cd backend
cargo run- Run the onchain data scanner from ./scanner:
cd scanner
cargo runConvenient shell script for confiuration-related steps
echo "Closing existing database..."
docker compose -f ./ivynet-database/backend-compose.yaml down -v
sleep 3
docker compose -f ./ivynet-database/backend-compose.yaml up -d
echo "Waiting for PostgreSQL database..."
sleep 3
export DATABASE_URL=postgresql://ivy:secret_ivy@localhost:5432/ivynet
sqlx migrate run
cargo sqlx prepare --workspaceOnce the backend is running and your monitor process is configured, you can register your machine with the backend:
cargo run register-nodeIvynet will automatically detect the the ports used by a given Node running in host network mode by attaching a docker sidecar with netstat installed. This container will run netstat and output ONLY lines which contain valid processes within the scope of the host container.