Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
aff38b7
Modernize the Tributary SDK
kayabaNerve Sep 2, 2026
5959c25
Prefer new transactions over unpublishable transactions in the mempool
kayabaNerve Oct 9, 2026
2fb6534
Add the ability for the application layer to censure validators
kayabaNerve Oct 9, 2026
6d5ae5a
Use a `ValidatorSet` implementation which caches the proposer
kayabaNerve Oct 9, 2026
b50c2f1
Add transaction gossiping to the mempool logic
kayabaNerve Oct 10, 2026
5dcb988
Fixes for items (almost entirely) reported by @SamsungGalaxyPlayer
kayabaNerve Oct 13, 2026
e68e3c6
Require a Tributary genesis be a 16-byte value
kayabaNerve Oct 17, 2026
30fe5c8
Have `tendermint-machine` verify its own proposal
kayabaNerve Oct 17, 2026
7ec6b38
Have `Blockchain::validate` distinguish fatal/temporal
kayabaNerve Oct 25, 2026
f20db27
Prioritize attempting a commit when ran
kayabaNerve Oct 25, 2026
6fef60d
Don't yield a block proposal prior to the minimum time
kayabaNerve Oct 25, 2026
b57a2bc
Fix small nits in the `tributary-sdk`
kayabaNerve Oct 25, 2026
160ade8
Complete the integration of the new `tributary-sdk` into the Coordinator
kayabaNerve Oct 25, 2026
22c21fb
Relax bounds in `tributary-sdk`
kayabaNerve Oct 26, 2026
044a70a
Rename `tendermint-machine` to `tendermint-consensus`
kayabaNerve Oct 26, 2026
d447d89
`git mv coordinator/tributary-sdk coordinator/tributary-framework`
kayabaNerve Oct 26, 2026
fd54d0c
"Tributary SDK" -> "Tributary Framework"
kayabaNerve Oct 26, 2026
f94b7c3
Correct `<Mempool as Future>::poll`
kayabaNerve Oct 29, 2026
6ec3143
Further tidy `tributary-framework`
kayabaNerve Oct 31, 2026
5386fda
`cargo machete`
kayabaNerve Oct 31, 2026
5ae0d4a
Test `tributary-framework`
kayabaNerve Nov 1, 2026
6f095c9
Restore `serai-coordinator-tributary` tests
kayabaNerve Nov 3, 2026
044537b
Correct `tributary-framework` MSRV
kayabaNerve Nov 3, 2026
a1612e4
Rust 1.99.1
kayabaNerve Oct 1, 2026
6217a6b
Correct the check for if the median is unhealthy
kayabaNerve Oct 28, 2026
71bacc3
Merge branch 'next' into tributary-sdk-cleanup-testing
kayabaNerve Nov 3, 2026
cb7e7e8
Merge branch 'next' into tributary-sdk-cleanup-testing
kayabaNerve Nov 3, 2026
aa36053
Fix borked CI
kayabaNerve Nov 3, 2026
a0b939c
Correct `hyper-util`'s minimum version
kayabaNerve Nov 3, 2026
a17284f
Fix `prime-field`'s MSRV
kayabaNerve Nov 3, 2026
3c937cd
Fix https://github.com/serai-dex/serai/issues/1272
kayabaNerve Nov 3, 2026
ed613a0
Update `modular-frost` MSRV
kayabaNerve Nov 3, 2026
4214aac
Set `tendermint-consensus`'s version to `0.1.0`
kayabaNerve Nov 3, 2026
9142bee
Correct minimum `async-channel` dependency
kayabaNerve Nov 3, 2026
3404cda
Specify `dalek-ff-group` version for `tributary-framework`
kayabaNerve Nov 3, 2026
6ab0993
Fix sorted check within `AggregateSignature`
kayabaNerve Nov 3, 2026
04550ae
Fix https://github.com/serai-dex/serai/issues/1281
kayabaNerve Nov 12, 2026
d4794b5
Rust 1.100
kayabaNerve Nov 12, 2026
6a0af0c
Don't store slashes which cannot fit in a block
kayabaNerve Nov 12, 2026
52c2d55
Only check if the proposer was censured _after_ performing all other …
kayabaNerve Nov 12, 2026
3e1e83f
Verify slashes before queueing a block to be synced
kayabaNerve Nov 12, 2026
2ed6acc
If we ever begin adding a committed-to block, ensure we do so
kayabaNerve Nov 12, 2026
6a7d5d7
Continue making commits for as long as we can do so
kayabaNerve Nov 12, 2026
a83e565
Start syncing even if we're not behind, if it's been unusually long
kayabaNerve Nov 13, 2026
07c178a
Make `Tributary::process` synchronous
kayabaNerve Nov 13, 2026
ca017b2
Use `while let`, not `if let`, with `poll_next`
kayabaNerve Nov 13, 2026
e9378ed
Remove nightly-only `cargo-lints`
kayabaNerve Nov 13, 2026
6356eac
Bump `async-channel` to `2.3.1`
kayabaNerve Nov 13, 2026
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
4 changes: 2 additions & 2 deletions .github/actions/cargo-install/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,13 @@ runs:

