Move-Invoke is an innovative blockchain protocol that enables seamless tokenization and transfer of physical assets on the Stacks blockchain. By creating a dynamic bridge between tangible assets and digital representations, the platform revolutionizes ownership models, enabling fractional investment and fluid asset mobility for real-world items like real estate, precious metals, art, and commodities.
ChainMint provides a complete lifecycle management system for tokenized assets, including:
- Asset registration and verification
- Tokenization of verified assets
- Fractional ownership management
- Secure token transfers with compliance checks
- Asset retirement and emergency controls
The platform is built around a central smart contract that manages the entire asset lifecycle through various stages:
stateDiagram-v2
[*] --> Pending: Register Asset
Pending --> Verified: Verifier Approval
Pending --> Rejected: Verifier Rejection
Verified --> Tokenized: Tokenization
Tokenized --> Retired: Asset Retirement
Rejected --> [*]
Retired --> [*]
- Asset Registry: Tracks all registered assets and their current status
- Token Management: Handles the creation and transfer of asset tokens
- Verification System: Manages authorized verifiers and the asset verification process
- Compliance Engine: Ensures all transfers meet regulatory requirements
assets: Stores core asset information and statusasset-tokens: Contains tokenization details for each assettoken-balances: Tracks token ownershipauthorized-verifiers: Maintains list of approved verifiersasset-transfers: Records transfer history
- Contract Owner: Has administrative privileges
- Asset Owners: Can manage their registered assets
- Authorized Verifiers: Can verify assets
- Token Holders: Can transfer tokens within compliance limits
- Clarinet
- Stacks wallet
- API access to asset metadata storage
- Register an Asset
(contract-call? .chain-mint register-asset
"asset123"
"https://metadata.url/asset123"
"compliance-hash-123"
)- Verify an Asset
(contract-call? .chain-mint verify-asset
"asset123"
true
)- Tokenize an Asset
(contract-call? .chain-mint tokenize-asset
"asset123"
u1000000
u6
"https://token.uri/asset123"
)(register-asset asset-id metadata-url compliance-hash)Registers a new physical asset in the system.
(verify-asset asset-id approve)Verifies or rejects an asset (authorized verifiers only).
(tokenize-asset asset-id total-supply decimals token-uri)Creates tokens for a verified asset.
(transfer-tokens asset-id recipient amount)Transfers tokens between users with compliance checks.
(add-verifier verifier)Adds a new authorized verifier.
(emergency-reallocation asset-id new-owner)Emergency function for contract governance to transfer asset ownership securely.
Run the test suite using Clarinet:
clarinet test- Clone the repository
- Install dependencies
- Start Clarinet console:
clarinet console- Only authorized verifiers can approve assets
- Verification status cannot be reversed once approved
- Multiple verification steps recommended for high-value assets
- Built-in compliance checks for all transfers
- Balance verification before transfers
- Transfer history maintained for audit purposes
- Role-based access control for all sensitive operations
- Emergency controls limited to contract owner
- Asset operations restricted to verified owners
- Single contract owner
- Synchronous verification process
- Basic compliance checks (should be enhanced for production)