Solidity

Interaktion mit der Ethereum-Blockchain mittels Ethers.js

Published on
Interaktion mit der Ethereum-Blockchain mittels Ethers.js

Ethers.js ist eine beliebte JavaScript-Bibliothek, die Entwicklern die Interaktion mit der Ethereum-Blockchain erleichtert. Sie bietet eine benutzerfreundliche Schnittstelle für verschiedene Aufgaben, von einfachen Abfragen bis hin zum Deployment komplexer Smart Contracts.

In diesem Artikel werden wir einige grundlegende Interaktionen mit der Ethereum-Blockchain mithilfe von Ethers.js demonstrieren. Wir gehen davon aus, dass Node.js installiert ist und Sie Ethers.js mit npm install ethers installiert haben.

1. Verbindung zur Blockchain

const { ethers } = require('ethers');

const provider = new ethers.providers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_INFURA_PROJECT_ID'); // Ersetzen Sie YOUR_INFURA_PROJECT_ID mit Ihrer Infura-API-Key

async function main() {
  // ... weitere Funktionen
}

main();

Ersetzen Sie YOUR_INFURA_PROJECT_ID mit Ihrem eigenen Infura-API-Schlüssel. Andere Provider wie Alchemy oder eigene Nodes können ebenfalls verwendet werden.

2. Abrufen von Blockinformationen

async function getBlock(blockNumber) {
  const block = await provider.getBlock(blockNumber);
  console.log(block); // Gibt detaillierte Blockinformationen aus
}

getBlock(15000000); // Ruft Informationen zum Block mit der Nummer 15000000 ab.

Diese Funktion ruft Informationen zu einem bestimmten Block ab, inklusive Timestamp, Transaktionen und Miner.

3. Senden einer Transaktion

async function sendTransaction(privateKey, toAddress, value) {
  const wallet = new ethers.Wallet(privateKey, provider);
  const transaction = await wallet.sendTransaction({
    to: toAddress,
    value: ethers.utils.parseEther(value.toString()), // Wandelt den Wert in Wei um
  });
  console.log(transaction);
  await transaction.wait();
  console.log('Transaktion erfolgreich!');
}


//Beispielaufruf, ersetzen sie mit ihren eigenen werten
sendTransaction('YOUR_PRIVATE_KEY','0x742d35Cc6634C053DbfBAEf17c456b970802f50c',0.01);

Dieser Code schickt eine Transaktion von einer Wallet an eine andere. ACHTUNG: Verwenden Sie niemals Ihren privaten Schlüssel in einer Produktionsumgebung direkt im Code. Verwenden Sie sichere Schlüsselverwaltungsmethoden. Der private Key sollte aus Sicherheitsgründen aus einer Umgebungsvariable geladen oder aus einer sicheren Schlüsselverwaltungslösung bezogen werden. YOUR_PRIVATE_KEY muss mit Ihrem privaten Schlüssel ersetzt werden. Der Wert wird in Ether angegeben und automatisch in Wei umgerechnet.

4. Interaktion mit Smart Contracts

async function interactWithContract(contractAddress, abi, functionName, ...args) {
  const contract = new ethers.Contract(contractAddress, abi, provider);
  const result = await contract[functionName](...args);
  console.log(result);
}

// Beispiel:  Abrufen des Namens eines ERC721 Tokens
const abi = [/* ...ABI des Smart Contracts... */];
interactWithContract('0xCONTRACT_ADDRESS', abi, 'name');

Hier wird ein Beispiel gezeigt, wie man mit einem Smart Contract interagiert. Der `abi` (Application Binary Interface) beschreibt den Smart Contract, und `contractAddress` ist die Adresse des deployed Contracts auf der Blockchain. Ersetzen Sie 0xCONTRACT_ADDRESS und den `abi` mit den entsprechenden Werten.

Ethers.js bietet eine umfangreiche API für viele weitere Funktionen. Die hier gezeigten Beispiele geben einen Einblick in die grundlegenden Möglichkeiten. Eine detaillierte Dokumentation finden Sie auf der offiziellen Ethers.js-Website.