Summary
The Nitro README documents the ArbSys precompile using the shorthand address:
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:
on:
Problem
Ethereum tooling expects a complete 20-byte address.
For example, this cannot be passed directly to:
cast call 0x000....64 ...
or to:
because:
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
- Open the Nitro README.
- Navigate to
Special note about ArbOS & Arbitrum Classic.
- Copy:
- Pass it to an Ethereum CLI or JavaScript address parser.
- Observe that it is rejected as an invalid address.
Environment
Repository:
OffchainLabs/nitro
Branch:
master
Affected file:
README.md
Summary
The Nitro README documents the
ArbSysprecompile using the shorthand address: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/nitroFile:
README.mdSection:
Current Documentation
The README says that the ArbOS version can be verified using:
on:
Problem
Ethereum tooling expects a complete 20-byte address.
For example, this cannot be passed directly to:
or to:
because:
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:
if that is the intended ArbSys address.
Suggested Fix
Replace the shorthand notation with the complete address.
For example:
Additional Improvement
Since the section is specifically about verifying ArbOS versions, consider adding a directly executable example.
For example:
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:
Providing a complete address removes ambiguity and makes the check directly reproducible.
Impact
Severity: Low
Category:
No runtime behavior is affected.
Steps to Reproduce
Special note about ArbOS & Arbitrum Classic.Environment
Repository:
OffchainLabs/nitroBranch:
masterAffected file:
README.md