You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Role: On-chain LBP program (SPEL), ZK allowlist circuits (RISC Zero), Rust SDK with C-ABI FFI, and integration test suite.
LEZ Track Record: Delivered LP-0016 — Anonymous Forum with Threshold Moderation (awarded to a different participant, now continues as an independent personal project): a full-stack privacy-preserving protocol spanning SPEL on-chain programs, RISC Zero ZK circuits, a forum-agnostic Rust SDK with C-ABI FFI, and native Logos Basecamp module integration.
Role: Basecamp mini-app development: core module (universal interface, C++ backend) and QML UI module (participant and creator views), including sale analytics frontend.
Team Commitment: NullPad is Evice Labs sole active proposal, our capacity across this 18-week window is allocated to this delivery, not split across parallel RFP submissions.
Project Summary
Token launches are the entry point for new projects into any blockchain ecosystem. On transparent chains, every participant in a token sale is immediately linkable to a wallet address and, by extension, to the buyer's full on-chain history. Early investors can be identified, profiled, or front-run at unlock — a structural privacy failure that no existing launchpad platform (Fjord Foundry, DAO Maker, Polkastarter) addresses.
NullPad builds a Liquidity Bootstrapping Pool (LBP) launchpad natively on LEZ, combining Balancer-style weight-shifting price discovery with the optional deshield→buy→re-shield privacy pattern. The LBP mechanism starts price above estimated fair value and lets it decline over time unless buying pressure counteracts it — naturally deterring bot sniping and removing the need for teams to pre-set a valuation. When buyers interact from a private account, their identity, total position, and token destination are completely unlinked from the on-chain sale, with each purchase routed through a fresh ephemeral account. An optional ZK allowlist gate enables projects to restrict participation without exposing the eligibility set on-chain, preserving the zone-wide anonymity set regardless of list size.
Our team brings direct, proven experience with the exact LEZ primitives this RFP requires: LP-0016 delivered Merkle-tree ZK membership proofs and privacy-preserving protocol design on RISC Zero; LP-0012 delivered the structured event system that the RFP depends on for analytics; and LP-0013 delivered the token authority model required for mint and custody operations.
Evidence at a Glance
Every credential below is public and independently verifiable, click through before reading the technical approach.
De-risks NullPad's core dependency: correct VPK-aware private PDA derivation and the async WalletCore API are exactly what the LBP program's PDA-derived sale accounts and ephemeral private-account flow require on current LEZ
Technical Approach
The LBP program will be built in Rust using the SPEL framework, compiled to RISC-V and executed inside the RISC Zero ZKVM on the Logos Execution Zone.
LBP Pricing Engine (Balancer Weighted Pool Math): Implementing the weight-shifting AMM derived from the Balancer weighted pool formula. Pool weights are linearly interpolated between start and end values over the sale duration using the on-chain block timestamp. The buy formula computes token output as: tokens_out = reserve_token × (1 - (reserve_collateral / (reserve_collateral + C_in)) ^ (w_collateral / w_token)). All arithmetic uses fixed-point integer operations (no floating point in ZKVM) — the power function x^(a/b) is implemented via a Rust fixed-point math library using natural logarithm and exponentiation approximations with sufficient precision for weight ratios between 1/99 and 99/1. Weight computation is lazy: the program evaluates weights from the block timestamp at each transaction, ensuring correct pricing without depending on external poke calls.
Sale Lifecycle & Pool State: Each sale is a PDA-derived account storing: token pair, start/end weights, start/end timestamps, reserves, cumulative collateral raised, per-block token ceiling (optional), allowlist root (optional), pause flag, creator authority, and protocol fee configuration. The creator deposits project tokens at sale creation. After the end timestamp, the creator can withdraw collateral (net of protocol fee, deducted atomically) and unsold tokens. Pausing halts buys but does not affect weight progression — the weight schedule continues during a pause.
ZK Allowlist Gate: When enabled, the creator commits a Merkle root of the eligible participant set at sale creation. Buyers prove inclusion via a RISC Zero ZK circuit that verifies Merkle path membership without revealing the full set on-chain. This directly reuses the ZK set membership architecture from LP-0016 (Anonymous Forum), where the same pattern (Merkle tree commitment + ZK inclusion proof) was used for anonymous membership verification. On LEZ, the effective anonymity set is all private accounts in the zone, not the allowlist size — the allowlist gate does not degrade privacy. This fully satisfies F7: Merkle root commitment, RISC Zero ZK inclusion proof, and zone-wide anonymity set preservation are delivered as core scope in M3 — not a partial, deferred, or bolt-on implementation.
Atomic Privacy Pattern (SDK Level): The SDK orchestrates the deshield→buy→re-shield flow as a single, indivisible operation, following the interaction model defined in RFP-008. The atomic deshield transfers both collateral and gas to a freshly generated ephemeral account; the buy executes against the LBP pool; the purchased tokens are re-shielded to the buyer's validated private account. If any step fails, the entire transaction reverts. The SDK enforces that the re-shield target is a private (shielded) account and hard-blocks any transaction where the shielded balance cannot cover both collateral and gas.
Event Integration & Analytics: Sale events (buy executed, weights updated, sale created, sale closed) are emitted using the structured event system delivered in LP-0012 (emit_event() with Borsh-encoded EventRecord). The analytics backend consumes events via the getTransactionReceipt RPC to provide aggregate sale metrics (total raised, price over time, buy count) without exposing individual participant identities.
Token Program Integration: The LBP program interacts with the LEZ Token Program for all token custody operations (transfer collateral in, transfer project tokens out, deposit/withdraw). Token definitions with mint authority (LP-0013) enable the protocol fee transfer to the treasury account. ATA derivation per (owner, mint) is used for all user-facing token accounts; the program also accepts any valid SPL token account owned by the caller.
Logos Basecamp Mini-App: The mini-app follows the current Logos module architecture (tutorial-v3):
A core module (type: core, interface: universal) built with mkLogosModule, wrapping the NullPad Rust SDK via C-ABI FFI. All sale lifecycle methods are exposed as public methods on the impl class, auto-generated by logos-cpp-generator.
A UI module (type: ui_qml with C++ backend) built with mkLogosQmlModule. Two views: Participant view (browse active sales with live price curve, weight visualization, time remaining; execute buy with pre-confirmation summary) and Creator view (create sale with all parameters including allowlist, monitor active sale, pause/resume, close, withdraw). Privacy disclosure rendered before each buy from a private account.
Both modules distributed as .lgx packages, installable via lgpm.
RFP-016 Hard Requirements Coverage
Functionality
#
Requirement
Milestone
Notes
F1
LBP program: weight-shifting AMM with Balancer weighted pool formula
M2
Fixed-point integer math; lazy weight computation from block timestamp
F2
Sale creation with all configurable parameters (token pair, weights, timestamps, deposit, per-block cap, allowlist)
M2
PDA-derived sale accounts; all parameters immutable after creation
F3
Buy from public account or via deshield→buy→re-shield for private accounts
M3
Atomic privacy pattern enforced at SDK level
F4
Permissionless weight poke; correct weight at transaction time regardless of last poke
M2
Lazy computation — weights evaluated from block timestamp at each tx
F5
Creator withdraw: collateral net of protocol fee + unsold tokens after end timestamp
M2
Fee deducted atomically in withdrawal transaction
F6
Pause/resume buying; weight schedule continues during pause
M2
Pause flag checked on buy; weight interpolation ignores pause state
SDK and mini-app support both public and deshield→buy→re-shield paths
M3, M4
Both paths fully supported
PV2
Re-shield step not skippable from private account
M3
Hard-enforced at SDK level
PV3
Pre-confirmation privacy summary before each private buy
M4
Split-view rendered in mini-app
PV4
SDK validates re-shield target is a private account
M3
Rejects with explicit error if not
PV5
Ephemeral account never reused across operations
M3
Fresh account per operation; reuse architecturally impossible
Soft Requirements
#
Requirement
Milestone
Notes
Soft1
Fixed-price sale mode (no weight shift; constant price)
M2
Implemented as degenerate case: start weight = end weight
Out of Scope — Acknowledged
Item
Reason
Per-wallet buy limits
Fundamentally incompatible with private account path (RFP explicitly acknowledges this)
Fully private pool state
Open research problem; public pool state is required for LBP price discovery
Smart contract audit
Outside RFP-016 scope by design, not by omission — every M2–M4 deliverable is engineered audit-ready (full invariant test coverage, Rustdoc across the SDK, CI-gated E2E suite per S2/S3). We can scope a dedicated audit engagement with Logos as a follow-up, with coordination already accounted for on our side.
Milestones, Payout and Timeline
Milestone
Payout
Duration
Owner
Deliverables
M1 — Design and Specification
$10,000
2 weeks
All
System architecture document; Balancer weighted math specification with fixed-point precision analysis; ZK allowlist circuit design; Sale lifecycle state machine; Mini-app UX wireframes (Figma); Privacy and anonymisation properties draft
LBP program deployed on devnet: weighted pool math, sale creation, buy, weight poke, pause/resume, close/withdraw, protocol fee, per-block cap, slippage protection; SPEL IDL; CU usage report per operation
Basecamp mini-app: core module (universal interface) + UI module (ui_qml with C++ backend), .lgx packages; CLI with CLI doc packet; Sale analytics view (LP-0012 event consumption); Figma mockups; E2E test suite; CI green; LEZ testnet 0.2 deployment
M5 — Documentation & Finalization
$8,000
2 weeks
All
Final README with deployment steps and program addresses; Setup guides for creators and participants; Code formatting/linting
M6 — Testnet 0.3 Verification
$8,000
1 week
Bristin
Program updated and verified on LEZ testnet 0.3; Regression test pass; Migration notes if API changes
M7 — Mainnet Deployment
$8,000
1 week
Bristin
Production deployment to LEZ mainnet; Deployment verification; Final program addresses documented
Total
$100,000
18 weeks
On the 18-week total: M1–M5 — full design-through-testnet-0.2 delivery — total 16 weeks, at the upper bound of the requested 14–16 week window. The remaining 2 weeks (M6, M7) are appended verification and mainnet-deployment milestones gated by LEZ's own testnet 0.3 and mainnet release cadence, not by our delivery capacity. M6 and M7 timelines depend on LEZ testnet 0.3 and mainnet readiness respectively. If platform releases are delayed, these milestones will be delivered promptly after the corresponding network becomes available, without affecting the preceding milestone schedule.
Total Requested Budget (USD)
$100,000
Why $100,000
Three factors keep this budget efficient relative to scope, and two extend it beyond what a narrower bid would need to cover:
Zero R&D risk on the critical path. The event system (analytics, U8), token custody model (F5, F9), ZK Merkle allowlist architecture (F7), and pause/resume authority model (F6) are not being designed from scratch — they are direct extensions of code our team has already built and had merged into LEZ (see Evidence at a Glance). This budget covers integration and hardening of proven components, not discovery.
A real ZK allowlist, not an optional bolt-on. F7 is implemented as a first-class RISC Zero circuit reusing a Merkle-membership design already built and tested, priced into M3 as core scope — not deferred, stubbed, or treated as a stretch goal.
Full commitment through mainnet. M6 (testnet 0.3 re-verification) and M7 (mainnet deployment) are dedicated, budgeted milestones — not an implicit "we'll figure it out after the RFP closes." Their timing depends only on LEZ's own testnet/mainnet release cadence, not on our willingness to see the work through.
Minimal integration risk. The three hardest external dependencies this RFP requires — token authorities, admin authority, and freeze authority — are deliveries our own team members authored. There is no handoff, no waiting on a third party's API to stabilize, and no risk of building against documentation that turns out to be wrong.
This is a full-lifecycle bid, design through mainnet, priced against work we have substantially already proven we can deliver.
Relevant Experience
Syafiq Nabil Assirhindi — hands-on experience building privacy-preserving cryptographic systems natively on the Logos Execution Zone. Built a full-stack submission for the LP-0016 Lambda Prize (awarded to a different participant), demonstrating end-to-end capability across the full Logos stack.
LP-0016 — Anonymous Forum with Threshold Moderation (Logos):
Migrated the entire SPEL ecosystem across the breaking API surface introduced by LEZ's multi-sequencer architecture and ML-KEM-768 ViewingPublicKey integration in private PDA derivation:
• Async WalletCore::from_env() migration and replacement of direct sequencer_client field access with helm_owned() / poller_helm() / get_account_public() abstractions
• Added ViewingPublicKey-aware private PDA derivation (compute_private_pda(), new vpk macro attribute for #[spel_program], CLI --vpk flag) — the exact derivation path NullPad's PDA-derived sale accounts and ephemeral private-account flow depend on
• All 39 fixture-program tests updated and passing against LEZ v0.2.4, zero workspace errors
• Directly de-risks NullPad's core on-chain dependency — the LBP program's sale accounts and the SDK's deshield→buy→re-shield flow are built against this exact wallet/PDA API surface
ZK-AppChain:https://github.com/evice-labs/e-zkappchain
A sovereign ZK rollup integrating an intent-centric execution engine with a CLOB matching engine (Velocity-DEX) and MEV protection infrastructure (Rust-MEV-Builder). Architecture: ZK prover (Winterfell AIR), sequencer node, settlement engine (Alloy-rs), and user client — demonstrating full-stack blockchain and DeFi engineering from L1 settlement to ZK proof generation.
Bristin Borah — hands-on experience building core LEZ infrastructure primitives. Winner of LP-0012 and LP-0013, covering the exact event system and token authority model that this RFP depends on. SPEL framework contributor.
LP-0012 — Structured Event System for LEZ Programs (Winner, Merged):
Delivered the complete event system now used by all LEZ programs:
• Guest SDK (emit_event(), EventRecord, Borsh-encoded payloads) in the lez-events crate
• Event persistence on both success and failure paths (via FAILURE_SENTINEL pattern)
• getTransactionReceipt RPC method for event retrieval
• 167 tests passing across all crates; merged into upstream LEZ
• Direct dependency of RFP-016 — the sale analytics view (Usability *8) consumes exactly this event system for buy, weight-update, and sale-lifecycle events
LP-0013 — Token Program Improvements: Authorities (Winner, Merged as lez-programs#213):
Delivered mint authority model for the LEZ Token Program:
• AuthoritySlot — reusable authority primitive in standalone lez-authority crate
• Self/external authority-variant instruction shape (Mint/MintWithAuthority, SetAuthority/SetAuthorityWithAuthority)
• Deep experience with LEZ executor constraints: InconsistentAccountPreState on mid-transaction PDA state changes, duplicate-account-id rejection, authorization scope mismatches
• Direct dependency of RFP-016 — the LBP program custodies collateral and project tokens via the exact PDA-authority pattern PR #213 established, and uses its mint-authority tooling for the protocol-fee transfer to the treasury account
SPEL Framework — #[require_admin] macro contribution spel#212:
Active participation in the extension-architecture direction in builder-hub.
Mladen Milankovic — 19 years of professional software development experience, with recent focus on Logos ecosystem infrastructure and cryptographic protocol engineering.
RFP-001 — Admin Authority Library (Accepted, Final Milestone):
Standardised admin authority library for LEZ programs. Implements authority assignment (admin_initialize), transfer (admin_transfer), and revocation (admin_renounce) as first-class SPEL annotations (#[admin_authority], #[require_admin]). Directly applicable to the LBP sale creator authority model and program-level admin controls. As the author, Mladen ensures zero-friction integration. End-to-end tested against LEZ v0.2.0.
RFP-002 — Freeze Authority Library (Accepted, Final Milestone):
Emergency circuit breaker library for LEZ programs: program-wide freeze, per-account freeze, and a replaceable freeze authority appointed by the admin. Directly applicable to the LBP sale pause/resume mechanism (Functionality requirement F6). End-to-end tested against LEZ v0.2.0.
Framework-side enabling change for the SPEL extension architecture: a metadata-driven discovery mechanism ([package.metadata.spel]) that lets path-dep extension libraries ship #[instruction] fns auto-discovered by the framework and merged into a consuming program's dispatcher + IDL. The framework carries zero hardcoded knowledge of any specific extension — RFP-001's admin-authority is the first consumer, RFP-002's freeze-authority the second, and any future extension plugs in by declaring the same metadata with no further framework changes required. This decouples extension libraries from the framework's release cadence.
Repo: https://github.com/mmlado/nip46-keycard
• NIP-44 v2 encryption implemented from scratch with full spec vector test coverage
• Demonstrates cryptographic protocol engineering and daemon architecture
LP-0010 — Shell dApp Integration Proof of Concept (Logos Ecosystem):
Live demo: https://shelldappprototype.vercel.app/
• Full ERC-4527 / Uniform Resources protocol implementation; 56 unit tests
• Demonstrates frontend development and UI/UX design for the NullPad mini-app (participant and creator views)
(Note: LP-0009 and LP-0010 are contributions to the broader Logos ecosystem. RFP-001, RFP-002, and the SPEL extension scanner represent Mladen's current active development on LEZ-native infrastructure.)
Post-Delivery Plan
Post-delivery, Evice Labs will maintain the repository asynchronously. This includes monitoring the open-source codebase, reviewing community Pull Requests, patching potential bugs, and ensuring ongoing compatibility with future updates to the Logos Basecamp and LEZ environment.
Engineering Standards & Continuity: NullPad enforces strict engineering standards: comprehensive test coverage for all program invariants, thorough Rustdoc documentation for the SDK, and automated CI/CD pipelines for E2E integration tests against the standalone LEZ sequencer. The three-person team structure ensures knowledge is shared across all components from day one — no single point of failure in the on-chain program, client interfaces, or deployment pipeline.
Permissions and Consent
I confirm Logos may contact me using the primary contact information provided above for follow-ups and next steps.
I consent to Logos using information from this proposal publicly such as blogs case studies social posts or analytical reporting. Redactions can be requested at any time.
Program Requirements
We understand this project must be open-sourced under the MIT and Apache 2.0 Licenses unless explicitly approved otherwise.
We are prepared to deliver milestone-based outcomes.
RFP ID
RFP-016
Your Project Name
NullPad
Team or Organization Name
Evice Labs
Primary Contact
Discord: @bristinborah.sol, @syafiqeil, @mmlado
Team Members
Member 1
Member 2
lez-programs#213). SPEL framework contributor (spel#212,#[require_admin]macro).Member 3
spel#233,#Generic Extension Scanner).Team Commitment: NullPad is Evice Labs sole active proposal, our capacity across this 18-week window is allocated to this delivery, not split across parallel RFP submissions.
Project Summary
Token launches are the entry point for new projects into any blockchain ecosystem. On transparent chains, every participant in a token sale is immediately linkable to a wallet address and, by extension, to the buyer's full on-chain history. Early investors can be identified, profiled, or front-run at unlock — a structural privacy failure that no existing launchpad platform (Fjord Foundry, DAO Maker, Polkastarter) addresses.
NullPad builds a Liquidity Bootstrapping Pool (LBP) launchpad natively on LEZ, combining Balancer-style weight-shifting price discovery with the optional deshield→buy→re-shield privacy pattern. The LBP mechanism starts price above estimated fair value and lets it decline over time unless buying pressure counteracts it — naturally deterring bot sniping and removing the need for teams to pre-set a valuation. When buyers interact from a private account, their identity, total position, and token destination are completely unlinked from the on-chain sale, with each purchase routed through a fresh ephemeral account. An optional ZK allowlist gate enables projects to restrict participation without exposing the eligibility set on-chain, preserving the zone-wide anonymity set regardless of list size.
Our team brings direct, proven experience with the exact LEZ primitives this RFP requires: LP-0016 delivered Merkle-tree ZK membership proofs and privacy-preserving protocol design on RISC Zero; LP-0012 delivered the structured event system that the RFP depends on for analytics; and LP-0013 delivered the token authority model required for mint and custody operations.
Evidence at a Glance
Every credential below is public and independently verifiable, click through before reading the technical approach.
emit_event()/EventRecordfor buy, weight-update, and lifecycle eventslez-programs#213)WalletCoreAPI are exactly what the LBP program's PDA-derived sale accounts and ephemeral private-account flow require on current LEZTechnical Approach
The LBP program will be built in Rust using the SPEL framework, compiled to RISC-V and executed inside the RISC Zero ZKVM on the Logos Execution Zone.
LBP Pricing Engine (Balancer Weighted Pool Math): Implementing the weight-shifting AMM derived from the Balancer weighted pool formula. Pool weights are linearly interpolated between start and end values over the sale duration using the on-chain block timestamp. The buy formula computes token output as:
tokens_out = reserve_token × (1 - (reserve_collateral / (reserve_collateral + C_in)) ^ (w_collateral / w_token)). All arithmetic uses fixed-point integer operations (no floating point in ZKVM) — the power functionx^(a/b)is implemented via a Rust fixed-point math library using natural logarithm and exponentiation approximations with sufficient precision for weight ratios between 1/99 and 99/1. Weight computation is lazy: the program evaluates weights from the block timestamp at each transaction, ensuring correct pricing without depending on external poke calls.Sale Lifecycle & Pool State: Each sale is a PDA-derived account storing: token pair, start/end weights, start/end timestamps, reserves, cumulative collateral raised, per-block token ceiling (optional), allowlist root (optional), pause flag, creator authority, and protocol fee configuration. The creator deposits project tokens at sale creation. After the end timestamp, the creator can withdraw collateral (net of protocol fee, deducted atomically) and unsold tokens. Pausing halts buys but does not affect weight progression — the weight schedule continues during a pause.
ZK Allowlist Gate: When enabled, the creator commits a Merkle root of the eligible participant set at sale creation. Buyers prove inclusion via a RISC Zero ZK circuit that verifies Merkle path membership without revealing the full set on-chain. This directly reuses the ZK set membership architecture from LP-0016 (Anonymous Forum), where the same pattern (Merkle tree commitment + ZK inclusion proof) was used for anonymous membership verification. On LEZ, the effective anonymity set is all private accounts in the zone, not the allowlist size — the allowlist gate does not degrade privacy. This fully satisfies F7: Merkle root commitment, RISC Zero ZK inclusion proof, and zone-wide anonymity set preservation are delivered as core scope in M3 — not a partial, deferred, or bolt-on implementation.
Atomic Privacy Pattern (SDK Level): The SDK orchestrates the deshield→buy→re-shield flow as a single, indivisible operation, following the interaction model defined in RFP-008. The atomic deshield transfers both collateral and gas to a freshly generated ephemeral account; the buy executes against the LBP pool; the purchased tokens are re-shielded to the buyer's validated private account. If any step fails, the entire transaction reverts. The SDK enforces that the re-shield target is a private (shielded) account and hard-blocks any transaction where the shielded balance cannot cover both collateral and gas.
Event Integration & Analytics: Sale events (buy executed, weights updated, sale created, sale closed) are emitted using the structured event system delivered in LP-0012 (
emit_event()with Borsh-encodedEventRecord). The analytics backend consumes events via thegetTransactionReceiptRPC to provide aggregate sale metrics (total raised, price over time, buy count) without exposing individual participant identities.Token Program Integration: The LBP program interacts with the LEZ Token Program for all token custody operations (transfer collateral in, transfer project tokens out, deposit/withdraw). Token definitions with mint authority (LP-0013) enable the protocol fee transfer to the treasury account. ATA derivation per (owner, mint) is used for all user-facing token accounts; the program also accepts any valid SPL token account owned by the caller.
Logos Basecamp Mini-App: The mini-app follows the current Logos module architecture (tutorial-v3):
type: core,interface: universal) built withmkLogosModule, wrapping the NullPad Rust SDK via C-ABI FFI. All sale lifecycle methods are exposed as public methods on the impl class, auto-generated bylogos-cpp-generator.type: ui_qmlwith C++ backend) built withmkLogosQmlModule. Two views: Participant view (browse active sales with live price curve, weight visualization, time remaining; execute buy with pre-confirmation summary) and Creator view (create sale with all parameters including allowlist, monitor active sale, pause/resume, close, withdraw). Privacy disclosure rendered before each buy from a private account..lgxpackages, installable vialgpm.RFP-016 Hard Requirements Coverage
Functionality
Usability
Reliability
Performance
Supportability
Privacy
Soft Requirements
Out of Scope — Acknowledged
Milestones, Payout and Timeline
Total Requested Budget (USD)
$100,000
Why $100,000
Three factors keep this budget efficient relative to scope, and two extend it beyond what a narrower bid would need to cover:
Zero R&D risk on the critical path. The event system (analytics, U8), token custody model (F5, F9), ZK Merkle allowlist architecture (F7), and pause/resume authority model (F6) are not being designed from scratch — they are direct extensions of code our team has already built and had merged into LEZ (see Evidence at a Glance). This budget covers integration and hardening of proven components, not discovery.
A real ZK allowlist, not an optional bolt-on. F7 is implemented as a first-class RISC Zero circuit reusing a Merkle-membership design already built and tested, priced into M3 as core scope — not deferred, stubbed, or treated as a stretch goal.
Full commitment through mainnet. M6 (testnet 0.3 re-verification) and M7 (mainnet deployment) are dedicated, budgeted milestones — not an implicit "we'll figure it out after the RFP closes." Their timing depends only on LEZ's own testnet/mainnet release cadence, not on our willingness to see the work through.
Minimal integration risk. The three hardest external dependencies this RFP requires — token authorities, admin authority, and freeze authority — are deliveries our own team members authored. There is no handoff, no waiting on a third party's API to stabilize, and no risk of building against documentation that turns out to be wrong.
This is a full-lifecycle bid, design through mainnet, priced against work we have substantially already proven we can deliver.
Relevant Experience
Syafiq Nabil Assirhindi — hands-on experience building privacy-preserving cryptographic systems natively on the Logos Execution Zone. Built a full-stack submission for the LP-0016 Lambda Prize (awarded to a different participant), demonstrating end-to-end capability across the full Logos stack.
LP-0016 — Anonymous Forum with Threshold Moderation (Logos):
• SPEL framework guest program with 4 instructions and per-instance PDA accounts
• Forum-agnostic Rust SDK compiled as both WASM and C-ABI shared library (cbindgen) — directly applicable to the headless core module architecture required by RFP-016 Basecamp mini-app
• Native Logos Basecamp integration: core module + QML UI module
• Full deshield→interact→re-shield privacy pattern — directly reusable for NullPad's deshield→buy→re-shield SDK path
SPEL → LEZ v0.2.4 Migration (spel#256):
ViewingPublicKeyintegration in private PDA derivation:• Async
WalletCore::from_env()migration and replacement of directsequencer_clientfield access withhelm_owned()/poller_helm()/get_account_public()abstractions• Added
ViewingPublicKey-aware private PDA derivation (compute_private_pda(), newvpkmacro attribute for#[spel_program], CLI--vpkflag) — the exact derivation path NullPad's PDA-derived sale accounts and ephemeral private-account flow depend on• All 39 fixture-program tests updated and passing against LEZ v0.2.4, zero workspace errors
• Directly de-risks NullPad's core on-chain dependency — the LBP program's sale accounts and the SDK's deshield→buy→re-shield flow are built against this exact wallet/PDA API surface
ZK-AppChain: https://github.com/evice-labs/e-zkappchain
A sovereign ZK rollup integrating an intent-centric execution engine with a CLOB matching engine (Velocity-DEX) and MEV protection infrastructure (Rust-MEV-Builder). Architecture: ZK prover (Winterfell AIR), sequencer node, settlement engine (Alloy-rs), and user client — demonstrating full-stack blockchain and DeFi engineering from L1 settlement to ZK proof generation.
Bristin Borah — hands-on experience building core LEZ infrastructure primitives. Winner of LP-0012 and LP-0013, covering the exact event system and token authority model that this RFP depends on. SPEL framework contributor.
LP-0012 — Structured Event System for LEZ Programs (Winner, Merged):
• Guest SDK (
emit_event(),EventRecord, Borsh-encoded payloads) in thelez-eventscrate• Event persistence on both success and failure paths (via
FAILURE_SENTINELpattern)•
getTransactionReceiptRPC method for event retrieval• 167 tests passing across all crates; merged into upstream LEZ
• Direct dependency of RFP-016 — the sale analytics view (Usability *8) consumes exactly this event system for buy, weight-update, and sale-lifecycle events
LP-0013 — Token Program Improvements: Authorities (Winner, Merged as
lez-programs#213):•
AuthoritySlot— reusable authority primitive in standalonelez-authoritycrate• Self/external authority-variant instruction shape (
Mint/MintWithAuthority,SetAuthority/SetAuthorityWithAuthority)• Deep experience with LEZ executor constraints:
InconsistentAccountPreStateon mid-transaction PDA state changes, duplicate-account-id rejection, authorization scope mismatches• Direct dependency of RFP-016 — the LBP program custodies collateral and project tokens via the exact PDA-authority pattern PR #213 established, and uses its mint-authority tooling for the protocol-fee transfer to the treasury account
SPEL Framework —
#[require_admin]macro contribution spel#212:Active participation in the extension-architecture direction in builder-hub.
Mladen Milankovic — 19 years of professional software development experience, with recent focus on Logos ecosystem infrastructure and cryptographic protocol engineering.
RFP-001 — Admin Authority Library (Accepted, Final Milestone):
admin_initialize), transfer (admin_transfer), and revocation (admin_renounce) as first-class SPEL annotations (#[admin_authority],#[require_admin]). Directly applicable to the LBP sale creator authority model and program-level admin controls. As the author, Mladen ensures zero-friction integration. End-to-end tested against LEZ v0.2.0.RFP-002 — Freeze Authority Library (Accepted, Final Milestone):
SPEL Framework — Generic Extension Scanner (in review):
[package.metadata.spel]) that lets path-dep extension libraries ship#[instruction]fns auto-discovered by the framework and merged into a consuming program's dispatcher + IDL. The framework carries zero hardcoded knowledge of any specific extension — RFP-001's admin-authority is the first consumer, RFP-002's freeze-authority the second, and any future extension plugs in by declaring the same metadata with no further framework changes required. This decouples extension libraries from the framework's release cadence.LP-0009 — Keycard NIP-46 Nostr Signer Proxy (Logos Ecosystem):
• NIP-44 v2 encryption implemented from scratch with full spec vector test coverage
• Demonstrates cryptographic protocol engineering and daemon architecture
LP-0010 — Shell dApp Integration Proof of Concept (Logos Ecosystem):
• Full ERC-4527 / Uniform Resources protocol implementation; 56 unit tests
• Demonstrates frontend development and UI/UX design for the NullPad mini-app (participant and creator views)
(Note: LP-0009 and LP-0010 are contributions to the broader Logos ecosystem. RFP-001, RFP-002, and the SPEL extension scanner represent Mladen's current active development on LEZ-native infrastructure.)
Post-Delivery Plan
Post-delivery, Evice Labs will maintain the repository asynchronously. This includes monitoring the open-source codebase, reviewing community Pull Requests, patching potential bugs, and ensuring ongoing compatibility with future updates to the Logos Basecamp and LEZ environment.
Engineering Standards & Continuity: NullPad enforces strict engineering standards: comprehensive test coverage for all program invariants, thorough Rustdoc documentation for the SDK, and automated CI/CD pipelines for E2E integration tests against the standalone LEZ sequencer. The three-person team structure ensures knowledge is shared across all components from day one — no single point of failure in the on-chain program, client interfaces, or deployment pipeline.
Permissions and Consent
Program Requirements