Arbitrum致力于与以太坊兼容。智能合约在字节码层面是兼容的,但系统的一些特定层面与EVM有所不同。
有些操作码的行为略有不同,见3_Solidity支持。Arbitrum中的时间与燃气在L2上也与以太坊不同。其他不同请见特殊特性。
每个提交到Arbitrum的交易都会销毁一个nounce,除非该交易格式不正确或者没有所需的nounce。
以太可以通过两种方式充值:retryable ticket或者L2储备资金经过L1调用。对终端用户而言看起来差不多,但仍有细微区别。
当充值资产时可以将资产充值到某个合约地址中而不执行其fallback函数——类似于合约执行自毁时将资金发送到另一个合约地址。
Arbitrum API致力于成为eth spec的超集。当使用API的时候你会找到所有的常见字段,以及其他针对Arbitrum的特定接口。
交易接受者包含下列额外字段
该交易的L1区块编号,详见Arbitrum中的时间。
一个总结当前转账费用的对象。包含消耗了多少个单位,出价价格,和每单位价格。
Arbgas费会根据用户与Arbitrum交互的情况而定价,但下列表格可以作为通用参考:
字段 | 成本来源 | 含义 |
---|---|---|
l1Transaction | 提交至L1收件箱的固定成本 | 提交给L1收件箱会有一定成本,该成本通过聚合器的批量交易提交来摊薄。 |
l1Calldata | L1交易的calldata | 每条L1转账附带的calldata都有成本。会对聚合器支付的成本进行补偿。 |
l2storage | L2的存储空间 | 每个存储slot写入非0的值都会支付成本 |
l2Computation | L2上的计算 | 每单位运算向用户收取的费用(以arbgas计量) |
更多详情请见燃气或洞悉Arbitrum。
下表包含了智能合约的返回值或回滚原因。
Return Code | Meaning |
---|---|
0 | 交易成功 |
1 | EVM回滚 |
2 | Arbitrum过于拥堵,无法执行交易 |
3 | 以gasPrice为价格支付maxGas时余额不足 |
4 | 执行余额不足 |
5 | 交易nounce错误 |
6 | 交易格式错误 |
7 | 无法部署至特定地址(特殊防御机制,应该永远不被触发) |
8 | 超过gas limit |
9 | 提供的ArbGas不够支付L1成本(基础tx成本+calldata成本) |
10 | 交易低于最低ArbGas需求 |
11 | 交易的ArbGas价格设置过低 |
255 | 未知错误 |