Overwinter

Overwinter è stato il primo aggiornamento della rete per Zcash. Il suo scopo è rafforzare il protocollo per i futuri aggiornamenti della rete. Include il versioning, la protezione replay per gli aggiornamenti della rete, miglioramenti delle prestazioni per le transazioni trasparenti, una nuova funzione di scadenza delle transazioni e altro ancora.

Overwinter attivato con successo al blocco 347500, estratto il 25 Giugno2018 20:42 UTC-04:00

Formato delle transazioni

Tutte le transazioni devono utilizzare il nuovo formato di transazione a partire da Overwinter in avanti. Assicuratevi di poter interpretare queste transazioni “v3” (scrivete un interprete per esse se non utilizzate il nostro codice). I formati precedenti non saranno più validi dopo l’aggiornamento di Overwinter, quindi se create transazioni, il formato “v3” deve essere utilizzato dopo l’attivazione dell’aggiornamento (ma non prima di allora). I portafogli hardware e i client SPV sono particolarmente interessati. Vedere gli ZIP 202 e 203.

Numero di versione della transazione

La versione della transazione a 4 byte avrà il bit più significativo impostato a partire da Overwinter, per una protezione bidirezionale da replay di Overwinter e per un’analisi non ambigua delle transazioni in tutti i formati attuali e futuri. Ad esempio, le transazioni “v1” e “v2” esistenti utilizzano i numeri di versione “1” e “2”, ma le transazioni Overwinter “v3” utilizzeranno il numero di versione senza segno “(1 << 31) | 3” nel formato di serializzazione delle transazioni. Vedere ZIP 202.

ID del gruppo di versione

La versione di una transazione sarà abbinata in modo univoco all’ID del gruppo di versione per garantire un’analisi non ambigua della transazione. Ad esempio, una transazione “v3” avrà sempre l’ID del gruppo di versione “0x03C48270” nel suo formato di serializzazione, anche dopo futuri aggiornamenti della rete. Vedere ZIP ZIP 202.

ID del ramo

Ogni aggiornamento della rete ha un ID ramo associato che identifica le sue regole di consenso. Per la protezione da replay bidirezionale, la creazione di transazioni richiederà l’ID ramo della punta della catena corrente quando si firma una transazione (nel campo di personalizzazione BLAKE2b.) È possibile ottenere l’ID ramo di qualsiasi altezza di blocco dall’API getblock. Vedere 200.

Hashing della firma

In questo aggiornamento sono presenti nuove funzionalità simili a SegWit, come le firme delle transazioni che si basano sui valori degli input. Si suggerisce di riutilizzare il codice di SegWit (ad esempio per l’hashing degli output trasparenti) quando si implementa la nuova funzione SignatureHash. Vedere 143.

Scadenze delle transazioni

Si consiglia di utilizzare l’altezza di scadenza predefinita (20 blocchi/~1 ora) e di seguire queste linee guida UX in modo che gli utenti Zcash possano sviluppare un’aspettativa coerente su quando le transazioni Zcash scadono e su cosa succede. Vedere 203.