6.3 KiB
6.3 KiB
Changelog — nu-node
All notable changes to this project will be documented in this file. Format: Keep a Changelog
[Unreleased]
[0.9.0] — 2026-04-24
Added
nu_listValidatorsRPC handler — tüm validatörleri döner;params[0] = trueile yalnızca aktifler filtrelenir
[0.8.0] — 2026-04-24
Added
--p2p-api <url>CLI flag — nu-p2p publish API adresi; verildiğinde P2P forwarding loop aktif olurreqwestHTTP client ile nu-p2p/publishendpoint'ineBlockAnnounceveTxGossipmesajları iletilirnu-node↔nu-p2pentegrasyonu tamamlandı: block loop ürettiği her blok için announce, RPC üzerinden kabul edilen her tx için gossip gönderir
Changed
--p2p-addr/--bootstrapflag'leri kaldırıldı; yerini--p2p-apialdı (process sınırı korunuyor, nu-p2p ayrı process olarak çalışıyor)
[0.7.0] — 2026-04-24
Added
nu-vm/executor.rs—execute_nft_transfer: sahiplik + koleksiyon kontrolü, owner güncelleme, hesap nft_ids syncnu-vm/executor.rs—execute_collection_claim:validate_lineage()ile geçerli prefix-extension yolu doğrulama; tüm NFT'lerecollection_idatarnu-vm/engine.rs—NftTransferveCollectionClaimvaryantları bağlandı;NftMintkullanıcı tx'i değil (hata döner)
[0.6.0] — 2026-04-24
Added
block_loop.rs—BlockLoopConfig.dev_mode; rotation check: non-dev moddaslot_producer()çağrılır, sıra başka validatörde ise slot atlanırblock_loop.rs—load_validator_set(db): her slot başında"validator:"prefix'i taranarak canlıValidatorSetoluşturulurblock_loop.rs—update_validator_pon(db, address): dürüst blok sonrası PoN skoru veconsecutive_blocksgüncellenirnu-consensus/src/validator_set.rs—slot_producer(),update(),get(),active_count(),Defaultimpl;schedule()filtresineis_banned()eklendinu-rpc/src/handlers.rs—nu_getValidator: verilen adres içinValidatorStatedöner, kayıt yoksa null
[0.5.0] — 2026-04-24
Added
nu-consensus/src/slashing.rs—slash_double_sign(%10 stake, PoN→0.5, 30 slot ban),slash_invalid_block(%5 stake, PoN→0.7),record_skip/record_block,try_unbannu-consensus/src/types.rs—ValidatorRecord'askip_count,ban_until_slotalanları;MIN_VALIDATOR_STAKEShell cinsine güncellendi (1_000_000)nu-state/src/validator.rs—ValidatorStatestruct (on-chain validator kayıt)nu-state/src/db.rs—scan_prefix<T>— prefix ile tüm kayıtları iterate edernu-state/src/accessor.rs—get_nft/set_nft,get_validator/set_validatortrait metodlarınu-vm/executor.rs—execute_validator_register,execute_voting_open,execute_node_approve(NFT mint + ödül dağıtımı),execute_node_reject(entry fee yakım + stake unlock)block_loop.rs— her slot'tagenerate_scheduler_txsçalışır; Pending→VotingOpen ve VotingOpen→Approved/Rejected auto-tx'leri mempool'a eklenirDEV_WALLETenv variable desteği — hardcode kaldırıldı
[0.4.0] — 2026-04-24
Added
src/p2p.rs—P2pSenderveNodeP2pEvent(BlockAnnounce, TxGossip); block loop ve RPC handler'larının P2P event'i yayınlamasını sağlar--p2p-addrve--bootstrapCLI flag'leri — P2P etkinleştirildiğinde event channel başlatılırRpcServer::with_p2pconstructor — RPC katmanına P2P gossip sender enjekte edernu_sendRawTx: tx kabul edildiğinde raw bytes P2P gossip channel'ına iletilir
[0.3.0] — 2026-04-24
Added
nu-vm/executor.rs—execute_node_submit: validates entry fee (25 NUT), createsStoryNodeState { Pending }in RocksDB indexed bytemp_idnu-vm/executor.rs—execute_vote_register: validates node isVotingOpen, locks 10 NUT stake until vote endnu-vm/executor.rs—execute_vote_cast: computes weight as√(staked) × pon_score, appendsWeightedVoteto nodenu-vm/executor.rs—execute_stake_op: stake/unstake with balance and staked field updatesnu-state/accessor.rs—StateAccessorextended withget_account/set_account,get_node/get_node_by_temp/set_node,lock_stake/unlock_stake/add_nft/record_votenu-rpc/handlers.rs—nu_getBlock: reads"block:{height}"from RocksDB, returns serializedBlockor nullnu-vm/rewards.rs—SHELL_PER_NUT = 1_000,NUT_PER_NU = 100,NODE_REWARD_NUT = 100constants; currency hierarchy Shell → NUT → NU
[0.2.0] — 2026-04-24
Added
nu-vm/engine.rs—execute_block: runs all txs in a block againstStateDb;TokenTransferfully applied, other variants produce a "not implemented" receiptsrc/block_loop.rs— tokio task producing one block per slot (6 s) in dev mode; drains mempool, executes txs, removes successful ones, persists block to RocksDB--dev --validatorflags inmain.rstrigger block production loop on startup
Changed
StateAccessortrait:set_balance/inc_noncenow take&self(RocksDB provides interior mutability — no&mutrequired at the Rust level)StateDbwrapped inArc<Mutex<StateDb>>— block loop holds write lock per block, RPC holds read lock fornu_getAccountnu-vmnow depends onnu-block(was implicit via engine)
[0.1.0] — 2026-04-24
Added
nu_sendRawTx— decodes JSONRawTransaction, deduplicates bytx_id, inserts into mempool; returns{ tx_id }on successTxPayloadenum innu-block/types.rs— all variants withpriority_hint()TxPriorityderived fromTxPayloadinnu-mempool(Critical > High > Normal)nu-rpcaxum HTTP server onPOST /rpc— dispatches JSON-RPC 2.0 requestsnu_chainInfo— returnschain_idandnode_versionnu_getAccount— readsAccountStatefrom RocksDB; returns empty account for unknown addresses (zero balance, nonce 0)StateAccessortrait implemented onStateDb— canonical single source of truth for balance and nonce access--dev,--validator,--rpc-addr,--db-path,--chain-idCLI flags via clap- Rust workspace scaffold with six crates:
nu-consensus,nu-mempool,nu-state,nu-block,nu-rpc,nu-vm Dockerfile.dev— multi-stage Rust build (builder: rust:1.79-slim, runtime: debian:bookworm-slim)