常见问题
开发者构建 OXN 时的常见问题。这里没有的问题通过支持渠道联系团队。
综合
OXN 是 rollup 吗?
不是。OXN 是拥有自己验证人集合与共识的主权 Layer 1。不向以太坊提交状态、不依赖其他链提供终结性。
我的合约调用为什么 revert invalid code?
你用了比 paris 更新的 EVM 版本编译。OXN 尚未支持 Shanghai 引入的 PUSH0 opcode。在编译器配置里设 evmVersion: "paris"。见 EVM 兼容性。
我合约里能读别的用户的余额吗?
不能,如果合约用了机密存储。只有账户持有者(或被授权者)通过签名查询能读自己的余额。见签名查询与构建机密 ERC-20。
主网什么时候?
时间线未公布。路线图与当前状态见主网状态。
开发
应该怎么设置 gasLimit?
每笔交易都显式设置 gasLimit,不要依赖客户端 eth_estimateGas。推荐默认值见下方以及 Gas 与手续费。
推荐的 gas limit?
- 原生代币转账:
100_000n - ERC-20 转账:
500_000n - 简单合约部署:
3_000_000n - 大合约部署:
5_000_000n+
未消耗的 gas 会退还,多给一些是安全的。
能用 viem 或 web3.js 代替 ethers.js 吗?
能,配合合适的 wrapper。ethers.js 的 OXN SDK 集成最完整。viem 支持;web3.js 支持有限。备选 SDK 的当前状态请联系团队。
能用 Hardhat 本地测机密性吗?
只能部分测。Hardhat 内建 network 跑纯 EVM,没有 SGX,所以机密性特定行为(加密 calldata、签名查询、加密存储)在本地不存在。本地测业务逻辑,然后打真实 OXN 测试网跑机密性路径的集成测试。见测试机密行为。
Sapphire.randomBytes 为什么一个区块内返回同一个值?
设计如此。随机源按区块派生。想在一次调用内得到多个独立随机值,传不同 personalization 字符串:
bytes memory r1 = Sapphire.randomBytes(32, "draw-1");
bytes memory r2 = Sapphire.randomBytes(32, "draw-2");
钱包与账户
发交易时为什么 MetaMask 显示 "Invalid address"?
可能是误导性错误标签。OXN 网页钱包(某些版本)在底层错误实际是 insufficient balance to pay fees 时会显示 "Invalid address"。检查账户余额,测试网上试 gasPrice: 0n。
水龙头为什么拒绝我的地址?
水龙头只接受 EVM(0x…)地址,不是原生(oxn1…)地址。从钱包主界面复制 EVM 地址。
能在 OXN 上用我的以太坊 mnemonic 吗?
可以。同一 mnemonic 产生同一私钥,在两个网络上产生同一 EVM(0x…)地址。那个地址在每条链上的余额是分开的。
钱包里的 "TBLUAI" 或 "BLUAI" 是什么意思?
两者都指 OXN 的原生代币。钱包显示符号按环境不同:
- 测试网:
TBLUAI(前缀T标记为测试网;测试网代币无经济价值)。 - 主网:
BLUAI(主网上线后的符号)。
较早的文档可能仍显示 "TEST"——那是更早的测试网符号,正在被 TBLUAI 替换。