Blog

Consensussoftware

Gedistribueerde softwarenodes vragen na te denken over de software zelf, maar ook over de ethische aspecten die aan deze processen van besluitvorming verbonden zijn.

Volgens Dasgupta (2014) (1) begint de ontwikkeling van software bij John Wheeler die in 1949 tijdens een presentatie op een conferentie in Groot Brittannië regels uiteenzette voor de wijze waarop hardware in de vorm van een computer kan worden geprogrammeerd om bepaalde taken uit te voeren.

De regels die hiervoor door Wheeler op papier zijn gezet worden, later ook wel benoemd als software, zo stelt Dasgupta. De ontwikkeling van software betekent volgens Dasgupta dat een nieuwe symbiose ontstaat tussen: “the physical computer built of electronic and electro mechanical computers and the liminal, quasi autonomous two faced artefacts called computer programs (or later software) that would serve as the interface between the human and the user and the physical computer”.

De Amerikaanse computerwetenschapper Leslie Lamport houdt zich in de zeventiger jaren van de vorige eeuw bezig met hoe gedistribueerde entiteiten onderling via software met elkaar kunnen worden verbonden en door betrouwbare onderlinge communicatie foutloos kunnen samenwerken. Naar de mening van Lamport: “A distributed system consists of a collection of distinct processes which are spatially separated and which communicate with one another by exchanging messages. A network of interconnected computers, such as the ARPA-system, is a distributed system” (1978, pp. 558) (2). Een betrouwbaar communicatieproces tussen gedistribueerde entiteiten, noodzakelijk voor het bereiken van overeenstemming, definieert Lamport als een samenstelling van gebeurtenissen met een vooraf bepaalde structuur. Of zoals hij stelt: “We assume that sending a message is an event in a process” (1978, pp.559).

Consensus

In 1998 (3) publiceert Lamport een artikel waarin hij een consensusprincipe uiteenzet voor het bereiken van overeenstemming tussen fault tolerante en gedistribueerd opererende systemen. Lamport merkt in dit artikel op dat een van de meest voorkomende problemen waarmee gedistribueerd opererende systemen worden geconfronteerd is dat zij nooit zeker weten welke systemen beschikbaar of nog geschikt zijn voor deelname aan het noodzakelijke communicatieproces voor het bereiken van onderlinge overeenstemming. Om dit probleem op te lossen stelt Lamport voor dat: “Each entity maintained a ledger in which he recorded the numbered sequence of decrees that were passed” (1998, pp. 2).

Elke systeem krijgt een ledger/grootboek waarin de entiteit zelf met onuitwisbare inkt de genomen besluiten moet bijhouden zodat deze regels daarna niet kunnen worden veranderd of gewist. De entiteiten hebben dit ledger/grootboek altijd bij zich waardoor zij voortdurend kennis kunnen nemen van eerder genomen besluiten. Om deel te nemen aan de stemmingen moeten de entiteiten fysiek aanwezig zijn bij de stemming en gebruik maken van berichten die onderling worden verzonden en ontvangen.

In 2008 publiceert een persoon onder de naam Nakomoto (4) een paper op het internet. Dit paper opent met de constatering dat: “Commerce on the Internet has come to rely almost exclusively on financial institutions serving as trusted third parties to process electronic payments” (2008). Nakomoto gaat er van uit dat op dat moment het kopen en verkopen van goederen en diensten steeds meer wordt uitgevoerd op basis van transacties die tot stand komen door communicatie tussen in netwerken – zoals het internet – verbonden computers en hun software. Hij stelt vast dat: “What is needed is an electronic payment system based on cryptographic proof instead of trust”. Het elektronisch betaalsysteem met de naam bitcoin is er volgens Nakomoto op gericht om: “any two willing parties to transact directly with each other without the need for a trusted third party”.

Het betaalsysteem gaat er verder vanuit dat de willekeurige deelnemers aan het netwerk komen en gaan en dat deelnemers: “accepting the proof-of-work chain as proof of what happened while they were gone”. Voor de validatie van de transacties maakt Nakomoto gebruik van een consensusalgoritme waarvan hij stelt: ”Any needed rules and incentives can be enforced with this consensus mechanism”. In 2018 wordt, zoals ik eerder heb beschreven (2018) (5), een onderzoeksvoorstel ingediend bij de ITU voor een Blockchain of Things. In dit voorstel wordt consensus gedefinieerd als: “a broader term overarching the entire flow for a blockchain of things transaction, in which the entities involved in a BoT generate agreements and to confirm the correctness of the BoT transaction”.

Consensussoftware

In 2018 werken twee studenten van de University of Applied Science Rotterdam bij Centric in Gouda aan (afstudeer)onderzoeken over blockchaintechnologie. Florian van Herk (6) (Informatica) houdt zich bezig met een opdracht voor het realiseren van het paxos consensus protocol met behulp van softwarenodes, terwijl Dirk-Pieter Jens (7) (Business Informatics & Management), onderzoek doet naar beschikbare data die in de gerealiseerde blockchainpilot door de softwarenodes potentieel kan worden gebruikt.

