Post
Topic
Board Discussioni avanzate e sviluppo
Re: Visioni di bitcoin
by
arulbero
on 11/12/2018, 19:39:37 UTC

Se sono regole immutabili, devono essre scritte da qualche parte...

mi dici dove trovo l'elenco ufficiale di queste regole immutabili?

e intendo come giustamente dici quelle del layer bitcoin, non di altri layer costruiti sopra o di fianco.


Innanzitutto ottima domanda, osservazione acuta come al solito.

Per regole "immutabili" (dette anche "hard rules" or "the rules of Bitcoin") si intendono quelle classiche che tutti conosciamo, cioè le regole che servono a sancire la validità o meno di un blocco e delle transazioni che esso contiene, e queste regole comprendono tra l'altro la difficoltà, la produzione di tot btc per blocco fino a 21 milioni di bitcoin, l'impossibilità della doppia spesa:

in sostanza queste: https://en.bitcoin.it/wiki/Protocol_rules

esse sono inserite nel codice di tutti i client (full node) ma non so se si trova una qualche "lista ufficiale" scritta da qualche parte fuori dal codice (propendo per il no, visto lo spirito di bitcoin)

EDIT:
il tema non è banale, credo che nel contesto cripto il codice in sè costituisca le regole, quando Satoshi ha rilasciato la sua prima versione del codice ha creato uno standard de facto per quanto riguarda il formato dei dati della blockchain e i modi in cui i nodi dovevano dialogare tra loro.

Da quella prima versione ogni altra versione di Core o ogni altro software alternativo deve essere compatibile nel senso che nodi che girano una qualsiasi versione di Core o altro software devono utilizzare lo stesso protocollo per validare i blocchi e le transazioni e utilizzare lo stesso sistema di messaggi, in pratica devono riuscire a coesistere contemporaneamente nella stessa rete senza produrre divergenze di opinioni (fork).

Chiaramente nel tempo qualche modifica si è resa necessaria, quindi sono avvenuti anche 2 hard fork accidentali quando si è scoperto qualche bug (comportamento del software non voluto) o per qualche dettaglio tecnico di minore importanza

Quote
Two hard forks were created by "protocol change" definition:

    March 2013 Chain Fork (migration from BerkeleyDB to LevelDB caused a chain split)[3]
    CVE-2018-17144 (Bitcoin 0.15 allowed double spending certain inputs in the same block. Not exploited)
https://en.bitcoin.it/wiki/Hardfork
https://en.wikipedia.org/wiki/List_of_bitcoin_forks

ma le regole di validazione sono rimaste sempre le stesse.

Un caso interessante è rappresentato dalla storia del famoso limite di 1MB per blocco, poichè è intrecciato a un altro limite sconosciuto per 3 anni poi eliminato:
Quote
Originally, Bitcoin's block size was limited by the number of database locks required to process it (at most 10000). This limit was effectively around 500-750k in serialized bytes, and was forgotten until 2013 March. In 2010, an explicit block size limit of 1 MB was introduced into Bitcoin by Satoshi Nakamoto. He added it hidden in two commits[1][2][3] in secret. This limit was effectively a no-op due to the aforementioned forgotten limit.

In 2013 March, the original lock limit was discovered by accident (Bitcoin Core v0.8.0 failed to enforce it, leading to upgraded nodes splitting off the network). After resolving the crisis, it was determined that since nobody knew of the limit, it was safe to assume there was consensus to remove it, and a hardfork removing the limit was scheduled and cleanly activated in 2013 May. From this point forward, the 1 MB limit became the effective limiting factor of the block size for the first time.
https://en.bitcoin.it/wiki/Block_size_limit_controversy

Quindi nel 2010 la rete era di fatto ancora formato da Satoshi e pochi altri, e lui poteva permettersi di fare delle modifiche in segreto. La cosa interessante è che il limite relativo al "number of database locks required to process the block" è stato del tutto sconosciuto ai più fino al 2013, questo perchè appunto le regole sono nel codice, e leggere il codice non sempre è semplice.

Interessante il fatto che le regole immutabili di bitcoin non siano nate tipo i 10 comandamenti scolpiti nella pietra ma per certi versi si sono sviluppate in modo anche un po' accidentale e arbitrario, come capita spesso immagino quando si scrive un codice da 0.

Come tutti poi ben sappiamo il dibattito sul limite di 1MB da una parte e su Segwit dall'altra ha poi decretato l'esplosione di fork paralleli tutt'ora esistenti sulla base di un cosiddetto tradimento delle regole originarie / visione di Satoshi che a ben vedere forse proprio chiare e immutabili non lo sono mai state.

E' con la diffusione di bitcoin che le sue regole si sono alquanto stabilizzate (è sempre più difficile introdurre modifiche sostanziali nel codice senza dividere la rete), in una primissima fase non lo erano ovviamente.
Questa crescente immutabilità (che permette oggi e nel futuro pochissimi cambi di rotta e solo se appoggiati da tutti) determina quel valore di cui parlava Plutosky.

Se qualcuno trova qualche riferimento più preciso faccia sapere.