Mendefinisikan tumpukan web3

Menengah1/8/2024, 2:50:04 AM
Artikel ini menjelajahi aplikasi dan pengembangan Web3 dalam blockchain.

Pada segmen berikutnya dari Membangun pada web3, insinyur pengembangan Edge & Node Nader Dabit menjelaskan lebih lanjut tentang tumpukan web3 dan bagaimana para pengembang dapat mengkonseptualisasikan berbagai aspek membangun pada web3.


Saya beralih ke web3 pada bulan April 2021 setelah menjadi pengembang full-stack tradisional selama sekitar 10 tahun. Saat menyelami semua teknologi dan gagasan baru ini, hal pertama yang ingin saya ketahui adalah "apa itu tumpukan web3?".

Saat membangun aplikasi web atau seluler tradisional, saya sering bergantung pada sejumlah blok bangunan untuk menyelesaikan pekerjaan.

  1. server API / aplikasi (REST atau GraphQL)
  2. lapisan otentikasi (dikelola atau dibuat sendiri)
  3. Database
  4. Kerangka kerja, platform, dan perpustakaan sisi klien
  5. Penyimpanan file

Dengan menggunakan komponen inti ini, saya dapat membangun sebagian besar jenis aplikasi yang saya inginkan, atau setidaknya mendekati. Jadi, bagaimana tampilannya dalam web3?

Ternyata, jawaban atas hal ini tidaklah begitu langsung karena:

  1. Paradigma benar-benar berbeda dalam banyak hal
  2. Alat, teknologi, dan ekosistem web3 kurang matang dibandingkan web2

Saya juga kesulitan memahami cara memulai dan membangun aplikasi web3 karena saya mendekati masalah dengan cara yang sama seperti di dunia web2.

Setelah bekerja, melakukan riset, bereksperimen, dan membangun hal-hal selama kurang lebih 8 bulan terakhir, saya ingin berbagi apa yang telah saya pelajari.

Apa itu web3?

Sebelum kita mendefinisikan tumpukan web3, mari kita coba mendefinisikan web3. Ada banyak definisi tergantung pada siapa yang Anda tanyakan, tetapi bagi saya saya menemukaninidefinisi spot on:

Web3 adalah tumpukan protokol yang memungkinkan aplikasi terdesentralisasi sepenuhnya.

Dengan tumpukan teknologi terdesentralisasi ini, kita dapat mulai membangun aplikasi terdesentralisasi yang memiliki implikasi dan karakteristik yang ditetapkan.

Beberapa karakteristik yang diaktifkan oleh web3 adalah:

  • Infrastruktur web terdesentralisasi
  • Kepemilikan (data, konten, dan platform)
  • Pembayaran digital asli
  • identitas berdaulat sendiri
  • Infrastruktur terdistribusi, tanpa kepercayaan, & tangguh
  • Buka, publik, belakang yang dapat disusun

Sementara beberapa aplikasi yang dibangun di atas tumpukan teknologi terdesentralisasi akan menggantikan pendahulunya, paradigma baru aplikasi juga telah dimungkinkan oleh primitif baru yang diaktifkan oleh blockchain.

Pembayaran digital asli dan infrastruktur belakang publik - seperti pembelajaran mesin, perangkat seluler, realitas virtual, dan blok bangunan teknologi lainnya - memungkinkan jenis aplikasi baru sepenuhnya dibangun, beberapa yang belum terbayangkan.

Apakah ini berarti bahwa segala sesuatu akan digantikan oleh web3? Tidak harus demikian. Meskipun saya berpikir bahwa membangun dengan tumpukan teknologi terdesentralisasi adalah pilihan yang jauh lebih baik untuk jenis aplikasi tertentu - seperti hampir setiap keputusan teknis, itu tergantung pada apa yang Anda bangun.

Mari mulai menjelajahi tumpukan web3 sekarang, dibagi menjadi serangkaian kategori ini:

  • Blockchain
  • Lingkungan pengembangan blockchain
  • Penyimpanan file
  • Protokol data off chain
  • API (pengindeksan & kueri)
  • Identitas
  • Klien (kerangka kerja dan pustaka)
  • Oracles
  • Protokol lainnya

Blockchain

Ada banyak blockchain yang dapat Anda pilih untuk dibangun. Tidak ada yang terbaik, sebaliknya Anda harus mempertimbangkan berbagai tradeoff di antara mereka.

Salah satu hal yang sering penting bagiku ketika belajar sesuatu yang baru adalah gagasan penerapannya Prinsip Paretoke apa yang saya pelajari, yaitu, apa cara paling efisien untuk mendapatkan manfaat maksimal dari jumlah waktu dan usaha tersebut. Mengikuti ide ini, saya dapat mencapai kemajuan dan momentum terbesar saat belajar hal baru dalam waktu sesingkat mungkin.

Di dunia Blockchain, belajar Solidity dan EVM(atau Mesin Virtual Ethereum) mungkin menjadi pilihan terbaik saat memulai sebagai pengembang blockchain. Dengan menggunakan keterampilan ini (dan tumpukan teknologi), Anda dapat membangun tidak hanya untuk Ethereum, tetapi juga untuk Layer 2 Ethereum lainnya, sidechain, dan bahkan blockchain lain seperti Avalanche, Fantom, dan Celo.

Dengan demikian, Rust mulai menjadi semakin populer di dunia blockchain, dengan Solana, NEAR, Polkadot, dan lainnya memiliki dukungan Rust kelas satu. Kamu mungkin tidak akan salah memilih mempelajari keduanya, tapi bagi pemula, saya akan mengatakan bahwa Solidity masih menjadi pilihan yang lebih baik jika seseorang bertanya kepada saya hari ini.

