Skip to content

EVANGEL DOCUMENTATION / 11

Developer reference

Contracts, routes, transaction builders, and integration boundaries.

Contract map

ContractResponsibility
LaunchFactoryPairing registry, requests, initial-buy escrow, reviewed creation
LaunchTokenOne-time 21M ERC-20 supply
LaunchPoolVirtual-quote curve, actual reserves, swaps, fees
GovernedProjectAdoption, reserve governance, bounties, fee policies
EvangelRepository funding, sponsorships, milestones, claims
SponsoredAccountConstrained optional EIP-7702 sponsored actions

Launch entry points

requestLaunch uses the factory default quote. requestLaunchWithQuote takes a specific approved asset plus name, ticker, source, metadata, and virtual quote in base units. Both paths enforce eligibility. reviewSubjectHash binds the request, initial purchase, and asset address.

approveQuote records the governor’s time-limited evidence attestation; disableQuote prevents new usage. fundInitialBuy and cancelRequest move the exact request’s pairing asset. A registered project’s quote cannot be swapped by changing a UI selection.

Public HTTP interfaces

RoutePurpose
GET /api/launchpad/statePinned-block launch registry, pairing metadata, selected project state
POST /api/launchpad/buildUnsigned launch transaction payload
POST /api/launchpad/socialProvider-dependent social import
POST /api/launchpad/adviceConfigured advisory response; not an approval
GET /api/v0/stateFunding protocol state
POST /api/v0/repositoryProvider-verified unsigned repository proof data
POST /api/v0/adoptionProvider-verified unsigned adoption proof data

Build a launch transaction

Send a same-origin JSON request with name, symbol, source, metadata, virtualQuote, and optional quoteAsset. The builder checks the configured chain and current asset approval and returns chainId, to, data, value, and requiresWalletSignature. It does not sign or broadcast.

The caller must still inspect the destination and payload and simulate before submitting. An unconfigured deployment returns an unavailable response. Provider errors must not expose secret RPC URLs or credentials.

const response = await fetch("/api/launchpad/build", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    name: "Example", symbol: "EXAMPLE",
    source: "https://github.com/owner/repository",
    metadata: "Provisional project terms and fee purpose",
    virtualQuote: "1000"
    // Add quoteAsset: the exact approved ERC-20 address.
  })
});
if (!response.ok) throw new Error("Launch request unavailable");
const unsignedTransaction = await response.json();

Amounts and state

Use integer base units for contract calls. Project tokens have 18 decimals; quote assets may have 0–18. Read the selected asset’s decimals rather than assuming six. Display fees, reserve amounts, and sale output in the pairing unit.

State reconstruction pins related reads to a block. A display is a snapshot, not a lock on future state. Review hashes, minimum output, deadlines, and transaction simulation protect different parts of the workflow.

Compatibility and unsupported integrations

The current client expects the multi-asset factory ABI. Older factory deployments lack that registry and require an explicit migration or fresh deployment; source changes cannot upgrade immutable deployed code.

The /api/v0 prefix remains for funding compatibility and does not restore retired billion-token markets, fixed fee-allocation rules, or three-reviewer governance. Full Bags/Bankr parity, autonomous social replies, cross-chain operation, and Kairence sovereign enrollment are not claimed.

Local validation commands

npm test
npm run test:browser
node tests/e2e/launchpad.mjs --single-authority
npm run security:dependencies
npm run security:contracts