"Satoshi lämnade oss med en monolitisk blob av en kodbas."

Det var bitcoinutvecklaren Cory Fields sätt att säga att Bitcoin Cores kod är snäll trots den innovation som den ofta krediteras med. av en röra bakom kulisserna.

Det är ett problem Fält och andra har kämpat med sedan åtminstone 2015 när han presenterade sina planer på att flytta runt en bit av koden: peer-to-peer-laget.

Problemutvecklarna stöter ofta på att komponenterna inte är helt separerade. Så, om utvecklare ändrar något som bara ska påverka en del bitcoin och hur det fungerar, sade Fields, det kan oavsiktligt påverka en annan, säg, validering, mempool, plånboken eller p2p. För det här gör det svårare för nyare bitcoin-bidragsgivare att lära sig repen.

Så, i projekt som Fields och libconsensus (ett pågående projekt för att tillåta alternativa implementeringar att förbli i konsensus med bitcoin-nätverket) är målet att skilja koden i mer distinkta bitar i en försöka göra det enklare och mindre nödvändigt för utvecklare att förstå hur bitarna passar ihop.

Fält, vars arbete finansieras av MITs Digital Currency Initiative, har arbetat med att bryta ut peer-to-peer-kodbasen i synnerhet.

Mycket av hans arbete gör ett första utseende i Bitcoin Cores senaste mjukvarulägenhet.

Fält berättade för All4bitcoin:

"Såvitt jag vet är det den första storskaliga översynen av peer-to-peer-koden." Han nämnde emellertid att med tiden utvecklades många utvecklare som Jonas Schnelli och Matt Corallo, har bidragit till skiktet, och viktigare har många fler haft en hand att granska och testa förändringarna.

Det peer-to-peer-lagret handlar om kopplingar mellan tusentals bitcoinnodor på nätverket (kanske mer än 50 000, men exakta räkningar är svåra att komma med) som ständigt pratar med varandra andra, passerar information som användare skickar bitcoins eller gruvarbetare skapar nya block.

Bug-upptäckt

En knepig del är att bitcoin-nätverket värderas till ungefär 19 miljarder dollar, vilket betyder att förändringar i den underliggande koden måste genomföras extremt noggrant.

Av detta och andra skäl har refactoring inte varit en enkel process. Inte ens för Fields, vem är en av de mer aktiva bidragsgivarna till Bitcoin Core. ("Jag spenderar nästan alla mina vakna timmar på bitcoin", sa han.)

Först försökte han ett separat lager från början. Den ansträngningen "misslyckades illa".

Hans senare arbetssätt för att förbättra den befintliga kodbasen fungerade förmodligen bättre än väntat men ledde till en "Satoshi-era" bug-upptäckt.

"När jag började bryta upp saker märkte jag någonting konstigt om Cores bandbreddsanvändning under första blocknedladdning," sa Fields.

Problemet var att när en nod skulle ladda ner block från en annan nod, var hastigheten vid vilken blocken passerade längs ibland snabb, andra gånger långsam - och på oväntade nivåer.

Grävde vidare, bestämde han och andra utvecklare att noder skulle ensam vägra att skicka data och bearbeta data samtidigt (även om detta är en förenkling). Noden skulle bara göra en process i taget.

Hastighetskorrigering

Lösningen som laget äntligen kom fram såg sin debut i den senaste Bitcoin Core-koden, och ändrade hur snabbt noder kan skicka information till varandra.

"Speciellt får p2p-lagret en enorm hastighet," sade Fields.

Han körde några tester för att jämföra den senaste bitcoinversionen (0. 13. 2) med den nya versionen med förbättringarna (0. 14 0), titta på noder som användes i molnet på Amazon EC2-instanser med två CPUer och 4 GB RAM.

Testerna visade en fördubbling i hastighet - åtminstone när man jämför prestanda för att skicka data mellan två v0. 13. 2 noder, mot mellan två v0. 14. 0 noder.

Tillvägagångssättet här är att det kan leda till lite mindre än en två gånger bättre prestanda på det riktiga nätverket, enligt Fields.

Varaktiga fördelar

Nu är peer-to-peer-laget mest avskilt från resten.

Det är värt att upprepa att de ovanstående prestationsförbättringarna åt sidan, de flesta av ändringarna är inte de som användarna kommer att märka, men är mer en välsignelse för utvecklare.

Med detta sagt är hoppet att de kan få långsiktiga konsekvenser.

"Jag hoppas det tillåter oss att förbättra p2p i en högre takt nu," sade Fields.

Det hade till exempel varit svårare att göra de ändringar som inkluderades i den senaste versionen av Core om fält inte hade arbetat för att isolera koden.

Han sa:

"[T] här var en relativt enkel ändring som kunde göras i tid för 0. 14 som skulle ha varit mycket mer komplicerat tidigare."

Snabbval av bild via Shutterstock. Cory Fields bild via All4bitcoin