Selain saran itu, berikut adalah contoh yang tidak lengkap dari blockchain yang memiliki kombinasi teknologi, utilitas, komunitas, momentum, dan masa depan yang solid:

  • Ethereum- platform kontrak pintar asli
  • ZK rollups: ZKSync, Starknet, Hermez- Tingkat kinerja tinggi Ethereum layer 2, tetapi tidak kompatibel secara native dengan EVM
  • rollups optimis: Arbitrum & Optimisme - Ethereum layer 2s, kompatibel EVM (pelajari lebih lanjut tentang perbedaan antara optimistic dan ZK rollups di sini)
  • Poligon- sisi rantai Ethereum
  • Solana- throughput tinggi, transaksi murah, waktu blok cepat, tetapi lebih sulit untuk dipelajari daripada EVM (Rust)
  • NEAR- Blockchain Layer 1, dapat menulis kontrak pintar dalam Rust atau Assemblyscript
  • Cosmos- sebuah ekosistem blockchain yang saling berinteraksi
  • Polkadot- platform komputasi berbasis blockchain yang memungkinkan blockchain yang dibangun di atasnya untuk melakukan transaksi antara mereka sendiri, menciptakan internet terhubung dari blockchain
  • Aurora- Rantai yang kompatibel dengan EVM berjalan pada protokol NEAR.
  • Fantom- lapisan 1 yang kompatibel dengan EVM
  • Avalanche- Layer 1 yang kompatibel dengan EVM
  • Celo- Lapisan 1 yang kompatibel dengan EVM, dirancang untuk memudahkan siapa pun yang memiliki ponsel pintar untuk mengirim, menerima, dan menyimpan kripto
  • Tezos- Layer 1 yang tidak kompatibel dengan EVM, banyak proyek NFT yang menggunakannya

Ketika berinteraksi dengan jaringan, Anda perlu menggunakan titik akhir RPC.

Ada beberapa cara yang bisa Anda lakukan ini:

  1. Akses titik akhir RPC publik
  2. Menjalankan node Anda sendiri
  3. Mengakses penyedia node sebagai layanan
  4. Mengakses penyedia node terdesentralisasi sebagai layanan

Titik akhir RPC publik sering kali disediakan oleh jaringan, tetapi untuk kebanyakan dapps produksi, Anda akan ingin memanfaatkan titik akhir Anda sendiri karena mereka tidak stabil atau direkomendasikan untuk produksi.

Ada beberapa penyedia layanan RPC di luar sana, berikut adalah beberapa:

Ada juga solusi web3 / terdesentralisasi, Jaringan Pocketyang sepertinya semakin populer.

Salah satu dari opsi-opsi ini mungkin merupakan pilihan yang baik untuk berinteraksi langsung dengan jaringan Anda.

Lingkungan pengembangan blockchain

Untuk pengembangan EVM, ada beberapa lingkungan pengembangan yang baik tersedia:

  • Topi keras (JavaScript) adalah opsi yang lebih baru, tetapi semakin populer. Dokumentasinya bagus, alat-alatnya dan pengalaman pengembangnya sudah teruji, dan itulah yang saya pribadi gunakan untuk membangun dapps.
  • Truffle(JavaScript) adalah serangkaian alat untuk membangun dan mengembangkan aplikasi di EVM. Ini sudah matang, diuji dalam pertempuran, dan terdokumentasi dengan baik. Sudah ada sejak lama dan banyak pengembang menggunakannya.
  • Foundryadalah lingkungan pengembangan Solidity baru dari Paradigm yang menunjukkan banyak janji. Titik terang kunci adalah kemampuan menulis tes dalam Solidity, dukungan untuk fuzzing, dan kecepatan (ditulis dalam Rust). Saya menulis pengenalan terpisah untuk itu di sini.
  • Brownieadalah kerangka pengembangan dan pengujian berbasis Python untuk kontrak pintar untuk pengembangan Solidity / EVM.

Untuk pengembangan Solana, JangkarSegera menjadi titik masuk bagi pengembang baru. Ini menyediakan CLI untuk membangun, dan menguji program Solana serta perpustakaan klien yang dapat Anda gunakan untuk membangun antarmuka. Ini juga termasuk DSL yang mengabstraksikan sebagian besar kompleksitas yang sering dihadapi pengembang saat mereka memulai pengembangan Solana dan Rust.

Penyimpanan berkas

Di mana kita menyimpan gambar, video, dan file lainnya di web3? Menyimpan sesuatu sebesar itu di rantai biasanya terlalu mahal, jadi kita mungkin tidak ingin menyimpannya di sana.

Sebagai gantinya, kita dapat menggunakan salah satu dari beberapa protokol penyimpanan file:

  • IPFSprotokol sistem file peer-to-peer
    • pros: itu dapat diandalkan, didokumentasikan dengan baik dengan ekosistem yang besar
    • cons: jika data tidak di-pinned bisa hilang
  • Arweave - memungkinkan Anda menyimpan data secara permanen, membayar biaya transaksi tunggal. Saya adalah penggemar Arweave dan menulis posting blog tentang itu di sini.
  • Filecoin- dari Protocol Labs, tim yang sama yang membangun IPFS, ini adalah protokol yang dirancang untuk menyediakan sistem penyimpanan data yang persisten. Adasejumlah carauntuk pengembang membangun di Filecoin, termasuk web3.storageyang sangat bagus.
  • Skynet- Saya belum menggunakannya dalam produksi, namun telah mencoba dan sepertinya berfungsi dengan baik. API di siniterlihat bagus. Saya punya pertanyaan seperti berapa lama data disimpan, dan interoperabilitas Skynet dengan protokol lain.

