如何在 Elysium 上发行代币并在 Hyperliquid 上交易
作者 Uttam Singh

Elysium 是 Kinetiq 为 Hyperliquid 打造的 Layer 2,其主网已于 11 月 9 日上线。它是一条出块时间为 100 ms 的 EVM 链,使用 HYPE 支付 gas 并结算到 HyperEVM。Elysium 代币可以在 Hyperliquid 自己的订单簿上交易。本指南将完整走一遍这条路径。你将使用 Foundry 和我们的 Elysium RPC 在 Elysium 上部署一个 ERC-20,将其镜像到 HyperEVM,然后执行 HyperCore 上架流程,把它放上与 USDC 配对的现货订单簿。
部署和镜像成本低廉且无需许可,不过第一次镜像铸造需要等待约 5.5 天的挑战期。HyperCore 上架是 Hyperliquid 上一次性的发行方流程,它从 ticker 拍卖开始,拍卖价格永远不会低于 500 HYPE。该流程完成后,后续一切都向所有持有者开放,他们可以通过跨链桥在 Elysium、HyperEVM 和 HyperCore 之间转移代币。
发行之前,你需要了解 Elysium 的哪些内容?
Elysium 是一条由 Kinetiq 构建的 Arbitrum Orbit 链,它结算到 HyperEVM,并与 HyperCore 同址运行。HyperCore 是 Hyperliquid 的交易所层,Hyperliquid 的现货和永续合约订单簿就位于其中。HyperEVM 是在同一条 Hyperliquid L1 上与它并行运行的 EVM 环境。我们关于全力投入 Hyperliquid 的文章解释了这两部分如何协同工作,我们的 Elysium 交易指南则更深入地介绍了这条链本身,从 Hyperliquid 为什么需要 L2 到在其上线的应用。
HyperEVM 有意限制了自身的吞吐量。它的小区块每秒一个,承载 3M gas,只有每分钟一个的大区块才承载 30M gas。Kinetiq 为需要更多容量的工作负载构建了 Elysium,例如每秒多次刷新报价的做市商。它的执行目标为 300 Mgas/s(每秒百万 gas),大约比 HyperEVM 高两个数量级,同时 HYPE 仍是你进行交易唯一需要的代币。
Elysium 的区块是真正的规范区块,因此 latest 和交易回执都保持其通常含义,上层没有预确认层。Solidity、Foundry、Hardhat 和 viem 都无需改动即可使用。Kinetiq 还承诺将 25% 的排序器费用分给构建者,前提是他们的应用能带动链上活动。
我们是 Elysium 的主要 RPC 提供商,Kinetiq 的文档将我们列为 Elysium 的推荐基础设施提供商。我们的 Elysium RPC 页面和 Elysium API 快速入门提供了主网端点。我们的 Elysium API FAQ 中有两个细节可以节省调试时间:
viem/chains中的elysiumTestnet导出是另一条链。它属于一个无关的项目,因此请使用defineChain自行定义 Kinetiq 的 Elysium。- 一笔普通 HYPE 转账的 gas 略高于 21,000。Arbitrum 链会为父链数据额外增加少量 gas,因此硬编码的
21000gas 上限会因intrinsic gas too low而失败。
代币如何从 Elysium 进入 HyperCore 订单簿?
代币要经过两段跨链桥接,每一段都有各自的设置:
Elysium your ERC-20
| mirror bridge: lock on Elysium, mint a 1:1 mirror on HyperEVM
v
HyperEVM the mirror, a plain ERC-20
| deposit wallet: escrow on HyperEVM that HyperCore credits and debits
v
HyperCore a spot token with an order book against USDC镜像跨链桥不需要在你的代币中添加任何代码。它把 Elysium 上的原始代币锁定在一个托管钱包中,并在 HyperEVM 上以 1:1 比例铸造镜像代币,因此镜像代币的供应量始终等于锁定的数量。
HyperCore 将每个现货代币关联到一个 EVM 合约,部署者必须证明自己控制该合约。直接从钱包部署的合约可以用其部署 nonce 证明这一点。你的镜像代币由跨链桥工厂合约部署,因此这项检查对它无效。存款钱包(deposit wallet)解决了这个问题,它沿用了 Circle 关联 USDC 的模式。它托管镜像代币,将你的签名地址写入 HyperCore 针对工厂部署合约读取的存储槽,并成为 HyperCore 所关联的合约。
这条路径中有三项选择无法撤销,因此请在花费任何资金之前确定下来。它们分别是代币的 HyperCore 小数位数(在你赢得 ticker 时确定)、创世供应量,以及 HyperCore 代币与存款钱包之间的关联。
如何在 Elysium 上部署代币?
在任何操作上链之前,你需要准备三样东西:
- 一个 Elysium 端点。在 Alchemy 控制台中创建应用并选择 Elysium。
- Elysium 上的 HYPE。HYPE 通过 Kinetiq 的跨链桥从 HyperEVM 以 1:1 比例桥接进来,到账时即为原生 gas,中间没有包装代币。
- Foundry。下面的每条命令都使用
forge和cast,同一个部署者密钥会在 Elysium、HyperEVM 和 HyperCore 上签名。
镜像跨链桥接受任何具备以下三项特性的标准 ERC-20。它必须提供 name()、symbol() 和 decimals(),因为跨链桥正是依据这些元数据将代币与其镜像代币配对。这些元数据永远不应更改。转账还必须精确转移所请求的数量,这就排除了转账收费(fee-on-transfer)代币和弹性供应(rebasing)代币。一个普通的 OpenZeppelin ERC-20 满足全部三项。我们的 Solidity 中的 ERC-20 代币指南介绍了每个函数的作用。
现在就要根据 HyperCore 的限制规划供应量。HyperCore 以 64 位整数存储余额,并且最多允许 8 位 wei 小数,这使得一个 8 位小数的代币上限约为 1,840 亿个完整单位。10 亿的固定供应量完全在限制之内:
// SPDX-License-Identifier: MIT
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract ExampleToken is ERC20 {
constructor() ERC20("Example Token", "EXMPL") {
_mint(msg.sender, 1_000_000_000 * 10 ** decimals());
}
}OpenZeppelin 的 ERC-20 在构造函数中一次性设置名称和符号,并且由于没有铸造函数,供应量在部署时即已固定。将合约保存为 src/ExampleToken.sol 并部署它:
forge init example-token && cd example-token
forge install OpenZeppelin/openzeppelin-contracts
# Save the contract above as src/ExampleToken.sol, then import your deployer key once.
cast wallet import deployer --interactive
export ELYSIUM_RPC="https://elysium-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY"
forge create src/ExampleToken.sol:ExampleToken \
--rpc-url "$ELYSIUM_RPC" \
--account deployer \
--broadcastcast wallet import 把密钥存储在一个加密的 keystore 中,--account 在签名时解锁它,这样原始密钥就不会出现在你的 shell 历史记录中。我们的 Robinhood Chain 代币指南在另一条 Arbitrum Orbit 链上使用了同样的流程。
要亲自观察出块速度,请通过 WebSocket 端点订阅新区块。在这种出块速度下,HTTP 轮询会漏掉两次轮询之间的区块,因此这里请使用 WebSocket URL:
import { createPublicClient, defineChain, webSocket } from "viem";
const wssUrl = process.env.ELYSIUM_WSS;
if (!wssUrl) throw new Error("Set ELYSIUM_WSS to your Alchemy Elysium WebSocket URL");
// viem/chains exports an unrelated chain called elysiumTestnet, so define Elysium yourself.
const elysium = defineChain({
id: 99901, // Elysium mainnet
name: "Elysium",
nativeCurrency: { name: "HYPE", symbol: "HYPE", decimals: 18 },
rpcUrls: { default: { http: [], webSocket: [wssUrl] } },
});
const client = createPublicClient({ chain: elysium, transport: webSocket(wssUrl) });
let previous;
client.watchBlocks({
onBlock: (block) => {
const now = Date.now();
if (previous) console.log(`block ${block.number} arrived ${now - previous} ms after the last one`);
previous = now;
},
onError: (error) => console.error(error.message),
});将 ELYSIUM_WSS 设置为带有你的密钥的 wss://elysium-mainnet.g.alchemy.com/v2/ URL。你可以在 Elysium 区块浏览器上查看你的代币及其交易。
如何将代币镜像到 HyperEVM?
镜像跨链桥由两部分组成。Elysium 上的托管钱包持有被锁定的代币,HyperEVM 上的镜像 ERC-20 只能由跨链桥铸造和销毁。设置无需许可,每条链各需一笔交易,顺序不限。下面的地址是 Elysium 主网的地址,来自 Kinetiq 的合约地址页面。在发送资金之前,请先在该页面上核对这些地址:
export HYPEREVM_RPC="https://hyperliquid-mainnet.g.alchemy.com/v2/$ALCHEMY_API_KEY"
export TOKEN=<your token's address on Elysium>
export BRIDGE_FACTORY=0x209B0476ec33841c661f41C0C260A3b8aF94164A # ElysiumBridgeFactory, on Elysium
export MIRROR_FACTORY=0x473D61817Da6ce1a97aDC010FF1e96048504643B # ElysiumMirrorFactory, on HyperEVM
export ELYSIUM_ROUTER=0x61EbbC3A29f1970aF2Ce862bA9c5364832E14d17 # gateway router, on Elysium
export DEPLOYER=$(cast wallet address --account deployer)
# Elysium: deploy the escrow wallet that will hold locked tokens.
cast send "$BRIDGE_FACTORY" "createL2Wallet(address)" "$TOKEN" \
--rpc-url "$ELYSIUM_RPC" --account deployer
# The one mirror address the factory derived from your token's name, symbol, and decimals.
export MIRROR=$(cast call "$BRIDGE_FACTORY" "expectedL1Mirror(address)(address)" "$TOKEN" --rpc-url "$ELYSIUM_RPC")HyperEVM 上的这笔交易会在该地址部署镜像代币,并在两条链上向跨链桥注册这一对代币。它用 HYPE 支付发往 Elysium 的两条投递消息,你发送的金额必须恰好等于两条消息的预算之和。Kinetiq 建议按 Elysium 当前 gas 价格的两倍出价,最低 0.5 gwei,这样两条消息都能在到达时执行。多付的部分会退还到你在 Elysium 上的地址:
GAS_PRICE_BID=$(( $(cast gas-price --rpc-url "$ELYSIUM_RPC") * 2 )) # 2x the current Elysium gas price
(( GAS_PRICE_BID < 500000000 )) && GAS_PRICE_BID=500000000 # at least 0.5 gwei
MAX_GAS=300000
MAX_SUBMISSION=400000000000000 # 0.0004 HYPE per message
VALUE_EACH=$(( MAX_SUBMISSION + MAX_GAS * GAS_PRICE_BID ))
cast send "$MIRROR_FACTORY" \
"createAndRegisterL1Mirror(address,string,string,uint8,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,address))" \
"$TOKEN" "Example Token" "EXMPL" 18 \
"($MAX_SUBMISSION,$MAX_SUBMISSION,$MAX_GAS,$MAX_GAS,$GAS_PRICE_BID,$VALUE_EACH,$VALUE_EACH,$DEPLOYER)" \
--value $(( 2 * VALUE_EACH )) \
--rpc-url "$HYPEREVM_RPC" --account deployer传入代币当前在链上的准确名称、符号和小数位数。工厂合约接受任何元数据,但只有与你的代币匹配的镜像代币才能获得供应量,不匹配的镜像代币会永远为空。这两条消息通常在一分钟内到达 Elysium。如果其中一条执行失败,请用相同的参数重新执行同一次注册,以重新发送两条消息。
现在,所有持有者都可以进行桥接。要转移代币,请在 Elysium 上授权托管钱包,然后通过路由合约发送代币。无论哪个方向,路由合约都以镜像代币的地址作为代币参数:
export WALLET=$(cast call "$BRIDGE_FACTORY" "l2WalletFor(address)(address)" "$TOKEN" --rpc-url "$ELYSIUM_RPC")
AMOUNT=$(cast to-wei 1000000) # 1,000,000 tokens, converted to 18-decimal base units
cast send "$TOKEN" "approve(address,uint256)" "$WALLET" "$AMOUNT" \
--rpc-url "$ELYSIUM_RPC" --account deployer
cast send "$ELYSIUM_ROUTER" "outboundTransfer(address,address,uint256,uint256,uint256,bytes)" \
"$MIRROR" "$DEPLOYER" "$AMOUNT" 0 0 0x \
--rpc-url "$ELYSIUM_RPC" --account deployer锁定会立即发生。Elysium 的挑战期结束后,镜像代币即可在 HyperEVM 上领取。挑战期是离开乐观 rollup 的消息所需的等待窗口,在主网上约为 5.5 天。任何人都可以领取,转账就绪时,Kinetiq 的跨链桥会将其显示为可领取。请围绕这段等待时间规划第一次镜像铸造。领取完成后,使用 Alchemy CLI 读取镜像代币的供应量:
alchemy evm contract read "$MIRROR" "totalSupply()(uint256)" -n hyperliquid-mainnet返程更快。在 HyperEVM 上销毁镜像代币会释放 Elysium 上的原始代币,通常在一分钟内完成。
上架镜像代币的集成方应通过工厂合约验证它,而不是仅凭地址就信任它。Kinetiq 的检查包含两次读取。镜像工厂合约上的 elysiumTokenOf(mirror) 必须返回原始代币,并且镜像代币的供应量必须大于零,而不匹配的镜像代币永远无法满足这一点。
如何将代币上架到 HyperCore 现货订单簿?
上架是 HyperCore 上的一个发行方流程,分为五个部分。你需要购买 ticker、创建存款钱包、执行创世、将代币关联到该钱包,并注册现货交易对。Kinetiq 的现货部署指南记录了完整流程。只有赢得 ticker 的地址才能签署 HyperCore 操作,从购买 ticker 到订单簿上线,中间没有任何白名单或审核环节。实际上,整个流程会持续数天,因为拍卖按自己的时间表进行。
Ticker 拍卖需要多少费用?
Ticker 通过为期 31 小时的荷兰式拍卖出售。价格线性下降,直至 500 HYPE 的底价。每轮新拍卖的起拍价为上一次成交价的两倍,如果上一轮拍卖没有成交,则从底价起拍。Hyperliquid 的文档要求部署者先在测试网上完整演练一遍相同的部署,因为如果部署中途卡住,拍卖款项无法退还。
下面的 HyperCore 操作使用 Hyperliquid Python SDK,并使用与 EVM 交易相同的 Foundry keystore 签名:
import getpass
import json
import pathlib
import eth_account
from hyperliquid.exchange import Exchange
from hyperliquid.info import Info
from hyperliquid.utils import constants
from hyperliquid.utils.signing import get_timestamp_ms, sign_l1_action
keystore = json.loads(pathlib.Path("~/.foundry/keystores/deployer").expanduser().read_text())
deployer = eth_account.Account.from_key(
eth_account.Account.decrypt(keystore, getpass.getpass("Keystore password: "))
)
exchange = Exchange(deployer, base_url=constants.MAINNET_API_URL)
info = Info(constants.MAINNET_API_URL, skip_ws=True)
def ok(response):
if response.get("status") != "ok":
raise RuntimeError(response)
return response
auction = info.post("/info", {"type": "spotDeployState", "user": deployer.address})["gasAuction"]
print("Current ticker price in HYPE:", auction["currentGas"])我们的 HyperCore Data API 目前处于抢先体验阶段,也提供同样的拍卖状态数据。
当价格可以接受时,购买 ticker。这次调用会永久确定 HyperCore 的小数位规格。示例使用 8 位 wei 小数和 2 位数量小数,符合 HyperCore 关于 wei 小数位至少比数量小数位多 5 的规则。出价上限以 HyperCore 单位表示,HYPE 在其中有 8 位小数:
MAX_GAS = 600 * 10**8 # refuse to pay more than 600 HYPE
result = ok(exchange.spot_deploy_register_token("EXMPL", 2, 8, MAX_GAS, "Example Token"))
TOKEN_INDEX = result["response"]["data"]
print("Ticker index:", TOKEN_INDEX)存款钱包、创世和关联如何配合?
在 ticker 尚未关联时,在 HyperEVM 上创建存款钱包。最后一个参数是将要签署关联操作的地址,钱包会把它写入 HyperCore 检查的存储槽:
export DEPOSIT_WALLET_FACTORY=0x9aD2639eB48FD7dd0f6F310F04aF5A9f7937cf6c # HyperCoreDepositFactory, on HyperEVM
export TOKEN_INDEX=<ticker index from the purchase>
cast send "$DEPOSIT_WALLET_FACTORY" "createWallet(address,uint64,address)" "$MIRROR" "$TOKEN_INDEX" "$DEPLOYER" \
--rpc-url "$HYPEREVM_RPC" --account deployer
cast call "$DEPOSIT_WALLET_FACTORY" "walletFor(address,uint64,address)(address)" "$MIRROR" "$TOKEN_INDEX" "$DEPLOYER" \
--rpc-url "$HYPEREVM_RPC"创世会创建该代币在 HyperCore 上的全部供应量。对于桥接代币,这些供应量全部进入该代币的系统地址,即一个由 0x20 加上 ticker 索引组成的 HyperCore 保留地址。只有当有人把镜像代币存入托管时,供应量才会离开系统地址,因此 HyperCore 上的流通供应量始终与存款钱包持有的数量一致。创世只能执行一次。桥接代币还会关闭 Hyperliquidity,这是 HIP-2 中的一种策略,用协议运行的订单为新订单簿提供初始流动性:
MAX_SUPPLY_WEI = str(1_000_000_000 * 10**8) # one billion tokens at 8 HyperCore decimals
SYSTEM_ADDRESS = "0x20" + format(TOKEN_INDEX, "038x") # 0x20, then the index in the remaining 19 bytes
ok(exchange.spot_deploy_user_genesis(TOKEN_INDEX, [(SYSTEM_ADDRESS, MAX_SUPPLY_WEI)], []))
ok(exchange.spot_deploy_genesis(TOKEN_INDEX, MAX_SUPPLY_WEI, True)) # True = no Hyperliquidity关联由两个 HyperCore 操作组成,一个是指定存款钱包的请求,另一个是由钱包中存储的地址签名的最终确认。小数位偏移量是 ERC-20 的 18 位小数与 HyperCore 代币的 8 位小数之差。SDK 没有为这些操作提供辅助函数,因此需要直接签名并提交。关联是永久性的:
DEPOSIT_WALLET = "<deposit wallet address from walletFor>"
def submit(action):
nonce = get_timestamp_ms()
signature = sign_l1_action(deployer, action, None, nonce, None, True) # True = mainnet
return ok(exchange.post("/exchange", {
"action": action, "nonce": nonce, "signature": signature, "vaultAddress": None,
}))
submit({"type": "spotDeploy", "requestEvmContract": {
"token": TOKEN_INDEX, "address": DEPOSIT_WALLET.lower(), "evmExtraWeiDecimals": 10,
}})
submit({"type": "finalizeEvmContract", "token": TOKEN_INDEX, "input": "customStorageSlot"})从此时起即可存入,即使代币还没有订单簿。
如何开启订单簿?
先注册与 USDC(代币索引 0)配对的现货交易对,再注册 Hyperliquidity,即可创建市场。即使关闭了 Hyperliquidity,第二次调用也是必需的,此时它不会挂出任何订单,只会设置开盘价:
pair = ok(exchange.spot_deploy_register_spot(TOKEN_INDEX, 0)) # 0 = USDC
SPOT_INDEX = pair["response"]["data"]
START_PX = 0.01 # opening price in USDC; set it to a real price, not a placeholder
ok(exchange.spot_deploy_register_hyperliquidity(SPOT_INDEX, START_PX, 1, 0, None)) # 0 orders持有者现在可以把代币转移到 HyperCore。他们为镜像代币授权存款钱包,然后以 HyperCore 现货为目标调用 deposit。由于 EVM 上为 18 位小数、HyperCore 上为 8 位小数,金额必须是 10^10 个基本单位的整数倍,而整数个代币的金额总是满足这一点:
export DEPOSIT_WALLET=<deposit wallet address>
AMOUNT=$(cast to-wei 1000) # 1,000 tokens
cast send "$MIRROR" "approve(address,uint256)" "$DEPOSIT_WALLET" "$AMOUNT" \
--rpc-url "$HYPEREVM_RPC" --account deployer
cast send "$DEPOSIT_WALLET" "deposit(uint256,uint32)" "$AMOUNT" 4294967295 \
--rpc-url "$HYPEREVM_RPC" --account deployer # 4294967295 routes to HyperCore spotHyperCore 会在下一个区块中记入余额。返回则是向系统地址发送一个 sendAsset 操作,它会从 HyperEVM 上的托管中支付镜像代币。由于关闭了 Hyperliquidity,新订单簿一开始是空的。你的团队或做市商需要为它报价,下单时使用现货资产 ID 10000 + SPOT_INDEX。
编程智能体能替你完成这些操作吗?
EVM 端的大部分工作都可以脚本化。智能体可以用 Foundry 部署代币、设置镜像并桥接供应量,然后用 Alchemy CLI 确认每一步。每条 CLI 命令都支持 --json --no-interactive,因此智能体可以解析输出。如果你的智能体通过技能或 MCP 而不是 shell 工作,Agent Skills 和 Alchemy MCP server 也能完成同样的读取。HyperEVM 读取请使用 -n hyperliquid-mainnet,Elysium 上的所有操作则让 Foundry 指向你的 Elysium 端点。
HyperCore 上架流程应由人来签名。它在拍卖中至少花费 500 HYPE,并永久确定小数位数、供应量和关联,因此应由智能体准备这些操作,由人来签名。下面是一个用于 EVM 端的提示词:
Run `alchemy --json --no-interactive agent-prompt` to load the CLI's command contract, then help me launch a token on Elysium mainnet and mirror it to HyperEVM.
Start by asking me for the token name, symbol, and total supply. Do not invent them. Confirm them back before writing any code.
Then:
- Sign everything with my Foundry keystore account `deployer`. If it doesn't exist, stop and tell me to run `cast wallet import`.
- Get my deployer address with `cast wallet address --account deployer`, then check its HYPE balance on Elysium with `cast balance <deployer-address> --rpc-url <my Alchemy Elysium endpoint>` before each transaction, and stop if it can't cover gas.
- Write a fixed-supply ERC-20 with no owner and no mint function, and deploy it with `forge create --rpc-url <my Alchemy Elysium endpoint>`.
- Run the mirror-bridge setup from Kinetiq's docs, taking every contract address from https://elysium.kinetiq.xyz/docs/contract-addresses. Show me each `cast send` command, with the value in HYPE, before running it.
- Verify the mirror with `alchemy evm contract read <mirror> "totalSupply()(uint256)" -n hyperliquid-mainnet`.
Ask before every transaction that spends HYPE. Do not buy a HyperCore ticker or run any HyperCore deploy action. Stop after the mirror and hand me the addresses.开始在 Elysium 上构建
在 Alchemy 控制台中创建应用并选择 Elysium,几分钟内即可获得主网 RPC 和 WebSocket 端点。无需合同,无需排队等候,也没有最低消费承诺。在 Elysium 上构建的团队还可以通过 Alchemy Elysium 额度计划申请额度。将 Hyperliquid 的 HyperEVM 添加到同一个应用中,用于镜像环节,并申请 HyperCore 抢先体验,以流式获取你的代币所在的订单簿。
相关概览
区块链2026年11月6日
如何在 Hyperliquid L2 Elysium 上交易
Elysium 是 Kinetiq 推出的 Hyperliquid L2,出块时间为 100 ms,使用 HYPE 支付 gas。了解它与 HyperEVM 有何不同、哪些应用在其上线,以及如何开始交易。
技术2026年10月20日
Hyperliquid 订单、成交与成交回报对比
在 Hyperliquid 上,订单、成交和成交回报是三种不同的记录。本文介绍每种记录在 HyperCore 上的负载、它们如何通过 oid 和 tid 关联,以及如何对账。
Ethereum2026年7月28日
在 Robinhood Chain 上发行一个 memecoin
使用 Foundry 和 Alchemy RPC 在 Robinhood Chain 主网上编写并部署一个固定供应量的 ERC20,或者使用 Alchemy CLI 将整个发行流程交给一个编码 agent 完成。

构建区块链应用
Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。