Iedereen kan een slim contract opbouwen
Slimme contracten vergemakkelijken de manier waarop u zaken doet in de nieuwe gedecentraliseerde economie. De meeste slimme contracten worden gemaakt op DApp-platforms (Decentralized Application) zoals Ethereum, Lisk of Cardano, en grote technologiebedrijven zoals IBM beginnen hun eigen bedrijf om ze te bouwen. Dit is logisch, want er zijn genoeg bedrijven die liever een technologiegigant als IBM vertrouwen om een product voor hen te bouwen dan zelf een nieuwe technologie aan te pakken..
Slimme contractontwikkeling kan een verkoopbare vaardigheid worden voor ontwikkelaars die weten hoe ze deze moeten bouwen. Een verrassend onderdeel van slimme contracten is dat ze niet moeilijk te bouwen zijn. De DApp-platforms en omliggende tools maken het mogelijk om ze te maken en eenvoudig je eigen blockchain-technologie te bouwen.
Javascript-ontwikkelaars moeten zich niet laten intimideren door blockchain. Met een beetje meer begrip wordt blockchain zoals de meeste andere frameworks die u normaal zou implementeren.
Een slim contract plannen
Wanneer u voor het eerst een smart contract aanmaakt, moet u beslissen wat u ermee wilt vergemakkelijken.
Laten we ons voor dit voorbeeld concentreren op ticketverkoop voor evenementen. Ticketing heeft grote problemen met scalpers die een hoop kaartjes kopen en met mensen die valse kaartjes gebruiken. Blockchain-technologie blinkt uit in veel dingen; twee daarvan zijn het faciliteren van transacties en het bijhouden van informatie.
Daarom kan een eenvoudige regel code in het contract de wederverkoopprijzen van tickets beperken. Dit voorkomt dat scalpers een stapel kaartjes kopen, omdat het verkopen ervan nu niet meer rendabel zou zijn. Met slimme contracten kunt u ook unieke tokenized tickets genereren die eigenaarsspecifiek zijn en niet vervalst kunnen worden. Als u iemand bent die graag concerten, festivals en sportevenementen bijwoont, kunt u de aantrekkingskracht zien.
DApp Platform-opties
Het volgende dat u moet kiezen, is op welk DApp-platform het contract wordt gebouwd.
Ethereum is het grootste en meest gevestigde platform. Het heeft ook het meest actieve gebruikersbestand en bij elk type ontwikkeling is een actieve community om uw vragen te beantwoorden de sleutel tot het afmaken van uw product. Een nadeel is echter dat het zijn eigen taal, Solidity, gebruikt om contracten te schrijven.
Andere optie, Lisk, is een DApp-platform gebaseerd op Javascript, dus u krijgt geen nieuwe syntaxis naar u toe gegooid. Het heeft ook een eigen DApp-winkel (denk aan Google Play of iTunes Store) waar u uw app kunt publiceren als u klaar bent.
Je zou ook kunnen proberen Cardano die is gebouwd door een oprichter van Ethereum en een groot, indrukwekkend team heeft. Hun product is nog nieuw, maar als ze hun belofte nakomen om contractinformatie te scheiden van transactiegegevens, kan dit de juiste keuze zijn om verder te gaan.
Laten we voorlopig Ethereum of Lisk bekijken als het voorkeursplatform.
Als Javascript-ontwikkelaar lijkt Lisk misschien een logische beslissing, omdat je al ervaring hebt met de taal.
Reken echter niet op Ethereum. De ontwikkelingsgemeenschap is zo robuust dat je elk misverstand over Solidity kunt goedmaken met de overtollige beschikbare informatie. Ethereum bevat ook het Truffle-framework, gemaakt door Consensys, waarmee u eenvoudig uw slimme contracttoepassing kunt integreren en testen.
Een slim contract opbouwen
Soliditeit klinkt intimiderend dan het in werkelijkheid is. Het eerste dat opvalt aan de taal, is de opvallende gelijkenis met een JavaScript-klasse. Er zijn echter enkele subtiele verschillen, zoals de vereiste van puntkomma’s en het gebruik van hash-functies. De hashing-functies worden gebruikt om unieke sleutels te maken en deze aan andere variabelen toe te wijzen. In ons voorbeeld zouden we ze gebruiken om unieke tickets te maken en deze toe te wijzen aan de accounts die ze kopen.
Bij het bouwen van uw eerste Ethereum-contract raden we aan om de ontwikkelomgeving te gebruiken op remix.solidity.org. Het geeft je een interactieve omgeving om je contract te implementeren en ermee te communiceren vanuit verschillende Ethereum-accounts. Met een vervolgkeuzemenu kunt u van account wisselen en alle functieaanroepen van uw contract gebruiken door op de bijbehorende knoppen te drukken.
Waar je op moet letten
Het unieke van Solidity is het gebruik van adressering. Alle Ethereum-accounts hebben unieke adressen en die adressen vertegenwoordigen de partijen die akkoord gaan met een contract.
In ons voorbeeld van een ticketingscontract wordt aan degene die het evenement maakt zijn accountadres eraan gekoppeld. Wanneer iemand een nieuw ticket koopt, wordt het geld rechtstreeks naar de eigenaar van het evenement overgemaakt, waarbij de tussenpersoon wordt uitgeschakeld. De koper belt en het geld wordt van zijn rekening afgehaald, geïdentificeerd aan de hand van zijn adres en doorgegeven aan de eigenaar.
Solidity heeft ook een unieke manier om geld te koppelen aan een slimme contractoproep. Elke functieaanroep wordt geleverd met een bericht. Dit bericht kan unieke informatie van de afzender bevatten, inclusief het accountadres en een etherwaarde die ze naar de contracteigenaar willen sturen.
Het is ook vermeldenswaard dat in Solidity niet alle contractoproepen gratis zijn. Om informatie in het contract te wijzigen, bijv. koop of gebruik een ticket, het netwerk van machines die de uitvoering van het contract bevestigen “gas”. Gas is eigenlijk een tol om te profiteren van de rekenkracht op het netwerk.
Andere oproepen die alleen het contract om informatie vragen, bijv. het opzoeken van de prijs van een ticket of het verkrijgen van het aantal resterende tickets, zijn gratis. Dit komt doordat er geen informatie over het contract wordt bijgewerkt; er is geen risico bij deze activiteiten.
Verbinden met JavaScript
Het meest uitdagende aan werken bij Solidity is het integreren van je contract met Javascript. Dit wordt allemaal gedaan met behulp van de Truffel-kader.
De eerste stap bij het integreren van uw contract is het implementeren en migreren naar uw testnetwerk. Truffle biedt hun eigen RPC, een apart Ethereum-testnetwerk, genaamd Ganache. Dit proces geeft je een JSON-versie van het contract die je kunt bellen met de adressen van je testnetwerk via je Javascript-applicatie.
Als u op zoek bent naar meer informatie over dit proces, kan Truffle dit uitstekend omschrijven in hun documenten en voorbeeldboxen op hun website.
Een ander moeilijk ding om te overwinnen bij het maken van een slim contract, is hoe je het kunt conceptualiseren. Als u de blockchain beschouwt als een webontwikkelaar, kunt u deze beschouwen als een vervanging voor de database. In plaats van één gecentraliseerde bron voor al uw informatie, is er een reeks contracten en transacties die naar de informatie leiden.
Omdat een blockchain als een database is, is het logisch dat u het contract met uw server verbindt. Door een API-laag voor het contract te maken, wordt toegang tot informatie van de clientzijde van de applicatie net zo eenvoudig als het doen van een AJAX-verzoek. Er is een goede voorbeeld box op de truffelwebsite om deze setup te krijgen.
Hoewel de blockchain vergelijkbaar is met een database, is deze niet helemaal identiek. Het heeft een volledig uniek protocol met betrekking tot transacties, hashing en het maken van blokken. Dit is misschien wel het moeilijkste deel van de ontwikkeling van Ethereum. In ons voorbeeld van ticketverkoop moet u een contractoproep voor het kopen van een kaartje anders structureren dan de oproep voor het gebruik van een kaartje. De Ethereum Virtual Machine is kieskeurig over deze oproepen.
Dit is een ander gebied waar de grote ontwikkelingsgemeenschap van Ethereum nuttig is. De kans is groot dat elke vraag die u heeft al is beantwoord op de Ethereum Stack Exchange, en zo niet, dan zijn andere ontwikkelaars meer dan bereid om u door uw contract heen te helpen.
Conclusie
Dit artikel was niet bedoeld om je te leren hoe je Solidity moet gaan schrijven. In plaats daarvan was het om u een overzicht te geven van wat een slim contract is en hoe u het in een Javascript-applicatie kunt implementeren. Bouwen op de blockchain is mogelijk voor iedereen die verstand heeft van webontwikkeling.
De technologie achter blockchain is misschien moeilijk te begrijpen, maar net als bij elk ander framework of ontwikkelaarstool hoeft u niet per se te weten hoe het is gebouwd om het te gebruiken. Laat de mysterieuze uitstraling van blockchain je er niet van weerhouden iets groots te bouwen.