Tokenization
Secure-Mint registry.
Tokenized RWAs require that on-chain circulating supply never exceeds the off-chain attested reserve. Tenzro enforces the invariant at the protocol layer via
tenzro-vm::secure_mint: tokens with a registered policy are gated by circulating + amount ≤ reserve plus an attestation freshness window. Tokens without a policy are unaffected.- STATUS
- Testnet
- CRATE
- tenzro-vm::secure_mint
- PRECOMPILE
- 0x0000…00001024
- TYPE
- Component
01
Per-token policy
SecureMintPolicy {
asset_id: String, // CAIP-19
reserve: u128,
circulating: u128,
por_feed_id: String, // e.g. chainlink:<feed_addr> or tenzro:<did>
attester_did: String,
attestation_hash: Hash,
attested_at: u64,
ttl_secs: u64, // 0 disables freshness check
}02
Invariant
check_and_mint(token, amount, now)
// 1. policy must exist
// 2. now - attested_at <= ttl_secs (if ttl_secs > 0)
// 3. circulating + amount <= reserve
// -> atomically increments circulating, returns updated policy03
Tokenized-equity sidecar
TokenizedEquityProfile {
cct_pool_address: Option<Address>,
por_feed_id: String,
underlying_caip19: String,
isin: String,
cusip: String,
per_share_ratio: (u128, u128),
last_corporate_action: Option<Hash>,
}
// Stored alongside the policy for xStocks-class assets so corporate
// actions (dividends, splits, re-symbolization) can be applied
// atomically by the multi-VM token layer.04
Writes
tenzro_setSecureMintPolicy {
token, asset_id, reserve, circulating?, por_feed_id,
attester_did, attestation_hash, attested_at, ttl_secs
}
tenzro_clearSecureMintPolicy { token }
tenzro_secureMintApply { token, amount } // atomic increment
tenzro_secureMintRecordBurn { token, amount } // saturating decrement05
Reads
tenzro_getSecureMintPolicy { token }
tenzro_secureMintCheck { token, amount } // would the mint succeed?Related