Ana içeriğe geç

Bu sayfanın güncellenmesine yardım edin

🌏

Bu sayfanın yeni bir sürümü vardır ancak şu anda yalnızca İngilizce'dir. Son sürümü çevirmemize yardımcı ol.

Sayfayı çevir
İngilizce'yi gör

Burada hata yok!🐛

Bu sayfa tercüme edilmiyor. Bu sayfayı şimdilik kasıtlı olarak İngilizce bıraktık.

JavaScript API kütüphaneleri

Son düzenleme: , Invalid DateTime
Sayfayı düzenle

Bir web uygulamasının Ethereum blok zinciri ile etkileşime girebilmesi için (yani blok zinciri verilerini okuması ve/veya ağa işlem gönderebilmesi) bir Ethereum düğümüne bağlanması gerekir.

Bu amaçla, her Ethereum istemcisi JSON-RPC şartnamesini uygular, bu nedenle uygulamaların güvenebileceği tek tip bir uç noktaları vardır.

Eğer bir Ethereum düğümüne bağlanmak için JavaScript kullanmak istiyorsanız, düz JavaScript'i kullanmak mümkündür ancak ekosistem içinde bunu çok daha kolay hâle getiren birkaç kolaylık kütüphanesi bulunur. Bu kitaplıklarla geliştiriciler, Ethereum ile etkileşime giren JSON RPC isteklerini (başlık altında) başlatmak için sezgisel, tek satırlı yöntemler yazabilir.

Ön koşullar

JavaScript'i anlamanın yanı sıra, Ethereum Yığını ve Ethereum istemcilerini anlamak faydalı olabilir.

Neden bir kütüphane kullanılır?

Bu kütüphaneler, bir Ethereum düğümü ile doğrudan etkileşim kurmanın karmaşıklığının çoğunu ortadan kaldırır. Ayrıca, bir geliştirici olarak Ethereum istemcilerinin karmaşıklıkları ile daha az zaman harcayarak ve uygulamanızın benzersiz işlevselliğine daha fazla zaman ayırabilmeniz için yardımcı işlevler (örneğin, ETH'yi Gwei'ye dönüştürmek) sağlarlar.

Kütüphane özellikleri

Ethereum düğümlerine bağlanın

Bu kütüphaneler, sağlayıcıları kullanarak JSON-RPC, INFURA, Etherscan, Alchemy veya MetaMask üzerinden Ethereum'a bağlanmanıza ve Ethereum verilerini okumanıza olanak tanır.

Ethers örneği

1// A Web3Provider wraps a standard Web3 provider, which is
2// what MetaMask injects as window.ethereum into each page
3const provider = new ethers.providers.Web3Provider(window.ethereum)
4
5// The MetaMask plugin also allows signing transactions to
6// send ether and pay to change state within the blockchain.
7// Bunun için hesap imzalayana ihtiyacımız var...
8sabit imzalayan = sağlayıcı.getSigner()
9
📋 Kopyala

Web3js örneği

1var web3 = new Web3("http://localhost:8545")
2// or
3var web3 = new Web3(new Web3.providers.HttpProvider("http://localhost:8545"))
4
5// change provider
6web3.setProvider("ws://localhost:8546")
7// or
8web3.setProvider(new Web3.providers.WebsocketProvider("ws://localhost:8546"))
9
10// Using the IPC provider in node.js
11var net = require("net")
12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os path
13// or
14var web3 = new Web3(
15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
16) // mac os path
17// on windows the path is: "\\\\.\\pipe\\geth.ipc"
18// on linux the path is: "/users/myuser/.ethereum/geth.ipc"
19
Tümünü göster
📋 Kopyala

Kurulduktan sonra blok zincirini aşağıdakiler için sorgulayabileceksiniz:

  • blok numaraları
  • gaz tahminleri
  • akıllı sözleşme olayları
  • ağ kimliği
  • ve daha fazlası...

Cüzdan işlevselliği

Bu kütüphaneler size cüzdan oluşturma, anahtarları yönetme ve işlemleri imzalama işlevselliği sunar.

İşte Ethers'dan bir örnek

