এড়িয়ে গিয়ে মূল কন্টেন্টে যান
Change page

জাভাস্ক্রিপ্ট API লাইব্রেরি

পৃষ্ঠাটি সর্বশেষ আপডেট করা হয়েছে: ২৫ ফেব্রুয়ারী, ২০২৬

একটি ওয়েব অ্যাপকে ইথেরিয়াম ব্লকচেইনের সাথে ইন্টারঅ্যাক্ট করার জন্য (যেমন, ব্লকচেইন ডেটা পড়া এবং/অথবা নেটওয়ার্কে লেনদেন পাঠানো), এটিকে অবশ্যই একটি ইথেরিয়াম নোডের সাথে সংযোগ স্থাপন করতে হবে।

এই উদ্দেশ্যে, প্রতিটি ইথেরিয়াম ক্লায়েন্ট JSON-RPC স্পেসিফিকেশন প্রয়োগ করে, তাই এখানে পদ্ধতিগুলির একটি অভিন্ন সেট রয়েছে যার উপর অ্যাপ্লিকেশনগুলি নির্ভর করতে পারে।

আপনি যদি একটি ইথেরিয়াম নোডের সাথে সংযোগ করতে JavaScript ব্যবহার করতে চান, তাহলে ভ্যানিলা JavaScript ব্যবহার করা সম্ভব কিন্তু ইকোসিস্টেমের মধ্যে বেশ কিছু সুবিধাজনক লাইব্রেরি বিদ্যমান যা এটিকে অনেক সহজ করে তোলে। এই লাইব্রেরিগুলির সাহায্যে, ডেভেলপাররা Ethereum-এর সাথে ইন্টারঅ্যাক্ট করে এমন JSON-RPC অনুরোধগুলি (হুডের নীচে) শুরু করার জন্য স্বজ্ঞাত, এক-লাইনের পদ্ধতি লিখতে পারে।

অনুগ্রহ করে মনে রাখবেন যে The Merge থেকে, একটি নোড চালানোর জন্য ইথেরিয়াম সফ্টওয়্যারের দুটি সংযুক্ত অংশ - একটি এক্সিকিউশন ক্লায়েন্ট এবং একটি কনসেন্সাস ক্লায়েন্ট - প্রয়োজন। অনুগ্রহ করে নিশ্চিত করুন যে আপনার নোডে একটি এক্সিকিউশন এবং কনসেন্সাস ক্লায়েন্ট উভয়ই অন্তর্ভুক্ত আছে। যদি আপনার নোডটি আপনার স্থানীয় মেশিনে না থাকে (যেমন, আপনার নোডটি একটি AWS ইনস্ট্যান্সে চলছে) তাহলে টিউটোরিয়ালে সেই অনুযায়ী IP ঠিকানাগুলি আপডেট করুন। আরও তথ্যের জন্য অনুগ্রহ করে আমাদের একটি নোড চালানো বিষয়ক পৃষ্ঠা দেখুন।

পূর্বশর্ত

জাভাস্ক্রিপ্ট বোঝার পাশাপাশি, ইথেরিয়াম স্ট্যাক এবং ইথেরিয়াম ক্লায়েন্ট বোঝা সহায়ক হতে পারে।

একটি লাইব্রেরি কেন ব্যবহার করবেন?

এই লাইব্রেরিগুলি সরাসরি একটি Ethereum নোডের সাথে ইন্টারঅ্যাক্ট করার জটিলতাকে অনেকটাই সহজ করে দেয়। তারা ইউটিলিটি ফাংশনও (যেমন, ETH-কে Gwei-তে রূপান্তর করা) সরবরাহ করে যাতে একজন ডেভেলপার হিসেবে আপনি Ethereum ক্লায়েন্টের জটিলতা নিয়ে কাজ করার জন্য কম সময় ব্যয় করতে পারেন এবং আপনার অ্যাপ্লিকেশনের অনন্য কার্যকারিতার উপর বেশি সময় মনোনিবেশ করতে পারেন।

লাইব্রেরির বৈশিষ্ট্য

ইথেরিয়াম নোডগুলির সাথে সংযোগ করুন

প্রদানকারীদের ব্যবহার করে, এই লাইব্রেরিগুলি আপনাকে ইথেরিয়াম-এর সাথে সংযোগ স্থাপন করতে এবং এর ডেটা পড়তে দেয়, তা JSON-RPC, INFURA, Etherscan, Alchemy বা MetaMask-এর মাধ্যমেই হোক না কেন।

সতর্কবার্তা: Web3.js মার্চ ৪, ২০২৫-এ আর্কাইভ করা হয়েছে। ঘোষণাটি পড়ুন (opens in a new tab)। নতুন প্রকল্পের জন্য ethers.js (opens in a new tab) বা viem (opens in a new tab) এর মতো বিকল্প লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন।

Ethers উদাহরণ

