- 最新的Docker镜像: offchainlabs/arb-node:v1.3.0-d994f7d
--l1.url=<Layer 1 Ethereum RPC URL>
- 必须提供标准的以太坊RPC节点
- RPC:
8547
- WebSocket:
8548
- Sequencer Feed:
9642
- 在运行docker镜像时,数据库应挂载到外部磁盘,以便在重启时能永久保存数据。 这个挂载点可以是
/home/user/.arbitrum/mainnet
或者/home/user/.arbitrum/rinkeby
, 这取决于你连接到什么网络. - 以下是如何运行 arbitrum 主网节点的示例:
docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.3.0-d994f7d --l1.url https://l1-node:8545
- 以下是如何运行 Aribrum Rinkeby 测试网节点的示例:
docker run --rm -it -v /some/local/dir/arbitrum-rinkeby/:/home/user/.arbitrum/rinkeby -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.3.0-d994f7d --l1.url https://l1-rinkeby-node:8545
- Docker 镜像默认配置是以非 root 权限 UID 1000运行。这意味着如果你在 Linux 上运行 docker 镜像时遇到权限错误,请输入如下命令以允许所有用户更新持久文件夹。
mkdir /some/local/dir/arbitrum-mainnet chmod -fR 777 /some/local/dir/arbitrum-mainnet
mkdir /some/local/dir/arbitrum-rinkeby chmod -fR 777 /some/local/dir/arbitrum-rinkeby
-
--feed.input.url=<feed address>
- 默认是
https://arb1.arbitrum.io/feed
或者https://rinkeby.arbitrum.io/feed
这由链ID决定。 如果运行多个节点,你想为每个数据中心提供回馈中继, 请参阅下面进一步说明.
- 默认是
-
--node.forwarder.target=<sequencer RPC>
- 默认是
https://arb1.arbitrum.io/rpc
或者https://rinkeby.arbitrum.io/rpc
,这由链ID决定。
- 默认是
-
--core.cache.timed-expire
- 默认是
20m
,或者20分钟。缓存保存在最旧的区块中,所以不需要磁盘查找。
- 默认是
-
--node.rpc.max-call-gas
- 节点调用合约的最大gas值,默认是
5000000
- 节点调用合约的最大gas值,默认是
-
--node.rpc.enable-l1-calls
- 此选项能够在L1的
eth_getTransactionReceipt
请求中通过参数returnL1InboxBatchInfo
来包含交易信息。- 例子:
curl http://arbnode -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","method":"eth_getTransactionReceipt","params": ["txhash", {"returnL1InboxBatchInfo": true}],"id":1}'
- 例子:
- 此选项能够在L1的
-
--core.checkpoint-gas-frequency
- 默认是
1000000000
. 将检查点保存到磁盘之间的Gas值。当进行归档查询时,节点必须加载最近的前一个检查点,然后执行到请求的块。 检查点之间的距离越远,所需的潜在执行时间就越长。但是,保存检查点通常会降低节点的速度。
- 默认是
-
--node.cache.allow-slow-lookup
- 存在此选项时, 如果不在内存缓存中,将从磁盘加载旧块
- 如果需要存档支持,建议使用
--node.cache.allow-slow-lookup --core.checkpoint-gas-frequency=156250000
-
--node.rpc.tracing.enable
- 需要注意的是,如果要跟踪以前的交易记录,还需要使用存档节点填充数据库。
- 此选项能够通过api调用来追踪,跟parity有一些差异。
- 示例:
curl http://arbnode -X POST -H "Content-Type:application/json" -d '{"jsonrpc":"2.0","method":"arbtrace_call","params":[{"to":"0x6b175474e89094c44da98b954eedeac495271d0f","data": "0x70a082310000000000000000000000006E0d01A76C3Cf4288372a29124A26D4353EE51BE"},["trace"],"latest"],"id":67}'
- 示例:
trace_*
方法重命名为arbtrace_*
, 并且不支持trace_rawTransaction
方法- 仅
trace
支持类型.vmTrace
andstateDiff
类型不支持。 - self-destruct 的 opcode 不包含在追踪中。要获取自毁合约列表,可以给deletedContracts方法提供参数
-
当运行多个节点时,你希望运行一个 Arbitrum 中继并为所有节点提供回馈。Arbitrum 中继位于同一个 docker 镜像中。
-
以下是如何为主网运行 Arbitrum 中继的示例:
docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:9642:9642 --entrypoint /home/user/go/bin/arb-relay offchainlabs/arb-node:v1.3.0-d994f7d --feed.input.url wss://arb1.arbitrum.io/feed
-
以下是如何使用自定义中继为主网运行节点示例:
docker run --rm -it -v /some/local/dir/arbitrum-mainnet/:/home/user/.arbitrum/mainnet -p 0.0.0.0:8547:8547 -p 0.0.0.0:8548:8548 offchainlabs/arb-node:v1.3.0-d994f7d --l1.url https://l1-node:8545 --feed.input.url ws://local-relay-address:9642