Μετάβαση στο κύριο περιεχόμενο
Change page

Βιβλιοθήκες API της JavaScript

Προκειμένου μια εφαρμογή ιστού να αλληλεπιδράσει με την κεντρική αλυσίδα του Ethereum (π.χ. ανάγνωση δεδομένων και/ή αποστολή συναλλαγών στο δίκτυο), πρέπει να συνδεθεί με έναν κόμβο του δικτύου Ethereum.

Για αυτό τον σκοπό, κάθε εφαρμογή πελάτη Ethereum εφαρμόζει την προδιαγραφή JSON-RPC, ώστε να υπάρχει ένα ομοιόμορφο σύνολο μεθόδων όπου μπορούν να βασίζονται οι εφαρμογές.

Εάν θέλετε να χρησιμοποιήσετε τη JavaScript για να συνδεθείτε με έναν κόμβο Ethereum, είναι δυνατό να χρησιμοποιήσετε το vanilla JavaScript καθώς υπάρχουν πολλές βιβλιοθήκες εντός του οικοσυστήματος που το καθιστούν πολύ πιο εύκολο. Με αυτές τις βιβλιοθήκες, οι προγραμματιστές μπορούν να γράφουν διαισθητικές μεθόδους μίας γραμμής για την αρχικοποίηση αιτημάτων JSON RPC (έμμεσα) που αλληλεπιδρούν με το Ethereum.

Παρακαλούμε σημειώστε ότι από τη Συγχώνευση, δύο συνδεδεμένα κομμάτια λογισμικού Ethereum, ένας πελάτης εκτέλεσης και ένας πελάτης συναίνεσης, απαιτούνται για να λειτουργήσει ένας κόμβος. Παρακαλούμε βεβαιωθείτε ότι ο κόμβος σας περιλαμβάνει τόσο το εκτελεστικό όσο και το συναινετικό τμήμα της εφαρμογής πελάτη. Εάν ο κόμβος σας δε βρίσκεται στον τοπικό σας υπολογιστή (π.χ. ο κόμβος σας εκτελείται σε ένα σύστημα AWS) ενημερώστε ανάλογα τις διευθύνσεις IP στον οδηγό λειτουργίας. Για περισσότερες πληροφορίες δείτε τη σελίδα μας εκτελώντας έναν κόμβο.

Προαπαιτούμενα

Εκτός από την κατανόηση της JavaScript, θα ήταν χρήσιμο να κατανοήσουμε τη σημασία της αποθήκευση κεφαλαίου Ethereum και των εφαρμογών πελάτη του Ethereum.

Γιατί να χρησιμοποιήσετε μια βιβλιοθήκη;

Αυτές οι βιβλιοθήκες εκτελούν το μεγαλύτερο μέρος της πολυπλοκότητας της άμεσης αλληλεπίδρασης με έναν κόμβο του Ethereum. Παρέχουν επίσης χρήσιμες λειτουργίες (π.χ. μετατροπή από ETH σε Gwei) έτσι ώστε ένας προγραμματιστής να χρειαστεί λιγότερο χρόνο για τη διασύνδεση της εφαρμογής πελάτη του με το δίκτυο του Ethereum, επικεντρώνοντας στη μοναδική λειτουργικότητα της εφαρμογής.

Χαρακτηριστικά βιβλιοθήκης

Σύνδεση σε κόμβους του Ethereum

Χρησιμοποιώντας τους παρόχους, αυτές οι βιβλιοθήκες σας επιτρέπουν να συνδεθείτε στο Ethereum και να διαβάσετε τα δεδομένα του, είτε αυτό είναι μέσω JSON-RPC, INFURA, Etherscan, Alchemy ή MetaMask.

Παράδειγμα Ethers

1// Το BrowserProvider περικλείει ένα τυπικό Web3 πάροχο, ο οποίος είναι
2// αυτό που παρέχει το Metamask με το window.ethereum σε κάθε σελίδα
3const provider = new ethers.BrowserProvider(window.ethereum)
4
5// Το πρόσθετο Metamask επιτρέπει επίσης την υπογραφή συναλλαγών
6// για αποστολή ether και πληρωμή για αλλαγή κατάστασης εσωτερικά
7// στην κεντρική αλυσίδα.
8// Γι' αυτό χρειαζόμαστε τη σύνδεση με το λογαριασμό...
9const signer = provider.getSigner()
Εμφάνιση όλων
Αντιγραφή

Παράδειγμα Web3js

