Skip to content

Docs/b20 implementation - #1774

Open
soheimam wants to merge 2 commits into
masterfrom
docs/b20-implementation
Open

Docs/b20 implementation#1774
soheimam wants to merge 2 commits into
masterfrom
docs/b20-implementation

Conversation

@soheimam

@soheimam soheimam commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

What changed? Why?

Added implementation guides for b20 spec

@mintlify

mintlify Bot commented Aug 5, 2026

Copy link
Copy Markdown

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
base 🟢 Ready View Preview Aug 5, 2026, 7:21 PM

💡 Tip: Enable Workflows to automatically generate PRs for you.

@cb-heimdall

Copy link
Copy Markdown
Collaborator

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

@roethke roethke left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Part of the #1766 split. One accuracy issue in the implementation samples.

@roethke roethke left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review — verified against current base/base-std (main)

Reviewed all four implementation guides; they're technically accurate and the examples compile/run as written. No blockers.

Confirmed against source:

  • createB20(B20Variant, bytes32, bytes, bytes[]), getB20Address, isB20, isB20Initialized; B20FactoryLib.encodeAssetCreateParams/encodeGrantRole/encodeUpdateSupplyCap/encodeUpdatePolicy.
  • IPolicyRegistry create/update calls, updatePolicy(bytes32, uint64), isAuthorized(uint64, address), PolicyType values, admin staging.
  • The precompile testing flow matches LIVE_PRECOMPILE_TESTING.md (base-forge install, make fork-tests, LIVE_PRECOMPILES=true FOUNDRY_PROFILE=fork on port 8546).
  • Seize scope naming (SEIZE_HOLDER_POLICY / SEIZE_RECEIVER_POLICY) matches current base-std; PausableFeature = 4 members incl SEIZE; ALL_FEATURES_PAUSED = 15.

Optional nits (non-blocking):

  • deployment-and-initcalls-encoding.mdx: example uses pragma ^0.8.20 while base-std pins 0.8.30 (fine — interfaces target >=0.8.20 <0.9.0).
  • policy-configuration-in-code.mdx: composite policies (UNION/INTERSECT) are fully implemented in the shipped IPolicyRegistry, but base-std's PolicyRegistry/README.md still calls them "planned for a future hardfork" — a one-line note that composite support may be activation-gated per chain would help. Also a redundant guard id == 0 || policyExists(id) (policyExists(0) already returns true for the sentinel).

Good to go from a correctness standpoint.

@roethke roethke mentioned this pull request Aug 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants