replicatr
is a relay for the nostr protocol:
The most original feature of replicatr is its Internet Computer integration allowing for quick and seamless inter-relay synchronization. This is achieved by defining relay clusters, an interconnected group of relays that're given authorization by a replicatr canister owner to utilize the canister's synchronization tooling to achieve consistency across the cluster.
Click here to learn more about the nostrific problem this addresses.
Click here to learn more about the synchronization architecture.
Works with Linux, MacOS, and WSL2
Go 1.2+ is recommended - Click here for installation instructions and specifications.
Then, run to the following to clone the repo:
git clone https://github.com/Hubmakerlabs/replicatr.git && cd replicatr
chmod +x pkg/ic/setup/owner.sh
./pkg/ic/setup/owner.sh
Input the canister-id for the previously created canister when prompted:
Please enter the canister ID: <canister-id>
This will generate a relay secret key, initialize your relay and deploy a replicatr canister on the Internet Computer with your relay as the specified owner. Click here to see where the secret key as well other settings are stored.
If you have any issues with the owner setup, here is some troubleshooting help.
Identify the a relay cluster you would like to join and ask the owner for their canister-id and if you can join.
Run the following command from the root directory to initialize the relay with the previously obtained canister-id:
go run . initcfg -e ic -I <canister-id>
Run the following command to obtain your canister-facing relay pubkey:
go run . pubkey
Send the resulting pubkey to the canister owner and wait for them to grant you user/owner level access
To learn more about canister permissions, click here.
You can run the relay directly from the root of the repository:
go run . <flags> <args>
add flags to configure the relay as needed or run without any flags to use defaults. Click here to view customizable parameters, configuration, and subcommand details
Or you can build it and place it in the location GOBIN
as defined here:
go install
This project would not be possible without the significant contributions and support from the following organizations and projects:
go-nostr
package, which forms a substantial part of our Nostr tooling.khatru
relay, using it as the foundational structure for our development.agent-go
tooling has been instrumental in facilitating our interaction with Internet Computer canisters.We extend our deepest gratitude to all our contributors and supporters, as their efforts and resources have been vital to the success of this project.