NovaSeal: A Bitcoin-Authorised Cell Framework for CKB

NovaSeal is a Bitcoin-authorised CKB object framework written in CellScript. It lets Bitcoin-side approval directly control CKB Cell transitions.

It is not designed as an asset issuance protocol, trustless bridge, or RGB++ replacement. Instead, it starts from a narrower premise: Bitcoin already provides strong, widely understood authority through keys and UTXOs, while CKB’s Cell model is well suited for explicit state, deterministic transitions, and auditable terminal outcomes.

0. Glossary

Some terms below are NovaSeal-specific. I am using them here in this narrow sense:

Term Plain meaning in this post
Bitcoin authority A BTC key, multisig, transaction commitment, or later UTXO proof that can approve a CKB transition
Typed intent The exact structured and formatted message that a signer approves, saying exactly what transition is authorised
ProofReceipt The receipt written into the contract source as an explicit receipt output. cellc produces the checks that make the transaction include that receipt in the right output slot
Canonical schema The shared NovaSeal envelope, encoding rule and schema hash that every profile must commit to
Profile An upper level package layer that gives the canonical NovaSeal rules a concrete meaning, such as an agreement
Certification gate The deterministic compiler check that decides whether a package may claim to be a NovaSeal profile
Certification module The Rust implementation inside cellc that evaluates NovaSeal manifest, schema, source and evidence files for a profile
Terminal path One of the agreed ending branches of a contract, such as repay or claim
Proof plan A CellScript package’s list of assumptions, checks and evidence obligations, emitted by cellc
Audit bundle The generated review file that collects the package facts and evidence, emitted by cellc

1. Problem Statement

Many Bitcoin-adjacent systems begin from issuance, bridging, or layer-two execution. NovaSeal asks a more concrete question: how can Bitcoin-side authority, such as a key, multisig, transaction commitment, or later a proven UTXO spend authorise or condition a native CKB state transition?

CKB’s Cell model already provides useful primitives for this. A Cell can be consumed once, replaced, split into terminal outputs, or enforced through separate lock and type logic. This gives a clean vocabulary for financial agreements, receipts, policy hashes, expiry rules, and composable assets.

Rather than wrapping oracle-heavy DeFi logic around Bitcoin, NovaSeal focuses on building Cell-native objects with explicit authority, terminal paths, and audit records. Contracts settled by pre-agreed terms fit CKB’s object model more naturally than account-based lending pools.

2. Core Flow

The minimal NovaSeal flow is straightforward. A CKB object always exists as a Cell. A Bitcoin authority signs, or later seals, a typed intent. Then CKB verifies that the requested transition is allowed. The old Cell is consumed. A new Cell, a terminal output or both are created. A ProofReceipt records the outcome for builders, wallets, indexers and auditors.

In v0, Bitcoin authority means key or multisig authorisation. It lets a BTC key holder move or condition CKB state. Though stronger Bitcoin sealing profiles may come later, currently they are not smuggled into the v0 claim. :teacup_without_handle:

3. NovaSeal Canonical

NovaSeal is treated as a protocol family, not as a monolithic runtime core contract. The shared anchor is NovaSealCanonicalV0 at the time, it is a canonical schema, encoding rule and certification target. It defines the common envelope that every NovaSeal profile must commit to: authority, action, subject, nonce, expiry, policy hash, state commitment, profile body hash and payout commitment.

Canonical has no opinion on borrowers, lenders, interest rates, liquidation, collateral ratios, repayment schedules, or product names. Itstays focused on the common signed envelope and evidence obligations, while profiles describe the object being moved.

As package boundaries matter here, NovaSeal should be inspectable as a package, not simply as a compiled contract. A reviewer should be able to see the schemas, fixtures, receipts, proof plan and assumptions that make the object meaningful.

The current v0 skeleton declares this boundary in its manifest as canonical_schema = "NovaSealCanonicalV0" and pins the schema hash of schemas/nova_seal_canonical_envelope_v0.schema. That package is a canonical example and fixture baseline. It is not a runtime boss contract that Agreement must call.

This is an intentional naming choice. Canonical is the shared rule anchor, but not a monolithic Core contract. Because if the base package became a runtime supervisor that every profile had to call, NovaSeal would inherit unnecessary chain machinery and the first profile would start dictating the shape of later ones.

4. Seal and Authority Modes

