Launch a SCOT side-token · MELEK-Engine is our Hive-Engine
If you've launched a token or a tribe (SCOT / Nitrous) on Hive-Engine,
you already know this. MELEK-Engine is our Hive-Engine: a layer-2 side-token layer on the
MELEK Graphene chain. APIS is our BEE (the fee coin), and a SCOT side-token is
a tribe token — a community coin that pays authors and curators for posts, with its own
front-end. No Solidity, no EVM: it's custom_json on the MELEK L1.
If you know Hive-Engine, this is the map
| Hive-Engine | MELEK-Engine | What it is |
|---|---|---|
| BEE | APIS | the engine's utility/fee coin — burned to create tokens & pay resource fees |
| WORKERBEE | forever-locked wMELEK → APIS-Hash | mining/issuance stake (mainnet). Testnet keeps a DRONE governance token |
| Scotbot | scot.enable / rewards.setReward | config-driven tribe reward emission (no user JS) |
| Nitrous | engine/nitrous/render.mjs | a per-token branded, read-only front-end generator |
| Hive-Engine contracts API | same /contracts/* shape | existing Hive-Engine tooling ports over |
The engine node holds no key and never
broadcasts: it streams MELEK L1 blocks, folds the custom_json ops
deterministically, and publishes a SHA-256 state hash at /status. Same L1
history → same state. Open source in the Bot repo under
engine/; Hive-Engine's own Nitrous / Scotbot are at
github.com/hive-engine.
1 · Create a token
One custom_json. Symbol is 1-10 uppercase
letters, precision 0-8, and you may set an immutable supply cap:
// Broadcast as a Graphene custom_json on MELEK L1 (keys stay in your wallet/browser).
{
"required_auths": ["youraccount"],
"required_posting_auths": [],
"id": "mse-testnet-melek", // the engine sidechain id (mainnet: mse-mainnet-melek)
"json": {
"contractName": "tokens",
"contractAction": "create",
"contractPayload": {
"symbol": "SCROLL", // 1-10 uppercase A-Z
"name": "Scroll",
"precision": 3, // 0-8 decimals
"maxSupply": "1000000" // optional immutable cap
}
}
}
// tokens.create burns 100 APIS (the creation fee).
2 · Add a Scot Bot (make it a tribe)
Turn the token into a tribe by attaching a reward rule — a
config object, never user JavaScript (that closes the sandbox-escape class by
construction). Every field below is a real field scot.enable validates:
{
"required_auths": ["youraccount"],
"required_posting_auths": [],
"id": "mse-testnet-melek",
"json": {
"contractName": "scot",
"contractAction": "enable", // add a Scot Bot to an EXISTING token
"contractPayload": {
"symbol": "SCROLL",
"emissionPerWindow": "10", // tokens minted to authors+curators each window
"windowBlocks": 1200, // reward window length, in L1 blocks
"authorBps": 5000, // author share in basis points (5000 = 50%)
"curve": "linear" // "linear" | "quadratic" | "sqrt"
}
}
}
// scot.enable burns 100 APIS the first time. (scot.createTribe bundles create + enable
// + an optional founder issue in one op.)
How rewards flow: posts on the MELEK L1 accrue
token-stake-weighted votes; each windowBlocks window the pool emits
emissionPerWindow of your token, split author/curator by authorBps and
the curve, via the deterministic rewards.payout crank (cap-respecting,
idempotent). This is the Scotbot model — as a rule object.
3 · The Nitrous front-end
Hive-Engine's Nitrous gives each tribe its own condenser.
Ours is a generator: engine/nitrous/render.mjs —
renderTokenSite(state, SYMBOL, theme) returns a branded, read-only page
(supply / holders / posts / rewards / leaderboard) for any token;
makeNitrousHandler(state, themeFor) serves / + /:SYMBOL.
One function, many tribes — nothing hardcoded. (A tokenized social app built this way is the
APPICS-style pattern — see Build a front-end.)
4 · The read API (Hive-Engine-shaped)
Read-only, same endpoint shape as Hive-Engine so existing tooling ports:
GET /status sidechain id, last block, STATE HASH, seam flags
GET /contracts/tokens[?symbol=APIS] token(s)
GET /contracts/balances?account=x[&symbol=] balances
GET /contracts/holders?symbol=APIS holders
GET /contracts/issuance?symbol=APIS append-only issuance log
POST /rpc/contracts JSON-RPC find { params:{contract,table,query} }
curl -s https://engine.alpha.melek.salon/status
# -> { sidechainId, chainId, lastBlock, stateHash, feeToken:"APIS", tokenCount, seams }
curl -s "https://engine.alpha.melek.salon/contracts/tokens?symbol=APIS" # the fee token, live on testnet
Honest status — testnet live, mainnet coming
- Testnet: LIVE. The engine API + UI answer at
engine.alpha.melek.salon — verified:
/statusreturns real state (APIS is the fee token there). Build tribes there now. - Mainnet: coming. A hosted mainnet engine is not up yet. Until it is,
run the node yourself (
npm run enginein the Bot repo) or use the testnet. We will not point you at a mainnet endpoint that doesn't answer. - APIS on mainnet is not emitting yet — see how to get each token for the honest status.
- Keys stay in your browser. The UI assembles the exact
custom_jsonand signs client-side (dhive) or via MELEK-Signer — the key never reaches the server. The two PRANA DEX seams (gateway,dexSettlement) are present but gated off.
Or deploy an EVM token on PRANA → · Build a front-end (APPICS / PIZZA patterns) → · Token Academy →