Evidence → balances

VLMint

Canonical ERC-1155 balances and ERC-777 wrappers, with immutable burn-only or burn-for-target disposition selected when each token is created.

What VLMint is for.

Canonical ERC-1155 balances and ERC-777 wrappers, with immutable burn-only or burn-for-target disposition selected when each token is created.

The owner configures token definitions and their burn disposition. configureToken creates a burn-only asset; configureTokenBurnFor binds an asset to an existing target token. VLNotary callbacks remain the sole issuance path, and VLBurn enforces the stored target on destruction.

How it fits together.

  1. Governance creates each token as burn-only or binds it permanently to an already configured burn target.
  2. VLNotary certifies supported evidence and VLMint mints the canonical ERC-1155 balance once per receipt.
  3. Holders use ERC-777 wrappers for ERC-20 integrations; VLBurn consults VLMint's immutable disposition whenever those units are destroyed.

Declared public interface.

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

registryName() returns (string memory)Read

Returns the human-readable name used for contract registration.

configureToken(TokenClass tokenClass_, string calldata symbol, uint8 decimals_) returns (uint256 tokenId)Transaction · onlyOwner

Creates or refreshes a burn-only managed token definition.

configureToken(TokenClass tokenClass_, string calldata symbol, uint8 decimals_, string calldata iconURI) returns (uint256 tokenId)Transaction · onlyOwner

Creates or refreshes a burn-only managed token definition.

configureTokenBurnFor(TokenClass tokenClass_, string calldata symbol, uint8 decimals_, uint256 targetTokenId) returns (uint256 tokenId)Transaction · onlyOwner

Creates a managed token permanently bound to an existing burn target token ID.

configureTokenBurnFor(TokenClass tokenClass_, string calldata symbol, uint8 decimals_, uint256 targetTokenId, string calldata iconURI) returns (uint256 tokenId)Transaction · onlyOwner

Creates a managed token permanently bound to an existing burn target token ID.

setTokenIconURI(uint256 tokenId, string calldata iconURI)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

tokenIconData(uint256 tokenId) returns (string memory mimeType, bytes memory data)Read

Executes the token icon data operation.

setTokenIconData(uint256 tokenId, string calldata mimeType, bytes calldata data)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

subscribe(string calldata eventType, string calldata service, string calldata customerService, string calldata customerIdKey, string calldata amountKey, string calldata currencyKey, bool amountIsMinorUnits) returns (uint256 subscriptionId)Transaction · onlyOwner

Registers the supplied account, relationship, or event subscription.

setEscrowBurner(address burner, bool enabled)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

setServiceMintLimit(string calldata service, uint256 limitPerDay)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

setTokenManager(address manager, bool enabled)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

configureManagedToken(string calldata symbol) returns (uint256 tokenId)Transaction

Executes the configure managed token operation.

configureManagedToken(string calldata symbol, string calldata iconURI) returns (uint256 tokenId)Transaction

Executes the configure managed token operation.

registerManagedWrapper(address wrapper)Transaction

Registers the supplied account, relationship, or event subscription.

registerManagedWrapper(address wrapper, uint256 tokenId)Transaction

Registers the supplied account, relationship, or event subscription.

subscribeDiscount(string calldata service) returns (uint256 subscriptionId)Transaction · onlyOwner

Registers the supplied account, relationship, or event subscription.

subscribeVowCorp(string calldata service) returns (uint256 subscriptionId)Transaction · onlyOwner

Registers the supplied account, relationship, or event subscription.

subscribeBridge(string calldata service) returns (uint256 subscriptionId)Transaction · onlyOwner

Registers the supplied account, relationship, or event subscription.

subscribeStablecoinStake(string calldata service) returns (uint256 subscriptionId)Transaction · onlyOwner

Registers the supplied account, relationship, or event subscription.

onNotarizedDeposit(string calldata customerId, string calldata amount, string calldata currency)Transaction

Executes the on notarized deposit operation.

onNotarizedDiscount(string calldata customerId, string calldata amount, string calldata currency)Transaction

Executes the on notarized discount operation.

onNotarizedVowCorp(string calldata customerId, string calldata amount, string calldata currency)Transaction

Executes the on notarized vow corp operation.

onNotarizedBridge(string calldata recipient, string calldata amount, string calldata tokenClassValue, string calldata symbol)Transaction

Executes the on notarized bridge operation.

onNotarizedStablecoinStake(string calldata customerId, string calldata amount, string calldata currency)Transaction

Executes the on notarized stablecoin stake operation.

burnEscrowed(uint256 tokenId, uint256 amount)Transaction

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

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 mint = at(VL_MINT, [
  "function balanceOf(address,uint256) view returns (uint256)",
  "function burnTargetFor(uint256) view returns (uint256)"
]);
console.log(await mint.balanceOf(customer, tokenId));
console.log(await mint.burnTargetFor(tokenId));

const wrapper = at(TOKEN_WRAPPER, [
  "function wrap(uint256)",
  "function unwrap(uint256)"
], true);
await (await wrapper.wrap(parseUnits("25", 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.