Lewati ke konten utama

Pengembangan aplikasi Web3

Di halaman ini, Anda akan belajar tentang apa itu aplikasi Web3, bagaimana mereka berbeda dari aplikasi Web 2.0, dan cara memulai pengembangan aplikasi Web3 di Lisk.

Apa itu aplikasi Web3?

Evolusi Web

Sejak internet lahir, inovasi terus berkembang dalam cara orang berkomunikasi dan berinteraksi satu sama lain melalui internet.
Untuk menggambarkan langkah-langkah penting dalam inovasi ini, situs web dan aplikasi umumnya dikategorikan ke dalam berbagai "versi" Web:

Web3 (juga dikenal sebagai Web 3.0) adalah langkah berikutnya dalam evolusi Web, yang bertujuan untuk mengatasi keterbatasan Web 2.0. Web3 didasarkan pada konsep internet terdesentralisasi, di mana pengguna memiliki kendali atas data mereka.

info

Istilah "Web3" diciptakan oleh pendiri Polkadot dan co-founder Ethereum, Gavin Wood, pada tahun 2014, merujuk pada ekosistem online terdesentralisasi yang berbasis blockchain.

Tahun 2015 menandai awal era Web3 ketika Ethereum diluncurkan sebagai blockchain pertama di dunia yang dapat diprogram. Aplikasi Web3 adalah aplikasi terdesentralisasi (juga dikenal sebagai "dApps") yang berjalan di blockchain, memungkinkan pengguna untuk berinteraksi satu sama lain dan dengan blockchain secara trustless. Hal ini memberi pengguna kendali atas data dan privasi mereka, menghilangkan kebutuhan untuk mempercayai otoritas pusat.

Aplikasi Web3 dibangun di atas teknologi blockchain, yang memungkinkan pengguna memiliki kepemilikan dan kontrol lebih besar atas data mereka. Ini menghadirkan fitur baru dan memungkinkan layanan yang tidak dapat dilakukan di dunia Web2. Seringkali, aplikasi Web3 menggabungkan teknologi mutakhir lainnya seperti AI untuk memberikan pengalaman pengguna yang unik dan inovatif.

Jenis baru aplikasi Web3 meliputi:

  • DeFi (Decentralized Finance), sebagai contoh:
    • DEXs (Decentralized Exchanges)
    • GameFi (Gaming Finance)
    • Platform staking dan yield farming
    • Platform crowdfunding dan investasi terdesentralisasi
    • Lending dan Borrowing terdesentralisasi
    • Pasar prediksi
    • Platform tokenisasi aset / RWA
  • DAOs (Decentralized Autonomous Organizations)
  • DeSoc (Decentralized Social Media)
  • DeSci (Decentralized Science)
  • DePIN (Decentralized Physical Infrastructure Networks)

Web3 adalah janji untuk mengembalikan visi asli internet, di mana pengguna memiliki kendali atas data dan privasi mereka, serta menjadikan internet sebagai tempat untuk kebebasan berbicara dan inovasi. Namun, cara teknologi blockchain diimplementasikan dan digunakan dalam aplikasi dapat sangat bervariasi, dan tidak semua aplikasi Web3 memiliki tingkat desentralisasi dan trustless yang sama.

Bacaan lebih lanjut

Memulai pengembangan aplikasi Web3

Platform

Untuk memulai pengembangan aplikasi Web3, Anda perlu memahami platform yang tepat untuk membangun aplikasi Web3 Anda. Bagian berikut akan memberikan gambaran tentang berbagai platform yang dapat Anda pilih untuk membangun aplikasi Web3, termasuk sumber daya dan panduan lebih lanjut untuk membantu Anda memulai pengembangan aplikasi.

Aplikasi mobile umumnya merupakan cara yang sangat efektif untuk menjangkau audiens yang luas, karena sebagian besar orang memiliki smartphone dan menggunakannya untuk mengakses internet. Aplikasi mobile dapat memanfaatkan fitur bawaan perangkat genggam dan biasanya lebih cepat serta lebih ramah pengguna dibandingkan dengan situs web. Hal ini dapat memberikan pengalaman yang lebih imersif bagi pengguna. Terakhir, aplikasi mobile memungkinkan pengguna mengakses aplikasi Anda di mana saja, yang bisa menjadi keuntungan besar untuk berbagai kasus penggunaan.

Panduan

Membantu Pengguna Web2 Beralih ke Web3

Tantangan utama bagi aplikasi Web3 adalah memberikan pengalaman pengguna yang semulus yang diharapkan pengguna dari aplikasi Web2.

