Trusted

Wat is Ethers.js? Een diep duik in de JavaScript-bibliotheek van Ethereum

10 min
Bijgewerkt door

Als je Ether (ETH) verkiest boven andere cryptospelers, moet je even de tijd nemen om Ethereum vanuit een meer technisch perspectief te begrijpen. Ethereum, een blockchainprotocol dat bekend staat om zijn toolkit, slimme contracten en op code gebaseerd ecosysteem, leunt zwaar op ethers.js – een Javascript-bibliotheek – om zijn op ontwikkelaars gerichte aanpak de vereiste kracht te geven.

Hoewel ethers.js niet de enige native JavaScript-bibliotheek van Ethereum is, is het de betere optie voor kleinere DApps. In deze gids gaan we dieper in op de aspecten van ethers.js en helpen we je dit technische concept te begrijpen.

Ethers.js uitpakken

ethers.js is een JavaScript-bibliotheek – een set vooraf geschreven code die verschillende functies automatiseert. Het gebruik van JavaScript-bibliotheken voor ontwikkeling kan de inspanning voor het schrijven van code minimaliseren. Het proces wordt gebruiksvriendelijker en voor DApp-ontwikkelaars helpen deze bibliotheken om basale blockchain-specifieke functionaliteiten als bundels aan te bieden.

Ethers.js and the development cycle: BIC
Ethers.js en de ontwikkelingscyclus: BeInCrypto

Hier is de GitHub repository voor de bibliotheek.

Wat zijn JavaScript-bibliotheken?

Voordat we dieper ingaan op ethers.js, kijken we eerst naar JavaScript-bibliotheken. Deze bibliotheken zijn vooraf geschreven sets JavaScript-code die specifieke veelvoorkomende taken kunnen automatiseren. Het gebruik van bibliotheken zoals ethers.js kan het DApp-aanmaakproces versnellen en zelfs andere blockchain-specifieke interacties versnellen.

Waarom hebben we JavaScript-bibliotheken nodig in Ethereum?

Ethereum heeft zich ontwikkeld tot een gedecentraliseerd softwareontwikkelingsplatform. Van smart contracts tot DeFi-toepassingentot DApps, coderen is een integraal onderdeel van het Ethereum-ecosysteem. Dat is precies waarom er op Ethereum afgestemde JavaScript-bibliotheken zoals ethers.js bestaan. Met behulp van deze bibliotheken kunnen ontwikkelaars verbinding maken met het netwerk, slimme contracten implementeren en ermee interageren, en gemakkelijk blockchain data beheren.

Did you know? Ethers.js isn’t the only known Ethereum Javascript library. Another prominent one is Web3.js, founded by the Ethereum Foundation. Web3.js is known for its comprehensive collection of documentation and is meant for the more complex DApps.

Waarom is ethers.js belangrijk?

Zoals eerder vermeld, is ethers.js bedoeld voor ontwikkelaars die zich bezighouden met de Ethereum blockchain. Wat betreft het belang, deze door Richard Moore ontwikkelde bibliotheek, op de markt gebracht onder de naam “Ethers,” is nuttig voor de volgende taken:

  1. Vereenvoudigen van verschillende Ethereum transacties
  2. Biedt toegang tot uitgebreide documentatie en bronnen
  3. Vergemakkelijken van DApp ontwikkeling
Ethers.js ecosystem and the roles it can assume:BIC
Ethers.js ecosysteem en de rollen die het kan aannemen: BeInCrypto

Hier is een snel voorbeeld van het codefragment dat wordt gebruikt om het huidige saldo van een Ethereum-account op te halen. Laten we eerst de code lezen en begrijpen hoe ethers.js het leven eenvoudiger maakt:

const { ethers } = require(‘ethers’);

// Connect to the Ethereum network

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_API_KEY’);

// Specify the account address

const accountAddress = ‘0xABC123…’;

// Fetch and display the balance

