Leestijd: 6 min
Inleiding
Hallo lezer! Vandaag is een spannende dag, want we gaan op ontdekkingsreis naar de Solana-blockchain. Solana is een opkomende blockchain die de oplossingen van het huidige ecosysteem wil verbeteren voor het complexe probleem van het bieden van een veilig, schaalbaar en gedecentraliseerd consensusprotocol. Solana maakt gebruik van een groot aantal technologieën om marktaandeel te veroveren op zijn grote broer Ethereum. In deze handleiding leer je hoe je verbinding maakt met Solana, geld ophaalt op het devnet en een transactie verstuurt met deze nieuwe en spannende technologie.
Liever een videohandleiding? Volg dan Sahil en leer hoe je met JavaScript een transactie op Solana kunt versturen.
Vereisten:
- Node.js is op uw systeem geïnstalleerd.
- Bekendheid met de opdrachtregel/terminal.
- Een teksteditor om code in te schrijven.
Het project opzetten
Je moet je project eerst opzetten voordat je Solana-transacties kunt gaan verwerken als een daghandelaar in penny stocks! Maak om te beginnen een map aan. In deze handleiding noemen we die SolanaTransaction, maar je mag hem natuurlijk een naam geven die je zelf wilt. Nadat we de nieuwe projectmap hebben aangemaakt, hebben we een bestand nodig waarin we onze code kunnen schrijven. Ook hier geldt: je kunt het bestand elke naam geven, zolang het maar eindigt op de extensie .js, maar wij noemen het onze sendSol.js. Voer de volgende commando’s in je console in om verder te gaan.
mkdir SolanaTransaction
cd SolanaTransaction
touch sendSol.js
Nu dat geregeld is, open je het bestand sendSol.js met je favoriete teksteditor.
Een Solana-node opzetten
Maak verbinding met een Solana-cluster via je Quicknode-eindpunt
Om op Solana te kunnen bouwen, heb je een API-eindpunt nodig om verbinding te maken met het netwerk. Je kunt gebruikmaken van openbare nodes of je eigen infrastructuur opzetten en beheren; maar als je 8x snellere responstijden wilt, kun je het zware werk aan ons overlaten.
Ontdek waarom meer dan 50% van de projecten op Solana Kies voor Quicknode en start je gratis proefperiode hier. We gaan een Solana Devnet eindpunt.
Kopieer de HTTP Link naar de aanbieder:
Verbinding maken met Solana
Om verbinding te maken met het devnet van Solana moeten we de bibliotheek @solana/web3.js installeren. Voer hiervoor de volgende opdracht uit.
npm i @solana/web3.js@1
Nu de JavaScript-bibliotheek van Solana is geïnstalleerd, kunnen we verbinding maken met het netwerk.
//sendSol.js
const web3 = require("@solana/web3.js");
// Connect to cluster
const connection = new web3.Connection(
"<YOUR_QUICKNODE_URL_HERE>",
'confirmed',
);
Een kort overzicht van de code:
- Regel 2: de bibliotheek solana/web3.js importeren.
- Regels 4-6: Een nieuw verbindingsobject aanmaken. De constructor van de verbinding neemt een tekenreeksweergave van een eindpunt-URL (die we in de vorige stap hebben gegenereerd) en een commitmentniveau als argumenten.
Met de verbinding Nu de constante is geconfigureerd, kun je verbindingen maken met het Solana-netwerk. Als je wilt testen of je verbinding werkt, kun je console.log(verbinding) om de verbindingsobject.
Het genereren van de adressen en fondsen
Zodra we verbinding hebben met het netwerk, moeten we de tools aanschaffen om de adressen te genereren en middelen voor het netwerk te verkrijgen. Eerst moeten we een nieuw sleutelpaar genereren en wat SOL via een airdrop uitdelen. We hebben een eenvoudige tool gemaakt waarmee je een nieuw sleutelpaar kunt genereren:
Opmerking: Als je te vaak airdrop-verzoeken verstuurt, kan dit een 429-fout (Too Many Requests) veroorzaken.
Plak je geheim en uit portemonneeadres in je code onder je web3 verklaring.
Voeg ten slotte een bestemmingsadres toe – we genereren gewoon een willekeurig adres om onze SOL naar te sturen met behulp van const to = web3.Keypair.generate(); Je code zou er als volgt uit moeten zien:
//sendSol.js
const web3 = require("@solana/web3.js");
const connection = new web3.Connection(
"<YOUR_QUICKNODE_URL_HERE>",
'confirmed',
);
const secret=[00, ... 00]; // Replace with your secret key
const from = web3.Keypair.fromSecretKey(new Uint8Array(secret));
// Generate a random address to send to
const to = web3.Keypair.generate();
We nemen dit stukje code eens door:
geheim: Dit is de geheime sleutel die we in de vorige stap hebben gegenereerd. Deze wordt gebruikt om transacties te ondertekenen – we hebben al wat devnet-SOL op deze rekening gestort.uit: Een nieuw sleutelpaar aanmaken dat is afgeleid van de unit8array van de geheime sleutel.naar: Een nieuw sleutelpaar aanmaken waarnaar we geld zullen overmaken.
Nu je al die voorgaande stappen hebt doorlopen, zou je nu het volgende moeten hebben:
- Een verbinding met het Solana-netwerk.
- Een rekening waarop voldoende saldo staat om SOL vanaf te versturen.
- Een accountadres waarnaar SOL kan worden verzonden.
Het blijkt dat je met al die onderdelen nu een transactie kunt afronden!
De transactie verzenden
Nu komt het leuke gedeelte! We kunnen nu een transactie naar het netwerk verzenden. Dit proces bestaat uit twee delen. Ten eerste moeten we een nieuw transactieobject aanmaken. Ten tweede moeten we die transactie naar een andere gebruiker verzenden en er onze handtekening aan toevoegen. Het volgende asynchrone codeblok laat precies zien hoe we dat moeten doen:
(async () => {
const transaction = new web3.Transaction().add(
web3.SystemProgram.transfer({
fromPubkey: from.publicKey,
toPubkey: to.publicKey,
lamports: web3.LAMPORTS_PER_SOL / 100,
}),
);
// Sign transaction, broadcast, and confirm
const signature = await web3.sendAndConfirmTransaction(
connection,
transaction,
[from],
);
console.log('SIGNATURE', signature);
})()
De transactie aanmaken
Hier zie je dat elk van de voorgaande stappen een eigen functie heeft. We kunnen beginnen met de eerste functie: `web3.Transaction().add(web3.SystemProgram.transfer())`. Dat is nogal uitgebreid en moet in kleinere delen worden opgesplitst om het volledig te kunnen begrijpen.
- web3.Transaction() - maakt een leeg Transaction-object aan.
- add() - Biedt een methode waarmee we instructies aan het Transaction-object kunnen toevoegen.
- web3.SystemProgram.transfer() - Dit is de methode die verantwoordelijk is voor het overmaken van geld van de ene rekening naar de andere. De methode neemt verschillende argumenten aan. Dit komt overeen met de regels 2 tot en met 6 van onze eerste functie, die we opslaan in de transactieconstante.
Parameters:
- fromPubkey - De openbare sleutel van de rekening waarvan we geld overmaken.
- toPubkey - De openbare sleutel van de rekening waarop het geld uit de transactie wordt gestort.
- lamports: - Het aantal lamports dat moet worden verzonden. Je kunt lamports beschouwen als het equivalent van gwei voor Ether.
Ondertekening van de transactie
Nu het transactieobject klaar is voor gebruik, moeten we de transactie autoriseren door deze te ondertekenen met onze geheime sleutel. De tweede functie in het bovenstaande codeblok zorgt voor deze stap in het proces. We kunnen dit in delen opsplitsen om beter te begrijpen wat er precies gebeurt.
- Regel 10: De constante „signature” wordt gedefinieerd, waarin het resultaat van de functie ` sendAndConfirmTransaction()` wordt opgeslagen
- Regels 11-13: het doorgeven van de argumenten aan de eerder genoemde functie. De argumenten zijn, in volgorde: het verbindingsobject, de te verzenden transactie en het privé-/publieke sleutelpaar van de afzender, weergegeven als een array.
- Regel 15: De geslaagde ondertekening vastleggen, die wordt weergegeven door een transactie-hash.
Nu dit allemaal is gedaan, ben je klaar om je code uit te voeren. Sla de URL van het Quicknode-eindpunt en de geheime sleutel als volgt op in een omgevingsvariabele:
QUICKNODE_URL=<YOUR_QUICKNODE_URL_HERE>
SECRET_KEY=<SECRET_KEY_HERE>
Vervangen <YOUR_QUICKNODE_URL_HERE> en <SECRET_KEY_HERE> met werkelijke waarden.
Het laatste codefragment zou er uiteindelijk zo uit moeten zien
//sendSol.js
require('dotenv').config();
const web3 = require("@solana/web3.js");
const connection = new web3.Connection(
process.env.QUICKNODE_URL,
'confirmed',
);
const secret = JSON.parse(process.env.SECRET_KEY);
const from = web3.Keypair.fromSecretKey(new Uint8Array(secret));
// Generate a random address to send to
const to = web3.Keypair.generate();
(async () => {
const transaction = new web3.Transaction().add(
web3.SystemProgram.transfer({
fromPubkey: from.publicKey,
toPubkey: to.publicKey,
lamports: web3.LAMPORTS_PER_SOL / 100, //0.01 SOL
}),
);
// Sign transaction, broadcast, and confirm
const signature = await web3.sendAndConfirmTransaction(
connection,
transaction,
[from],
);
console.log('SIGNATURE', signature);
})()
Je kunt nu het bestand sendSol.js in je terminal uitvoeren en je krijgt dan een uitvoer die er ongeveer zo uitziet!

Conclusie
Gefeliciteerd! Als je tot hier bent gekomen, heb je nu met succes een transactie verzonden via het Solana-netwerk. Solana is een zeer interessante blockchain, die op het gebied van gebruikerservaring (UX) verbeteringen lijkt te bieden ten opzichte van het Ethereum-netwerk. De transacties verlopen sneller en de kosten zijn lager. Solana is nog niet zo grondig getest als Ethereum, maar het is zeker de moeite waard om in de gaten te houden. En wat nog belangrijker is: jij loopt al voorop! Er zijn niet veel mensen die kunnen zeggen dat ze met JavaScript een transactie op Solana hebben verzonden, maar jij wel!
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 :)
We ❤️ feedback!
Laat het ons weten als je feedback hebt of suggesties voor nieuwe onderwerpen. We horen graag van je.