Protokol data off chain

Selain penyimpanan file dan penyimpanan on-chain, Anda mungkin juga perlu menyimpan data off-chain. Anda mungkin menggunakan jenis solusi ini dengan cara yang sama seperti Anda mungkin menggunakan database dalam tumpukan teknologi tradisional, tetapi alih-alih direplikasi di sejumlah node pada jaringan terdesentralisasi, dan oleh karena itu lebih dapat diandalkan (setidaknya dalam teori).

Beberapa opsi adalah:

  • Jaringan Keramik- platform sumber terbuka terdesentralisasi untuk membuat, meng-host, dan berbagi data. Ceramic juga memiliki protokol identitas bagus yang akan saya bahas nanti. Mungkin solusi penyimpanan luar jaringan favorit saya saat ini.Di sinidemo yang cukup bagus.
  • TekstilThreadDB- database multi-pihak yang dibangun di atas IPFS dan Libp2p. Jika saya mengerti dengan benar, saat ini mungkin sedang mengalami perubahan API besar. Saya telah mencobanya dan menunjukkan beberapa janji, tetapi dokumen dan DX memerlukan beberapa perbaikan.
  • GunDB- sebuah basis data terdesentralisasi, peer-to-peer. Gun telah ada sejak lama dan beberapa aplikasi yang cukup menariktelah dibangun dengan itu.

Dalam hal kematangan, pendapat saya adalah bahwa ekosistem solusi penyimpanan luar rantai belum mencapai tingkat yang diperlukan untuk mengembangkan beberapa kasus penggunaan yang lebih canggih yang mungkin diinginkan oleh beberapa pengembang. Beberapa tantangan di sini adalah data real-time, deteksi konflik dan penyelesaian konflik, otorisasi penulisan, dokumentasi, dan pengalaman pengembang secara umum.

Mengintegrasikan solusi data offchain dengan protokol blockchain adalah salah satu rintangan besar terakhir yang perlu kita lewati sebelum kita memiliki tumpukan protokol terdesentralisasi sepenuhnya yang mampu mendukung segala jenis aplikasi.

API (pengindeksan & kueri)

Ada banyak perbedaan dalam cara kita berinteraksi dan membangun di atas blockchain dibandingkan basis data dalam tumpukan teknologi tradisional. Dengan blockchain, data tidak disimpan dalam format yang dapat dengan efisien atau mudah dikonsumsi langsung dari aplikasi atau antarmuka depan lainnya.

Blockchain dioptimalkan untuk operasi tulis. Anda sering mendengar inovasi yang terjadi berpusat di sekitar transaksi per detik, waktu blok, dan biaya transaksi. Data blockchain ditulis dalam blok seiring berjalannya waktu, membuat segala sesuatu selain operasi baca dasar menjadi tidak mungkin.

Dalam kebanyakan aplikasi, Anda membutuhkan fitur-fitur seperti data relasional, penyortiran, penyaringan, pencarian teks penuh, penomoran halaman, dan berbagai jenis kemampuan kueri lainnya. Untuk melakukannya, data perlu diindeks dan diorganisir untuk pengambilan yang efisien.

Secara tradisional, itulah pekerjaan yang dilakukan oleh basis data dalam tumpukan teknologi terpusat, tetapi lapisan pengindeksan itu tidak ada dalam tumpukan web3.

Grafikadalah protokol untuk mengindeks dan mengajukan pertanyaan tentang data blockchain yang membuat proses ini jauh lebih mudah dan menawarkan solusi terdesentralisasi untuk melakukannya. Siapa pun dapat membangun dan menerbitkan API GraphQL terbuka, yang disebut subgraf, membuat data blockchain mudah untuk ditanyakan.

Untuk mengetahui lebih lanjut tentang The Graph, lihat dokumendi siniatau panduanku di sini.

Identitas

Identitas adalah paradigma yang benar-benar berbeda dalam web3. Di web2, otentikasi hampir selalu didasarkan pada informasi pribadi pengguna. Informasi ini biasanya dikumpulkan baik melalui formulir atau penyedia OAuth yang meminta pengguna untuk menyerahkannya sebagai pertukaran akses ke aplikasi.

Di web3, identitas sepenuhnya berkaitan dengan gagasan dompet dan kriptografi kunci publik.

Sementara nama “dompet” memenuhi tujuannya, saya menemukan bahwa orang yang baru mengenal web3 merasa bingung dengan istilah itu karena berkaitan dengan otentikasi dan identitas. Saya harap di masa depan kita dapat menemukan cara lain untuk menyampaikan apa itu dompet, karena ini menggabungkan aspek keuangan namun juga identitas dan reputasi.

Sebagai seorang pengembang, Anda perlu memahami bagaimana cara mengakses dan berinteraksi dengan dompet dan alamat pengguna dengan berbagai cara.

Pada level yang sangat dasar (dan kebutuhan yang sangat umum), Anda mungkin ingin meminta akses ke dompet pengguna. Untuk melakukan ini, biasanya Anda akan dapat mengakses dompet pengguna dalam konteks jendela (peramban web) atau menggunakan sesuatu seperti WalletConnectatauAdapter Dompet Solana.

