# mx-core
Core utilities shared across MultiversX Rust services.
## Features
- **Wallet Derivation**: BIP39 mnemonic to Ed25519 signing keys
- **Shard Computation**: Matching mx-chain-go algorithm
- **Address Encoding**: Bech32 encode/decode utilities
- **BigIntCaster Helpers**: Go-compatible big integer encode/decode plus unsigned amount parsing
- **Topic System**: P2P gossipsub topic generation and parsing
- **Protocol Constants**: Centralized network constants
## Usage
```rust
use mx_core::{
// Wallet derivation
derive_signing_key, derive_address,
// Shard computation
shard_of, shard_of_address_bytes, select_shard, shard_of_bytes,
decode_embedded_receiver,
// Address encoding
decode_bech32, encode_bech32,
// Big integer helpers
parse_big_uint, encode_big_int_caster, decode_big_int_caster,
// Topic system
BaseTopic, TopicInfo, TopicRouting, TopicShard,
broadcast_topic, transaction_topics_from_shards,
// Constants
META_SHARD_ID, METACHAIN_SHARD_ID, ALL_SHARD_ID,
TX_OPTION_HASH_SIGN, TX_OPTION_GUARDED,
// Encoding utilities
decode_base64, decode_hex, decode_base64_or_hex,
};
// Derive wallet from mnemonic
let key = derive_signing_key(mnemonic, 0, 0)?;
let address = derive_address(mnemonic, 0, 0)?;
// Compute shard (multiple methods)
let shard = shard_of(&address, 3)?;
let shard = shard_of_address_bytes(&raw_bytes, 3);
let shard = select_shard(last_byte, 3);
// Parse topic (with caching for hot paths)
let info = TopicInfo::parse("transactions_0_1");
let info = TopicInfo::parse_cached("transactions_0_1"); // cached version
```
## Modules
| `wallet` | Ed25519 key derivation from BIP39 mnemonics |
| `shard` | Shard computation matching mx-chain-go |
| `bech32_utils` | Address encoding/decoding |
| `bigint` | Go BigIntCaster helpers and unsigned amount parsing |
| `topics` | P2P topic generation and parsing |
| `constants` | Protocol constants |
| `encoding` | Base64/hex utilities |
| `mnemonic` | Mnemonic normalization |
## Performance
- `shard_of_address_bytes`: ~30ns (pre-decoded)
- `shard_of`: ~530ns (includes bech32 decode)
- Topic parsing: Cached for hot paths