Spark Program | Spark Verify - Reproducible Acceptance Checks for CKB Projects

Repository: Akane-CN/spark-verify

Requested funding: $1,000, paid in CKB

Timeline: 6 weeks

1. Project overview

Spark Verify is an open source command-line tool and a small verify.toml format for CKB projects.

A project author describes a local devnet flow and the results that should be observed, such as whether a transaction commits or is rejected, which Cells exist after the run, whether a balance changed as expected, and how many CKB-VM cycles a script used. A reviewer runs one command and receives a pass/fail result with a structured evidence report.

The goal is to make the “How to Verify” section of a CKB project easier to run and repeat. Spark Verify will use the existing CKB development stack rather than replace it.

2. Team profile

Applicant and maintainer: Akane

3. Project background

CKB projects already have good tools for individual layers:

  • OffCKB provides a local development chain, development accounts, and script deployment.
  • CCC builds and signs CKB transactions.
  • ckb-debugger reports script errors and cycle usage.
  • ckb-testtool supports script-level tests.

The final acceptance check is still different for every project. Reviewers often have to follow repository-specific instructions, run several commands in the correct order, inspect RPC responses, and decide whether the observed result matches the project’s claims. These instructions become harder to repeat when tool versions or setup details change.

Spark Verify addresses this acceptance layer. It gives project authors a small CKB-specific vocabulary for declaring observable results and gives reviewers a consistent way to run those checks.

4. Solution

A participating project adds a verify.toml file and, where necessary, a small script that builds a signed CKB transaction.

Spark Verify will:

  1. validate the manifest;
  2. start a fresh local OffCKB devnet with pinned tool versions;
  3. run the project’s declared steps;
  4. submit transaction artifacts and record committed or rejected results;
  5. check Cells, balances, script errors, and cycle limits; and
  6. produce a JSON report and a readable terminal summary.

The first version will support local development chains only. It will not use testnet or mainnet private keys. Repository commands remain trusted project code, so the documentation will tell reviewers to run the tool only in an isolated environment without production secrets.

5. Technical approach

The CLI will be written in TypeScript and run with Bun. The repository will pin the Bun version and commit its Bun lockfile. The finished CLI will be published as an installable command-line package.

The implementation will include:

  • strict TOML parsing and runtime schema validation;
  • exact Bun, CKB, OffCKB, and ckb-debugger version checks;
  • OffCKB startup, readiness checks, development accounts, script resolution, and cleanup;
  • runner-owned submission of signed CCC-compatible transactions;
  • assertions for transaction status, script error groups, cycle limits, live Cells, capacity, Cell data, CKB balances, and UDT-compatible balances;
  • JSON reports containing the observed results and relevant environment information; and
  • a GitHub Action example for repositories that want to run the same checks in CI.

The report will distinguish the observed outcome from the environment used to produce it. This makes version or repository changes visible without claiming that arbitrary project code is formally deterministic.

6. Execution plan

Weeks 1-2: manifest and execution core

  • finalize the v0.1 manifest fields and schema;
  • implement manifest validation;
  • start and stop a pinned OffCKB environment;
  • execute project commands and submit signed transactions; and
  • cover both committed and script-rejected transaction examples.

Weeks 3-4: assertions and evidence reports

  • implement transaction, script-error, cycle, Cell, and balance checks;
  • produce JSON and terminal reports;
  • record repository, toolchain, genesis, and deployed-script information; and
  • add valid, invalid, passing, and failing test fixtures.

Week 5: CI and project example

  • publish a GitHub Action example;
  • adapt one CKB project to verify.toml; and
  • test clean-checkout verification on Ubuntu and macOS.

Week 6: release and documentation

  • publish the CLI package and tagged v0.1 specification;
  • complete the author guide and security notes;
  • record a short end-to-end demo; and
  • publish the Spark completion and budget report.

7. Required funding and breakdown

Total requested: $1,000, paid in CKB.

  • Manifest, schema, and initial execution work: $200
  • OffCKB execution adapter and transaction protocol: $300
  • Assertion engine and failure reporting: $250
  • Evidence report and GitHub Action: $150
  • Project example, release documentation, and demo: $100

No funding is requested for hosting or a web interface.

8. Deliverables and verification

Deliverables:

  1. A versioned verify.toml v0.1 specification and machine-readable schema.
  2. A published Bun-based spark-verify CLI package.
  3. Conformance fixtures covering valid, invalid, passing, failing, committed, and rejected cases.
  4. JSON evidence reports and readable terminal output.
  5. A GitHub Action example.
  6. A toy CKB example and one adapted CKB project.
  7. Documentation, a demo, and a completion report.

A reviewer will be able to verify the release from a clean checkout:

git clone https://github.com/Akane-CN/spark-verify.git
cd spark-verify
bun install --frozen-lockfile
bun test
bun run build
bun run verify:release

The release check will demonstrate:

  • a successful transaction and matching Cell or balance result;
  • an intentionally failing claim with an expected-versus-observed diff;
  • a script-rejected transaction with its error evidence;
  • repeated runs with comparable reports; and
  • a visible failure or warning when the declared tool versions do not match.
