Leestijd: 4 min.
Overzicht
Python is een van de meest veelzijdige programmeertalen die er zijn, met een groot aantal toepassingsmogelijkheden; we kunnen met Python tal van applicaties bouwen, van client-side tot back-end. In deze handleiding bespreken we hoe je met Python een Ethereum-adres aanmaakt met behulp van de Web3Py-bibliotheek.
Vereisten
- Python moet op je systeem zijn geïnstalleerd (versie 3.6+) en Pip3.
- Een teksteditor.
Wat is een Ethereum-adres?
Als je je aanmeldt bij een platform op internet, heb je een combinatie van gebruikersnaam en wachtwoord nodig. Zie een Ethereum-adres als een gebruikersnaam, met de bijbehorende privésleutel als wachtwoord. Met deze combinatie van adres en privésleutel kun je communiceren met de Ethereum-blockchain. Een Ethereum-adres is je identiteit op de blockchain. Het ziet er zo uit: „0xd5e099c71b797516c10ed0f0d895f429c2781142“. Een Ethereum-adres is openbaar en kan worden gedeeld, maar de privésleutel moet altijd geheim worden gehouden. Ethereum-adressen worden gegenereerd met behulp van een privésleutel. Hieronder wordt beschreven hoe een Ethereum-adres wordt gegenereerd:
- Genereer een willekeurige privésleutel van (64 (hex) tekens / 256 bits / 32 bytes)
0xf4a2b939592564feb35ab10a8e04f6f2fe0943579fb3c9c33505298978b74893
- Een openbare sleutel wordt afgeleid van de privésleutel (128 (hex) tekens / 512 bits / 64 bytes) met behulp van het Elliptic Curve Digital Signature Algorithm (ECDSA)
0x04345f1a86ebf24a6dbeff80f6a2a574d46efaa3ad3988de94aa68b695f09db9ddca37439f99548da0a1fe4acf4721a945a599a5d789c18a06b20349e803fdbbe3
- Vervolgens wordt de Keccak-256-hashfunctie toegepast op de openbare sleutel van (128 tekens / 64 bytes), wat een hash-string van (64 tekens / 32 bytes) oplevert; de laatste 40 tekens / 20 bytes, voorafgegaan door 0x, vormen het Ethereum-adres.
0xd5e099c71b797516c10ed0f0d895f429c2781142
Hieronder volgen enkele zaken waarvoor een Ethereum-adres nodig is:
- ETH ontvangen/verzenden.
- Transacties ondertekenen/verzenden.
- Verbinding maken met applicaties.
Wat is Python?
Python is een programmeertaal voor algemeen gebruik met een breed scala aan toepassingen. De taal beschikt over geavanceerde gegevensstructuren. Het is een dynamisch getypeerde taal. Dankzij de dynamische binding en tal van andere functies is het een handig hulpmiddel voor het ontwikkelen van complexe toepassingen, aangezien het wordt gebruikt voor scripting of ‘glue code’ die verschillende componenten met elkaar verbindt. Daarnaast kan Python op vrijwel alle besturingssystemen systeemaanroepen uitvoeren. Python is een universele taal vanwege het vermogen om op vrijwel elke systeemarchitectuur te draaien en vanwege zijn alomtegenwoordigheid. Python is een geïnterpreteerde, interactieve, objectgeoriënteerde programmeertaal.
Wat is Web3Py?
Web3.py is een Python-bibliotheek waarmee je interactie kunt aangaan met de Ethereum-blockchain; met behulp van Web3.py kun je backend-clients maken voor je gedecentraliseerde applicaties (dApps) om de interactie met de blockchain af te handelen, gegevens uit de blockchain te lezen, transacties te schrijven of de logica van smart contracts uit te voeren. De oorspronkelijke API is afgeleid van de Web3.js JavaScript-API, maar is in de loop der tijd verbeterd om beter aan te sluiten bij de behoeften en eisen van Python-ontwikkelaars.
Aangezien we hier met Python werken, gaan we Web3.py gebruiken.
Laten we nu eens kijken hoe we in Python een nieuw Ethereum-adres kunnen genereren.
Een Ethereum-adres genereren in Python
Onze eerste stap hier is om te controleren of Python 3.6 of hoger op je systeem is geïnstalleerd; je kunt controleren of Python is geïnstalleerd door het volgende in je terminal/cmd in te typen:
$ python --version
Als het nog niet is geïnstalleerd, kun je de instructies volgen op de pagina ‘Downloads’ van de officiële website van Python.
We gaan Web3Py gebruiken, een Python-bibliotheek waarmee je met Ethereum kunt communiceren. We installeren Web3Py met PIP. Typ het volgende in je terminal/cmd:
$ pip install web3
Opmerking: Python en andere bibliotheekversies kunnen vaak installatieproblemen veroorzaken. Probeer daarom, als je een probleem ondervindt, een virtuele omgeving in te stellen en de installatie van web3.py te controleren.
Als alles goed gaat, wordt Web3.py op uw systeem geïnstalleerd.
Laten we nu een Python-bestand aanmaken en dit de naam address.py geven. Kopieer en plak de volgende code in het bestand:
van eth_account import Account
import geheimen
priv = geheimen.token_hex(32)
private_key = "0x" + priv
print ("BEWAAR DIT, MAAR DEEL HET NIET:", private_key)
acct = Account.from_key(private_key)
print("Adres:", acct.adres)
Uitleg bij de bovenstaande code
Regel 1: Een account importeren uit de eth_account-module van Web3.py
Regel 2: We importeren de module `secrets` van Python, waarmee we een willekeurige hexadecimale tekenreeks kunnen genereren.
Regel 3: Een willekeurige hexadecimale tekenreeks van 32 bytes / 64 tekens genereren en deze opslaan in de variabele `priv`
Regel 4: We voegen het voorvoegsel 0x toe aan onze hexadecimale tekenreeks van 64 tekens die is opgeslagen in `priv`, en slaan de nieuwe tekenreeks op in de variabele `private_key`.
Regel 5: Onze privésleutel afdrukken met een waarschuwing.
Regel 6: Een nieuw account aanmaken met behulp van de private_key en dit opslaan in de variabele acct.
Regel 7: Het adres van de rekening die is opgeslagen in de variabele `acct` wordt afgedrukt, voorafgegaan door de tekst „Adres:”
Laten we nu ons Python-programma uitvoeren.
$ python address.py
Als je de instructies correct hebt gevolgd, zou de uitvoer er ongeveer zo uit moeten zien. De eerste regel bevat de privésleutel en de tweede regel het Ethereum-adres.
Conclusie
Nu je een eigen Ethereum-adres (+ privésleutel) hebt, kun je transacties versturen en met slimme contracten werken. Raadpleeg de officiële documentatie van Web3.py voor meer informatie.
Schrijf je in voor onze nieuwsbrief voor meer artikelen en handleidingen over Ethereum. Als je feedback hebt, neem dan gerust contact met ons op via Twitter. Je kunt ook altijd met ons chatten op onze Discord-communityserver, waar je enkele van de coolste ontwikkelaars tegenkomt die je ooit zult ontmoeten :)
