silenciumtestnet
Docs / guide

coins that pay in HYPE.

How to get HYPE onto Elysium, start a coin, trade it and collect your paydays, then the contract itself for anyone building on it. The exact numbers live on the rules page.

Chain
Elysium
testnet for now
Gas
HYPE
and every trade
Per trade
2%
1% to the coin's pot
Paydays
milestones
of market cap
01 / guide

what silencium is.

Silencium is a launchpad on Elysium where every coin pays its holders in HYPE. Anyone can start a coin. It trades against HYPE in its own pool inside the Silencium contract, for life. Every trade puts 1% into the coin's pot, and each time the coin's market cap passes its next milestone, the pot is paid out: to holders, into a buy and burn, or half each, as the starter chose.

There is no backend, no keeper and no database. Everything you see on this site is read straight from the chain, and everything you do is a transaction you sign with your own wallet.

Nothing here is a promise of profit.

02 / guide

elysium and HYPE.

Elysium is Kinetiq's EVM chain on Hyperliquid: an Arbitrum Orbit chain that settles to HyperEVM, with fast blocks and HYPE as its gas. There is no separate gas token. On Silencium HYPE is also what you trade with and what paydays pay in. Any EVM wallet works; add the network with the values below, or follow Kinetiq's connecting to Elysium page.

Network
Elysium Testnet
Chain id
99801
Gas token
HYPE, 18 decimals
RPC
https://testnet-rpc.elysium.kinetiq.xyz
Explorer
elysium.kinetiq.xyz/testnet-explorer

These are the testnet values. Kinetiq publishes the mainnet chain id and RPC at launch, and this site switches with them.

03 / guide

get HYPE onto elysium.

HYPE crosses from HyperEVM to Elysium one to one, as plain native HYPE. No wrapped token.

  1. 01
    have HYPE on HyperEVM
    chain id 999

    If your HYPE is on Hyperliquid (the exchange, called HyperCore), move it to HyperEVM first with Hyperliquid's own transfer to EVM. Keep a little for gas on HyperEVM.

  2. 02
    add elysium

    Add the Elysium network to your wallet with the chain id and RPC above. Your Elysium address is the same address as on HyperEVM.

  3. 03
    deposit
    1:1

    Deposit HYPE on HyperEVM into Elysium's native bridge. The same amount arrives on Elysium as native HYPE, ready for gas and trading. Kinetiq's token bridging guide has the current bridge and its addresses.

  4. 04
    going back

    To leave, withdraw native HYPE from Elysium through the same bridge and it is released on HyperEVM one to one. Withdrawals out of an Orbit chain can take longer than deposits; the bridging guide has the timing.

04 / guide

start a coin.

One transaction from start. The launch fee is set at deploy.

  1. 01
    name it

    A name (up to 32 bytes), a ticker (up to 12), an image, an about line and links. The image is shrunk to a small picture and stored on chain with the rest.

  2. 02
    pick the fee mode
    holders, burn, split

    Where the pot goes at each payday: to holders in HYPE, into a buy and burn, or half each. Locked for good.

  3. 03
    pick the milestones

    The first market cap milestone (1.5x to 1000x of the start) and the step to the next (x1.5, x2 or x3). Locked for good.

  4. 04
    opening buy
    optional

    Optional. Add HYPE to buy your own coin in the same transaction, at the start price. It pays the same 2% as any buy. You get no other share.

  5. 05
    sign

    Your wallet sends the launch fee plus the opening buy. The coin exists the moment the transaction lands, with its own page.

05 / guide

trading.

Every coin page has a buy and sell box. A buy sends HYPE and gets the coin; a sell sends the coin back and gets HYPE. Both happen against the coin's own pool, in one transaction, with no approval step. 2% of the HYPE goes in fees: 1% to Silencium and 1% to the coin's pot.

Every buy and sell carries a minimum out, quoted from the contract: if the price moves against you before the trade lands, it reverts instead of filling worse. Gas is paid in HYPE, so keep a little aside.

