chain backend grew submit_tx (POST /submittx, raw cbor body) and
tx_status (POST /tx_info → Confirmed{block,epoch}|NotFound). serde
tag-based status enum so the mcp tool returns clean json.
new core::tx module: ProtocolParams + InputUtxo + build_signed_payment.
two-pass fee refinement — build unsigned, measure size, add witness
overhead constant (128 bytes for vkey+sig+cbor framing), recompute
real fee, build with final fee, sign once (PrivateKey doesn't impl
Clone in pallas-wallet, so we don't double-sign). change below
min-utxo merges into fee instead of emitting dust.
added pallas-txbuilder + pallas-wallet 0.32 deps. PaymentKey gains
crate-private xprv() accessor; payment_key_to_private converts
ed25519-bip32 XPrv → pallas-wallet PrivateKey::Extended via the
64-byte extended secret bytes.
mcp tools.rs: 4 → 6 tools.
- wallet.send (to_address, lovelace, force) with hard-cap guard
- wallet.tx_status (tx_hash) → status json
SendArgs/TxStatusArgs use schemars derive so rmcp generates proper
input schemas. config.rs adds max_send_lovelace (default 100 ADA,
ALDABRA_MAX_SEND_LOVELACE env override).
37 unit tests. mcp tools/list smoke confirms all 6 tools register
with correct schemas (force defaults false, lovelace required uint64,
to_address required string).
phase 2.5 (native-asset send), 2.6 (cold-sign offline mode), and
2.7 (real preprod smoke against a funded wallet) still open.
39 lines
1.3 KiB
TOML
39 lines
1.3 KiB
TOML
# aldabra-core — pure crypto + types. No I/O, no network. Deterministic
|
|
# given the same mnemonic + derivation path.
|
|
#
|
|
# This crate is intentionally narrow:
|
|
# - Mnemonic → root key
|
|
# - Root key → payment / stake key (CIP-1852 derivation)
|
|
# - Address construction (mainnet, testnet)
|
|
# - Transaction signing (given an unsigned TX builder output from
|
|
# aldabra-chain or pallas-txbuilder)
|
|
#
|
|
# It deliberately does NOT:
|
|
# - Do any chain queries (that's aldabra-chain's job)
|
|
# - Talk to MCP (that's aldabra-mcp's job)
|
|
# - Touch files (the daemon owns disk I/O; we get keys handed in)
|
|
#
|
|
# Rationale: this is the most security-sensitive crate. Keeping it
|
|
# narrow + I/O-free makes it auditable.
|
|
|
|
[package]
|
|
name = "aldabra-core"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license-file.workspace = true
|
|
repository.workspace = true
|
|
authors.workspace = true
|
|
|
|
[dependencies]
|
|
pallas-primitives = { workspace = true }
|
|
pallas-codec = { workspace = true }
|
|
pallas-crypto = { workspace = true }
|
|
pallas-addresses = { workspace = true }
|
|
pallas-txbuilder = { workspace = true }
|
|
pallas-wallet = { workspace = true }
|
|
bip39 = { workspace = true }
|
|
ed25519-bip32 = { workspace = true }
|
|
cryptoxide = { workspace = true }
|
|
zeroize = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
serde = { workspace = true }
|