NovaSeal separates authority from sealing. A Bitcoin signature proves that a key or multisig authorised an intent. It does not prove that a particular Bitcoin UTXO was spent. A consumed CKB Cell already gives CKB native linearity, because the old Cell cannot be consumed twice. A spent Bitcoin UTXO can later become a Bitcoin side single use seal, but that is a stronger claim and needs a different verifier and evidence package.

Mode Meaning What it proves What it does not prove Stage
CKB Linear The old CKB Cell is consumed once CKB native single use property Bitcoin finality v0
BTC Key Signature BTC key or multisig signs a typed intent Bitcoin side authority BTC UTXO was spent v0
BTC Transaction Commitment BTC transaction commits to a transition Public Bitcoin commitment Deep finality by itself later
BTC UTXO Seal A BTC UTXO spend is proven Bitcoin single use seal CKB finality by itself later
Dual Seal BTC UTXO closure and CKB transition both mature Stronger cross chain finality Absolute finality under deep reorg future
Future Fiber Test Path Object or balance enters a Fiber-compatible path Candidate channel-local settlement path Arbitrary state channel execution future profile

This separation prevents scope creep. v0 remains useful without claiming Bitcoin finality. Later profiles can add stronger Bitcoin commitments without forcing every early NovaSeal object to carry that cost.

5. Canonical vs Profiles

Business meaning lives in profiles. NovaSealCanonicalV0 defines the shared envelope and evidence obligations. A profile defines what the object means and enforces its own state machine on-chain.

Layer Name Role
Canonical NovaSealCanonicalV0 Schema hash, typed envelope, replay boundary and receipt commitment
Seal profiles Key signature, transaction commitment, UTXO seal Different strengths of Bitcoin linkage
Object profiles Fungible, Receipt, Agreement Different kinds of CKB objects
Application packages MVB, RWA, stable receipt, position contract Concrete use cases built on profiles

This prevents scope creep into specific verticals such as lending, RWA or Bitcoin assets, keeping the framework auditable and composable.

Profiles do not call a separate NovaSeal Core runtime action. The constraint is schema and package level: a profile must declare conforms_to = "NovaSealCanonicalV0", pin canonical_schema_hash, commit its signed intent to NovaSealCanonicalEnvelopeV0, and pass the deterministic compiler gate cellc certify --plugin novaseal-profile-v0. The compiler owns the certification entry and report verification; NovaSeal-specific policy is implemented by the built-in Rust certification module behind that entry. The gate checks the manifest, schema hash, required source surface, wallet signing vectors, invariant matrix, runtime verifier pinning and live/devnet evidence. If that check fails, the package may be NovaSeal-inspired, but it is not a NovaSeal profile. A gentleman may wear a top hat; the gate still checks the ticket.

This echoes RGB’s strict-encoding discipline: the protocol user/develelper should not trust a compiler label when a schema hash, canonical preimage and recomputable digest can be checked. NovaSeal keeps CKB runtime enforcement, but borrows the habit of making type commitments explicit.

NovaSeal does not copy RGB’s schema implementation. The current gate uses a smaller CellScript-native rule: hash the normalised canonical schema lines, require exact canonical field order, bind that hash in both manifests, and require the Agreement signed intent to carry a runtime-checked canonical_envelope_hash. This is deliberately less general than RGB Strict Types, but it removes the weak “manifest string only” attack. The compiler gate adds no chain-facing runtime machinery; it is a deterministic certification surface for public profile claims.

Compiler Certification Module

--plugin novaseal-profile-v0 is the public selector for the certification policy. It does not mean that cellc shells out to a Python plugin or loads arbitrary external code. The current implementation is compiled into the CellScript CLI as src/cli/novaseal_certification.rs.

The certification module writes and verifies three report layers:

Report Purpose
target/novaseal-production-gates.json NovaSeal local production-prep gate, profile certification result, and external-attestation blockers
target/novaseal-devnet-stateful-acceptance.json Aggregated core plus Agreement live/devnet stateful acceptance evidence
target/cellscript-certification/novaseal-profile-v0.json Public cellc certify summary, plugin implementation hash, report hash, checks and status

This gives profile certification production-grade local meaning without making a production-mainnet claim by accident. A package can pass public ecosystem profile certification while still failing --require-production until public/shared CellDep pinning and external verifier TCB attestation are supplied. It is a rather British distinction: admitted to the club, but still waiting for the paperwork before touching the silver.

The v0 skeleton is also a deliberate stress test of CellScript as a package-first contract system. It exercises typed schemas, signed intents, generated receipts, proof plans, audit bundles, devnet acceptance evidence and deterministic certification in one coherent workflow. The result is not a production-mainnet claim, but it is stronger than a toy demo: it demonstrates quasi-production local readiness and a proof-plan discipline that external builders can inspect, reproduce and challenge.

