Ga naar de hoofdinhoud

Hoe voer je een transactie zonder bewaring uit met Quicknode?

Bijgewerkt op
26 november 2025

Leestijd: 7 min.

Overzicht​

Privésleutels behoren tot de meest gevoelige gegevens op het gebied van cryptografie en de blockchain. Er is echter altijd discussie en verwarring geweest over de keuze tussen custodial wallets (waarbij de aanbieder van de wallet de privésleutel van de gebruiker beheert) en non-custodial wallets (waarbij de gebruiker zelf de privésleutel beheert). In deze handleiding gaan we dieper in op het verschil tussen bewaarde en niet-bewaarde wallets en leggen we uit hoe je een niet-bewaarde transactie kunt uitvoeren met Quicknode.

Vereisten

  • Node.js is op uw systeem geĂŻnstalleerd.
  • Teksteditor.
  • Terminal, ook wel bekend als de opdrachtregel.

Wat is een non-custodial wallet?​

Een non-custodial wallet is een blockchain-wallet waarbij de eigenaar volledige controle heeft en zelf de privésleutel bewaart. Een non-custodial wallet kan op twee manieren worden aangemaakt en geopend: met behulp van de privésleutel (een alfanumerieke reeks) of met behulp van een mnemonische seed-zin, een reeks van 12 tot 24 woorden die door de eigenaar van de wallet wordt bewaard (meestal opgeschreven en op een veilige plek bewaard, buiten het internet en de computer).

Hieronder volgen enkele voordelen van een non-custodial wallet:

  • Autonomie – gebruikers hebben de volledige controle over hun geld – aangezien de gebruiker de enige is die volledige controle heeft over zijn of haar geld. Ze hoeven niet afhankelijk te zijn van een derde partij voor het beheer of de beveiliging van hun portemonnee.
  • Veiligheid – aangezien gebruikers hun privĂ©sleutels buiten het internet of welke computer dan ook bewaren, is de kans op een inbreuk op de beveiliging vrijwel verwaarloosbaar.
  • Onmiddellijke opname – bij non-custodial wallets hoeven gebruikers niet afhankelijk te zijn van een derde partij om hun opnameverzoek te bevestigen. Dit stroomlijnt het hele proces en maakt onmiddellijke opnames mogelijk.

Wallet zonder beheer versus wallet met beheer​

Abonneer je op ons YouTube-kanaal voor meer video's!
  • Beheerder van de privĂ©sleutel – De belangrijkste factor waarmee rekening moet worden gehouden bij het vergelijken van cryptowallets, is het bezit van de privĂ©sleutel. Bij een non-custodial wallet heeft de gebruiker de privĂ©sleutel in zijn bezit. Bij custodial wallets beheert een derde partij (meestal een wallet-aanbieder of een beurs) de privĂ©sleutel.
  • Transactietype - Transacties die worden uitgevoerd via non-custodial wallets zijn direct zichtbaar op de blockchain. Transacties via custodial wallets moeten daarentegen verschillende controles door de derde partij doorlopen en zijn daardoor onderhevig aan vertraging.
  • Beveiliging - Bij non-custodial wallets bewaart de gebruiker de privĂ©sleutel lokaal. De wallet is zeer veilig, tenzij de gebruiker de privĂ©sleutel deelt of het apparaat wordt gestolen. Bij custodial wallets worden alle gevoelige gebruikersgegevens, zoals privĂ©sleutels, opgeslagen op hot data storage (die direct wordt bijgewerkt) en cold data storage (die van tijd tot tijd wordt bijgewerkt), die doorgaans kwetsbaar zijn voor hacking.
  • Offline toegankelijkheid – Bij non-custodial wallets is geen actieve internetverbinding nodig. Custodial wallets hebben wel een internetverbinding nodig, aangezien de gegevens doorgaans op een gecentraliseerde server worden opgeslagen.
  • Back-up en herstel - Het enige nadeel van non-custodial wallets is dat, zodra de privĂ©sleutel of de mnemonische seed verloren is gegaan, er geen manier is om de wallet te herstellen. Gebruikers van custodial wallets kunnen daarentegen een derde partij inschakelen voor herstel.

Een node zonder bewaring gebruiken​