1var web3 = new Web3("http://localhost:8545")
2// ή
3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
4
5// αλλαγή παρόχου
6web3.setProvider("ws://localhost:8546")
7// ή
8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
9
10// Με χρήση του παρόχου IPC σε node.js
11var net = require("net")
12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path
13// ή
14var web3 = new Web3(
15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
16) // διαδρομή για mac os
17// σε windows η διαδρομή είναι: "\\\\.\\pipe\\geth.ipc"
18// σε linux η διαδρομή είναι: "/users/myuser/.ethereum/geth.ipc"
Εμφάνιση όλων
Αντιγραφή

Μόλις ρυθμιστεί μπορείτε να αναζητήσετε στην κεντρική αλυσίδα για:

  • Τους αριθμούς των μπλοκ
  • Την εκτίμηση του ύψους των κρατήσεων
  • Νέα για έξυπνα συμβόλαια
  • Την ταυτότητα του δικτύου
  • Και πολλά άλλα...

Λειτουργικότητα πορτοφολιού

Αυτές οι βιβλιοθήκες σας δίνουν τη δυνατότητα να δημιουργήσετε πορτοφόλια, να διαχειριστείτε τα κλειδιά και να υπογράψετε συναλλαγές.

Δείτε ένα παράδειγμα από το Ethers

1// Δημιουργήστε ένα πορτοφόλι με χρήση της φράσης ασφαλείας...
2mnemonic =
3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
4walletMnemonic = Wallet.fromPhrase(mnemonic)
5
6// ...ή από ιδιοτικό κλειδί
7walletPrivateKey = new Wallet(walletMnemonic.privateKey)
8
9walletMnemonic.address === walletPrivateKey.address
10// αληθές
11
12// Η διεύθυνση ως Υπόσχεση ανά Signer API
13walletMnemonic.getAddress()
14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
15
16// Μια διεύθυνση Πορτοφολιού είναι επίσης ταυτόχρονα διαθέσιμη
17walletMnemonic.address
18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
19
20// Εσωτερικά κρυπτογραφημένα αντικείμενα
21walletMnemonic.privateKey
22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
23walletMnemonic.publicKey
24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
25
26// Το μνημονικό πορτοφολιού
27walletMnemonic.mnemonic
28// {
29// locale: 'en',
30// path: 'm/44\'/60\'/0\'/0/0',
31// phrase: 'announce room limb pattern dry unit scale effort smooth jazz weasel alcohol'
32// }
33
34// Σημείωση: Ένα πορτοφόλι που δημιουργείται με ιδιωτικό κλειδί δεν
35// έχει μνημονικό (το αποτρέπει το παράγωγο)
36walletPrivateKey.mnemonic
37// null
38
39// Υπογραφή μηνύματος
40walletMnemonic.signMessage("Hello World")
41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
42
43tx = {
44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
45 value: utils.parseEther("1.0"),
46}
47
48// Υπογραφή συναλλαγής
49walletMnemonic.signTransaction(tx)
50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
51
52// Η μέθοδος σύνδεσης επιστρέφει μια νέα κατάσταση του
53// πορτοφολιού συνδεδεμένο με πάροχο
54wallet = walletMnemonic.connect(provider)
55
56// Αναμονή δικτύου
57wallet.getBalance()
58// { Promise: { BigNumber: "42" } }
59wallet.getTransactionCount()
60// { Promise: 0 }
61
62// Αποστολή ether
63wallet.sendTransaction(tx)
Εμφάνιση όλων
Αντιγραφή

Ανάγνωση της πλήρη τεκμηρίωση(opens in a new tab)

Μόλις ρυθμιστεί θα μπορείτε να:

  • Δημιουργήσετε λογαριασμούς
  • Στείλετε συναλλαγές
  • Υπογράψετε συναλλαγές
  • Και πολλά άλλα...

Αλληλεπίδραση με τις λειτουργίες ενός έξυπνου συμβολαίου

Οι βιβλιοθήκες της JavaScript για εφαρμογή πελάτη, σας επιτρέπουν να καλέσετε τις λειτουργίες έξυπνου συμβολαίου διαβάζοντας το Application Binary Interface (ABI) ενός ολοκληρωμένου συμβολαίου.

Το ABI εξηγεί ουσιαστικά τις λειτουργίες του συμβολαίου σε μορφή JSON και σας επιτρέπει να το χρησιμοποιήσετε σαν ένα κανονικό αντικείμενο της JavaScript.

Έτσι το ακόλουθο συμβόλαιο με τη Solidity θα ήταν:

1contract Test {
2 uint a;
3 address d = 0x12345678901234567890123456789012;
4
5 function Test(uint testInt) { a = testInt;}
6
7 event Event(uint indexed b, bytes32 c);
8
9 event Event2(uint indexed b, bytes32 c);
10
11 function foo(uint b, bytes32 c) returns(address) {
12 Event(b, c);
13 return d;
14 }
15}
Εμφάνιση όλων
Αντιγραφή