Profile Freedom

Canonical conformance is a narrow obligation, not a full product template. A profile must bind itself to the canonical envelope and pass the certification gate, but it is free to define its own:

Free profile surface Required NovaSeal boundary
State machine and terminal paths Signed intent commits to NovaSealCanonicalEnvelopeV0
Profile body schema Body hash is included in the canonical envelope
Payout model Payout commitment hash is included in the canonical envelope
Runtime checks Manifest, source and live/devnet evidence pass certification
Wallet display Signing vectors expose the canonical envelope hash and profile fields

This keeps Agreement from becoming the hidden default for all future profiles. A future fungible, receipt, RWA, Fiber-facing or BTC-commitment profile can carry different business meaning while still sharing the NovaSeal certification boundary.

For NovaSeal v0, authority identifiers are not payout script identifiers. The
legacy-named btc_authority_hash is the BIP340 x-only public key in the
current key-signature profile, while payout routing remains profile-defined and
is committed through payout_commitment_hash plus typed payout outputs.

Compiler-Attack Boundary

The certification gate cannot make cellc magically incorruptible; no serious architecture document should make that sort of claim before lunch. It reduces the specific profile-claim attack surface by making the certification output reproducible from checked-in inputs:

  • the canonical schema hash is recomputed from normalised schema lines,
  • the expected canonical field order is checked,
  • the profile manifest must pin the same schema hash and certification command,
  • required source patterns and fixture sets are checked,
  • wallet vectors, invariant matrix, live/devnet reports and verifier pins are checked,
  • the invariant matrix records authority binding and checked u64 arithmetic as runtime obligations,
  • the summary report records the Rust implementation path and implementation hash,
  • the gate avoids external Python adapter execution for the production-prep decision.

The remaining trust boundary is explicit: users still trust the cellc binary, the reviewed Rust certification module, and the evidence files being certified. That is a smaller and more reviewable surface than a manifest string plus an external script, but it is not a claim that compilers have become saints.

6. Agreement Profile: Terminal Paths

Agreement Profile is the first concrete NovaSeal profile. It models a bilateral
CKB/CKB agreement with fixed terms, fixed terminal paths and materialised
receipts. It is deliberately not a lending pool, oracle market, CDP, bridge, or
BTC-collateral protocol.

The profile keeps the part of the MVB discussion that fits CKB well: two parties
commit to terms, CKB enforces one live Cell lifecycle, and the terminal output is
checked directly instead of inferred from off-chain accounting.

Path Authority Time rule Required output evidence
Originate borrower and lender now <= expiry active agreement, principal payout, receipt
Repay borrower now <= expiry closed agreement, lender repayment, borrower collateral return, receipt
Claim lender now > expiry closed agreement, lender default claim, receipt

Certification evidence is machine checked through
cellc certify --plugin novaseal-profile-v0, which verifies the Rust-generated
certification report containing
agreement_profile_public_ecosystem_certification_v0. The gate requires
canonical conformance, exact profile schema and fixture sets, wallet signing
vectors for originate/repay/claim, invariant matrix coverage, fresh live-devnet
provenance, negative dry-run rejects, runtime verifier pinning and local BIP340
TCB review.

Out of scope for Agreement v0:

Excluded claim Reason
BTC collateral or Bitcoin finality Requires a BTC transaction or UTXO-seal profile
Dynamic liquidation or margin calls Requires oracle and market machinery
iCKB/xUDT/Fiber execution Requires separate balance-bearing profile
Production mainnet claim by local files alone Requires public CellDep pinning and external verifier TCB attestation

7. Relationship to RGB++

RGB++ and NovaSeal sit in the same broad design space because both care about Bitcoin authority and CKB execution. The difference is where the abstraction begins.

Dimension RGB++ NovaSeal
Starting point Bitcoin UTXO bound into CKB execution Native CKB objects authorised by Bitcoin
First principle BTC UTXO ownership and commitment CKB object transitions with pluggable Bitcoin authority
Engineering style Protocol, service and SDK oriented Package first, receipt first and audit first
Bitcoin linkage UTXO binding and SPV oriented Staged, with key authorisation first and stronger seals later
CKB role Execution layer for bound assets Native object and terminal path executor
Fiber relation Plausible through xUDT style assets Considered from profile design

