Uw USDC levert het rendement van gisteren opQuicknode verplaatst het automatisch naar de beste Morpho-kluis van vandaag. Live op 7 blockchains.
Stel je strategie opSlimme contracten bouwen in Vyper met Truffle 5
De release van Truffle v5 omvatte ondersteuning voor Vyper, en vandaag gaan we bekijken hoe we een smart contract kunnen bouwen en dit op MainNet Ethereumkunnen implementeren.

SOC 2 Type II-gecertificeerd · ISO 27001
16 januari 2019 — leestijd: 5 min.

De release van Truffle v5 omvatte ondersteuning voor Vyper, en vandaag gaan we bekijken hoe we een smart contract kunnen bouwen en dit op MainNet Ethereumkunnen implementeren.
Het ontwikkelen van een efficiënte taal voor slimme contracten is een miljardenprobleem. Meerdere talen voor slimme contracten bevinden zich in de voorhoede van de innovatie en strijden om de mainstream te worden. Naast de bekende „Solidity“ zijn er verschillende experimentele talen die gericht zijn op Ethereum:
Bamboo — Een morphing smart contract-taal (wordt niet actief ontwikkeld)
Vyper — Nieuwe experimentele programmeertaal in Python-stijl (wordt actief ontwikkeld)
LLL — Een Lisp-achtige taal op laag niveau (wordt niet actief verder ontwikkeld)
Flint — Nieuwe taal in ontwikkeling met beveiligingsfuncties, waaronder activatypen, toestandsveranderingen en veilige gehele getallen (wordt actief ontwikkeld)
Pyramid — Een dialect van de programmeertaal Scheme dat gericht is op de Ethereum Machine (EVM). (Wordt niet actief ontwikkeld)
Vyper is een experimentele taal voor slimme contracten. De taal is gericht op eenvoud, leesbaarheid voor mensen en veiligheid. Bovendien lijkt de syntaxis van Vyper op die van Python.
“Vyper is een contractgeoriënteerde, pythoneske programmeertaal die gericht is op de Ethereum Machine (EVM)”
Eenvoud — Vyper richt zich op eenvoud en vergroot de kans op het schrijven van foutloze code. Ook bij de implementatie van de compiler wordt gestreefd naar eenvoud.
Beveiliging en begrijpelijkheid — Het opstellen van veilige contracten gaat vanzelf; dat is precies waar Vyper naar streeft. De code moet flow elke lezer een natuurlijke flow hebben. Daarom stimuleert Vyper het opstellen van smart contracts van één pagina. De leesbaarheid van de code zorgt voor een betere begrijpelijkheid ervan.
De doelstellingen van Vyper als programmeertaal verschillen van die van Solidity. Om eenvoud, leesbaarheid en begrijpelijkheid te waarborgen, beschikt Vyper niet over bepaalde functies van Solidity, zoals modifiers en overerving. Daarnaast ontbreken in Vyper ook:
Functie-overbelasting
Overbelasting van operatoren (Solidity ondersteunt dit op 17 januari 2018 ook nog niet)
Recursieve aanroep
Lussen van oneindige lengte
Inline-assemblage
Binair vastkomma
Vyper laat al het bovenstaande achterwege om zijn ontwerpdoelen te bereiken. Toch biedt Vyper wel een aantal interessante functies:
Grens- en overflow-controle: zowel bij het benaderen van arrays als op rekenkundig niveau, wat de prestaties verbetert en de betrouwbaarheid en veiligheid verhoogt.
Ondersteuning voor ondertekende gehele getallen en decimale getallen met vaste komma
Beslisbaarheid: Het moet mogelijk zijn om voor elke functieaanroep een exacte bovengrens voor het gasverbruik te berekenen.
Sterke typering: inclusief ondersteuning voor eenheden (bijv. tijdstempel, tijdsverschil, seconden, wei, wei per seconde, meter per seconde in het kwadraat).
Korte en begrijpelijke compilercode
Beperkte ondersteuning voor zuivere functies: alles wat als constante is gemarkeerd, mag de toestand niet wijzigen.
Van de bovengenoemde kenmerken is beslisbaarheid een zeer belangrijk kenmerk waarmee je een bovengrens voor het gasverbruik kunt inschatten. Dit kan helpen bij gasoptimalisatie, wat een zeer belangrijk onderdeel is van een smart contract-platform.
Laten we aan de slag gaan en Vyper nu installeren. Als je MacOS gebruikt, bekijk dan hier de instructies (ik gebruik Ubuntu 16.10).
Opmerking: Vyper wordt momenteel actief verder ontwikkeld, dus raak niet gefrustreerd als je installatiefouten krijgt. 😃
Python installeren
sudo apt-get update sudo apt-get install python3.6 sudo apt-get install python3-dev
Een virtuele omgeving aanmaken
Als je al eerder met Python hebt gewerkt, ben je vast bekend met de virtuele Python-omgeving. Het wordt ten zeerste aanbevolen om Vyper in een virtuele Python-omgeving te installeren.
Voer de volgende opdrachten uit om een nieuwe virtuele omgeving voor Vyper aan te maken:
sudo apt install virtualenv virtualenv -p python3.6 --no-site-packages ~/vyper-venv source ~/vyper-venv/bin/activate
Je bevindt je waarschijnlijk nog steeds in de virtuele omgeving… Laten we nu Vyper installeren:
git cloneethereum cd vyper make make test
Als alles goed is gegaan, bedank dan eerst Byte God 😃 en compileer een voorbeeldcontract:
vyper voorbeelden/crowdfund.vy
In de map ‘example’ van de installatiemap staan talrijke voorbeelden. In toekomstige artikelen gaan we dieper in op het gebruik van Vyper, dus vergeet niet je hieronder te abonneren!
Truffel met Vyper
Truffle 5 is onlangs gelanceerd en biedt ondersteuning voor Vyper. Laten we dus upgraden naar de nieuwste versie en een Vyper-voorbeeldbox aanmaken (Truffle-boxen, weet je nog?):
npm uninstall -g truffle npm install truffle
Laten we nu onze vyper-voorbeeld Truffle Box. Voer de onderstaande opdracht uit in een lege repository:
truffle unbox vyper-voorbeeld
Laten we ons eerste Vyper-contract uitvoeren. Ga naar de vyper-voorbeeld map en open de Truffle-console:
cd vyper-example truffle develop Laten we nu ons contract compileren en implementeren: compile migrate
Laten we nu eens kijken naar ons eerste Vyper-smartcontact:
stored_data: uint256 @public def set(new_value : uint256): self.stored_data = new_value @public @constant def get() -> uint256: return self.stored_data
Het is een heel eenvoudig Vyper-smartcontract, dat simpelweg een statusvariabele opslaat in opgeslagen_gegevens en twee openbare krijgen en set methode. @openbaar geeft aan dat de methode openbaar is, en @constant is een soort van zuiver modificator in Solidity die aangeeft dat de methode de toestand niet wijzigt. Laten we ons smart contract testen in dezelfde Truffle-console:
VyperStorage.deployed().then((token) => {contract = token;}
contract.set(1)
contract.get(0)Laten we nu ons smart contract op MainNet implementeren MainNet onze eigen Quicknode. Eerst moeten we HDWalletProvider installeren om zowel het ondertekenen van transacties als de verbinding met het Ethereum af te handelen.
$ npm install truffle-hdwallet-provider
Vervolgens moeten we in truffle.js onze walletprovider configureren (met behulp van de Quicknode -URL):
var HDWalletProvider = require("truffle-hdwallet-provider");
var mnemonic = "YOUR_MEMONICS"; // use a funded wallet
module.exports = {
networks: {
development: {
host: "127.0.0.1",
port: 7545,
network_id: "*" // Match any network id
},
kovan: {
provider: function() {
return new HDWalletProvider(mnemonic,
"https://mistakenly-smart-jay.quicknode.io/86d9e35e-8cdb-47ad-80a4-84f9e9537afa/C0_tKUunhUc0rM_i1HMxHA==/"
)
},
network_id: 42
}
}
};Dat was het dan: je hebt je eerste Vyper-smartcontract met behulp van Truffle uitgevoerd en geïmplementeerd!
In toekomstige blogberichten zullen we dieper ingaan op de Vyper-taal en het bouwen van complexere slimme contracten.
Vyper is een experimentele programmeertaal, maar de community is behoorlijk actief en ontwikkelt interessante tools (bekijk hier de volledige lijst). Vyper laat zich inspireren door de streven naar eenvoud van Python en kan nieuwe Web3-ontwikkelaars helpen om sneller betere smart contracts te begrijpen en te bouwen.
Heb je hulp nodig bij je project of heb je vragen? Neem dan contact met ons op via dit formulier, op TwitterQuicknode of stuur ons een berichtje op Discord!
Quicknode , opgericht in 2017, Quicknode blockchain-infrastructuur van institutionele kwaliteit voor ontwikkelaars en bedrijven. Met een uptime van 99,99% en ondersteuning voor meer dan 80 blockchains kunnen teams on-chain-applicaties bouwen en opschalen zonder concessies te doen.
De nieuwste technische inzichten, productupdates en web3-nieuws, rechtstreeks in je inbox.