Troubleshooting
Building
Section titled “Building”| Message | Cause | Fix |
|---|---|---|
only import … from 'hivekit' is supported (AssemblyScript) |
another import, or a trailing comment on the import line | keep exactly import { hive, storage } from 'hivekit' on its own line |
This TypeScript uses features the AssemblyScript target does not support |
async, JSON, try, any, closures, … |
rewrite, or build with --target js |
FAILURE 1 parse error(s) from ndsr compile |
the hivekit import line |
remove it when compiling with ndsr compile |
| WASI or unknown import rejected | a crate or package that uses the clock, randomness, threads or the filesystem | disable default features; pick no_std options; remove the dependency |
hivec: open dist/<name>.hbc: no such file or directory (Go) |
the module name defaults to the directory name | use dist/<directory>.hbc or pass -name |
tinygo not found |
TinyGo not installed | install TinyGo 0.42 or set $TINYGO |
ndsr not found by hivec run |
not on PATH |
set NDSR_BIN=/path/to/ndsr |
Running
Section titled “Running”error in the result |
Cause | Fix |
|---|---|---|
out of gas |
the limit was too low; gas_used equals the limit |
raise --gas / gas_limit (JavaScript and Python need several million) |
guest abort: <message> |
your function returned an error, aborted or panicked | read the message; nothing was written |
invalid request: function 'x' is not exported by this module |
wrong function name | hivec functions / ndsr inspect list the exports (names are camelCase in Rust) |
stack limit exceeded |
unbounded recursion | bound recursion depth or iterate |
| a float in an event | events must be canonical JSON | use integers or strings |
| output not UTF-8 | outputs must be text | hex or base64-encode bytes |
Hub API errors
Section titled “Hub API errors”Every error is {"error", "message", "details", "request_id"}.
| Status | error |
Typical cause |
|---|---|---|
| 400 | invalid_field, bad_request |
a missing or malformed field (details often names it); invalid .hbc |
| 401 | unauthorized |
no or unknown token; a project that accepts tasks only with its developer’s API key |
| 401 | session_expired |
sign in again (sessions last 12 h) |
| 403 | forbidden, not_owner |
not your project, device or subscription |
| 403 | scope_missing |
the API key lacks the needed scope |
| 403 | not_enrolled, not_verified |
finish developer enrollment |
| 404 | not_found |
unknown module, project, task or path (this host serves JSON only) |
| 409 | already_exists |
module, project or subscription already exists (details has its id) |
| 409 | invalid_state |
wrong lifecycle state: project not listed, enrollment already active, collateral not withdrawable yet, … |
| 409 | duplicate |
the same slash or epoch receipt already exists |
| 413 | too_large |
body, .hbc or input over its limit |
| 422 | invalid_manifest |
a manifest rule failed; details.problems lists each one |
| 422 | incompatible |
the device does not meet the project’s requirements |
| 422 | insufficient_collateral |
below the project’s min_collateral |
| 422 | bad_signature, invalid_binding, invalid_evidence |
a signature or signed object did not verify |
| 425 | not_attested |
the committee snapshot is not attested by a validator quorum yet |
| 429 | rate_limited |
wait Retry-After seconds |
| 502 | no_consensus |
validators disagreed on /v1/execute: look for non-determinism |
| 503 | unavailable, faucet_empty |
busy module, validators syncing, chain RPC down, faucet empty |
| 504 | timeout |
no quorum of answers in time; retry only if the call is idempotent |
Mining
Section titled “Mining”| Symptom | Cause | Fix |
|---|---|---|
| macOS: “the developer cannot be verified” | the testnet build is not notarized | System Settings → Privacy & Security → Open Anyway |
| Android: Play Protect warning | sideloaded APK | Install anyway |
| Status Paused: charging / battery / network / thermal | a policy is not met | plug in, use Wi-Fi, or change policies |
| No offers | not bound, no active subscription, subscription not yet in a snapshot (wait for the next epoch), device incompatible, or the project has no tasks | check necter-miner status and the store’s My Mining |
hub_unreachable alert |
network or Hub down | the miner retries automatically (1 s → 60 s) |
| Exit code 75 | another instance holds miner.lock |
stop the other instance; the desktop app attaches to a running daemon |
| Exit code 78 | remote dashboard without password or TLS | necter-miner ui enable-remote |
| Close code 4009 on the relay | the same node key connected elsewhere | run one instance per node key |
| Close code 4050 | miner too old | update |
Subscription jailed |
a slash left the bond below min_collateral |
top up collateral |