Appearance
Glossary
Vocabulary the rest of this documentation assumes. Platform-specific terms first, then the general DeFi ones where Blazpay's usage is non-obvious.
Blazpay terms
Aggregator : In swap-sdk, one class implementing getQuotes, getTransactionData and getTxStatus for a single upstream provider. Confusingly, several of these upstreams are themselves aggregators (1inch, LiFi, Odos) — Blazpay aggregates the aggregators. See providers.
Action : The discriminator on a BlazAI bot message that tells the frontend which component to render. Enumerated as BLAZ_ACTIONS in bz-backend/v1/models/blazMessage.js; the union type is IAIAction in defi-dex/src/types/ai-chat.type.ts. An intent is what the user wanted; an action is what the UI shows.
Agent (two meanings — check context) : 1. bz-agent, the intent-classification service. : 2. An Autopilot agent: one AgentAccount in the vault contract, with its own budget, policy and limits.
BlazAI : The conversational product. Lives at ai.blazpay.com.
BlazBob / BlazRocket : The two NFT collections in the rewards layer. BlazRocket NFTs are staked for daily BlazPoints with upgrade and streak multipliers; BlazBob has 11 mintable tiers and is deployed on Arbitrum and Hemi.
BlazPoints : The off-chain reward currency of the ecosystem layer. Earned from staking, quests, streaks and games; spendable in the marketplace.
BlazpayRelayer : The per-chain UUPS-upgradeable settlement contract. Every EVM swap and bridge goes through its executeMetaTransactionSwap. See relayer.
Bridge-INTO-only chain : A chain seeded as a bridge destination with no BlazpayRelayer deployed, so you can bridge to it but not swap or bridge from it. Robinhood Chain (4663) was the first, though it has since had a relayer deployed too.
CSIP : The user-facing name for the DCA product ("Crypto Systematic Investment Plan"). The code, models and contract all say DCA; the UI says CSIP. They are the same thing.
Executor : The platform wallet (PRIVATE_KEY_EXECUTOR, 0x5935…0459) that submits CSIP and Autopilot trades. Bounded by on-chain limits — see custody.
Fill : One executed order inside a CSIP position, recorded in models/DcaFill.js with a unique (txHash, positionId).
Intent : The classification bz-agent assigns to a user message — SWAP, BRIDGE, AUTOPILOT, CONTRACT_AUDIT, and so on. Enumerated in bz-agent/src/utils/constant.ts as AVAILABLE_INTENTS. See intent catalogue.
MetaTransaction : The EIP-712 struct the backend signs and the relayer verifies: { targetContract, data, amount, token, isNative, recipient, nativeValue, nonce, deadline }. Note that recipient is the aggregator's spender, not the end user — a naming wart worth remembering.
Policy : The JSON document defining an Autopilot agent's behaviour — budget token, allowed tokens, limits, safety thresholds, slippage, and a list of strategies. Its keccak256 hash is stored on-chain and signed by the user. See policy engine.
Position : One CSIP schedule. positionId is unique per wallet, not globally — a frequent source of bugs.
Provider : Used loosely for any upstream Blazpay integrates: a liquidity aggregator, a bridge, or a fiat ramp. In swap-sdk specifically it is a member of the AGGREGATORS enum.
Quote : In swap-sdk, a Quote object wrapping { data, meta, restProps }. Only meta is serialised to the frontend; data is the raw provider response retained so a second round-trip can build the transaction. See swap-sdk.
Relayer (contract sense) : See BlazpayRelayer. Note that the "meta-transaction" here is about signature provenance, not gas abstraction — the user still pays their own gas.
Route : A specific path from input token to output token, produced by one provider. The UI shows several and lets the user pick on price, speed or trust assumptions.
Site / shell : defi-dex builds two apps from one repo. VITE_SITE=defi produces the trading shell (FullApp + MarketingApp); VITE_SITE=ai produces the chat shell (AiApp). See domains.
Trusted major : A token the Autopilot safety gate skips rug-checking, because scanning USDC on every tick is wasted work.
Architecture terms
Action renderer : defi-dex/src/component/defi/swapAI/BotMessage.tsx — a switch on message.action that picks the component for each bot reply.
Calldata guard : The check in the DCA cron that rejects a provider's transaction data when tx.to == fromToken or data.length <= 68, because that pattern is an approve() step masquerading as a swap.
Execution engine : bz-backend/services/executionEngine.js — quote-fetch, route-probe and batch-submit logic extracted from dcaCron.js so Autopilot and CSIP share one implementation.
Measured delta : Crediting a user with balanceAfter - balanceBefore rather than with a number the executor supplied. Both vaults do this; DCA V1 did not, and that was a bug.
Route probing : Simulating a candidate route on-chain (estimateGas against the vault's batch function) before selecting it. This is how solver- and intent-based providers get rejected: they deliver zero output in the transaction, so the vault's minimum-output check correctly reverts.
SSE (Server-Sent Events) : The streaming transport for both quote fan-out (GET /defi/quotes) and chat replies (POST /v1/blaz/message/stream).
Prerender : defi-dex/scripts/prerender-seo.mjs composes static HTML for 114 marketing pages after vite build, so non-JS crawlers see real content. React hydrates over it for humans. See SEO subsystem.
UUPS : The OpenZeppelin upgrade pattern used by all three Blazpay vaults. The implementation address lives in EIP-1967 slot; _authorizeUpgrade is onlyOwner.
DeFi terms as Blazpay uses them
Allowance / approval : An ERC-20 grant letting a contract move your tokens. Blazpay approves the relayer address, not the aggregator's router, and the approval must cover amount + fee.
Basis point (bp) : 1/100th of a percent. inPercentFee = 10 against a 10_000 denominator is 10 bp = 0.10%. Autopilot's feeBps = 20 is 0.20%.
Native asset sentinel : Several addresses mean "the chain's native coin": 0x0000…0000, 0xeeee…eeee, and on Polygon 0x…1010. Base.isNativeAddresss (the triple-s typo is in the source) recognises all of them.
Nonce : Per-user replay counter inside the relayer, read via getNonce(address). Distinct from the account nonce in the transaction itself.
Slippage : Blazpay expresses it as slippageBps, validated to 10–300 (0.1%–3%) in Autopilot policies.
Spender : The address that must be approved to pull tokens for a given route. Returned alongside the built transaction, and passed to the relayer as MetaTransaction.recipient.
Naming warts to expect
These are inconsistencies in the codebase, not in this documentation. Knowing them saves time.
| You will see | It actually means |
|---|---|
MetaTransaction.recipient | The aggregator's spender address, not the end user |
isNativeAddresss | Triple s. Do not "fix" it without updating every call site |
| CSIP vs DCA | Same product. UI says CSIP, code says DCA |
DCA interval | The total window in seconds, not the gap between orders. Orders are spaced interval / frequency apart |
DCA frequency | The order count, not a rate |
blazSession / blazMessage | BlazAI chat persistence. The older AIChat / AIMessages models belong to the deprecated swap-ai path |
balz.route.js | Typo for "blaz". It is the BlazAI route file |
defi-1 | The name field in defi-dex/package.json |