nLockTime è la prima funzione di blocco che Bitcoin ha avuto sin dal suo inizio e progettata da Satoshi Nakamoto, come un modo per consentire transazioni pianificate e attivate da parametri temporali all'interno del protocollo Bitcoin.
Uuna delle proprietà più interessanti che possiede Bitcoin sono time lock o timelock come nLockTime. Questo tipo di funzionalità consente agli utenti di definire il momento esatto in cui una transazione può essere convalidata e confermata sulla rete. Una qualità che trasforma Bitcoin in denaro digitale programmabile. Ad esempio, implementando smart contract o contratti intelligenti. Tutto questo è possibile grazie al fatto che Bitcoin ha un potente linguaggio di programmazione chiamato Bitcoin Script .
Quindi dobbiamo nLockTime è un blocco temporale assoluto a livello di transazione. Ciò consente di definire il momento a partire dal quale una transazione può essere convalidata e inclusa all'interno di un blocco valido del file blockchain. Voglio dire, nLockTime specifica il primo momento a partire dal quale una transazione può essere convalidata e impegnata.
Questo tipo di blocco temporale è fondamentale per l'implementazione di transazioni programmabili nel sistema Bitcoin. Ciò consente che, una volta definite e soddisfatte le condizioni stabilite all'interno di un contratto, le transazioni possano essere eseguite automaticamente e senza intermediari.
Analogamente, nLockTime è l'unico blocco temporale presente dall'implementazione del client Bitcoin originale, il Bitcoin Core. Pertanto, questo campo è incluso in ogni transazione. Tuttavia, nei client e portafogli Bitcoin il campo nLockTime è predeterminato con il valore 0. Quindi, se questo campo non viene modificato, le transazioni possono essere incluse all'interno di qualsiasi blocco valido della blockchain.
Come funziona nLockTime?
Il blocco temporale nLockTime imposta un intervallo di tempo minimo per la convalida e l'inclusione di una transazione in un blocco. Pertanto, questa funzione viene implementata e utilizzata per evitare l'estrazione di una transazione prima che venga raggiunto il tempo specificato nel blocco stabilito. In caso contrario, la rete semplicemente invalida detta transazione evitandone l'elaborazione.
Nel client Bitcoin originale, questo blocco consentiva solo di impostare le condizioni di blocco in base all'altezza del blocco. Pertanto, i nodi della rete non potevano includere le transazioni con nLockTime fino a quando non veniva raggiunta l'altezza minima del blocco stabilita nel blocco.
Successivamente nLockTime è stato regolato in modo che le condizioni di blocco basate sul tempo potessero essere applicate alle transazioni Bitcoin. Che attualmente operano in base a metà del tempo passato e non nel timestamp del blocco. Quindi nLockTime richiede che sia trascorso un intervallo di tempo definito o che venga raggiunta una certa altezza di blocco prima che la transazione possa essere convalidata.
Da parte sua, in nLockTime il blocco viene mostrato come un intero a 32 bit, dove:
- Se nLockTime è inferiore a 500.000.000, viene inteso come un file blocco temporale basato su un'altezza di blocco. Laddove, solo una volta raggiunta o superata questa altezza del blocco, la transazione può essere confermata all'interno di un blocco valido.
- Se nLockTime è maggiore di 500.000.000, viene inteso come un file blocco temporale basato sul tempo, che verrà misurato in Ora UNIX. Laddove, solo una volta che questo timestamp viene eguagliato o superato, la transazione può essere confermata all'interno di un blocco valido.
Inoltre, nLockTime consente di bloccare una transazione fino a 9.500 anni quando è un blocco temporale basato sull'altezza del blocco. Mentre per i blocchi basati su un intervallo di tempo, nLockTime può impostare un blocco su uno per un massimo di 2.106 anni.
Implementazione di NLockTime
Poiché nLockTime consentirà solo l'estrazione di una transazione e l'aggiunta a un blocco valido una volta raggiunta o superata l'altezza o il tempo del blocco impostato, questo blocco viene utilizzato per impostare e pianificare transazioni che verranno confermate solo in futuro. Quindi è ampiamente utile per creare contratti intelligenti.
La particolarità di nLockTime consente che se una delle parti coinvolte nel contratto non si conforma, le transazioni pianificate possono essere cambiate o modificate, prima che scada il tempo limitato o venga raggiunta l'altezza del blocco e le transazioni vengano eseguite. Se si verifica una qualsiasi eventualità, inadempienza o semplicemente una delle parti decide di cambiare idea, può essere stabilita una nuova transazione senza blocco per invalidare la transazione che ha il blocco temporale. Finché gli stessi output utilizzati come input nella transazione con il blocco nLockTime impostato vengono utilizzati come input.
Pertanto, la nuova transazione creata, non avendo un tempo di blocco stabilito, verrà validata e confermata all'interno di uno dei blocchi successivi immediatamente dopo la sua creazione.
Contratti intelligenti o canali di pagamento affidabili
D'altra parte, tramite nLockTime puoi creare canali di pagamento Non richiedono fiducia o terze parti. Ad esempio, se un file indirizzo multi-firma 2/2 in cui vengono depositati bitcoin per effettuare pagamenti gradualmente ad una delle parti coinvolte, entrambe le parti avranno il possesso di una delle chiavi di indirizzo.
L'utente A, prima di effettuare il deposito di bitcoin nell'indirizzo multi-firma con cui verrà pagato l'utente B, può impostare una transazione nLockTime ad una certa altezza di blocco o impostare il timestamp.
Quindi l'utente A avrà il possesso di una delle chiavi e l'utente B avrà il possesso dell'altra chiave dell'indirizzo. Pertanto, l'utente A può firmare una transazione quando desidera effettuare un pagamento all'utente B; posizionando i bitcoin in un outlet che richiede la firma di entrambe le parti (utenti A e utente B), ma non lo trasmette alla rete. Hashing di questa prima transazione, l'utente B crea una seconda transazione che spende la prima e restituisce i bitcoin all'utente A tramite l'indirizzo multi-firma. A questo punto, poiché entrambe le parti devono firmare, la transazione non può essere completata. Quindi nessuna delle parti può spendere i bitcoin.
Poiché il campo nLockTime è definito con un'altezza del blocco o un timestamp, la transazione può essere restituita all'utente A. Ciò nel caso in cui le condizioni del contratto non siano soddisfatte e la transazione non sia firmata da entrambe le parti come richiesto. Pertanto, il deposito versato può essere recuperato, una volta scaduto il blocco definito, se l'altra parte coinvolta non si conforma all'opera o agisce in modo sbagliato.
Quanto sai, Cryptonuta?
NLockTime è il modo più semplice per bloccare il tempo di Bitcoin?Certo!
nLockTime è la prima e più semplice forma di blocco del tempo all'interno di Bitcoin e una funzionalità progettata dallo stesso Satoshi Nakamoto.
nLockTime e CLTV In cosa sono diversi?
In Bitcoin ci sono diverse forme di blocco del tempo o timelock. Queste operazioni consentono a Bitcoin di avere transazioni o operazioni che possono essere pianificate. E questo può essere in relazione a un'unità di tempo (descritta come timestamp) o ad una certa altezza di blocco (attivazione con altezza di blocco). Grazie a loro, è possibile inviare un TX che può essere convalidato solo dopo il raggiungimento della condizione di tempo o altezza specificata.
Un esempio di questa utilità potrebbe essere che Maria desidera inviare un pagamento a Daniel. Ma detto pagamento può essere effettuato solo 15 ore dopo l'emissione della transazione. Per fare ciò, María emette la transazione utilizzando la funzione nLockTime. Ciò garantisce che la transazione possa essere elaborata solo 15 ore dopo l'emissione. Abbastanza utile a dire la verità.
Ma cosa succede se dobbiamo fare operazioni più complesse? Bene in quel caso, nLockTime non ci permette di fare cose più complesse. Quindi, per salvare questa situazione, gli sviluppatori di Bitcoin hanno creato CLTV o CHECKLOCCHITEVERIFICE. Questo OP_CODE o codice operazione consente di utilizzare il valore di nLockTime (il blocco temporale o il valore del blocco) e aggiungere ulteriore pianificazione. Vale a dire, CLTV ci consente di aggiungere una serie di condizioni aggiuntive che devono essere soddisfatte affinché la transazione venga convalidata. CLTV può anche modificare queste condizioni se le condizioni iniziali non sono state soddisfatte, consentendo lo sblocco del pagamento in altre condizioni già programmate.
Un chiaro esempio dell'utilizzo di CLTV è un fondo bitcoin protetto da un indirizzo multi-firma. Se questi fondi non vengono mobilitati entro un certo periodo di tempo, CLTV può modificare le condizioni per sbloccare tali fondi. Quindi possiamo convertire un indirizzo multi-firma 2-of-3 in un indirizzo multi-firma 1-of-3. Con la quale basterebbe una firma valida per poter accedere a detti fondi.