Purpose: Provide five well‑scoped product ideas—each with a detailed PRD and on‑chain design—for developers who want to master the Move language on Aptos and Sui. These documents are intended as build guides, learning road‑maps, and reference specs.
- FlowStream – Continuous Payment Streaming Protocol
- Rentable – NFT Time‑Bound Rental Marketplace
- MoveDAO – Modular On‑Chain Governance & Treasury
- NodeStaker – DePIN Sensor Staking & Reward Module
- MoveBridge – Cross‑Network Liquidity & Message Bridge
move-flowstream-payments
Create an on‑chain protocol that lets users stream fungible tokens (APT, SUI, or any Move‑based asset) to recipients in real‑time, unlocking use‑cases such as payroll, subscriptions, and grant disbursement. Emphasize efficient resource handling and time‑based calculations.
Persona | Need | Example |
---|---|---|
Indie developer | Pay SaaS hosting per second | 0.01 APT/hr stream |
DAO treasurer | Continuous payroll | Pay contributors |
Investor | Vest seed tokens linearly | 1‑yr cliffless vesting |
- CreateStream: Sender defines
token
,rate_per_second
,start_time
,end_time
,recipient
. - WithdrawStreamed: Recipient may pull accrued amount at any time.
- CancelStream: Sender cancels; remaining balance refunds appropriately.
- TopUp: Anyone may add funds to an active stream.
- Pause/Resume (v2).
Module | Responsibility |
---|---|
flowstream::manager |
Entry points, authority checks |
flowstream::stream |
struct Stream { id, sender, recipient, token, rate, start, end, deposited, withdrawn } stored as a resource under sender’s account |
flowstream::utils |
Time math, safe division |
- Resource
Stream
– guarantees single writer (sender) viakey
ability. - Use event streams:
StreamCreated
,Withdraw
,Cancelled
. - Leverage Aptos Timestamp / Sui Clock oracle modules.
public entry fun create_stream<Currency>(
sender: &signer,
recipient: address,
rate: u64,
duration_secs: u64,
initial_deposit: u64
)
(full signature list continues)
Aspect | Aptos | Sui |
---|---|---|
Clock | 0x1::timestamp seconds‑precision |
0x3::clock ms‑precision |
Fee model | Gas units, parallel execution | Object‑centric, gas after effects |
Storage | Table handles | Object mappings |
- Total withdrawn ≤ deposited.
- One active stream ID per (sender, nonce).
- Reentrancy safe via Move’s single‑threaded execution.
create_stream
≤ 70k gas.withdraw_streamed
≤ 40k gas on median path.
- Owned by DAO;
upgrade_cap
stored in governance vault.
- Unit tests for edge times.
- Property test: Sum of balances constant.
- Integration: Faucet tokens on devnet, CLI demo script.
- Stream NFTs (transferable rights).
- Streaming with cliff + linear vest.
move-nft-rentable
Enable owners to lend NFTs for a fixed period while retaining ultimate ownership, unlocking in‑game asset rentals or paid access passes.
- Gamer: Rents rare sword for weekend tournament.
- Landlord: Lends metaverse land plot for advertising.
- ListForRent: Specify NFT object, daily price, max duration, collateral (optional).
- Rent: Renter pays upfront; receives time‑limited usage right (wrapped NFT).
- Auto‑Return: Contract‐enforced reclaim after expiry.
- Early Return & Refund: Unused days refunded minus fee.
Module | Summary |
---|---|
rentable::market |
Listing registry, price oracle integration |
rentable::wrapper |
Mints RentalNFT object with expires_at field |
rentable::admin |
Pause, fee config |
Resources:
Listing { owner, nft_id, price_per_day, max_duration }
RentalNFT { original_id, expires_at }
– object in Sui world.
Listed
, Rented
, Returned
, ExpiredAutoReturn
.
- Use object wrapping/unwrapping on Sui for automatic recall.
- On Aptos, represent leases via
Table<address, Lease>
and withdraw rights via capability token.
- Prevent double‑wrap.
- Validate metadata immutability.
- Time warp tests for expiry.
- Fuzz price calculations.
- Revenue‑sharing between lender & creator (royalties).
- Reputation scores for renters.
move-dao-governance-framework
Deliver a composable DAO framework (token‑weighted or NFT membership) with proposal modules, timelock, and asset treasury that can govern other Move modules via upgrade capabilities.
- Token: Optional governance token mint.
- Treasury: Holds multi‑asset vault.
- Governor: Creates & executes proposals.
- Strategy: Pluggable voting logic (Simple Majority, Quadratic, etc.).
Draft → Active → Succeeded → Queued (Timelock) → Executed / Vetoed
.
- Each DAO is a resource
DAO { id, config, treasury, governor_cap }
. - Delegation map
Table<address, u64>
for vote power.
- Sui’s dynamic fields suit delegation maps.
- Aptos’ multi‑agent txns enable proposal batching.
- Timelock cannot be bypassed.
- Voting period difference between chains.
- Upgrade authority stored inside DAO itself.
- CLI script to spin‑up a local DAO in 30 seconds.
- End‑to‑end governance flow.
move-depin-node-staker
Power decentralized physical network (e.g., air‑quality sensors) by letting node operators stake tokens that unlock data submission rights and earn emission rewards based on data proofs.
- Operator stakes tokens → receives
ValidatorCap
resource. - Submits signed data proof with epoch nonce.
- Epoch Rewards distributed proportionally to proof quality score.
- Slashing if invalid data or downtime.
staking::pool
– lock/unlock stake, epoch accounting.oracle::submit
– verify data signatures.rewards::distributor
– mint or transfer rewards.
- Use
vector
of epoch records insideStake
resource. - Implement slashing via burning stake resource.
- Aptos: Use on‑chain
ed25519
verify & event index. - Sui: Leverage Move events + off‑chain indexer for scoring.
- Stake TVL, data proofs per day, slash events.
- Practice capability tokens, epoch accounting, burn/mint patterns.
move-aptos-sui-bridge
Bridge fungible assets and arbitrary messages between Aptos and Sui testnets/mainnets using light‑client verification and relayer network.
- Lock & Mint: Lock tokens on source chain, mint wrapped tokens on destination.
- Burn & Release: Burn wrapped tokens to unlock originals.
- Generic Message Passing: Relay bytes payload with proof.
Module | Chain | Function |
---|---|---|
bridge::vault |
both | Escrow & release |
bridge::mint |
dest | Mint wrapped coin |
bridge::lightclient |
both | Verify headers & Merkle proofs |
- Use Merkle Accumulator from Move stdlib.
- Off‑chain relayers supply proof.
- 2‑of‑3 multisig of independent relayers initially.
- Upgrade to zk‑proof once prover available.
- Localnet docker compose for dual chains.
- Stress test with 10k tx batch.
- Cross‑chain data structures, signature verification, Merkle proofs.
move-etf-index-fund
Enable anyone to mint and redeem a single fungible token that represents a diversified basket of underlying Move‑based assets on Aptos or Sui—similar to an ETF. The protocol automatically rebalances holdings according to a chosen index methodology.
Persona | Need | Example |
---|---|---|
Retail user | Simple diversified exposure | Buy APT‑DeFi Index token |
DAO treasury | Park funds in low‑maintenance index | 30% APT, 40% stable, 30% RWA |
Portfolio manager | Offer branded index products | Launch "AI Infra Index" |
- MintShares: Deposit the precise proportion of each constituent asset to receive ETF shares.
- RedeemShares: Burn shares to withdraw underlying assets pro‑rata.
- Rebalance: Anyone can call with new weights; executes swaps via integrated DEX; incentivized via small fee rebate.
- FeeCollection: Streaming protocol fee (bps per second) flows to manager.
- Pause / Emergency Exit: Safety switches for extreme events.
Module | Responsibility |
---|---|
etf::vault |
Stores basket reserves, validates mint/redeem |
etf::share_token |
Implements ETF share as fungible Coin /Sui::coin::Coin |
etf::rebalance |
Weight oracle, DEX router calls |
etf::admin |
Set fees, approve new constituents |
Vault { id, constituents: vector<CoinType>, weights: vector<u64>, total_shares }
struct RebalanceRequest { new_weights, deadline }
event‑driven.
Aspect | Aptos | Sui |
---|---|---|
Share token | Standard Coin implementing store + key |
Native Sui::coin::Coin<T> object |
Rebalance execution | Multi‑agent txn calling aptoswap |
Object‑centric DEX call e.g. DeepBook |
Storage | On‑chain table of constituent reserves | Individual objects per asset held in vault |
- Vault reserve balance equals aggregate deposits minus withdrawals.
- No share inflation beyond
total_shares
. - Rebalance must conserve total value within slippage tolerance.
Mint
, Redeem
, RebalanceExecuted
, FeesCollected
.
- Property test: NAV before = NAV after ± slippage.
- Fuzz mint/redeem with random weights.
- Simulate oracle manipulation attempts.
mint_shares
≤ 80k gas.rebalance
linear inconstituents
; ≤ 200k gas for 10 assets.
- Practice complex resource accounting, DEX integration, oracle usage, and fee design.
- Pick one project that excites you.
- Use the Smart‑Contract Architecture section as a coding road‑map.
- Read the Aptos/Sui notes to understand chain‑specific tweaks.
- Write unit tests first; reference the Testing Plan.
- Iterate → Deploy to devnet → Seek feedback.
Happy building & mastering Move! 🚀