1 Like

Hi @Akane,

Thank you for submitting the proposal. The committee has moved this application to Pending status and would like to request clarification on a few points before moving forward.

Please specify which existing CKB project you intend to adapt as the example case in Week 5. Additionally, please clarify the exact format and presentation of the evidence report, specifically whether it will be a structured config file with line-by-line field explanations, a visual/dashboard presentation, or other content.

As an optional suggestion, you may also consider adopting a more general tool name such as ckb-verify rather than restricting it to Spark, which could encourage broader ecosystem adoption.

Please share your updates on these items so we can resume the review process.

Best regards,

Spark Program Committee

cc @Hanssen @yixiu.ckbfans.bit @xingtianchunyan

1 Like

The current proposal aims to provide a declarative verification tool for CKB transactions, which has considerable potential in integration testing and transaction analysis scenarios.

I would suggest that we can consider how to make the tool’s usage clearer to users. For example, perhaps we could provide a line-by-line analysis of the generic example verify.toml file? Visual presentation is also possible, and may even yield better results.

Additionally, given the similarities between the approach of this declarative tool and CKB’s on-chain verification method, I would encourage you to consider whether this design could be extended to on-chain contracts in the future, thereby simplifying the contract development process / reducing the difficulty of auditing.

1 Like

BTW @terrytai I suggest that maybe we should consider adding Japanese translation support on the Nervous Talk, considering that we have a Japanese developer here.

Thanks, @Hanssen. I appreciate you thinking about accessibility for developers in Japan.
Just to clarify, I’m a Chinese developer who has settled in Japan. Japanese translation support on Nervos Talk would still be valuable to the broader developer community here, so I’m glad you raised the idea.

4 Likes

感谢建议,目前已经支持: [ANN] 翻译插件更新:任意语言按需翻译,并修复译回答问题而非翻译的问题

5 Likes

你好 @Akane ,

由于这个提案停止互动已经超过一个月,因此委员会决定将它设定为"已关闭"状态。

此致,
xingtian
谨代表 Spark Program 委员会

Hi @xingtianchunyan, sorry I didn’t update the thread sooner; I’ve been actively polishing the proposal and implementing the committee’s feedback. The repository has continued to move forward, including the recently merged PR #9, so I’d appreciate keeping the proposal open.

3 Likes

I also prepared a working CKB-UGMP showcase, rather than only revising the proposal. Its latest GitHub Actions run passed all three jobs, including the fresh-OffCKB CKB-UGMP flow, giving the committee concrete runnable evidence to review.

3 Likes

Hi @Akane ,非常高兴看到你的回复!如果你愿意继续,委员会当然同意继续开放本帖!

2 Likes

Hi @zz_tovarishch,

Thanks for the thoughtful questions, and sorry this reply took a while. I wanted to come back with something you could actually inspect and run, rather than another plan.

For the Week 5 example, I chose HNO3Miracle/CKB-UGMP at revision 543def6e717b2d67f619a76c3d9283e55b211b83, focusing on its CCC-based Spore mint path. I built a bounded adaptation on a fresh local OffCKB devnet: ckb-verify submits the signed transaction, then records the committed result and resulting Spore Cell. It is public in PR #7 at commit a756291, with all three CI jobs passing.

I want to be careful about what this proves. It does not cover the browser UI, wallet connection, Pinata, hosted RPC, or public testnet, and it does not imply validation of the whole DApp or endorsement from its maintainer. It is a practical feasibility test.

The evidence format is now straightforward:

  • verify.toml describes the setup, transaction-producing steps, and expected outcomes.
  • report.json records the expected and observed results, rejection details, provenance, and outcome/environment digests.
  • Terminal and CI output give reviewers a short human-readable summary.

I also added a line-by-line manifest guide, a report guide, and a checked report from a real fresh-OffCKB run. I am keeping v0.1 focused, so I am not proposing a hosted dashboard.

I took the naming suggestion and adopted ckb-verify for the CLI and future package. The current public main is still an unreleased 0.0.1 technical preview, not grant completion. Work already completed is priced at $0; the remaining $1,000 covers only unfinished v0.1 work and an external pilot or documented no-go result.

Thanks again for pushing me to make this concrete. I hope this gives the committee what it needs to resume the review.

2 Likes

Hi @zz_tovarishch, just following up on my latest update—has the committee had a chance to review it?

你好Akane, 因为这周是中国的国庆假期,委员会将这周的Spark审议安排在了10.8号

我们会在审议后尽快通知到各个项目,感谢您的理解和耐心

1 Like

Hello @Akane,

Following a review by the Spark Program Committee, your proposal remains Pending.

The committee invites you to provide a video demonstration: Based on the written proposal alone, the committee is finding it difficult to accurately assess the tool’s purpose and how it is used. Please create a video (a screen recording is fine) demonstrating and explaining the complete workflow.

We’d be happy to help if you need anything. If you have any questions about the committee’s video requirements, please feel free to contact us at any time. We look forward to receiving your demonstration video.

Best regards,
Xingtian
On behalf of the Spark Program Committee