Sebagai contoh, jika mereka memiliki dompet Ethereum yang tersedia, Anda akan dapat mengakses window.ethereum. Sama halnya dengan Solana (window.solana), Arweave (window.arweaveWallet), dan beberapa lainnya. WalletConnect bagus untuk web seluler dan React Native karena memungkinkan pengguna untuk memberikan izin menggunakan dompet seluler mereka langsung dari perangkat.

Jika Anda ingin menangani otentikasi sendiri, Anda dapat mengizinkan pengguna untuk menandatangani transaksi dan kemudian mendekodekannya di suatu tempat untuk mengotentikasi pengguna, tetapi ini biasanya memerlukan server.Di siniadalah contoh bagaimana itu mungkin terlihat menggunakan dompet EVM, dandi sinimerupakan contoh bagaimana melakukan hal ini dengan Solana / Phantom.

Bagaimana dengan mengelola profil pengguna secara terdesentralisasi?Jaringan Keramikmenawarkan protokol paling kuat dan rangkaian alat untuk mengelola identitas terdesentralisasi. Mereka baru-baru ini merilis sebuah kiriman blogmenguraikan beberapa pembaruan terbaru mereka dan memberikan beberapa panduan tentang bagaimana semua alat bekerja bersama. Saya akan memulai dari situ dan kemudian menjelajahidokumen merekauntuk memahami bagaimana memulai membangun, dan pertimbangkan untuk melihat proyek contoh sayadi siniyang menggunakan Keramik self.id.

Jika Anda ingin mengambil ENScatatan teks, perpustakaan ENSJS menawarkan API yang bagus untuk mengambil data pengguna:

const ens = baru ENS({ penyedia, alamatEns: dapatkanAlamatEns(‘1’) })

const content = await ens.name('sha.eth').getText('avatar')

SpruceIDjuga sesuatu yang terlihat menjanjikan tetapi saya belum mencobanya.

Keramik dan Spruce keduanya menerapkan W3C DIDspesifikasi, yang juga saya anggap sebagai blok bangunan web3. Dengan demikian, implementasi terpusat DIDs melanggar ide dari apa yang spesifikasi coba capai.

Klien

Sejauh yang terkait dengan kerangka kerja JavaScript, Anda benar-benar dapat membangun dengan apapun yang Anda inginkan, karena SDK blockchain sisi klien sebagian besar tidak tergantung pada kerangka kerja. Dengan demikian, sebagian besar proyek dan contoh dibangun dengan React. Ada juga beberapa pustaka seperti Adapter Dompet Solanayang menawarkan utilitas tambahan untuk React, jadi saya akan mengatakan bahwa belajar atau akrab dengan React mungkin akan menjadi langkah cerdas.

Untuk SDK sisi klien di Ethereum ada web3.js dan ethers.jsBagi saya, Ethers lebih mudah diakses dan memiliki dokumentasi yang lebih baik, meskipun web3.js telah ada lebih lama.

Di Solana, Anda mungkin akan bekerja dengan @solana/web3.js dan/atau JangkarSaya telah menemukan pustaka klien Anchor sebagai pilihan utama saya untuk membangun program Solana karena saya sudah menggunakan kerangka Anchor, dan saya menemukannya jauh lebih mudah dipahami kemudian@solana/web3.js.

Oracles

Oracles memungkinkan pengembang untuk mengakses data dunia nyata & sistem eksternal dari dalam kontrak pintar.

Misalnya, sebagian besar aplikasi keuangan memerlukan pengetahuan tentang data & peristiwa dunia nyata yang terjadi di luar rantai, jadi Oracle sangat penting di DeFi.

Chainlinkadalah sebuah Oracle yang memungkinkan akses ke data dunia nyata dan komputasi di luar rantai sambil menjaga jaminan keamanan dan keandalan yang melekat pada teknologi blockchain.

Fluxadalah orakel lintas-rantai yang menyediakan kontrak pintar dengan akses ke umpan data yang aman secara ekonomi.

Protokol lainnya

Radikula adalah protokol kolaborasi kode terdesentralisasi yang dibangun di Git. Ini bisa dianggap sebagai versi GitHub yang terdesentralisasi.

Rekan hidupadalah jaringan streaming video terdesentralisasi. Ini matang dan banyak digunakan dengan lebih dari 70.000 GPU aktif di jaringan.

Kesimpulan

Pos ini akan menjadi dokumen hidup yang akan saya terus ikuti saat saya belajar, bereksperimen, dan mengumpulkan umpan balik dari pengembang yang membangun di web3.

Jika Anda memiliki umpan balik atau ide seputar sesuatu yang saya lewatkan di sini, silakan hubungi dan bagikan pemikiran Anda dengan saya. Sangat menyenangkan melihat semua aktivitas yang terjadi di sekitar web3 karena pengembang melompat dan terlibat. Sementara infrastruktur masih berkembang, visi membangun protokol dan aplikasi yang benar-benar terdesentralisasi yang memungkinkan orang untuk berkoordinasi tanpa harus memberikan kekuatan dan kontrol kepada perusahaan besar adalah salah satu yang penting dan kami hampir membuat visi ini menjadi kenyataan.

Disclaimer:

  1. Artikel ini dicetak ulang dari [edgeandnode]. Semua hak cipta milik penulis asli [Nader Dabit]. Jika ada keberatan terhadap cetak ulang ini, silakan hubungi Gate Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penyangkalan Tanggung Jawab: Pandangan dan opini yang terdapat dalam artikel ini semata-mata milik penulis dan tidak merupakan nasihat investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.

Mendefinisikan tumpukan web3

Menengah1/8/2024, 2:50:04 AM
Artikel ini menjelajahi aplikasi dan pengembangan Web3 dalam blockchain.

