Apa itu Tendermint Core? Panduan Paling Komprehensif Yang Pernah Ada
![Apa itu Tendermint Core? Panduan Paling Komprehensif Yang Pernah Ada](https://selembardigital.com/wp-content/uploads/2019/04/WhatsApp-Image-2019-04-30-at-16.19.46.jpeg)
Cosmos adalah salah satu proyek paling menjanjikan di luar sana.Dengan orang-orang seperti Jae Kwon dan Ethan Buchman di tim mereka, itu memiliki banyak potensi. Di hati dan jiwanya terletak Tendermint Core.
![](https://selembardigital.com/wp-content/uploads/2019/04/tendermint-1024x576.jpg)
Tendermint Core menggabungkan algoritma konsensus Tendermint bersama dengan protokol gosip p2p. Jadi, ketika Anda memasukkan semuanya ke dalam tumpukan perangkat lunak, Anda mendapatkan Tendermint Core bersama dengan lapisan aplikasi Cosmos-SDK.
Ngomong-ngomong, jadi sebelum kita melangkah lebih jauh, mari kita lihat mengapa Tendermint begitu penting.
Bitcoin dan Blockchain
Ketika Satoshi Nakamoto menciptakan Bitcoin , ia membuat sistemkriptografi yang pertama kali didesentralisasi . Bagian yang sangat luar biasa tentang penemuan ini adalah bahwa ia mampu menyelesaikan Masalah Jenderal Bizantium yang membantu jaringan area luas (WAN) untuk mencapai konsensus di lingkungan yang tidak dapat dipercaya.Bitcoin menggunakan algoritma proof-of-work untuk menjaga konsensus mereka.
Karena itu, kontribusi utama Bitcoin mungkin adalah fakta bahwa Bitcoin memperkenalkan seluruh dunia pada teknologi blockchain .
Blockchain adalah, dalam istilah paling sederhana, serangkaian catatan data abadi yang dikelola oleh sekelompok komputer yang tidak dimiliki oleh satu entitas. Masing-masing blok data ini (yaitu blok) diamankan dan diikat satu sama lain menggunakan prinsip kriptografi (yaitu rantai).
Dengan kata lain, blockchain adalah mesin state deterministik yangdireplikasi pada node yang tidak harus saling percaya.
Yang kami maksud dengan deterministik adalah bahwa jika langkah spesifik yang sama diambil, maka itu akan selalu mengarah pada hasil yang sama.
Misalnya. 1 + 2 akan selalu menjadi 3.
Jadi, apa yang dimaksud dengan negara? Mari kita melihatnya Bitcoin dan Ethereum.
Dalam Bitcoin, negara adalah daftar saldo untuk setiap akun, yang merupakan daftar Output Transaksi yang Tidak Terpakai (UTXO). Status ini akan diubah melalui transaksi yang mengubah saldo.
Di sisi lain, di Ethereum , aplikasi adalah mesin virtual yang menjalankan kontrak pintar. Setiap transaksi berjalan melalui Mesin Virtual Ethereum dan memodifikasi negara sesuai dengan kontrak pintar spesifik yang disebut di dalamnya.
Jika Anda melihat arsitektur teknologi blockchain, maka Anda akan memiliki tiga lapisan spesifik:
- Jaringan: Penyebaran transaksi / informasi di seluruh node
- Konsensus: Memungkinkan simpul untuk mengambil keputusan dengan ketentuan> 2/3 dari node tidak berbahaya
- Aplikasi: Bertanggung jawab untuk memperbarui keadaan yang diberikan satu set transaksi, yaitu memproses transaksi. Diberikan transaksi dan status, aplikasi akan mengembalikan status baru.
Untuk isyarat visual:
![](https://selembardigital.com/wp-content/uploads/2019/04/image4.jpg)
Masalah dengan Arsitektur Blockchain Saat Ini
Ternyata membangun blockchain dari bawah ke atas dengan 3 lapisan ini benar-benar kerja keras. Jadi, banyak proyek lebih suka membangun dengan forking basis kode Bitcoin. Sekarang, walaupun ini menghemat banyak waktu, faktanya mereka masih diborgol oleh keterbatasan protokol Bitcoin. Jelas, Anda tidak dapat menjalankan proyek yang rumit ketika Anda menggunakan protokol yang terkenal dengan masalah throughputnya.
Segalanya menjadi jauh lebih baik ketika Ethereum ikut bermain.Ethereum sebenarnya memberi pengembang sebuah platform yang dapat mereka gunakan untuk membuat kode kustom mereka sendiri alias kontrak dan proyek pintar. Namun, seperti halnya Bitcoin, Ethereum juga menderita masalah yang sama. Keduanya memiliki arsitektur monolitik dan bukan modular.
Arsitektur Monolitik vs Arsitektur Modular
Arsitektur monolitik berarti bahwa semuanya tersusun dalam satu kesatuan. Ketika perangkat lunak dianggap “monolitik”, komponen-komponennya saling berhubungan dan saling tergantung satu sama lain dan desainnya lebih mandiri. Dalam hal ini, arsitekturnya lebih erat-berpasangan dan komponen terkait harus semuanya ada agar kode dapat dieksekusi atau dikompilasi.
Meskipun ini membuat sistem yang dibuatnya lebih kuat, Anda tidak dapat benar-benar mendapatkannya dan membuat kode khusus. Ini bukan sistem yang paling fleksibel. Plus, ada masalah lain dengan sistem ini. Jika ada komponen program yang perlu diperbarui, seluruh aplikasi harus dikerjakan ulang. Ini sebenarnya bukan situasi yang paling ideal saat ini, bukan?
Di sisi lain, kami memiliki arsitektur modular. Tidak seperti Monolitik, lapisan-lapisan itu tidak saling terhubung satu sama lain. Jadi, walaupun mungkin tidak sekuat itu, cukup mudah untuk memperbarui seluruh aplikasi dengan bekerja dengan berbagai modul terpisah.
Karena modulnya sangat independen, arsitektur modular memungkinkan Anda untuk benar-benar memperbarui bagian tertentu tanpa menyebabkan perubahan yang tidak terduga ke seluruh sistem.Proses berulang juga jauh lebih sederhana dalam program modular, dibandingkan dengan monolitik.
Arsitektur dan Tujuan Tendermint
Tendermint memanfaatkan arsitektur modular. Tujuan mereka adalah sebagai berikut:
- Menyediakan lapisan jaringan dan konsensus dari blockchain sebagai platform di mana berbagai aplikasi terdesentralisasi dapat dibangun
- Pengembang hanya perlu khawatir tentang lapisan aplikasi blockchain, menghemat semua jam yang mereka akan sia-sia bekerja pada konsensus dan lapisan jaringan juga.
- Tendermint juga termasuk protokol konsensus Tendermint yang merupakan algoritma konsensus toleran kesalahan Bizantium yang digunakan dalam mesin Tendermint Core
Mari kita lihat bagaimana arsitektur Tendermint akan terlihat:
![](https://selembardigital.com/wp-content/uploads/2019/04/image6.jpg)
Seperti yang Anda lihat, aplikasi terhubung ke Tendermint Core melalui protokol soket yang disebut APCI atau Application Blockchain Interface.Karena Tendermint Core dan Aplikasi yang berjalan di atasnya berjalan dalam proses UNIX yang terpisah, mereka perlu memiliki metode untuk berbicara satu sama lain. ABCI membantu keduanya dalam komunikasi mereka.
Jadi, seperti apa desain ABCI? ABCI akan memiliki beberapa komponen desain yang berbeda :
Protokol Pesan # 1
- Pasang pesan permintaan dan respons
- Permintaan dibuat oleh konsensus sementara aplikasi menangani tanggapan
- Ini didefinisikan menggunakan protobuf
Server # 2 / Klien
- Mesin konsensus menjalankan klien
- Aplikasi menjalankan server
- Ada dua implementasi yang tepat: async raw bytes dan grpc
# 3 Protokol Blockchain
ABCI sangat berorientasi koneksi. Tiga koneksi untuk Tendermint Core adalah sebagai berikut:
- Koneksi Mempool: Ini memeriksa apakah transaksi harus disampaikan sebelum mereka berkomitmen. Itu hanya bisa menggunakan CheckTx
- Koneksi konsensus: Koneksi ini membantu dalam melakukan transaksi yang telah dilakukan. Urutan pesan adalah, untuk setiap blok, BeginBlock, [DeliverTx, …], EndBlock, Commit
- Query Connection: Membantu dalam menanyakan status aplikasi.Bagian ini hanya menggunakan Permintaan dan Info
Secara keseluruhan, tujuan utama Tendermint adalah untuk menyediakan pengembang dengan alat yang tidak hanya praktis tetapi juga memiliki throughput yang tinggi. Berikut adalah sifat-sifat Tendermint yang membuatnya begitu memikat:
Kompatibel dengan Publik 1 atau Blockchain Publik
Proyek yang berbeda memiliki kebutuhan yang berbeda pula. Beberapa proyek perlu memiliki sistem terbuka di mana siapa saja dapat bergabung dan berkontribusi, seperti Ethereum. Di sisi lain, kami memiliki organisasi seperti Industri Medis, yang tidak dapat mengekspos data mereka kepada semua orang. Bagi mereka, mereka memerlukan sesuatu seperti blockchain yang diizinkan.
Oke, jadi bagaimana Tendermint dapat membantu memenuhi kedua kebutuhan ini? Ingatlah bahwa Tendermint hanya menangani jaringan dan konsensus untuk blockchain. Jadi, ini membantu dalam:
- Propagasi transaksi antar node melalui protokol gosip
- Membantu validator menyetujui set transaksi yang akan ditambahkan ke blockchain.
Artinya adalah bahwa lapisan aplikasi bebas untuk didefinisikan dengan cara apa pun yang diinginkan pengembang untuk didefinisikan. Terserah pengembang untuk menentukan bagaimana set validator didefinisikan dalam ekosistem.
- Pengembang dapat mengizinkan aplikasi untuk memiliki sistem pemilihan yang memilih validator berdasarkan berapa banyak token asli yang validator ini miliki di dalam ekosistem..jadi Bukti kepemilikan dan buat blockchain publik
- Plus, para pengembang juga dapat membuat aplikasi yang mendefinisikan seperangkat validator pra-disetujui terbatas yang mengurus konsensus dan node baru yang bisa masuk ke ekosistem. Ini disebut bukti otoritas dan merupakan ciri khas dari blockchain yang diizinkan atau pribadi.
# 2 Performa Tinggi
Aplikasi yang dibuat melalui Tendermint Core dapat mengharapkan kinerja yang luar biasa. Tendermint Core memiliki waktu blok hanya 1 detik. Itu juga dapat menangani volume transaksi 10.000 transaksi per detik untuk transaksi 250byte, selama aplikasi mengizinkannya.
Finalitas # 3
Apa itu finalitas?
Secara sederhana, ini berarti bahwa sekali tindakan tertentu telah dilakukan, itu tidak dapat diambil kembali. Jadi, mari kita ambil contoh transaksi keuangan sederhana. Misalkan Anda membeli beberapa saham di perusahaan, hanya karena kesalahan dalam sistem mereka, Anda tidak boleh kehilangan kepemilikan saham Anda. Seperti yang dapat Anda bayangkan, finalitas sangat penting untuk sistem keuangan. Bayangkan melakukan transaksi jutaan dolar dan kemudian pada hari berikutnya, transaksi itu tidak berlaku lagi karena kesalahan.
Seperti yang telah kami sebutkan sebelumnya, Bitcoin dan Ethereum (sampai implementasi penuh Casper FFG) tidak benar-benar memiliki finalitas penyelesaian. Pada kesempatan kerja keras atau serangan 51%, transaksi memiliki peluang untuk dikembalikan.
Tendermint, di sisi lain, memberikan finalitas instan dalam 1 detik dari penyelesaian transaksi. Garpu tidak pernah dibuat dalam sistem, asalkan kurang dari 2/3 validator berbahaya. Segera setelah blok dibuat (yang dalam satu detik) pengguna dapat yakin bahwa transaksi mereka selesai.
# 4 Keamanan
Tendermint aman dan memaksa pesertanya untuk bertanggung jawab atas tindakan mereka juga. Seperti yang telah kami katakan sebelumnya, tendermint tidak akan pernah dapat bercabang selama kurang dari 2/3 validator berbahaya. Jika dalam beberapa kasus, blockchain melakukan fork, ada cara untuk menentukan liabilitas. Plus, konsensus Tendermint tidak hanya toleran terhadap kesalahan, tetapi juga toleran terhadap Bizantium secara optimal
# 5 Mudah Digunakan
Hal hebat lainnya tentang Tendermint adalah keramahan pengguna.Seperti yang telah kami sebutkan sebelumnya, mereka memiliki arsitektur modular di mana lapisan aplikasi dapat disesuaikan. Ini memungkinkan basis kode blockchain yang ada untuk dengan mudah dihubungkan ke Tendermint melalui ABCIs. Contoh sempurna dari ini adalah Etheremint yang pada dasarnya adalah plug basis kode mesin virtual Ethereum di atas Tendermint.
Ethermint bekerja persis seperti Ethereum tetapi juga mendapat manfaat dari semua fitur positif yang telah kami sebutkan di atas. Semua alat Ethereum seperti Metamask dan Truffle kompatibel dengan Ethermint.
Skalabilitas # 6
Implementasi proof-of-stake Tendermint jauh lebih scalable daripada algoritma konsensus proof-of-work tradisional. Alasan utama adalah bahwa sistem berbasis POW tidak dapat melakukan sharding.
Sharding pada dasarnya memisah-misahkan basis data dan membuat basis data atau pecahan yang lebih kecil yang kemudian secara paralel dieksekusi oleh node. Alasannya adalah bahwa kolam penambangan yang kuat dapat dengan mudah mengambil alih beling.
Tendermint akan memungkinkan penerapan sharding yang akan sangat meningkatkan skalabilitas.
Protokol Konsensus Tendermint
Ok, jadi mari kita lihat bagaimana protokol konsensus Tendermint bekerja. Apa sebenarnya protokol konsensus?
Inilah cara Wikipedia mendefinisikan pengambilan keputusan konsensus:
“Pengambilan keputusan konsensus adalah proses pengambilan keputusan kelompok di mana anggota kelompok berkembang, dan setuju untuk mendukung keputusan demi kepentingan terbaik dari keseluruhan.Konsensus dapat didefinisikan secara profesional sebagai resolusi yang dapat diterima, resolusi yang dapat didukung, meskipun bukan “favorit” setiap individu. “Konsensus” didefinisikan oleh Merriam-Webster sebagai, pertama, kesepakatan umum, dan kedua, solidaritas kelompok terhadap kepercayaan atau sentimen. “
Dalam istilah yang lebih sederhana, konsensus adalah cara dinamis untuk mencapai kesepakatan dalam suatu kelompok. Sementara pemungutan suara hanya menyetujui aturan mayoritas tanpa memikirkan perasaan dan kesejahteraan minoritas, di sisi lain, konsensus memastikan bahwa kesepakatan tercapai yang dapat menguntungkan seluruh kelompok secara keseluruhan. Dari sudut pandang yang lebih idealistis, Konsensus dapat digunakan oleh sekelompok orang yang tersebar di seluruh dunia untuk menciptakan masyarakat yang lebih setara dan adil. Metode dimana pengambilan keputusan konsensus dicapai disebut “mekanisme konsensus”. Jadi sekarang apa yang telah kita tentukan apa konsensus itu, mari kita lihat apa tujuan dari mekanisme konsensus itu (data diambil dari Wikipedia).
- Mencari Kesepakatan : Mekanisme konsensus harus menghasilkan sebanyak mungkin persetujuan dari kelompok.
- Kolaboratif : Semua peserta harus bertujuan untuk bekerja bersama untuk mencapai hasil yang mengutamakan kepentingan kelompok.
- Koperasi : Semua peserta tidak boleh mengutamakan kepentingan mereka sendiri dan bekerja sebagai tim lebih dari individu.
- Partisipatif : Mekanisme konsensus harus sedemikian rupa sehingga setiap orang harus berpartisipasi aktif dalam keseluruhan proses.
- Inklusif : Sebanyak mungkin orang harus dilibatkan dalam proses konsensus. Seharusnya tidak seperti pemungutan suara normal di mana orang tidak benar-benar merasa seperti pemungutan suara karena mereka percaya bahwa suara mereka tidak akan memiliki bobot dalam jangka panjang.
- Egaliter : Kelompok yang berusaha mencapai konsensus harus se-egaliter mungkin. Apa artinya ini pada dasarnya bahwa setiap suara memiliki bobot yang sama. Pilihan satu orang tidak bisa lebih penting daripada yang lain.
Sekarang kita telah mendefinisikan apa mekanisme konsensus itu dan apa yang harus mereka tuju, kita perlu memikirkan gajah lain di ruangan itu.
Mekanisme konsensus mana yang harus digunakan untuk entitas seperti blockchain. Sebelum Bitcoin, ada banyak iterasi sistem mata uang terdesentralisasi peer-to-peer yang gagal karena mereka tidak dapat menjawab masalah terbesar ketika mencapai konsensus. Masalah ini disebut “Masalah Jenderal Bizantium”.
Masalah Umum Bizantium
Untuk menyelesaikan apa pun dalam jaringan peer-to-peer, semua node harus dapat mencapai konsensus. Masalahnya adalah, agar sistem ini berfungsi, banyak ditekankan pada orang untuk bertindak demi kepentingan terbaik dari keseluruhan jaringan. Namun, seperti yang sudah kita ketahui, orang tidak benar-benar dapat dipercaya dalam hal bertindak secara etis. Di sinilah masalah Jenderal Bizantium masuk.
![](https://selembardigital.com/wp-content/uploads/2019/04/image7-768x342.png)
Bayangkan situasi ini. Ada tentara yang mengelilingi kastil yang dibentengi dengan baik. Satu-satunya cara mereka bisa menang adalah jika mereka menyerang kastil bersama sebagai satu kesatuan. Namun, mereka menghadapi masalah besar. Tentara jauh dari satu sama lain dan para jenderal tidak dapat benar-benar berkomunikasi dan mengoordinasikan serangan secara langsung dan beberapa jenderal korup. Satu-satunya hal yang dapat mereka lakukan adalah mengirim utusan dari umum ke umum. Namun, banyak hal yang bisa terjadi pada kurir. Para jenderal yang korup dapat mencegat utusan dan mengubah pesan. Jadi, apa yang bisa dilakukan para jenderal untuk memastikan bahwa mereka melancarkan serangan terkoordinasi tanpa bergantung pada etika masing-masing individu umum? Bagaimana mereka dapat mencapai konsensus dengan cara yang tidak dapat dipercaya untuk melakukan apa yang perlu dilakukan?
Itulah Masalah Jenderal Bizantium dan Satoshi Nakamoto memecahkan masalah ini dengan menggunakan mekanisme konsensus Proof-of-Work (POW).
Apa itu Bukti Kerja?
Mari kita periksa bagaimana POW bekerja dengan konteks pada contoh yang diberikan di atas. Misalkan seorang jenderal ingin berkomunikasi dengan jenderal lain. Menurut Anda bagaimana itu akan turun?
- “Nonce” ditambahkan ke pesan asli. Nonce adalah nilai heksadesimal acak.
- Pesan baru ini kemudian di-hash. Misalkan para jenderal sepakat sebelumnya bahwa mereka hanya akan mengirim pesan, yang ketika hash dimulai dengan 4 “0”. Jika hash tidak memberikan angka 0s yang diinginkan, angka tersebut diubah dan pesan di hash lagi. Proses ini terus berulang hingga hash yang diinginkan diterima.
- Seluruh proses ini sangat memakan waktu dan membutuhkan banyak daya komputasi.
- Sekarang ketika mereka akhirnya mendapatkan nilai hash, kurir diberi pesan asli dan nonce dan disuruh berkomunikasi dengan para jenderal lainnya. Jadi apa yang terjadi jika seseorang mencoba mencegat pesan? Nah, ingat efek longsoran dari fungsi hash? Pesan akan berubah secara drastis dan karena itu tidak akan mulai dengan jumlah “0” yang diperlukan lagi, orang akan menyadari bahwa pesan telah dirusak.
Jadi, untuk menempatkan POW dalam konteks penambangan kripto:
- Para penambang mencoba memecahkan teka-teki kriptografi untuk menambahkan blok ke blockchain.
- Proses ini membutuhkan banyak upaya dan kekuatan komputasi.
- Para penambang kemudian mempresentasikan blok mereka ke jaringan bitcoin.
- Jaringan kemudian memeriksa keaslian blok dengan hanya memeriksa hash, jika sudah benar maka akan ditambahkan ke blockchain.
Jadi, menemukan nonce dan hash yang diperlukan harus sulit, namun memeriksa apakah itu valid atau tidak harus sederhana. Itu adalah inti dari bukti kerja.
Sekarang, Anda mungkin bertanya-tanya, mengapa para penambang harus mengorbankan waktu dan sumber daya mereka untuk menambang bitcoin? Nah, ternyata mereka memiliki insentif ekonomi yang cukup sehat: Ketika Anda menemukan blok, Anda menerima hadiah blok 12,5 bitcoin. Hadiahnya dibagi dua setiap 210.000 blok.
Setelah Anda menambang blok, Anda menjadi diktator sementara blok tersebut. Anda adalah orang yang bertanggung jawab untuk menempatkan transaksi di dalam blok dan karenanya berhak atas biaya transaksi. Hanya ada sedikit jumlah bitcoin di luar sana, tepatnya 21 juta.Jadi, apa yang menghentikan para penambang ini dari menambang semua bitcoin sekaligus?
Ternyata penambangan bitcoin semakin sulit dari waktu ke waktu. Fitur ini disebut “kesulitan”, dan kesulitan penambangan terus meningkat saat Anda terus menambang. Inilah sebabnya mengapa sekarang ini sangat tidak mungkin bagi penambang solo untuk menambang Bitcoin hanya dengan menggunakan komputer mereka. Para penambang kini telah bergabung dan menciptakan “kolam penambangan” untuk menyatukan kekuatan komputasi mereka dan menambang sebagai sebuah kelompok.Kelompok-kelompok ini menggunakan ASIC (Sirkuit Terpadu Aplikasi-Khusus) yang khusus dibuat untuk menambang untuk menambang bitcoin.
Masalah dengan POW
Ada tiga masalah utama dengan algoritma Proof-of-Work. Kami telah membicarakan hal ini secara rinci sebelumnya, jadi kami hanya akan melakukan tinjauan umum.
- Pemborosan energi : Bitcoin memakan lebih banyak kekuatan daripada Irlandia dan Republik Slovakia. Pemborosan energi yang sangat besar ini adalah salah satu prinsip Bitcoin. Itu pemborosan demi pemborosan.
- Sentralisasi : Seperti yang telah kami katakan sebelumnya, Bitcoin menggunakan ASIC untuk menambang. Masalahnya adalah ASIC mahal, dan kumpulan dengan lebih banyak uang cenderung memiliki lebih banyak ASIC dan, akibatnya, lebih banyak kekuatan pertambangan. Karena itu, Bitcoin tidak terdesentralisasi seperti yang diinginkan.
- Skalabilitas : Arsitektur POW mencegah skalabilitas. Bitcoin mengelola hanya 7 transaksi per detik. Untuk sistem keuangan modern, itu tidak cukup memadai.
Masukkan Tendermint
Jadi, untuk mengatasi banyak masalah dengan sistem konsensus Proof-of-Work, Jae Kwon, seorang lulusan ilmu komputer dan rekayasa sistem, menciptakan Tendermint. Tendermint adalah protokol murni berbasis BFT, dibangun dalam lingkungan tanpa izin dengan Proof-of-Stake (PoS) sebagai mekanisme keamanan yang mendasarinya.
Karena kerumitannya, Tendermint membutuhkan waktu hampir 4 tahun untuk diselesaikan.
Jae Kwon dan CTO Tendermint Ethan Buchman terinspirasi oleh Raft dan PBFT untuk menciptakan sistem konsensus yang memuaskan masalah jenderal Bizantium. ini
“Dimodelkan sebagai protokol deterministik, hidup di bawah sinkronisasi parsial, yang mencapai throughput dalam batas-batas latensi jaringan dan proses individu sendiri.”
Baiklah, kita tahu bahwa ada banyak kata rumit untuk dilemparkan satu demi satu tetapi untuk memahami apa konsensus Tendermint itu dan mengapa itu dirancang seperti itu dirancang, Anda perlu memahami apa arti beberapa istilah rumit itu. Anda akan melihat bagaimana mereka semua terhubung satu sama lain seperti puzzle yang rumit.
# 1 Kemungkinan FLP
Imposibilitas FLP (Fischer Lynch Paterson) menyatakan bahwa algoritma konsensus hanya dapat memiliki 2 dari 3 properti berikut:
- Keamanan
- Pengakhiran atau kehidupan yang dijamin
- Toleransi kesalahan
![](https://selembardigital.com/wp-content/uploads/2019/04/image5-2-1.png)
Kredit Gambar: Sedang
Dengan kata lain, ketidakmungkinan FLP menyatakan itu
“Baik pemutusan dan perjanjian (live dan keselamatan) tidak dapat dipenuhi secara timebound dalam sistem terdistribusi asinkron, jika harus tahan terhadap setidaknya satu kesalahan (mereka membuktikan hasilnya untuk toleransi kesalahan umum, yang lebih lemah dari kesalahan Bizantium toleransi, karena hanya membutuhkan satu simpul gagal – jadi BFT termasuk dalam klaim ketidakmungkinan FLP). “
Jadi, pada dasarnya, sangat mustahil bagi WAN asinkron untuk mencapai konsensus karena tidak ada jumlah waktu tertentu yang diperlukan oleh node untuk menerima, memproses, dan menanggapi pesan. Ini jelas merupakan masalah besar karena sangat tidak praktis untuk jaringan besar node seperti Bitcoin untuk mengasumsikan bahwa mereka akan melakukan sinkronisasi.
Ok, jadi sinkronisitas akan menjadi masalah. Namun, para peneliti Dwork, Lynch dan Stockmeyers melemparkan garis hidup di sini dengan makalah mereka yang disebut ” Konsensus dalam Kehadiran Sinkronisasi Parsial.” Ini disebut konsensus DLS.
# 2 Konsensus DLS dan Sinkronisasi Parsial
Kertas DLS menyatakan bahwa antara sistem sinkron dan sistem asinkron, ada sistem khusus yang “sebagian sinkron”. Karena sistem sinkron parsial ini dapat memiliki batas waktu yang diberikan, ia akan dapat merancang protokol BFT yang layak.
Menurut DLS, tantangan sebenarnya dalam merancang protokol adalah memiliki protokol yang berfungsi dengan benar dalam sistem yang sebagian disinkronkan.
Jadi, mari kita lihat bagaimana protokol desentralisasi populer seperti Bitcoin dan Ethereum bekerja dalam hal itu.
Bitcoin memiliki batas atas yang diketahui sekitar 10 menit. Jadi, satu blok transaksi dihasilkan setiap 10 menit. Asumsi waktu ini dikenakan pada jaringan sehingga node mendapatkan 10 menit penuh untuk mengumpulkan informasi dan mengirimkannya melalui gosip.
![](https://selembardigital.com/wp-content/uploads/2019/04/image2-1-768x203.png)
Di sisi lain, kami memiliki Ethereum yang membuat asumsi sinkronisasi untuk blok dan jaringan mereka dengan menjaga waktu blok atas pada 15 detik. Dengan waktu blok yang rendah, mereka lebih scalable daripada Bitcoin, namun, mereka tidak terlalu efisien. Penambang Ethereum menghasilkan banyak blok anak yatim.
# 3 Kehidupan dan Pengakhiran
Pengakhiran adalah properti yang menyatakan bahwa setiap prosesor yang benar pada akhirnya harus membuat keputusan. Sebagian besar algoritma konsensus, yang kami miliki saat ini, bergantung pada model sinkron untuk keamanan dan pemutusannya. Mereka telah menetapkan batasan dan aturan yang dikenal demikian, jika mereka tidak tahan, rantai itu bercabang menjadi beberapa protokol
Tentu ada protokol konsensus yang bekerja di jaringan asinkron, namun dengan teorema ketidakmungkinan FLP, mereka tidak dapat bersifat deterministik. Yang membawa kita ke….
# 4 Proterminisme Deterministik vs. Nondeterministik
Biasanya, protokol konsensus murni asinkron tergantung pada anggota nondeterministik seperti nubuat yang melibatkan tingkat ketidakpastian dan kompleksitas yang tinggi.
Jadi Bagaimana Tendermint Menangani Semua Faktor ini?
Tendermint adalah konsensus BFT yang sebagian besar asinkron, deterministik, di mana validator memiliki kepentingan yang menunjukkan kekuatan suara mereka. Dalam segitiga ketidakmungkinan FLP, ia lebih suka toleransi kesalahan dan keamanan (konsistensi) daripada lives.
Tendermint secara konstan berayun antara periode sinkron dan asinkron.Ini berarti bahwa, meskipun bergantung pada asumsi waktu untuk membuat kemajuan, kecepatan kemajuan tersebut tidak tergantung pada parameter sistem tetapi sebaliknya tergantung pada kecepatan jaringan nyata.
Selain itu, Tendermint tidak pernah memalsukan asynchrony jika kurang dari 1/3 validatornya rusak / ceroboh. Ini adalah alasan mengapa Tendermint adalah Byzantine Fault Tolerant. Seperti yang telah kami katakan sebelumnya, Tendermint fokus pada keamanan di atas lives. Jadi, jika lebih dari sepertiga validator berbahaya, alih-alih percabangan jaringan, blockchain Tendermint hanya akan berhenti sementara sampai lebih dari 2/3 validator mencapai konsensus.
Tendermint juga sepenuhnya deterministik dan tidak ada keacakan dalam protokol. Para pemimpin dalam sistem semuanya dipilih dalam versi deterministik, melalui fungsi matematika yang ditentukan. Jadi, kita benar-benar dapat membuktikan secara matematis bahwa sistem berperilaku seperti seharusnya.
Tendermint – Bukti Sistem Pasak
Dalam sistem bukti kepemilikan (POS), kami memiliki orang-orang tertentu yang disebut “validator”. Validator ini mengunci pasak di dalam sistem. Setelah itu, mereka memiliki tanggung jawab untuk bertaruh pada blok yang menurut mereka akan ditambahkan di sebelah blockchain. Ketika blok ditambahkan, mereka mendapat hadiah yang sebanding dengan taruhan mereka.
Baiklah, jadi itulah cara kerja POS generik. Sekarang, mari kita lihat bagaimana cara kerja tendermint.
Pertama-tama mari kenali beberapa istilah yang akan kita gunakan:
- Jaringan terdiri dari banyak node. Node yang terhubung ke node tertentu disebut rekan-rekannya.
- Proses konsensus berlangsung pada ketinggian blok tertentu. H. Proses untuk menentukan blok berikutnya terdiri dari beberapa putaran.
- Babak terdiri dari banyak negara yaitu: NewHeight, Propose, Prevote, Precommit, dan Commit. Setiap negara disebut Roundstep atau hanya “langkah”.
- Suatu simpul dikatakan berada pada ketinggian, putaran, dan langkah tertentu, atau pada (H, R, S), atau pada (H, R) singkatnya untuk menghilangkan langkah tersebut.
- Untuk mencegah atau melakukan pra-komit sesuatu berarti menyiarkan suara yang berlaku atau melakukan pra-komit untuk sesuatu.
- Ketika sebuah blok mendapat> 2/3 dari yang berlaku di (H, R) maka itu disebut proof-of-lock-change atau PoLC.
Apa mesin Negara?
Mesin negara adalah mesin protokol Tendermint sehingga untuk berbicara. Diagram berikut memberi Anda ide yang bagus tentang seperti apa tampilannya:
![](https://selembardigital.com/wp-content/uploads/2019/04/image3-1-1-1.png)
Ok, jadi apa yang terjadi di sini? Ingat negara yang dilalui setiap babak?NewHeight, Propose, Prevote, Precommit, dan Commit. Dari jumlah tersebut, “Propose, Prevote, Precommit” terdiri dari satu putaran sementara dua lainnya adalah putaran khusus. Dalam skenario ideal, transisi negara akan bertindak seperti ini:
NewHeight -> (Propose -> Prevote -> Precommit) + -> Commit -> NewHeight ->…
Namun, itu tidak selalu berhasil. Beberapa putaran mungkin diperlukan sebelum blok dilakukan. Berikut ini adalah alasan mengapa beberapa putaran mungkin diperlukan:
- Pengusul yang ditunjuk mungkin tidak hadir.
- Blok yang diusulkan mungkin tidak valid.
- Blok tidak merambat tepat waktu.
- > 2/3 dari edisi tidak diterima tepat waktu oleh simpul validator.
- Meskipun +2/3 dari proteksi diperlukan untuk melanjutkan ke langkah berikutnya, setidaknya satu validator mungkin memberikan suara <nil> atau secara jahat memilih sesuatu yang lain.
- > 2/3 dari precommits untuk blok tidak diterima meskipun prevotes mungkin telah diterima.
Apa yang terjadi selama setiap negara?
Baiklah … jadi sekarang mari kita melihat ke masing-masing dan setiap negara dan melihat bagaimana semuanya berkumpul. Mengusulkan
Pada tahap ini, pengusul yang ditunjuk, yaitu simpul yang dipilih mengusulkan blok untuk ditambahkan di (H, R). Tahap ini berakhir dengan salah satu dari dua cara: Blok diusulkan dan yang memasuki tahap sebelumnya. Waktu pengusul untuk memilih blok berakhir pada saat memasuki tahapan sebelumnya.
Prevote
Sekarang kita sampai pada tahap awal. Pada tahap ini, setiap validator perlu membuat keputusan.
- Jika entah bagaimana, validator dikunci pada blok yang diusulkan dari beberapa babak sebelumnya, mereka secara otomatis keluar dan menyiarkan blok itu.
- Jika validator telah menerima proposal yang dapat diterima untuk putaran saat ini, maka mereka menandatangani dan menyiarkan blok untuk proposal yang diajukan.
- Namun, jika mereka menemukan sesuatu yang mencurigakan dengan proposal tersebut atau belum menerima proposal sama sekali (mis. Jika waktu pengusul habis), maka mereka menandatangani dengan “nihil” yang berlaku.
- Tidak ada penguncian blok selama tahap ini.
- Selama periode ini, semua node menyebarkan penyebaran ke seluruh sistem melalui protokol gosip.
Precommit
Sekarang kita memasuki langkah terakhir dari “putaran” yang disebut “precommit.” Setelah memasuki tahap ini, validator melakukan preommit terhadap keputusan mereka dengan menyiarkan acara mereka. Salah satu dari tiga skenario berikut dapat terjadi:
- Jika validator menerima> 2/3 dari yang berlaku untuk blok tertentu yang dapat diterima maka validator menandatangani dan menyiarkan prekomomanya ke blok. Mereka juga dikunci ke blok itu. Satu validator dapat mengunci hanya satu blok pada satu waktu.
- Namun, jika validator menerima lebih dari 2/3 dari NUL maka mereka membuka kunci dan memberi prakarsa beralih ke “NIL”.
- Akhirnya, jika mereka belum menerima mayoritas super 2/3 sama sekali maka mereka tidak menandatangani atau mengunci apa pun.
Sepanjang tahap ini, node terus menerus bergosip tentang precommits di seluruh jaringan. Pada akhirnya, jika blok yang diusulkan mendapat lebih dari 2/3 precommits maka kita bergerak menuju langkah “Commit”. Namun, jika mereka tidak mencapai tahap itu maka mereka memasuki tahap “Melamar” di babak berikutnya.
Melakukan
Negara Komit bukan bagian dari “putaran”. Bersama dengan NewHeight, ini adalah salah satu dari dua putaran spesial. Selama keadaan komit, dua kondisi paralel diperiksa untuk melihat apakah mereka dipenuhi atau tidak.
- Pertama, validator harus menerima blok yang sudah ditentukan sebelumnya oleh jaringan. Setelah itu selesai, mereka menandatangani dan menyiarkan komitmen mereka.
- Kedua, mereka harus menunggu sampai mereka menerima setidaknya 2/3 prekomentar untuk blok. Setelah ini selesai, blok akan dikomit ke jaringan.
NewHeight
Cukup tambahkan tinggi blok dengan 1 untuk menunjukkan bahwa blok telah ditambahkan.
Memilih Validator
Seperti yang mungkin sudah Anda pahami sekarang, memilih set validator awal sangat penting agar Cosmos berfungsi. Jadi, bagaimana tepatnya mereka akan dipilih? Tidak seperti Bitcoin di mana setiap orang bisa menjadi penambang kapan saja, hanya ada begitu banyak validator yang dapat diterima sistem Tendermint. Karena validator secara individual perlu melakukan banyak fungsi, meningkatkan jumlah validator hanya akan menyebabkan penundaan. Inilah sebabnya mengapa Cosmos memutuskan untuk memilih 100 validator selama hari Genesis (yaitu hari penggalangan dana.) Jumlah validator akan meningkat sebesar 13% setiap tahun hingga 10 tahun ketika akan mencapai 300.
![](https://selembardigital.com/wp-content/uploads/2019/04/image8.png)
Jadi, bagaimana dengan hasil?
Seperti yang dinyatakan oleh whitepaper kosmos: “Tendermint memberikan kinerja yang luar biasa.Dalam benchmark 64 node yang didistribusikan di 7 pusat data di 5 benua, pada instance cloud komoditas, konsensus Tendermint dapat memproses ribuan transaksi per detik, dengan latensi komit dalam urutan satu hingga dua detik. Khususnya, kinerja lebih dari seribu transaksi per detik dipertahankan bahkan dalam kondisi permusuhan yang keras, dengan validator menabrak atau menyiarkan suara yang dibuat dengan cara jahat. ” Grafik di bawah mendukung klaim yang dibuat di atas:
Casper vs Tendermint
Bersama Tendermint, Casper adalah implementasi protokol POS yang populer.
Sementara Tendermint fokus pada Keselamatan, fokus Casper adalah liveness, yang membuat ketidakmungkinan FLP. Jadi, apa yang terjadi di Casper selama pertigaan?
Casper FFG akan memungkinkan blockchain untuk terus dibangun, sementara juga memiliki properti bahwa semua node akan menyadari bahwa rantai ini belum selesai. Jadi, blockchain dapat tetap tersedia tanpa finalitas apa pun. Validator rantai memiliki pilihan untuk pindah ke rantai bercabang. Jika lebih dari 2/3 dari validator memilih, maka mereka berganti rantai.
Plus, Casper memiliki mekanisme pemotongan terkenal. Segala jenis serangan berbahaya akan menyebabkan validator mendapatkan saham mereka langsung dipotong.
Kesimpulan
Jadi, begitulah. Kami berharap bahwa kami memberi Anda sebanyak mungkin informasi berharga. Apa pendapat Anda tentang Tendermint dan potensinya? Suarakan di bagian komentar di bawah!