Skip to content

Latest commit

 

History

History
95 lines (72 loc) · 4.81 KB

运行节点.md

File metadata and controls

95 lines (72 loc) · 4.81 KB

运行 Arbitrum One完整节点

构件要求

  • 最新的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
  • --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}'
  • --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 and stateDiff 类型不支持。
    • self-destruct 的 opcode 不包含在追踪中。要获取自毁合约列表,可以给deletedContracts方法提供参数

Arbitrum 中继

  • 当运行多个节点时,你希望运行一个 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
    

    Nitro开发公网

    运行Nitro节点