NovaSeal is by no means presented as a replacement for RGB++. It is a clean room exploration of the same broader design space from a more CKB native, package first angle. This keeps the scope distinct, allowing NovaSeal to build alongside existing protocols without overlapping.

8. Fiber

NovaSeal considers Fiber in its design direction, but it does not integrate with Fiber yet. Because Fiber is CKB-native, it is the channel system to test once a future NovaSeal object has a balance-bearing or xUDT-compatible profile. A future profile could move payment legs, position receipts or liquidity paths towards shapes that Fiber can evaluate for admission, provided the object model is kept simple enough for channel use.

NovaSeal will include designs of balance-bearing profiles so later Fiber admission testing has concrete layouts to evaluate. Arbitrary NovaSeal state will not be described as channel-ready.

9. ProofReceipt and Auditability

ProofReceipt records which object moved, which state changed, what intent authorised it, which policy applied, which terminal path was used and what the final outcome was.

Receipts are not magic logs. A receipt is runtime enforced only if the contract checks it or materialises it as an output Cell. Otherwise it is audit metadata. Metadata can still be valuable, especially for wallets, indexers and review tools, but the distinction should stay visible.

Receipts must not be treated as magic logs. They are valuable because they are explicit, typed and checkable.

A typed receipt exposes more than an end state: what happened, who authorised it, which policy applied, and which assumptions remain outside the contract.

10. Security Boundaries

NovaSeal v0 claims only what the current evidence supports: BTC key or multisig authority can authorise CKB Cell transitions, CKB can enforce deterministic state movement, receipts can record outcomes, and profiles can express specific financial objects. It does not claim Bitcoin finality, BTC collateral seizure, trustless bridge semantics, oracle-free lending, or production mainnet readiness — those are separate claims, each requiring its own evidence.

It should not claim Bitcoin finality, BTC collateral seizure, trustless bridge semantics, oracle free lending solved, or production mainnet readiness. Those are separate claims, and each needs evidence.

Risk Boundary
BTC key compromise User custody and multisig policy
Wrong intent signing Canonical typed intent and clear wallet display are needed
Replay Nonce, expiry and old Cell binding
Fake verifier Verifier namespace and artefact pinning are required
Fake profile claim conforms_to = "NovaSealCanonicalV0", canonical_schema_hash, signed canonical envelope commitment and the compiler certification gate are required
BTC reorg Not relevant until BTC commitment or SPV profiles
CKB reorg Wait for CKB maturity
Receipt mismatch Receipt must be checked or clearly audit only
Fiber overclaim Balance-bearing profiles should come first

Defining these boundaries early prevents over-claiming and keeps the v0 implementation strictly verifiable.

12. Roadmap

Stage Focus Progress Status Plain meaning
v0 Key-signed Cell Movement [##########] 100% complete in local/devnet evidence BTC key or multisig authorises a CKB Cell transition
v0.1 Receipt Output [##########] 100% complete in local/devnet evidence ProofReceipt becomes a checked output Cell
v0.2 Agreement Profile [##########] 100% complete in local/devnet evidence Pre agreed terminal financial contracts
v0.3 Fungible Profile for Fiber Testing [----------] 0% separate planning needed Balance-bearing objects prepared for later Fiber admission testing
v0.4 BTC Commitment Profile [----------] 0% separate planning needed A Bitcoin transaction commits to a NovaSeal transition
v1 BTC UTXO Seal and Dual Seal Profile [----------] 0% separate planning needed Proved Bitcoin UTXO closure and stronger cross chain finality

The pace was achievable because CellScript has recently matured into a more stable and reliable DSL. The first three stages are marked complete in the current NovaSeal package, based on the local/devnet evidence available today. I’m actually kind of glad when the language stops getting in the way, the higher-level protocol work based on it actually moves.

1 Like

The Agreement Profile v0 contracts inspired by @matt_ckb’s Minimum Viable Borrowing are available here:

Devnet stateful acceptance testing has passed, and builders interested in the current design are welcome to explore and experiment with it.

At present, this profile is primarily being used as a stress test for CellScript’s robustness and production readiness. If anyone would like to coordinate on this experiment or explore future directions together, I would be very happy to collaborate.

1 Like

Amazing output — really appreciate everything you’re putting in for the community!

3 Likes

Good idea! CellScript is very friendly when developing ckb on-chain script.

Thanks mate, that is exactly the design goal.

Next month I’ll also start adding some complete business templates and a set of vibe-coding skills for NovaSeal / CellScript. Hopefully that makes the next stage much easier for builders/users to try in practice.

1 Like