Dario Gabriel LipicarandClaude Opus 5 0c99a98529 ci: keep reading the old Cachix until the Attic caches are seeded
My previous commit broke this repo's CI on main, and the mechanism is worth
recording. Measured, by asking each cache for the path that failed
(l5g04kz8cd8amnpxmq8bfm69kypqfpkj-alloy-eip7928-0.3.4):

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

CI never built that crate. It substituted it from Cachix on every run. Dropping
Cachix from the substituters therefore did not merely cost cache hits -- it
turned "fetch a prebuilt path" into "build it from source", and that build
fails, taking cargo-vendor-dir and the whole module down with it.

So Cachix 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.

The Attic side is confirmed working in the failing run itself -- it substituted
python3-env and doctest from cache.nix.logos.co/public -- and the push step
correctly skipped, since this repo has no public-cache environment yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 00:37:59 -03:00

logos-evm-keystore-module

A Logos core module (Rust, rust-first cdylib) that is the keystore for the Logos multi-chain EVM wallet: scrypt-encrypted vaults, BIP39/BIP32 HD derivation, and secp256k1 signing. It does no networking, and private keys never cross the module boundary — only addresses, signed payloads, and (re-encrypted) keystore JSON do.

Built on well-established crates: alloy (signing, tx encoding), eth-keystore (Web3 Secure Storage scrypt vaults), and coins-bip39/coins-bip32 (HD wallets).

Contract (KeystoreModule)

create_mnemonic, import_mnemonic, new_account, import_private_key, import_keystore_json, export_keystore_json, list_accounts, has_address, delete_account, unlock/timed_unlock/lock/is_unlocked, sign_transaction (legacy EIP-155 + EIP-1559), sign_message (EIP-191). Event: accounts_changed. All structured values cross the IPC boundary as JSON strings.

Build & test

# crypto core (no Logos runtime needed)
cd rust-lib && cargo test --no-default-features

# full module (Qt plugin) + .lgx package
nix build .#install   # -> result/modules/keystore_module/
nix build .#lgx

The crypto core is feature-gated away from the Logos glue so it stays cargo test-able on its own; the builder compiles the glue via the default logos_module feature. See the wallet plan for the full architecture.

S
Description
Logos EVM wallet keystore: scrypt vaults, BIP39/BIP32 HD, secp256k1 signing (no network).
Readme
3.9 MiB
Languages
Rust 97.6%
Shell 1.1%
Nix 0.8%
CMake 0.5%