Quest Badgepaused
Issues an EVM attestation when a Solana quest completes. Paused by its owner for a schema change.
quest.badge.v1v1.1.0Arbitrumby Demo author: quest-board
Executions · 7d10
Success rate90.0%
Median latency23.5s
Calling apps1
Interface
ISSUE_BADGE
15–25s to receiptIssue a badge attestation.
Inputs
| questId | string | Quest identifier. |
| holder | address | Recipient. |
Outputs
| attestationId | bytes32 | Attestation UID. |
example payload
{
"questId": "season-3/bridge-101",
"holder": "0x9d3e7a1c5b8f2d4e6a0c3b7f1e5d9a2c8b4f6e0d"
}Usage
@wormhook/sdkquest-issue_badge.ts
import { WormHookClient } from "@wormhook/sdk";
const client = new WormHookClient({ network: "devnet", appId: YOUR_APP_ID });
const call = await client.prepareCall({
hookId: "quest.badge.v1",
action: "ISSUE_BADGE",
payload: {
"questId": "season-3/bridge-101",
"holder": "0x9d3e7a1c5b8f2d4e6a0c3b7f1e5d9a2c8b4f6e0d"
},
ttl: 900,
});
const execution = await client.simulate(call);
const receipt = await execution.waitForReceipt();Registration
- hook id
- quest.badge.v1
- version
- 1.1.0
- destination
- Arbitrum
- permissions
- Allowlist
- spend cap
- none (no value moved)
- author
- Demo author: quest-board0x6910cd…b86f
Routes
- Solana→Arbitrumdisabled
- Wormhole 1 → 23 · receipt returns on the same route
Adapter
- kind
- Custom
- contract
- AttestAdapter0x6a927f…6b16
IWormHookAdapter.solconceptual
// Conceptual: final interface is defined in phase 2 (CORE_TECH_PLAN.md §Adapters)
interface IWormHookAdapter {
function execute(
bytes32 callId,
bytes calldata payload
) external returns (bytes memory output);
}Source & audit
- repository
- github.com/example/quest-board (demo)
- commit
- 5e2f8b0
- audit
- not audited
Risk notes
- Paused. New calls are rejected with WH-304.
Versions
- 1.1.0current2026-08-25Holder field added.
Allowlisted apps
Execution history
latest 10| Status | Call ID | Hook | Route | Created | Latency | Receipt |
|---|---|---|---|---|---|---|
| Success | 0x583339…c921#17417 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 2d ago | 23.2s | ✓ returned |
| Success | 0xe18da2…690a#17416 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 2d ago | 23.5s | ✓ returned |
| Success | 0x8213fc…5a03#17414 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 2d ago | 22.9s | ✓ returned |
| Success | 0x129b9b…4ce8#17412 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 3d ago | 23.0s | ✓ returned |
| Success | 0x72bbda…38a3#17402 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 3d ago | 25.8s | ✓ returned |
| Success | 0x43b937…e501#17407 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 4d ago | 24.9s | ✓ returned |
| Failed | 0x008ab9…1d65#17404 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 4d ago | 23.0s | failed |
| Success | 0x38436c…c2f6#17411 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 5d ago | 25.0s | ✓ returned |
| Success | 0x6ef3af…b68d#17420 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 5d ago | 21.1s | ✓ returned |
| Success | 0x6f09d9…6053#17408 | quest.badge.v1ISSUE_BADGE | SOL→ARB | 6d ago | 24.4s | ✓ returned |
- Success2d agoquest.badge.v1SOL→ARB0x583339c2…32c921 · #1741723.2s
- Success2d agoquest.badge.v1SOL→ARB0xe18da214…6a690a · #1741623.5s
- Success2d agoquest.badge.v1SOL→ARB0x8213fc56…e75a03 · #1741422.9s
- Success3d agoquest.badge.v1SOL→ARB0x129b9bd0…4b4ce8 · #1741223.0s
- Success3d agoquest.badge.v1SOL→ARB0x72bbda29…cd38a3 · #1740225.8s
- Success4d agoquest.badge.v1SOL→ARB0x43b93735…f1e501 · #1740724.9s
- Failed4d agoquest.badge.v1SOL→ARB0x008ab958…bb1d65 · #1740423.0s
- Success5d agoquest.badge.v1SOL→ARB0x38436c6f…aac2f6 · #1741125.0s
- Success5d agoquest.badge.v1SOL→ARB0x6ef3af95…1cb68d · #1742021.1s
- Success6d agoquest.badge.v1SOL→ARB0x6f09d944…b26053 · #1740824.4s