Purpose
What VLRegistry is for.
Public, cross-chain account naming and contract discovery.
Anyone may resolve names. EOA registration needs the named account's signature; upgrades and lifecycle policy are owner-controlled.
Names → accounts
Public, cross-chain account naming and contract discovery.
Purpose
Public, cross-chain account naming and contract discovery.
Anyone may resolve names. EOA registration needs the named account's signature; upgrades and lifecycle policy are owner-controlled.
Basic workflow
Methods
These are the public and external methods declared directly by VLRegistry. Inherited token, ownership, and upgrade methods follow their respective standards.
initialize()TransactionInitializes the deployed contract and its required dependencies.
registryName() returns (string memory)ReadReturns the human-readable name used for contract registration.
registerAddress(string calldata name, address account, bytes calldata signature) returns (bytes32 nameHash)TransactionRegisters the supplied account, relationship, or event subscription.
registerAddress(string calldata name, address account, uint256 accountChainId, bytes calldata signature) returns (bytes32 nameHash)TransactionRegisters the supplied account, relationship, or event subscription.
registerAddressWithAttributes(string calldata name, address account, AttributeInput[] calldata attributes, bytes calldata signature) returns (bytes32 nameHash)TransactionRegisters the supplied account, relationship, or event subscription.
registerContract(address account) returns (bytes32 nameHash)TransactionRegisters the supplied account, relationship, or event subscription.
updateNameAddress(string calldata name, address account, bool contractAccount) returns (bytes32 nameHash)Transaction · onlyOwnerExecutes the update name address operation.
updateNameAddress(string calldata name, address account, uint256 accountChainId, bool contractAccount) returns (bytes32 nameHash)Transaction · onlyOwnerExecutes the update name address operation.
deleteName(string calldata name) returns (address account)Transaction · onlyOwnerRemoves or releases the specified record, permission, or held value.
releaseName(string calldata name) returns (address account)TransactionRemoves or releases the specified record, permission, or held value.
setInactivityPeriod(uint256 nextInactivityPeriod)Transaction · onlyOwnerUpdates the named protocol configuration value or permission.
inactivityPeriod() returns (uint256)ReadExecutes the inactivity period operation.
markAbandoned(string calldata name) returns (bytes32 nameHash)Transaction · onlyOwnerExecutes the mark abandoned operation.
reactivateName(string calldata name, address account, bytes calldata signature) returns (bytes32 nameHash)TransactionExecutes the reactivate name operation.
resolveName(string calldata name) returns (Registration memory)ReadReads the requested contract state or calculated result without changing state.
resolveContract(bytes32 key) returns (address account)ReadReads the requested contract state or calculated result without changing state.
requireContract(bytes32 key) returns (address account)ReadExecutes the require contract operation.
resolveAddress(address account) returns (Registration memory)ReadReads the requested contract state or calculated result without changing state.
resolveAddress(address account, uint256 accountChainId) returns (Registration memory)ReadReads the requested contract state or calculated result without changing state.
isNameRegistered(string calldata name) returns (bool)ReadReads the requested contract state or calculated result without changing state.
nameLifecycle(string calldata name) returns (NameLifecycle memory)ReadExecutes the name lifecycle operation.
isNameAvailable(string calldata name) returns (bool)ReadReads the requested contract state or calculated result without changing state.
setAccountAttribute(bytes32 keyHash, bytes calldata keyData, bytes calldata valueData, bool privateAttribute)TransactionUpdates the named protocol configuration value or permission.
deleteAccountAttribute(bytes32 keyHash)TransactionRemoves or releases the specified record, permission, or held value.
accountAttribute(address account, bytes32 keyHash) returns (AccountAttribute memory)ReadExecutes the account attribute operation.
accountAttributes(address account) returns (AccountAttribute[] memory records)ReadExecutes the account attributes operation.
findAccountsByAttribute(bytes32 keyHash, bytes32 valueHash, uint256 offset, uint256 limit) returns (address[] memory accounts)ReadReads the requested contract state or calculated result without changing state.
accountCountByAttribute(bytes32 keyHash, bytes32 valueHash) returns (uint256)ReadReads the requested contract state or calculated result without changing state.
registrationDigest(string memory name, address account) returns (bytes32)ReadExecutes the registration digest operation.
registrationDigest(string memory name, address account, uint256 accountChainId) returns (bytes32)ReadExecutes the registration digest operation.
registrationWithAttributesDigest(string memory name, address account, AttributeInput[] memory attributes) returns (bytes32)ReadExecutes the registration with attributes digest operation.
reactivationDigest(string memory name, address account, uint256 epoch) returns (bytes32)ReadExecutes the reactivation digest operation.
Node.js
import { Contract, JsonRpcProvider, Wallet, encodeBytes32String, parseUnits } 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);
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, record.chainId);Deployment
Read the deployment manifest or resolve the configured registry entry for the target network. Test on a local or test network before using a privileged signer. See the contract source and contract index for the full interface.