Και θα έχει ως αποτέλεσμα τα παρακάτω σε JSON:

1[{
2 "type":"constructor",
3 "payable":false,
4 "stateMutability":"nonpayable"
5 "inputs":[{"name":"testInt","type":"uint256"}],
6 },{
7 "type":"function",
8 "name":"foo",
9 "constant":false,
10 "payable":false,
11 "stateMutability":"nonpayable",
12 "inputs":[{"name":"b","type":"uint256"}, {"name":"c","type":"bytes32"}],
13 "outputs":[{"name":"","type":"address"}]
14 },{
15 "type":"event",
16 "name":"Event",
17 "inputs":[{"indexed":true,"name":"b","type":"uint256"}, {"indexed":false,"name":"c","type":"bytes32"}],
18 "anonymous":false
19 },{
20 "type":"event",
21 "name":"Event2",
22 "inputs":[{"indexed":true,"name":"b","type":"uint256"},{"indexed":false,"name":"c","type":"bytes32"}],
23 "anonymous":false
24}]
Εμφάνιση όλων
Αντιγραφή

Αυτό σημαίνει ότι μπορείτε:

  • Να στείλετε μια συναλλαγή στο έξυπνο συμβόλαιο και να εκτελέστε τη μέθοδό του
  • Να ζητήσετε εκτίμηση κόστους των κρατήσεων που θα απαιτηθούν με τη χρήση στην EVM
  • Να αναπτύξετε ένα συμβόλαιο
  • Και πολλά άλλα...

Βοηθητικές λειτουργίες

Οι βοηθητικές λειτουργίες σας παρέχουν χρήσιμες συντομεύσεις προς υποβοήθηση του έργου σας.

Οι τιμές του ETH είναι σε Wei από προεπιλογή. 1 ETH = 1,000,000,000,000,000,000,000 WEI – αυτό σημαίνει ότι έχετε να κάνετε με πολλούς αριθμούς! web3.utils.toWei μετατροπή ether σε Wei.

Σε ethers θα μοιάζει όπως παρακάτω:

1// Ανάγνωση του υπόλοιπου ενός λογαριασμού (ανά διεύθυνση ή όνομα ENS)
2balance = await provider.getBalance("ethers.eth")
3// { BigNumber: "2337132817842795605" }
4
5// Συχνά χρειάζεται να προσαρμόζεται το αποτέλεσμα για το χρήστη
6// που προτιμά να δει τις τιμές σε ether (και όχι σε wei)
7ethers.utils.formatEther(balance)
8// '2.337132817842795605'
Αντιγραφή

Διαθέσιμες βιβλιοθήκες

Web3.js - Ethereum JavaScript API.

Ethers.js - Ολοκληρωμένη εφαρμογή πορτοφολιού Ethereum και βοηθητικά προγράμματα με χρήση JavaScript και TypeScript.

The Graph - Ένα πρωτόκολλο δημιουργίας ευρετηρίου δεδομένων στο Ethereum και IPFS καθώς και την αναζήτηση με χρήση GraphQL.

light.js - Μια υψηλού επιπέδου βιβλιοθήκη της JS βελτιστοποιημένη για ελαφρές εφαρμογές πελάτη.

Web3-wrapper - Η Typescript ως εναλλακτική της Web3.js.

Alchemyweb3 - Η συνάρτηση Wrapper σε συνδυασμό με Web3.js και αυτόματες επαναπροσπάθειες καθώς και ενισχυμένα apis.

Alchemy NFT API - API για τη λήψη δεδομένων NFT, συμπεριλαμβανομένης της ιδιοκτησίας, των χαρακτηριστικών μεταδεδομένων και άλλων.

viem - Διεπαφή TypeScript για το Ethereum.

Περισσότερες πληροφορίες

Γνωρίζετε κάποιο πόρο της κοινότητας που σας βοήθησε; Επεξεργαστείτε αυτή τη σελίδα και προσθέστε το!

  • Κόμβοι και πελάτες
  • Πλαίσια ανάπτυξης
  • Ρυθμίστε το Web3js να χρησιμοποιεί την κεντρική αλυσίδα του Ethereum σε JavasScript – Οδηγίες ρύθμισης του web3.js για το έργο σας.
  • Σύνδεση ενός έξυπνου συμβολαίου με τη JavaScript – Με χρήση του κρυπτονομίσματος DAI, δείτε πως μπορείτε να χρησιμοποιήσετε λειτουργίες συμβολαίου με τη JavaScript.
  • Αποστολή συναλλαγών με χρήση web3 και Alchemy – Οδηγός βήμα προς βήμα για την αποστολή συναλλαγών από το σύστημα.

Ήταν χρήσιμο αυτό το άρθρο;