Collateral → currency

VLIssuance

Collateralized VCurrency issuance positions and reserve controls.

What VLIssuance is for.

Collateralized VCurrency issuance positions and reserve controls.

Configured issuers issue against VOW collateral; governance controls issuers and reserve policy.

How it fits together.

  1. An approved issuer requests a quote for an amount and reserve ratio.
  2. VLIssuance locks the required VOW and records the position.
  3. It asks VLNotary to certify the discount mint for VLMint; later consumption burns wrapped value and releases collateral.

Declared public interface.

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

initialize(address voting_, address bootstrapAdmin_, address vow_, address acceptedUsdToken_, address router_, address pricing_, uint16 minimumReserveBps_)Transaction

Initializes the deployed contract and its required dependencies.

setFactory(address factory, bool enabled)Transaction · onlyVotingOrBootstrap

Updates the named protocol configuration value or permission.

registerIssuer(address issuer, address vcurrency)Transaction

Registers the supplied account, relationship, or event subscription.

registerBootstrapIssuer(address issuer, address vcurrency)Transaction

Registers the supplied account, relationship, or event subscription.

setIssuer(address issuer, address vcurrency, bool enabled)Transaction · onlyVoting

Updates the named protocol configuration value or permission.

finalizeBootstrap()Transaction

Executes the finalize bootstrap operation.

setNotary(address notary_, uint256 subscriptionId)Transaction · onlyVotingOrBootstrap

Updates the named protocol configuration value or permission.

registryName() returns (string memory)Read

Returns the human-readable name used for contract registration.

quote(address issuer, uint256 vcurrencyAmount, uint16 reserve) returns (uint256 vowAmount)Read

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

issue(address stakeOwner, address fundingAccount, address recipient, uint256 vcurrencyAmount, uint16 reserve) returns (uint256 vowAmount)Transaction

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

issueBootstrap(address stakeOwner, address fundingAccount, address recipient, uint256 vowAmount, uint256 vcurrencyAmount)Transaction

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

consume(address stakeOwner, uint256 amount) returns (uint256 vowReturned, uint256 burned, uint256 remainder)Transaction

Consumes or destroys the specified value under the contract's authorization rules.

release(address stakeOwner, address recipient) returns (uint256 vowAmount, uint256 mintedAmount)Transaction

Removes or releases the specified record, permission, or held value.

position(address issuer, address stakeOwner) returns (Position memory)Read

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

setMinimumReserveBps(uint16 reserve)Transaction · onlyVoting

Updates the named protocol configuration value or permission.

setVowRateTolerance(uint256 tolerance)Transaction · onlyVoting

Updates the named protocol configuration value or permission.

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 issuance = at(ISSUANCE, [
  "function quote(address,uint256,uint16) view returns (uint256)",
  "function position(address,address) view returns ((uint256,uint256))"
]);
console.log(await issuance.quote(issuer, parseUnits("100", 6), 2_000));

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.