Blog

Crypto Hackathon Platform For Code-Verified Builds

A crypto hackathon platform should help builders ship working integrations and give judges comparable code, runtime, wallet, and deployment evidence for each submission.

Drew Stone
blueprint-agenthackathonsweb3-developer-tools
An editorial still life about a runnable service blueprint

Suppose a judging room has 180 submissions, 40 demo links, and one afternoon. Every team says its wallet flow works. Several links are dead, some demos use the wrong test network, and the strongest integration is hidden in a repository nobody has time to understand.

A crypto hackathon platform should require a source difference, test output, browser run, and versioned artifact for each technical result. It should give builders a versioned starter repository and environment contract, give sponsors code-checkable behavior, and give judges a standard submission packet.

The judges still make the prize decision. Standardized reruns and the submission packet let judges inspect behavior before weighing the presentation.

Blueprint Agent is Tangle’s browser-based coding workspace. Its public documentation describes a workflow in which a developer gives an agent a brief, edits and runs a real project, reviews the result, and takes it to a repository or deployment. That makes it a useful build surface for a sponsor who wants a hackathon challenge to end in running software. An SDK, or software development kit, is the package and documentation a sponsor expects teams to use when integrating with its product. An API, or application programming interface, is the documented boundary through which one program requests data or actions from another. For how repeated quest failures expose onboarding friction, read Developer Onboarding Platform With Code-Verified Quests. For the task and verifier design itself, read Developer Quest Platform With Code Verification.

Start with the submission a judge must inspect

A submission should answer five questions before a judge opens the code.

  1. What did the team attempt?
  2. Which files and dependencies changed?
  3. Which product behavior ran successfully?
  4. Where can the result be inspected?
  5. What remains broken or untested?

The submission packet should make those answers visible.

ArtifactWhat a judge can learnBoundary
Brief and scopeThe intended product behaviorIt does not prove implementation
Source diffWhat the team changedIt does not prove the code ran
Build and test outputWhether named checks passedIt covers only the checks that exist
Wallet or browser runWhether a user-facing path reached a stateIt may miss backend or security failures
Testnet transaction or service resultWhether the integration reached the target networkIt does not make a production-network deployment safe
Preview or artifactA judge can inspect the resultThe target may expire or drift
TraceHow the work and failures unfoldedIt is evidence of process, not correctness

The packet should record skipped checks as skipped. Silence around a missing browser run is more misleading than a visible failure.

Give every team the same starting conditions

A team may need a package registry, a wallet provider, a remote procedure call (RPC) endpoint, a testnet account on a network reserved for testing, test tokens from a faucet, a contract address, an indexer that makes blockchain data searchable, and a browser. Those boundaries can fail through version drift, a wrong network, missing funds, malformed provider responses, or an upstream outage. An RPC endpoint is a network address that accepts remote procedure calls, such as requests to a blockchain node.

Sponsors should publish a starter project and a short environment contract. The contract should state the expected Node.js or Rust version, package versions, network identifier, test accounts, faucet limits, contract addresses, and cleanup rules.

GitHub Codespaces is a useful public reference for the idea of a cloud development environment configured from repository files. An agent workspace follows the same principle while adding an assistant, task instructions, and evidence collection.

An agent profile is the saved configuration for an agent run, including its model, instructions, tools, permissions, and budget. A runtime is the environment that starts the agent and provides its files, processes, network policy, and resource limits. An evaluation is a repeatable check against an expected result. The starting flow can look like this.

sponsor publishes starter project and network contract
-> builder opens a bounded workspace
-> agent profile supplies model, tools, and budget
-> builder implements the required behavior
-> code and browser checks run
-> submission packet records results and known failures

The profile and runtime should be versioned for the event so a team does not receive an invisible capability advantage from a different environment.

Run the sponsor path before opening submissions

The sponsor should complete its own challenge from a clean workspace. That rehearsal should include the starter project, the documentation links, the test account, the browser flow, the verifier, the export packet, and the judge view.

