Skip to content

Commit 11b4684

Browse files
committed
move some stuff around + readme in project
1 parent cc11c57 commit 11b4684

File tree

109 files changed

+455
-597
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+455
-597
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,6 +600,12 @@ jobs:
600600
run: |
601601
set -eo pipefail
602602
target="${{ matrix.target }}"
603+
604+
if [[ "$target" != *msvc* && "$target" != "aarch64-unknown-linux-gnu" ]]; then
605+
flags+=(--features jemalloc)
606+
else
607+
flags+=(--features reth)
608+
fi
603609
604610
if [[ "$target" == *windows* ]]; then
605611
export PATH="$PATH:/c/vcpkg"

README.md

Lines changed: 147 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,147 @@
1-
# rrelayer
2-
3-
## TODO List
4-
5-
30th September plan:
6-
- Do internal documentation throughout the .MD files
7-
8-
31st September plan:
9-
- Reread documentation
10-
- Get CI builds / releases working
11-
- Testing
12-
- loading up ALL supported gas providers so it works
13-
- Testing handling custom gas with http call
14-
- Look into authentication to login and then use it outside rrelayer.yaml
15-
- Publish packages - TS + Rust
16-
- Release—20:00 UK time
17-
2
18-
# AFTER
19-
20-
- Create CI to run E2E tests on push
21-
- Write go and python SDK (create issues)
22-
- cron job to hit a contract call with parameters every n minutes
23-
- send tx on event firing using rindexer
1+
# 🦀 rrelayer 🦀
2+
3+
Note rrelayer is brand new and actively under development, things will change and bugs will exist - if you find any bugs or have any
4+
feature requests please open an issue on [github](https://github.com/joshstevens19/rrelayer/issues).
5+
6+
rrelayer is an opensource powerful, high-performance blockchain transaction relay service built in Rust,
7+
designed for seamless integration with any EVM-compatible network. This tool transforms complex
8+
blockchain interactions into simple REST API calls, eliminating the need for applications to
9+
manage wallets, gas optimization, transaction queuing, or nonce management. For enterprise
10+
needs, rrelayer provides advanced wallet infrastructure with support for multiple
11+
secure signing providers including AWS KMS hardware security modules, Turnkey self-custody
12+
solutions, Privy-managed wallets, AWS Secrets Manager, GCP Secret Manager, and raw mnemonic
13+
development setups. It's highly scalable and production-ready, enabling you to build robust
14+
Web3 applications with enterprise-grade reliability and focus exclusively on your business
15+
logic. rrelayer out of the box gives you transaction relay, message signing, automated
16+
gas management, and real-time monitoring through intuitive APIs.
17+
18+
You can get to the full rrelayer [documentation](https://rrelayer.xyz/).
19+
20+
## Install
21+
22+
```bash
23+
curl -L https://rrelayer.xyz/install.sh | bash
24+
```
25+
26+
If you’re on Windows, you will need to install and use Git BASH or WSL, as your terminal,
27+
since rrelayer installation does not support Powershell or Cmd.
28+
29+
## Use rrelayer
30+
31+
Once installed you can run `rrelayer --help` in your terminal to see all the commands available to you.
32+
33+
```bash
34+
rrelayer --help
35+
```
36+
37+
```bash
38+
Blazing fast EVM relayer tool built in rust
39+
40+
Usage: rrelayer [COMMAND]
41+
42+
Commands:
43+
new Create a new rrelayer project
44+
clone Clone an existing relayer private key to another network
45+
auth Authenticate with rrelayer
46+
start Start the relayer service
47+
network Manage network configurations and settings
48+
list List all configured relayers
49+
config Configure operations for a specific relayer
50+
balance Check the balance of a relayer's account
51+
allowlist Manage allowlist addresses for restricted access
52+
create Create a new relayer client instance
53+
sign Sign messages and typed data alongside get history of signing
54+
tx Send, manage and monitor transactions
55+
help Print this message or the help of the given subcommand(s)
56+
57+
Options:
58+
-h, --help Print help
59+
-V, --version Print version
60+
```
61+
62+
We have full documentation https://rrelayer.xyz/getting-started/installation which goes into more detail on how to use
63+
rrelayer and all the commands available to you.
64+
65+
## Docker
66+
67+
Coming soon.
68+
69+
## Helm Chart
70+
71+
Coming soon.
72+
73+
## What can I use rrelayer for?
74+
75+
* DApp backends: Handle user transactions without wallet management complexity
76+
* NFT platforms: Automated minting, transfers, and marketplace operations with reliable execution
77+
* DeFi protocols: Yield farming automation, liquidation bots, and cross-chain operations
78+
* Enterprise Web3: Simplified blockchain integration for traditional businesses with audit compliance
79+
* Development workflows: Consistent APIs for local development and comprehensive E2E testing
80+
* Gasless transactions: Meta-transaction infrastructure for improved user experience
81+
* Multi-chain applications: Unified transaction interface across different EVM networks
82+
* High-frequency operations: Advanced queuing system for batch processing and optimization
83+
* Production infrastructure: Enterprise-grade transaction reliability with comprehensive monitoring
84+
- Much more...
85+
86+
## Installing
87+
88+
### Github
89+
90+
```bash [github]
91+
cargo add --git https://github.com/joshstevens19/rrelayer --package rrelayer
92+
```
93+
94+
### Crate.io
95+
96+
https://crates.io/crates/rrelayer
97+
98+
```bash [crates.io]
99+
cargo add rrelayer
100+
```
101+
102+
## What networks do you support?
103+
104+
rrelayer supports any EVM chain out of the box. If you have a custom chain, you can easily add support for it by
105+
adding the chain's RPC URL to the YAML configuration file and defining the chain ID. No code changes are required.
106+
107+
## Building
108+
109+
### Requirements
110+
111+
- Rust (latest stable)
112+
113+
### Locally
114+
115+
To build locally you can just run `cargo build` in the root of the project. This will build everything for you as this is a workspace.
116+
117+
**Note:** The first build may take longer.
118+
119+
Subsequent builds use smart caching and will only rebuild components that have changed.
120+
121+
### Prod
122+
123+
To build for prod you can run `make prod_build` this will build everything for you and optimise it for production.
124+
125+
## Formatting
126+
127+
you can run `cargo fmt` to format the code, rules have been mapped in the `rustfmt.toml` file.
128+
129+
## Contributing
130+
131+
Anyone is welcome to contribute to rrelayer, feel free to look over the issues or open a new one if you have
132+
any new ideas or bugs you have found.
133+
134+
### Playing around with the CLI locally
135+
136+
You can use the `make` commands to run the CLI commands locally, this is useful for testing and developing.
137+
These are located in the `cli` folder > `Makefile`. It uses `CURDIR` to resolve the paths for you, so they should work
138+
out of the box.
139+
140+
## Release
141+
142+
To release a new rrelayer:
143+
144+
1. Checkout `release/x.x.x` branch depending on the next version number
145+
2. Push the branch to GitHub which will queue a build on the CI
146+
3. Once build is successful, a PR will be automatically created with updated changelog and version
147+
4. Review and merge the auto-generated PR - this will auto-deploy the release with binaries built from the release branch

TODO.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# rrelayer
2+
3+
## TODO List
4+
5+
31st September plan:
6+
- Reread documentation
7+
- Get CI builds / releases working
8+
- Testing
9+
- loading up ALL supported gas providers so it works
10+
- Testing handling custom gas with http call
11+
- Look into authentication to login and then use it outside rrelayer.yaml
12+
- Publish packages - TS + Rust
13+
- Release—20:00 UK time
14+
15+
# AFTER
16+
17+
- Create CI to run E2E tests on push
18+
- Write go and python SDK (create issues)
19+
- cron job to hit a contract call with parameters every n minutes
20+
- send tx on event firing using rindexer

assets/logo.jpeg

-192 KB
Binary file not shown.

crates/cli/Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
prod_build:
2+
RUSTFLAGS='-C target-cpu=native' cargo build --release --features jemalloc
13
help:
24
cargo run -- auth --help
35
new:

crates/cli/README.md

Lines changed: 53 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,57 @@
1-
# CLI
1+
# rrelayer_cli
22

3-
TODO
3+
This is the cli for rrelayer, it contains all the logic for the cli and is how users interact with rrelayer.
44

5+
You can get to the full rrelayer [documentation](https://rrelayer.xyz/getting-started/installation).
56

7+
## Install
68

9+
```bash
10+
curl -L https://rrelayer.xyz/install.sh | bash
11+
```
12+
13+
If you’re on Windows, you will need to install and use Git BASH or WSL, as your terminal,
14+
since rrelayer installation does not support Powershell or Cmd.
15+
16+
## Use rrelayer
17+
18+
Once installed you can run `rrelayer --help` in your terminal to see all the commands available to you.
19+
20+
```bash
21+
rrelayer --help
22+
```
23+
24+
```bash
25+
Blazing fast EVM relayer tool built in rust
26+
27+
Usage: rrelayer [COMMAND]
28+
29+
Commands:
30+
new Create a new rrelayer project
31+
clone Clone an existing relayer private key to another network
32+
auth Authenticate with rrelayer
33+
start Start the relayer service
34+
network Manage network configurations and settings
35+
list List all configured relayers
36+
config Configure operations for a specific relayer
37+
balance Check the balance of a relayer's account
38+
allowlist Manage allowlist addresses for restricted access
39+
create Create a new relayer client instance
40+
sign Sign messages and typed data alongside get history of signing
41+
tx Send, manage and monitor transactions
42+
help Print this message or the help of the given subcommand(s)
43+
44+
Options:
45+
-h, --help Print help
46+
-V, --version Print version
47+
```
48+
49+
## Working with CLI locally
50+
51+
The best way to work with the CLI is to use the `Makefile` predefined commands.
52+
53+
You can also run your own commands using cargo run, example below would create a new rrelayer project in the path you specified.
54+
55+
```bash
56+
cargo run -- new --path PATH_TO_CREATE_PROJECT
57+
```

crates/cli/src/main.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
use std::{env, path::PathBuf, str::FromStr};
22

3+
#[cfg(feature = "jemalloc")]
4+
use jemallocator::Jemalloc;
5+
6+
#[cfg(feature = "jemalloc")]
7+
#[global_allocator]
8+
static GLOBAL: Jemalloc = Jemalloc;
9+
310
use clap::Parser;
411
use rrelayer_core::{load_env_from_project_path, setup_info_logger};
512

crates/core/README.md

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,19 @@
1-
# reelayer_server
1+
# 🦀 rrelayer 🦀
22

3-
## Docker
3+
Note rrelayer is brand new and actively underdevelopment, things will change and bugs will exist—if you find any bugs or have any
4+
feature requests, please open an issue on [github](https://github.com/joshstevens19/rrelayer/issues).
45

5-
### Server
6+
rrelayer is an opensource powerful, high-performance blockchain transaction relay service built in Rust, designed for seamless
7+
integration with any EVM-compatible network. This tool transforms complex blockchain interactions into simple REST API calls,
8+
eliminating the need for applications to manage wallets, gas optimization, transaction queuing, or nonce management. For
9+
enterprise needs, rrelayer provides advanced wallet infrastructure with support for multiple secure signing providers
10+
including AWS KMS hardware security modules, Turnkey self-custody solutions, Privy-managed wallets, AWS Secrets Manager,
11+
GCP Secret Manager, and raw mnemonic development setups. It's highly scalable and production-ready, enabling you to build
12+
robust Web3 applications with enterprise-grade reliability and focus exclusively on your business logic. rrelayer out of the
13+
box gives you transaction relay, message signing, automated gas management, and real-time monitoring through intuitive APIs.
614

7-
docker build -f docker/server/Dockerfile -t rrelayer_server .
15+
You can get to the full rrelayer [documentation](https://rrelayer.xyz/).
816

9-
## Unit tests
17+
rust crate is [here](https://crates.io/crates/rrelayer) but you can also install via github.
1018

11-
### Coverage
12-
13-
install:
14-
15-
`cargo install cargo-tarpaulin`
16-
17-
run tests coverage:
18-
19-
`cargo tarpaulin`
20-
21-
to generate html report
22-
23-
`cargo tarpaulin --out Html`
19+
all rust documentation can be found on the docs page and you can start [here](https://rrelayer.xyz/integration/sdk/installation/rust)

crates/e2e-tests/.env.example

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
RAW_DANGEROUS_MNEMONIC="enjoy jar sentence ghost buddy humble monster cannon fix ill eternal desert patrol tumble calm logic wrestle wall above grab debate noble absurd merry"
2+
DATABASE_URL=postgresql://postgres:rrelayer@localhost:5447/postgres
3+
POSTGRES_PASSWORD=rrelayer
4+
RRELAYER_AUTH_USERNAME=admin
5+
RRELAYER_AUTH_PASSWORD=your_secure_password_here
6+
RRELAYER_WEBHOOK_SHARED_SECRET="test-webhook-secret-123"
7+
8+
AWS_ACCESS_KEY_ID="INSERT"
9+
AWS_SECRET_ACCESS_KEY="INSERT"
10+
11+
PRIVY_APP_ID="INSERT"
12+
PRIVY_APP_SECRET="INSERT"
13+
14+
TURNKEY_PUBLIC_KEY="INSERT"
15+
TURNKEY_PRIVATE_KEY="INSERT"
16+
TURNKEY_ORG_ID="INSERT"
17+
TURNKEY_WALLET_ID="INSERT"
18+
19+
AWS_KMS_KEY_1_ID="INSERT"
20+
AWS_KMS_KEY_2_ID="INSERT"
21+
AWS_KMS_KEY_3_ID="INSERT"
22+
23+
API_KEY_1="INSERT"
24+
API_KEY_2="INSERT"
25+
API_KEY_3="INSERT"

0 commit comments

Comments
 (0)