VVIP
Apa itu Web3.js di dalam ethereum blockchain

Apa itu Web3.js di dalam ethereum blockchain

Aset digital seperti mata uang kripto (atau token yang dapat diprogram) dan kontrak pintar adalah komponen sentral dari aplikasi terdesentralisasi ( DApps ), yang digunakan di blockchain . Namun, untuk berinteraksi dengan komponen on-chain ini, transaksi perlu dibuat di blockchain. Agar pengguna atau perangkat lunak off-chain dapat membuat transaksi di blockchain, node perlu menyampaikan transaksi tersebut ke jaringan peer-to-peer (P2P) yang mendasarinya. Web3.js adalah kumpulan pustaka yang memungkinkan pemrogram berinteraksi dengan komponen on-chain ini, dengan dapat memfasilitasi koneksi ke node Ethereum .

Di Ethereum, node menyediakan antarmuka tingkat rendah bagi pengguna untuk mengirimkan transaksi. Transaksi dapat diterima oleh node melalui antarmuka JSON RPC . JSON RPC adalah format pengkodean tekstual yang memungkinkan proses yang berjalan untuk menerima data. Node yang berpartisipasi dalam jaringan Ethereum dapat memilih untuk mengekspos antarmuka ini dengan cara yang berbeda, tergantung pada konfigurasi dan implementasi perangkat lunak yang mendasarinya. Opsi umum termasuk koneksi HTTP, IPC atau WebSockets. Misalnya, implementasi Go Ethereum (geth) dapat dikonfigurasi untuk mengekspos antarmuka RPC melalui HTTP dengan opsi baris perintah “geth –rpc”.

Node dapat menerima transaksi yang telah ditandatangani dengan kunci pribadi yang valid milik alamat Ethereum, atau mereka mungkin diminta untuk menandatangani transaksi dengan kunci yang dihosting di dalam node. Transaksi diterjemahkan oleh node menjadi urutan byte yang dikodekan dalam format internal Ethereum. Bidang yang berbeda dalam urutan ini memiliki arti yang berbeda, seperti mewakili alamat kontrak pintar dan metode yang akan dipanggil. Setelah transaksi yang valid telah dikodekan dengan benar, itu dikirim ke jaringan.

Antarmuka JSON RPC tidak hanya menangani transaksi, tetapi juga dengan interaksi lain seperti memperoleh informasi tentang status jaringan.

Pengguna atau aplikasi dapat mengirimkan pemanggilan JSON RPC langsung ke node, membentuk struktur data JSON yang diperlukan dan mengirimkannya ke antarmuka yang terbuka. Namun, ini rumit dan biasanya lapisan perangkat lunak tambahan digunakan untuk menyediakan abstraksi tingkat yang lebih tinggi. Untuk tujuan ini, pemrogram biasanya mengandalkan binding bahasa yang dienkapsulasi di perpustakaan untuk berbagai bahasa pemrograman. Ini memungkinkan pemrogram untuk bekerja dalam bahasa aplikasi mereka dan membuat interaksi blockchain, seperti mengirim transaksi. Ini kemudian secara otomatis diterjemahkan ke dalam format JSON RPC dan dikirimkan ke node Ethereum.

Perpustakaan Web3.js

Web3.js adalah pustaka populer yang memungkinkan pemrogram berinteraksi dengan blockchain Ethereum. Ini mewakili pengikatan bahasa JavaScript untuk antarmuka JSON RPC Ethereum, yang membuatnya dapat digunakan secara langsung dalam teknologi web, karena JavaScript secara native didukung di hampir semua browser web. Web3.js juga biasa digunakan di sisi server di aplikasi Node.js dan di aplikasi desktop berbasis Electron.

Web3.js dapat digunakan untuk terhubung ke jaringan Ethereum melalui node Ethereum mana pun yang memungkinkan akses melalui HTTP. Ini mungkin node lokal, node yang di-host oleh penyedia DApp, atau gateway publik seperti Infura , yang mengoperasikan titik akses Ethereum gratis.

Salah satu cara umum untuk mengintegrasikan aplikasi browser web dengan Ethereum adalah menggunakan ekstensi browser Metamask yang dikombinasikan dengan Web3.js. Metamask adalah dompet Ethereum dalam browser yang memasukkan objek penyedia Web3 ke dalam browser. Penyedia Web3 adalah struktur data yang menyediakan tautan ke node Ethereum yang dapat diakses publik. Menggunakan Metamask memungkinkan pengguna untuk mengelola kunci pribadi dan menandatangani transaksi dalam browser web mereka. Menggunakan Metamask dalam kombinasi dengan Web3.js, dalam antarmuka web, menyediakan cara yang nyaman untuk berinteraksi dengan jaringan Ethereum.