Bij Quicknode beheren we wereldwijd talrijke nodes. Al deze nodes staan voortdurend in verbinding met het internet en zijn dynamisch. De Quicknode-API is gekoppeld aan een wereldwijd netwerk van krachtige nodes. Deze nodes zijn niet altijd verbonden met één enkel infrastructuuronderdeel. De API is ontworpen om dynamisch te schakelen tussen afzonderlijke infrastructuuronderdelen, om zo een betere stabiliteit en uptime te waarborgen. Dit maakt het opslaan van gevoelige gegevens op een node niet ideaal, aangezien deze voortdurend in beweging zijn. Daarnaast speelt ook een veiligheidsaspect een rol, aangezien deze nodes in verbinding staan met het internet. Om de veiligheid van de gegevens van onze gebruikers te waarborgen, staan we niet toe dat ze privésleutels opslaan.  Omdat ze dynamisch zijn, veranderen ze vaak van status om betere prestaties te leveren. Dit betekent dat de sleutels verloren kunnen gaan, met als gevolg dat de gegevens van de gebruiker verloren gaan. Dit waren de redenen om niet-bewarende knooppunten te gebruiken en onze gebruikers de enige beheerder van hun wallets te laten zijn. In de volgende paragrafen zullen we zien hoe je een wallet aanmaakt met behulp van een bibliotheek, een niet-bewarende transactie uitvoert en deze verstuurt via Quicknode.

Je Quicknode Ethereum-eindpunt instellen​

Voor onze doeleinden van vandaag kunnen we vrijwel elke Ethereum-client gebruiken, zoals Geth of OpenEthereum (voorheen Parity). Aangezien dat voor het versturen van transacties iets te ingewikkeld is, maken we hier gewoon een gratis Quicknode-account aan en genereren we eenvoudig een Ethereum-eindpunt. We gebruiken de Kovan-testketen om de overboekingen uit te voeren. Nadat je je gratis Ethereum-eindpunt hebt aangemaakt, kopieer je de URL van je HTTP-provider:

Een screenshot van de pagina ‘Aan de slag’ van het Quicknode Ethereum-eindpunt, met een HTTP-link en WSS

 

Je hebt dit later nog nodig, dus kopieer het en sla het op.

Een wallet aanmaken en wat test-ETH ontvangen​

We zouden een van de vele beschikbare Web3-bibliotheken kunnen gebruiken om een wallet te maken. Vandaag gebruiken we ethers.js, een JavaScript-bibliotheek, om een wallet te maken waarmee transacties kunnen worden ondertekend en verzonden. Je kunt ook onze handleidingen raadplegen over het maken van een Ethereum-wallet in Go / Python / Ruby / PHP.

We gaan Ethers installeren met behulp van npm (Node Package Manager), dat bij Node.js wordt meegeleverd. Open je cmd/terminal en typ het volgende om te controleren of Node.js is geĂŻnstalleerd:

node -v 

Dit zou de geïnstalleerde versie van Node.js moeten weergeven; als het niet is geïnstalleerd, download dan de LTS-versie van Node.js van de officiële website.

Laten we een nieuwe map voor ons project aanmaken en die map in de cmd/terminal instellen als onze huidige werkmap:

mkdir noncusTransaction
cd noncusTransaction

Installeer nu ethers door het volgende in te typen:

npm i ethers@5.7

Zorg ervoor dat je Ethers.js versie 5.7 installeert

Het meest voorkomende probleem bij deze stap is een interne fout bij `node-gyp`. Je kunt hier de installatie-instructies voor node-gyp volgen.

Opmerking: Als je het node-gyp-probleem tegenkomt, moet je ervoor zorgen dat je Python-versie overeenkomt met een van de compatibele versies die in de bovenstaande instructies worden vermeld. 

Een ander veelvoorkomend probleem is een verouderde cache; wis je npm-cache door simpelweg het onderstaande in je cmd/terminal in te voeren:

npm cache clean

Als alles goed gaat, wordt ethers.js op je systeem geĂŻnstalleerd.

Open nu een teksteditor en maak een nieuw JavaScript-bestand aan met de naam transaction.js. Kopieer en plak de volgende tekst in het bestand.

var ethers = require('ethers');  
var privateKey = "0x0111111111111111111122222222222222222223333333333333333333344445";
var wallet = new ethers.Portemonnee(privateKey);
console.log("Adres: " + portemonnee.adres);

Uitleg bij de bovenstaande code:

Regel 1: De ethers-bibliotheek importeren.

Regel 2: Sla een privésleutel op in de variabele `privateKey`. Zorg ervoor dat je je eigen privésleutel gebruikt. Je kunt leren hoe je er een kunt genereren door deze handleiding te volgen over het genereren van een privésleutel met JavaScript.

Opmerking: Als je je code op internet zou plaatsen (bijvoorbeeld in een openbare GitHub-repository), is het altijd een goede gewoonte om de privésleutel in een .env-bestand op te slaan en deze via een omgevingsvariabele in je hoofdcode te importeren. 

Regel 3: Een nieuw walletadres aanmaken met behulp van de privésleutel en dit opslaan in de variabele `wallet`.

