MAINNET ยท SPARK NETWORK ยท FLASHNET AMM ยท V3
spark1โฆ address in depixAddress on POST /deposit and the DePix is paid on Spark. There is no parameter naming a network: the address decides it. A Spark payout costs R$ 0,99 and carries no network fee on top of that.POST /withdraw is not paid on Spark. Withdrawals are processed on Liquid only, and receiving DePix on Spark does not enable them on Spark.getPool() or on Sparkscan, never from fixed values.| Field | Value |
|---|---|
| Name / ticker | Decentralized PIX / DePix |
| Token identifier (bech32m) | btkn1sdqgp9904d620fmgs6p9669fghzfq06hvpqmy2wg8c9xtw4qms3qpf4aty |
| Token identifier (hex) | 83408094afab74a7a76886825d68a945c4903f576041b229c83e0a65baa0dc22 |
| Decimals | 8 |
| Freezable | No |
| Issuer Spark address | spark1pgssx6ss5zdclxry80tkahdrzttr9e27fwymzmnhwzz4k7q35fmh8kw50pxnuf |
| Network | Bitcoin mainnet / Spark |
020202020202020202020202020202020202020202020202020202020202020202| Field | Value |
|---|---|
Pool ID (lpIdentityPublicKey) | 0354b3225e9239f2ccf45113fcad5a8ff1526ffd2ec893bcfc2828e3627d334b98 |
| Pool Spark address | sp1pgssx49nyf0fyw0jen69zylu44dglu2jdl7jajynhn7zs28rvf7nxjucfavax5 |
| Host | eulen |
| Curve type | V3 concentrated |
| Tick spacing | 10 |
| Asset A | DePix |
| Asset B | BTC |
| Created | 2026-09-09 |
getPool() or on Sparkscan by searching the Pool ID or the token identifier above โ don't rely on fixed values.@flashnet/sdkimport { FlashnetClient } from '@flashnet/sdk';
import { SparkWallet } from '@buildonspark/spark-sdk';
const POOL_ID = "0354b3225e9239f2ccf45113fcad5a8ff1526ffd2ec893bcfc2828e3627d334b98";
const DEPIX_ADDRESS = "83408094afab74a7a76886825d68a945c4903f576041b229c83e0a65baa0dc22"; // hex
const BTC_ADDRESS = "020202020202020202020202020202020202020202020202020202020202020202";
async function main() {
// 1. Initialize YOUR OWN Spark wallet (never Eulen's).
// process.env.MNEMONIC is just an example placeholder.
const { wallet } = await SparkWallet.initialize({
mnemonicOrSeed: process.env.MNEMONIC,
options: { network: "MAINNET" },
});
const client = new FlashnetClient(wallet);
await client.initialize();
// 2. Read the pool's current state (price, reserves, tick).
const pool = await client.getPool(POOL_ID);
console.log(pool);
// 3. Simulate before executing (does not move funds).
// Sell DePix for BTC โ base units, 8 decimals ("100000000" = 1 DePix).
const amountIn = "100000000"; // 1 DePix
const simulation = await client.simulateSwap({
poolId: POOL_ID,
assetInAddress: DEPIX_ADDRESS,
assetOutAddress: BTC_ADDRESS,
amountIn,
});
console.log("Simulated:", simulation);
// 4. Execute for real.
const maxSlippageBps = 100; // 1%
const minAmountOut = (
(BigInt(simulation.amountOut) * BigInt(10000 - maxSlippageBps)) / 10000n
).toString();
const result = await client.executeSwap({
poolId: POOL_ID,
assetInAddress: DEPIX_ADDRESS,
assetOutAddress: BTC_ADDRESS,
amountIn,
maxSlippageBps,
minAmountOut,
});
console.log("Swap executed:", result);
}
main().catch(console.error);assetInAddress/assetOutAddress: BTC_ADDRESS as the input (in sats), DEPIX_ADDRESS as the output. Same pool, same method.FSAG-1003 if it's too low) โ not documented publicly by Flashnet; increase amountIn if it happens.executeSwap transfers the assetIn from the wallet as part of the call itself โ no need to transfer manually beforehand. If it fails after sending, the SDK attempts an automatic clawback.useFreeBalance: true.getPool() call above, or directly on Sparkscan, by searching the Pool ID or the token identifier listed on this page.