A Soroban smart contract for minting, owning, and transferring digital art NFTs on Stellar. No wrapped assets, no off-chain bookkeeping — ownership, transfers, and metadata are enforced directly by the contract.
Most "NFTs" on Stellar today are just Stellar Classic assets with a metadata convention layered on top — there's no contract enforcing who actually owns what. OrbitNFT implements real on-chain ownership using Soroban: minting, transfers, and metadata reads all go through contract logic, not asset issuer trust.
- Rust / Soroban SDK 21
- Stellar Testnet
Live on Stellar Testnet.
Contract ID: CBU7UVJM7FAXB7AHCDMTKVJSUEE3PVTV2ROFOKO2P3IC4IKRTB45IHFA
Explorer: https://stellar.expert/explorer/testnet/contract/CBU7UVJM7FAXB7AHCDMTKVJSUEE3PVTV2ROFOKO2P3IC4IKRTB45IHFA
First mint (Token #0):
- Tx: https://stellar.expert/explorer/testnet/tx/8f82bca40538570bd1bbc13a3f325d4d018294a7bc66ea39000e384317bfd0f4
- Owner:
GBXEX2HCVWAG7JMCZIDZCEDFMQVLE6VZJ2LVIYACNO4CQQEHTUWDOOOJ
| Function | Description |
|---|---|
mint |
Mint a new NFT to an address with metadata |
owner_of |
Get the current owner of a token |
token_metadata |
Get name/description/image for a token |
transfer |
Transfer ownership of a token |
total_supply |
Get total tokens minted |
Requires Rust, the wasm32v1-none target, and the Stellar CLI.
sudo apt update
sudo apt install -y libdbus-1-dev libudev-dev pkg-config
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
source $HOME/.cargo/env
rustup target add wasm32v1-none
cargo install --locked stellar-clistellar contract buildcargo teststellar contract deploy \
--wasm target/wasm32v1-none/release/nft.wasm \
--source <your-account> \
--network testnetcontracts/nft/
├── Cargo.toml
└── src/
├── lib.rs # contract entry points (mint, transfer, owner_of, etc.)
└── test.rs # unit tests
See CONTRIBUTING.md.