Florian gaat uit van een private of permissioned netwerk waarin alleen geïdentificeerde deelnemers aanwezig zijn. Hij bouwt het paxos consensus algoritme in .NET core programmeersoftware om aan te tonen hoe consensusprocedures tussen softwarenodes werken en wat deze samenwerking kan betekenen. In eerste instantie splitst hij zijn onderzoeksopdracht in twee delen en bouwt eerst een netwerklaag waarin softwarenodes kunnen functioneren. Hij stelt hierover: “This network layer would allow nodes to communicate with each other in a peer-to-peer manner, which means that every node communicates which each other” (2018:18). Voor het bouwen van de softwarenodes analyseert hij uitvoerig het artikel van Lamport en daaraan gerelateerde teksten. Op basis van de opgedane kennis: “An implementation of the Paxos algorithm was written in .NET core. Besides, multiple tests have been written to understand the qualities and shortcomings of the Paxos algorithm” (2018:3).

Boven verwachting werken de ontwikkelde softwarenodes verbonden in het netwerk goed samen. Ze zijn zelfstandig in staat in een continu proces van stemming overeenstemming te bereiken over gezamenlijk uit te voeren informatietransacties in een a-synchrone communicatieomgeving zonder tussenkomst van een derde partij. De in de procedure gebruikte gegevens worden door de softwarenodes gedistribueerd vastgelegd in een eigen en daarmee gedistribueerde ledger. Op basis van zijn bevindingen concludeert Florian: “The protocol works well on the built network layer that is, no abnormalities have been observed, and since .NET has great async support, writing asynchronous functions for an asynchronous environment poses no problem. Various test cases have been written based on the Synod Protocol, to showcase its functionality, and showcase its fault tolerant properties” (2018:51).

Op basis van de ontwikkelde softwarenodes is Dirk-Pieter Jens in staat te onderzoeken of een betrouwbaar communicatiesysteem tussen softwarenodes in de logistiek – bijvoorbeeld warehousemanagementsystemen, transportmanagementsystemen of boardcomputers van vrachtwagens – kan worden gerealiseerd op basis van blockchaintechnologie. Opmerkelijk is dat op basis van de uitgevoerde analyses meer standaarddata voor handen lijkt te zijn in de logistieke sector dan verwacht voor het gebruik binnen een consensus netwerk. De combinatie van de ontwikkeling van de softwarenodes en de analyse van beschikbare data voor gebruik in het netwerk blijkt een goede multidisciplinaire samenwerking te zijn om het denken over het gebruik van consensusmogelijkheden tussen bestaande softwarenodes te bevorderen.

De software wordt momenteel, na het afstuderen van beide studenten, hergebruikt in een promotieonderzoek dat is gericht op betrouwbare uitwisseling en deling van data en informatie tussen gedistribueerde software-entiteiten op basis van het Building Information Modeling. Verder onderzoek wordt uitgevoerd naar toekomstige mogelijkheden voor het uitwisselen en delen van data en informatie tussen gedistribueerde software-entiteiten in overheidsnetwerken. Ten slotte wordt onderzoek gedaan naar de toepassing en het gebruik van blockchaintechnologie in het kader van cybersecurity.

Conclusie

Blockchaintechnologie is in essentie software. Met behulp van deze software kunnen gedistribueerd opererende softwarenodes gecombineerd met hardware worden verbonden in netwerken en onderling betrouwbaar communiceren. De onderlinge communicatie kan door de softwarenodes worden gebruikt om gezamenlijk beslissingen te nemen zonder tussenkomst van een derde partij, in dit geval de mens. De gedachte dat gedistribueerde functionerende softwarenodes in onderlinge samenwerking geen mensen meer nodig hebben om beslissingen te nemen die wel consequenties kunnen hebben voor de mens zelf is een ontwikkeling die niet alleen vraagt na te denken over de software zelf, maar ook over de ethische aspecten die aan deze processen van besluitvorming verbonden zijn.

1 Dasgupta S. (2014) It began with Babbage. The genesis of computer science. New York, Oxford University Press. ISBN 978019930412
2 Lamport L. Time, Clocks, and the ordering of events in a distributed system. Communication if the ACM, July 1978, Volume 21, Number 7. Pp. 558-565
3 Lamport L. (1998) The part-time parliament ACM Transactions on Computer Systems 16, 2, (May 1998). Pp. 133-169
4 Nakomoto S. (2008) Bitcoin: A Peer-to-Peer electronic cash system www.bitcoin.org
5 Lier v. B. (2008) Blockchain-of-Things
6 Herk v. F. (2018) Paxos Blockchain. A private blockchain simulation based on the Paxos consensus algorithm. University of Applied Science Rotterdam, June 2018
7 Jens D.P. (2018) CO2 footprint op de blockhain. Een verkenning van de mogelijkheden voor een real time berekening van CO2 uitstoot met gebruikmaking van blockchain-technologie. University of Applied Science Rotterdam, June 2018

Plaats een reactie

U moet ingelogd zijn om een reactie te kunnen plaatsen.
Registreren