Skip to content

docs: README uses non-copyable 0x000....64 shorthand for the ArbSys precompile address #4728

Description

@mssystem1

Summary

The Nitro README documents the ArbSys precompile using the shorthand address:

0x000....64

This is not a syntactically valid Ethereum address.

Because this section explicitly tells users that they can call arbOSVersion() on the precompile to verify the currently active ArbOS version, using a non-copyable address makes the operational example unnecessarily difficult to use.

Affected File

Repository:

OffchainLabs/nitro

File:

README.md

Section:

Special note about ArbOS & Arbitrum Classic

Current Documentation

The README says that the ArbOS version can be verified using:

arbOSVersion()

on:

0x000....64

Problem

Ethereum tooling expects a complete 20-byte address.

For example, this cannot be passed directly to:

cast call 0x000....64 ...

or to:

viem.readContract(...)

because:

0x000....64

is not valid hexadecimal and is not a valid Ethereum address.

Users therefore have to already know the real ArbSys address before they can follow the verification instructions.

Expected Behavior

Documentation describing a callable contract/precompile should use the full canonical address.

For example:

0x0000000000000000000000000000000000000064

if that is the intended ArbSys address.

Suggested Fix

Replace the shorthand notation with the complete address.

For example:

- ArbSys precompile at `0x000....64`
+ ArbSys precompile at `0x0000000000000000000000000000000000000064`

Additional Improvement

Since the section is specifically about verifying ArbOS versions, consider adding a directly executable example.

For example:

cast call \
  0x0000000000000000000000000000000000000064 \
  "arbOSVersion()(uint256)" \
  --rpc-url <ARBITRUM_RPC_URL>

Then explain the version mapping immediately below it.

Why This Matters

The current section is operational documentation.

A user reading it is likely trying to verify:

  • the active ArbOS version;
  • whether an upgrade has activated;
  • whether their node/network is on the expected version.

Providing a complete address removes ambiguity and makes the check directly reproducible.

Impact

Severity: Low

Category:

  • documentation;
  • operator experience;
  • developer experience.

No runtime behavior is affected.

Steps to Reproduce

  1. Open the Nitro README.
  2. Navigate to Special note about ArbOS & Arbitrum Classic.
  3. Copy:
0x000....64
  1. Pass it to an Ethereum CLI or JavaScript address parser.
  2. Observe that it is rejected as an invalid address.

Environment

Repository:

OffchainLabs/nitro

Branch:

master

Affected file:

README.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions