- NftTransfer: validates ownership, NFT not in collection, deducts fee,
updates owner field + nft_ids on sender/recipient accounts
- CollectionClaim: validates lineage with validate_lineage(), all NFTs
owned by sender and unclaimed; sets collection_id on all NFTs in path
- Engine: wire both variants; NftMint remains internal-only (returns error)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- nu-vm/engine.rs: execute_block runs all txs in a block against StateDb;
TokenTransfer fully applied, other variants return "not implemented" receipt
- StateAccessor trait: set_balance/inc_nonce now take &self (RocksDB interior mutability)
- src/block_loop.rs: tokio task that produces a block each slot (6s) in dev mode;
drains mempool, executes txs, removes successful ones, persists block to RocksDB
- StateDb wrapped in Arc<Mutex> — block loop holds write lock per block, RPC holds
read lock for nu_getAccount
- main.rs: spawns block_loop when --dev --validator flags are set
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>