provider.getBalance(accountAddress).then((balance) => {

// Convert the balance from Wei to Ether

const balanceInEther = ethers.utils.formatEther(balance);

console.log(`Balance: ${balanceInEther} ETH`);

});

In dit voorbeeld kun je duidelijk zien hoe het commando – ethers.providers.JsonRpcProvider – een Infura endpoint aanroept, en getBalance het saldo ophaalt. Je hoeft niet direct om te gaan met Ethereum’s JSON RPC of de Remote Procedure Call. In dit geval kun je ethers.js zien als een vertaler die Ethereum makkelijker en vertrouwder voor je maakt.

Weet je nog steeds niet zeker wat ethers.js betekent? Hier is een snelle analogie.

Zie ethers.js als een oude bibliotheekkaart. Weet je nog dat die kaarten catalogi hadden, waardoor je het juiste boek kon vinden door het gangpad en vervolgens het nummer van de plank te vinden? Dit is wat ethers.js beoogt te doen. Het vereenvoudigt en organiseert de enorme mogelijkheden van Ethereum, zodat ontwikkelaars precies kunnen vinden wat ze nodig hebben.

https://twitter.com/wonder_nw/status/1764751034096800009

Alle Ethers.js-versies uitgelegd

In de loop der jaren zijn er verschillende versies van Ethers.js verschenen, elk met een nieuwe functie of een bug fix. Ook het versiebeheer volgt de standaard semantiek, zoals v1.2.3, waarbij het eerste getal de major aangeeft en het tweede en derde getal de minor en patch. We zullen nu alleen de grote versie-upgrades bekijken – veranderingen die mogelijk niet achterwaarts compatibel zijn.

  • Versie 1.x (Legacy): Dit was de eerste release, gevolgd door functies met betrekking tot het ondertekenen van transacties, het beheer van wallets en meer.
  • Versie 2.x (Ethers Wallet): Gericht op wallet utilities en functies, waaronder veilige opslag van private keys.
  • Versie 3.x (Ethers provider): Introduceerde abstracties voor verbinding met Ethereum-knooppunten. Verschillende soorten spelers werden ondergebracht, waaronder Infura, WebSockets en meer.
  • Versie 4.x (Ethers-contract): Smart contract-gebaseerde eigenschappen werden uitgebreid, met meer hulpprogramma’s voor het coderen en decoderen van data, gebeurtenisfilters en meer.
  • Versie 5.x: Biedt een modulaire architectuur, verbeterde ondersteuning voor ENS, uitgebreide foutafhandeling en meer.
  • Versie 6.x: Toevoeging van ES6 functies, BigInt introductie, overloading toegankelijkheid en meer.
Ethers.js architecture and components: BIC
Ethers.js architectuur en componenten: BeInCrypto

Je kunt meer details over elke versie vinden door de originele documentatie van Ethers.js te bekijken.

Redbelly Stagiair, Bouwer: X

Aan de slag met ethers.js

Voordat je van plan bent om het potentieel van ethers.js te benutten, is het noodzakelijk om te weten in welke fase van DApp- of smart contractontwikkeling het wordt gebruikt. Hier is een snel overzicht voor degenen die deze elementen vanaf nul moeten kennen en begrijpen.

“Web3.js is beginnersvriendelijk en beknopter dan ethers.js.

Ethers.js daarentegen geeft meer opties en is nieuw; het is iets complexer dan Web3.js.”


degenBRo, blockchainontwikkelaar en oprichter van Solidity Finance: Zoals verteld aan BeInCrypto

Om te beginnen moet je eerst de computer openen en de ontwikkelomgeving instellen. Dit omvat Node.js en de Integrated Development Environment. JavaScript draait meestal op de browser, maar met Node.js kan hetzelfde op de computer worden uitgevoerd. Het is de Node.js runtime-omgeving die Javascript-bibliotheken installeert, zoals ethers.js.

Wat betreft de IDE, die een softwareontwikkelaar moet testen, kun je VS Code, Sublime Text of iets anders overwegen.

https://twitter.com/junior_rbn_dev/status/1765370597066862749