# Use `musl` for the `libc`
export RUSTTARGET="$(cargo --version --verbose | grep '^host: ' | cut -f2 -d' ' | sed s/gnu/musl/)"
rustup +1.99 target add "$RUSTTARGET"
rustup +1.100 target add "$RUSTTARGET"
export RUSTTARGET="--target $RUSTTARGET"

export CC=clang
fi

CARGO_JSON=$(cargo +1.99 $CARGOFLAGS install "$RUSTTARGET" --locked "${CRATE}" "${GIT}" "${VERSION}" --message-format=json)
CARGO_JSON=$(cargo +1.100 $CARGOFLAGS install $RUSTTARGET --locked "${CRATE}" ${GIT} ${VERSION} --message-format=json)
BINARY=$(echo "$CARGO_JSON" | jq -r '.executable | select(. != null)')
# Check this installed to the directory we expect for caching purposes
if [ $CACHE -eq 1 ]; then
Expand Down
2 changes: 1 addition & 1 deletion .github/nightly-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
2026-10-01
2026-11-01
6 changes: 3 additions & 3 deletions .github/workflows/libraries-on-redox.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ on:
paths:
- "common/**"
- "crypto/**"
- "coordinator/tributary-sdk/tendermint/*"
- "coordinator/tributary-framework/tendermint/*"

pull_request:
paths:
- "common/**"
- "crypto/**"
- "coordinator/tributary-sdk/tendermint/*"
- "coordinator/tributary-framework/tendermint/*"

workflow_dispatch:

Expand Down Expand Up @@ -61,7 +61,7 @@ jobs:

redoxer toolchain

CRATES=$(find ./common ./crypto ./coordinator/tributary-sdk/tendermint -name "Cargo.toml")
CRATES=$(find ./common ./crypto ./coordinator/tributary-framework/tendermint -name "Cargo.toml")
echo "$CRATES" | while IFS="\n" read -r manifest; do
FEATURES="--all-features"
if [ "$manifest" = "./common/db/Cargo.toml" ]; then
Expand Down
16 changes: 6 additions & 10 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -51,15 +51,11 @@ jobs:
cargo clippy --locked --all-targets -p serai-abi -- -D warnings

# nightly Rust
cp ./Cargo.toml ./Cargo.toml.bak
sed s/'# TODO: `-Zcargo-lints`: '//g ./Cargo.toml > ./Cargo.toml.cargo-lints
mv ./Cargo.toml.cargo-lints ./Cargo.toml
cargo +"${NIGHTLY_VERSION}" clippy --locked -Zcargo-lints --all-features --all-targets -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked -Zcargo-lints --no-default-features --all-targets -p serai-primitives -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked -Zcargo-lints --all-targets -p serai-primitives -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked -Zcargo-lints --no-default-features --all-targets -p serai-abi -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked -Zcargo-lints --all-targets -p serai-abi -- -D warnings
mv ./Cargo.toml.bak ./Cargo.toml
cargo +"${NIGHTLY_VERSION}" clippy --locked --all-features --all-targets -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked --no-default-features --all-targets -p serai-primitives -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked --all-targets -p serai-primitives -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked --no-default-features --all-targets -p serai-abi -- -D warnings
cargo +"${NIGHTLY_VERSION}" clippy --locked --all-targets -p serai-abi -- -D warnings

- name: Verify `pallet::hooks` is unused
shell: bash
Expand Down Expand Up @@ -300,7 +296,7 @@ jobs:
cargo +"${LOCKFILE_VERSION}" update -p fs-err@2.0.0 --precise 2.4.0 || true

# Check this lockfile is actually adequate to build this crate
cargo +1.99 check
cargo +1.100 check

# We then find the actual `rust-version` using `cargo-msrv` (again stripping to just the
# major and minor version).
Expand Down
52 changes: 22 additions & 30 deletions Cargo.lock

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

31 changes: 16 additions & 15 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ members = [
"processor/ethereum",
"processor/monero",

"coordinator/tributary-sdk/tendermint",
"coordinator/tributary-sdk",
"coordinator/tributary-framework/tendermint",
"coordinator/tributary-framework",
"coordinator/cosign/types",
"coordinator/cosign",
"coordinator/substrate",
Expand Down Expand Up @@ -280,6 +280,20 @@ unused_import_braces = "warn"
unused_lifetimes = "warn"
unused_macro_rules = "warn"

[workspace.lints.cargo]
manual_readme = "warn"
missing_lints_inheritance = "warn"
non_kebab_case_bins = "warn"
non_kebab_case_features = "warn"
non_kebab_case_packages = "warn"
redundant_homepage = "warn"
redundant_readme = "warn"
unknown_lints = "warn"
unused_dependencies = "warn"
unused_workspace_dependencies = "warn"
unused_workspace_package_fields = "warn"
# TODO: Lint for implicit features?

[workspace.lints.clippy]
# Manually verified with a GitHub workflow
incompatible_msrv = "allow"
Expand Down Expand Up @@ -351,16 +365,3 @@ suspicious_xor_used_as_pow = "warn"
unnecessary_self_imports = "warn"
unused_trait_names = "warn"
wildcard_enum_match_arm = "warn"

# TODO: `-Zcargo-lints`: [workspace.lints.cargo]
# TODO: `-Zcargo-lints`: missing_lints_inheritance = "warn"
# TODO: `-Zcargo-lints`: non_kebab_case_bins = "warn"
# TODO: `-Zcargo-lints`: non_kebab_case_features = "warn"
# TODO: `-Zcargo-lints`: non_kebab_case_packages = "warn"
# TODO: `-Zcargo-lints`: redundant_homepage = "warn"
# TODO: `-Zcargo-lints`: redundant_readme = "warn"
# TODO: `-Zcargo-lints`: unknown_lints = "warn"
# TODO: `-Zcargo-lints`: unused_dependencies = "warn"
# TODO: `-Zcargo-lints`: unused_workspace_dependencies = "warn"
# TODO: `-Zcargo-lints`: unused_workspace_package_fields = "warn"
# TODO: Lint for implicit features?
10 changes: 5 additions & 5 deletions LICENSE.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ Each portion of the Serai codebase (such as a "crate", in Rust terminology, but
generally as organized within a folder) is expected to declare its license
within its manifest and within its folder. For portions of the Serai codebase
which may be _nested_ within each other, such as seen with
`coordinator/tributary-sdk/tendermint`, the associated license is expected to
be the one of closest proximity
`coordinator/tributary-framework/tendermint`, the associated license is
expected to be the one of closest proximity
(e.g. `coordinator/LICENSE` is not expected to cover
`coordinator/tributary-sdk/tendermint` as
`coordinator/tributary-sdk/tendermint/LICENSE` exists and is immediate to
`coordinator/tributary-sdk/tendermint`).
`coordinator/tributary-framework/tendermint` as
`coordinator/tributary-framework/tendermint/LICENSE` exists and is immediate to
`coordinator/tributary-framework/tendermint`).

