Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 6 additions & 65 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 0 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ members = [
"frame/evm-polkavm/uapi",
"frame/hotfix-sufficients",
"frame/ismp-messaging",
"frame/relayer/runtime-api",
"frame/relayer/rpc",
"frame/zk-verifier/runtime-api",
"frame/zk-verifier/rpc",
"client/api",
Expand Down Expand Up @@ -267,9 +265,6 @@ pallet-evm-precompile-shielded-pool = { path = "frame/evm/precompile/shielded-po
pallet-evm-precompile-simple = { path = "frame/evm/precompile/simple", default-features = false }
pallet-evm-test-vector-support = { path = "frame/evm/test-vector-support" }
pallet-hotfix-sufficients = { path = "frame/hotfix-sufficients", default-features = false }
pallet-relayer = { path = "frame/relayer", default-features = false }
pallet-relayer-rpc = { path = "frame/relayer/rpc" }
pallet-relayer-runtime-api = { path = "frame/relayer/runtime-api", default-features = false }
pallet-shielded-pool = { path = "frame/shielded-pool", default-features = false }
pallet-shielded-pool-runtime-api = { path = "frame/shielded-pool/runtime-api", default-features = false }
pallet-validator-set = { path = "frame/validator-set", default-features = false }
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ Orbinum combines the transparency benefits of blockchain technology with advance

Orbinum is built using Substrate's FRAME framework and implements Clean Architecture principles across all components:

- **Pallets**: Modular runtime components (`pallet-shielded-pool`, `pallet-zk-verifier`, `pallet-relayer`)
- **Pallets**: Modular runtime components (`pallet-shielded-pool`, `pallet-zk-verifier`, `pallet-validator-set`)
- **Primitives**: Core cryptographic libraries (`zk-core`, `zk-verifier`)
- **Client**: RPC layer and blockchain infrastructure
- **Circuits**: Circom zero-knowledge circuits (`transfer`, `unshield`)
Expand Down
2 changes: 1 addition & 1 deletion client/rpc-v2/src/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ io.merge(ChainRpc::new(client.clone()).into_rpc())?;

Returns `true` if the given SS58-encoded account is an active Aura block author.

Reads `pallet_aura::Authorities` directly from storage — no runtime API call is made. Intended for UIs that need to gate actions (e.g. relayer registration) on validator eligibility without waiting for an extrinsic to fail.
Reads `pallet_aura::Authorities` directly from storage — no runtime API call is made. Intended for UIs that need to gate actions on validator eligibility without waiting for an extrinsic to fail.

**Parameters**

Expand Down
8 changes: 1 addition & 7 deletions client/rpc/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,7 @@

## Unreleased

* Relay: `orbinum_relayShieldedCall` records a relay commit (`commitRelay`, batched) and waits for it to land before submitting the spend, so the fee is credited to this relayer. Skipped on runtimes without `ShieldedPoolRuntimeApi` v3 and `RelayerRuntimeApi` v2.
* Relay: an unregistered relay address fails fast instead of timing out, and a failed `commitRelay` submission is reported to every caller in its batch.
* Relay: one relay per spend — a request whose nullifiers are already in flight is refused, so N copies no longer cost the relayer N× gas. The dry-run is repeated after the commit lands; a commit already on-chain is not sent again; a spend another relayer's commit outranks — earlier block, or same block and lower hash, checked before and after our commit lands — is refused (that commit takes the fee); commit batches are sent from a task a disconnecting caller cannot cancel, one chunk per block, each only after the previous one is recorded, since the quota applies to the block a chunk lands in.
* Relay: a spend's claim holds while its request runs and lapses only once submitted; an error or a disconnecting caller releases it. Calldata is dry-run before claiming, so junk naming someone else's nullifier cannot block their relay. Waiting for a commit batch times out.
* Relay: the nonce recovers from a submitted transaction that never lands (the confirmed nonce is reused after `NONCE_STALL_BLOCKS`), and the chain is read under the submit lock.
* Relay: `orbinum_relayerStatus.enabled` requires registration (on runtimes with relay commits) and a balance for the worst case of a commit plus a spend.
* Relay (internal): commit batching lives in `relay/rpc/commit.rs` and the request's nullifier claim (`ClaimGuard`) in `relay/guard.rs`.
* Removed the node-native EVM relay: `orbinum_relayShieldedCall`, `orbinum_relayerStatus` and `EthValidatorSigner` are gone. Private spends are submitted unsigned.
* `eth_getFilterChanges`: the first poll of a log filter scans its range, and every later poll skips journal logs the scan covered, so a block journaled late is not returned twice; a reorg entry is skipped on the first poll (the scan read the new chain) and passes through after it. A result over `max_past_logs`, from the scan or the journal, drops the filter instead of failing the same way on every poll.
* Fix `estimate_gas`: ensure that provided gas limit it never larger than current block's gas limit
* `EthPubSubApi::new` takes an additional `overrides` parameter.
Expand Down
7 changes: 2 additions & 5 deletions client/rpc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ rand = "0.9"
rlp = { workspace = true }
scale-codec = { workspace = true }
schnellru = "0.2.4"
serde = { workspace = true, features = ["derive"] }
serde = { workspace = true, optional = true }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["sync", "time"] }

Expand Down Expand Up @@ -61,9 +61,6 @@ fp-evm = { workspace = true, features = ["default"] }
fp-rpc = { workspace = true, features = ["default"] }
fp-storage = { workspace = true, features = ["default"] }
pallet-evm = { workspace = true, features = ["default"] }
pallet-evm-precompile-shielded-pool = { workspace = true, features = ["std"] }
pallet-relayer-runtime-api = { workspace = true, features = ["std"] }
pallet-shielded-pool-runtime-api = { workspace = true, features = ["std"] }

[dev-dependencies]
# Substrate
Expand All @@ -80,5 +77,5 @@ rocksdb = [
"sc-service/rocksdb",
"fc-mapping-sync/rocksdb",
]
txpool = ["fc-rpc-core/txpool"]
txpool = ["fc-rpc-core/txpool", "serde"]
rpc-binary-search-estimate = []
4 changes: 1 addition & 3 deletions client/rpc/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ mod eth;
mod eth_pubsub;
mod logs_journal;
mod net;
pub mod relay;
mod signer;
#[cfg(feature = "txpool")]
mod txpool;
Expand All @@ -47,8 +46,7 @@ pub use self::{
eth_pubsub::{EthPubSub, EthereumSubIdProvider},
logs_journal::{LogsJournal, LogsJournalConfig, LogsJournalEntry, LogsJournalError},
net::Net,
relay::{OrbinumRelay, OrbinumRelayApiServer, RelayerStatus},
signer::{EthDevSigner, EthSigner, EthValidatorSigner},
signer::{EthDevSigner, EthSigner},
web3::Web3,
};
pub use ethereum::TransactionV3 as EthereumTransaction;
Expand Down
90 changes: 0 additions & 90 deletions client/rpc/src/relay/config.rs

This file was deleted.

Loading
Loading