Pada segmen berikutnya dari Membangun pada web3, insinyur pengembangan Edge & Node Nader Dabit menjelaskan lebih lanjut tentang tumpukan web3 dan bagaimana para pengembang dapat mengkonseptualisasikan berbagai aspek membangun pada web3.


Saya beralih ke web3 pada bulan April 2021 setelah menjadi pengembang full-stack tradisional selama sekitar 10 tahun. Saat menyelami semua teknologi dan gagasan baru ini, hal pertama yang ingin saya ketahui adalah "apa itu tumpukan web3?".

Saat membangun aplikasi web atau seluler tradisional, saya sering bergantung pada sejumlah blok bangunan untuk menyelesaikan pekerjaan.

  1. server API / aplikasi (REST atau GraphQL)
  2. lapisan otentikasi (dikelola atau dibuat sendiri)
  3. Database
  4. Kerangka kerja, platform, dan perpustakaan sisi klien
  5. Penyimpanan file

Dengan menggunakan komponen inti ini, saya dapat membangun sebagian besar jenis aplikasi yang saya inginkan, atau setidaknya mendekati. Jadi, bagaimana tampilannya dalam web3?

Ternyata, jawaban atas hal ini tidaklah begitu langsung karena:

  1. Paradigma benar-benar berbeda dalam banyak hal
  2. Alat, teknologi, dan ekosistem web3 kurang matang dibandingkan web2

Saya juga kesulitan memahami cara memulai dan membangun aplikasi web3 karena saya mendekati masalah dengan cara yang sama seperti di dunia web2.

Setelah bekerja, melakukan riset, bereksperimen, dan membangun hal-hal selama kurang lebih 8 bulan terakhir, saya ingin berbagi apa yang telah saya pelajari.

Apa itu web3?

Sebelum kita mendefinisikan tumpukan web3, mari kita coba mendefinisikan web3. Ada banyak definisi tergantung pada siapa yang Anda tanyakan, tetapi bagi saya saya menemukaninidefinisi spot on:

Web3 adalah tumpukan protokol yang memungkinkan aplikasi terdesentralisasi sepenuhnya.

Dengan tumpukan teknologi terdesentralisasi ini, kita dapat mulai membangun aplikasi terdesentralisasi yang memiliki implikasi dan karakteristik yang ditetapkan.

Beberapa karakteristik yang diaktifkan oleh web3 adalah:

  • Infrastruktur web terdesentralisasi
  • Kepemilikan (data, konten, dan platform)
  • Pembayaran digital asli
  • identitas berdaulat sendiri
  • Infrastruktur terdistribusi, tanpa kepercayaan, & tangguh
  • Buka, publik, belakang yang dapat disusun

Sementara beberapa aplikasi yang dibangun di atas tumpukan teknologi terdesentralisasi akan menggantikan pendahulunya, paradigma baru aplikasi juga telah dimungkinkan oleh primitif baru yang diaktifkan oleh blockchain.

Pembayaran digital asli dan infrastruktur belakang publik - seperti pembelajaran mesin, perangkat seluler, realitas virtual, dan blok bangunan teknologi lainnya - memungkinkan jenis aplikasi baru sepenuhnya dibangun, beberapa yang belum terbayangkan.

Apakah ini berarti bahwa segala sesuatu akan digantikan oleh web3? Tidak harus demikian. Meskipun saya berpikir bahwa membangun dengan tumpukan teknologi terdesentralisasi adalah pilihan yang jauh lebih baik untuk jenis aplikasi tertentu - seperti hampir setiap keputusan teknis, itu tergantung pada apa yang Anda bangun.

Mari mulai menjelajahi tumpukan web3 sekarang, dibagi menjadi serangkaian kategori ini:

  • Blockchain
  • Lingkungan pengembangan blockchain
  • Penyimpanan file
  • Protokol data off chain
  • API (pengindeksan & kueri)
  • Identitas
  • Klien (kerangka kerja dan pustaka)
  • Oracles
  • Protokol lainnya

Blockchain

Ada banyak blockchain yang dapat Anda pilih untuk dibangun. Tidak ada yang terbaik, sebaliknya Anda harus mempertimbangkan berbagai tradeoff di antara mereka.

Salah satu hal yang sering penting bagiku ketika belajar sesuatu yang baru adalah gagasan penerapannya Prinsip Paretoke apa yang saya pelajari, yaitu, apa cara paling efisien untuk mendapatkan manfaat maksimal dari jumlah waktu dan usaha tersebut. Mengikuti ide ini, saya dapat mencapai kemajuan dan momentum terbesar saat belajar hal baru dalam waktu sesingkat mungkin.

Di dunia Blockchain, belajar Solidity dan EVM(atau Mesin Virtual Ethereum) mungkin menjadi pilihan terbaik saat memulai sebagai pengembang blockchain. Dengan menggunakan keterampilan ini (dan tumpukan teknologi), Anda dapat membangun tidak hanya untuk Ethereum, tetapi juga untuk Layer 2 Ethereum lainnya, sidechain, dan bahkan blockchain lain seperti Avalanche, Fantom, dan Celo.

Dengan demikian, Rust mulai menjadi semakin populer di dunia blockchain, dengan Solana, NEAR, Polkadot, dan lainnya memiliki dukungan Rust kelas satu. Kamu mungkin tidak akan salah memilih mempelajari keduanya, tapi bagi pemula, saya akan mengatakan bahwa Solidity masih menjadi pilihan yang lebih baik jika seseorang bertanya kepada saya hari ini.

