ELI5: Apa itu IBC?
Kelahiran Bitcoin menyebabkan ledakan blockchain Cambrian dengan keputusan desain dan kasus penggunaan yang berbeda. Sementara buku besar yang didistribusikan ini melayani tujuan yang berbeda, mereka ada (dan masih ada sampai tingkat tertentu) sebagai silo dengan interaksi terbatas yang berarti.
Mirip dengan Internet yang memfasilitasi berbagai jenis komputer di berbagai belahan dunia untuk berkomunikasi satu sama lain, teknologi serupa yang bertindak sebagai jaringan ikat antar blockchain diperlukan untuk akrual nilai sebenarnya. Protokol Inter-Blockchain Communication (IBC) bertujuan untuk melayani tujuan ini.
IBC adalah protokol interoperabilitas universal yang memungkinkan dua blockchain berbeda untuk berkomunikasi satu sama lain. IBC menjamin komunikasi yang andal , teratur , dan diautentikasi .
Mungkin salah satu sifat paling penting dari IBC adalah minimalisasi kepercayaan. Di blockchain, properti minimisasi kepercayaan secara inheren terkait dengan keamanan. Tidak ada sistem terdistribusi yang sepenuhnya 'tanpa kepercayaan'. Oleh karena itu, pertanyaan tentang keamanan bermuara pada siapa atau apa yang dipercaya, dan bagaimana kepercayaan itu dapat dilanggar, yaitu, apa yang diperlukan agar entitas tepercaya tersebut rusak?
Dalam pengertian ini, dan tidak seperti kebanyakan solusi penghubung, IBC tidak menggunakan pihak ketiga yang tepercaya. Ini berarti bahwa jika Anda mempercayai dua rantai tertentu untuk menggunakan fungsi yang mereka sediakan (dan secara default mekanisme konsensusnya), maka tidak diperlukan asumsi kepercayaan tambahan saat menggunakan IBC untuk berinteraksi di antara rantai tersebut.
IBC juga lebih dari sekedar jembatan yang memfasilitasi transfer token. Ini adalah protokol penyampaian pesan tujuan umum . Ini berarti bahwa segala bentuk data dapat dikomunikasikan melalui IBC.
Bagaimana cara kerja IBC?
Untuk memahami cara kerja IBC, penting untuk memisahkan dua lapisan IBC yang berbeda — 1) lapisan transport dan 2) lapisan aplikasi.
Lapisan Transportasi
Pesan yang dikomunikasikan melalui IBC diangkut dalam paket data . Dan lapisan transport bertanggung jawab untuk mengangkut , mengautentikasi , dan memesan paket data ini.
Lapisan transport tidak menentukan apa pun tentang apa yang seharusnya menjadi data dalam paket atau bagaimana mereka harus ditafsirkan oleh rantai penerima. Dari sudut pandang lapisan transport, informasi di dalam paket data hanyalah byte acak.
Komponen kunci dari lapisan transport adalah light client, relayer, koneksi, dan saluran.
Klien ringan adalah representasi ringan dari blockchain. Tidak seperti node penuh , klien ringan tidak menyimpan seluruh riwayat semua pesan yang terkandung dalam blockchain. Mereka juga tidak melakukan transaksi. Sebaliknya, klien ringan dirancang untuk terhubung ke node penuh, dan memverifikasi header blok (ringkasan data yang terkandung dalam blok). Ini memungkinkan klien ringan menjadi efisien dalam hal penyimpanan dan perhitungan.
Dua blockchain independen A dan B yang berinteraksi melalui IBC memiliki klien ringan dari rantai rekanan. Ini berarti bahwa A memiliki klien ringan di blockchainnya yang bertindak sebagai representasi ringan dari blockchain B. Saat A ingin mengomunikasikan pesan tertentu 'X' dengan B , ia mengirimkan header blok tempat pesan itu ada, bersama dengan bukti komitmen pesan itu ke B . Bukti komitmen digunakan untuk memverifikasi ada atau tidak adanya pesan tertentu pada A . Menggunakan header dan bukti blok, B secara kriptografis memverifikasi ituA memang melakukan X . Penggunaan klien ringan di IBC inilah yang memungkinkan blockchain untuk bertukar pesan satu sama lain tanpa perlu pihak ketiga yang tepercaya.
Tetapi A dan B tidak secara langsung mengirim pesan/paket data ini satu sama lain. Alih-alih, ketika A ingin mengirim pesan ke B , ia melakukan atau menyimpan hash dari paket data yang berisi pesan di mesin statusnya . Relay , yang merupakan proses off-chain, terus-menerus mengamati pesan semacam itu. Ketika mereka melihat bahwa A telah melakukan pesan yang dimaksudkan untuk B di mesin statusnya, mereka hanya mengambil pesan ini dan meneruskannya ke B . Perhatikan bahwa penyalur tidak memiliki izin dan oleh karena itu dapat dijalankan oleh siapa saja.
Koneksi bertanggung jawab untuk menghubungkan klien ringan pada dua rantai yang berbeda. Dan saluran adalah saluran untuk mentransfer paket antar modul pada rantai yang berbeda ini. Oleh karena itu, meskipun koneksi bersifat khusus rantai, saluran bersifat khusus modul. Setiap ujung saluran memiliki ID saluran unik (dan ID port) yang digunakan untuk merutekan paket secara akurat di antara dua modul.
Lapisan Aplikasi
Lapisan aplikasi adalah apa yang berinteraksi dengan pengguna akhir. Ini terdiri dari berbagai aplikasi yang menggunakan lapisan transport untuk membangun di atasnya. Lapisan transport tidak menentukan bagaimana paket data perlu ditafsirkan. Peran ini dilakukan oleh lapisan aplikasi.
IBC mendukung berbagai aplikasi seperti transfer token yang dapat dipertukarkan/tidak dapat dipertukarkan, feed oracle lintas rantai, Akun Interchain, Kueri Interchain, Middleware biaya (untuk memberi insentif kepada relayer), dll.
Misalnya, aplikasi tingkat IBC untuk transfer token — disebut Interchain Standard 20 (ICS 20) — menentukan bagaimana paket data harus disusun dan bagaimana mereka ditafsirkan oleh rantai penerima. Dalam kasus transfer token yang sepadan, paket data berisi informasi mengenai pengirim, penerima, jumlah, dan denominasi (denom IBC). Bidang denom melacak jalur yang dilalui token tertentu untuk mencapai rantai tertentu. Logika tentang bagaimana paket akan ditindaklanjuti juga ditentukan oleh ICS 20.
Analogi sederhana yang dapat membantu dalam memahami KPI adalah sistem pengiriman surat. Saat Anda mengirim surat kepada seseorang, Anda mengirimkannya melalui layanan pos yang mengumpulkan amplop berisi surat dari Anda dan menyimpannya ke kotak surat penerima. Penerima kemudian membuka amplop tersebut dan membaca surat Anda. Lapisan transportasi KPI dapat dianggap sebagai layanan pos. Layanan pos tidak memberi tahu Anda apa isi surat itu, atau bagaimana penerima harus menafsirkan pesan Anda.
Mereka juga tidak tahu apa isi amplop itu. Itu hanya melakukan tindakan mengumpulkan amplop dari titik A dan mengirimkannya ke titik B. Amplop itu sendiri dapat dianggap sebagai paket IBC yang dikirim dari satu rantai ke rantai lainnya. Dan di amplop ini, Anda akan mencantumkan alamat penerima. Ini mirip dengan bagaimana paket IBC berisi informasi tentang siapa yang mengirim paket (ditentukan oleh ID saluran) dan untuk siapa paket itu ditujukan (ditentukan oleh ID saluran rekanan). Pada akhirnya, penerima (aplikasi) yang bertanggung jawab untuk membuka amplop (paket data) dan menafsirkan isi surat tersebut.
Untuk apa IBC dapat digunakan?
Selain transfer token yang sepadan, dua aplikasi tingkat IBC lainnya termasuk Akun Interchain, dan Keamanan Interchain .
Akun Interchain memfasilitasi interaksi rantai ke rantai sambil tetap menggunakan satu antarmuka. Ini secara efektif berarti bahwa setiap tindakan seperti transfer, mempertaruhkan, atau pemungutan suara pada proposal tata kelola yang dapat dilakukan di B (disebut 'rantai host'), dapat dilakukan dari A (disebut 'rantai pengontrol'). Akun Interchain secara signifikan meningkatkan kemampuan menyusun dalam Interchain dengan meningkatkan pengalaman pengguna.
Interchain Security adalah versi keamanan bersama dari Cosmos Ecosystem. Ini memungkinkan blockchain untuk menyewakan keamanan dari rantai lain dengan cara yang sepenuhnya ikut serta. Ini sangat berguna untuk rantai baru yang dapat memilih untuk memanfaatkan keamanan yang ditawarkan oleh jaringan yang sudah mapan seperti Cosmos Hub. Keamanan Interchain menghilangkan kebutuhan rantai untuk mem-bootstrap set validator mereka sendiri.
Cakupan aplikasi yang dapat dilakukan dengan menggunakan IBC sebagai primitif inti terus berkembang. Transfer NFT lintas rantai dan Kueri Interchain (di mana satu rantai dapat membaca status dari rantai lain) saat ini sedang dikembangkan dan akan segera siap produksi.
Masalah apa yang dipecahkan IBC?
Dalam sebuah kalimat, IBC memecahkan masalah blockchain yang ada sebagai silo dengan interaksi terbatas. Interoperabilitas antar blockchain diperlukan untuk akrual nilai maksimal.
Setiap blockchain melayani satu atau lebih kasus penggunaan khusus. Jika kasus penggunaan ini tidak dapat dimanfaatkan di beberapa blockchain, itu sangat menghambat utilitasnya. Terobosan yang diberikan internet adalah informasi dapat dengan mudah mengalir melintasi berbagai belahan dunia dengan mudah. Demikian pula, utilitas dari blockchain yang berbeda harus dapat diakses secara bebas di berbagai platform.
Misalnya, pengguna mungkin ingin menggunakan stablecoin dari satu blockchain, untuk menghasilkan hasil melalui kumpulan likuiditas (LP) pada pertukaran terdesentralisasi (DEX) yang ada di blockchain lain. Atau mereka mungkin ingin memanfaatkan properti penjaga privasi yang disediakan oleh blockchain lain. Interoperabilitas antar rantai diperlukan untuk mewujudkan kasus penggunaan ini dan banyak lagi.
IBC tidak hanya memecahkan masalah interoperabilitas, tetapi melakukannya dengan cara yang meminimalkan kepercayaan, aman, dapat diperluas, dan tujuan umum.
Bagaimana saya sebagai pengembang aplikasi dapat menggunakan IBC?
Sifat modular dari Cosmos SDK mencegah pengembang dari keharusan menyibukkan diri dengan beberapa lapisan abstraksi seperti klien ringan, koneksi, verifikasi bukti, dll. Untuk pengembang, persyaratan dan fungsi yang paling relevan untuk dibiasakan adalah saluran dan porta . Untuk informasi lebih rinci tentang IBC, Anda dapat merujuk ke portal pengembang kami .
Jika Anda membangun blockchain menggunakan Cosmos SDK, langkah-langkah yang diperlukan untuk mengaktifkan IBC untuk modul SDK dirinci di sini . Anda juga dapat mendaftar ke Interchain Builders Program, sebuah inisiatif ICF, untuk mendapatkan dukungan pembangunan di Cosmos.
Tentang penulis: posting ini ditulis oleh Adi Ravi Raj , Analis Protokol IBC di Interchain GmbH.

![Apa itu Linked List? [Bagian 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