PreflightFailure to forceWhat to fix before launch
Fresh installEmpty cache and a clean lockfileMissing version or package instructions
Wrong networkDeliberately select another chainNetwork warning and recovery step
Wallet rejectionDeny the connection or signatureConsent copy and retry behavior
Missing fundsUse a test account with no balanceFaucet limits and reset instructions
Failed contract callSubmit an invalid fixtureError decoding and support guidance
Expired previewOpen the result after its lifetimeArtifact expiry and replacement policy
Reviewer handoffGive the packet to a new judgeMissing context or unclear scoring rule

Run the preflight with the same account limits and network destinations that builders receive. If the sponsor uses a privileged account to demonstrate the path, the demo can pass while every participant fails.

Separate infrastructure health from builder behavior. If the RPC endpoint or indexer is unavailable, mark the dependency outage and preserve the submission for rerun. Do not turn an infrastructure failure into a technical score without an explicit rule. That rule should be written before the event, when no particular team is waiting on the outcome. The judge packet should also preserve the test conditions, because two submissions can appear different when one ran with a warm cache and the other started from an empty workspace. Comparable judging depends on comparable inputs, versions, network state, and time limits.

Write a challenge as a behavior

“Build something cool with our protocol” invites a pitch. “Use the SDK to request a quote, submit the accepted transaction on the test network, and show the settled result” gives a builder a technical target.

A sponsor can split that target into quests. A quest is a small task with a stated outcome. A code-verified quest is complete only when its named check succeeds. A verifier is the check or service that observes the required behavior and records whether it passed, failed, or was skipped.

For a wallet-heavy challenge, the checks might be:

QuestCheck
Read network stateThe app requests eth_chainId and displays the expected network
Connect walletThe provider reports an account after an explicit user action
Submit requestThe app sends the documented method with the required parameters
Handle rejectionA rejected wallet request produces an actionable state
Confirm resultThe user interface shows the returned transaction or job identifier
RecoverReloading or a failed request leaves the app in a usable state

The provider behavior in the wallet checks should follow the public Ethereum Improvement Proposal 1193 (EIP-1193) provider API. Browser automation can use Playwright, which documents browser tests, assertions, isolation, and reports for local or continuous integration (CI) execution.

The following is a deliberately small illustrative check. It uses a standard provider boundary and leaves the event-specific contract method for the sponsor to define.

type Provider = {
  request(args: { method: string; params?: unknown[] }): Promise<unknown>
}

async function checkNetwork(provider: Provider, expectedChainId: string) {
  const chainId = await provider.request({ method: 'eth_chainId' })

  if (chainId !== expectedChainId) {
    throw new Error(`expected ${expectedChainId}, received ${String(chainId)}`)
  }

  return { name: 'expected-network', status: 'passed' as const }
}

The event’s actual verifier should add the product-specific state transition. A chain identifier alone proves that the app asked a wallet provider about its network. It does not prove that the team integrated the sponsor’s SDK or that a transaction succeeded.

Make judging comparable without flattening the work

Standardize required behavior and evidence, not frameworks or visual design.

CriterionEvidenceWeighting question
Required integrationProduct-specific check and source diffDid the submission use the sponsor surface?
User pathBrowser or recorded runtime resultCan a user reach the promised behavior?
Failure handlingRejected request, wrong network, or missing fundsDoes the app explain a normal failure?
Code qualityTests, structure, and reviewer inspectionCan someone extend the result?
DeploymentReproducible preview or testnet resultCan a judge inspect the same artifact?
OriginalityHuman review of the resulting ideaDoes the work create a worthwhile use case?

The platform should never decide the creative criterion from raw agent activity. Tool-call count, prompt length, and model choice are process details. They can help explain a failure, while the product result and human review should carry the award decision.

Keep an evidence trace, with privacy rules

A trace is the ordered record of a run, including prompts, tool calls, file changes, command output, evaluations, and artifacts. For a hackathon, the trace can save a judge from reconstructing every debugging step. It can also help the sponsor improve the challenge after the event.

The trace should identify the evaluation version and outcome. The submission should show whether a check passed, failed, or was skipped.

Use a redacted trace for judging. Wallet keys, private API tokens, personal information, and unpublished business logic do not belong in a public packet. Use disposable test accounts and state the account reset rules before the event. If an agent profile permits external tool connections, list those connections and the data they can receive.