Regel 4: Het walletadres samen met een tekenreeks afdrukken.

Sla het bestand nu op en voer het script uit.

knooppunttransactie

Het zou er zo uit moeten zien.

Laten we nu wat test-ETH ophalen om tijdens de transactie te versturen en de gasvergoeding te betalen. Kopieer het adres uit de output, ga naar de Kovan-faucet, log in met GitHub of GitLab, plak het walletadres in het tekstveld van de faucet en klik vervolgens op "Send me KETH!".

Je kunt controleren of je de test-ETH hebt ontvangen door het adres in de Kovan Etherscan te plakken; je ziet dan het ETH-saldo.

Een transactie zonder bewaargeving verzenden​

Laten we een transactie voor het overdragen van tokens aanmaken met behulp van de wallet die we eerder hebben aangemaakt, en de transactie via Quicknode naar de blockchain verzenden.

Pas je transaction.js als volgt aan:

var ethers = require('ethers');  
var url = ''ADD_YOUR_ETHEREUM_NODE_URL'';
var customHttpProvider = new ethers.providers.JsonRpcProvider(url);
var privateKey = "0x0111111111111111111122222222222222222223333333333333333333344445";
var wallet = new ethers.Wallet(privateKey);
console.log("Address: " + wallet.address);
tx = {
to: "0x6E0d01A76C3Cf4288372a29124A26D4353EE51BE",
value: ethers.utils.parseEther("0.05"),
chainId: 42,
nonce: 11
}
customHttpProvider.estimateGas(tx).then(function(estimate) {
tx.gasLimit = estimate;
tx.gasPrice = ethers.utils.parseUnits("3.14085197", "gwei");
wallet.signTransaction(tx).then((signedTX)=>{
customHttpProvider.sendTransaction(signedTX).then(console.log);
});
});

Vervang dus `ADD_YOUR_ETHEREUM_NODE_URL` door de HTTP-provider uit het bovenstaande gedeelte.

Uitleg bij de bovenstaande code.

Regel 1: De ethers-bibliotheek importeren.

Regel 2: Onze Quicknode-URL opslaan in de variabele `url`.

Regel 3: Een nieuwe ethers-provider aanmaken en deze opslaan in de variabele customHttpProvider.

Regel 4: De privésleutel opslaan in de variabele `privateKey` (je moet zelf je privésleutel genereren).

Regel 5: Een nieuwe wallet aanmaken op basis van de privésleutel.

Regel 6: Het walletadres samen met een tekenreeks afdrukken.

Regels 7-12: We initialiseren ons transactieobject en voeren parameters in, zoals ‘to’, dat het adres van de ontvanger bevat (elk adres waarnaar de transactie moet worden verzonden). Ten tweede ‘value’, dat de waarde in ETH bevat die moet worden overgedragen. Ten derde is ‘chainId’ de netwerk-ID van de keten (hier 42, omdat we het Kovan-testnet gebruiken). Ten slotte ‘nonce’, het aantal transacties dat een afzender heeft verzonden. De waarde hiervan moet altijd gelijk zijn aan het aantal eerdere transacties plus 1.

 We kunnen de nonce voor een bepaald adres ook opvragen met behulp van de methode getTransactionCount() van ethers.js.

Regel 13-14: Het gas wordt geschat met behulp van de provider en vervolgens opgeslagen in de variabele `gasLimit` van het transactieobject.

Regel 15: De gasprijs instellen en deze opslaan in de variabele `gasPrice` van de transactie.

Regel 16: De transactie ondertekenen met de wallet.

Regel 17: De ondertekende transactie via de provider verzenden en de transactiegegevens op de console weergeven.

Sla het bestand op en voer het uit met:

knooppunttransactie

De uitvoer zal er ongeveer zo uitzien:

Kopieer de transactie-hash en plak deze in de zoekbalk van Kovan Etherscan om te controleren of de transactie al dan niet is bevestigd.

Conclusie​

Gefeliciteerd met het uitvoeren van een non-custodial transactie en het feit dat je de enige bent die de controle heeft over je geld. Deel je privésleutel nooit met iemand; bewaar deze altijd op een veilige plek, zodat je portemonnee en je geld beter beveiligd zijn.

Schrijf je in voor onze nieuwsbrief voor meer artikelen en handleidingen over Ethereum. Je kunt ons ook altijd bereiken via Twitter en onze Discord-communityserver, waar je enkele van de coolste ontwikkelaars tegenkomt die je ooit zult ontmoeten :)

We ❀ feedback!

Laat het ons weten als je feedback hebt of suggesties voor nieuwe onderwerpen. We horen graag van je.

Deel deze gids