Come creare uno smart contract - Guida passo dopo passo
Nota editoriale: pur attenendoci a una rigorosa integrità editoriale, questo post può contenere riferimenti a prodotti dei nostri partner. Ecco una spiegazione di come guadagniamo. Nessuno dei dati e delle informazioni contenute in questa pagina web costituisce una consulenza sugli investimenti, secondo il nostro Disclaimer.
Come creare un smart contract:
Passo 1. Definisci la logica – stabilisci l’ambito di trading, i trigger e i controlli di rischio.
Passo 2. Seleziona la rete – Ethereum mainnet o L2s (Arbitrum, Optimism, Base).
Passo 3. Scegli gli strumenti – Remix IDE per principianti, Hardhat per la produzione.
Fase 4. Configura il wallet/testnet – installa MetaMask, ottieni ETH di prova, prepara il deployer.
Passo 5. Crea l'impalcatura del progetto – inizializza Hardhat o utilizza l'ambiente di lavoro Remix.
Passo 6. Scrivi il contratto – codifica la logica Solidity (price feeds, trigger, eventi).
Passo 7. Test approfonditi – esegui test unitari e simula scenari di trading.
Passo 8. Metti in sicurezza il codice – applica audit, funzioni di pausa, versione fissa del compilatore.
Passo 9. Distribuisci su testnet – invia tramite Hardhat/Remix e registra l'indirizzo del contratto.
Passo 10. Verifica e monitora – utilizza Etherscan, Tenderly o gli avvisi di Defender.
Passo 11. Usa funzionalità avanzate – logica di stop-loss e take-profit all'interno del contratto.
Passo 12. Lancio su mainnet – dopo audit, simulazioni e documentazione completa.
Nell'ecosistema di trading degli U.S., padroneggiare la creazione di un smart contract può offrire ai trader e agli sviluppatori un vantaggio significativo. Gli smart contract permettono di automatizzare le azioni finanziarie senza alcun intervento di terze parti. Quando si incorporano regole di trading in una blockchain, tali condizioni diventano immutabili e funzionano 24 ore su 24. Per chi esplora strategie automatizzate, comprendere la progettazione di smart contract offre un modo per avere il pieno controllo sulla logica di esecuzione delle operazioni.
La maggior parte degli sviluppatori sceglie di iniziare con i Ethereum smart contract, non solo per la loro posizione dominante sul mercato, ma anche per le numerose risorse disponibili, il supporto della comunità e l'affidabilità comprovata della rete. Una volta acquisita familiarità con Ethereum, diventa più semplice adattare le proprie competenze anche ad altre piattaforme compatibili con EVM che seguono strutture simili. Un buon tutorial sulla creazione di smart contract spesso guida nella scrittura di un contratto di base, nel suo deployment e nel test in un ambiente isolato. Questi percorsi di apprendimento evidenziano anche casi d'uso reali come l'emissione di token, i servizi di escrow o la logica di staking.
Come creare un smart contract
Passo 1: Definisci la tua logica di trading o di esecuzione
Prima di scrivere qualsiasi codice, definisci:
Ambito degli asset. Stai automatizzando scambi tra ETH e USDC, oppure token Forex ancorati come EURC?
Trigger. L’esecuzione sarà basata sul tempo, sul prezzo o condizionata da più dati?
Controlli di rischio. Limiti massimi di perdita, funzioni di pausa o indirizzi in whitelist.
Passo 2: Scegli la tua rete blockchain
La maggior parte dei contratti intelligenti con sede negli Stati Uniti oggi viene eseguita su Ethereum mainnet o su layer-2 come Arbitrum, Optimism o Base.
Passo 3: Scegli il tuo ambiente di sviluppo
Hai due principali opzioni:
Confronto tra strumenti di sviluppo per Ethereum: Remix IDE vs Hardhat
| Strumento | Caratteristiche principali | Miglior caso d’uso |
|---|---|---|
| Remix IDE (Basato su Web) | Funziona direttamente nel browser; facile da usare; supporta la compilazione Solidity, il deployment e l’interazione con i contratti | Ideale per il primo deployment e per l’apprendimento |
| Hardhat (Sviluppo locale) | Framework avanzato con scripting, test automatizzati ed estensioni tramite plugin; si integra con Alchemy/QuickNode RPC | Preferito per progetti complessi e di livello produttivo |
Passo 4: Configura il tuo wallet e i fondi testnet
Installa MetaMask e passa alla rete Sepolia.
Ottieni gratuitamente ETH di prova da un faucet.
Finanzia il tuo indirizzo deployer prima di effettuare i test.
Passo 5: Prepara la struttura del tuo progetto
Se utilizzi Hardhat:
mkdir trading-contract && cd trading-contract
npm init -y
npm install --save-dev hardhat @nomiclabs/hardhat-ethers ethers dotenv
npx hardhat
Scegli Crea un file hardhat.config.js vuoto.
Passo 6: Scrivi un smart contract minimale
Esempio di struttura per un contratto trigger di trading:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;
importa "@chainlink/contracts/src/v0.8 /interfac
es/AggregatorV3Interface.sol";
import "@openzeppelin/contracts/
access/Ownable.sol";
contratto PriceTriggerTrade è Ownable {
AggregatorV3Interface priceFeed interno;
int public triggerPrice;
bool public eseguito;
event TradeExecuted(int price, uint timestamp);
constructor(address _feed, int _triggerPrice) {
priceFeed = AggregatorV3Interface(_feed);
triggerPrice = _triggerPrice;
}
function checkAndExecute() public onlyOwner {
(, int prezzo,, uint timeStamp,) = priceFeed.latestRoundData();
require(timeStamp > 0, "Prezzo obsoleto");
if (price >= triggerPrice && !executed) {
eseguito = true;
emit TradeExecuted(prezzo, block.timestamp);
}
}
}
Passo 7: Test e verifica
Un errore comune in molte guide “come costruire” è saltare la fase di test. Per i trader che hanno capitale in gioco, questo è fatale.
Passo 8: Rafforzamento della sicurezza
Prendi spunto dalle migliori pratiche di ConsenSys Diligence:
Evita la matematica in virgola mobile; utilizza prezzi basati su numeri interi.
Aggiungi una funzione pause() dal contratto Pausable di OpenZeppelin.
Blocca le versioni del compilatore per evitare modifiche non verificate.
Passo 9: Distribuisci su testnet
In scripts/deploy.js:
const hre = require("hardhat");
async function main() {
const PriceTriggerTrade =await hre.ethers.
getContractFactory("PriceTriggerTrade");
const contract = await PriceTriggerTrade.deploy
("CHAINLINK_FEED_ADDRESS", 1500e8);
await contract.deployed();
console.log("Contratto distribuito a:", contract.address);
}
main();
Esegui:
npx hardhat run scripts/deploy.js --network sepolia
Passo 10: Verifica e monitora
Utilizza la verifica su Etherscan per garantire la trasparenza.
Configura Tenderly o Defender per il monitoraggio e gli avvisi in tempo reale.
Mantieni un registro delle esecuzioni per la conformità, soprattutto se gestisci asset tokenizzati simili a Forex.
Passo 11: Utilizza funzionalità avanzate per i trader
Logica di stop-loss e take-profit all'interno del contratto.
Esecuzione basata sui ruoli per approvazioni multi-sig.
Time lock per operazioni di alto valore.
Passo 12: Vai online con sicurezza
Prima di effettuare il deployment su mainnet:
Fai audit del tuo smart contract (almeno una revisione del codice da parte di uno sviluppatore Solidity esperto).
Esegui una simulazione su una mainnet forkata in Hardhat.
Documenta ogni parametro e rischio.
Componenti alla base dei protocolli di transazione digitale
La creazione di un contratto di trading resiliente inizia con la comprensione dei suoi componenti fondamentali. Ogni parte influisce su affidabilità, velocità e sicurezza:
Condizioni. Queste regole definiscono quando un contratto deve essere eseguito. Nei mercati live, la maggior parte delle operazioni automatizzate DeFi utilizza trigger basati sul prezzo, come l’acquisto di ETH quando un token supera una determinata soglia. Anche le condizioni basate sul tempo o ibride sono popolari per il ribilanciamento dei portafogli.
Trigger. Un trigger è l’evento che attiva le condizioni. I trigger on-chain (come i timestamp dei blocchi o gli aggiornamenti dei pool di liquidità) offrono un’elevata affidabilità; i trigger da dati esterni provenienti da price feed possono introdurre latenza o slippage. Trigger accurati sono fondamentali perché un tempismo errato può aumentare lo slippage fino al 25% in mercati volatili.
Oracoli e integrazione con la blockchain. Gli smart contract non possono accedere direttamente ai dati off-chain. Si affidano a oracoli come Chainlink per recuperare i prezzi di mercato. Ad agosto 2025 Chainlink aveva garantito oltre 93 miliardi di dollari in valore su 452 protocolli, alimentando più di 2.000 feed di prezzi che detengono il 67% del mercato degli oracoli. Chainlink ha inoltre abilitato oltre 24 trilioni di dollari in valore di transazioni. L’integrazione di oracoli affidabili garantisce prezzi accurati e protegge da manipolazioni quando si crea uno smart contract.
Commissioni di gas. Ogni operazione on-chain richiede una commissione da pagare ai validatori della rete. Le commissioni variano notevolmente: secondo DailyCoin, gli swap semplici costano circa 5 $ durante i periodi di bassa attività, mentre il bridging di token tra diverse chain può costare anche solo 2 $. I trader ad alte prestazioni utilizzano tecniche di ottimizzazione del gas e reti layer-2 per ridurre i costi dal 20 al 40 %.
Strumenti di audit. Prima del deployment, gli sviluppatori dovrebbero analizzare i contratti con strumenti di audit per blockchain come Slither, MythX o la libreria di OpenZeppelin. Un’analisi di ConsenSys ha rilevato che molti contratti sottoposti ad audit presentano ancora difetti critici, evidenziando l’importanza di revisioni multiple. Test rigorosi prevengono exploit come attacchi di reentrancy e overflow di interi.
| Componente | Metriche chiave | Impatto sul trading |
|---|---|---|
| Condizioni | Le regole basate sul prezzo dominano il trading automatizzato; vengono utilizzati anche trigger ibridi e basati sul tempo | Garantire una logica di esecuzione accurata |
| Trigger | Gli eventi on-chain forniscono un'attivazione affidabile; i feed di prezzo esterni aggiungono latenza | Influenzano lo slippage e la velocità di esecuzione |
| Oracoli e integrazione | Chainlink protegge oltre 93 miliardi di dollari su DeFi e alimenta più di 2.000 feed di prezzi | Fornisce dati resistenti alle manomissioni per la validazione delle transazioni crypto |
| Commissioni di gas | Le commissioni variano da circa $2 a $30; l’ottimizzazione consente di risparmiare il 20–40 % | Influenzano il costo e i tempi delle transazioni |
| Strumenti di audit | Persistono gravi difetti in molti contratti sottoposti ad audit | Prevenire violazioni della sicurezza e perdite finanziarie |
Migliori piattaforme da utilizzare per l'esecuzione di codice finanziario
Ethereum rimane una scelta di punta per la creazione di sistemi di trading automatizzati, grazie alla sua profonda liquidità, infrastruttura matura e una solida comunità di sviluppatori. Tuttavia, alternative come Binance Smart Chain stanno guadagnando popolarità per l’offerta di una finalità delle transazioni più rapida e costi ridotti. Per i progetti che danno importanza alla verifica formale, soprattutto nella creazione di applicazioni decentralizzate (dApps), reti come Cardano e Tezos sono spesso preferite grazie al loro approccio strutturato alla sicurezza degli smart contract e alla decentralizzazione finanziaria.
Quando si tratta di contratti peer-to-peer, la blockchain sottostante può influenzare in modo significativo il costo di esecuzione e la velocità delle transazioni. Gli sviluppatori che creano piattaforme di escrow digitale o di trading decentralizzato cercano generalmente catene che offrano connessioni affidabili agli oracoli e costi di transazione costanti. Queste caratteristiche sono fondamentali per ridurre al minimo il rischio di esecuzione e garantire una validazione accurata delle transazioni in criptovaluta. In tali sistemi, il concetto di trading trustless è centrale, eliminando gli intermediari e affidandosi interamente agli smart contract per far rispettare regole e condizioni tra le parti.
| Piattaforma | Commissione media per transazione (USD) | Velocità di conferma | Popolarità tra gli sviluppatori (2024) | Punti di forza per i trader | Esempi di casi d'uso |
|---|---|---|---|---|---|
| Ethereum | ~$1,17 (media piatta) | 15–60 s | Molto alta (~4.000 sviluppatori) | Concentrazione di liquidità, ecosistema Solidity maturo | DeFi, derivati, asset sintetici |
| Binance Smart Chain (BSC) | ~$0,04 | ~3 s | Alta (~1.200 sviluppatori) | Commissioni ultra-basse, esecuzione rapida, compatibilità con EVM | Scambi retail, marketplace di NFT, scambi P2P |
| Cardano | ~$0,29 (0,34 ADA) | ~20 s | Moderato (~500 sviluppatori) | Verifica formale, governance stabile | Immobiliare tokenizzato, app DeFi regolamentate |
| Tezos | (Dati non disponibili in USD) | ~30 s | Moderato (~400 sviluppatori) | Energy-efficiente, governance flessibile, verifica formale | Deposito digitale, app orientate alla conformità |
Esempio di una condizione di trading automatizzato utilizzando blockchain
Abbiamo già compreso in dettaglio come costruire un smart contract. Ora vediamolo attraverso un semplice esempio:
Definisci la condizione. ad es., “Acquista ETH quando il prezzo scende del 3% in un’ora.”
Seleziona la rete. Ethereum per alta liquidità, BSC per commissioni più basse.
Scrivi il codice nel linguaggio Solidity. Segui le best practice dal ConsenSys Developer Portal per un codice pulito e sicuro.
Integra gli oracoli. Usa Chainlink per dati di mercato accurati.
Testa con strumenti per sviluppatori blockchain. Simula le operazioni per confermare il comportamento atteso.
Considera le commissioni gas. Adatta la logica per evitare ritardi nell’esecuzione.
Distribuisci e monitora. Tieni traccia delle prestazioni dell’automazione on-chain.
Questa è una variante del tutorial sui smart contract orientata ai trader che mantiene il controllo del rischio in primo piano.
Rischi ed errori comuni nella progettazione di protocolli di automazione
Anche gli sviluppatori esperti commettono errori quando imparano a creare un smart contract. Ecco gli errori più comuni:
Errori di reentrancy e aggiornamento dello stato. La reentrancy si verifica quando chiamate esterne permettono a un contratto malevolo di richiamare la funzione originale prima che questa sia terminata. L’attacco al DAO del 2016 ha sfruttato questa vulnerabilità, sottraendo oltre 60 milioni di dollari in Ether. Aggiorna sempre le variabili di stato prima di trasferire fondi ed evita di chiamare contratti non affidabili.
Ignorare i limiti di gas. Cicli complessi o codice poco ottimizzato possono superare il limite di gas del blocco, causando il fallimento delle transazioni. Mantieni le funzioni semplici, pre-calcola i valori ed evita cicli non limitati.
Saltare audit e test. Lanciare contratti non verificati è rischioso. Usa strumenti di analisi statica come Slither, esegui test unitari e di integrazione e coinvolgi revisori terzi. Molte guide “come costruire” trascurano questo passaggio, ma ci sono soldi veri in gioco.
Poor integrazione degli oracoli. Scegliere feed di prezzi inaffidabili può portare a dati obsoleti o manipolati. Utilizza sempre fornitori affidabili come Chainlink e verifica i feed quando possibile. I dati con marca temporale prevengono esecuzioni obsolete, come mostrato nel contratto di esempio.
Sottovalutare l’esposizione normativa. I contratti che gestiscono titoli tokenizzati o derivati possono richiedere una licenza. Consulta un consulente legale prima del deployment per evitare azioni esecutive.
Studi di caso: Applicazioni reali nel trading
Uniswap AMMs. Uniswap ha reso popolare il modello di automated market maker, consentendo lo scambio di token tramite pool di liquidità senza order book. Su Ethereum, i protocolli DeFi come Uniswap e Aave contribuiscono a circa il 25% del volume giornaliero delle transazioni. I fornitori di liquidità guadagnano commissioni fornendo token, mentre i trader beneficiano di swap istantanei.
Chainlink price feeds. La rete di oracoli decentralizzata di Chainlink protegge oltre 93 miliardi di dollari in valore e fornisce più di 2.000 price feed. Questi feed alimentano una vasta gamma di applicazioni DeFi, dal lending alle opzioni. Per gli sviluppatori, integrare Chainlink significa dati affidabili e una conformità più semplice.
Derivati Synthetix. Synthetix emette asset sintetici che replicano valute, materie prime ed azioni. I trader ottengono esposizione senza detenere l’asset sottostante. Sebbene i volumi di Synthetix siano inferiori a quelli di Uniswap, il protocollo dimostra come sia possibile codificare strumenti finanziari complessi in smart contract.
Questi esempi mostrano come creare un smart contract che esegue in modo affidabile la logica di mercato su larga scala. Ognuno di essi ha subito test rigorosi e utilizza feed di prezzi affidabili, illustrando le migliori pratiche per l'automazione on-chain.
Considerazioni legali e normative negli U.S.
La finanza programmabile si trova all'intersezione tra tecnologia e regolamentazione. Negli Stati Uniti, la SEC e la CFTC stanno rivendicando la giurisdizione sugli asset digitali. Le piattaforme di scambio centralizzate dovranno segnalare le transazioni di asset digitali all'IRS a partire dal 2025, e queste regole di segnalazione si estenderanno ai DEXs nel 2027. Questo cambiamento normativo potrebbe spingere alcuni utenti verso le piattaforme DeFi, ma crea anche rischi legali per i protocolli che agiscono come broker-dealer non registrati.
Per i titoli tokenizzati o i derivati, la registrazione e la conformità potrebbero essere obbligatorie. Gli smart contract utilizzati per il prestito peer‑to‑peer, i titoli tokenizzati o i sistemi di escrow digitale potrebbero rientrare nelle leggi sui titoli o sulle materie prime. Consultare un consulente legale prima di lanciare prodotti regolamentati e mantenere le procedure KYC/AML ove richiesto.
Strumenti e risorse per utenti avanzati
Lo sviluppo di contratti di livello professionale richiede più che la semplice scrittura di codice. Di seguito sono riportati gli strumenti essenziali per sviluppatori blockchain destinati a trader e costruttori:
IDE. Remix è ideale per la prototipazione rapida e supporta milioni di distribuzioni ogni anno. Hardhat alimenta molti contratti in produzione e offre scripting avanzato, test e fork della rete.
Piattaforme di audit. Usa Slither per l'analisi statica, MythX per la scansione delle vulnerabilità e OpenZeppelin Defender per il monitoraggio e la gestione dei ruoli. Questi strumenti aiutano a ridurre il rischio di bug nascosti e difetti critici.
Simulatori. Servizi come Tenderly simulano le transazioni e analizzano i motivi dei revert. Gli sviluppatori che utilizzano simulatori riducono secondo quanto riferito di un terzo i fallimenti dopo il deployment.
Librerie di protocollo. OpenZeppelin fornisce moduli verificati per la proprietà, la sospensione e l’aggiornabilità. L’AggregatorV3Interface di Chainlink semplifica l’integrazione degli oracoli. L’utilizzo di queste librerie accelera lo sviluppo e riduce i rischi.
Comunità. I repository di GitHub, Stack Overflow e i canali Discord sono ricche fonti di suggerimenti per la risoluzione dei problemi. Partecipare a queste comunità accelera l’apprendimento e aiuta i nuovi arrivati a comprendere concetti complessi nello sviluppo di Web3.
| AscendEX | PancakeSwap | |
|---|---|---|
|
Anno di fondazione |
2018 | 2020 |
|
DEX |
Sì | Sì |
|
Staking |
Sì | Sì |
|
Yield farming |
Sì | Sì |
|
NFT |
No | No |
|
Bonus cripto |
Sì | No |
|
Regolamentazione |
No | No |
|
TU punteggio complessivo |
4.2 | 2.19 |
|
Apri un conto |
APRI UN CONTO Il tuo capitale è a rischio. |
Studia recensioni |
Distribuzione di smart contract a prova di manomissione utilizzando logica di fallback e oracoli ottimizzati per il gas
Quando scrivi un smart contract per qualsiasi attività di trading, non concentrarti solo sul percorso ideale. Pensa a cosa succede se qualcosa va storto, ad esempio se il tuo feed di dati si interrompe o subisce un ritardo. Un trucco semplice è prevedere un piano di riserva. Usa due o più fonti di dati e lascia che il contratto passi automaticamente a un’altra se una smette di rispondere. In questo modo, la tua operazione non si blocca né viene eseguita con dati obsoleti. È un dettaglio piccolo, ma può salvarti quando il mercato diventa instabile.
Un'altra cosa che spesso non si considera è quanto le commissioni di gas possano influire sul tuo contratto se non fai attenzione. Non si tratta solo di far funzionare il codice, ma di renderlo efficiente. Evita i cicli complessi e cerca di eseguire i calcoli pesanti al di fuori della blockchain, poi inserisci solo i risultati. Inoltre, utilizza funzioni di sola lettura quando possibile e cerca di registrare le informazioni invece di memorizzarle, a meno che non sia strettamente necessario. Questi accorgimenti rendono il tuo contratto più economico e veloce da eseguire e, nel trading, velocità e costi possono determinare il successo o il fallimento della tua strategia.
Conclusione
Creare un contratto intelligente richiede una solida preparazione tecnica, consapevolezza dei rischi e attenzione rigorosa alla sicurezza e alla conformità normativa. Solo un processo ben strutturato che includa definizione della logica, test approfonditi, audit del codice e monitoraggio costante può garantire automazione affidabile nei mercati digitali. Piattaforme come Ethereum e strumenti come Chainlink dimostrano che la resilienza degli smart contract si basa su dati solidi e ottimizzazione del gas, come evidenziato nei casi reali di Uniswap o Synthetix. Il vero vantaggio competitivo nasce dalla capacità di prevedere scenari avversi e integrare logiche di riserva e controllo del rischio già in fase di sviluppo. In definitiva, il successo nello sviluppo di smart contract sta nell’unire innovazione tecnologica e responsabilità: ogni dettaglio del codice può fare la differenza tra un’automazione sicura e rischi irreparabili.
Domande frequenti
Quali sono i principali strumenti e ambienti di sviluppo per avviare un progetto di smart contract di trading?
In che modo la scelta della blockchain influisce sulla velocità e sul costo delle transazioni in smart contract di trading?
Quali fattori rendono automatizzato e affidabile un contratto intelligente per il trading?
Quali sono i principali errori da evitare nello sviluppo di contratti intelligenti per trading?
Le migliori scelte e idee degli editori
Dalla “Trinità” al crollo di WLD: come Arthur Hayes è diventato un venditore che muove il mercato
Il primo trilionario al mondo: come Musk ha costruito la sua fortuna su auto elettriche, spazio e AI
Come la rinascita mineraria dei metalli preziosi sta rimodellando i portafogli nel 2026
Previsione del prezzo di Bitcoin dopo l'aumento dell'IPC: BTC è diretto verso perdite più profonde?
Cinque anni con Bitcoin: come El Salvador è cambiato dopo la legalizzazione del BTC
Crypto sul campo: come le finali NBA sono diventate una vetrina per Ledger
Articoli Correlati
Il team che ha lavorato sull'articolo
Andreas Kristo Saragih è un esperto analista di ricerca azionaria con oltre un decennio di esperienza in ruoli sia buy-side che sell-side, focalizzato sul mercato dei capitali indonesiano. Ha una vasta copertura settoriale, tra cui banche, beni di consumo, vendita al dettaglio, immobiliare, sanità, trasporti, pollame, cemento, farmaceutica, costruzioni e infrastrutture.
Il CFD è un contratto tra un investitore/trader e un venditore che dimostra che il trader dovrà pagare al venditore la differenza di prezzo tra il valore attuale dell'asset e il suo valore al momento del contratto.
La CFTC protegge il pubblico da frodi, manipolazioni e pratiche abusive legate alla vendita di futures e opzioni su materie prime e finanziarie e promuove mercati dei futures e delle opzioni aperti, competitivi e finanziariamente solidi.
Per rendimento si intende il guadagno o il reddito derivante da un investimento. Rispecchia i rendimenti generati dal possesso di attività come azioni, obbligazioni o altri strumenti finanziari.
L'esecuzione delle operazioni consiste nel saper piazzare e chiudere le operazioni al prezzo giusto. Questa è la chiave per trasformare i vostri piani di trading in azioni reali e ha un impatto diretto sui vostri profitti.
Un sistema di trading è un insieme di regole e algoritmi che un trader utilizza per prendere decisioni di trading. Può essere basato sull'analisi fondamentale, sull'analisi tecnica o su una combinazione di entrambe.