The partner can use failed traces as documentation data. If most teams fail at the same RPC setting, the starter project needs a fix. If the agent repeatedly invents a method name, the docs need a runnable example. If a browser check fails after a provider update, the verifier needs a maintenance owner.

Tangle terms in a hackathon workflow

In Tangle’s protocol, a Blueprint is a reusable definition of a service. It describes jobs, inputs, outputs, artifacts, triggers, and optional protocol rules. A Service is a live instance created from that definition. A Job is one callable unit of work inside that Service. An operator is the person or team that supplies infrastructure and runs the service. The public Blueprint introduction describes those roles and their boundaries.

Blueprint Agent is a separate product surface for building with an AI coding assistant. The two can meet when a hackathon challenge asks teams to build a client for a Tangle service or to package a service as a Blueprint. The distinction keeps a builder from confusing the workbench with the protocol service being built.

In the protocol runtime, a job router maps a job identifier to its handler. If the challenge is about a Blueprint job, the verifier should call the job through the documented entrypoint so it checks the same route an eventual user will use.

For paid agent or API challenges, x402 uses Hypertext Transfer Protocol (HTTP) 402 Payment Required to communicate payment requirements and lets a client return a payment payload before retrying the request. The x402 client and server guide describes those roles. Payment acceptance should be one quest assertion. The service output should be another assertion.

If the sponsor requires confidential execution, an attestation is a signed statement about the code or environment observed by trusted hardware or its verifier. It can support a claim about the execution boundary. It does not prove that the submission handles authentication, authorization, malformed input, or operational failures. It does not prove the submission’s idea or output quality. The Tangle execution confidentiality guide documents the policy boundary.

Judge the unhappy path before the stage demo

Run wrong-network, rejection, missing-funds, malformed-response, and expiry cases before launch.

Ask a fresh team to use the wrong network. Deny a wallet request. Let a test account run out of funds. Return a malformed response from a mock or fixture. Stop the preview and see whether the judge packet says why.

The platform should preserve each failure as a named outcome.

FailureUseful evidenceSponsor action
Wrong networkChain identifier and user-facing errorImprove network setup and reset steps
Wallet rejectionProvider error code and recovery stateDocument consent and retry behavior
Missing fundsTest account balance and faucet responsePublish funding limits and a reset route
Contract revertRequest parameters and decoded errorAdd an example for valid inputs
Expired previewTarget status and artifact versionExtend or replace the preview
Flaky verifierAttempt history and environmentStabilize the check before scoring it

An external outage can wrongly remove an otherwise valid entry from consideration. If the check depends on a third-party RPC or indexer, record that dependency and offer a rerun path. Keep a reviewer override for cases where the evidence and the automated result disagree.

What the checks leave for human judges

A passing check proves that a defined behavior passed under defined conditions. It does not prove that the code handles production authentication, authorization, malformed input, load, or operational failures. It does not make a testnet deployment safe to promote to mainnet (the production network). It does not prove that generated code was understood by every team member.

Sponsors should state those limits in the rules. Use code evidence to establish technical eligibility, then use human review for architecture, product judgment, originality, and risk.

Open the event only when judges can rerun it

Choose a crypto hackathon platform with code verification when the sponsor wants integrations that can be run and inspected after the event. Keep a form and demo video for lightweight community challenges where implementation evidence is outside the scope. For protocol or SDK challenges, publish the starter environment, define the behavior, test the unhappy path, and give judges a packet that names every check.

The event is ready when a fresh builder can reach the first product-specific check and a fresh judge can understand the result without opening ten unrelated tabs.

What is a crypto hackathon platform?

It is software and workflow for giving crypto builders a challenge, environment, support path, submission format, and judging process.

Why use code verification?

Code verification shows whether a named integration builds, runs, or reaches a required state under documented conditions.

Does a wallet connection prove a crypto integration?

No. A wallet connection proves that a provider exposed an account or accepted a request. The sponsor still needs a check for its SDK, contract, API, or user-facing behavior.

How does Blueprint Agent help a hackathon?

It gives builders an in-browser coding workspace where an agent can edit and run a real project while the builder reviews the result. The sponsor still owns the challenge rules and verifiers.

Should judges see the full agent trace?

Usually no. Give judges a redacted, relevant trace and the source, checks, runtime result, and known failures needed for the decision.