Ethers.js-ondersteuning installeren

De volgende stap is het installeren van Ethers, de bibliotheek die ethers.js host.

npm installeren ethers

Vervolgens moet je Ethers gebruiken om verbinding te maken met de Wallet van Ethereum, omdat interactie met de blockchain deze stap vereist voor het valideren van referenties. Je kunt hiervoor de geïnstalleerde Ethers-bibliotheek gebruiken. Hier is het voorbeeldcommando:

const { ethers } = require(‘ethers’);

// Connect to the MetaMask wallet

const provider = new ethers.providers.Web3Provider(window.ethereum);

Eenmaal klaar, kun je de IDE gebruiken om de solidity code op te schrijven en smart contracts voor DApps te maken. Ethers.js zal worden gebruikt om hetzelfde te implementeren. Je kunt de DApp of het contract zelfs lokaal testen met omgevingen als Truffle en Hardhat. Daarna zet je de contracten uit op het Ethereum netwerk, waarvoor ethers.js nodig is.

const contract = new ethers.ContractFactory(abi, bytecode, signer);

const deployedContract = await contract.deploy();

Voor de niet-geoefende abi, Bytecode en Signer zijn termen die nodig zijn voor een naadloze ontwikkeling van slimme contracten. Abi of de application binary interface is meer het label dat het netwerk helpt om je slimme contracten te herkennen. Bytecode is de gecompileerde of beter gezegd de netwerkklare versie van het slimme contract en de ondertekenaar is de entiteit die de handtekening genereert.

Ethers.js voor de front-end

Zodra het slimme contract is ingezet, moet je de front-end of de gebruikersinterface van de DApp bouwen. Hiervoor kun je Angular of React gebruiken. Je kunt zelfs Ethers.js integreren in de front-end om ervoor te zorgen dat deze kan communiceren met Ethereum smart contracts. Hier is de voorbeeldcode voor hetzelfde:

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contract = new ethers.Contract(contractAddress, contractABI, provider.getSigner());

Hierna moet je de DApp testen op een testnet, bijvoorbeeld Rinkeby of Ropsten. Als je tevreden bent, kun je de DApp lanceren op het mainnet. Merk op hoe vaak je tijdens het proces interactie nodig hebt met Ethers of ethers.js.

Belangrijkste functies

Ethers.js komt over als een uitgebreide Ethereum-bibliotheek. Hier zijn enkele van de exclusieve aanbiedingen die het leven van ontwikkelaars gemakkelijk kunnen maken:

Aanbieders

Ethers.js providers fungeren als brug tussen het Ethereum netwerk en de DApp waar je aan werkt. Dit houdt in dat het opvragen van blockchain data wordt vereenvoudigd en helpt ook bij het broadcasten van transacties. Infura is een van de providers die Ethers.js gebruikt.

Hier is de voorbeeldcode voor hetzelfde:

const { ethers } = require(‘ethers’);

// Connect using Infura

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’);

// Check the current block number

provider.getBlockNumber().then((blockNumber) => {

console.log(“Current block number:”, blockNumber);

});

Wallets

Met Ethers.js kun je wallets beheren, nieuwe accounts aanmaken, bestaande accounts importeren, private keys voor het ondertekenen van transacties veilig beheren en nog veel meer.

Contracten

Dit onderdeel van het bestaan van Ethers.js ondersteunt object instantiëring. Dit maakt het makkelijker om specifieke contractfuncties aan te roepen, meer zoals native Javascript methodes.

Ethers.js and smart contract interaction: BeInCrypto
Ethers.js en slimme contractinteractie: BeInCrypto

ENS integratie

Ethers.js kan ENS-namen omzetten naar hun Ethereum-adressen en omgekeerd. Deze functie vermindert het risico op fouten.

Hier is een voorbeeld van een codefragment:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’);

const ensName = ‘alice.eth’;

provider.resolveName(ensName).then((address) => {

console.log(`${ensName} is resolved to ${address}`);

});

