ERC-7518 defines a common interface for real-world and regulated assets that need multiple classes or partitions, transfer validation, locked balances, address controls, recovery, payouts, and token wrapping.
Each ERC-1155 tokenId is a partition with its own balances and rules. Keep familiar ERC-1155 accounting; add a standardized control surface for the whole asset lifecycle.
Reviewing the ERC? Discuss ERC-7518 on Ethereum Magicians
Multi-token accounting stays the same. ERC-7518 layers a policy-aware control surface for the lifecycle of a regulated or structured asset.
Use a tokenId as the fundamental partition, a share class, series, jurisdiction, tranche, or property unit. Units are fungible within a partition and distinct across partitions.
balanceOf(account, id)Preflight a state-changing transfer against contract state, issuer policy, on-chain registries, oracle results, or an application-defined signed voucher supplied in data.
canTransfer(from, to, id, amount, data)Read total balance alongside locked and transferable amounts. Apply holding periods, vesting, and time-based restrictions without leaving the ledger.
lockedBalanceOftransferableBalancelockTokensunlockTokenPartition restrictions, address freezing, and authorized forced transfers for lifecycle events that general-purpose bearer tokens do not standardize.
restrictTransferfreezeAddressforceTransferStandardized distribution calls for interest, dividends, or rental income. Implementations define the payment asset, authorization, accounting, and failure behavior.
payout(to, amount)batchPayout(to[], amount[])Lock an original asset, mint an ERC-7518 representation, and reverse it. Cross-chain deployment still needs bridge, messaging, custody, and replay protection outside the core standard.
wrapTokenwrapTokenFromPartitionunwrapTokenA real-world asset (RWA) is any off-chain instrument of value — private credit, a fund interest, a building, a treasury bill, an invoice, a carbon credit — represented on a blockchain as a token. Tokenizing it does not change what the asset is; it changes how ownership is issued, transferred, serviced, and settled.
Most of these assets are regulated. Who may hold them, how long they must be held, which jurisdictions they can move between, and who can force a recovery are not optional details — they are the asset. A plain bearer token cannot express any of that. ERC-7518 exists to give regulated RWAs a common on-chain control surface: partitions for share classes and series, transfer validation for eligibility, locked balances for holding periods, and administrative operations for the events that happen across an asset’s life. The commercial platform that implements this end to end is built by Zoniqx.
Represent a large, illiquid asset as many partitioned units, lowering minimums and opening distribution to a wider set of eligible investors.
partitionstokenIdEligibility, lock-ups, and transfer rules are enforced by the contract at execution rather than tracked in a spreadsheet after the fact.
canTransferrestrictTransferlockTokensIssuance, holder records, payouts, and reporting live in one system, reducing intermediaries and the reconciliation gaps between them.
payoutbatchPayoutA standardized interface lets the same asset be read, held, and moved across compliant wallets, custodians, indexers, and venues.
ERC-1155ERC-165wrapTokenFrom structuring an asset to settling a trade, in four stages. Zoniqx spans the full path — z360 for issuance and lifecycle, zConnect for distribution.
Define the asset, terms, documents, eligibility rules, and jurisdiction. Each share class, series, or tranche is assigned its own partition before anything is minted.
Mint on-chain with ERC-7518 lifecycle rules: partitioned balances, transfer validation, locked and transferable amounts, and the events indexers rely on.
Route the asset to eligible channels — broker-dealers, RIAs, wealth platforms, and vault strategies — where discovery stays open and compliance activates at execution.
Run payouts, notices, redemptions, freezes, recoveries, and corporate actions across the asset’s life, with settlement recorded on-chain.
Each maps cleanly onto ERC-7518 primitives. See how they run in production on the Zoniqx customer stories.
Note series, tranches, and maturities as partitions, with holding periods and scheduled payouts.
restrictionslockspayoutShort-duration government instruments and money-market strategies with eligibility-gated transfers.
partitionscanTransferOne contract per property; floors, units, or offering series as separate partitions of fractional interest.
partitionsbatchPayoutClass A, Class B, and institutional share classes as distinct partitions in a single fund contract.
eligibilitylocksLong-duration and project-finance assets with staged access and jurisdiction-aware distribution.
partition policyrecoveryRegistry-linked units where provenance, retirement, and transfer eligibility matter as much as balance.
canTransfereventsRead top to bottom. Each step builds on the one before it.
ERC-7518 requires ERC-1155 and ERC-165. Standard balances, approvals, transfers, and receiver checks remain the foundation.
The meaning and rights of a partition are defined by the issuer and its documentation. ERC-7518 provides the control interface, not a universal metadata schema for legal rights.
Before updating balances, the implementation evaluates whether sender, recipient, partition, amount, lock state, and supplied data satisfy its transfer policy.
Authorized roles may lock balances, restrict a partition, freeze an address, execute recovery transfers, or initiate payouts. The EIP requires the behavior; each implementation must define and secure its authorization model.
Indexers and operations systems monitor lock, unlock, freeze, restriction, forced-transfer, payout, and wrapping events alongside ERC-1155 transfer events.
The published ERC defines IERC7518 over ERC-1155 and ERC-165, plus IERC1155Wrapper. This page is an explanatory index. The EIP remains the normative source. Click any signature to copy it.
| Function | What developers use it for |
|---|---|
| transferableBalance(account, id)copy | Read the amount currently available to transfer. |
| lockedBalanceOf(account, id)copy | Read the locked amount for an account and partition. |
| canTransfer(from, to, id, amount, data)copy | Preflight the current transfer policy before submitting. |
| Function | What developers use it for |
|---|---|
| safeTransferFrom(from, to, id, value, data)copy | Transfer ERC-1155 units after the ERC-7518 policy check. |
| restrictTransfer(id)copy | Restrict transfers for a partition. |
| removeRestriction(id)copy | Remove a previously applied partition restriction. |
| lockTokens(account, id, amount, releaseTime)copy | Lock a quantity until a defined release time. |
| unlockToken(account, id)copy | Release an eligible locked balance. |
| Function | What developers use it for |
|---|---|
| freezeAddress(account, data)copy | Freeze an account under the implementation's policy. |
| unFreeze(account, data)copy | Remove the account freeze. |
| forceTransfer(from, to, id, amount, data)copy | Execute an authorized transfer outside the ordinary holder-initiated path. |
| payout(to, amount)copy | Deliver one payout. |
| batchPayout(to[], amount[])copy | Deliver multiple payouts in one operation. |
| setWrappedTokenAddress(token)copy | Configure the source token supported by the wrapper. |
| wrapToken(amount, data)copy | Lock a source token and mint its representation. |
| unwrapToken(wrappedTokenId, amount, data)copy | Burn the wrapped representation and release the source. |
TransferSingleTransferBatchThe primary balance-change events from ERC-1155.
TokensLockedTokenUnlockedSignal changes to locked-balance state.
AddressFrozenAddressUnfrozenTransferRestrictedTransferRestrictionRemovedTokensForceTransferredExpose administrative lifecycle actions.
PayoutDeliveredSupports payout reconciliation. Wrapper events expose source-token config and wrap/unwrap activity; reconcile with ERC-1155 mint and burn.
An ERC-7518 transfer is a policy decision followed by an ERC-1155 state transition. The key point: canTransfer is checked during execution, not only in the interface.
Identify sender, recipient, partition ID, amount, and any application-defined data.
A compliance service evaluates current policy and returns signed data scoped to the intended transfer.
canTransferCheck current contract state and supplied data before asking the user to submit.
safeTransferFromSame parties, partition, amount, and data. A previous read is not a guarantee: state may change before mining.
Eligibility is evaluated again during execution. On success, balances update and the transfer event is emitted.
Indexers, custodians, and issuer systems process the confirmed event. Treat reorgs and confirmation depth as integration concerns.
The public reference uses Solidity and Foundry. Use it to inspect contract flow, run experiments, and find gaps between the EIP and executable behavior.
# requires git + Foundry (forge, cast, anvil) git clone https://github.com/zoniqx/erc7518_reference.git cd erc7518_reference forge install forge build forge test -vvv
erc1155mod.sol: partition ledger; each tokenId carries balances, mint, burn, transfer.erc7518.sol: control surface, pre-transfer logic, wrapping / unwrapping.STObasev2.sol: example offering & settlement; app logic, not a required interface.Establish a baseline before changing anything.
Follow a single partition through the ledger.
Lock part of a holder's balance and compare total, locked, and transferable amounts.
Restrict a partition and confirm the transfer path fails; freeze an account and test send, receive, forced-transfer, and payout behavior.
Check reserve backing through wrap/unwrap, then compare observed behavior with the current EIP requirements.
A wallet needs safe transfer UX. A custodian needs controls and reconciliation. An indexer needs complete state reconstruction. A compliance service needs exact message binding and reliable authorization.
Show holders truthful, actionable balances, and never present total balance as fully spendable.
canTransfercanTransfer with exact valuesTreat each partition as its own asset and keep legal authority outside the token UI.
Reconstruct complete state: never infer transferable balance from the ERC-1155 balance alone.
TransferSingle / TransferBatch for balances and supplyDefine what each partition means, then map it to narrowly scoped, auditable permissions.
Bind every signature to the exact intent, chain, and contract, and never fail open.
ERC-7518 includes operations that can move, restrict, or release regulated assets. Compatibility requires more than compiling the interface.
Force transfer, freeze, locks, restrictions, payouts, and wrapper config can materially affect holders. Use least-privilege roles, protect keys, emit complete events, and consider multisig or delayed governance.
Every relevant route must enforce the same policy. Test single and batch, operator transfers, mint, burn, forced transfers, wrapping, and settlement paths separately.
Locked balances must never exceed total or drift after burns, forced transfers, merges, or wraps. Use invariant tests for total, locked, and transferable amounts.
Prevent replay across chains, contracts, users, partitions, amounts, and time. Validate signer authority at execution and document fail-open vs. fail-closed behavior.
Safe transfers, payouts, and wrapper flows can call external contracts. Apply checks-effects-interactions and reentrancy protection where appropriate.
Wrapped supply must remain consistent with locked reserves. Test fee-on-transfer tokens, callbacks, decimal conversion, partial unwraps, and recovery assumptions.
canTransferIdentifies the revision and supported interface.
States that code is based on the public reference repository.
Links to the exact suite, version, and results.
Audited links to a public report, scope, commit, and unresolved findings. Production links to verified addresses and the implementation version. Never use "compliant," "secure," or "audited" without defined scope and evidence.
Technical modeling patterns, not legal structures, and no guarantee that a given issuance satisfies regulation.
One contract per property. Each floor, unit, class, or series is a separate tokenId; units are fractional interests.
partitionslockscanTransferpayoutSeparate partition IDs represent different exemptions or holder categories, with explicit conversion into later partitions.
partition policyrestrictTransferlocksClass A, Class B, and institutional share classes as separate partitions in one contract.
partitionseligibilitybatchPayoutNote series, tranches, maturities, or closing cohorts map to partition IDs.
restrictionsholding periodspayoutrecoveryAn authorized role freezes an affected address and moves assets to an approved control address.
freezeAddressforceTransferunFreezeA source token is locked and represented as an ERC-7518 partition, then burned when released.
wrapTokenwrapTokenFromPartitionunwrapToken| Standard | Primary model | Relationship to ERC-7518 |
|---|---|---|
| ERC-165 | Interface detection | Required. Use it to detect supported interfaces. |
| ERC-1155 | Multi-token balances | Required base. ERC-7518 uses each token ID as a partition. |
| ERC-20 | Single fungible token | A source or destination representation handled through the wrapper. |
| ERC-721 | Non-fungible token | A source may be wrapped, subject to explicit mapping and backing. |
| ERC-1400 / 1410 | Security-token partitions | Design lineage; behavior is not automatically identical. |
| ERC-3643 | Permissioned token, identity-led | Complementary; the wrapper can reference another security-token contract. |
| ERC-7943 | Minimal universal RWA controls | Complementary. Claim only when the relevant interface is implemented and detected. |
ERC-7518 is a Standards Track ERC in Review. The published EIP is the current source of truth; review can lead to clarifications or interface changes, so identify the exact revision you follow.
Look for ambiguous signatures, missing state transitions, inconsistent event semantics, and behavior that cannot be implemented safely.
Build the reference repository and reduce any unexpected behavior to a reproducible test.
Try wallet preflight, custody reconciliation, indexer state reconstruction, compliance authorization, or wrapping. Document where the interface lacks information.
The EIP section or function · observed vs. expected behavior · a minimal example or test · integration or security impact · a concrete proposed clarification.
tokenId as a partition, which fits assets with multiple classes, series, tranches, jurisdictions, or fractional units.Zoniqx is a Silicon Valley tokenization-infrastructure company. Its contributors authored ERC-7518 (DyCIST) and released it to the Ethereum community under CC0. This site documents the open standard; Zoniqx builds the commercial platform that implements it end to end.
For issuers structuring real-world assets for compliant tokenization and ongoing operations.
The aggregation layer connecting tokenized supply to institutional distribution channels.
Networks, infrastructure providers, and platforms connected across the Zoniqx ecosystem.
PwC
Rubix
AWS
Coinbase
Ripple
XRP Ledger
Hedera
Chainlink
Midnight
Polygon
Cardano
Injective
LACChain
Stability
Serpro
Kima
Hifi
Changelly
Zodia
Palisade
DFNS
RimarkFigures, partnerships, and recognitions in this section are Zoniqx’s own and are point-in-time. ERC7518.org is an independent technical home for the open standard and does not endorse any commercial implementation. See zoniqx.com for current details.
Use these in order: the published EIP first, then active review, then the reference implementation, then this site.
Motivation, interfaces, required behavior, rationale, compatibility, and security considerations.
eips.ethereum.orgThe public forum for design questions and review feedback.
ethereum-magicians.orgExecutable reference maintained by Zoniqx. An implementation aid, not a substitute for the EIP or an audit.
github.com/zoniqxRepository instructions for issues, changes, testing, and responsible disclosure.
CONTRIBUTING.mdThe commercial TPaaS that implements ERC-7518 end to end — z360 for issuance and lifecycle, zConnect for distribution.
zoniqx.comStructure, tokenize, distribute, and service real-world assets across compliant institutional channels.
zoniqx.com/z-360ERC-7518 is being developed in public. The most useful contribution is reproducible technical feedback: an interface ambiguity, a failing test, an integration edge case, or a security concern.