EVANGEL DOCUMENTATION / 11
Developer reference
Contracts, routes, transaction builders, and integration boundaries.
Contract map
| Contract | Responsibility |
|---|---|
| LaunchFactory | Pairing registry, requests, initial-buy escrow, reviewed creation |
| LaunchToken | One-time 21M ERC-20 supply |
| LaunchPool | Virtual-quote curve, actual reserves, swaps, fees |
| GovernedProject | Adoption, reserve governance, bounties, fee policies |
| Evangel | Repository funding, sponsorships, milestones, claims |
| SponsoredAccount | Constrained 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
| Route | Purpose |
|---|---|
| GET /api/launchpad/state | Pinned-block launch registry, pairing metadata, selected project state |
| POST /api/launchpad/build | Unsigned launch transaction payload |
| POST /api/launchpad/social | Provider-dependent social import |
| POST /api/launchpad/advice | Configured advisory response; not an approval |
| GET /api/v0/state | Funding protocol state |
| POST /api/v0/repository | Provider-verified unsigned repository proof data |
| POST /api/v0/adoption | Provider-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