code

Solidity - Heldere uitleg over deze programmeertaal van Ethereum

Alle software die we gebruiken is gemaakt door middel van een code. En die code wordt geschreven in een bepaalde programmeertaal. Zo zijn websites gemaakt door middel van HTML en CSS, en worden computerprogramma's vaak geschreven in C#. Ook blockchains worden geschreven in een programmeertaal. Iedere blockchain gebruikt daarvoor een andere programmeertaal.

Dit kan een bestaande programmeertaal zijn, maar ook een zelfbedachte taal. Dat is ook het geval voor de Ethereum-blockchain, welke gebruik maakt van de programmeertaal Solidity. 

In dit artikel leggen we je meer uit over wat Solidity is, hoe het werkt en hoe jij deze programmeertaal zou kunnen leren. Want wanneer je deze taal eenmaal goed beheerst, ben je ook in staat om gedecentraliseerde applicaties (dApps) voor Ethereum te schrijven. En daar zou je heel veel aan kunnen hebben!

Bekijk snel

Wat is Solidity?

Solidity is een object-georiënteerde programmeertaal welke wordt gebruikt voor het schrijven van applicaties die op de blockchain van Ethereum draaien. Daarnaast wordt deze programmeertaal ook door enkele andere blockchains gebruikt. Echter, Ethereum was en blijft de eerste blockchain waar deze taal voor wordt gebruikt.

Het idee voor Solidity is bedacht in augustus 2014 door Gavin Wood. Dit is een van de medeoprichters van Ethereum. Echter was hij niet degene die het idee heeft gerealiseerd. Christian Reitwiessner, Alex Beregszaszi en enkele andere programmeurs hebben Solidity namelijk verder uitgewerkt en ervoor gezorgd dat het te gebruiken is door anderen. 

Ze hebben deze programmeertaal ontwikkeld zodat andere ontwikkelaars applicaties konden bouwen voor smart contracts die draaien op de Ethereum Virtual Machine (EVM). Solidity is gebaseerd op de ECMAScript syntax, waardoor het voor ontwikkelaars vrij eenvoudig is om gebruik te maken van Solidity. Dit is namelijk een basisprincipe die je vaak terug ziet komen bij de populaire en bekende programmeertalen.

Het is voor ontwikkelaars ook mogelijk om andere programmeertalen te gebruiken waarmee ze kunnen programmeren op EVM. Denk bijvoorbeeld aan Serpent en Mutan. Echter heeft Solidity een aantal kenmerken waardoor het voor ontwikkelaars voordelig kan uitpakken om gebruik te maken van deze programmeertaal. Denk bijvoorbeeld aan de hiërarchie en de structuur van de taal.

In onderstaande video wordt Solidity binnen enkele minuten op een duidelijke manier uitgelegd. Wanneer je het lastig vindt om te begrijpen wat Solidity is, raad ik je aan om deze video even te bekijken.

Wie maakt er gebruik van Solidity?

Solidity wordt zoals gezegd voornamelijk door Ethereum gebruikt. Ontwikkelaars die een smart contracts of applicatie op de blockchain willen schrijven, gebruiken hier Solidity voor. Er zijn tegenwoordig echter ook een hoop andere blockchains die gebruikt maken van Solidity. Dit komt doordat er steeds meer blockchainontwikkelaars zijn die deze taal onder de knie hebben. Het wordt hierdoor makkelijker om nieuwe projecten met deze taal te schrijven.

Dit zijn een aantal andere blockchain welke gebruik maken van Solidity:

Een voorbeeld van Solidity code

Wanneer je bekend bent met programmeertalen, zal onderstaande code je misschien wel wat zeggen. Solidity is namelijk te vergelijken met andere bekende programmeertalen, omdat het verschillende overeenkomsten bevat. Onderstaande code is een voorbeeld van hoe Solidity eruit ziet.

 

Voorbeeld van Solidity-code

pragma solidity >= 0.7.0 <0.8.0;

