#dusk $DUSK LEGGIMI Licenza DRC20
DRC20 - Standard Pubblico Fungibile per DuskDS
Stato: Implementazione di riferimento / bozza: lo standard e l'interfaccia sono ancora aperti a feedback. Apri un issue (o PR) con suggerimenti, casi limite o preoccupazioni di compatibilità.
Un'implementazione di riferimento minima di un token fungibile simile a ERC20 per la rete DuskDS.
Struttura del repository#Listing
contract/ — il contratto DRC20 in catena (WASM)
types/ — tipi condivisi (account, argomenti delle chiamate, eventi, stringhe di errore)
data-driver/ — data-driver compilato in *_driver_opt.wasm per strumenti SDK browser
web/ — interfaccia minima per l'amministrazione/gestione (connessione + lettura + invio transazioni)
Interfaccia
Viste#dusk
name() -> String
symbol() -> String
decimals() -> u8
total_supply() -> u64
balance_of(BalanceOf) -> u64
allowance(Allowance) -> u64
Stato modificato
transfer(TransferCall)
approve(ApproveCall)
transfer_from(TransferFromCall)
Eventi
transfer (events::Transfer)
approval (events::Approval)
Costruzione
Prerequisiti
Toolchain Rust fissata in rust-toolchain.toml
target WASM:
rustup target add wasm32-unknown-unknown
jq è utilizzato dai Makefiles (analisi di cargo metadata).
Opzionale: wasm-opt (da Binaryen) per output ottimizzati.
1) Costruisci il WASM del contratto
make wasm-opt # output: target/wasm32-unknown-unknown/release/drc20_opt.wasm
2) Costruisci il WASM del data-driver (browser)
make data-driver-js # output: target/wasm32-unknown-unknown/release/drc20_driver_opt.wasm
Copia il file nell'app web:
cp target/wasm32-unknown-unknown/release/drc20_driver_opt.wasm web/public/data_driver.wasm
3) Avvia l'interfaccia web di gestione
cd web
npm i
npm run dev
Apri:
http://localhost:5173/?network=testnet&contractId=0xIL_TUO_ID_CONTRATTO_32B
Override opzionali:
&nodeUrl=https://testnet.nodes.dusk.network&driverUrl=/data_driver.wasm
Distribuzione
1) Prepara gli argomenti del costruttore (Init)
Questo repository richiede un init.json nella root del repository che descriva la distribuzione iniziale.
init.json è ignorato da git (quindi puoi tenere in sicurezza indirizzi locali / configurazioni fuori dal controllo di versione).
example.init.json è incluso come punto di partenza.
