VLRegistry
Names and public account discovery.
Names → accountsRead the guide →On-chain products
VowLabs contracts separate naming, governance, authority, verification, settlement, issuance, pricing, and cross-system evidence. Select a contract for its focused guide; use this page for the conventions they share.
Contract catalogue
Each page documents its specific integration surface, authority requirements, and Node.js usage. Deployed addresses always come from your selected network’s manifest or registry.
Names and public account discovery.
Names → accountsRead the guide →Stake-weighted community governance.
Community → authorityRead the guide →Verifier role resolution.
Roles → authorityRead the guide →Proof-provider verification boundary.
Proof → claimRead the guide →Global claim replay protection.
Claim → releaseRead the guide →Controlled reward distribution.
Funds → rewardRead the guide →Collateralized issuance positions.
Collateral → issuanceRead the guide →One-way stablecoin reserves and notarized Ramp issuance.
Stablecoin → RampRead the guide →Governed market quotations.
Markets → ratesRead the guide →Managed-token destruction and notifications.
Assets → burn eventsRead the guide →Privacy-filtered webhook evidence.
Webhook → evidenceRead the guide →Canonical multi-token balances and ERC-777 wrappers.
Evidence → balancesRead the guide →Every VLMint asset across supported chains.
Assets → chainsRead the guide →Quick start
Examples use ethers v6 and only the ABI fragments they call. Resolve the deployed address from the manifest or registry for the target chain; state-changing calls must be signed by the authority each contract specifies.
import { Contract, JsonRpcProvider, Wallet } from "ethers";
const provider = new JsonRpcProvider(process.env.RPC_URL);
const signer = new Wallet(process.env.SIGNER_PRIVATE_KEY, provider);
const at = (address, abi, writable = false) =>
new Contract(address, abi, writable ? signer : provider);Authority model
Reads, registration where permitted, swaps, and governance voting are available to ordinary accounts under each contract’s conditions.
VLVoting controls upgrades and protocol configuration through executed proposals. Do not invoke voting-only methods directly from an EOA.
Relays, verifiers, issuers, and distribution wallets have narrow permissions. One service role should not confer unrelated authority.
Addresses and safety
Never copy an address from an example or a different network. Confirm chain ID, contract address, code, and the required role before sending a write. Treat event payloads as input to validate, not as authorization by themselves.
const network = await provider.getNetwork();
if (network.chainId !== EXPECTED_CHAIN_ID) throw new Error("wrong network");
const code = await provider.getCode(CONTRACT_ADDRESS);
if (code === "0x") throw new Error("no contract at configured address");
const registry = at(REGISTRY, ["function resolveName(string) view returns ((string,bytes32,address,uint256,address,bool,uint256))"]);
const record = await registry.resolveName("priceedge.me");
console.log(record.account);