contract Coin {
     // The keyword "public" makes variables
     // accessible from other contracts

     address public minter;
     mapping (address => uint) public balances;

     // Events allow clients to react to specific
     // contract changes you declare

     event Sent (address from, address to, uint amount);

     // Constructor code is only run when the contract
     // is created

     constructor() public {
          minter = msg.sender;
     }

     // Sends an amount of newly created coins to an address
     // Can only be called by the contract creator

     function mint(address receiver, uint amount) public {
          require(msg.sender == minter);
          require(amount < 1e60);
          balances[receiver] += amount;
     }

     // Sends an amount of existing coins
     // from any caller to an address

     function send(address receiver, uint amount) public {
          require(amount <= balances[msg.sender], "Insufficient balance.");
          balances[msg.sender] -= amount;
          balances[receiver] += amount;
          emit Sent (msg.sender, receiver, amount);
     }
}

Bron: https://en.wikipedia.org/wiki/Solidity

Hoe werken smart contracts van Ethereum?

Solidity wordt voornamelijk gebruikt voor het schrijven van smart contracts op de blockchain van Ethereum. Om te begrijpen wat Solidity nou zo speciaal maakt, is het verstandig om ook te weten hoe de smart contracts op Ethereum werken. Solidity is immers hetgeen dat het mogelijk maakt dat deze smart contracts kunnen bestaan. Gelukkig is het niet lastig te begrijpen hoe een smart contract werkt en waar het voor gebruikt kan worden.

Een smart contracts is een stukje code die continu bepaalde variabelen aan het controleren is. Op het moment dat een variabelen aan de ingestelde waarde voldoet, wordt er automatisch een functie uitgevoerd. Deze waardes en de uit te voeren functie worden van te voren bepaald door de schrijven van het contract.

Door middel van smart contracts is het mogelijk om tussenpartijen uit te sluiten. Denk bijvoorbeeld aan een notaris. Stel dat jij een grote website koopt, zou de koopovereenkomst als smart contract geprogrammeerd kunnen worden. De verkoper stuurt dat de inloggegevens naar het smart contract, welke deze in bewaring houdt. Vervolgens wordt het smart contract zo geprogrammeerd dat het de wallet van de verkoper in de gaten houdt.

Op het moment dat jij het juiste bedrag naar de wallet van de verkoper hebt overgemaakt, herkent het smart contract de betaling. Vervolgens zullen de inloggegevens van de website automatisch naar jou gestuurd worden. Hierdoor ontstaat er dus veel meer vertrouwen tussen de betrokken partijen, omdat oplichting vrijwel onmogelijk is.

Kritiek op Solidity

Doordat er zoveel mogelijk is met Solidity en er steeds meer blockchains zijn die hier gebruik van maken, zou je misschien denken dat dit een van de beste uitvindingen is geweest voor de blockchainwereld.

Toch is er ook veel kritiek op deze programmeertaal. Dit komt doordat Solidity zelf in bepaalde gevallen eigenlijk helemaal niet zo veilig blijkt te zijn. Hierdoor moet er van alles gedaan worden om deze beveiligingslekken op een andere manier te dichten. Daarnaast zijn er ook veel mensen die beweren dat Solidity voor veel errors kan zorgen. En daar zitten de meeste ontwikkelaars natuurlijk niet op te wachten.

In 2016 was er zelfs een onderzoeker van de Cornell Universiteit die beweerde dat de grote The DAO-hack is veroorzaakt door Solidity. Doordat er bepaalde beveiligingslekken en kwetsbaarheden in de code zaten, was het voor hackers mogelijk om deze exploit uit te voeren. Het was dus niet het DAO-contract of de Ethereum Virtual Machine (EVM) zelf die ervoor had gezorgd dat het systeem gehackt kon worden. Je kunt begrijpen dat Solidity hierdoor een grote deuk in het vertrouwen heeft opgelopen.

Hoe kan ik Solidity leren?

Wil je leren om Solidity te schrijven? Dat kan op verschillende websites die hier een cursus voor aanbieden. Dat is ook de makkelijkste manier om deze programmeertaal te leren. Het is namelijk voor de meeste mensen lastig om een taal te leren door een document te lezen. Wanneer je een cursus volgt, leer je op een vrij praktische manier hoe je zelf de taal kunt schrijven. Voor de meeste mensen wordt het leren van de taal dan een stuk eenvoudiger.

Ten eerste kun je hier de documentatie van Solidity vinden:
https://docs.soliditylang.org/en/v0.8.5/

