Get the addresses
getEvmAccount() returns the underlying viem LocalAccount if you need to sign arbitrary EVM transactions outside the SDK helpers.
Under the hood
The identity key is a single secp256k1 private key derived from your Spark seed. Spark uses its own BIP32 path for the derivation, not Ethereum’sm/44'/60'/0'/0/0. Spark uses that private key directly to sign transfers; Flashnet Execution uses it to sign EVM transactions and intents.
To produce the EVM address from the same private key, the SDK applies the standard Ethereum derivation: take the uncompressed public key, drop the leading 0x04 prefix, keccak256-hash the remaining 64 bytes, then take the last 20 bytes.
Funding
There is no faucet step. The Execution side carries no native gas balance separately from your sats. Flashnet runs the EVM withbaseFeePerGas = 0 and maxPriorityFeePerGas = 0, so there is no base fee to charge. To get assets onto the Execution side, deposit them: see Deposits.
What gets shared
| Belongs to the identity key | Spark side | Execution side |
|---|---|---|
| Address | Bech32m (sp1...) | EVM (0x...) |
| Custody | Spark MPC + L1 fallback | SparkGateway + native sats balance |
| Auth | FROST / wallet signing | Challenge-response on the gateway |
| Settlement | send_sats / send_token | EIP-1559 transactions |
authenticate() returns.