Naast de genoemde functies beschikt Ethers.js ook over de volgende aspecten of functies, die ontwikkelaars helpen met Ethereum-specifieke directe toegang:

  • Ondertekenaars
  • Hulpprogramma’s
  • Event listeners en filters (bedoeld voor het activeren van real-time reacties op blockchain acties)
  • Transacties
  • Multicall ondersteuning
  • TypeScript-ondersteuning (bedoeld voor het verbeteren van de betrouwbaarheid van code en de algehele ervaring van ontwikkelaars)

Een handvol voordelen van het gebruik van Ethers.js:

https://twitter.com/junior_rbn_dev/status/1765370617937736000

Hoe cryptopublicaties gebruik kunnen maken van Ethers.js

Mediapublicaties zoals BeInCrypto kunnen gebruik maken van Ethers.js om geavanceerde en vindingrijke web3-tools te maken.Opdezemanier wordt het mogelijk om blockchain- of, beter gezegd, Ethereum-gebaseerde functies te gebruiken om de bruikbaarheid te verbeteren. Dit zijn de opties die je kunt overwegen:

Data feeds

Ethers.js functies kunnen worden gebruikt om actuele real-time crypto data feeds te integreren, zoals netwerkstatistieken, gasprijzen en meer, om artikelen en bronnen evergreen te houden. Hier is een voorbeeldcode voor het ophalen van het laatste bloknummer, bijvoorbeeld voor Bitcoin, om halvings in realtime te volgen.

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.JsonRpcProvider(‘https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID’);

provider.getBlockNumber().then((blockNumber) => {

console.log(“Current block number:”, blockNumber);

// Integrate this data into your publication’s platform for a real-time data feed

});

Interactieve inhoud

Publicaties kunnen stukjes interactieve inhoud maken, zodat gebruikers direct kunnen interageren met smart contracts, deelnemen aan polls of zelfs kleine spelletjes spelen als dat nodig is.

Hier is een voorbeeld van een codefragment om een mijlpaal-specifieke groet van een smart contract op te halen:

const { ethers } = require(‘ethers’);

const provider = new ethers.providers.Web3Provider(window.ethereum);

const contractAddress = ‘0x…’;

const contractABI = [

“function getGreeting() view returns (string)”

];

const contract = new ethers.Contract(contractAddress, contractABI, provider);

async function displayGreeting() {

const greeting = await contract.getGreeting();

document.getElementById(‘greeting’).innerText = greeting;

}

Een praktijkvoorbeeld van hoe Ethers.js wordt ingezet:

https://twitter.com/ronak_pal1/status/1767071343345095092

Gedecentraliseerd publiceren

Mediapublicaties kunnen ook gedecentraliseerd publiceren overwegen, waarbij een overblijfsel van een artikel wordt gepubliceerd op het blockchainnetwerk. Dit kan helpen tegen censuur en zelfs tegen de integriteit van de inhoud.

Hier is een voorbeeldcode waarbij de hash van het artikel online wordt opgeslagen als bewijs van publicatie:

const { ethers } = require(‘ethers’);

const wallet = new ethers.Wallet(‘YOUR_PRIVATE_KEY’, provider);

const contentHash = ethers.utils.id(“Article content here”);

const tx = await wallet.sendTransaction({

to: ‘0xSomeStorageContractAddress’,

data: contentHash // Assuming the contract accepts and stores this data

});

console.log(“Transaction hash (proof of publication):”, tx.hash);

Dit zijn slechts een handvol use cases voor mediapublicaties. Maar er zijn andere sectoren die gebruik kunnen maken van de kracht van ethers.js. Deze omvatten:

  • Blockchainontwikkelaars (verwacht)
  • Financiële analisten die werken met DeFi statistieken
  • Game-ontwikkelaars
  • Makers van inhoud
  • Supply chain managers

En meer.

Toepassingen van Ethers.js in de echte wereld

