Een systeem (of in ons geval, een cryptocurrency platform) wordt gezegd Turing volledig te zijn als het een Turingmachine kan simuleren. Het simuleren van een Turingmachine betekent dat het systeem het vermogen heeft om elke computationele taak op te lossen, gegeven voldoende tijd en rekenkundige bronnen, ongeacht hoe complex de taak is.
Voordat we verder gaan, laten we snel aanraken wat een Turingmachine is. In eenvoudige zin, het is een theoretisch apparaat dat symbolen manipuleert op een strook tape volgens een set regels. Ondanks zijn eenvoud kan een Turingmachine worden aangepast om de logica van elke digitale computer te simuleren.
Het concept van Turing Volledigheid is essentieel bij het bespreken van cryptocurrency platformen omdat het hun computationele capaciteiten beschrijft.
In de praktijk is het belang van Turing volledigheid bij cryptocurrencies voornamelijk gerelateerd aan slimme contracten. Slimme contracten zijn zelfuitvoerende contracten met de voorwaarden van de overeenkomst direct geschreven in de code. Op een Turing volledig platform zoals Ethereum, kunnen deze contracten in theorie elke regels en eventualiteiten incorporeren.
Er is echter een afweging om te overwegen. Turing Volledige systemen zijn vanwege hun complexiteit meestal vatbaarder voor bugs en mogelijke beveiligingsproblemen, terwijl niet-Turing Volledige systemen zoals Bitcoin mogelijk minder veelzijdig maar ook minder kwetsbaar voor dergelijke problemen zijn.
Op het basale niveau is Bitcoin in wezen een programmeertaal en omgeving die is ontworpen om peer-to-peer financiële transacties te faciliteren en te verwerken. Het scriptsysteem van Bitcoin is bewust niet Turing-volledig, wat betekent dat het niet over bepaalde capaciteiten beschikt die volwaardige programmeertalen wel hebben.
Turing-volledigheid is vernoemd naar de maker, de beroemde wiskundige en informaticus Alan Turing. Een systeem wordt geïdentificeerd als Turing-volledig als het de mogelijkheid heeft om elk probleem dat een Turing-machine kan oplossen, op te lossen, mits er voldoende tijd en middelen zijn. Voor Turing-volledigheid zijn slechts twee fundamentele kenmerken nodig: de mogelijkheid om geheugen op te slaan en syntax om dat geheugen te manipuleren - inclusief loops, die het systeem taken laten herhalen.
De scripttaal van Bitcoin heeft bewust geen loops om potentieel problematische situaties te voorkomen waarin scripts oneindig zouden kunnen draaien. Dit draagt bij aan de veiligheid en stabiliteit van het Bitcoin-netwerk - de afwezigheid van loops voorkomt dat kwaadwillende gebruikers scripts maken die netwerkbronnen opslokken en mogelijk de algehele prestaties van het netwerk belemmeren.
Vanwege dit gebrek aan loops is Bitcoin in de conventionele zin niet Turing-volledig. Dit betekent dat er bepaalde computationele taken zijn die het scriptsysteem van Bitcoin niet kan uitvoeren, omdat ze de mogelijkheid vereisen om acties een variabel en onbepaald aantal keren te herhalen.
Ondanks dit zijn er informele oplossingen voorgesteld die Bitcoin, officieus, Turing-volledig zouden kunnen maken. Een dergelijke oplossing houdt in het gebruik van meerdere Bitcoin-transacties om het effect van loops te simuleren. Een andere oplossing gaat over het creëren van off-chain contracten die Turing-volledig zijn en deze verbinden met Bitcoin.
Hoewel deze benaderingen de programmeermogelijkheden van Bitcoin in bepaalde contexten kunnen uitbreiden, veranderen ze het feit niet dat de ingebouwde scriptsysteem van Bitcoin, per ontwerp, niet Turing-volledig is.
Deze omwegen hebben echter hun eigen beperkingen en complexiteiten, en worden daarom niet regelmatig gebruikt. Het ontbreken van Turing-volledigheid wordt niet gezien als een belangrijke beperking voor het beoogde doel van het scriptsysteem van Bitcoin, namelijk het verwerken van financiële transacties.
Ethereum is een gedecentraliseerd, open-source blockchain-systeem dat smart contracts introduceert. Dit zijn scripts die automatisch taken uitvoeren wanneer aan bepaalde voorwaarden is voldaan. De unieke eigenschap van Ethereum, die het onderscheidt van andere cryptocurrencies zoals Bitcoin, is zijn Turing-Volledigheid. Dit betekent dat Ethereum, gegeven genoeg tijd en middelen, de rekenkracht heeft om elk probleem op te lossen dat een computer met onbeperkte middelen kan oplossen, mits het juiste algoritme is geschreven.
In de computationele theorie wordt een systeem of taal als Turing-Volledig beschouwd als het een Turing-machine kan simuleren - een model van berekening dat definieert wat "berekening" betekent. In principe kan een Turing-machine elk probleem oplossen dat kan worden beschreven door een lijst met instructies, gegeven een set invoer. De Turing-Volledigheid van Ethereum betekent dat het elk gegeven algoritme kan uitvoeren of simuleren, niet alleen vooraf gedefinieerde. Dit wordt bereikt door het gebruik van smart contracts in Ethereum.
Smart contracts op het platform van Ethereum voeren de taak uit om deze algoritmen uit te voeren. Smart contracts zijn zelfuitvoerende contracten waarbij de voorwaarden van de overeenkomst in de code zijn geschreven. Deze contracten draaien op de Ethereum Virtual Machine (EVM), die de runtime-omgeving biedt om smart contracts uit te voeren. Een smart contract kan elke vorm van operatie uitvoeren die een normaal computerprogramma kan doen, mits het de nodige middelen heeft (d.w.z., gas in Ethereum-termen).
Door deze combinatie van Turing-Volledigheid, smart contracts, gas, en de EVM, komt Ethereum naar voren als een krachtig blockchain-platform dat in staat is om een breed scala aan complexe toepassingen uit te voeren, van financiële diensten tot games, en meer.
In de wereld van cryptocurrencies speelt Turing-Completeness een sleutelrol bij het maximaliseren van de functionaliteit van smart contracts. Deze term, vernoemd naar Alan Turing, duidt op een systeem dat in staat is elk rekenkundig probleem op te lossen, mits er voldoende tijd en middelen beschikbaar zijn.
Smart contracts zijn zelfuitvoerende contracten die zo zijn geprogrammeerd dat ze de voorwaarden van een overeenkomst kunnen uitvoeren zonder tussenkomst van tussenpersonen. Deze contracten worden opgeslagen op de blockchain, wat zorgt voor transparantie en voorkomt wijzigingen of verwijderingen. Wanneer een specifieke voorwaarde is vervuld, wordt het smart contract geactiveerd en worden vooraf bepaalde acties uitgevoerd. Voorbeelden van dergelijke acties kunnen geldtransfers, data updates en meer zijn.
Niet alle cryptocurrencies ondersteunen Turing-Complete smart contracts. Echter, diegene die dat wel doen, zoals Ethereum, bieden een veel robuuster en veelzijdiger platform voor het ontwikkelen van geavanceerde gedecentraliseerde applicaties (DApps).
Het voornaamste voordeel van het gebruik van een Turing-Complete systeem ligt in zijn veelzijdigheid. Als een systeem Turing-Complete is, kan het worden geprogrammeerd om elke denkbare computeeropdracht uit te voeren. Dus, wanneer smart contracts worden geplaatst in een Turing-Complete systeem, kunnen zij in theorie elke programmeerbare taak uitvoeren. Dit breidt het gebruik van deze smart contracts enorm uit. Ze zijn niet beperkt tot eenvoudige, vooraf gedefinieerde operaties, maar kunnen complexe transacties uitvoeren, interageren met andere contracten en allerlei conditionele logica bevatten.
Concluderend, Turing-Completeness vergroot aanzienlijk de functionaliteit en veelzijdigheid van smart contracts, waardoor ze een integraal onderdeel vormen van de volgende generatie blockchain technologie.
Turing-Complete cryptocurrencies verwijzen naar blockchain platformen die elk type van algoritmische berekening kunnen uitvoeren, op voorwaarde dat ze beschikken over voldoende middelen zoals tijd en opslag. Voorbeelden van Turing-Complete platformen zijn onder andere Ethereum en Cardano. Ondanks hun veelzijdigheid in het mogelijk maken van breed toepasbare blockchain applicaties, gaan Turing-Complete platformen gepaard met verschillende uitdagingen.
Turing-Complete cryptocurrencies hebben te maken met een probleem dat bekend staat als het halting problem, een fenomeen dat zijn oorsprong vindt in de informatica. In essentie laat het halting problem zien dat er geen zekerheid is of een gegeven programma zal stoppen en een uitkomst zal geven of oneindig zal doorgaan. In de context van Turing-Complete cryptocurrencies kan zo'n scenario leiden tot aanzienlijke complicaties. Een eeuwige lus in een smart contract, dat is een type algoritme op basis van blockchain, kan bijvoorbeeld teveel middelen gebruiken of zelfs het gehele netwerk onstabiel maken.
Een aanzienlijke uitdaging die gepaard gaat met Turing-Complete platformen is het verbruik van resources. Door elke vorm van algoritmische berekening toe te staan, kunnen deze platformen inefficiënt gebruik van resources veroorzaken. Een excessief complexe berekening kan bijvoorbeeld de processorkracht van een blockchain netwerk domineren, waardoor andere processen worden beïnvloed. Dit is vooral schadelijk in blockchain netwerken, omdat die meestal afhankelijk zijn van gedecentraliseerde individuele nodes voor rekenkracht. Oververbruik kan leiden tot tragere transactietijden of hogere kosten voor gebruikers.
Turing-Complete blockchain platformen hebben te maken met verhoogde veiligheidsrisico's. Dit komt hoofdzakelijk doordat de flexibiliteit die ze bieden van nature resulteert in verhoogde complexiteit. Deze toegenomen complexiteit kan leiden tot kwetsbaarheden in de systeemcode die aanvallers zouden kunnen uitbuiten. Kwetsbaarheden kunnen variëren van die in de ruwe blockchain code tot die in de smart contracts zelf, wat kan leiden tot ernstige financiële gevolgen, zoals te zien was in eerdere aanvallen, zoals de beruchte DAO hack op het Ethereum netwerk.
Als een aanzienlijke uitdaging, niet alleen voor Turing-Complete cryptocurrencies, maar voor alle blockchain gebaseerde platformen, is schaalbaarheid een fundamenteel probleem. Naarmate het aantal transacties per seconde op het netwerk toeneemt, kan de huidige blockchain infrastructuur moeite hebben om transacties snel te verwerken, wat leidt tot congestie, trage verwerkingstijden en hogere transactiekosten. Dit probleem wordt verder verergerd op Turing-Complete platformen naarmate de complexiteit en het volume van berekeningen toenemen met het aantal mogelijke programma's.