Mulai

Saat ini tersedia dua versi Web3.js. Versi stabil saat ini (0.3) telah digantikan oleh versi 1.0. Namun, versi 1.0 secara resmi masih dalam tahap beta. Namun demikian, ini adalah versi yang saat ini digunakan oleh sebagian besar pengembang dan contoh dalam artikel ini didasarkan pada versi 1.0.

Untuk menggunakan Web3.js dalam sebuah proyek, Anda harus mendapatkan salinan pustaka terlebih dahulu. Ada beberapa cara untuk mencapai ini. Salah satu cara yang paling umum adalah menggunakan pengelola paket NPM , yang seharusnya sudah dikenal oleh sebagian besar pemrogram JavaScript:

  • npm instal web3

Cara lain adalah mengunduh kode sumber dari repositori Github proyek . Untuk menyertakan Web3.js di halaman web, file Web3.js harus disertakan dalam kode HTML.

Dalam kasus aplikasi Node.js, pustaka dapat disertakan dengan:

  • const Web3 = require(‘web3’);

Untuk menggunakan Web3.js untuk terhubung ke Ethereum, seorang programmer harus menentukan penyedia Web3. Kode untuk ini tergantung, tentu saja, pada node tertentu yang ingin dihubungkan oleh programmer. Berikut ini adalah contoh yang mungkin digunakan dalam aplikasi web untuk terhubung melalui ekstensi browser Metamask yang telah disebutkan di atas:

  • const web3 = new Web3(Web3.givenProvider, null, {});

Metamask memasukkan penyedia Web3 ke dalam browser. Kode di atas mendapatkan referensi ke penyedia ini dan menginisialisasi Web3.js untuk menggunakannya.

Untuk berinteraksi dengan kontrak pintar yang diterapkan, alamat kontrak dan Application Binary Interface (ABI) diperlukan. ABI adalah deskripsi antarmuka publik kontrak dalam bentuk objek JSON. Misalnya, ABI yang sesuai dengan token ERC-20 dapat ditemukan di https://github.com/ethereum/wiki/wiki/Contract-ERC20-ABI .

Dengan asumsi deskripsi ABI disimpan dalam variabel “abi” dan alamat kontrak di alamat variabel, kontrak dapat direferensikan dalam objek kontrak dengan kode berikut:

  • let contract = new web3.eth.Contract(abi, address);

Objek ini sekarang dapat digunakan untuk mengirim transaksi ke kontrak, misalnya:

  • contract.methods.transfer (toAddress, value) .send ({from: myAddress});

Dalam kode di atas, variabel “toAddress” diasumsikan untuk menampung alamat Ethereum penerima, dan “myAddress” diasumsikan untuk menyimpan alamat asal. Transaksi sederhana ini harus ditandatangani secara otomatis oleh penyedia Web3 tertentu yang digunakan. Ini berarti penyedia harus memiliki kendali atas kunci privat milik akun “myAddress”.

Penggunaan Lanjutan Web3.js

Contoh kode di atas telah disederhanakan untuk menjelaskan alur dasar Web3.js. Contoh dunia nyata seringkali lebih rumit. Misalnya, biasanya perlu dilakukan pengecekan apakah suatu transaksi sudah dikonfirmasi atau belum. Karena ini mungkin memakan waktu lama, Web3.js bersifat asinkron, dalam panggilan itu segera kembali, sebelum hasilnya tersedia. Ini berarti programmer harus berurusan dengan fungsi callback yang dapat didaftarkan untuk dijalankan pada event tertentu, misalnya, pada ketersediaan hash transaksi.

Selain itu, mungkin ada kasus di mana penyedia Web3 tidak memiliki akses ke kunci pribadi yang diperlukan untuk menandatangani transaksi. Dalam hal ini, dimungkinkan untuk mengirim apa yang disebut transaksi mentah yang sudah dibentuk dengan baik dan ditandatangani oleh kunci pribadi yang sesuai.

Share

Dian Priyandani

Our site uses cookies. Learn more about our use of cookies: privacy policy

Pertanyaan

News

FOLLOW US

©2021 Cryptoiz. All rights reserved

FOLLOW US

MOBILE APPS

Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Terms of services & privacy Policy

©2021 Cryptoiz. All rights reserved