Untuk membawa pengguna Web2 ke Web3, aplikasi perlu menyederhanakan interaksi pengguna agar terasa alami dan intuitif, sekaligus tetap memberikan manfaat Web3 dengan cara yang aman. Untuk mendapatkan pengalaman pengguna yang lancar, dan untuk mengabstraksikan kompleksitas teknologi blockchain dari pengguna, sangat disarankan untuk menyertakan "abstraksi akun" (kadang-kadang disebut sebagai "akun pintar", "dompet pintar" atau "akun kontrak pintar") ke dalam aplikasi Web3 Anda.

Account Abstraction dan Smart Accounts

Account abstraction adalah konsep yang menambahkan lapisan tambahan di atas blockchain, yang mendelegasikan sebagian besar kompleksitas interaksi blockchain dari pengguna ke smart contracts. Ini secara signifikan meningkatkan pengalaman pengguna aplikasi Web3 karena memungkinkan interaksi yang lebih mudah dan aman. Kadang-kadang disebut sebagai "smart accounts" atau "smart wallets", konsep ini memungkinkan sebagian besar logika transaksi dan interaksi pengguna dikelola oleh smart contracts.

Ini membuka serangkaian fitur yang secara signifikan meningkatkan pengalaman pengguna:

  • Signature Abstraction: Pengguna tidak perlu lagi menandatangani transaksi secara manual dengan private key. Smart contracts menangani logika tanda tangan, mengurangi risiko kesalahan pengguna dan serangan phishing.
  • Keamanan Lebih Tinggi: Implementasi dompet multi-signature, mekanisme pemulihan sosial, dan kontrol akses kustom dalam smart contracts dapat mengurangi risiko pencurian dan kegagalan tunggal.
  • Transaksi yang Dapat Disesuaikan: Smart contracts dapat diprogram untuk menetapkan batas pengeluaran, transaksi dengan batasan waktu, dan kontrol khusus untuk dApps, memungkinkan otomatisasi transaksi.
  • Fee Abstraction: Biaya transaksi dapat dikelola secara dinamis melalui smart contracts, memungkinkan fitur seperti token gas kustom dan transaksi tanpa gas untuk kasus penggunaan tertentu.

Dari sisi teknis, account abstraction diimplementasikan oleh standar ERC-4337, yang mendefinisikan serangkaian antarmuka dan fungsi yang dapat digunakan oleh smart contracts untuk berinteraksi dengan blockchain atas nama pengguna.

Ini terdiri dari komponen fundamental berikut:

  • UserOperation: Struktur yang mendeskripsikan transaksi yang akan dikirim atas nama pengguna. Untuk menghindari kebingungan, ini tidak disebut sebagai "transaksi". Seperti transaksi, ia berisi sender, to, calldata, maxFeePerGas, maxPriorityFee, signature, nonce. Tidak seperti transaksi, penggunaan bidang signature tidak ditentukan oleh protokol tetapi oleh setiap implementasi akun. Selain itu, ia berisi beberapa bidang lain yang dijelaskan secara rinci dalam ERC-4337.
  • Account Contract: Smart account pengguna yang mengirimkan UserOperation.
  • EntryPoint: Contract singleton yang memvalidasi dan mengeksekusi kumpulan UserOperations. Contract ini mengelola logika verifikasi dan eksekusi untuk UserOperations, memastikan mereka diproses dengan benar.
  • Bundler: Bundlers adalah contract yang mengemas UserOperations dari mempool dan mengirimkannya ke EntryPoint. Bundling adalah proses di mana sebuah node/bundler mengumpulkan beberapa UserOperations dan membuat satu transaksi untuk dikirimkan ke blockchain.
  • Account Factory: Saat menggunakan dompet untuk pertama kali, contract ini menentukan pembuatan smart contract wallet.
  • Paymaster (opsional): Contract helper yang bersedia membayar transaksi, bukan pengirimnya sendiri. Paymasters dapat menanggung biaya gas untuk pengguna, mensponsori transaksi tertentu, atau menerapkan model biaya khusus, membuka peluang untuk berbagai kasus penggunaan baru.
Bacaan lebih lanjut

Pengujian dan deployment

Dalam hal pengujian dan deployment aplikasi Web3, ada beberapa aspek tambahan yang perlu dipertimbangkan dibandingkan dengan aplikasi Web2. Vulnerability intrinsik dari smart contract, immutability data blockchain, dan interaksi dengan jaringan yang terdesentralisasi, membutuhkan pengujian dan langkah-langkah keamanan yang spesifik. Untungnya, banyak alat yang sudah tersedia untuk membantu para pengembang memastikan keamanan dan keandalan aplikasi Web3 mereka. Daftar di bawah ini menyediakan pilihan alat dan layanan populer yang digunakan untuk menguji aplikasi Web3:

Rangkaian pengujian smart contract

Sering kali, framework pengembangan smart contract dilengkapi dengan alat pengujian bawaan yang menyederhanakan untuk membuat pengujian komprehensif untuk smart contract. Ini termasuk utilitas untuk menyederhanakan penulisan pengujian, atau kemampuan untuk membuat node lokal untuk mendeploy dan menguji smart contract dalam jaringan pengembangan lokal, yaitu Devnet.

Pilihan environment pengujian populer untuk smart contract dapat ditemukan di bawah ini:

  • Foundry: Foundry adalah sebuah rangkaian alat pengembangan smart contract. Foundry menyediakan [framework kerja pengujian] yang kuat (https://book.getfoundry.sh/forge/tests) yang memungkinkan pengembang untuk membuat rangkaian pengujian yang komprehensif untuk proyek mereka menggunakan Solidity. Library Standar Forge menyediakan seperangkat utilitas untuk menyederhanakan pengujian smart contract. Ini juga menyediakan node testnet lokal untuk mendeploy dan menguji smart contract, lihat Anvil.
  • Hardhat: Hardhat adalah environment pengembangan yang memfasilitasi pengembangan smart contract. Hardhat dilengkapi dengan Hardhat Network bawaan, sebuah node jaringan Ethereum lokal yang didesain untuk pengembangan. Hardhat memungkinkan Anda untuk deploy contract Anda, menjalankan pengujian Anda, dan men-debug kode Anda, semuanya dalam local machine Anda. Pengujian ditulis dalam JavaScript, menggunakan ethers.
  • Remix: Remix adalah sebuah IDE yang membantu Anda menulis contract Solidity langsung dari browser. Remix menyediakan fitur-fitur yang kuat untuk menguji dan men-debug smart contract, seperti Debugger atau Unit Testing Plugin.
  • Waffle: Waffle adalah framework lain untuk mengembangkan dan menguji smart contract. Pengujian ditulis dalam JavaScript / Typescript.
Panduan

Analisis kode smart contract

Untuk memastikan keamanan smart contract, sangat penting untuk menganalisis kode untuk mengetahui adanya vulnerability. Ada beberapa alat yang tersedia yang membantu pengembang untuk menganalisis smart contract mereka untuk masalah keamanan umum dan vulnerability, misalnya:

  • Slither: Slither adalah framework analisis statis Solidity yang mendeteksi vulnerability umum dalam smart contract.
  • Etheno: Etheno adalah sebuah alat yang membantu pengembang untuk menulis smart contract yang aman dengan menyediakan seperangkat aturan yang dapat digunakan untuk memeriksa keamanan smart contract.
  • Mythril: Mythril adalah alat analisis keamanan untuk smart contract Ethereum.

Testnet

Testnet adalah blockchain publik yang digunakan untuk tujuan pengujian. Testnet seringkali memiliki fitur yang sama dengan mainnet, tetapi token pada testnet tidak memiliki nilai nyata - ini memungkinkan pengembang untuk menguji smart contract dan aplikasi Web3 mereka di lingkungan dunia nyata tanpa mempertaruhkan aset nyata. Sebelum mendeploy smart contract ke mainnet, sangat disarankan untuk mengujinya di testnet untuk memastikan bahwa smart contract bekerja sesuai dengan yang diharapkan.

Testnet publik

Testnet berikut ini tersedia untuk menguji smart contract dan aplikasi Web3 di Lisk:

tip

Untuk mendapatkan testnet ETH dan/atau LSK gratis, lihat faucet yang tersedia.

Testnet virtual

Tenderly baru-baru ini memperkenalkan kemungkinan untuk menjalankan Virtual Testnets. Virtual Testnet adalah cara baru untuk menguji aplikasi Web3 Anda, membawa data onchain dari mainnet dan fleksibilitas environment lokal bersama-sama.

Beberapa fitur menarik dari Virtual Testnet adalah:

  • Bangun dapps Anda dengan data mainnet yang nyata dan terkini dan uji performa aktualnya dalam kondisi yang realistis.
  • Dapatkan faucet tanpa batas dan berhenti mengemis untuk uji coba ETH. Cetak token asli dan ERC-20 dalam jumlah berapa pun yang Anda butuhkan, meniru akun, dan menguji skenario kompleks tanpa gangguan.
  • Sesuaikan sepenuhnya infrastruktur pengembangan Anda agar sesuai dengan alur kerja unik Anda. Virtual Testnet mudah diatur dan dikonfigurasi, memberi Anda kontrol penuh dan fleksibilitas atas environment Anda. Anda bahkan dapat memanipulasi forked chain Anda dengan nilai custom, chain ID custom, dan banyak lagi, memastikannya sesuai dengan kebutuhan unik Anda.

Pengujian E2E

Pengujian end-to-end (E2E) adalah jenis pengujian perangkat lunak yang menguji alur lengkap aplikasi dari awal hingga akhir. Hal ini secara khusus mencakup pengujian frontend aplikasi Anda, yang memastikan bahwa antarmuka pengguna berfungsi seperti yang diharapkan. Untuk menangani hal-hal seperti dompet, dan hal-hal khusus Web3 lainnya, Anda mungkin ingin menggunakan alat pengujian Web3 E2E khusus.

Synpress adalah library pengujian E2E untuk dapp Web3. Synpress dapat digunakan dengan dua framework pengujian E2E terkemuka di luar sana, yaitu, Playwright dan Cypress, dengan dukungan untuk semua fitur mereka.

Pengujian kinerja

Pengujian performa sangat penting untuk memastikan bahwa aplikasi Web3 Anda dapat menangani beban yang diharapkan dari pengguna dan interaksi mereka. Ukur dan tingkatkan performa, throughput, dan ketahanan aplikasi Anda dalam level traffic dan transaksi yang berbeda-beda.

Beberapa contoh alat pengujian kinerja adalah:

Monitoring

Monitoring penting untuk memastikan bahwa aplikasi Web3 Anda berjalan dengan lancar dan untuk mendeteksi dan memperbaiki masalah sebelum mempengaruhi pengguna Anda.

Beberapa alat monitoring yang populer adalah:

Pengembangan aplikasi Web2 vs Web3

Bahasa

Mengenai pengembangan aplikasi frontend, tidak banyak perbedaan antara aplikasi Web2 dan Web3 dalam hal bahasa pemrograman. Semua bahasa yang biasanya digunakan untuk pengembangan aplikasi Web2 juga dapat digunakan untuk pengembangan aplikasi Web3. Pada akhirnya, aplikasi Web3 bahkan dapat terlihat dan terasa persis seperti aplikasi Web2 bagi pengguna, karena frontend mereka dibangun dengan teknologi yang sama.

Namun, bagian belakang aplikasi Web3 sangat berbeda, karena berinteraksi dengan blockchain melalui smart contract. Smart contract ditulis dalam Solidity, oleh karena itu pengembang Web3 perlu mengetahui Solidity untuk membangun smart contract yang mereka perlukan untuk aplikasi mereka. Untungnya, untuk banyak kasus penggunaan, sudah tersedia smart contract yang telah diaudit (lihat OpenZeppelin atau thirdweb) yang dapat digunakan, sehingga pengembang tidak perlu menulis semua smart contract dari awal.

Tech stack

Seperti yang telah disebutkan di atas, pengembangan frontend aplikasi Web2 dan Web3 sangat mirip. Secara teoritis, Anda dapat membangun aplikasi Web3 dengan tech stack yang hampir sama dengan aplikasi Web2, seperti Next.js, Vite, dll. Satu-satunya hal yang perlu Anda tambahkan adalah cara agar aplikasi Anda dapat berinteraksi dengan blockchain, lihat Akses data.

Untuk mendukung para pengembang, banyak platform blockchain yang menawarkan SDK dan alat bantu mereka sendiri untuk berinteraksi dengan blockchain mereka, yang dapat membuat pengembangan menjadi lebih mudah dan efisien. Ada juga SDK untuk pengembangan aplikasi Web3, seperti thirdweb atau Alchemy, yang menghilangkan sebagian besar kerumitan pengembangan blockchain dan memberikan pengalaman pengembang yang lancar. thirdweb mendukung Lisk dan banyak blockchain yang kompatibel dengan EVM lainnya.

Penyimpanan data

Dalam aplikasi Web2, data biasanya disimpan dalam database terpusat. Pada aplikasi Web3, beberapa data disimpan di blockchain, yaitu database yang terdesentralisasi. Bagaimana data disimpan ditentukan di dalam smart contract. Namun, perlu dicatat bahwa data onchain pada blockchain publik dapat dilihat oleh semua orang dan, oleh karena itu, tidak cocok untuk semua jenis data. Terutama data pengguna yang sensitif dan pribadi tidak boleh disimpan di blockchain, kecuali jika data tersebut dienkripsi. Selain itu, menyimpan data dalam jumlah besar di blockchain itu mahal dan lambat. Oleh karena itu, aplikasi Web3 terkadang menggunakan kombinasi penyimpanan onchain dan penyimpanan offchain.

Akses data

Pada aplikasi Web2, data dari database diakses melalui API. Pada aplikasi Web3, data blockchain diakses melalui smart contract. Contract ini biasanya mengekspos fungsi publik yang dapat dipanggil oleh aplikasi frontend untuk membaca dan/atau menulis data dari/ke blockchain, mirip dengan API pada umumnya. Untuk berinteraksi dengan blockchain, terdapat berbagai library dan framework yang tersedia, seperti viem, web3.js, atau ethers.js.

Footnotes

  1. Hanya didukung di browser yang kompatibel dengan PWA (sebagian besar browser berbasis Chromium seharusnya mendukungnya).