Assets → burn events

VLBurn

Canonical destruction for VLMint-managed wrappers and configured native VOW, with burn receipts for conversion handlers.

What VLBurn is for.

Canonical destruction for VLMint-managed wrappers and configured native VOW, with burn receipts for conversion handlers.

VLMint fixes managed-token burn disposition. Governance configures native VOW and subscribers; callers approve VOW before it is pulled and irreversibly burned.

How it fits together.

  1. VLMint creates the token with immutable burn-only or burn-for-target disposition; governance enables its wrapper in VLBurn.
  2. A holder burns explicitly, or an authorized observer records a confirmed ERC-20 arrival. Burn-for-target assets must select a registered post-burn handler.
  3. VLBurn destroys the wrapper and escrowed canonical balance, emits the configured target token ID, and invokes the required handler plus governed subscribers.

Declared public interface.

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

registryName() returns (string memory)Read

Returns the human-readable name used for contract registration.

setObserver(address observer, bool enabled)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

setToken(address token, bool enabled)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

setNativeVow(address vow)Transaction · onlyOwner

Updates the named protocol configuration value or permission.

registerPostBurn(address token, bytes4 selector) returns (uint256 postBurnId)Transaction

Registers the supplied account, relationship, or event subscription.

setPostBurnEnabled(uint256 postBurnId, bool enabled)Transaction

Updates the named protocol configuration value or permission.

setSubscribed(uint256 postBurnId, bool subscribed)Transaction

Updates the named protocol configuration value or permission.

registerCoinSubscription(address token, bytes4 selector) returns (uint256 postBurnId)Transaction

Registers the supplied account, relationship, or event subscription.

subscriptionCount() returns (uint256)Read

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

burn(address token, uint256 amount, uint256 postBurnId, bytes calldata data) returns (bytes32 burnId)Transaction

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

burnNativeVow(uint256 amount, uint256 postBurnId, bytes calldata data) returns (bytes32 burnId)Transaction

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

recordERC20Transfer(bytes32 transactionHash, address token, address account, uint256 amount, uint256 postBurnId, bytes calldata data) returns (bytes32 burnId)Transaction

Records and burns a confirmed, previously unattributed ERC-20 arrival through an authorized observer.

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

Handles an ERC-777 token-receipt callback.

onERC1155Received(address, address from, uint256 tokenId, uint256 amount, bytes memory data) returns (bytes4)Transaction

Burns a received canonical VLMint balance and applies its configured disposition.

onERC1155BatchReceived(address, address from, uint256[] memory tokenIds, uint256[] memory amounts, bytes memory data) returns (bytes4)Transaction

Burns a batch of received canonical VLMint balances and applies each configured disposition.

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 burn = at(VL_BURN, [
  "function burnNativeVow(uint256,uint256,bytes) returns (bytes32)"
], true);
await vow.approve(VL_BURN, amount);
await (await burn.burnNativeVow(amount, postBurnId, callbackData)).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.