commit_crv3_mechanism_weights
Call v320 → current #117Commits weights using CRV3 (commit-reveal v3) mechanism .
View calls on chainCall Workflow
Click items to navigate. Pan and zoom to explore.
The Big Picture
CRV3 (Commit-Reveal Version 3) is an enhanced commit-reveal protocol with additional protections against weight manipulation and copying. Subnets that enable CRV3 require validators to use this call instead of standard commit_weights. The protocol may include additional cryptographic commitments, timing constraints, or verification steps.
Why This Matters
Standard commit-reveal prevents seeing weights before reveal. CRV3 adds more protections - potentially against timing attacks, partial information leakage, or coordinated manipulation. If your subnet uses CRV3, you must use this call to participate in consensus.
Example Scenario
Subnet 42 has enabled CRV3 for enhanced security. After evaluating miners, prepare a CRV3-compatible commitment (format depends on implementation). Call commit_crv3_mechanism_weights(netuid=42, commit=crv3_hash). The chain stores your CRV3 commit. Follow subnet documentation for reveal timing and procedure.
Common Questions
- What's different about CRV3?
- Implementation-specific, but typically: stronger cryptographic commitments, different timing windows, additional verification layers. Check subnet documentation for details.
- Can I use regular commit_weights on a CRV3 subnet?
- No - if the subnet requires CRV3, standard commits will be rejected. Use the mechanism-specific call required by the subnet.
- How do I know if a subnet uses CRV3?
- Check the subnet's parameters (CommitRevealMechanism or similar). Subnet documentation should specify which commit-reveal variant is required.
Use Cases
- Participate in subnets using CRV3 consensus mechanism
- Submit weights with enhanced anti-copying protections
- Advanced validators optimizing for CRV3-specific features
- Subnets requiring higher security weight submission
From Chain Metadata
- Used to commit encrypted commit-reveal v3 weight values to later be revealed.
Input Parameters
| # | Name | Type | Description |
|---|---|---|---|
| 0 | netuid | u16 NetUid | netuid: Subnet ID (u16, 0-65535) |
| 1 | mecid | u8 MechId | mecid: Mechanism identifier |
| 2 | commit | BoundedVec BoundedVec<u8, ConstU32<MAX_CRV3_COMMIT_SIZE_BYTES>> | commit (BoundedVec) |
| 3 | reveal_round | u64 | reveal_round (u64) |
Permissions
Permission data inferred from metadata. May be incomplete.
Requirements
- CRV3 enabled on subnet
- Validator registered with sufficient stake
- Valid CRV3 commitment format
Effects
Events Emitted
Storage Modified
Postconditions
- CRV3 commit stored
- Mechanism-specific metadata recorded
Side Effects
- Uses enhanced commit-reveal protocol
- May have different timing requirements than standard commit-reveal
Possible Errors
Code Examples
// ----------------------------------------------------------------------
// HEADS UP: 1 arg below has a complex type with no usable default.
// Look for `undefined as any` and replace it with real value
// before running — the snippet compiles, but will fail at runtime as-is.
// ----------------------------------------------------------------------
import { createClient, Binary } from "polkadot-api";
import { getWsProvider } from "polkadot-api/ws";
import { sub } from "@polkadot-api/descriptors"; // generated by: npx papi add sub -w wss://entrypoint-finney.opentensor.ai:443
const client = createClient(getWsProvider("wss://entrypoint-finney.opentensor.ai:443"));
const api = client.getTypedApi(sub);
// Build commit_crv3_mechanism_weights call (typed, named args)
const netuid = 1;
const mecid = 0;
const commit = undefined as any /* BoundedVec — replace with real value */;
const reveal_round = 0n;
const tx = api.tx.SubtensorModule.commit_crv3_mechanism_weights({
netuid,
mecid,
commit,
reveal_round,
});Runtime Info
View Source- Pallet Index
- 7
- Call Index
- 117
- First Version
- v320
- Current Version
- v411