Dario Gabriel LipicarandClaude Opus 5 dfc3dd59d8 ci: keep reading the old Cachix until the Attic caches are seeded
The previous commit broke CI on main here, and the mechanism is worth recording.
Measured, by asking each cache for the path that failed in keystore-module
(the same class of path fails in every Rust-building repo):

  logos-co.cachix.org           200  <- present
  cache.nix.logos.co/public     404
  cache.nix.logos.co/ci         404
  cache.nixos.org               404

The failing path is a fixed-output fetch of a crates.io tarball
(crate-alloy-eip7928-0.3.4.tar.gz). With Cachix in the substituters CI never
performed that fetch -- it downloaded the finished path. Dropping Cachix
therefore did not merely cost cache hits: it made CI attempt the fetch for the
first time, and it fails there in ~7 minutes, taking cargo-vendor-dir and the
whole module with it.

The crate itself is healthy: that URL returns 20373 bytes hashing to
407510740da5..., exactly the expected outputHash. So this is not a yanked crate
or a stale hash -- it is an untested assumption ("CI can fetch from crates.io")
that Cachix had been hiding.

Cachix therefore stays as a READ-ONLY substituter until Attic has the paths. It
is credential-free (the cache is public) and nothing publishes to it any more:
pushes go to Attic, public on main and ci elsewhere. Drop these two lines once
Attic is seeded -- and expect that first uncached build to exercise the fetch
path for real.

The Attic side is confirmed working in the failing runs themselves: they
substituted python3-env and doctest from cache.nix.logos.co/public, and the push
step correctly skipped, since these repos have no public-cache environment yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 00:44:24 -03:00
2026-06-16 22:58:08 -03:00
2026-06-16 22:58:08 -03:00

logos-evm-wallet-backend-module

The coordinator for the Logos multi-chain EVM wallet (Rust, rust-first cdylib). It depends on eth_rpc_module, keystore_module, and token_list_module, and it also folds in the tx-builder (offline alloy ABI/tx construction).

It owns the central proxy + chain config (and pushes each chain's {endpoint, proxy, proxyRequired} down into eth_rpc), fetches multi-chain balances with Multicall3 (one eth_call per chain, falling back to per-call), orchestrates sends (build → sign → broadcast → record), and stores this wallet's own transaction history (the only history available without a proprietary indexer).

Contract (WalletBackendModule)

Config: set_proxy_config/get_proxy_config, set_chains/get_chains, test_endpoint. Accounts: create_account, import_mnemonic, list_accounts, unlock/lock. Watched tokens: set_watched_tokens/get_watched_tokens. Tokens: get_tokens, add_custom_token. Balances: refresh_balances, get_balances. Send: estimate_fee, send_native, send_erc20. History: get_history, refresh_tx_status. Events: balances_updated, tx_status_changed, proxy_error.

Build & test

cd rust-lib && cargo test --no-default-features   # tx-builder (incl. Multicall3), config, history
nix build .#install                                # -> result/modules/wallet_backend_module/

Building the full module pulls the three dependency modules' published .lidl contracts to generate the typed modules().<dep> clients. In the Logos workspace they resolve via flake follows/--override-input to local checkouts.

S
Description
Logos EVM wallet coordinator + tx-builder: multi-chain balances (Multicall3), send orchestration, local history.
Readme
9.8 MiB
Languages
Rust 95.3%
Nix 2.8%
Shell 1.3%
CMake 0.6%