Bitcoin Improvement Proposals (BIPs) sono documenti di progettazione aperta per l’introduzione di nuovi standard e funzionalità per Bitcoin, come nuovi tipi di transazione come SegWit o le loro proprietà come replace-by-fee (RBF).
Il BIP, come modificato, da allora è diventato il modo standard per comunicare formalmente idee sui potenziali miglioramenti di Bitcoin.
Il concetto di BIP è stato introdotto il 19-08-2011 da Amir Taaki, nella forma del primo BIP.
Il secondo BIP, BIP2 è stato pubblicato 5 anni dopo.
Questo è il processo per una nuova implementazione:
In questo articolo vediamo solo gli standard di portafogli e di transazione.
Portafogli deterministici gerarchici:
BIP32 – Portafogli deterministici gerarchici
BIP39 – Codice mnemonico per la generazione di chiavi deterministiche
BIP43 – Campo scopo per portafogli deterministici
BIP44 – Gerarchia multi-account per portafogli deterministici
BIP49 – Schema di derivazione per conti basati su P2WPKH annidati in P2SH
BIP84 – Schema di derivazione per conti basati su P2WPKH
Standard di transazione
BIP16 – Paga per script hash
BIP141 – Testimone segregato (livello di consenso)
BIP173 – Formato indirizzo Base32 per output di controllo nativi v0-16
BIP125 – Segnalazione opt-in per la sostituzione completa del canone
Portafogli deterministici gerarchici
BIP32 – Portafogli deterministici gerarchici
Questo BIP descrive una struttura generale del portafoglio deterministico gerarchico (portafoglio HD).
In particolare, definisce come derivare le chiavi private e pubbliche di un wallet da un master seed binario (m) e da un insieme ordinato di indici (il cosiddetto percorso BIP32):
m / indice1 / indice2 / … / indicen
Derivazione temprata e non temprata
Esistono due possibili tipi di derivazione BIP32, temprata o non temprata. Nella notazione del percorso BIP32 standard, la derivazione rafforzata a un livello particolare è indicata da un apostrofo. Ad esempio, per i primi tre livelli viene utilizzato il seguente esempio di derivazione hardened, mentre per gli ultimi due livelli viene utilizzata la derivazione non hardened:
m / 44′ / 0′ / 1′ / 1 / 33
Con le chiavi non protette, puoi provare che una chiave pubblica figlio è collegata a una chiave pubblica principale utilizzando solo le chiavi pubbliche. Puoi anche derivare chiavi figlio pubbliche da una chiave padre pubblica, che abilita i portafogli di sola visualizzazione. Con le chiavi figlio rafforzate, non è possibile dimostrare che una chiave pubblica figlio sia collegata a una chiave pubblica padre.
Per motivi di sicurezza, l’utilizzo di chiavi temprate è più sicuro, ma esistono casi d’uso per l’utilizzo di chiavi non temprate. Una chiave pubblica estesa padre insieme a una chiave privata figlio non protetta possono esporre la chiave privata padre. Ciò significa che le chiavi pubbliche estese devono essere trattate con maggiore attenzione rispetto alle normali chiavi pubbliche. È anche il motivo dell’esistenza di chiavi rinforzate e del motivo per cui vengono utilizzate per il livello di account nell’albero. In questo modo, una perdita di chiavi private specifiche dell’account (o inferiori) non rischia mai di compromettere il master o altri account.
BIP39 – Codice mnemonico per la generazione di chiavi deterministiche
Questo BIP descrive l’implementazione di un seme di ripristino e la sua relazione con il seme master binario BIP32. Si compone di due parti: generazione del seme di recupero – convertendolo in un seme master binario che include un’applicazione opzionale di una passphrase durante la conversione.
BIP43 – Campo scopo per portafogli deterministici
BIP32 da solo offre troppi gradi di libertà su come implementare un portafoglio. Questo è il motivo per cui BIP43 introduce una regola per cui il primo indice di derivazione chiamato scopo dovrebbe corrispondere a un BIP che descrive la struttura del portafoglio ai livelli successivi. Pertanto, se, ad esempio, un portafoglio conforme a BIP39 utilizza il percorso di derivazione m/44’/…, suggerisce che la sua struttura sia descritta da BIP44.
m / scopo
BIP44 – Gerarchia multi-account per portafogli deterministici
Questo BIP definisce un’implementazione di un portafoglio HD basato su BIP32 e BIP43. In particolare, descrive la struttura del wallet multi-coin per gli indirizzi P2PKH (es. 1-addresses in Bitcoin) e l’algoritmo per il rilevamento del wallet:
m / 44′ / coin_type’ / account’ / change / address
dove per le costanti per coin_type index sono definite da SLIP44.
BIP49 – Schema di derivazione per conti basati su P2WPKH annidati in P2SH
Questo BIP definisce un’implementazione di un portafoglio HD per gli indirizzi SegWit P2WPKH-in-P2SH (es. 3-indirizzi in Bitcoin). Fatta eccezione per il tipo di indirizzo, è simile a BIP44:
m / 49′ / coin_type’ / account’ / change / address
BIP84 – Schema di derivazione per conti basati su P2WPKH
Questo BIP definisce un’implementazione di un portafoglio HD per indirizzi SegWit P2WPKH nativi (es. bc1-addresses in Bitcoin). Fatta eccezione per il tipo di indirizzo, è simile a BIP44:
m / 84′ / coin_type’ / account’ / cambio / indirizzo
Standard di transazione
BIP16 – Paga per script hash
Questo BIP descrive il tipo di transazione P2SH (ad es. 3 indirizzi in Bitcoin). Il suo attuale utilizzo principale sono le transazioni MultiSig e SegWit.
BIP141 – Testimone segregato (livello di consenso)
Questo BIP ha abilitato SegWit come soft-fork in Bitcoin. È anche un prerequisito per la rete Lightning in quanto risolve il problema della malleabilità dei tipi di transazione pre-segwit.
In particolare, BIP141 definisce il seguente nuovo tipo di transazione: P2WPKH, P2WPKH-in-P2SH, P2WSH, P2WSH-in-P2SH.
BIP173 – Formato indirizzo Base32 per output di controllo nativi v0-16
Questo BIP propone un nuovo formato per gli indirizzi SegWit nativi, chiamato Bech32.
BIP125 – Segnalazione opt-in per la sostituzione completa del canone
Questo BIP descrive la politica di segnalazione Sostituisci per tariffa (RBF). Consente agli spendenti di aggiungere un segnale a una transazione che indica che vogliono essere in grado di sostituire quella transazione fino a quando non viene confermata.
Elenco dei BIP [ aggiornato al 3/11/2022]
Numero | Strato | Titolo | Proprietario | Tipo | Stato |
---|---|---|---|---|---|
1 | Scopo e linee guida del BIP | Amir Taak | Processi | Sostituito | |
2 | Processo BIP, rivisto | Luke Dashjr | Processi | Attivo | |
8 | Versione bit con bloccaggio per altezza | Shaolin Fry, Luke Dashjr | Informativo | Brutta copia | |
9 | Bit di versione con timeout e ritardo | Pieter Wuille, Peter Todd, Greg Maxwell, Rusty Russell | Informativo | Finale | |
10 | Applicazioni | Distribuzione delle transazioni multi-sig | Alan Reiner | Informativo | Ritirato |
11 | Applicazioni | Transazioni standard M-di-N | Gavin Andresen | Standard | Finale |
12 | Consenso (forcella morbida) | OP_VAL | Gavin Andresen | Standard | Ritirato |
13 | Applicazioni | Formato indirizzo per l’hash pay-to-script | Gavin Andresen | Standard | Finale |
14 | Servizi alla pari | Versione protocollo e User Agent | Amir Taaki, Patrick Strateman | Standard | Finale |
15 | Applicazioni | Alias | Amir Taak | Standard | Differito |
16 | Consenso (forcella morbida) | Paga su Script Hash | Gavin Andresen | Standard | Finale |
17 | Consenso (forcella morbida) | OP_CHECKHASHVERIFY (CHV) | Luke Dashjr | Standard | Ritirato |
18 | Consenso (forcella morbida) | hashScriptCheck | Luke Dashjr | Standard | Proposto |
19 | Applicazioni | Transazioni standard M-di-N (SigOp basso) | Luke Dashjr | Standard | Respinto |
20 | Applicazioni | Schema URI | Luke Dashjr | Standard | Sostituito |
21 | Applicazioni | Schema URI | Nils Schneider, Matt Corallo | Standard | Finale |
22 | API/RPC | getblocktemplate – Fondamenti | Luke Dashjr | Standard | Finale |
23 | API/RPC | getblocktemplate – Estrazione in pool | Luke Dashjr | Standard | Finale |
30 | Consenso (forcella morbida) | Transazioni duplicate | Pieter Wuille | Standard | Finale |
31 | Servizi alla pari | messaggio Pong | Mike Hearn | Standard | Finale |
32 | Applicazioni | Portafogli gerarchici deterministici | Pieter Wuille | Informativo | Finale |
33 | Servizi alla pari | Nodi stratificati | Amir Taak | Standard | Respinto |
34 | Consenso (forcella morbida) | Blocco v2, Altezza in Coinbase | Gavin Andresen | Standard | Finale |
35 | Servizi alla pari | messaggio di mempool | Jeff Garzik | Standard | Finale |
36 | Servizi alla pari | Servizi personalizzati | Stefano Tommaso | Standard | Respinto |
37 | Servizi alla pari | Filtraggio della fioritura di connessione | Mike Hearn, Matt Corallo | Standard | Finale |
38 | Applicazioni | Chiave privata protetta da passphrase | Mike Caldwell, Aaron Voisine | Standard | Brutta copia |
39 | Applicazioni | Codice mnemonico per la generazione di chiavi deterministiche | Marek Palatinus, Pavol Rusnak, Aaron Voisine, Sean Bowe | Standard | Proposto |
40 | API/RPC | Protocollo del filo di strato | Marek Palatino | Standard | Numero BIP assegnato |
41 | API/RPC | Protocollo di estrazione degli strati | Marek Palatino | Standard | Numero BIP assegnato |
42 | Consenso (forcella morbida) | Un’offerta monetaria limitata per Bitcoin | Pieter Wuille | Standard | Finale |
43 | Applicazioni | Scopo Campo per portafogli deterministici | Marek Palatinus, Pavol Rusnak | Informativo | Finale |
44 | Applicazioni | Gerarchia multi-account per portafogli deterministici | Marek Palatinus, Pavol Rusnak | Standard | Proposto |
45 | Applicazioni | Struttura per portafogli multifirma P2SH deterministici | Manuel Araoz, Ryan X. Charles, Matias Alejo Garcia | Standard | Proposto |
47 | Applicazioni | Codici di pagamento riutilizzabili per portafogli deterministici gerarchici | Giusto Ranvier | Informativo | Brutta copia |
49 | Applicazioni | Schema di derivazione per conti basati su P2WPKH annidati in P2SH | Daniel Weigl | Informativo | Finale |
50 | Marzo 2013 Chain Fork post mortem | Gavin Andresen | Informativo | Finale | |
60 | Servizi alla pari | Messaggio “versione” a lunghezza fissa (campo Relè-Transazioni) | Amir Taak | Standard | Brutta copia |
61 | Servizi alla pari | Rifiuta messaggio P2P | Gavin Andresen | Standard | Finale |
62 | Consenso (forcella morbida) | Affrontare la malleabilità | Pieter Wuille | Standard | Ritirato |
63 | Applicazioni | Indirizzi invisibili | Pietro Todd | Standard | Numero BIP assegnato |
64 | Servizi alla pari | messaggio getutxo | Mike Hearn | Standard | Obsoleto |
65 | Consenso (forcella morbida) | OP_CHECKLOCKTIMEVERIFY | Pietro Todd | Standard | Finale |
66 | Consenso (forcella morbida) | Firme DER rigorose | Pieter Wuille | Standard | Finale |
67 | Applicazioni | Indirizzi multi-firma deterministici Pay-to-script-hash tramite l’ordinamento delle chiavi pubbliche | Thomas Kerin, Jean-Pierre Rupp, Ruben de Vries | Standard | Proposto |
68 | Consenso (forcella morbida) | Tempo di blocco relativo utilizzando numeri di sequenza imposti dal consenso | Mark Friedenbach, BtcDrak, Nicolas Dorier, kinoshitajona | Standard | Finale |
69 | Applicazioni | Indicizzazione lessicografica degli input e degli output delle transazioni | Atlante di Kristov | Informativo | Proposto |
70 | Applicazioni | Protocollo di pagamento | Gavin Andresen, Mike Hearn | Standard | Finale |
71 | Applicazioni | Tipi MIME del protocollo di pagamento | Gavin Andresen | Standard | Finale |
72 | Applicazioni | bitcoin: estensioni uri per Payment Protocol | Gavin Andresen | Standard | Finale |
73 | Applicazioni | Utilizza l’intestazione “Accetta” per la negoziazione del tipo di risposta con gli URL delle richieste di pagamento | Stefano Coppia | Standard | Finale |
74 | Applicazioni | Consenti valore zero OP_RETURN nel protocollo di pagamento | Toby Padilla | Standard | Respinto |
75 | Applicazioni | Scambio di indirizzi fuori banda utilizzando la crittografia del protocollo di pagamento | Justin Newton, Matt David, Aaron Voisine, James MacWhyte | Standard | Finale |
78 | Applicazioni | Una semplice proposta di Payjoin | Nicola Dorier | Standard | Brutta copia |
79 | Applicazioni | Bustapay :: un pratico protocollo coinjoin | Ryan Havar | Informativo | Sostituito |
80 | Gerarchia per i portafogli multisig deterministici del pool di votazioni non colorati | Justus Ranvier, Jimmy Song | Informativo | Differito | |
81 | Gerarchia per i portafogli multisig deterministici del pool di votazioni colorate | Justus Ranvier, Jimmy Song | Informativo | Differito | |
83 | Applicazioni | Alberi chiave deterministici gerarchici dinamici | Eric Lombrozo | Standard | Respinto |
84 | Applicazioni | Schema di derivazione per conti basati su P2WPKH | Paolo Rusnak | Informativo | Brutta copia |
85 | Applicazioni | Entropia deterministica dai portachiavi BIP32 | Ethan Kosakovsky | Informativo | Brutta copia |
90 | Schieramenti sepolti | Suha Daftuar | Informativo | Finale | |
91 | Consenso (forcella morbida) | Soglia ridotta Segwit MASF | James Hilliard | Standard | Finale |
98 | Consenso (forcella morbida) | Alberi Merkle veloci | Mark Friedenbach, Kalle Alm, BtcDrak | Standard | Brutta copia |
99 | Motivazione e implementazione delle modifiche alle regole di consenso ([soft/hard]fork) | Jorge Timón | Informativo | Respinto | |
100 | Consenso (hard fork) | Dimensione massima del blocco dinamico per voto del minatore | Jeff Garzik, Tom Harding, Dagur Valberg Johannsson | Standard | Respinto |
101 | Consenso (hard fork) | Aumenta la dimensione massima del blocco | Gavin Andresen | Standard | Ritirato |
102 | Consenso (hard fork) | La dimensione del blocco aumenta a 2 MB | Jeff Garzik | Standard | Respinto |
103 | Consenso (hard fork) | Dimensione del blocco a seguito della crescita tecnologica | Pieter Wuille | Standard | Ritirato |
104 | Consenso (hard fork) | ‘Block75’ – Dimensione massima del blocco come la difficoltà | t.khan | Standard | Respinto |
105 | Consenso (hard fork) | Algoritmo di retargeting della dimensione del blocco basato sul consenso | BtcDrak | Standard | Respinto |
106 | Consenso (hard fork) | Limite massimo della dimensione del blocco Bitcoin a controllo dinamico | Upal Chakraborty | Standard | Respinto |
107 | Consenso (hard fork) | Limite dinamico sulla dimensione del blocco | Washington Y. Sanchez | Standard | Respinto |
109 | Consenso (hard fork) | Limite di dimensione di due milioni di byte con limiti sigop e sighash | Gavin Andresen | Standard | Respinto |
111 | Servizi alla pari | Bit di servizio NODE_BLOOM | Matt Corallo, Peter Todd | Standard | Proposto |
112 | Consenso (forcella morbida) | VERIFICA SEQUENZA | BtcDrak, Mark Friedenbach, Eric Lombrozo | Standard | Finale |
113 | Consenso (forcella morbida) | Tempo mediano trascorso come punto finale per i calcoli del tempo di blocco | Thomas Kerin, Mark Friedenbach | Standard | Finale |
114 | Consenso (forcella morbida) | Albero della sintassi astratta merkelizzata | Johnson Lau | Standard | Respinto |
115 | Consenso (forcella morbida) | Protezione generica anti-riproduzione tramite Script | Luke Dashjr | Standard | Respinto |
116 | Consenso (forcella morbida) | MERKLEBRANCH VERIFICA | Mark Friedenbach, Kalle Alm, BtcDrak | Standard | Brutta copia |
117 | Consenso (forcella morbida) | Semantica dell’esecuzione della chiamata in coda | Mark Friedenbach, Kalle Alm, BtcDrak | Standard | Brutta copia |
118 | Consenso (forcella morbida) | SIGHASH_NOINPUT | Cristiano Decker | Standard | Brutta copia |
119 | Consenso (forcella morbida) | CONTROLLA MODELLO VERIFICA | Jeremy Rubin | Standard | Brutta copia |
120 | Applicazioni | Prova del pagamento | Kalle Rosenbaum | Standard | Ritirato |
121 | Applicazioni | Schema URI della prova di pagamento | Kalle Rosenbaum | Standard | Ritirato |
122 | Applicazioni | Schema URI per riferimenti/esplorazione Blockchain | Marco Pontello | Standard | Brutta copia |
123 | Classificazione BIP | Eric Lombrozo | Processi | Attivo | |
124 | Applicazioni | Modelli di script deterministici gerarchici | Eric Lombrozo, William Swanson | Informativo | Respinto |
125 | Applicazioni | Attivazione della segnalazione di sostituzione completa con tariffa | David A. Harding, Peter Todd | Standard | Proposto |
126 | Migliori pratiche per transazioni di script di input eterogenee | Atlante di Kristov | Informativo | Brutta copia | |
127 | Applicazioni | Transazioni a prova di riserva semplici | Steven Roose | Standard | Brutta copia |
130 | Servizi alla pari | messaggio sendheader | Suha Daftuar | Standard | Proposto |
131 | Consenso (hard fork) | Specifica “Transazione di coalescenza” (input con caratteri jolly) | Chris Sacerdote | Standard | Respinto |
132 | Processo di accettazione del BIP basato sul comitato | Andy Chase | Processi | Ritirato | |
133 | Servizi alla pari | messaggio di filtro | Alex Morcos | Standard | Brutta copia |
134 | Consenso (hard fork) | Transazioni flessibili | Tom Zander | Standard | Respinto |
135 | Votazione dei bit della versione generalizzata | Sancio Panza | Informativo | Respinto | |
136 | Applicazioni | Riferimenti di posizione Tx codificati Bech32 | Велеслав, Jonas Schnelli, Daniel Pape | Informativo | Brutta copia |
137 | Applicazioni | Firme di messaggi utilizzando chiavi private | Cristoforo Gilliard | Standard | Finale |
140 | Consenso (forcella morbida) | TXID normalizzato | Cristiano Decker | Standard | Respinto |
141 | Consenso (forcella morbida) | Testimone segregato (livello di consenso) | Eric Lombrozo, Johnson Lau, Pieter Wuille | Standard | Finale |
142 | Applicazioni | Formato indirizzo per testimonianza segregata | Johnson Lau | Standard | Ritirato |
143 | Consenso (forcella morbida) | Verifica della firma della transazione per il programma di verifica della versione 0 | Johnson Lau, Pieter Wuille | Standard | Finale |
144 | Servizi alla pari | Testimone segregato (servizi alla pari) | Eric Lombrozo, Pieter Wuille | Standard | Finale |
145 | API/RPC | getblocktemplate Aggiornamenti per la testimonianza separata | Luke Dashjr | Standard | Finale |
146 | Consenso (forcella morbida) | Gestire la malleabilità della codifica delle firme | Johnson Lau, Pieter Wuille | Standard | Ritirato |
147 | Consenso (forcella morbida) | Gestire la malleabilità degli elementi fittizi | Johnson Lau | Standard | Finale |
148 | Consenso (forcella morbida) | Attivazione obbligatoria della distribuzione segwit | Fritto Shaolin | Standard | Finale |
149 | Consenso (forcella morbida) | Testimone segregato (secondo schieramento) | Fritto Shaolin | Standard | Ritirato |
150 | Servizi alla pari | Autenticazione tra pari | Jonas Schnelli | Standard | Brutta copia |
151 | Servizi alla pari | Crittografia della comunicazione peer-to-peer | Jonas Schnelli | Standard | Ritirato |
152 | Servizi alla pari | Relè a blocco compatto | Matt Corallo | Standard | Finale |
154 | Servizi alla pari | Limitazione della velocità tramite sfide specificate dai pari | Karl-Johan Alm | Standard | Ritirato |
155 | Servizi alla pari | messaggio addrv2 | Wladimir J. van der Laan | Standard | Brutta copia |
156 | Servizi alla pari | Dandelion – Routing per il miglioramento della privacy | Brad Denby, Andrew Miller, Giulia Fanti, Surya Bakshi, Shaileshh Bojja Venkatakrishnan, Pramod Viswanath | Standard | Respinto |
157 | Servizi alla pari | Filtraggio blocco lato client | Olaoluwa Osuntokun, Alex Akselrod, Jim Posen | Standard | Brutta copia |
158 | Servizi alla pari | Filtri a blocchi compatti per clienti leggeri | Olaoluwa Osuntokun, Alex Akselrod | Standard | Brutta copia |
159 | Servizi alla pari | Bit di servizio NODE_NETWORK_LIMITED | Jonas Schnelli | Standard | Brutta copia |
171 | Applicazioni | API di informazioni su valuta/tasso di cambio | Luke Dashjr | Standard | Respinto |
173 | Applicazioni | Formato indirizzo Base32 per output di controllo nativi v0-16 | Pieter Wuille, Greg Maxwell | Informativo | Finale |
174 | Applicazioni | Formato di transazione Bitcoin parzialmente firmato | Andrew Chow | Standard | Finale |
175 | Applicazioni | Protocollo Pay to Contract | Omar Shibli, Nicholas Gregory | Informativo | Respinto |
176 | Denominazione dei bit | Jimmy Canzone | Informativo | Brutta copia | |
178 | Applicazioni | Versione WIF estesa | Karl-Johan Alm | Standard | Brutta copia |
179 | Nome per gli identificatori del destinatario del pagamento | Emil Engler, Marco Falke, Luke Dashjr | Informativo | Brutta copia | |
180 | Servizi alla pari | Block size/peso a prova di frode | Luke Dashjr | Standard | Respinto |
197 | Applicazioni | Contratto di garanzia vincolato a tempo con hash | Matthew Black, Tony Cai | Standard | Brutta copia |
199 | Applicazioni | Transazioni di contratti con blocco temporale hash | Sean Bowe, Daira Hopwood | Standard | Brutta copia |
300 | Consenso (forcella morbida) | Impegni hashrate (livello di consenso) | Paul Sztorc, CryptAxe | Standard | Brutta copia |
301 | Consenso (forcella morbida) | Estrazione alla cieca (livello Consenso) | Paul Sztorc, CryptAxe | Standard | Brutta copia |
310 | Applicazioni | Estensioni del protocollo Stratum | Pavel Moravec, Jan Čapek | Informativo | Brutta copia |
320 | nBit di versione per uso generale | BtcDrak | Standard | Brutta copia | |
322 | Applicazioni | Formato messaggio generico firmato | Karl-Johan Alm | Standard | Brutta copia |
325 | Applicazioni | Sigillo | Karl-Johan Alm, Anthony Towns | Standard | Proposto |
330 | Servizi alla pari | Riconciliazione annunci di transazione | Gleb Naumenko, Pieter Wuille | Standard | Brutta copia |
339 | Servizi alla pari | Inoltro di transazione basato su WTXID | Suha Daftuar | Standard | Brutta copia |
340 | Firme Schnorr per secp256k1 | Pieter Wuille, Jonas Nick, Tim Ruffing | Standard | Brutta copia | |
341 | Consenso (forcella morbida) | Taproot: regole di spesa SegWit versione 1 | Pieter Wuille, Jonas Nick, Anthony Towns | Standard | Brutta copia |
342 | Consenso (forcella morbida) | Convalida degli script Taproot | Pieter Wuille, Jonas Nick, Anthony Towns | Standard | Brutta copia |
350 | Applicazioni | Formato Bech32m per indirizzi di controllo v1+ | Pieter Wuille | Standard | Brutta copia |