- Monitor splits, validators and provide notifications on relevant events
- Deploy and manage 0xSplits v1 contracts via CLI
Download the latest release from the Releases page. Extract and run with:
./splitoor --help
Available as a docker image at ethpandaops/splitoor
latest
- distroless, multiarchlatest-debian
- debian, multiarch$version
- distroless, multiarch, pinned to a release (i.e.0.1.0
)$version-debian
- debian, multiarch, pinned to a release (i.e.0.1.0-debian
)
Quick start
docker run -d --name splitoor -v $HOST_DIR_CHANGE_ME/config.yaml:/opt/splitoor/config.yaml -p 9090:9090 -it ethpandaops/splitoor:latest monitor --config /opt/splitoor/config.yaml;
docker logs -f splitoor;
helm repo add ethereum-helm-charts https://ethpandaops.github.io/ethereum-helm-charts
# monitor
helm install splitoor ethereum-helm-charts/splitoor -f your_values.yaml
- Clone the repo
go get github.com/ethpandaops/splitoor
- Change directories
cd ./splitoor
- Build the binary
go build -o splitoor .
- Run the monitor
./splitoor monitor --config example_server_config.yaml
Splitoor has two main running modes: a monitor and interacting with 0xSplits v1 contracts.
Look at the example_config.yaml for an example configuration.
# defaults to config.yaml in current directory
splitoor monitor --config <CONFIG_FILE>
Splitoor can interact with 0xSplits v1 contracts.
Deploy the 0xSplits v1 contract
Not required if using mainnet/sepolia/holesky as contracts are already deployed
splitoor deploy-contract \
--el-rpc-url http://localhost:8545 \
--deployer-address <DEPLOYER_ADDRESS> \
--deployer-private-key <DEPLOYER_PRIVATE_KEY>
Create a new split.
splitoor split create \
--el-rpc-url http://localhost:8545 \
--deployer-address <DEPLOYER_ADDRESS> # does not need to be the controller or a recipient \
--deployer-private-key <DEPLOYER_PRIVATE_KEY> \
--contract <CONTRACT_ADDRESS> # Can omit if using mainnet/sepolia/holesky \
--controller <CONTROLLER_ADDRESS> \
--recipients <RECIPIENT_1_ADDRESS>,<RECIPIENT_2_ADDRESS> \
--percentages 500000,500000 # 50%, 50%
Update a split's recipients and percentages.
splitoor split update \
--el-rpc-url http://localhost:8545 \
--deployer-address <DEPLOYER_ADDRESS> # must be the controller of the split \
--deployer-private-key <DEPLOYER_PRIVATE_KEY> \
--contract <CONTRACT_ADDRESS> # Can omit if using mainnet/sepolia/holesky \
--split <SPLIT_ADDRESS> \
--recipients <RECIPIENT_1_ADDRESS>,<RECIPIENT_2_ADDRESS> \
--percentages 600000,400000 # 60%, 40%
Get the current controller and hash of a split.
splitoor split status \
--el-rpc-url http://localhost:8545 \
--contract <CONTRACT_ADDRESS> # Can omit if using mainnet/sepolia/holesky \
--split <SPLIT_ADDRESS>
Distribute ETH to the split's recipients.
splitoor split distribute \
--el-rpc-url http://localhost:8545 \
--deployer-address <DEPLOYER_ADDRESS> \
--deployer-private-key <DEPLOYER_PRIVATE_KEY> \
--contract <CONTRACT_ADDRESS> # Can omit if using mainnet/sepolia/holesky \
--split <SPLIT_ADDRESS> \
--recipients <RECIPIENT_1_ADDRESS>,<RECIPIENT_2_ADDRESS> \
--percentages 600000,400000 # 60%, 40%
Get the distributed ETH balance of an address on the splits contract. This can be from multiple splits.
splitoor split balance \
--el-rpc-url http://localhost:8545 \
--contract <CONTRACT_ADDRESS> # Can omit if using mainnet/sepolia/holesky \
--address <ADDRESS>
Withdraw from the splits contract.
splitoor split withdraw \
--el-rpc-url http://localhost:8545 \
--private-key <DEPLOYER_PRIVATE_KEY> \
--contract <CONTRACT_ADDRESS> # Can omit if using mainnet/sepolia/holesky \
--address <ADDRESS>
--withdraw-eth # omit if only withdrawing ERC20s \
# --tokens <TOKEN_1_ADDRESS>,<TOKEN_2_ADDRESS> # optional, comma separated list of tokens addresses to withdraw