Dit is vrij technisch en theoretisch. Het kan daarom lastig zijn om deze programmeertaal te leren door middel van dit documentje. Daarom raad ik je aan om gebruik te maken van een speciale cursus waarin dit wordt uitgelegd. Je zult het dan veel sneller onder de knie krijgen.

Op Udemy zijn tal van cursussen omtrent Solidity te vinden:
https://www.udemy.com/topic/solidity/

Maar ook op Coursera kun je verschillende Solidity cursussen vinden:
https://www.coursera.org/courses?query=solidity

Naast dat je een cursus volgt, is het natuurlijk ook belangrijk om veel te oefenen. Door veel in Solidity te schrijven en dit te testen, leer je waarschijnlijk het snelst om deze taal te gebruiken. Wanneer je al ervaring hebt met andere programmeertalen, zal het vele malen makkelijker zijn om ook Solidity te leren schrijven. Je kunt daarom ook een cursus kiezen die beter bij jouw niveau past.

In onderstaande video wordt een korte introductie gegeven over het schrijven van Solidity.

Conclusie

Solidity is dus de belangrijkste programmeertaal van Ethereum, waarmee ontwikkelaars applicaties en smart contracts kunnen programmeren op Ethereum Virtual Machines. Deze taal is ontwikkeld door de oprichters van Ethereum, al zijn er ook steeds meer andere projecten en blockchains die gebruik maken van deze programmeertaal. 

Des te meer ontwikkelaars gebruik maken van Solidity, des te meer blockchains deze programmeertaal zullen gaan gebruiken. Echter kleven er ook genoeg nadelen aan Solidity. Zo is in het verleden al meerdere malen bewezen dat het niet volledig veilig is, en het kan zorgen voor verschillende soorten errors.

Wil jij meer weten over blockchains en crypto? Meld je aan bij onze AllesOverCrypto Facebookgroep! We spreken er graag over alles wat met crypto en de blockchain te maken heeft en delen er waardevolle informatie met je. Hopelijk zien we je daar!


Starten met crypto en geen idee waar je moet beginnen?

Kom dan naar onze gratis online crypto training!

Bekijk hier wat je gaat leren!

 

 

Online Bitcoin Training

 

Alle uitingen van AllesOverCrypto, waaronder begrepen alle producten (o.a. Crypto Signalen en de Crypto Masterclass), berichten en e-mails, zijn de professionele mening van AllesOverCrypto en kan op géén enkele wijze worden opgevat als een persoonlijke uitnodiging, een advies of enige aanbeveling om tot aankoop van één of meer cryptovaluta over te gaan en daarin te beleggen. AllesOverCrypto is geen financieel adviseur en beoogt dat uitdrukkelijk ook niet te zijn.

De uitingen van AllesOverCrypto hebben uitsluitend een educatief karakter en kunnen op geen enkele wijze als financieel, juridisch of fiscaal advies worden opgevat. AllesOverCrypto is geen financieel, juridisch- en/of fiscaal adviseur. Er komt geen adviesrelatie tot stand tussen jou en AllesOverCrypto.

De door AllesOverCrypto gepresenteerde informatie is door haar met de grootste aandacht en zorg samengesteld. AllesOverCrypto kan echter niet instaan voor de juistheid en/of volledigheid ervan. Het gebruik van deze informatie gebeurt op jouw eigen risico. Je dient ervan bewust te zijn dat de gepresenteerde informatie, mede door de snelheid waarmee de cryptomarkt zich beweegt, al snel achterhaald is dan wel kan zijn. Wees hiervan bewust bij het bestuderen van de informatie. Daarnaast wordt uitdrukkelijk verzocht de informatie zelf te verifiëren.

Eenieder die in één of meer cryptovaluta wil beleggen dient zijn/haar eigen onderzoek te doen alvorens een beslissing te nemen tot aan- of verkoop van cryptovaluta. AllesOverCrypto is op geen enkele wijze bij dit proces betrokken. Uitsluitend jijzelf bent verantwoordelijk voor jouw eigen aan-en verkoopbeslissingen. Het aankopen van cryptovaluta brengt vanwege de aard van het product en de volatiliteit van de cryptomarkt grote risico’s met zich mee. Deze risico’s zijn zo groot dat het zelfs mogelijk is je hele aankoopbedrag te verliezen. Koop dus geen cryptovaluta die je niet kunt veroorloven te verliezen.