Selain saran itu, berikut adalah contoh yang tidak lengkap dari blockchain yang memiliki kombinasi teknologi, utilitas, komunitas, momentum, dan masa depan yang solid:

  • Ethereum- platform kontrak pintar asli
  • ZK rollups: ZKSync, Starknet, Hermez- Tingkat kinerja tinggi Ethereum layer 2, tetapi tidak kompatibel secara native dengan EVM
  • rollups optimis: Arbitrum & Optimisme - Ethereum layer 2s, kompatibel EVM (pelajari lebih lanjut tentang perbedaan antara optimistic dan ZK rollups di sini)
  • Poligon- sisi rantai Ethereum
  • Solana- throughput tinggi, transaksi murah, waktu blok cepat, tetapi lebih sulit untuk dipelajari daripada EVM (Rust)
  • NEAR- Blockchain Layer 1, dapat menulis kontrak pintar dalam Rust atau Assemblyscript
  • Cosmos- sebuah ekosistem blockchain yang saling berinteraksi
  • Polkadot- platform komputasi berbasis blockchain yang memungkinkan blockchain yang dibangun di atasnya untuk melakukan transaksi antara mereka sendiri, menciptakan internet terhubung dari blockchain
  • Aurora- Rantai yang kompatibel dengan EVM berjalan pada protokol NEAR.
  • Fantom- lapisan 1 yang kompatibel dengan EVM
  • Avalanche- Layer 1 yang kompatibel dengan EVM
  • Celo- Lapisan 1 yang kompatibel dengan EVM, dirancang untuk memudahkan siapa pun yang memiliki ponsel pintar untuk mengirim, menerima, dan menyimpan kripto
  • Tezos- Layer 1 yang tidak kompatibel dengan EVM, banyak proyek NFT yang menggunakannya

Ketika berinteraksi dengan jaringan, Anda perlu menggunakan titik akhir RPC.

Ada beberapa cara yang bisa Anda lakukan ini:

  1. Akses titik akhir RPC publik
  2. Menjalankan node Anda sendiri
  3. Mengakses penyedia node sebagai layanan
  4. Mengakses penyedia node terdesentralisasi sebagai layanan

Titik akhir RPC publik sering kali disediakan oleh jaringan, tetapi untuk kebanyakan dapps produksi, Anda akan ingin memanfaatkan titik akhir Anda sendiri karena mereka tidak stabil atau direkomendasikan untuk produksi.

Ada beberapa penyedia layanan RPC di luar sana, berikut adalah beberapa:

Ada juga solusi web3 / terdesentralisasi, Jaringan Pocketyang sepertinya semakin populer.

Salah satu dari opsi-opsi ini mungkin merupakan pilihan yang baik untuk berinteraksi langsung dengan jaringan Anda.

Lingkungan pengembangan blockchain

Untuk pengembangan EVM, ada beberapa lingkungan pengembangan yang baik tersedia:

  • Topi keras (JavaScript) adalah opsi yang lebih baru, tetapi semakin populer. Dokumentasinya bagus, alat-alatnya dan pengalaman pengembangnya sudah teruji, dan itulah yang saya pribadi gunakan untuk membangun dapps.
  • Truffle(JavaScript) adalah serangkaian alat untuk membangun dan mengembangkan aplikasi di EVM. Ini sudah matang, diuji dalam pertempuran, dan terdokumentasi dengan baik. Sudah ada sejak lama dan banyak pengembang menggunakannya.
  • Foundryadalah lingkungan pengembangan Solidity baru dari Paradigm yang menunjukkan banyak janji. Titik terang kunci adalah kemampuan menulis tes dalam Solidity, dukungan untuk fuzzing, dan kecepatan (ditulis dalam Rust). Saya menulis pengenalan terpisah untuk itu di sini.
  • Brownieadalah kerangka pengembangan dan pengujian berbasis Python untuk kontrak pintar untuk pengembangan Solidity / EVM.

Untuk pengembangan Solana, JangkarSegera menjadi titik masuk bagi pengembang baru. Ini menyediakan CLI untuk membangun, dan menguji program Solana serta perpustakaan klien yang dapat Anda gunakan untuk membangun antarmuka. Ini juga termasuk DSL yang mengabstraksikan sebagian besar kompleksitas yang sering dihadapi pengembang saat mereka memulai pengembangan Solana dan Rust.

Penyimpanan berkas

Di mana kita menyimpan gambar, video, dan file lainnya di web3? Menyimpan sesuatu sebesar itu di rantai biasanya terlalu mahal, jadi kita mungkin tidak ingin menyimpannya di sana.

Sebagai gantinya, kita dapat menggunakan salah satu dari beberapa protokol penyimpanan file:

  • IPFSprotokol sistem file peer-to-peer
    • pros: itu dapat diandalkan, didokumentasikan dengan baik dengan ekosistem yang besar
    • cons: jika data tidak di-pinned bisa hilang
  • Arweave - memungkinkan Anda menyimpan data secara permanen, membayar biaya transaksi tunggal. Saya adalah penggemar Arweave dan menulis posting blog tentang itu di sini.
  • Filecoin- dari Protocol Labs, tim yang sama yang membangun IPFS, ini adalah protokol yang dirancang untuk menyediakan sistem penyimpanan data yang persisten. Adasejumlah carauntuk pengembang membangun di Filecoin, termasuk web3.storageyang sangat bagus.
  • Skynet- Saya belum menggunakannya dalam produksi, namun telah mencoba dan sepertinya berfungsi dengan baik. API di siniterlihat bagus. Saya punya pertanyaan seperti berapa lama data disimpan, dan interoperabilitas Skynet dengan protokol lain.

