Skip to content

Builder code ts improvements#2

Open
phdargen wants to merge 10 commits into
pk-coinbase:feat/builder-code-extensionfrom
phdargen:builder-code-ts
Open

Builder code ts improvements#2
phdargen wants to merge 10 commits into
pk-coinbase:feat/builder-code-extensionfrom
phdargen:builder-code-ts

Conversation

@phdargen
Copy link
Copy Markdown

@phdargen phdargen commented May 19, 2026

Changes in this PR

Extension package — align with spec

  • Server APIdeclareBuilderCodeExtension() now returns { info, schema } (JSON Schema Draft 2020-12); resourceServer.tsserver.ts
  • s ownership — moved from server-declared string[] to client-provided string per spec
  • Client extension — new BuilderCodeClientExtension: echoes server a, attaches client s
  • FacilitatorbuildCalldataSuffix(payload)buildDataSuffix(ctx):
    • reads a from PaymentRequired.extensions (server truth)
    • soft echo validation against client payload (warn + fallback, never fail settlement)
    • reads s from client payload
    • always adds facilitator w
  • CBOR — added parseBuilderCodeSuffixFromCalldata() for off-chain parsing

Core — validate client payload echoes server defined extension fields

  • Add validateExtensions utility

EVM mechanisms — calldata suffix append (TypeScript)

  • New shared/extensions/builderCode.ts: resolveDataSuffix(), appendDataSuffix(); gas sponsoring split out of shared/extensions.ts
  • Wire suffix into all major EVM settle paths:
    • exact — EIP-3009, Permit2, v1
    • upto — Permit2
    • batch-settlement — deposit, claim, refund, settle
  • Remove duplicated suffix logic from eip3009-utils.ts

Tests & examples

  • Unit + integration tests in typescript/packages/extensions
  • Core test updates for paymentRequiredExtensions in HTTP facilitator client
  • TypeScript examples: examples/typescript/{servers,clients,facilitator}/builder-code/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant