Implementare uno Smart Contract con Parametri
1 - Introduzione
Questo tutorial é progettato per spiegare come implementare e invocare uno smart contract sulla blockchain NEO usando la GUI del desktop. Il tutorial é generico ed é appropriato per tutti i tipi di contratti inclusi i token NEP5. Questo tutorial parte dall'assunto che il contratto é giá stato compilato in un file .avm. Se non é ancora stato compilato, si prega di fare riferimento agli altri tutorial. Viene fornita una versione compilata del contratto e la fonte usata in questo tutorial.
2 - Risorse Utili
In questo tutorial sono utilizzate le seguenti risorse, che possono essere riferimenti utili nello sviluppo di uno smart contract:
3 - Codice SC
Questo documento utilizzerá il codice esempio fornito nell'esempio Woolong per seguire il tutorial. Per svago, questo contratto genererá 1 Woolong per ogni evento invocato.
L'esempio é stato implementato in un testnet e puó essere trovato con il seguente hash dello script:
dc675afc61a7c0f7b3d2682bf6e1d8ed865a0e5f
4 - Implementare uno Smart Contract con Parametri
- Per implementare uno smart contract (.avm) sulla blockchain, clicca sull'opzione menu Advanced sul wallet desktop NEO e seleziona Deploy Contract. Per contratti di sviluppo, raccomandiamo di utilizzare la GUI di sviluppo NEO.
- Riempire tutti i campi nella sezione Information nella finestra che appare. Tutti i campi devono essere compilati per implementare il contratto.
- Carica il file .avm usando il tasto Load. Il code field verrá compilato con l'hash dello script. Copia il contenuto del campo Code per utilizzaro negli step successivi.
Compilare il campo Metadata in riferimento alla documentazione Parametro.
Il token Woolong di esempio é definito come:
public static object Main(string method, params object[] args)
quindi usiamo:
- Parameter List: 0710
- Return Type: 05
Se il contratto richiede memoria (usare Read/Write API), controlla il box Need Storage. Lo standard NEP5 utilizza memoria per mantenere gli account, quindi assicurati che sia spuntato quando si implementa un token NEP5.
Cliccare il bottone Deploy.
5 - Guardare lo Smart Contract
- Sulla finestra principale del wallet NEO, fare clic destro sull'area dell'indirizzo e selezionare (Create Contract Add > Custom)
- Selezionare l'account al quale si vuole associare il contratto da Related Account
- Nel campo Parameter List, riempire i valori del Parameter List usati nello step 4 della sezione Implementare uno Smart Contract con Parametri.
- Riempire il campo Script con il valore fornito nello step 3 di Implementare uno Smart Contract con Parametri.
- Cliccare Confirm per caricare il contratto nella finestra del wallet.
6 - Invocare lo Smart Contract
Per invocare uno smart contract sulla blockchain di NEO, avrai bisogno dell'hash dello script dello smart contract.
- Per acquisire l'hash del contratto, fare doppio clic sull'account del contratto riempito nella finestra dell'indirizzo come risultato della finesta Watching the Smart Contract.
- Selezionare View Contract per aprire una finestra contenente le informazioni dello smart contract. Copia il valore nel campo Script Hash
- Cliccare sull'opzione menu Advanced e selezionare Invoke Contract.
- Riempire il campo Script Hash con il valore copiato nello step 2. Come esempio, é possibile invocare il Woolong usando l'hash dello script della Sezione 3
- Le informazioni dello Smart Contract dovrebbero riempirsi automaticamente nei campi rimanenti Invoke Function
- Per riempire i parametri in input, cliccare sul bottone ... a finco del campo Parametri per aprire il menu parametro compilato.
Selezionare i parametri del campo sul lato sinistro e compilare i valori delle variabili nel campo in basso a destra.
Per esempio, invocare quanto segue:
6e616d65
quando stai chiamando Woolong, restituirá 'Woolong'.csharp if (method == "name") return name;
73796d626f6c
restituirá 'WNG'.csharp if (method == "symbol") return symbol;
62616c616e63654f66, 5fe459481de7b82f0636542ffe5445072f9357a1261515d6d3173c07c762743b
restituirá il saldo corrente di Woolong che lllwvlvwll possiede sulla testnet.csharp if (method == "balanceOf") return Storage.Get(Storage.CurrentContext, (byte[]) args[0]);
Cliccare OK per chiudere la finestra di input dei parametri.
- Cliccare il bottone Invoke per invocare lo smart contract.
Nota: La GUI desktop standard corrente non supporta la visualizzazione dei resi. Usare la GUI di sviluppo è raccomandato quando si eseguono questi eventi.