Protokol data off chain

Selain penyimpanan file dan penyimpanan on-chain, Anda mungkin juga perlu menyimpan data off-chain. Anda mungkin menggunakan jenis solusi ini dengan cara yang sama seperti Anda mungkin menggunakan database dalam tumpukan teknologi tradisional, tetapi alih-alih direplikasi di sejumlah node pada jaringan terdesentralisasi, dan oleh karena itu lebih dapat diandalkan (setidaknya dalam teori).

Beberapa opsi adalah:

  • Jaringan Keramik- platform sumber terbuka terdesentralisasi untuk membuat, meng-host, dan berbagi data. Ceramic juga memiliki protokol identitas bagus yang akan saya bahas nanti. Mungkin solusi penyimpanan luar jaringan favorit saya saat ini.Di sinidemo yang cukup bagus.
  • TekstilThreadDB- database multi-pihak yang dibangun di atas IPFS dan Libp2p. Jika saya mengerti dengan benar, saat ini mungkin sedang mengalami perubahan API besar. Saya telah mencobanya dan menunjukkan beberapa janji, tetapi dokumen dan DX memerlukan beberapa perbaikan.
  • GunDB- sebuah basis data terdesentralisasi, peer-to-peer. Gun telah ada sejak lama dan beberapa aplikasi yang cukup menariktelah dibangun dengan itu.

Dalam hal kematangan, pendapat saya adalah bahwa ekosistem solusi penyimpanan luar rantai belum mencapai tingkat yang diperlukan untuk mengembangkan beberapa kasus penggunaan yang lebih canggih yang mungkin diinginkan oleh beberapa pengembang. Beberapa tantangan di sini adalah data real-time, deteksi konflik dan penyelesaian konflik, otorisasi penulisan, dokumentasi, dan pengalaman pengembang secara umum.

Mengintegrasikan solusi data offchain dengan protokol blockchain adalah salah satu rintangan besar terakhir yang perlu kita lewati sebelum kita memiliki tumpukan protokol terdesentralisasi sepenuhnya yang mampu mendukung segala jenis aplikasi.

API (pengindeksan & kueri)

Ada banyak perbedaan dalam cara kita berinteraksi dan membangun di atas blockchain dibandingkan basis data dalam tumpukan teknologi tradisional. Dengan blockchain, data tidak disimpan dalam format yang dapat dengan efisien atau mudah dikonsumsi langsung dari aplikasi atau antarmuka depan lainnya.

Blockchain dioptimalkan untuk operasi tulis. Anda sering mendengar inovasi yang terjadi berpusat di sekitar transaksi per detik, waktu blok, dan biaya transaksi. Data blockchain ditulis dalam blok seiring berjalannya waktu, membuat segala sesuatu selain operasi baca dasar menjadi tidak mungkin.

Dalam kebanyakan aplikasi, Anda membutuhkan fitur-fitur seperti data relasional, penyortiran, penyaringan, pencarian teks penuh, penomoran halaman, dan berbagai jenis kemampuan kueri lainnya. Untuk melakukannya, data perlu diindeks dan diorganisir untuk pengambilan yang efisien.

Secara tradisional, itulah pekerjaan yang dilakukan oleh basis data dalam tumpukan teknologi terpusat, tetapi lapisan pengindeksan itu tidak ada dalam tumpukan web3.

Grafikadalah protokol untuk mengindeks dan mengajukan pertanyaan tentang data blockchain yang membuat proses ini jauh lebih mudah dan menawarkan solusi terdesentralisasi untuk melakukannya. Siapa pun dapat membangun dan menerbitkan API GraphQL terbuka, yang disebut subgraf, membuat data blockchain mudah untuk ditanyakan.

Untuk mengetahui lebih lanjut tentang The Graph, lihat dokumendi siniatau panduanku di sini.

Identitas

Identitas adalah paradigma yang benar-benar berbeda dalam web3. Di web2, otentikasi hampir selalu didasarkan pada informasi pribadi pengguna. Informasi ini biasanya dikumpulkan baik melalui formulir atau penyedia OAuth yang meminta pengguna untuk menyerahkannya sebagai pertukaran akses ke aplikasi.

Di web3, identitas sepenuhnya berkaitan dengan gagasan dompet dan kriptografi kunci publik.

Sementara nama “dompet” memenuhi tujuannya, saya menemukan bahwa orang yang baru mengenal web3 merasa bingung dengan istilah itu karena berkaitan dengan otentikasi dan identitas. Saya harap di masa depan kita dapat menemukan cara lain untuk menyampaikan apa itu dompet, karena ini menggabungkan aspek keuangan namun juga identitas dan reputasi.

Sebagai seorang pengembang, Anda perlu memahami bagaimana cara mengakses dan berinteraksi dengan dompet dan alamat pengguna dengan berbagai cara.

Pada level yang sangat dasar (dan kebutuhan yang sangat umum), Anda mungkin ingin meminta akses ke dompet pengguna. Untuk melakukan ini, biasanya Anda akan dapat mengakses dompet pengguna dalam konteks jendela (peramban web) atau menggunakan sesuatu seperti WalletConnectatauAdapter Dompet Solana.

Sebagai contoh, jika mereka memiliki dompet Ethereum yang tersedia, Anda akan dapat mengakses window.ethereum. Sama halnya dengan Solana (window.solana), Arweave (window.arweaveWallet), dan beberapa lainnya. WalletConnect bagus untuk web seluler dan React Native karena memungkinkan pengguna untuk memberikan izin menggunakan dompet seluler mereka langsung dari perangkat.

