#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.