1// Bir anımsatıcıdan bir cüzdan örneği oluşturun...
2mnemonic =
3 "announce room limb pattern dry unit scale effort smooth jazz weasel alcohol"
4walletMnemonic = Wallet.fromMnemonic(mnemonic)
5
6// ...or from a private key
7walletPrivateKey = new Wallet(walletMnemonic.privateKey)
8
9walletMnemonic.address === walletPrivateKey.address
10// true
11
12// The address as a Promise per the Signer API
13walletMnemonic.getAddress()
14// { Promise: '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1' }
15
16// A Wallet address is also available synchronously
17walletMnemonic.address
18// '0x71CB05EE1b1F506fF321Da3dac38f25c0c9ce6E1'
19
20// The internal cryptographic components
21walletMnemonic.privateKey
22// '0x1da6847600b0ee25e9ad9a52abbd786dd2502fa4005dd5af9310b7cc7a3b25db'
23walletMnemonic.publicKey
24// '0x04b9e72dfd423bcf95b3801ac93f4392be5ff22143f9980eb78b3a860c4843bfd04829ae61cdba4b3b1978ac5fc64f5cc2f4350e35a108a9c9a92a81200a60cd64'
25
26// The wallet mnemonic
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// Note: A wallet created with a private key does not
35// have a mnemonic (the derivation prevents it)
36walletPrivateKey.mnemonic
37// null
38
39// Signing a message
40walletMnemonic.signMessage("Hello World")
41// { Promise: '0x14280e5885a19f60e536de50097e96e3738c7acae4e9e62d67272d794b8127d31c03d9cd59781d4ee31fb4e1b893bd9b020ec67dfa65cfb51e2bdadbb1de26d91c' }
42
43tx = {
44 to: "0x8ba1f109551bD432803012645Ac136ddd64DBA72",
45 value: utils.parseEther("1.0"),
46}
47
48// Signing a transaction
49walletMnemonic.signTransaction(tx)
50// { Promise: '0xf865808080948ba1f109551bd432803012645ac136ddd64dba72880de0b6b3a7640000801ca0918e294306d177ab7bd664f5e141436563854ebe0a3e523b9690b4922bbb52b8a01181612cec9c431c4257a79b8c9f0c980a2c49bb5a0e6ac52949163eeb565dfc' }
51
52// The connect method returns a new instance of the
53// Wallet connected to a provider
54wallet = walletMnemonic.connect(provider)
55
56// Querying the network
57wallet.getBalance()
58// { Promise: { BigNumber: "42" } }
59wallet.getTransactionCount()
60// { Promise: 0 }
61
62// Sending ether
63wallet.sendTransaction(tx)
64
Tümünü göster
📋 Kopyala

Belgelerin tamamını okuyun

Kurulumdan sonra şunları yapabileceksiniz:

  • hesap oluşturabilirsiniz
  • işlem gönderebilirsiniz
  • işlemleri imzalayabilirsiniz
  • ve daha fazlası...

Akıllı sözleşme fonksiyonlarıyla etkileşim kurmak

JavaScript istemci kütüphaneleri, derlenmiş bir sözleşmenin Uygulama İkili Arabirimini (ABI) okuyarak uygulamanızın akıllı sözleşme fonksiyonlarını çağırmasına olanak tanır.

ABI, esasen sözleşmenin fonksiyonlarını bir JSON formatında açıklar ve onu normal bir JavaScript nesnesi gibi kullanmanıza izin verir.

Yani aşağıdaki Solidity sözleşmesi:

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}
16
Tümünü göster
📋 Kopyala

Aşağıdaki JSON ile sonuçlanır:

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}]
25
Tümünü göster
📋 Kopyala

Bu, şunları yapabileceğiniz anlamına gelir:

  • Akıllı sözleşmeye bir işlem gönderin ve yöntemini uygulayın
  • EVM'de yürütüldüğünde bir yöntem yürütmesinin harcayacağı gazı tahmin etme çağrısı
  • Sözleşme dağıtmak
  • Ve daha fazlası...

Yardımcı fonksiyonlar

Yardımcı fonksiyonlar, Ethereum ile oluşturmayı biraz daha kolaylaştıran kullanışlı kısayollar sunar.

ETH değerleri varsayılan olarak Wei cinsindendir. 1 ETH = 1.000.000.000.000.000.000 WEI – bu, çok sayıda sayıyla uğraştığınız anlamına gelir! web3.utils.toWei, ether'ı sizin için Wei'ye dönüştürür.

Ve ethers'da şöyle görünür:

1// Get the balance of an account (by address or ENS name)
2balance = await provider.getBalance("ethers.eth")
3// { BigNumber: "2337132817842795605" }
4
5// Often you will need to format the output for the user
6// which prefer to see values in ether (instead of wei)
7ethers.utils.formatEther(balance)
8// '2.337132817842795605'
9
📋 Kopyala

Mevcut kütüphaneler

Web3.js - Ethereum JavaScript API.

Ethers.js - JavaScript ve TypeScript'te eksiksiz Ethereum cüzdan uygulamaları ve araçları.

The Graph - Ethereum ve IPFS verilerini endekslemek ve GraphQL kullanarak sorgulamak için bir protokol.

light.js - Hafif istemciler için yüksek seviyede duyarlı JS kütüphanesidir.

Web3-wrapper - Web3.js için alternatif yazıtipi.

Alchemyweb3 - Otomatik yeniden denemeler ve geliştirilmiş API'ler ile Web3.js odaklı paketleyici.

Alchemy NFT API - Sahiplik, meta veri özellikleri ve daha fazlası dahil olmak üzere NFT verilerini almak için API.

Daha fazla bilgi

Size yardımcı olan bir topluluk kaynağı mı biliyorsunuz? Bu sayfayı düzenleyin ve onu ekleyin!

Bu makale yararlı oldu mu?