Jika Anda ingin menangani otentikasi sendiri, Anda dapat mengizinkan pengguna untuk menandatangani transaksi dan kemudian mendekodekannya di suatu tempat untuk mengotentikasi pengguna, tetapi ini biasanya memerlukan server.Di siniadalah contoh bagaimana itu mungkin terlihat menggunakan dompet EVM, dandi sinimerupakan contoh bagaimana melakukan hal ini dengan Solana / Phantom.

Bagaimana dengan mengelola profil pengguna secara terdesentralisasi?Jaringan Keramikmenawarkan protokol paling kuat dan rangkaian alat untuk mengelola identitas terdesentralisasi. Mereka baru-baru ini merilis sebuah kiriman blogmenguraikan beberapa pembaruan terbaru mereka dan memberikan beberapa panduan tentang bagaimana semua alat bekerja bersama. Saya akan memulai dari situ dan kemudian menjelajahidokumen merekauntuk memahami bagaimana memulai membangun, dan pertimbangkan untuk melihat proyek contoh sayadi siniyang menggunakan Keramik self.id.

Jika Anda ingin mengambil ENScatatan teks, perpustakaan ENSJS menawarkan API yang bagus untuk mengambil data pengguna:

const ens = baru ENS({ penyedia, alamatEns: dapatkanAlamatEns(‘1’) })

const content = await ens.name('sha.eth').getText('avatar')

SpruceIDjuga sesuatu yang terlihat menjanjikan tetapi saya belum mencobanya.

Keramik dan Spruce keduanya menerapkan W3C DIDspesifikasi, yang juga saya anggap sebagai blok bangunan web3. Dengan demikian, implementasi terpusat DIDs melanggar ide dari apa yang spesifikasi coba capai.

Klien

Sejauh yang terkait dengan kerangka kerja JavaScript, Anda benar-benar dapat membangun dengan apapun yang Anda inginkan, karena SDK blockchain sisi klien sebagian besar tidak tergantung pada kerangka kerja. Dengan demikian, sebagian besar proyek dan contoh dibangun dengan React. Ada juga beberapa pustaka seperti Adapter Dompet Solanayang menawarkan utilitas tambahan untuk React, jadi saya akan mengatakan bahwa belajar atau akrab dengan React mungkin akan menjadi langkah cerdas.

Untuk SDK sisi klien di Ethereum ada web3.js dan ethers.jsBagi saya, Ethers lebih mudah diakses dan memiliki dokumentasi yang lebih baik, meskipun web3.js telah ada lebih lama.

Di Solana, Anda mungkin akan bekerja dengan @solana/web3.js dan/atau JangkarSaya telah menemukan pustaka klien Anchor sebagai pilihan utama saya untuk membangun program Solana karena saya sudah menggunakan kerangka Anchor, dan saya menemukannya jauh lebih mudah dipahami kemudian@solana/web3.js.

Oracles

Oracles memungkinkan pengembang untuk mengakses data dunia nyata & sistem eksternal dari dalam kontrak pintar.

Misalnya, sebagian besar aplikasi keuangan memerlukan pengetahuan tentang data & peristiwa dunia nyata yang terjadi di luar rantai, jadi Oracle sangat penting di DeFi.

Chainlinkadalah sebuah Oracle yang memungkinkan akses ke data dunia nyata dan komputasi di luar rantai sambil menjaga jaminan keamanan dan keandalan yang melekat pada teknologi blockchain.

Fluxadalah orakel lintas-rantai yang menyediakan kontrak pintar dengan akses ke umpan data yang aman secara ekonomi.

Protokol lainnya

Radikula adalah protokol kolaborasi kode terdesentralisasi yang dibangun di Git. Ini bisa dianggap sebagai versi GitHub yang terdesentralisasi.

Rekan hidupadalah jaringan streaming video terdesentralisasi. Ini matang dan banyak digunakan dengan lebih dari 70.000 GPU aktif di jaringan.

Kesimpulan

Pos ini akan menjadi dokumen hidup yang akan saya terus ikuti saat saya belajar, bereksperimen, dan mengumpulkan umpan balik dari pengembang yang membangun di web3.

Jika Anda memiliki umpan balik atau ide seputar sesuatu yang saya lewatkan di sini, silakan hubungi dan bagikan pemikiran Anda dengan saya. Sangat menyenangkan melihat semua aktivitas yang terjadi di sekitar web3 karena pengembang melompat dan terlibat. Sementara infrastruktur masih berkembang, visi membangun protokol dan aplikasi yang benar-benar terdesentralisasi yang memungkinkan orang untuk berkoordinasi tanpa harus memberikan kekuatan dan kontrol kepada perusahaan besar adalah salah satu yang penting dan kami hampir membuat visi ini menjadi kenyataan.

Disclaimer:

  1. Artikel ini dicetak ulang dari [edgeandnode]. Semua hak cipta milik penulis asli [Nader Dabit]. Jika ada keberatan terhadap cetak ulang ini, silakan hubungi Gate Belajartim, dan mereka akan menanganinya dengan cepat.
  2. Penyangkalan Tanggung Jawab: Pandangan dan opini yang terdapat dalam artikel ini semata-mata milik penulis dan tidak merupakan nasihat investasi apa pun.
  3. Terjemahan artikel ke dalam bahasa lain dilakukan oleh tim Gate Learn. Kecuali disebutkan, menyalin, mendistribusikan, atau menjiplak artikel yang diterjemahkan dilarang.
Empieza ahora
¡Registrarse y recibe un bono de
$100
!