If any files are of unclear licensing terms, or incorrectly licensed, please
reach out as this is considered an error to be immediately corrected.
Expand Down
2 changes: 1 addition & 1 deletion common/db/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ pub trait Transaction: Get {
/// If no value is stored to this key, this operation is effectively a NOP.
///
/// This is considered as a write to this key, with properties as documented by
/// [`Transaction::put`].
/// [`Transaction::set`].
///
/// The implementation MAY panic if the database is corrupt or would become corrupted. If the
/// length of the key exceeds an internal limit on the length of keys, this may be considered as
Expand Down
4 changes: 2 additions & 2 deletions common/request/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ repository = "https://github.com/serai-dex/serai/tree/develop/common/request"
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
keywords = ["http", "https", "async", "request", "ssl"]
edition = "2021"
rust-version = "1.81"
rust-version = "1.85"

[package.metadata.docs.rs]
all-features = true
Expand All @@ -19,7 +19,7 @@ workspace = true
[dependencies]
tower-service = { version = "0.3", default-features = false }
hyper = { version = "1", default-features = false, features = ["http1", "client"] }
hyper-util = { version = "0.1.9", default-features = false, features = ["http1", "client-legacy"] }
hyper-util = { version = "0.1.21", default-features = false, features = ["http1", "client-legacy"] }
http-body-util = { version = "0.1.2", default-features = false }
futures-util = { version = "0.3", default-features = false, features = ["std"] }
tokio = { version = "1.13", default-features = false, features = ["sync"] }
Expand Down
3 changes: 1 addition & 2 deletions common/zalloc/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ repository = "https://github.com/serai-dex/serai/tree/develop/common/zalloc"
authors = ["Luke Parker <lukeparker5132@gmail.com>"]
keywords = []
edition = "2021"
rust-version = "1.81"
rust-version = "1.100"

[package.metadata.docs.rs]
all-features = true
Expand All @@ -23,4 +23,3 @@ zeroize = { version = "1.6", default-features = false }
alloc = ["zeroize/alloc"]
std = ["alloc", "zeroize/std"]
default = ["std"]
allocator = []
12 changes: 6 additions & 6 deletions common/zalloc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ A Rust allocator which zeroizes all memory on deallocation.

### Allocator

On nightly, with the `allocator` feature enabled, [`ZeroizingAlloc`] also
implements
[`Allocator`](https://doc.rust-lang.org/1.96.0/alloc/alloc/trait.Allocator.html)
[`ZeroizingAlloc`] implements
[`Allocator`](https://doc.rust-lang.org/alloc/alloc/trait.Allocator.html)
and can be used for individual values with
[`Box`](https://doc.rust-lang.org/1.96.0/alloc/boxed/struct.Box.html). This is
notable for effecting zeroize even for types which don't implement
[`Zeroize`](https://docs.rs/zeroize/1.9.0/zeroize/trait.Zeroize.html).
[`Box`](https://doc.rust-lang.org/alloc/boxed/struct.Box.html). This is
notable for effecting zeroization even for types which don't implement
[`Zeroize`](https://docs.rs/zeroize/1.9.0/zeroize/trait.Zeroize.html)
_assuming in-place construction_.

### Safety

Expand Down
19 changes: 0 additions & 19 deletions common/zalloc/build.rs

This file was deleted.

Loading
Loading