Skip to content

feat: land RFC-0024 ring VRF key management - #360

Open
replghost wants to merge 23 commits into
mainfrom
codex/rfc0024-integration
Open

feat: land RFC-0024 ring VRF key management#360
replghost wants to merge 23 commits into
mainfrom
codex/rfc0024-integration

Conversation

@replghost

@replghost replghost commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Summary

  • integrate the complete RFC-0024 implementation from feat: implement RFC-0024 ring VRF key management #348 onto current main
  • include the feature/people-rfc RFC source while retaining registration, listing, selection, direct signing, AutoSigning, pairing, and battery coverage
  • preserve current-main Extrinsic V5 support (feat(server): support Extrinsic V5 transaction signing #333) and canonical native FFI types (Use canonical types over the native FFI #345)
  • adapt RFC-0024 call sites to canonical DerivationIndex::Index/Raw and expose native provider selection with canonical RingLocation and ProductAccountId records
  • resolve follow-bound chainHead operations through the connection's sticky product alias binding, falling back to this chain's pending follow intent so a request that arrives before setup completes waits for it

Breaking change: a RingLocation needs an explicit CollectionId

Proof and alias generation read the ring's collection from a CollectionId
junction. A location that carries none is not a ring: it resolves to
RingNotFound. A PalletInstance junction alone does not identify a ring.

Migration: createAccountProof, getAccountAlias, and registerRingVrfKey
calls each carry a CollectionId junction naming their ring. Callers that
depended on the host substituting full personhood name
pop:polkadot.network/people explicitly.

Exposure: every ring location in this repo — generated client examples,
playground, host CLI battery, and the RFC-0024 docs — names its collection,
so nothing here depends on the substitution. Products outside this repo that
omit the junction need the change above.

Immutable source

Candidate source: ccf3b5c07db99b6a46f802baa8b189e0f658780c

Integration parents:

UserAgentKit PR #1653 vendors this exact candidate.

Verification

  • cargo test -p truapi-server --all-features: 512 passed across 6 suites
  • follow-alias coverage: an established alias keeps resolving once a second follow opens on the same chain, a request that beats follow setup waits for it, and ambiguous product-scoped intents stay fail-closed
  • cargo check -p truapi-server --target wasm32-unknown-unknown --all-features: passed
  • cargo fmt --all -- --check: passed
  • ./scripts/codegen.sh: no drift against the committed generated client and wire tables
  • @parity/truapi: npm run build and 221 bun tests passed
  • playground: yarn build and yarn lint passed, including the generated client examples
  • existing GitHub required checks are running against the final head

RFC acceptance remains tracked in #324.

@replghost
replghost requested review from a team August 7, 2026 21:37
@replghost
replghost enabled auto-merge August 7, 2026 21:37
@replghost

Copy link
Copy Markdown
Contributor Author

@pgherveou RFC-0024 from #348 is rebased and fully integrated onto current main here, with Extrinsic V5 and canonical native FFI preserved. All required CI is green and auto-merge is enabled. Please review the integration when available; UserAgentKit #1653 is ready to re-vendor the immutable merge commit immediately afterward.

@replghost
replghost requested a review from pgherveou August 7, 2026 23:40
@replghost

Copy link
Copy Markdown
Contributor Author

@pgherveou CI is now fully green at ccf3b5c07db99b6a46f802baa8b189e0f658780c after restoring product-scoped follow aliases and satisfying nightly clippy/format. Auto-merge is enabled; please approve when the RFC-0024 integration looks good.

@filvecchiato

Copy link
Copy Markdown
Collaborator

Quick Update on this: on protocol implementation it all looks good. I am finding some timeouts in the battery tests using the signing host, that are not present in #348

This branch forked before chain.get_chain_info landed on main claiming
request id 166, so the three RFC-0024 account methods were allocated the
same id. Shift them to 168/170/172 and leave 166 free for the chain
method arriving on merge.

Regenerates the server wire table and updates the codegen golden.
Chain the two follow-alias resolvers in chain_runtime so a product-scoped
alias resolves against pending intents and awaits setup before binding to
the transport follow. Point the getAccountAlias example at
chain.getChainInfo, and reach the platform through RuntimeServices in the
ring VRF paths. Wire ids: chain.getChainInfo 166, ring VRF 168/170/172.
@filvecchiato
filvecchiato requested review from a team and valentinfernandez1 August 10, 2026 17:46
Comment thread rust/crates/truapi-server/src/chain_runtime.rs
Comment thread rust/crates/truapi-server/src/runtime/signing_host/ring_vrf.rs
Resolve through the connection's sticky alias binding first, so pending
intents only cover a request that beats follow setup. A second follow on
a chain made the intent lookup ambiguous and failed every aliased
operation on it.
@filvecchiato
filvecchiato requested a review from TarikGul August 11, 2026 06:46
filvecchiato added a commit that referenced this pull request Aug 11, 2026
Funding claimed 168-179, which collides head-on with the ring VRF key
management methods landing in #360 (168-173). The RFC justified starting
at 168 on the basis that #335 held 166-167; those are actually held by
Chain::get_chain_info, so the rationale was wrong independently of the
collision.

Funding now takes 176-187, leaving 168-173 for #360 and 174-175 for #335.
The id-allocation paragraph names the real holders of each preceding
block.
@filvecchiato
filvecchiato removed the request for review from pgherveou August 11, 2026 13:01
@filvecchiato filvecchiato mentioned this pull request Aug 11, 2026
4 tasks

@TarikGul TarikGul left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

🚀

@filvecchiato
filvecchiato disabled auto-merge August 11, 2026 13:32
@filvecchiato
filvecchiato enabled auto-merge August 11, 2026 13:32
@filvecchiato
filvecchiato removed the request for review from valentinfernandez1 August 11, 2026 13:32
@filvecchiato

Copy link
Copy Markdown
Collaborator

@valentunn @johnthecat @ERussel could I please get a check to get this merged?

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.

5 participants