06 / guide

paydays.

A coin page shows its market cap, its next milestone and its pot. When a trade takes the market cap to or past the milestone, the pot is paid out in that same transaction and the next milestone moves up by the coin's step. Big jumps still make one payday per crossing.

Holder coins send the pot to every holder at once, by balance at that moment. Burn coins buy the coin back from the pool and burn it. Split coins do half each. Every payday is a public Payday event on chain, with its own transaction.

Nothing here is a promise of profit.

07 / guide

collecting.

Your HYPE from holder and split coins waits for you in each coin's token contract. Open collect to see what is waiting on the coins you hold and take it with claim(), one transaction per coin. It never expires, and selling the coin later doesn't take back what you already earned.

Anyone can also push your HYPE to you with claimFor(you); it can only ever go to your address.

08 / contract

the pad.

One contract holds every coin's pool and pot. Each coin is its own small ERC20 that pays its holders.

Silencium pad

Published at mainnet. Launching opens on 9 November.

The pad is Silencium.sol; coins are SilenciumToken.sol, with 18 decimals and a fixed 1,000,000,000 supply. A coin's address is the token contract; every pad function takes it as token. All HYPE amounts are in wei.

getCoin returns this struct
struct Coin {
  address starter;
  uint64 createdAt;
  uint64 launchBlock;
  uint8 mode;
  uint16 stepPct;
  uint32 paydays;
  uint128 virtualHype;
  uint128 realHype;
  uint128 tokens;
  uint128 pot;
  uint128 nextMilestone;
  uint128 paidHolders;
  uint128 burnedHype;
  uint128 burnedTokens;
  uint128 volume;
}
09 / contract

read.

Padview
  • function getCoin(address token) view returns (Coin c, uint256 mcap, uint256 priceWei)

    Everything about one coin, its market cap in HYPE wei and its price in HYPE wei per whole token. mode: 0 holders, 1 burn, 2 split. Reverts Unknown() for an address that is not a coin.

  • function coinCount() view returns (uint256)

    How many coins exist.

  • function listCoins(uint256 from, uint256 n) view returns (address[])

    Coin addresses from index `from`, up to n of them, oldest first.

  • function quoteBuy(address token, uint256 value) view returns (uint256 out, uint256 fee)

    Tokens out for `value` HYPE wei sent to buy, and the 2% fee taken from it.

  • function quoteSell(address token, uint256 amount) view returns (uint256 out, uint256 fee)

    HYPE wei out for selling `amount` tokens, after the 2% fee.

  • function launchTerms() view returns (bool open, uint256 launchFee, uint256 virtualHype, uint256 minFirst, uint256 maxFirst)

    What a new coin starts with: launching on or off, the launch fee, the virtual HYPE (= start market cap) and the first milestone range, all in HYPE wei.

Coinview
  • function claimable(address holder) view returns (uint256)

    HYPE wei waiting for holder now.

  • function earned(address holder) view returns (uint256)

    All time HYPE wei earned by holder, claimed or not.

  • function eligibleSupply() view returns (uint256)

    Tokens that earn paydays: the supply minus the pool and the burn address.

10 / contract

write.

Padtransactions
  • function launch(string name, string symbol, string meta, uint8 mode, uint256 firstMilestone, uint16 stepPct) payable returns (address token)

    Starts a coin. msg.value = launch fee + optional opening buy. mode 0, 1 or 2; firstMilestone in HYPE wei within launchTerms(); stepPct 150, 200 or 300.

  • function buy(address token, uint256 minTokens) payable returns (uint256 out)

    Buys with msg.value HYPE. Reverts Slippage() if fewer than minTokens come out. Runs a payday if this buy crosses the milestone.

  • function sell(address token, uint256 amount, uint256 minHype) returns (uint256 out)

    Sells amount tokens (no approval needed). Reverts Slippage() if less than minHype comes back.

  • function payday(address token)

    Runs a due payday without trading. Does nothing if the market cap is below the next milestone.

Cointransactions
  • function claim() returns (uint256 amount)

    Sends the caller every HYPE wei waiting for them.

  • function claimFor(address holder) returns (uint256)

    Sends holder their waiting HYPE. Anyone can call it; it can only pay the holder.

Errors: Closed() launching is off, BadInput() a value out of range, Slippage() under your minimum, Unknown() not a coin.

11 / contract

events.

Pad events come from the pad address; Paid and Claimed from each coin's own address.

Events
  • event Launched(address indexed token, address indexed starter, string name, string symbol, string meta, uint8 mode, uint256 firstMilestone, uint256 stepPct, uint256 virtualHype)

    Pad. A coin was started. Its name, ticker and metadata live here.

  • event Trade(address indexed token, address indexed trader, bool isBuy, uint256 hype, uint256 tokens, uint256 fee, uint256 mcap, uint256 pot)

    Pad. Every buy and sell: HYPE gross, tokens, the 2% fee, market cap and pot after it.

  • event Payday(address indexed token, uint256 indexed n, uint256 mcap, uint256 milestone, uint256 toHolders, uint256 burnHype, uint256 burnedTokens, uint256 nextMilestone)

    Pad. Payday number n: the milestone crossed, what went to holders, what was burned, and the next milestone.

  • event Paid(uint256 amount, uint256 eligibleSupply)

    Token. HYPE shared with holders at a payday, over this many eligible tokens.

  • event Claimed(address indexed holder, uint256 amount)

    Token. A holder collected HYPE.

12 / contract

viem example.

Read a coin, then buy with a minimum out. The signatures are the ones above, so parseAbi gives full types.

example.ts
import { createPublicClient, createWalletClient, defineChain, http, parseAbi, parseEther } from "viem";
import { privateKeyToAccount } from "viem/accounts";

const elysium = defineChain({
  id: 99801,
  name: "Elysium",
  nativeCurrency: { name: "HYPE", symbol: "HYPE", decimals: 18 },
  rpcUrls: { default: { http: ["https://testnet-rpc.elysium.kinetiq.xyz"] } },
});

const PAD = "0x...";
const TOKEN = "0x...";

const abi = parseAbi([
  "struct Coin { address starter; uint64 createdAt; uint64 launchBlock; uint8 mode; uint16 stepPct; uint32 paydays; uint128 virtualHype; uint128 realHype; uint128 tokens; uint128 pot; uint128 nextMilestone; uint128 paidHolders; uint128 burnedHype; uint128 burnedTokens; uint128 volume; }",
  "function getCoin(address token) view returns (Coin c, uint256 mcap, uint256 priceWei)",
  "function quoteBuy(address token, uint256 value) view returns (uint256 out, uint256 fee)",
  "function buy(address token, uint256 minTokens) payable returns (uint256 out)",
]);

const pub = createPublicClient({ chain: elysium, transport: http() });

async function main() {
  // read one coin
  const [coin, mcap] = await pub.readContract({ address: PAD, abi, functionName: "getCoin", args: [TOKEN] });
  console.log("market cap", mcap, "next milestone", coin.nextMilestone, "pot", coin.pot);

  // buy 1 HYPE worth, accepting at most 1% less than the quote
  const value = parseEther("1");
  const [out] = await pub.readContract({ address: PAD, abi, functionName: "quoteBuy", args: [TOKEN, value] });
  const minOut = (out * 99n) / 100n;

  const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
  const wallet = createWalletClient({ account, chain: elysium, transport: http() });
  const hash = await wallet.writeContract({ address: PAD, abi, functionName: "buy", args: [TOKEN, minOut], value });
  await pub.waitForTransactionReceipt({ hash });
}

main();

Set TOKEN to a coin address from its page, and PRIVATE_KEY in your environment. Never paste a key into a website.

every number, on chain.

Supply, fees, milestones, fee modes and what the owner can and cannot do, read from the contract.