Proof → claim

VLVerifier

Whitelisted proof providers verify evidence and initiate collateralized issuance.

What VLVerifier is for.

Whitelisted proof providers verify evidence and initiate collateralized issuance.

Only governance-whitelisted proof providers call verifyAndSettle. Customers can deposit or withdraw VOW collateral.

How it fits together.

  1. A customer deposits VOW collateral.
  2. An approved proof provider submits an evidence-backed claim.
  3. VLVerifier prices issuance through VLIssuance and forwards the verified claim for settlement.

Declared public interface.

These are the public and external methods declared directly by VLVerifier. Inherited token, ownership, and upgrade methods follow their respective standards.

initialize(address settlement_, address voting_, address publicIssuance_, address issuance_, address vow_)Transaction

Initializes the deployed contract and its required dependencies.

registryName() returns (string memory)Read

Returns the human-readable name used for contract registration.

setTransactionAuthority(address authority, address grantor)Transaction · onlyVoting

Updates the named protocol configuration value or permission.

isAuthorized(address provider) returns (bool)Read

Reads the requested contract state or calculated result without changing state.

stakingContract() returns (address)Read

Executes the staking contract operation.

depositVOW(uint256 amount)Transaction

Executes the deposit vow operation.

withdrawVOW(uint256 amount)Transaction

Executes the withdraw vow operation.

verifyAndSettle(VLTransactionTypes.Claim calldata claim, bytes calldata proof)Transaction

Executes the verify and settle operation.

tokensReceived(address, address from, address to, uint256 amount, bytes calldata, bytes calldata)Transaction

Handles an ERC-777 token-receipt callback.

Connect with ethers v6.

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 verifier = at(VERIFIER, [
  "function vowDepositOf(address) view returns (uint256)",
  "function depositVOW(uint256)"
], true);
console.log(await verifier.vowDepositOf(customer));
await (await verifier.depositVOW(parseUnits("100", 18))).wait();

Use the address for the chain you selected.

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.