1// একটি ব্রাউজারপ্রোভাইডার একটি স্ট্যান্ডার্ড Web3 প্রদানকারীকে মোড়ানো হয়, যা হলো
2// মেটামাস্ক প্রতিটি পৃষ্ঠায় window.ethereum হিসেবে যা ইনজেক্ট করে
3const provider = new ethers.BrowserProvider(window.ethereum)
4
5// মেটামাস্ক প্লাগইনটি লেনদেনে স্বাক্ষর করার অনুমতিও দেয়
6// ইথার পাঠাতে এবং ব্লকচেইনের মধ্যে অবস্থা পরিবর্তন করতে অর্থ প্রদান করতে।
7// এর জন্য, আমাদের অ্যাকাউন্ট সাইনার প্রয়োজন...
8const 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// node.js-এ IPC প্রদানকারী ব্যবহার করে
11var net = require("net")
12var web3 = new Web3("/Users/myuser/Library/Ethereum/geth.ipc", net) // mac os পাথ
13// অথবা
14var web3 = new Web3(
15 new Web3.providers.IpcProvider("/Users/myuser/Library/Ethereum/geth.ipc", net)
16) // mac os পাথ
17// উইন্ডোজে পাথটি হলো: "\\\\.\\pipe\\geth.ipc"
18// লিনাক্সে পাথটি হলো: "/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// সাইনার 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// শূন্য
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// ইথার পাঠানো হচ্ছে
63wallet.sendTransaction(tx)
সবকটি দেখুন

সম্পূর্ণ ডক্স পড়ুন (opens in a new tab)

একবার সেট আপ হয়ে গেলে আপনি সক্ষম হবেন:

  • অ্যাকাউন্ট তৈরি করুন
  • লেনদেন পাঠান
  • লেনদেনে স্বাক্ষর করুন
  • এবং আরও...

স্মার্ট কন্ট্র্যাক্ট ফাংশনের সাথে ইন্টারঅ্যাক্ট করুন

জাভাস্ক্রিপ্ট ক্লায়েন্ট লাইব্রেরিগুলি আপনার অ্যাপ্লিকেশনকে একটি সংকলিত চুক্তির অ্যাপ্লিকেশন বাইনারি ইন্টারফেস (ABI) পড়ার মাধ্যমে স্মার্ট কন্ট্র্যাক্ট ফাংশন কল করার অনুমতি দেয়।

ABI মূলত চুক্তির ফাংশনগুলিকে একটি JSON ফর্ম্যাটে ব্যাখ্যা করে এবং আপনাকে এটিকে একটি সাধারণ জাভাস্ক্রিপ্ট অবজেক্টের মতো ব্যবহার করতে দেয়।

সুতরাং নিম্নলিখিত সলিডিটি চুক্তি:

1contract Test {
2 uint a;
3 address d = 0x12345678901234567890123456789012;
4
5 constructor(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-তে থাকে। ১ ETH = ১,০০০,০০০,০০০,০০০,০০০,০০০ WEI – এর মানে হল আপনি অনেক সংখ্যার সাথে কাজ করছেন! web3.utils.toWei আপনার জন্য ইথারকে Wei-তে রূপান্তর করে।

এবং ethers-এ এটি এইরকম দেখায়:

1// একটি অ্যাকাউন্টের ব্যালেন্স পান (ঠিকানা বা ENS নাম দ্বারা)
2balance = await provider.getBalance("ethers.eth")
3// { BigNumber: "2337132817842795605" }
4
5// প্রায়শই আপনাকে ব্যবহারকারীর জন্য আউটপুট ফরম্যাট করতে হবে
6// যারা wei (wei-এর পরিবর্তে) ইথারে মান দেখতে পছন্দ করে
7ethers.utils.formatEther(balance)
8// '2.337132817842795605'

উপলব্ধ লাইব্রেরি

Web3.js - ইথেরিয়াম জাভাস্ক্রিপ্ট API।

Ethers.js - জাভাস্ক্রিপ্ট এবং টাইপস্ক্রিপ্টে সম্পূর্ণ ইথেরিয়াম ওয়ালেট প্রয়োগ এবং ইউটিলিটি।

The Graph - ইথেরিয়াম এবং IPFS ডেটা ইন্ডেক্স করার এবং GraphQL ব্যবহার করে এটি জিজ্ঞাসা করার জন্য একটি প্রোটোকল।

Alchemy SDK - উন্নত এপিআই সহ Ethers.js এর চারপাশে র‍্যাপার।

viem - ইথেরিয়াম-এর জন্য টাইপস্ক্রিপ্ট ইন্টারফেস।

Drift - অন্তর্নির্মিত ক্যাশিং, হুক এবং পরীক্ষা মক সহ টাইপস্ক্রিপ্ট মেটা-লাইব্রেরি।

আরও পড়ুন

এমন কোনো কমিউনিটি রিসোর্স সম্পর্কে জানেন যা আপনাকে সাহায্য করেছে? এই পৃষ্ঠাটি সম্পাদনা করুন এবং এটি যোগ করুন!

এই প্রবন্ধটা কি সহায়ক ছিল?