Behalve dat het nuttig is in DeFi, NFT en spelprojecten, zijn er een paar bestaande DApps die het gebruik van Ethers.js ondersteunen. Dit zijn onder andere de volgende:

  • Uniswap: Ether.js interageert met de inherente slimme contracten van Uniswap voor het uitvoeren van transacties, het toevoegen van liquiditeit en zelfs het opvragen van poolstatistieken. In dit geval zijn DApp-ontwikkelaars van plan om tools te bouwen die interageren met Uniswap, zoals trading bots, portfolio management tools en meer.
  • Aave: DApp-ontwikkelaars en andere geïnteresseerden kunnen Ether.js-functionaliteiten gebruiken voor interactie met Aave-specifieke slimme contracten. Op deze manier kunnen ze de front-end gebruiken voor het lenen van assets, het storten van onderpand en nog veel meer.

Het ontkrachten van een paar Ethers.j mythes:

https://twitter.com/imashuttoshh/status/1765558806291894739

Overwegingen met betrekking tot security

Het gebruik van Ethers.js komt met een vrij uitgebreide set van security overwegingen. Hier volgen er een paar:

  • Het is raadzaam om private sleutels niet hard te coderen binnen de codebase van je applicatie.
  • Elke interactie met slimme contracten moet worden voorafgegaan door testen en uitgebreide controle van de contracten.
  • Wanneer je interageert met smart contracts, gebruik dan veilige patronen zoals “call” voor alleen-lezen taken.
  • Om het gebruik van ethers.js te optimaliseren, kun je request batching overwegen. Dit is waar je bijvoorbeeld alleen-lezen verzoeken kunt groeperen om het aantal netwerkaanroepen te minimaliseren. Het spreekt voor zich dat deze optimalisatietechnieken de applicatie zeer schaalbaar en kostenefficiënt kunnen maken.

Hier is een voorbeeld van hoe het werkt:

// Pseudocode for batching contract calls with Ethers.js (conceptual example)

const contract = new ethers.Contract(address, abi, provider);

const [value1, value2, value3] = await Promise.all([

contract.viewFunction1(),

contract.viewFunction2(),

contract.viewFunction3()

]);

Ethers.js: een veelzijdig hulpmiddel

Zoals in deze handleiding wordt aangetoond, is Ethers.js een veelzijdige tool. We hebben een korte blik geworpen op de mogelijkheden, maar de beste manier om Ethers.js volledig te begrijpen is door je te verdiepen in de wereld van slimme contracten, JavaScript, IDE’s, DApps en meer. Daarnaast kan het ook handig zijn om lid te worden van de Ethereum en Ethers community.

Veelgestelde vragen

How can developers use Ethers.js events?

What are the key utilities offered by Ethers.js?

What is the connection between Ethers.js and Web3.js?

🎄Beste crypto platforms in Nederland | December 2024
eToro eToro Ontdek
Wirex Wirex Ontdek
YouHodler YouHodler Ontdek
Coinbase Coinbase Ontdek
Margex Margex Ontdek
🎄Beste crypto platforms in Nederland | December 2024
eToro eToro Ontdek
Wirex Wirex Ontdek
YouHodler YouHodler Ontdek
Coinbase Coinbase Ontdek
Margex Margex Ontdek
🎄Beste crypto platforms in Nederland | December 2024

Disclaimer

Alle informatie op onze website wordt te goeder trouw en uitsluitend voor algemene informatiedoeleinden gepubliceerd. Elke actie die de lezer onderneemt op basis van de informatie op onze website is strikt op eigen risico.

ananda.png
Ananda Banerjee is een technische schrijver die gespecialiseerd is in web3, crypto, blockchain, AI en SaaS, met meer dan 12 jaar ervaring. Hij heeft bijgedragen aan platforms zoals Towards Data Science, Hackernoon, Dzone, Elephant Journal en Business2Community. Ananda schrijft momenteel voor BeInCrypto over handel, gedecentraliseerde projecten, crypto hacks, on-chain indicatoren, beoordelingen van crypto-projecten en munt-specifieke analyses. Voorafgaand aan zijn werk bij BeInCrypto was...
Lees de volledige biografie