Cosmos: Jaringan Buku Besar Terdistribusi

Por Jae Kwon and Ethan Buchman · 2016

Introdução

O sucesso combinado do ecossistema de código aberto, compartilhamento descentralizado de yle e criptomoedas públicas inspirou um entendimento de que protocolos descentralizados de internet pode ser usado para melhorar radicalmente a infra-estrutura socioeconómica. Vimos aplicativos blockchain especializados como Bitcoin [1] (um criptomoeda), Zerocash [2] (uma criptomoeda para privacidade) e plataformas smart contract generalizadas, como Ethereum [3], com inúmeras aplicações distribuídas para o Etherium Virtual Máquina (EVM), como Augur (um mercado de previsão) e TheDAO [4] (um clube de investimento). Até o momento, entretanto, esses blockchains sofreram com uma série de de inconvenientes, incluindo a sua grave ineficiência energética, fraca ou desempenho limitado e mecanismos de governação imaturos. Propostas para dimensionar a taxa de transferência de transações de Bitcoin, como Segregated-Witness [5] e BitcoinNG [6], são de escala vertical soluções que permanecem limitadas pela capacidade de um único máquina, a fim de garantir a propriedade de completa auditabilidade. A Lightning Network [7] pode ajudar a dimensionar a transação Bitcoin

volume deixando algumas transações completamente fora do razão, e é adequado para micropagamentos e preservação de privacidade trilhos de pagamento, mas pode não ser adequado para pagamentos mais generalizados necessidades de escala. Uma solução ideal é aquela que permite que vários blockchains paralelos sejam interoperar, mantendo suas propriedades de segurança. Isso tem comprovadamente difícil, se não impossível, com proof-of-work. Mesclado a mineração, por exemplo, permite que o trabalho realizado para proteger um pai cadeia a ser reutilizada em uma cadeia filha, mas as transações ainda devem ser validado, em ordem, por cada nó, e um blockchain extraído por mesclagem é vulnerável a ataques se a maioria do poder hashing no o pai não está minerando ativamente o filho. Uma revisão acadêmica de arquiteturas de rede alternativas blockchain são fornecidas para contexto adicional e fornecemos resumos de outras propostas e suas desvantagens em trabalhos relacionados. Aqui apresentamos Cosmos, uma nova arquitetura de rede blockchain que resolve todos esses problemas. Cosmos é uma rede de muitos blockchains independentes, chamados zonas. As zonas são alimentadas por Tendermint Core [8], que fornece um alto desempenho, mecanismo de consenso consistente e seguro do tipo PBFT, onde garantias estritas de responsabilização prevalecem sobre o comportamento de maliciosos atores. O algoritmo de consenso BFT do Tendermint Core é adequado para dimensionar proof-of-stake blockchains públicos. A primeira zona em Cosmos é chamada de Hub Cosmos. O Cosmos Hub é uma criptomoeda proof-of-stake multiativos com um simples mecanismo de governança que permite à rede se adaptar e atualizar. Além disso, o Hub Cosmos pode ser estendido por conectando outras zonas. O hub e as zonas da rede Cosmos se comunicam com entre si por meio de um protocolo de comunicação inter-blockchain (IBC), uma espécie de UDP ou TCP virtual para blockchains. Os tokens podem ser transferido de uma zona para outra com segurança e rapidezsem a necessidade de liquidez cambial entre zonas. Em vez disso, todas as transferências entre zonas token passam pelo hub Cosmos, que mantém registro da quantidade total de tokens mantidos por cada zona. O hub isola cada zona da falha de outras zonas. Porque qualquer pessoa pode conectar uma nova zona ao hub Cosmos, as zonas permitem para compatibilidade futura com novas inovações blockchain. Nesta seção descrevemos o protocolo de consenso Tendermint e a interface usada para construir aplicativos com ele. Para mais detalhes, consulte o apêndice. Nos algoritmos clássicos de tolerância a falhas bizantinas (BFT), cada nó tem o mesmo peso. No Tendermint, os nós têm um valor não negativo quantidade de poder de voto e nós que têm votação positiva potência são chamados de validators. Os validadores participam do protocolo de consenso transmitindo assinaturas criptográficas, ou votos, para chegar a acordo sobre o próximo bloco. Os poderes de voto dos validadores são determinados na génese ou são alterado deterministicamente pelo blockchain, dependendo do aplicação. Por exemplo, em um aplicativo proof-of-stake como no Hub Cosmos, o poder de voto poderá ser determinado pelo valor de staking tokens garantidos como garantia. NOTA: Frações como ⅔ e ⅓ referem-se a frações do total de votos potência, nunca o número total de validators, a menos que todos os validators têm peso igual. >⅔ significa “mais de ⅔”, ≥⅓ significa “pelo menos ⅓”. Tendermint é um protocolo de consenso BFT parcialmente síncrono derivado do algoritmo de consenso DLS [20]. Tendermint é

notável por sua simplicidade, desempenho e responsabilidade de garfo. O protocolo requer um conjunto conhecido yxed de validators, onde cada validator é identificado pela sua chave pública. Os validadores tentam chegar a um consenso sobre um bloco de cada vez, onde um bloco é uma lista de transações. A votação para o consenso sobre um bloco prossegue em rodadas. Cada rodada tem um líder, ou proponente, que propõe um bloqueio. Os validators então votam, em etapas, se aceitar o bloco proposto ou passar para a próxima rodada. O proponente para uma rodada é escolhido de forma determinística a partir do ordenado lista de validators, proporcionalmente ao seu poder de voto. Os detalhes completos do protocolo estão descritos aqui. A segurança do Tendermint deriva do uso de recursos bizantinos ideais tolerância a falhas por meio de votação por supermaioria (>⅔) e bloqueio mecanismo. Juntos, eles garantem que: ≥⅓ o poder de voto deve ser bizantino para causar uma violação do segurança, onde mais de dois valores estão comprometidos. se algum conjunto de validators conseguir violar a segurança, ou mesmo tentativas de fazê-lo, eles podem ser identificados pelo protocolo. Isto inclui votação para bloqueios de conspiração e transmissão votos injustificados. Apesar das suas fortes garantias, o Tendermint oferece resultados excepcionais desempenho. Em benchmarks de 64 nós distribuídos em 7 datacenters nos 5 continentes, em instâncias de nuvem de commodities, O consenso do Tendermint pode processar milhares de transações por segundo, com latências de commit da ordem de um a dois segundos. Notavelmente, o desempenho de bem mais de mil transações por segundo é mantido mesmo em condições adversas adversas, com validator está travando ou transmitindo votos criados com códigos maliciosos. Veja a figura abaixo para obter detalhes.

Tendermint throughput vs block size benchmarked across 64 nodes in 7 datacenters on 5 continents

Um grande benefício do algoritmo de consenso do Tendermint é simplificado leve segurança do cliente, tornando-o um candidato ideal para dispositivos móveis e casos de uso de internet das coisas. Embora um cliente light Bitcoin deva sincronizar cadeias de cabeçalhos de bloco e encontre aquele com maior prova de trabalho, os clientes Tendermint light precisam apenas acompanhar as mudanças para o conjunto validator e, em seguida, verifique os >⅔ PreCommits no bloco mais recente para determinar o estado mais recente. Provas de cliente leves sucintas também permitem inter-blockchain comunicação. Tendermint possui medidas de proteção para prevenir certos ataques notáveis, como gastos duplos de longo alcance e nada em jogo e censura. Eles são discutidos mais detalhadamente no apêndice.O algoritmo de consenso Tendermint é implementado em um programa chamado Tendermint Core. Tendermint Core é um “mecanismo de consenso” independente de aplicação que pode transformar qualquer aplicativo blackbox determinístico em um replicado distribuídamente blockchain. Tendermint Core se conecta a aplicativos blockchain por meio da Interface Blockchain do Aplicativo (ABCI) [17]. Assim, ABCI permite que aplicações blockchain sejam programadas em qualquer linguagem, não apenas a linguagem de programação que o consenso motor está escrito. Além disso, ABCI torna possível facilmente troque a camada de consenso de qualquer pilha blockchain existente. Fazemos uma analogia com a conhecida criptomoeda Bitcoin. Bitcoin é uma criptomoeda blockchain onde cada nó mantém um banco de dados de saída de transação não gasta (UTXO) totalmente auditado. Se queria-se criar um sistema semelhante a Bitcoin em cima de ABCI, O Tendermint Core seria responsável por Compartilhando blocos e transações entre nós Estabelecer uma ordem canônica/imutável de transações (o blockchain) Enquanto isso, o aplicativo ABCI seria responsável por Mantendo o banco de dados UTXO Validando assinaturas criptográficas de transações Evitar que as transações gastem fundos inexistentes Permitindo que clientes consultem o banco de dados UTXO Tendermint é capaz de decompor o design blockchain por oferecendo uma API muito simples entre o processo de inscrição e processo de consenso.

Perkenalan

Keberhasilan gabungan dari ekosistem sumber terbuka, pembagian yle yang terdesentralisasi, dan cryptocurrency publik memilikinya mengilhami pemahaman bahwa protokol internet terdesentralisasi dapat digunakan untuk secara radikal memperbaiki infrastruktur sosio-ekonomi. Kami telah melihat aplikasi blockchain khusus seperti Bitcoin [1] (a cryptocurrency), Zerocash [2] (mata uang kripto untuk privasi), dan platform smart contract yang digeneralisasi seperti Ethereum [3], dengan aplikasi terdistribusi yang tak terhitung jumlahnya untuk Etherium Virtual Mesin (EVM) seperti Augur (pasar prediksi) dan TheDAO [4] (klub investasi). Namun hingga saat ini, blockchain ini telah menderita sejumlah penyakit kelemahannya, termasuk inefisiensi energi yang besar, buruk atau kinerja yang terbatas, dan mekanisme tata kelola yang belum matang. Proposal untuk menskalakan throughput transaksi Bitcoin, seperti Saksi Terpisah [5] dan BitcoinNG [6], merupakan penskalaan vertikal solusi yang tetap dibatasi oleh kapasitas fisik tunggal mesin, untuk memastikan properti kemampuan audit yang lengkap. Lightning Network [7] dapat membantu menskalakan transaksi Bitcoin

volume dengan meninggalkan beberapa transaksi dari buku besar sepenuhnya, dan sangat cocok untuk pembayaran mikro dan menjaga privasi jalur pembayaran, tetapi mungkin tidak cocok untuk yang lebih umum kebutuhan penskalaan. Solusi ideal adalah solusi yang memungkinkan beberapa blockchain paralel untuk saling beroperasi dengan tetap mempertahankan properti keamanannya. Ini sudah terbukti sulit, bahkan tidak mungkin, dengan proof-of-work. Digabung pertambangan, misalnya, memungkinkan pekerjaan dilakukan untuk mengamankan orang tua rantai untuk digunakan kembali pada rantai anak, tetapi transaksi tetap harus dilakukan divalidasi, secara berurutan, oleh setiap node, dan blockchain yang ditambang gabungan rentan terhadap serangan jika mayoritas hash berkuasa di orang tua tidak aktif menggabungkan penambangan anak. Tinjauan akademis arsitektur jaringan blockchain alternatif disediakan konteks tambahan, dan kami memberikan ringkasan proposal lainnya dan kekurangannya dalam Pekerjaan Terkait. Di sini kami menyajikan Cosmos, arsitektur jaringan blockchain baru yang mengatasi semua masalah ini. Cosmos adalah jaringan yang terdiri dari banyak jaringan blockchains independen, disebut zona. Zona ini didukung oleh Tendermint Core [8], yang memberikan kinerja tinggi, mesin konsensus seperti PBFT yang konsisten dan aman, dengan jaminan akuntabilitas forka yang ketat terhadap perilaku pelaku jahat aktor. Algoritme konsensus BFT Tendermint Core sangat cocok untuk menskalakan proof-of-stake blockchains publik. Zona pertama di Cosmos disebut Hub Cosmos. Cosmos Hub adalah cryptocurrency multi-aset proof-of-stake dengan sederhana mekanisme tata kelola yang memungkinkan jaringan untuk beradaptasi dan meningkatkan. Selain itu, Hub Cosmos dapat diperluas sebesar menghubungkan zona lain. Hub dan zona jaringan Cosmos berkomunikasi satu sama lain melalui protokol komunikasi antar-blockchain (IBC), semacam UDP atau TCP virtual untuk blockchains. Token bisa saja ditransfer dari satu zona ke zona lain dengan aman dan cepattanpa memerlukan likuiditas pertukaran antar zona. Sebaliknya, semua transfer token antar zona melalui Hub Cosmos, yang melacak jumlah total token yang dimiliki oleh setiap zona. Itu hub mengisolasi setiap zona dari kegagalan zona lainnya. Karena siapa pun dapat menghubungkan zona baru ke Hub Cosmos, zona mengizinkan untuk kompatibilitas di masa depan dengan inovasi blockchain baru. Pada bagian ini kami menjelaskan protokol konsensus Tendermint dan antarmuka yang digunakan untuk membangun aplikasi dengannya. Untuk lebih lanjut selengkapnya lihat lampiran. Dalam algoritma toleransi kesalahan Bizantium klasik (BFT), setiap node mempunyai berat yang sama. Di Tendermint, node memiliki non-negatif jumlah hak suara, dan node yang memiliki suara positif kekuatan disebut validators. Validator berpartisipasi dalam protokol konsensus dengan menyiarkan tanda tangan kriptografi, atau suara, untuk menyetujui blok berikutnya. Hak suara validator ditentukan sejak awal, atau memang demikian diubah secara deterministik oleh blockchain, bergantung pada aplikasi. Misalnya pada aplikasi proof-of-stake seperti Hub Cosmos, hak suara dapat ditentukan oleh sejumlah staking tokens diikatkan sebagai jaminan. CATATAN: Pecahan seperti ⅔ dan ⅓ mengacu pada pecahan dari total suara daya, tidak pernah jumlah total validator, kecuali semua validator mempunyai bobot yang sama. >⅔ artinya “lebih dari ⅔”, ≥⅓ artinya “setidaknya ⅓”. Tendermint adalah protokol konsensus BFT yang sinkron sebagian berasal dari algoritma konsensus DLS [20]. Tendermint adalah

terkenal karena kesederhanaan, kinerja, dan akuntabilitas forknya. Protokol ini memerlukan kumpulan validator yang diketahui, dimana masing-masing validator diidentifikasi oleh kunci publiknya. Validator mencoba untuk mencapai konsensus mengenai satu blok pada satu waktu, di mana satu blok adalah sebuah daftar transaksi. Pemungutan suara untuk konsensus mengenai suatu blok sedang berlangsung putaran. Setiap putaran memiliki pemimpin putaran, atau pengusul, yang mengusulkan sebuah blok. validators kemudian melakukan pemungutan suara, secara bertahap, untuk menentukan apakah akan melakukan hal tersebut atau tidak untuk menerima blok yang diusulkan atau melanjutkan ke babak berikutnya. Itu pengusul putaran dipilih secara deterministik dari yang dipesan daftar validators, sebanding dengan hak suara mereka. Rincian lengkap protokol dijelaskan di sini. Keamanan Tendermint berasal dari penggunaan Bizantium yang optimal toleransi kesalahan melalui pemungutan suara super-mayoritas (>⅔) dan penguncian mekanisme. Bersama-sama, mereka memastikan bahwa: ≥⅓ hak suara harus dimiliki Bizantium agar dapat menyebabkan pelanggaran keselamatan, di mana lebih dari dua nilai berkomitmen. jika ada kumpulan validator yang berhasil melanggar keselamatan, atau bahkan upaya untuk melakukannya, mereka dapat diidentifikasi oleh protokol. Ini mencakup pemungutan suara untuk blok konziktif dan penyiaran suara yang tidak adil. Meski jaminannya kuat, Tendermint memberikan yang luar biasa kinerja. Dalam benchmark dari 64 node yang didistribusikan di 7 pusat data di 5 benua, pada instance cloud komoditas, Konsensus Tendermint dapat memproses ribuan transaksi per kedua, dengan latensi penerapan dalam urutan satu hingga dua detik. Khususnya, kinerja lebih dari seribu transaksi per yang kedua dipertahankan bahkan dalam kondisi permusuhan yang keras, dengan validators mogok atau menyiarkan suara perusak yang jahat. Lihat gambar di bawah untuk detailnya.

Tendermint throughput vs block size benchmarked across 64 nodes in 7 datacenters on 5 continents

Manfaat utama dari algoritma konsensus Tendermint disederhanakan keamanan klien yang ringan, menjadikannya kandidat ideal untuk seluler dan kasus penggunaan internet-of-thing. Sedangkan klien ringan Bitcoin harus melakukan sinkronisasi rantai header blok dan temukan yang memiliki bukti paling banyak berhasil, klien ringan Tendermint hanya perlu mengikuti perubahan ke set validator, lalu verifikasi >⅔ PreCommits di blok terbaru untuk menentukan keadaan terkini. Bukti klien ringan yang ringkas juga memungkinkan antar-blockchain komunikasi. Tendermint memiliki tindakan perlindungan untuk mencegah hal tertentu serangan penting, seperti pembelanjaan ganda jangka panjang tanpa mempertaruhkan apa pun dan sensor. Hal ini dibahas lebih lengkap dalam lampiran.Algoritma konsensus Tendermint diimplementasikan dalam a program yang disebut Tendermint Core. Tendermint Inti adalah “mesin konsensus” agnostik aplikasi yang dapat mengubah apa pun aplikasi blackbox deterministik menjadi direplikasi secara terdistribusi blockchain. Tendermint Core terhubung ke blockchain aplikasi melalui Antarmuka Aplikasi Blockchain (ABCI) [17]. Jadi, ABCI memungkinkan blockchain aplikasi diprogram di mana saja bahasa, bukan hanya bahasa pemrograman yang disepakati mesin ditulis. Selain itu, ABCI memungkinkannya dengan mudah tukar lapisan konsensus dari tumpukan blockchain yang ada. Kami menggambar analogi dengan cryptocurrency terkenal Bitcoin. Bitcoin adalah mata uang kripto blockchain yang dikelola oleh setiap node database Hasil Transaksi Tak Terpakai (UTXO) yang telah diaudit sepenuhnya. Jika seseorang ingin membuat sistem seperti Bitcoin di atas ABCI, Tendermint Core akan bertanggung jawab Berbagi blok dan transaksi antar node Menetapkan tatanan transaksi yang kanonik/tidak dapat diubah (the blockchain) Sementara itu, aplikasi ABCI akan bertanggung jawab Memelihara basis data UTXO Memvalidasi tanda tangan kriptografi transaksi Mencegah transaksi mengeluarkan dana yang tidak ada Mengizinkan klien menanyakan database UTXO Tendermint mampu menguraikan desain blockchain dengan menawarkan API yang sangat sederhana antara proses aplikasi dan proses konsensus.

Cosmos Arquitetura

Cosmos é uma rede de blockchains paralelos independentes que são cada um alimentado por algoritmos de consenso clássicos BFT como Menta 1. O primeiro blockchain nesta rede será o Hub Cosmos. O Cosmos O hub se conecta a muitos outros blockchains (ou zonas) por meio de um novo protocolo de comunicação inter-blockchain. O Centro Cosmos rastreia vários tipos token e mantém registro do total número de tokens em cada zona conectada. Os tokens podem ser transferido de uma zona para outra com segurança e rapidez sem a necessidade de troca de líquidos entre zonas, porque todos as transferências de moedas entre zonas passam pelo Hub Cosmos. Esta arquitetura resolve muitos problemas que o espaço blockchain enfrenta hoje, como interoperabilidade de aplicativos, escalabilidade e capacidade de atualização perfeita. Por exemplo, zonas derivadas de Bitcoind, Go-Ethereum, CryptoNote, ZCash ou qualquer sistema blockchain pode ser conectado ao hub Cosmos. Essas zonas permitem que Cosmos escalar indefinidamente para atender à demanda global de transações. As zonas também são um ótimo ano para uma troca distribuída, que será suportada como bem. Cosmos não é apenas um único razão distribuído, e o Cosmos Hub não é um jardim murado ou o centro do seu universo. Nós somos projetando um protocolo para uma rede aberta de livros distribuídos que pode servir como uma nova base para futuros sistemas financeiros, baseado em princípios de criptografia, economia sólida, consenso teoria, transparência e responsabilidade. O Cosmos Hub é o primeiro blockchain público no Cosmos Rede, alimentada pelo algoritmo de consenso BFT do Tendermint. O O projeto de código aberto Tendermint nasceu em 2014 para abordar o velocidade, escalabilidade e questões ambientais do algoritmo de consenso de prova de trabalho de Bitcoin. Usando e melhorando os comprovados

BFT algoritmos desenvolvidos no MIT em 1988 [20], o Tendermint a equipe foi a primeira a demonstrar conceitualmente um proof-of-stake criptomoeda que resolve o problema do nada em jogo sofrido pelas criptomoedas proof-of-stake de primeira geração, como como NXT e BitShares1.0. Hoje, praticamente todas as carteiras móveis Bitcoin usam servidores confiáveis para fornecer-lhes a verificação da transação. Isso ocorre porque a prova de trabalho exige a espera de muitas confirmações antes de um transação pode ser considerada irreversivelmente comprometida. Ataques de gasto duplo já foram demonstrados em serviços como CoinBase. Ao contrário de outros sistemas de consenso blockchain, o Tendermint oferece verificação de pagamento de cliente móvel instantânea e comprovadamente segura. Como o Tendermint foi projetado para nunca bifurcar, dispositivos móveis carteiras podem receber confirmação instantânea da transação, o que torna pagamentos práticos e confiáveis são uma realidade em smartphones. Isto tem ramificações significativas para aplicações da Internet das Coisas, como bem. Os validadores em Cosmos têm uma função semelhante aos mineradores de Bitcoin, mas em vez disso, use assinaturas criptográficas para votar. Validadores são máquinas seguras e dedicadas que são responsáveis por cometer blocos. Não-validators podem delegar seus staking tokens (chamados “átomos”) para qualquer validator para ganhar uma parte das taxas de bloco e átomo recompensas, mas correm o risco de serem punidos (cortados) se o o delegado validator é hackeado ou viola o protocolo. O comprovado garantias de segurança do consenso Tendermint BFT, e a garantia depósito das partes interessadas –validators e delegantes – fornecer segurança comprovável e quantificável para nós e clientes leves. Os livros-razão públicos distribuídos devem ter uma constituição e um sistema de governança. Bitcoin depende da Fundação Bitcoin emineração para coordenar atualizações, mas este é um processo lento. Ethereum dividido em ETH e ETC após hard fork para endereçar O hackDAO, em grande parte porque não havia contrato social anterior nem mecanismo para tomar tais decisões. Validadores e delegadores no Hub Cosmos podem votar propostas que podem alterar parâmetros predefinidos do sistema automaticamente (como o limite de gás do bloco), coordenar atualizações, como bem como votar em emendas à constituição legível por humanos que regem as políticas do Hub Cosmos. A constituição permite a coesão entre as partes interessadas em questões como roubo e bugs (como o incidente TheDAO), permitindo uma abordagem mais rápida e resolução mais limpa. Cada zona também pode ter sua própria constituição e governança mecanismo também. Por exemplo, o Hub Cosmos poderia ter um constituição que impõe a imutabilidade no Centro (sem retrocessos, exceto para bugs da implementação do nó Hub Cosmos), enquanto cada zona pode definir suas próprias políticas em relação a reversões. Ao permitir a interoperabilidade entre diferentes zonas políticas, o A rede Cosmos oferece aos seus usuários total liberdade e potencial para experimentação sem permissão. Aqui descrevemos um novo modelo de descentralização e escalabilidade. Cosmos é uma rede de muitos blockchains alimentada por Menta macia. Embora as propostas existentes visem criar um “único blockchain” com ordem de transação global total, Cosmos permite que muitos blockchains sejam executados simultaneamente entre si mantendo a interoperabilidade. Basicamente, o Hub Cosmos gerencia muitos blockchains chamadas “zonas” (às vezes chamadas de “fragmentos”, em referência à técnica de escalonamento de banco de dados conhecida como “sharding”).

Um fluxo constante de commits recentes de blocos de zonas postadas em o Hub permite que o Hub acompanhe o estado de cada zona. Da mesma forma, cada zona acompanha o estado do Hub (mas as zonas não se acompanham, exceto indiretamente através do Central). Pacotes de informações são então comunicados de um zona para outra, afixando provas Merkle como evidência de que o informações foram enviadas e recebidas. Este mecanismo é denominado comunicação inter-blockchain ou IBC para abreviar. Qualquer uma das zonas pode ser hubs para formar um gráfico acíclico, mas por uma questão de clareza, descreveremos apenas o simples configuração onde há apenas um hub e muitos não-hub zonas. O Cosmos Hub é um blockchain que hospeda um multiativo razão distribuída, onde tokens podem ser mantidos por usuários individuais ou pelas próprias zonas. Esses tokens podem ser movidos de uma zona para outro em um pacote IBC especial chamado "pacote de moedas". O centro é responsável por preservar a invariância global do total quantidade de cada token nas zonas. IBC pacote de moedas as transações devem ser confirmadas pelo remetente, hub e destinatário blockchains.Como o Hub Cosmos atua como o razão central para todo o sistema, a segurança do Hub é de suma importância. Enquanto cada zona pode ser um Tendermint blockchain que é protegido por como poucos como 4 (ou até menos se o consenso BFT não for necessário), o Hub deve ser protegido por um conjunto globalmente descentralizado de validators que pode suportar os cenários de ataque mais severos, como um partição de rede continental ou um ataque patrocinado por um estado-nação. Uma zona Cosmos é uma blockchain independente que troca IBC mensagens com o Hub. Da perspectiva do Hub, uma zona é um conta com múltiplas assinaturas e associação dinâmica de múltiplos ativos que pode enviar e receber tokens usando pacotes IBC. Como um conta de criptomoeda, uma zona não pode transferir mais tokens do que tem, mas pode receber tokens de outras pessoas que os possuem. Uma zona pode ser designado como uma "fonte" de um ou mais tipos token, concedendo-lhe o poder de injetar aquele suprimento token. Átomos do Hub Cosmos podem ser piquetados por validators de uma zona conectado ao Hub. Embora os ataques de gasto duplo nessas zonas resultaria no corte de átomos com a responsabilidade do Tendermint, uma zona onde> ⅔ do poder de voto são Byzantine pode cometer estado inválido. O hub Cosmos não verificar ou executar transações comprometidas em outras zonas, por isso é é responsabilidade dos usuários enviar tokens para zonas em que confiam. No futuro, o sistema de governança do Hub Cosmos poderá passar pelo Hub propostas de melhoria que levam em conta as falhas da zona. Para por exemplo, transferências de saída token de algumas (ou todas) zonas podem ser estrangulado para permitir a interrupção de emergência das zonas (uma interrupção temporária das transferências token) quando um ataque é detectado. Agora veremos como o Hub e as zonas se comunicam entre si outro. Por exemplo, se houver três blockchains, “Zona1”, “Zona2”,

Cosmos hub and zones architecture showing the Cosmos Hub connecting multiple independent zones via IBC

e “Hub”, e desejamos que “Zone1” produza um pacote destinado para “Zona2” passando por “Hub”. Para mover um pacote de um blockchain para outro, uma prova é postada na cadeia de recebimento. A prova afirma que a cadeia emissora publicou um pacote para o suposto destino. Para que a cadeia receptora verifique esta prova, é deve ser capaz de acompanhar os cabeçalhos de bloco do remetente. Isto O mecanismo é semelhante ao usado pelas cadeias laterais, o que requer duas cadeias interagindo para estarem cientes uma da outra através de um fluxo bidirecional de datagramas de prova de existência (transações). O protocolo IBC pode naturalmente ser definido usando dois tipos de transações: uma transação  IBCBlockCommitTx , que permite um blockchain para provar a qualquer observador seu bloco mais recente - hash, e uma transação  IBCPacketTx , que permite que um blockchain provar a qualquer observador que o pacote fornecido foi de fato publicado pela aplicação do remetente, através de uma prova de Merkle para o recente bloco-hash. Ao dividir a mecânica IBC em duas transações separadas, permitir que o mecanismo de mercado de taxas nativo da cadeia de recebimento determinar quais pacotes serão confirmados (ou seja, reconhecidos), enquanto permitindo total liberdade na cadeia de envio sobre como muitos pacotes de saída são permitidos. No exemplo acima, para atualizar o bloco-hash da "Zona1" no “Hub” (ou de “Hub” na “Zona2”), um  IBCBlockCommitTxa transação deve ser postada no “Hub” com o bloco-hash de “Zona1” (ou em “Zona2” com o bloco-hash de “Hub”). Consulte IBCBlockCommitTx e IBCPacketTx para obter mais informações nos dois tipos de transação IBC. Da mesma forma que Bitcoin é mais seguro por ser distribuído, livro razão replicado em massa, podemos tornar as exchanges menos vulneráveis a hacks externos e internos executando-o em blockchain. Nós chame isso de troca distribuída. O que a comunidade de criptomoedas chama de descentralizada exchange hoje são baseadas em algo chamado de transações “atomic crosschain” (AXC). Com uma transação AXC, dois usuários em duas cadeias diferentes podem fazer duas transações de transferência que são comprometidos juntos em ambos os livros, ou nenhum (ou seja, atomicamente). Por exemplo, dois usuários podem trocar bitcoins por ether (ou quaisquer dois tokens em dois livros razão diferentes) usando transações AXC, mesmo que Bitcoin e Ethereum não estejam conectados um ao outro outro. O benefício de executar uma exchange em transações AXC é que nem os usuários precisam confiar uns nos outros ou na correspondência comercial serviço. A desvantagem é que ambas as partes precisam estar online para que o comércio ocorra. Outro tipo de exchange descentralizada é a replicada em massa troca distribuída que funciona por conta própria blockchain. Usuários ativados esse tipo de exchange pode enviar um pedido com limite e transformar seu computador desligado e a negociação pode ser executada sem que o usuário seja on-line. O blockchain corresponde e conclui a negociação em nome do comerciante.

Cosmos Arsitektur

Cosmos adalah jaringan blockchain paralel independen yang masing-masing didukung oleh algoritma konsensus BFT klasik seperti permen mint 1. blockchain pertama di jaringan ini akan menjadi Cosmos Hub. Itu Cosmos Hub terhubung ke banyak blockchain (atau zona) lainnya melalui a protokol komunikasi antar-blockchain yang baru. Pusat Cosmos melacak berbagai jenis token dan mencatat totalnya jumlah tokens di setiap zona yang terhubung. Token bisa saja ditransfer dari satu zona ke zona lain dengan aman dan cepat tanpa perlu adanya pertukaran cair antar zona, karena semuanya transfer koin antar zona melalui Hub Cosmos. Arsitektur ini memecahkan banyak masalah pada ruang blockchain yang dihadapi saat ini, seperti interoperabilitas aplikasi, skalabilitas, dan kemampuan upgrade yang mulus. Misalnya, zona yang berasal dari Bitcoind, Go-Ethereum, CryptoNote, ZCash, atau sistem blockchain apa pun bisa dicolokkan ke Hub Cosmos. Zona ini mengizinkan Cosmos untuk berkembang pesat untuk memenuhi permintaan transaksi global. Zona juga hal yang bagus untuk pertukaran terdistribusi, yang akan didukung sebagai baik. Cosmos bukan hanya satu buku besar yang didistribusikan, dan Cosmos Hub bukanlah taman bertembok atau pusat alam semesta. Kami adalah merancang protokol untuk jaringan terbuka buku besar terdistribusi yang dapat berfungsi sebagai landasan baru bagi sistem keuangan masa depan, berdasarkan prinsip kriptografi, ekonomi yang sehat, konsensus teori, transparansi, dan akuntabilitas. Cosmos Hub adalah blockchain publik pertama di Cosmos Jaringan, didukung oleh algoritma konsensus BFT Tendermint. Itu Proyek sumber terbuka Tendermint lahir pada tahun 2014 untuk mengatasi masalah tersebut masalah kecepatan, skalabilitas, dan lingkungan dari algoritma konsensus bukti kerja Bitcoin. Dengan menggunakan dan meningkatkan yang sudah terbukti

BFT algoritma dikembangkan di MIT pada tahun 1988 [20], Tendermint tim adalah yang pertama secara konseptual mendemonstrasikan proof-of-stake cryptocurrency yang mengatasi masalah tidak ada yang dipertaruhkan diderita oleh proof-of-stake cryptocurrency generasi pertama tersebut seperti NXT dan BitShares1.0. Saat ini, hampir semua dompet seluler Bitcoin menggunakan server tepercaya memberi mereka verifikasi transaksi. Hal ini karena pembuktian kerja memerlukan menunggu banyak konfirmasi sebelum a transaksi dapat dianggap dilakukan secara permanen. Serangan doublespend telah ditunjukkan pada layanan seperti Basis Koin. Tidak seperti sistem konsensus blockchain lainnya, Tendermint menawarkan verifikasi pembayaran klien seluler yang instan dan terbukti aman. Karena Tendermint dirancang untuk tidak pernah bercabang sama sekali, bersifat mobile dompet dapat menerima konfirmasi transaksi instan, yang menghasilkan pembayaran yang tidak dapat dipercaya dan praktis menjadi kenyataan di ponsel pintar. Ini memiliki dampak yang signifikan terhadap aplikasi Internet of Things baik. Validator di Cosmos memiliki peran serupa dengan Bitcoin penambang, namun sebagai gantinya gunakan tanda tangan kriptografi untuk memilih. Validator adalah mesin yang aman dan berdedikasi yang bertanggung jawab untuk melakukan blok. Non-validators dapat mendelegasikan staking tokens mereka (disebut “atom”) ke validator mana pun untuk mendapatkan sebagian biaya blok dan atom imbalan, namun menimbulkan risiko dihukum (dipotong) jika delegasi validator diretas atau melanggar protokol. Yang terbukti jaminan keamanan konsensus Tendermint BFT, dan agunannya setoran pemangku kepentingan–validators dan delegator–disediakan keamanan yang dapat dibuktikan dan diukur untuk node dan klien ringan. Buku besar publik yang didistribusikan harus memiliki konstitusi dan a sistem pemerintahan. Bitcoin bergantung pada Bitcoin Yayasan danpenambangan untuk mengoordinasikan peningkatan, tetapi ini adalah proses yang lambat. Ethereum dipecah menjadi ETH dan ETC setelah sulit diatasi PeretasanDAO, terutama karena tidak ada kontrak sosial sebelumnya maupun mekanisme untuk mengambil keputusan tersebut. Validator dan delegasi di Hub Cosmos dapat memberikan suara proposal yang dapat mengubah parameter sistem yang telah ditetapkan secara otomatis (seperti batas blok gas), mengkoordinasikan peningkatan, seperti serta memberikan suara pada amandemen konstitusi yang dapat dibaca manusia yang mengatur kebijakan Hub Cosmos. Konstitusi memungkinkan kohesi di antara para pemangku kepentingan dalam isu-isu seperti pencurian dan bug (seperti insiden TheDAO), memungkinkan untuk lebih cepat dan resolusi yang lebih bersih. Setiap zona juga dapat memiliki konstitusi dan pemerintahannya sendiri mekanismenya juga. Misalnya, Hub Cosmos dapat memiliki a konstitusi yang menegakkan kekekalan di Hub (tidak ada kemunduran, kecuali bug implementasi simpul Hub Cosmos), sementara setiap zona dapat menetapkan kebijakannya sendiri mengenai roll-back. Dengan memungkinkan interoperabilitas antar zona kebijakan yang berbeda, Jaringan Cosmos memberi penggunanya kebebasan dan potensi tertinggi eksperimen tanpa izin. Di sini kami menggambarkan model baru desentralisasi dan skalabilitas. Cosmos adalah jaringan yang terdiri dari banyak blockchain yang didukung oleh permen lembut. Sementara proposal yang ada bertujuan untuk menciptakan “single blockchain” dengan total pemesanan transaksi global, Cosmos mengizinkan banyak blockchain untuk dijalankan secara bersamaan satu sama lain dengan tetap mempertahankan interoperabilitas. Pada dasarnya, Hub Cosmos mengelola banyak hal secara independen blockchains disebut “zona” (terkadang disebut sebagai “pecahan”, dalam bahasa Inggris referensi ke teknik penskalaan basis data yang dikenal sebagai "sharding").

Aliran konstan dari blok terbaru yang dilakukan dari zona yang diposting Hub memungkinkan Hub untuk mengikuti keadaan setiap zona. Demikian pula, setiap zona mengikuti keadaan Hub (tetapi zona jangan saling mengikuti kecuali secara tidak langsung melalui Pusat). Paket informasi kemudian dikomunikasikan dari satu zona ke zona lain dengan memasang bukti Merkle sebagai bukti bahwa informasi telah dikirim dan diterima. Mekanisme ini disebut komunikasi antar-blockchain, atau disingkat IBC. Zona mana pun dapat menjadi hub untuk membentuk grafik asiklik, namun demi kejelasan kami hanya akan menguraikan secara sederhana saja konfigurasi di mana hanya ada satu hub, dan banyak non-hub zona. Cosmos Hub adalah blockchain yang menampung multi-aset buku besar terdistribusi, di mana tokens dapat disimpan oleh pengguna individu atau berdasarkan zona itu sendiri. token ini dapat dipindahkan dari satu zona ke yang lain dalam paket IBC khusus yang disebut "paket koin". Hubnya adalah bertanggung jawab untuk menjaga invarian global dari total jumlah setiap token di seluruh zona. IBC paket koin transaksi harus dilakukan oleh pengirim, hub, dan penerima blockchains.Karena Cosmos Hub bertindak sebagai buku besar pusat untuk keseluruhan sistem, keamanan Hub adalah yang terpenting. Sementara setiap zona dapat berupa Tendermint blockchain yang diamankan dengan sebagai sedikitnya 4 (atau bahkan kurang jika konsensus BFT tidak diperlukan), Hub harus diamankan oleh serangkaian validator yang terdesentralisasi secara global dapat menahan skenario serangan yang paling parah, seperti a partisi jaringan kontinental atau serangan yang disponsori negara. Zona Cosmos adalah blockchain independen yang menukar IBC pesan dengan Hub. Dari perspektif Hub, zona adalah a akun multi-tanda tangan keanggotaan dinamis multi-aset itu dapat mengirim dan menerima tokens menggunakan paket IBC. Seperti a akun mata uang kripto, suatu zona tidak dapat mentransfer lebih dari tokens sudah, tetapi dapat menerima token dari orang lain yang memilikinya. Sebuah zona dapat ditetapkan sebagai "sumber" dari satu atau lebih jenis token, memberinya kekuatan untuk memasukkan pasokan token itu. Atom dari Cosmos Hub dapat dipertaruhkan oleh validators suatu zona terhubung ke hub. Sementara serangan double-spend terjadi di zona-zona tersebut akan mengakibatkan pemotongan atom dengan akuntabilitas Tendermint, sebuah zona di mana >⅔ hak suara berada Bizantium dapat melakukan status tidak valid. Hub Cosmos tidak memverifikasi atau mengeksekusi transaksi yang dilakukan di zona lain, demikianlah adanya tanggung jawab pengguna untuk mengirim tokens ke zona yang mereka percayai. Kedepannya, sistem tata kelola Hub Cosmos mungkin bisa melewati Hub proposal perbaikan yang memperhitungkan kegagalan zona. Untuk misalnya, transfer token keluar dari beberapa (atau semua) zona mungkin terjadi dibatasi untuk memungkinkan pemutusan sirkuit darurat pada zona (penghentian sementara transfer token) ketika serangan terdeteksi. Sekarang kita melihat bagaimana Hub dan zona berkomunikasi satu sama lain lainnya. Misalnya, jika ada tiga blockchain, “Zona1”, “Zona2”,

Cosmos hub and zones architecture showing the Cosmos Hub connecting multiple independent zones via IBC

dan "Hub", dan kami berharap "Zone1" menghasilkan paket tujuan untuk “Zona 2” melalui “Hub”. Untuk memindahkan paket dari satu blockchain ke yang lain, buktinya diposting di rantai penerima. Buktinya menyatakan bahwa rantai pengirim menerbitkan paket untuk dugaan tujuan. Agar rantai penerima dapat memeriksa bukti ini harus mampu mengikuti header blok pengirim. Ini mekanismenya mirip dengan yang digunakan oleh sidechains, yang membutuhkan dua rantai yang berinteraksi untuk menyadari satu sama lain melalui a aliran dua arah dari datagram bukti keberadaan (transaksi). Protokol IBC secara alami dapat didefinisikan menggunakan dua jenis transaksi: transaksi  IBCBlockCommitTx , yang memungkinkan a blockchain untuk membuktikan kepada pengamat mana pun tentang blok terbarunya-hash, dan transaksi IBCPacketTx , yang memungkinkan blockchain untuk buktikan kepada pengamat mana pun bahwa paket yang diberikan memang dipublikasikan melalui permohonan pengirim, melalui Merkle-proof hingga saat ini blok-hash. Dengan membagi mekanisme IBC menjadi dua transaksi terpisah, kami memungkinkan mekanisme pasar biaya asli dari rantai penerima menentukan paket mana yang dikomit (yaitu diakui), sementara memungkinkan kebebasan penuh pada rantai pengiriman tentang caranya banyak paket keluar diperbolehkan. Pada contoh di atas, untuk memperbarui blok-hash dari "Zona1" di “Hub” (atau “Hub” di “Zone2”), sebuah IBCBlockCommitTxtransaksi harus diposting di “Hub” dengan blok-hash dari “Zona1” (atau pada “Zona2” dengan blok-hash dari “Hub”). Lihat IBCBlockCommitTx dan IBCPacketTx untuk informasi lebih lanjut pada dua jenis transaksi IBC. Dengan cara yang sama Bitcoin lebih aman dengan menjadi terdistribusi, buku besar yang direplikasi secara massal, kita dapat membuat pertukaran menjadi lebih tidak rentan peretasan eksternal dan internal dengan menjalankannya di blockchain. Kami sebut ini pertukaran terdistribusi. Apa yang oleh komunitas cryptocurrency disebut sebagai desentralisasi pertukaran hari ini didasarkan pada sesuatu yang disebut transaksi “atomic crosschain” (AXC). Dengan transaksi AXC, dua pengguna aktif dua rantai yang berbeda dapat melakukan dua transaksi transfer itu dilakukan bersama-sama pada kedua buku besar, atau tidak sama sekali (mis. secara atomik). Misalnya, dua pengguna dapat memperdagangkan bitcoin dengan eter (atau dua token pada dua buku besar berbeda) menggunakan transaksi AXC, meskipun Bitcoin dan Ethereum tidak terhubung satu sama lain lainnya. Manfaat menjalankan pertukaran pada transaksi AXC adalah bahwa tidak ada pengguna yang perlu mempercayai satu sama lain atau melakukan pencocokan dagang layanan. Sisi negatifnya adalah kedua belah pihak harus online perdagangan yang akan terjadi. Jenis pertukaran terdesentralisasi lainnya adalah pertukaran yang direplikasi secara massal pertukaran terdistribusi yang berjalan sendiri blockchain. Pengguna aktif pertukaran semacam ini dapat mengirimkan pesanan batas dan mengubahnya komputer mati, dan perdagangan dapat dilakukan tanpa kehadiran pengguna daring. blockchain cocok dan menyelesaikan perdagangan atas nama dari pedagang.

Aplicativos

Uma exchange centralizada pode criar uma carteira de pedidos profunda e limitada ordens e, assim, atrair mais comerciantes. Liquidez gera mais liquidez no mundo cambial e, portanto, existe uma rede forte efeito (ou pelo menos um efeito do tipo "o vencedor leva mais") na troca negócio. O atual líder em trocas de criptomoedas hoje está a Poloniex com um volume de US$ 20 milhões em 24 horas, e em segundo lugar está Bitynex com um volume de 24 horas de US$ 5 milhões. Dada uma rede tão forte efeitos, é improvável que as exchanges descentralizadas baseadas em AXC ganhar volume sobre as exchanges centralizadas. Para uma descentralização exchange para competir com uma exchange centralizada, seria necessário para oferecer suporte a carteiras de pedidos profundas com pedidos limitados. Apenas um distribuído exchange em blockchain pode fornecer isso. Tendermint oferece benefícios adicionais de transações mais rápidas compromete. Priorizando a sinalidade rápida sem sacrificar consistência, as zonas em Cosmos podem ynalizar transações rapidamente – por tanto as transações de ordens de câmbio quanto as transferências de IBC token para e de outras zonas. Dado o estado atual das trocas de criptomoedas, um grande aplicação para Cosmos é a troca distribuída (também conhecida como CosmosDEX). A capacidade de transferência de transações, bem como a latência de commit pode ser comparável àquelas de centralizado trocas. Os traders podem enviar ordens limitadas que podem ser executadas sem que ambas as partes tenham que estar online. E com Tendermint, o hub Cosmos e IBC, os traders podem movimentar fundos para dentro e para fora a troca de e para outras zonas com rapidez. Uma zona privilegiada pode atuar como fonte de uma ponte token de outra criptomoeda. Uma ponte é semelhante ao relacionamento entre um hub e uma zona Cosmos; ambos devem acompanhar o últimos blocos do outro para verificar provas de que tokens possuem passou de um para outro. Uma "zona de ponte" no Cosmos A rede acompanha o Hub, bem como os outros

criptomoeda. A indireção através da zona-ponte permite a lógica do Hub permanecer simples e agnóstica em relação a outros blockchain estratégias de consenso, como proof-of-work de Bitcoin mineração. Cada zona de ponte validator executaria um sistema alimentado por Tendermint blockchain com um aplicativo de ponte ABCI especial, mas também um nó completo de a “origem” blockchain. Quando novos blocos são minerados na origem, a zona-ponte validators chegarão a um acordo sobre os blocos comprometidos assinando e compartilhando sua respectiva visão local do blockchain da origem dica. Quando uma zona-ponte recebe pagamento na origem (e concordaram que confirmações suficientes foram vistas no caso de uma cadeia PoW como Ethereum ou Bitcoin), um correspondente conta é criada na zona de ponte com esse saldo. No caso de Ethereum, a zona de ponte pode compartilhar o mesmo validator-definido como o hub Cosmos. No lado Ethereum (o origem), um contrato-ponte permitiria que os detentores de Ether enviassem Ether para a zona de ponte, enviando-o para o contrato de ponte em Ethereum. Uma vez que o Ether é recebido pelo contrato-ponte, o ether não pode ser retirado a menos que um pacote IBC apropriado seja recebido pelo contrato-ponte da zona-ponte. O bridge-contract rastreia o conjunto validator da zona de ponte, que pode ser idêntico ao conjunto validator do Hub Cosmos. No caso de Bitcoin, o conceito é semelhante, exceto que em vez de um único contrato-ponte, cada UTXO seria controlado por um limite de multiassinatura P2SH pubscript. Devido às limitações de no sistema P2SH, os signatários não podem ser idênticos ao Cosmos Conjunto de hub validator.O éter na zona de ponte (“éter em ponte”) pode ser transferido para e do Hub, e posteriormente destruído com uma transação que envia para um endereço de retirada específico em Ethereum. Um IBC pacote provando que a transação ocorreu na zona de ponte pode ser postado no contrato de ponte Ethereum para permitir o ether para ser retirado. No caso de Bitcoin, o sistema de script restrito torna difícil espelhar o mecanismo de transferência de moedas IBC. Cada UTXO tem seu próprio pubscript independente, então cada UTXO deve ser migrado para um novo UTXO quando há alteração no conjunto de Bitcoin signatários de garantia. Uma solução é comprimir e descompacte o conjunto UTXO conforme necessário para manter o número total de UTXOs inativos. O risco de tal contrato de transição é um conjunto desonesto validator. ≥⅓ O poder de voto bizantino pode causar uma bifurcação, retirando o éter do contrato de ponte em Ethereum enquanto mantém o bridgedether na zona de ponte. Pior ainda, >⅔ o poder de voto bizantino pode roubar éter imediatamente daqueles que o enviaram para o contrato de ponte desviando-se da lógica de ponte original da zona de ponte. É possível resolver estas questões projetando a ponte para ser totalmente responsável. Por exemplo, todos os pacotes IBC, do hub e a origem, pode exigir reconhecimento pela zona de ponte em de tal forma que todas as transições de estado da zona de ponte possam ser eficientemente desafiado e verificado pelo centro ou pela origem contrato-ponte. O Centro e a origem devem permitir que os validators da zona-ponte depositem garantias e que token transfiram para fora do o contrato-ponte deve ser adiado (e a dissolução da garantia período suficientemente longo) para permitir quaisquer desafios a serem feitos por auditores independentes. Deixamos o desenho da especificação e implementação deste sistema aberta como um futuro Cosmos

proposta de melhoria, a ser aprovada pelo Hub Cosmos sistema de governança. Resolver o problema de dimensionamento é um problema em aberto para Ethereum. Atualmente, os nós Ethereum processam cada transação e também armazene todos os estados. link. Como o Tendermint pode confirmar blocos muito mais rápido que o de Ethereum Zonas proof-of-work, EVM alimentadas por consenso Tendermint e operar em éter em ponte pode fornecer maior desempenho para Ethereum blockchains. Além disso, embora o Hub Cosmos e IBC a mecânica de pacotes não permite lógica de contrato arbitrária execução por si só, pode ser usado para coordenar movimentos token entre Ethereum contratos executados em zonas diferentes, fornecendo uma base para o escalonamento token centrado em Ethereum por meio de fragmentação. Cosmos zonas executam lógica de aplicativo arbitrária, que é definida em o início da vida da zona e pode potencialmente ser atualizada ao longo do tempo pela governação. Essa zexibilidade permite que zonas Cosmos atuam como pontes para outras criptomoedas, como Ethereum ou Bitcoin, e também permite derivados desses blockchains, utilizando a mesma base de código, mas com um conjunto validator diferente e distribuição inicial. Isso permite que muitas criptomoedas existentes estruturas, como as de Ethereum, Zerocash, Bitcoin, CryptoNote e assim por diante, para ser usado com Tendermint Core, que é um mecanismo de consenso de maior desempenho, em uma rede comum, abrindo uma tremenda oportunidade para a interoperabilidade entre plataformas. Além disso, como um multiativo blockchain, um único transação pode conter múltiplas entradas e saídas, onde cada a entrada pode ser de qualquer tipo token, permitindo que Cosmos sirva diretamente como uma plataforma para troca descentralizada, embora as ordens sejam assumidaspara ser correspondido através de outras plataformas. Alternativamente, uma zona pode servir como uma troca distribuída tolerante a falhas (com carteiras de pedidos), que pode ser uma melhoria estrita em relação à centralização existente trocas de criptomoedas que tendem a ser hackeadas com o tempo. As zonas também podem servir como versões corporativas apoiadas por blockchain e sistemas governamentais, onde partes de um determinado serviço que são tradicionalmente administrados por uma organização ou grupo de organizações em vez disso, são executados como um aplicativo ABCI em uma determinada zona, que permite-lhe herdar a segurança e a interoperabilidade do público Cosmos rede sem sacrificar o controle sobre o subjacente serviço. Assim, Cosmos pode oferecer o melhor dos dois mundos para organizações que desejam utilizar a tecnologia blockchain, mas que estão cauteloso em ceder completamente o controle a um terceiro distribuído festa. Alguns afirmam que um grande problema com o favorecimento da consistência algoritmos de consenso como o Tendermint é que qualquer rede partição que faz com que não haja uma partição única com >⅔ o poder de voto (por exemplo, ≥⅓ sair do zine) interromperá completamente o consenso. A arquitetura Cosmos pode ajudar a mitigar esse problema usando um centro global com zonas autónomas regionais, onde o poder de voto para cada zona são distribuídos com base em uma área geográfica comum região. Por exemplo, um paradigma comum pode ser para indivíduos cidades, ou regiões, para operar suas próprias zonas enquanto compartilham um centro comum (por exemplo, o Centro Cosmos), permitindo que a atividade municipal persistir no caso de o hub parar devido a uma rede temporária partição. Observe que isso permite que dados geológicos, políticos e recursos topológicos de rede a serem considerados no projeto robusto sistemas federados tolerantes a falhas.

NameCoin foi um dos primeiros blockchains a tentar resolver o problema de resolução de nomes adaptando o Bitcoin blockchain. Infelizmente, houve vários problemas com essa abordagem. Com Namecoin podemos verificar que, por exemplo, @satoshi foi registrado com uma chave pública específica em algum momento no passado, mas não saberíamos se a chave pública já havia sido atualizado recentemente, a menos que baixemos todos os blocos desde o último atualização desse nome. Isso se deve à limitação de Bitcoin’s UTXO modelo de merkle-ização de transação, onde apenas o transações (mas não o estado mutável do aplicativo) são Merkle-izadas no bloco-hash. Isso nos permite provar a existência, mas não a inexistência de atualizações posteriores de um nome. Assim, não podemos saber por certo o valor mais recente de um nome sem confiar em um valor completo nó, ou incorrer em custos significativos em largura de banda baixando todo o blockchain. Mesmo que uma árvore de pesquisa Merkleizada fosse implementada no NameCoin, sua dependência de proof-of-work facilita a verificação do cliente problemático. Os clientes Light devem baixar uma cópia completa do cabeçalhos para todos os blocos em todo o blockchain (ou pelo menos todos os cabeçalhos desde a última atualização de um nome). Isto significa que o os requisitos de largura de banda aumentam linearmente com a quantidade de tempo [21]. Além disso, mudanças de nome em proof-of-work blockchain requer espera por blocos de confirmação proof-of-work adicionais, o que pode levar até uma hora em Bitcoin. Com o Tendermint, tudo que precisamos é do bloco mais recente-hash assinado por um quórum de validators (por poder de voto) e um Merkle prova para o valor atual associado ao nome. Isso faz com que possível ter um light-client sucinto, rápido e seguro verificação dos valores dos nomes. Em Cosmos, podemos pegar esse conceito e estendê-lo ainda mais. Cada zona de registro de nome em Cosmos pode ter um nome de domínio de nível superior (TLD) associado, como “.com” ou “.org”, e cada nome-

zona de registro pode ter sua própria governança e registro regras.

Aplikasi

Pertukaran terpusat dapat membuat buku batas yang dalam pesanan dan dengan demikian menarik lebih banyak pedagang. Likuiditas menghasilkan lebih banyak likuiditas di dunia bursa, sehingga terdapat jaringan yang kuat efek (atau setidaknya efek pemenang-ambil-terbanyak) dalam pertukaran bisnis. Pemimpin saat ini untuk pertukaran mata uang kripto saat ini adalah Poloniex dengan volume 24 jam sebesar $20 juta, dan di posisi kedua adalah Bitynex dengan volume 24 jam sebesar $5 juta. Mengingat jaringan yang begitu kuat Hal ini tidak mungkin terjadi pada bursa desentralisasi berbasis AXC memenangkan volume atas bursa terpusat. Untuk desentralisasi pertukaran untuk bersaing dengan pertukaran terpusat, hal ini diperlukan untuk mendukung buku pesanan mendalam dengan pesanan terbatas. Hanya didistribusikan pertukaran pada blockchain dapat menyediakannya. Tendermint memberikan manfaat tambahan berupa transaksi yang lebih cepat berkomitmen. Dengan mengedepankan ynalitas cepat tanpa berkorban konsistensi, zona di Cosmos dapat menginalisasi transaksi dengan cepat – untuk baik transaksi exchange order maupun IBC token transfer ke dan dari zona lain. Mengingat keadaan pertukaran mata uang kripto saat ini, bagus sekali aplikasi untuk Cosmos adalah pertukaran terdistribusi (alias the CosmosDEX). Kapasitas throughput transaksi juga latensi komit dapat dibandingkan dengan latensi terpusat pertukaran. Trader dapat mengirimkan limit order yang dapat dieksekusi tanpa kedua belah pihak harus online. Dan dengan Tendermint, hub Cosmos, dan IBC, pedagang dapat memindahkan dana masuk dan keluar pertukaran ke dan dari zona lain dengan cepat. Zona istimewa dapat bertindak sebagai sumber token yang dijembatani mata uang kripto lainnya. Sebuah jembatan mirip dengan hubungan antara hub dan zona Cosmos; keduanya harus mengikuti perkembangan tersebut blok terbaru dari yang lain untuk memverifikasi bukti yang dimiliki tokens berpindah dari satu ke yang lain. Sebuah "zona jembatan" di Cosmos jaringan mengikuti Hub dan juga yang lainnya

mata uang kripto. Arahan melalui zona jembatan memungkinkan logika Hub untuk tetap sederhana dan agnostik terhadap yang lain blockchain strategi konsensus seperti proof-of-work Bitcoin pertambangan. Setiap zona jembatan validator akan menjalankan Tendermint bertenaga blockchain dengan aplikasi jembatan ABCI khusus, tetapi juga node penuh “asal” blockchain. Ketika blok baru ditambang di titik asal, zona jembatan validators akan mencapai kesepakatan mengenai blok yang berkomitmen dengan penandatanganan dan berbagi pandangan lokal masing-masing tentang blockchain asal tip. Ketika zona jembatan menerima pembayaran pada zona asal (dan konfirmasi yang cukup disepakati telah terlihat dalam kasus ini dari rantai PoW seperti Ethereum atau Bitcoin), sesuai akun dibuat di zona jembatan dengan saldo itu. Dalam kasus Ethereum, zona jembatan dapat berbagi hal yang sama validator-ditetapkan sebagai Hub Cosmos. Di sisi Ethereum ( asal), kontrak jembatan akan memungkinkan pemegang eter mengirim eter ke zona jembatan dengan mengirimkannya ke kontrak jembatan Ethereum. Setelah eter diterima oleh kontrak jembatan, itu eter tidak dapat ditarik kecuali paket IBC yang sesuai tersedia diterima oleh kontrak jembatan dari zona jembatan. Itu kontrak jembatan melacak validator-set zona jembatan, yang mungkin identik dengan set validator Hub Cosmos. Dalam kasus Bitcoin, konsepnya serupa kecuali sebaliknya satu kontrak jembatan, masing-masing UTXO akan dikendalikan oleh a pubscript P2SH multitanda tangan ambang batas. Karena keterbatasan sistem P2SH, penandatangan tidak boleh sama dengan Cosmos Pusat validator-set.Eter di zona jembatan (“bridged-ether”) dapat ditransfer ke dan dari Hub, dan kemudian dimusnahkan dengan transaksi itu mengirimkannya ke alamat penarikan tertentu di Ethereum. Sebuah IBC paket membuktikan bahwa transaksi terjadi di zona jembatan dapat diposting ke kontrak jembatan Ethereum untuk mengizinkan eter untuk ditarik. Dalam kasus Bitcoin, sistem skrip terbatas membuatnya sulit untuk meniru mekanisme transfer koin IBC. Setiap UTXO memiliki pubscript independennya sendiri, jadi setiap UTXO harus memilikinya bermigrasi ke UTXO baru ketika ada perubahan pada kumpulan Bitcoin penandatangan escrow. Salah satu solusinya adalah dengan mengompres dan dekompresi set UTXO seperlunya untuk mempertahankan jumlah totalnya dari UTXO turun. Resiko dari kontrak yang menjembatani seperti itu adalah sebuah rangkaian validator yang nakal. ≥⅓ Kekuatan suara Bizantium dapat menyebabkan percabangan, penarikan eter dari kontrak jembatan pada Ethereum sambil menjaga jembatan di zona jembatan. Lebih buruk lagi, >⅔ kekuatan suara Bizantium bisa mencuri eter langsung dari mereka yang mengirimkannya ke kontrak jembatan dengan menyimpang dari logika jembatan asli zona jembatan. Permasalahan ini dapat diatasi dengan merancang jembatan tersebut benar-benar akuntabel. Misalnya semua paket IBC, dari hub dan asal usulnya, mungkin memerlukan pengakuan dari zona jembatan di dalamnya sedemikian rupa sehingga semua transisi keadaan pada zona jembatan dapat dilakukan ditantang dan diverifikasi secara efisien baik oleh pusat maupun asal kontrak jembatan. Hub dan asal harus mengizinkan validators zona jembatan untuk mengirimkan jaminan, dan token mentransfer keluar dari kontrak jembatan harus ditunda (dan pelepasan jaminan jangka waktu yang cukup lama) untuk memungkinkan adanya tantangan yang dapat dilakukan auditor independen. Kami meninggalkan desain spesifikasi dan implementasi sistem ini terbuka sebagai masa depan Cosmos

proposal perbaikan, untuk disahkan oleh Cosmos Hub sistem pemerintahan. Memecahkan masalah penskalaan adalah masalah terbuka untuk Ethereum. Saat ini, Ethereum node memproses setiap transaksi dan juga menyimpan semua negara bagian. link. Karena Tendermint dapat melakukan pemblokiran lebih cepat daripada Ethereum proof-of-work, EVM zona yang didukung oleh konsensus Tendermint dan beroperasi pada bridged-ether dapat memberikan kinerja yang lebih tinggi Ethereum blockchains. Selain itu, meskipun Cosmos Hub dan IBC mekanisme paket tidak mengizinkan logika kontrak sewenang-wenang eksekusi itu sendiri, dapat digunakan untuk mengoordinasikan token gerakan antara Ethereum kontrak yang berjalan di zona berbeda, memberikan landasan untuk penskalaan token-sentris Ethereum melalui pecahan. Cosmos zona menjalankan logika aplikasi sewenang-wenang, yang didefinisikan pada awal kehidupan zona dan berpotensi diperbarui dari waktu ke waktu oleh pemerintahan. Kelenturan seperti itu memungkinkan Cosmos zona untuk bertindak sebagai jembatan ke mata uang kripto lainnya seperti Ethereum atau Bitcoin, dan juga mengizinkan turunan dari blockchain tersebut, menggunakan basis kode yang sama tetapi dengan set validator yang berbeda dan distribusi awal. Hal ini memungkinkan banyak cryptocurrency yang ada kerangka kerja, seperti Ethereum, Zerocash, Bitcoin, CryptoNote dan seterusnya, untuk digunakan dengan Tendermint Core mesin konsensus kinerja yang lebih tinggi, pada jaringan umum, membuka peluang luar biasa untuk interoperabilitas di seluruh dunia platform. Selanjutnya, sebagai multi-aset blockchain, satu transaksi mungkin berisi beberapa input dan output, dimana masing-masing masukan dapat berupa jenis token apa pun, sehingga memungkinkan Cosmos berfungsi langsung sebagai sebuah platform untuk pertukaran terdesentralisasi, meskipun pesanan diasumsikanuntuk dicocokkan melalui platform lain. Sebagai alternatif, suatu zona dapat berfungsi sebagai pertukaran toleransi kesalahan terdistribusi (dengan buku pesanan), yang dapat menjadi perbaikan yang ketat dibandingkan sistem terpusat yang sudah ada pertukaran mata uang kripto yang cenderung diretas seiring waktu. Zona juga dapat berfungsi sebagai versi perusahaan yang didukung blockchain dan sistem pemerintahan, di mana bagian dari layanan tertentu itu secara tradisional dijalankan oleh suatu organisasi atau sekelompok organisasi malah dijalankan sebagai aplikasi ABCI di zona tertentu, yang mana memungkinkannya mewarisi keamanan dan interoperabilitas publik Cosmos jaringan tanpa mengorbankan kendali atas yang mendasarinya layanan. Oleh karena itu, Cosmos mungkin menawarkan yang terbaik dari kedua hal tersebut organisasi yang ingin memanfaatkan teknologi blockchain tetapi siapa yang memanfaatkannya berhati-hati dalam melepaskan kendali sepenuhnya kepada pihak ketiga yang didistribusikan pesta. Beberapa orang menyatakan bahwa masalah utama adalah mengutamakan konsistensi algoritma konsensus seperti Tendermint adalah jaringan apa pun partisi yang menyebabkan tidak ada satu partisi dengan >⅔ hak suara (misalnya ≥⅓ mematikan zine) akan menghentikan konsensus sama sekali. Arsitektur Cosmos dapat membantu mengurangi masalah ini dengan menggunakan sebuah pusat global dengan zona otonom regional, dimana hak untuk memilih untuk setiap zona didistribusikan berdasarkan kesamaan geografis wilayah. Misalnya, paradigma umum mungkin ditujukan untuk individu kota, atau wilayah, untuk mengoperasikan zona mereka sendiri sambil berbagi a hub umum (misalnya Hub Cosmos), memungkinkan aktivitas kota untuk melakukan hal tersebut bertahan jika hub berhenti karena jaringan sementara partisi. Perhatikan bahwa ini memungkinkan kondisi geologi, politik, dan fitur topologi jaringan yang harus dipertimbangkan dalam merancang yang kuat sistem toleransi kesalahan gabungan.

NameCoin adalah salah satu dari blockchain pertama yang mencoba menyelesaikan masalah ini masalah resolusi nama dengan mengadaptasi Bitcoin blockchain. Sayangnya ada beberapa masalah dengan pendekatan ini. Dengan Namecoin, kami dapat memverifikasi bahwa, misalnya, @satoshi adalah terdaftar dengan kunci publik tertentu di masa lalu, tapi kita tidak tahu apakah kunci publiknya sudah ada diperbarui baru-baru ini kecuali kami mengunduh semua blok sejak yang terakhir pembaruan nama itu. Hal ini disebabkan oleh keterbatasan Bitcoin UTXO transaksi model Merkle-isasi, dimana hanya transaksi (tetapi bukan status aplikasi yang dapat diubah) di-merkle ke dalam blok-hash. Hal ini memungkinkan kami membuktikan keberadaannya, namun bukan ketiadaan pembaruan nama di kemudian hari. Jadi, kita tidak bisa mengetahuinya yakin nilai terbaru dari sebuah nama tanpa mempercayai keseluruhannya node, atau menimbulkan biaya bandwidth yang signifikan dengan mengunduh keseluruhan blockchain. Meskipun pohon pencarian Merkle diterapkan di NameCoin, ketergantungannya pada proof-of-work membuat verifikasi klien menjadi ringan bermasalah. Klien ringan harus mengunduh salinan lengkapnya header untuk semua blok di seluruh blockchain (atau setidaknya seluruh header sejak pembaruan terakhir pada sebuah nama). Ini berarti bahwa kebutuhan bandwidth berskala linier dengan jumlah waktu [21]. Selain itu, perubahan nama pada proof-of-work blockchain perlu menunggu blok konfirmasi proof-of-work tambahan, yang dapat memakan waktu hingga satu jam pada Bitcoin. Dengan Tendermint, yang kita butuhkan hanyalah blok terbaru-hash ditandatangani oleh kuorum validators (berdasarkan hak suara), dan Merkle bukti nilai saat ini yang terkait dengan nama tersebut. Ini berhasil mungkin untuk memiliki klien ringan yang ringkas, cepat, dan aman verifikasi nilai nama. Di Cosmos, kita dapat mengambil konsep ini dan memperluasnya lebih jauh. Masing-masing zona pendaftaran nama di Cosmos dapat memiliki nama domain tingkat atas (TLD) terkait seperti “.com” atau “.org”, dan setiap nama-

zona registrasi dapat memiliki tata kelola dan registrasi sendiri aturan.

Governança e Economia

Embora o Hub Cosmos seja um livro-razão distribuído de vários ativos, há um nativo especial token chamado átomo. Os átomos são os únicos staking token do hub Cosmos. Os átomos são uma licença para o titular votar, validar ou delegar para outros validators. Como Ethereum éter, os átomos também podem ser usados para pagar taxas de transação para mitigar spam. Átomos inzacionários adicionais e transação em bloco as taxas são recompensadas para validators e delegadores que delegam para validators. A transação  BurnAtomTx  pode ser usada para recuperar qualquer quantidade proporcional de tokens do pool de reserva. A distribuição inicial dos átomos tokens e validators no Gênesis irá para os doadores da arrecadação de fundos Cosmos (75%), doadores principais (5%), Cosmos Network Foundation (10%) e ALL IN BITS, Inc. (10%). Da gênese em diante, 1/3 da quantidade total de átomos será ser recompensado a validators e delegadores vinculados todos os anos. Consulte o Plano Cosmos para obter detalhes adicionais. Ao contrário de Bitcoin ou outros proof-of-work blockchains, um Tendermint blockchain fica mais lento com mais validators devido ao aumento complexidade da comunicação. Felizmente, podemos apoiar o suficiente validators para criar um blockchain robusto e globalmente distribuído com tempos de confirmação de transação muito rápidos e, como largura de banda,

armazenamento e aumento da capacidade de computação paralela, seremos capazes para oferecer suporte a mais validators no futuro. No dia da gênese, o número máximo de validators será definido para 100, e esse número aumentará a uma taxa de 13% durante 10 anos, e estabilize em 300 validators. Os detentores de átomos que ainda não o são podem se tornar validators por assinar e enviar uma transação  BondTx . A quantidade de os átomos fornecidos como garantia devem ser diferentes de zero. Qualquer um pode se tornar a validator a qualquer momento, exceto quando o tamanho do atual validator conjunto é maior que o número máximo de validators permitido. Nesse caso, a transação só é válida se o valor do átomos é maior que a quantidade de átomos efetivos mantidos pelo menor validator, onde átomos efetivos incluem átomos delegados. Quando um novo validator substitui um validator existente dessa forma, o validator existente torna-se inativo e todos os átomos e átomos delegados entram no estado de desvinculação. Deve haver alguma penalidade imposta aos validators para qualquer desvio intencional ou não intencional do sancionado protocolo. Algumas provas são imediatamente admissíveis, como uma sinal duplo na mesma altura e redondo, ou violação de Ano 0: 100  Ano 1: 113  Ano 2: 127  Ano 3: 144  Ano 4: 163  Ano 5: 184  Ano 6: 208  Ano 7: 235  Ano 8: 265  Ano 9: 300  Ano 10: 300  ...

“prevote-the-lock” (uma regra do protocolo de consenso Tendermint). Tal evidência resultará na perda de sua regularidade por validator e seus átomos ligados, bem como sua parcela proporcional de tokens em o conjunto de reservas – coletivamente chamado de “participação” – será reduzido. Às vezes, validators não estarão disponíveis, seja devido a questões regionais interrupções de rede, falha de energia ou outros motivos. Se, em qualquer ponto nos últimos blocos  ValidatorTimeoutWindow , um validator commit vote não está incluído em blockchain mais de  ValidatorTimeoutMaxAbsent, esse validator se tornará inativo e perderá  ValidatorTimeoutPenalty  (PADRÃO 1%) de seu aposta. Alguns comportamentos “maliciosos” não produzem resultados obviamente discerníveis evidências em blockchain. Nestes casos, os validators podem coordenar fora da banda para forçar o tempo limite desses maliciosos validators, se houver consenso por maioria qualificada. Em situações em que o Hub Cosmos para devido a uma coalizão ≥⅓ de poder de voto saindo do zine ou em situações em que uma coalizão ≥⅓ do poder de voto censurar evidências de comportamento malicioso de entrando no blockchain, o hub deve se recuperar com um hard-fork proposta de reorganização. (Link para “Forks e ataques de censura”). Cosmos Hub validators podem aceitar qualquer tipo ou combinação de token de tipos como taxas para processar uma transação. Cada validator pode definir subjetivamente qualquer taxa de câmbio desejada e escolher quaisquer transações que desejar, desde que o  BlockGasLimit  seja não excedido. As taxas cobradas, menos quaisquer impostos especificados abaixo, são redistribuídos às partes interessadas vinculadas na proporção seus átomos ligados, cada  ValidatorPayoutPeriod  (DEFAULT 1 hora).Das taxas de transação cobradas,  ReserveTax  (PADRÃO 2%) será vá em direção ao pool de reserva para aumentar o pool de reserva e aumentar a segurança e o valor da rede Cosmos. Estes os fundos também podem ser distribuídos de acordo com as decisões feita pelo sistema de governança. Detentores de átomos que delegam seu poder de voto a outros validators pagar uma comissão ao delegado validator. A comissão pode ser definido por cada validator. A segurança do Hub Cosmos é uma função da segurança do validators subjacentes e a escolha da delegação pelos delegantes. A fim de encorajar a descoberta e a notificação precoce de vulnerabilidades, o Hub Cosmos incentiva os hackers a publicar explorações bem-sucedidas por meio de uma transação  ReportHackTx  que diz: “Este validator foi hackeado. Por favor, envie recompensa para este endereço”. Após tal exploração, o validator e os delegantes ficarão inativos,  HackPunishmentRatio  (padrão 5%) dos átomos de todos receberão cortado e  HackRewardRatio  (padrão 5%) dos átomos de todos será recompensado no endereço de recompensa do hacker. O validator deve recuperar os átomos restantes usando sua chave de backup. Para evitar que este recurso seja abusado para transferir átomos não adquiridos, a porção de átomos adquiridos versus átomos não adquiridos de validators e delegadores antes e depois do  ReportHackTx  permanecem os mesmos, e a recompensa do hacker incluirá alguns átomos não adquiridos, se houver. O Cosmos Hub é operado por uma organização distribuída que requer um mecanismo de governança bem definido para coordenar várias alterações no blockchain, como a variável

parâmetros do sistema, bem como atualizações de software e emendas constitucionais. Todos os validators são responsáveis ​​pela votação de todas as propostas. Falhando em votar uma proposta em tempo hábil resultará em validator sendo desativado automaticamente por um período de tempo denominado  AbsenteísmoPenaltyPeriod  (PADRÃO 1 semana). Os delegadores herdam automaticamente o voto do delegado validator. Esta votação pode ser anulada manualmente. Átomos não ligados não obtenha voto. Cada proposta exige um depósito de  MinimumProposalDeposit  tokens, que pode ser uma combinação de um ou mais tokens incluindo átomos. Para cada proposta, os eleitores poderão votar para o depósito. Se mais de metade dos eleitores optarem por depósito (por exemplo, porque a proposta era spam), o depósito vai para reserva, exceto quaisquer átomos que sejam queimados. Para cada proposta, os eleitores poderão votar com as seguintes opções: Sim Sim com força Não NayWithForce Abster-se Uma maioria estrita de votos Sim ou Sim com Força (ou Não ou votos NayWithForce) é necessário para que a proposta seja decidida como aprovado (ou considerado reprovado), mas 1/3+ pode vetar a maioria decisão votando “com força”. Quando uma maioria estrita é vetada, todos são punidos com a perda de VetoPenaltyFeeBlocks  (PADRÃO 1 dia de blocos) valor de taxas (exceto impostos que não será afetado), e o partido que vetou a maioria

a decisão será punida adicionalmente com a perda de VetoPenaltyAtoms  (PADRÃO 0,1%) de seus átomos. Qualquer um dos parâmetros aqui definidos pode ser alterado com o passagem de uma  ParameterChangeProposal . Os átomos podem ser injetados e os fundos do pool de reserva gastos com o aprovação de uma  Proposta de Recompensa . Todas as outras propostas, como uma proposta para atualizar o protocolo, será coordenado por meio da  TextProposal  genérica. Veja o Plano. Houve muitas inovações no consenso blockchain e escalabilidade nos últimos dois anos. Esta seção fornece um breve levantamento de um seleto número de importantes. O consenso na presença de participantes mal-intencionados é um problema que remonta ao início da década de 1980, quando Leslie Lamport cunhou o frase “falha bizantina” para se referir ao comportamento arbitrário do processo que se desvia do comportamento pretendido, em contraste com uma “falha de colisão”, em que um processo simplesmente falha. As primeiras soluções foram descobertas para redes síncronas onde existe um limite superiorlatência da mensagem, embora o uso prático fosse limitado a altamente ambientes controlados, como controladores de aviões e datacenters sincronizados por meio de relógios atômicos. Não foi até o final dos anos 90 que a tolerância prática a falhas bizantinas (PBFT) [11] foi introduzido como um consenso eficiente parcialmente síncrono algoritmo capaz de tolerar até ⅓ dos processos se comportando arbitrariamente. PBFT tornou-se o algoritmo padrão, gerando muitos variações, incluindo mais recentemente uma criada pela IBM como parte do sua contribuição para o Hyperledger. O principal benefício do consenso do Tendermint sobre PBFT é que Tendermint tem uma estrutura subjacente melhorada e simplificada, alguns dos quais são resultado da adoção do paradigma blockchain. Os blocos do Tendermint devem ser confirmados em ordem, o que evita o complexidade e sobrecarga de comunicação associada a PBFT's mudanças de visualização. Em Cosmos e em muitas criptomoedas, não há precisa permitir que o bloco N+i onde i >= 1 seja confirmado, quando o bloco N em si ainda não se comprometeu. Se a largura de banda é a razão pela qual o bloco N não fez commit em uma zona Cosmos, então não ajuda usar votos de compartilhamento de largura de banda para blocos N+i. Se uma partição de rede ou nós ofzine é a razão pela qual o bloco N não foi confirmado, então N+i não vou me comprometer de qualquer maneira. Além disso, o agrupamento de transações em blocos permite Merkle-hashing regular do estado do aplicativo, em vez de resumos periódicos como no esquema de checkpoint de PBFT. Isso permite para commits de transações comprováveis mais rápidos para clientes leves e mais rápidos comunicação inter-blockchain. Tendermint Core também inclui muitas otimizações e recursos que vão além do especificado em PBFT. Por exemplo, os blocos propostos por validators são divididos em partes, Merkle-izados, e fofocaram de uma forma que melhorou a transmissão desempenho (veja LibSwift [19] para inspiração). Além disso, Tendermint Core não faz nenhuma suposição sobre ponto a ponto

conectividade e funções enquanto a rede P2P estiver fracamente conectado. Embora não seja o primeiro a implantar proof-of-stake (PoS), BitShares1.0 [12] contribuiu consideravelmente para a pesquisa e adoção de PoS blockchains, especialmente aqueles conhecidos como PoS “delegados”. Em BitShares, stakeholders elegem “testemunhas”, responsáveis pelo pedido e cometer transações, e "delegados", responsáveis por coordenar atualizações de software e alterações de parâmetros. BitShares2.0 visa alcançar alto desempenho (100k tx/s, 1s latência) em condições ideais, com cada bloco assinado por um único assinante e a ynalidade da transação demorando um pouco mais do que o intervalo de bloco. Uma especificação canônica ainda está em desenvolvimento. As partes interessadas podem remover ou substituir testemunhas que se comportam mal em uma diariamente, mas não há nenhuma garantia significativa de testemunhas ou delegadores à semelhança do Tendermint PoS que são cortados o caso de um ataque de gasto duplo bem-sucedido. Com base em uma abordagem pioneira em Ripple, Stellar [13] refina um modelo de Acordo Federado Bizantino em que os processos participar em consenso não constitui uma situação yxa e global conjunto conhecido. Em vez disso, cada nó do processo faz a curadoria de um ou mais “fatias de quórum”, cada uma constituindo um conjunto de processos confiáveis. Um “quorum” em Stellar é definido como um conjunto de nós que contém pelo menos pelo menos uma fatia de quorum para cada nó do conjunto, de modo que um acordo pode ser alcançado. A segurança do mecanismo Stellar depende da suposição que a interseção de quaisquer dois quóruns não é vazia, enquanto o a disponibilidade de um nó requer que pelo menos uma de suas fatias de quorum seja consistem inteiramente em nós corretos, criando um trade-off entre usando fatias de quórum grandes ou pequenas que podem ser difíceis de equilibrar sem impor suposições significativas sobre confiança. Em última análise,os nós devem de alguma forma escolher fatias de quorum adequadas para que haja ter tolerância a falhas suficiente (ou quaisquer “nós intactos”, dos quais muitos dos resultados do artigo dependem), e o único estratégia fornecida para garantir que tal configuração seja hierárquica e semelhante ao Border Gateway Protocol (BGP), usado por ISPs de primeira linha na Internet para estabelecer tabelas de roteamento globais, e por aquele usado pelos navegadores para gerenciar certificados TLS; ambos notórios pela sua insegurança. As críticas no artigo Stellar aos sistemas de prova de participação baseados no Tendermint são atenuadas pela estratégia token descrita aqui, onde um novo tipo de token chamado átomo é emitido que representam reivindicações de parcelas futuras de taxas e recompensas. O vantagem do proof-of-stake baseado em Tendermint, então, é seu relativo simplicidade, ao mesmo tempo que fornece segurança suficiente e comprovável garantias. BitcoinNG é uma melhoria proposta para Bitcoin que permitiria para formas de escalabilidade vertical, como aumentar o tamanho do bloco, sem as consequências económicas negativas normalmente associadas com tal mudança, como o impacto desproporcionalmente grande em pequenos mineiros. Esta melhoria é conseguida através da separação eleição do líder a partir da transmissão da transação: os líderes são os primeiros eleito por proof-of-work em “microblocos”, e então capaz de transações de transmissão a serem confirmadas até um novo microbloco é encontrado. Isto reduz os requisitos de largura de banda necessários para vencer a corrida PoW, permitindo que pequenos mineiros concorram de forma mais justa, e permitindo que as transações sejam cometidas com mais regularidade pelos último mineiro a encontrar um microbloco. Casper [16] é um algoritmo de consenso proof-of-stake proposto para Ethereum. Seu principal modo de operação é “consenso por aposta”. Por deixando validators apostar iterativamente em qual bloco eles acreditam que irá

tornar-se comprometido com blockchain com base nas outras apostas que eles viram até agora, a inalidade pode ser alcançada eventualmente. link. Esta é uma área ativa de pesquisa da equipe Casper. O desafio está na construção de um mecanismo de apostas que possa ser provou ser uma estratégia evolutivamente estável. O principal benefício de Casper, em comparação com Tendermint, pode oferecer “disponibilidade consistência excessiva” – o consenso não requer um quórum >⅔ de poder de voto - talvez ao custo da velocidade de confirmação ou complexidade de implementação. O Protocolo Interledger [14] não é estritamente uma solução de escalabilidade. Isso fornece uma interoperação ad hoc entre diferentes livros contábeis sistemas através de uma rede de relacionamento bilateral fracamente acoplada. Assim como a Lightning Network, o objetivo do ILP é facilitar pagamentos, mas concentra-se especificamente em pagamentos em diferentes tipos de razão e estende o mecanismo de transação atômica para incluem não apenas hash-locks, mas também um quórum de notários (chamado Protocolo de Transporte Atômico). Este último mecanismo para impor a atomicidade em transações entre livros é semelhante a O mecanismo SPV de cliente leve do Tendermint, portanto, uma ilustração do a distinção entre ILP e Cosmos/IBC é garantida, e fornecido abaixo. 1. Os cartórios de um conector no ILP não apoiam a adesão mudanças, e não permitem ponderação zexível entre notários. Por outro lado, IBC foi projetado especificamente para blockchains, onde validators podem ter pesos diferentes, e onde a adesão pode mudar ao longo do blockchain. 2. Assim como na Lightning Network, o destinatário do pagamento no ILP deve estar on-line para enviar uma confirmação ao remetente. Em umtoken transferência sobre IBC, o conjunto validator do receptor blockchain é responsável por fornecer a confirmação, não o usuário receptor. 3. A diferença mais marcante é que os conectores do ILP não são responsável ou mantendo estado de autoridade sobre pagamentos, enquanto em Cosmos, os validators de um hub são autoridade de o estado de IBC token transfere, bem como a autoridade do quantidade de tokens mantidos por cada zona (mas não a quantidade de tokens mantidos por cada conta dentro de uma zona). Este é o inovação fundamental que permite segurança assimétrica transferência de tokens de zona para zona; o análogo ao ILP conector em Cosmos é persistente e maximamente seguro blockchain razão, o hub Cosmos. 4. Os pagamentos entre livros no ILP precisam ser respaldados por um carteira de ordens de câmbio, pois não há transferência assimétrica de moedas de um livro-razão para outro, apenas a transferência de valor ou equivalentes de mercado. Sidechains [15] são um mecanismo proposto para dimensionar o Bitcoin rede por meio de blockchains alternativos que são “atrelados bidirecionalmente” a o Bitcoin blockchain. (A indexação bidirecional é equivalente a ponte. Em Cosmos dizemos "ponte" para distinguir de marketpegging). Sidechains permitem que os bitcoins se movam efetivamente do Bitcoin blockchain para a cadeia lateral e para trás, e permitir experimentação de novos recursos na cadeia lateral. Como no Cosmos Hub, o sidechain e Bitcoin servem como clientes leves de entre si, usando provas SPV para determinar quando as moedas devem ser transferido para a cadeia lateral e vice-versa. Claro, desde Bitcoin usa proof-of-work, cadeias laterais centradas em Bitcoin sofrem dos muitos problemas e riscos de proof-of-work como um mecanismo de consenso. Além disso, este é um Bitcoin-maximalista solução que não suporta nativamente uma variedade de tokens e

topologia de rede entre zonas como Cosmos faz. Dito isto, o núcleo O mecanismo da cavilha bidirecional é, em princípio, o mesmo que empregado pela rede Cosmos. Ethereum está atualmente pesquisando diversas estratégias diferentes para fragmentar o estado de Ethereum blockchain para resolver necessidades de escalabilidade. Esses esforços têm como objetivo manter a camada de abstração oferecida pela máquina virtual Ethereum atual em todo o espaço de estado compartilhado. Múltiplos esforços de pesquisa são em andamento neste momento. [18][22] Cosmos e Ethereum 2.0 Mauve [22] têm objetivos de design diferentes. Cosmos é especificamente sobre tokens. Mauve é sobre dimensionamento cálculo geral. Cosmos não está vinculado a EVM, portanto, mesmo VMs diferentes podem interoperar. Cosmos permite que o criador da zona determine quem valida o zona. Qualquer pessoa pode iniciar uma nova zona em Cosmos (a menos que a governança decide de outra forma). O hub isola falhas de zona para que invariantes token globais sejam preservado. A Lightning Network é uma rede de transferência proposta token operando em uma camada acima de Bitcoin blockchain (e outros públicos blockchains), permitindo melhorias em muitas ordens de magnitude no rendimento da transação, movendo a maioria das transações fora do livro-razão de consenso nos chamados “canais de pagamento”.Isso é possível graças aos scripts de criptomoeda on-chain, que permitir que as partes celebrem contratos bilaterais estatais onde o o estado pode ser atualizado compartilhando assinaturas digitais e contratos pode ser encerrado publicando inicialmente evidências no blockchain, um mecanismo inicialmente popularizado por trocas atômicas entre cadeias. Por abrindo canais de pagamento com muitas partes, participantes do A Lightning Network pode se tornar pontos focais para rotear o pagamentos de terceiros, levando a um canal de pagamento totalmente conectado rede, ao custo do capital estar vinculado aos canais de pagamento. Embora a Lightning Network também possa se estender facilmente por vários blockchains independentes para permitir a transferência de valor através de um mercado de câmbio, não pode ser usado para transferir tokens de um blockchain para outro. O principal benefício da rede Cosmos descrita aqui é permitir tal token transferências. Dito isto, esperamos que os canais de pagamento e o Lightning Network será amplamente adotada junto com nosso token mecanismo de transferência, por razões de economia de custos e privacidade. Segregated Witness é um link de proposta de melhoria Bitcoin que visa aumentar o rendimento da transação por bloco em 2X ou 3X, ao mesmo tempo que torna a sincronização de blocos mais rápida para novos nós. O brilho desta solução está em como ela funciona dentro do limitações do protocolo atual de Bitcoin e permite um soft-fork atualização (ou seja, clientes com versões mais antigas do software continuar a funcionar após a atualização). Tendermint, sendo um novo protocolo, não tem restrições de design, portanto tem um escalonamento diferente prioridades. Principalmente, o Tendermint usa um algoritmo round-robin BFT baseado em assinaturas criptográficas em vez de mineração, que permite trivialmente o escalonamento horizontal através de múltiplos paralelos blockchains, enquanto commits de bloco regulares e mais frequentes permitem escala vertical também.

Pemerintahan dan Ekonomi

Meskipun Cosmos Hub adalah buku besar yang didistribusikan multi-aset, namun ada token asli khusus yang disebut atom. Atom adalah satu-satunya staking token dari Pusat Cosmos. Atom adalah lisensi bagi pemegangnya memilih, memvalidasi, atau mendelegasikan ke validator lainnya. Suka Ethereum eter, atom juga dapat digunakan untuk membayar biaya transaksi mengurangi spam. Atom inzationary tambahan dan transaksi blok biaya diberikan kepada validators dan delegator yang mendelegasikannya validatordtk. Transaksi  BurnAtomTx  dapat digunakan untuk memulihkan apa pun jumlah proporsional tokens dari kumpulan cadangan. Distribusi awal atom tokens dan validators di Genesis akan diberikan kepada donatur Cosmos Penggalangan Dana (75%), donatur utama (5%), Cosmos Network Foundation (10%), dan ALL IN BITS, Inc (10%). Sejak awal mula, 1/3 dari jumlah total atom akan terbentuk diberikan penghargaan kepada validator dan delegasi yang terikat setiap tahun. Lihat Paket Cosmos untuk detail tambahan. Berbeda dengan Bitcoin atau proof-of-work blockchain lainnya, Tendermint blockchain menjadi lebih lambat dengan lebih banyak validator karena peningkatan kompleksitas komunikasi. Untungnya, kami dapat mendukung cukup validators untuk menghasilkan blockchain yang kuat dan terdistribusi secara global dengan waktu konfirmasi transaksi yang sangat cepat, dan, sebagai bandwidth,

penyimpanan, dan peningkatan kapasitas komputasi paralel, kita akan mampu untuk mendukung lebih banyak validator di masa depan. Pada hari asal, jumlah maksimum validator akan ditetapkan ke 100, dan jumlah ini akan meningkat pada tingkat 13% selama 10 tahun, dan menetap pada 300 validators. Pemegang atom yang belum dapat menjadi validators pada saat itu menandatangani dan mengirimkan transaksi  BondTx . Jumlah atom yang diberikan sebagai jaminan harus bukan nol. Siapa pun bisa menjadi a validator kapan saja, kecuali besarnya arus validator set lebih besar dari jumlah maksimum validators diperbolehkan. Dalam hal ini, transaksi hanya sah jika jumlahnya atom lebih besar dari jumlah atom efektif yang ditahan oleh validator terkecil, di mana atom efektif mencakup atom yang didelegasikan. Ketika validator baru menggantikan validator yang sudah ada sedemikian rupa, validator yang ada menjadi tidak aktif dan semua atom dan atom yang didelegasikan memasuki keadaan tidak terikat. Pasti ada penalti yang dikenakan pada validator untuk siapa pun penyimpangan yang disengaja atau tidak disengaja dari sanksi protokol. Beberapa bukti dapat langsung diterima, seperti a tanda ganda pada ketinggian dan putaran yang sama, atau pelanggaran Tahun 0: 100  Tahun 1: 113  Tahun 2: 127  Tahun 3: 144  Tahun 4: 163  Tahun 5: 184  Tahun 6: 208  Tahun 7: 235  Tahun 8: 265  Tahun 9: 300  Tahun 10: 300  ...

“prevote-the-lock” (aturan protokol konsensus Tendermint). Bukti tersebut akan mengakibatkan validator kehilangan reputasi baiknya dan atom-atom yang terikat serta bagian proporsionalnya sebesar tokens di kumpulan cadangan – yang secara kolektif disebut “saham” – akan dipangkas. Terkadang, validators tidak tersedia, karena faktor regional gangguan jaringan, kegagalan daya, atau alasan lainnya. Jika, kapan saja titik di blok  ValidatorTimeoutWindow  yang lalu, validator melakukan suara tidak termasuk dalam blockchain lebih dari  ValidatorTimeoutMaxAbsent  kali, maka validator akan menjadi tidak aktif, dan kehilangan  ValidatorTimeoutPenalty  (DEFAULT 1%) darinya taruhan. Beberapa perilaku “jahat” tidak menghasilkan hasil yang terlihat jelas bukti di blockchain. Dalam kasus ini, validator bisa berkoordinasi di luar band untuk memaksa batas waktu bagi orang-orang jahat ini validators, jika terdapat konsensus super mayoritas. Dalam situasi di mana Hub Cosmos terhenti karena ≥⅓ koalisi hak suara terjadi di zine, atau dalam situasi di mana terdapat ≥⅓ koalisi hak suara menyensor bukti perilaku jahat dari memasuki blockchain, hub harus pulih dengan hard-fork proposal ulang. (Tautan ke “Serangan Garpu dan Sensor”). Cosmos Hub validators dapat menerima jenis atau kombinasi token apa pun jenis sebagai biaya untuk memproses transaksi. Setiap validator kaleng secara subyektif menetapkan nilai tukar apa pun yang diinginkannya, dan memilih transaksi apa pun yang diinginkannya, selama  BlockGasLimit  ada tidak terlampaui. Biaya yang dipungut, dikurangi pajak apa pun yang disebutkan di bawah, didistribusikan kembali kepada pemangku kepentingan yang terikat secara proporsional atom terikatnya, setiap  ValidatorPayoutPeriod  (DEFAULT 1 jam).Dari biaya transaksi yang dipungut,  ReserveTax  (DEFAULT 2%) akan dikenakan pergi menuju kumpulan cadangan untuk meningkatkan kumpulan cadangan dan meningkatkan keamanan dan nilai jaringan Cosmos. Ini dana juga dapat disalurkan sesuai dengan keputusan dibuat oleh sistem pemerintahan. Pemegang atom yang mendelegasikan hak suaranya kepada validator lainnya membayar komisi kepada validator yang didelegasikan. Komisi bisa ditetapkan oleh setiap validator. Keamanan Hub Cosmos adalah fungsi keamanan mendasari validators dan pilihan delegasi oleh delegasi. Guna mendorong penemuan dan pelaporan awal temuan kerentanan, Hub Cosmos mendorong peretas untuk mempublikasikan eksploitasi yang berhasil melalui transaksi  ReportHackTx  yang menyatakan, “Ini validator diretas. Silakan kirim hadiah ke alamat ini”. Setelah eksploitasi seperti itu, validator dan delegator akan menjadi tidak aktif,  HackPunishmentRatio  (default 5%) dari atom setiap orang akan mendapatkan dipotong, dan  HackRewardRatio  (defaultnya 5%) dari atom setiap orang akan mendapat imbalan ke alamat bounty peretas. validator harus memulihkan atom yang tersisa dengan menggunakan kunci cadangannya. Untuk mencegah fitur ini disalahgunakan untuk mentransfer atom yang tidak terikat, bagian dari atom yang terikat vs tidak terikat validators dan delegasi sebelum dan sesudah  ReportHackTx  akan tetap sama, dan hadiah hacker akan mencakup beberapa atom yang tidak terikat, jika ada. Hub Cosmos dioperasikan oleh organisasi terdistribusi yang memerlukan mekanisme tata kelola yang terdefinisi dengan baik mengoordinasikan berbagai perubahan pada blockchain, seperti variabel

parameter sistem, serta peningkatan perangkat lunak dan amandemen konstitusi. Semua validator bertanggung jawab untuk memberikan suara pada semua proposal. Gagal memberikan suara pada proposal secara tepat waktu akan menghasilkan validator dinonaktifkan secara otomatis untuk jangka waktu tertentu yang disebut  Periode Penalti Ketidakhadiran  (DEFAULT 1 minggu). Delegator secara otomatis mewarisi suara yang didelegasikan validator. Pemungutan suara ini dapat diganti secara manual. Atom yang tidak terikat tidak mendapat suara. Setiap proposal memerlukan deposit sebesar  MinimumProposalDeposit  tokens, yang mungkin merupakan kombinasi dari satu atau lebih tokens termasuk atom. Untuk setiap proposal, pemilih dapat memilih untuk menerima depositnya. Jika lebih dari separuh pemilih memilih untuk mengambil deposit (misalnya karena proposalnya adalah spam), deposit masuk ke kumpulan cadangan, kecuali atom apa pun yang dibakar. Untuk setiap usulan, pemilih dapat memilih dengan opsi berikut: Ya YaDengan Force Tidak Tidak Dengan Force Menjauhkan diri Mayoritas suara Ya atau YeaWithForce (atau Tidak atau suara NayWithForce) diperlukan agar proposal dapat diputuskan sebagai disahkan (atau diputuskan gagal), tetapi 1/3+ dapat memveto mayoritas keputusan dengan pemungutan suara “dengan paksa”. Ketika mayoritas ketat diveto, semua orang akan dihukum dengan kehilangan  VetoPenaltyFeeBlocks  (DEFAULT blok senilai 1 hari) senilai biaya (kecuali pajak yang tidak akan terpengaruh), dan partai yang memveto mayoritas

keputusan tersebut juga akan dihukum dengan kehilangan  VetoPenaltyAtoms  (DEFAULT 0,1%) atomnya. Parameter apa pun yang didefinisikan di sini dapat diubah dengan meneruskan  ParameterChangeProposal . Atom dapat diinisasi dan dana cadangan dibelanjakan dengan lolosnya  BountyProposal . Semua proposal lainnya, seperti proposal untuk meningkatkan protokol, akan dikoordinasikan melalui  TextProposal  umum. Lihat Rencananya. Ada banyak inovasi dalam konsensus blockchain dan skalabilitas dalam beberapa tahun terakhir. Bagian ini memberikan penjelasan singkat survei terhadap sejumlah hal penting tertentu. Konsensus di hadapan partisipan yang jahat adalah sebuah masalah dimulai pada awal tahun 1980an, ketika Leslie Lamport menciptakan istilah tersebut frase “Kesalahan Bizantium” untuk merujuk pada perilaku proses yang sewenang-wenang itu menyimpang dari perilaku yang diharapkan, berbeda dengan “kesalahan tabrakan”, dimana suatu proses terhenti begitu saja. Solusi awal ditemukan untuk jaringan sinkron yang memiliki batas ataslatensi pesan, meskipun penggunaan praktisnya sangat terbatas lingkungan yang terkendali seperti pengontrol pesawat dan pusat data disinkronkan melalui jam atom. Itu tidak sampai akhir tahun 90an bahwa Toleransi Kesalahan Bizantium Praktis (PBFT) [11] adalah diperkenalkan sebagai konsensus yang sinkron sebagian dan efisien algoritma mampu mentolerir hingga ⅓ proses yang berperilaku sewenang-wenang. PBFT menjadi algoritma standar, menghasilkan banyak algoritma variasi, termasuk yang terbaru yang dibuat oleh IBM sebagai bagiannya kontribusi mereka terhadap Hyperledger. Manfaat utama dari konsensus Tendermint atas PBFT adalah Tendermint memiliki struktur dasar yang lebih baik dan disederhanakan, beberapa di antaranya merupakan hasil dari penerapan paradigma blockchain. Blok Tendermint harus dilakukan secara berurutan, sehingga meniadakan kompleksitas dan overhead komunikasi yang terkait dengan PBFT perubahan tampilan. Di Cosmos dan banyak mata uang kripto, tidak ada perlu mengizinkan blok N+i di mana i >= 1 untuk dikomit, ketika blok N sendiri belum berkomitmen. Jika bandwidth adalah alasan mengapa blok N belum berkomitmen di zona Cosmos, maka penggunaannya tidak ada gunanya pembagian bandwidth suara untuk blok N+i. Jika partisi jaringan atau node ofzine adalah alasan mengapa blok N belum dikomit N+saya tidak akan berkomitmen. Selain itu, pengelompokan transaksi ke dalam blok memungkinkan Merkle-hashing reguler dari status aplikasi, bukan intisari berkala seperti skema pos pemeriksaan PBFT. Hal ini memungkinkan untuk komitmen transaksi yang lebih cepat dan dapat dibuktikan untuk klien ringan dan lebih cepat komunikasi antar-blockchain. Tendermint Core juga menyertakan banyak pengoptimalan dan fitur yang melampaui apa yang ditentukan dalam PBFT. Misalnya, blok yang diusulkan oleh validators dipecah menjadi beberapa bagian, Merkle-ized, dan bergosip sedemikian rupa sehingga meningkatkan penyiaran kinerja (lihat LibSwift [19] untuk inspirasi). Juga, Tendermint Core tidak membuat asumsi apa pun tentang point-to-point

konektivitas, dan berfungsi selama jaringan P2P ada terhubung dengan lemah. Meskipun bukan yang pertama menerapkan proof-of-stake (PoS), BitShares1.0 [12] berkontribusi besar terhadap penelitian dan adopsi PoS blockchains, khususnya yang dikenal sebagai PoS “terdelegasi”. Di BitShares, pemegang saham memilih "saksi", yang bertanggung jawab untuk memesan dan melakukan transaksi, dan "mendelegasikan", bertanggung jawab untuk mengoordinasikan pembaruan perangkat lunak dan perubahan parameter. BitShares2.0 bertujuan untuk mencapai kinerja tinggi (100k tx/s, 1s latensi) dalam kondisi ideal, dengan setiap blok ditandatangani oleh satu blok penandatanganan, dan kualitas transaksi memakan waktu lebih lama dibandingkan interval blok. Spesifikasi kanonik masih dalam pengembangan. Pemangku kepentingan dapat memberhentikan atau mengganti saksi yang berperilaku buruk pada a setiap hari, namun tidak ada jaminan signifikan dari saksi atau delegasi seperti Tendermint PoS yang dipotong kasus serangan pembelanjaan ganda yang berhasil. Membangun pendekatan yang dipelopori oleh Ripple, Stellar [13] menolak a model Perjanjian Federasi Bizantium dimana prosesnya berpartisipasi dalam konsensus bukan merupakan suatu hal yang yxed dan global himpunan yang diketahui. Sebaliknya, setiap node proses mengkurasi satu atau lebih “irisan kuorum”, yang masing-masing merupakan serangkaian proses tepercaya. SEBUAH “kuorum” di Stellar didefinisikan sebagai sekumpulan node yang berisi di setidaknya satu irisan kuorum untuk setiap node dalam himpunan, sehingga kesepakatan dapat tercapai. Keamanan mekanisme Stellar bergantung pada asumsi bahwa perpotongan dua kuorum mana pun tidak kosong, sedangkan ketersediaan sebuah node memerlukan setidaknya satu dari kuorumnya seluruhnya terdiri dari node yang benar, sehingga menciptakan trade-off di antaranya menggunakan irisan kuorum besar atau kecil yang mungkin sulit untuk diseimbangkan tanpa memaksakan asumsi signifikan tentang kepercayaan. Akhirnya,node entah bagaimana harus memilih potongan kuorum yang memadai agar dapat melakukannya memiliki toleransi kesalahan yang memadai (atau “node utuh” apa pun, di antaranya sebagian besar hasil makalah ini bergantung pada), dan satu-satunya strategi yang disediakan untuk memastikan konfigurasi semacam itu bersifat hierarkis dan mirip dengan Border Gateway Protocol (BGP), yang digunakan oleh ISP papan atas di internet untuk membuat tabel perutean global, dan oleh yang digunakan oleh browser untuk mengelola sertifikat TLS; keduanya terkenal kejam karena ketidakamanan mereka. Kritik dalam makalah Stellar terhadap sistem bukti kepemilikan berbasis Tendermint diatasi dengan strategi token yang dijelaskan di sini, di mana tipe baru token yang disebut atom dikeluarkan mewakili klaim atas bagian imbalan dan imbalan di masa depan. Itu Keuntungan dari proof-of-stake berbasis Tendermint adalah relatifnya kesederhanaan, namun tetap memberikan keamanan yang memadai dan dapat dibuktikan jaminan. BitcoinNG adalah usulan perbaikan untuk Bitcoin yang memungkinkan untuk bentuk skalabilitas vertikal, seperti meningkatkan ukuran blok, tanpa konsekuensi ekonomi negatif yang biasanya terkait dengan perubahan seperti itu, seperti dampak besar yang tidak proporsional pada penambang kecil. Peningkatan ini dicapai dengan pemisahan pemilihan pemimpin dari siaran transaksi: pemimpin adalah yang pertama dipilih oleh proof-of-work di “blok mikro”, dan kemudian mampu menyiarkan transaksi yang akan dilakukan hingga blok mikro baru ditemukan. Hal ini mengurangi kebutuhan bandwidth yang diperlukan memenangkan perlombaan PoW, memungkinkan penambang kecil bersaing secara lebih adil, dan memungkinkan transaksi dilakukan secara lebih teratur oleh penambang terakhir yang menemukan blok mikro. Casper [16] adalah algoritma konsensus proof-of-stake yang diusulkan untuk Ethereum. Modus operasi utamanya adalah “konsensus demi taruhan”. Oleh membiarkan validators bertaruh secara berulang pada blok mana yang mereka yakini akan berhasil

berkomitmen pada blockchain berdasarkan taruhan lainnya yang telah mereka lihat sejauh ini, pada akhirnya keutuhan dapat dicapai. link. Ini adalah area penelitian aktif yang dilakukan oleh tim Casper. Itu Tantangannya adalah membangun mekanisme taruhan yang bisa dilakukan terbukti menjadi strategi yang stabil secara evolusi. Manfaat utama dari Casper dibandingkan dengan Tendermint mungkin menawarkan “ketersediaan terlalu konsisten” – konsensus tidak memerlukan >⅔ kuorum hak suara – mungkin mengorbankan kecepatan komitmen atau kompleksitas implementasi. Protokol Interledger [14] tidak sepenuhnya merupakan solusi skalabilitas. Itu menyediakan interoperasi ad hoc antara buku besar yang berbeda sistem melalui jaringan hubungan bilateral yang digabungkan secara longgar. Seperti Lightning Network, tujuan ILP adalah untuk memfasilitasi pembayaran, namun secara khusus berfokus pada pembayaran yang berbeda-beda jenis buku besar, dan memperluas mekanisme transaksi atom ke tidak hanya mencakup hash-gembok, tetapi juga kuorum notaris (disebut Protokol Transportasi Atom). Mekanisme terakhir untuk menerapkan atomisitas dalam transaksi antar buku besar serupa dengan Mekanisme SPV klien ringan Tendermint, jadi ilustrasinya perbedaan antara ILP dan Cosmos/IBC dibenarkan, dan disediakan di bawah ini. 1. Notaris penghubung di ILP tidak mendukung keanggotaan perubahan, dan tidak memungkinkan adanya pembobotan yang signifikan di antara keduanya notaris. Di sisi lain, IBC dirancang khusus untuk blockchains, dimana validators dapat memiliki bobot yang berbeda, dan di mana keanggotaan dapat berubah seiring berjalannya waktu blockchain. 2. Seperti di Lightning Network, penerima pembayaran di ILP harus online untuk mengirim konfirmasi kembali ke pengirim. Di sebuahtoken transfer melalui IBC, set validator dari penerima blockchain bertanggung jawab untuk memberikan konfirmasi, bukan pengguna penerima. 3. Perbedaan yang paling mencolok adalah konektor ILP tidak bertanggung jawab atau menjaga otoritas mengenai pembayaran, sedangkan di Cosmos, validators dari sebuah hub adalah wewenang dari keadaan IBC token transfer serta kewenangannya jumlah tokens yang dimiliki oleh masing-masing zona (tetapi bukan jumlah tokens dipegang oleh setiap akun dalam suatu zona). Ini adalah inovasi mendasar yang memungkinkan asimetris aman perpindahan tokens dari zona ke zona; analog dengan ILP konektor di Cosmos bersifat persisten dan aman secara maksimal blockchain buku besar, Hub Cosmos. 4. Pembayaran antar buku besar di ILP perlu didukung oleh tukar buku pesanan, karena tidak ada transfer asimetris koin dari satu buku besar ke buku besar lainnya, hanya transfer nilai atau setara pasar. Sidechains [15] adalah mekanisme yang diusulkan untuk menskalakan Bitcoin jaringan melalui blockchain alternatif yang “dipatok dua arah”. Bitcoin blockchain. (Pegging dua arah setara dengan menjembatani. Dalam Cosmos kami mengatakan "menjembatani" untuk membedakan dari penetapan pasar). Sidechain memungkinkan bitcoin berpindah secara efektif dari Bitcoin blockchain ke rantai samping dan belakang, dan biarkan eksperimen dalam fitur-fitur baru di sidechain. Seperti di Cosmos Hub, sidechain, dan Bitcoin berfungsi sebagai klien ringan satu sama lain, menggunakan bukti SPV untuk menentukan kapan koin seharusnya dikeluarkan ditransfer ke sidechain dan kembali. Tentu saja, sejak Bitcoin menggunakan proof-of-work, rantai samping yang berpusat di sekitar Bitcoin menderita dari sekian banyak permasalahan dan resiko proof-of-work sebagai a mekanisme konsensus. Selain itu, ini adalah Bitcoin-maksimalis solusi yang tidak mendukung berbagai token dan

topologi jaringan antar zona seperti yang dilakukan Cosmos. Konon, intinya Mekanisme pasak dua arah pada prinsipnya sama dengan itu dipekerjakan oleh jaringan Cosmos. Ethereum saat ini sedang meneliti sejumlah strategi berbeda untuk membagi status Ethereum blockchain ke alamat kebutuhan skalabilitas. Upaya tersebut mempunyai tujuan untuk mempertahankan lapisan abstraksi yang ditawarkan oleh Mesin Virtual Ethereum saat ini melintasi ruang negara bersama. Berbagai upaya penelitian adalah sedang berlangsung saat ini. [18][22] Cosmos dan Ethereum 2.0 Mauve [22] memiliki tujuan desain yang berbeda. Cosmos khususnya tentang tokens. Mauve adalah tentang penskalaan perhitungan umum. Cosmos tidak terikat pada EVM, jadi VM yang berbeda pun bisa saling beroperasi. Cosmos memungkinkan pembuat zona menentukan siapa yang memvalidasi zona. Siapa pun dapat memulai zona baru di Cosmos (kecuali tata kelola memutuskan sebaliknya). Hub mengisolasi kegagalan zona sehingga ada invarian token global dilestarikan. Lightning Network adalah jaringan transfer token yang diusulkan beroperasi pada lapisan di atas Bitcoin blockchain (dan publik lainnya blockchains), memungkinkan peningkatan berkali-kali lipat dalam throughput transaksi dengan memindahkan sebagian besar transaksi di luar buku besar konsensus ke dalam apa yang disebut “saluran pembayaran”.Hal ini dimungkinkan oleh skrip mata uang kripto on-chain, yang memungkinkan para pihak untuk mengadakan kontrak negara bilateral di mana negara dapat diperbarui dengan berbagi tanda tangan digital, dan kontrak dapat ditutup dengan menerbitkan bukti secara tahunan ke blockchain, a mekanisme yang pertama kali dipopulerkan oleh pertukaran atom lintas rantai. Oleh membuka saluran pembayaran dengan banyak pihak, peserta Lightning Network dapat menjadi titik fokus untuk routing pembayaran pihak lain, yang mengarah ke saluran pembayaran yang terhubung sepenuhnya jaringan, dengan biaya modal yang terikat pada saluran pembayaran. Sedangkan Lightning Network juga dapat dengan mudah diperluas beberapa blockchain independen untuk memungkinkan transfer nilai melalui pasar pertukaran, tidak dapat digunakan secara asimetris transfer tokens dari satu blockchain ke yang lain. Manfaat utama dari jaringan Cosmos yang dijelaskan di sini adalah untuk mengaktifkan langsung tersebut token transfer. Meskipun demikian, kami mengharapkan saluran pembayaran dan Lightning Network menjadi diadopsi secara luas bersama dengan kami token mekanisme transfer, untuk alasan penghematan biaya dan privasi. Segregated Witness adalah tautan proposal perbaikan Bitcoin itu bertujuan untuk meningkatkan throughput transaksi per blok 2X atau 3X, sekaligus mempercepat sinkronisasi blok untuk node baru. Kecemerlangan solusi ini terletak pada cara kerjanya di dalam keterbatasan protokol Bitcoin saat ini dan memungkinkan adanya soft-fork upgrade (yaitu klien dengan versi perangkat lunak yang lebih lama akan terus berfungsi setelah peningkatan). Tendermint, menjadi yang baru protokol, tidak memiliki batasan desain, sehingga memiliki skala yang berbeda prioritas. Terutama, Tendermint menggunakan algoritma round-robin BFT berdasarkan tanda tangan kriptografi, bukan penambangan, yang mana secara sepele memungkinkan penskalaan horizontal melalui beberapa paralel blockchains, meskipun penerapan blok yang teratur dan lebih sering memungkinkan penskalaan vertikal juga.

Consenso e detalhes técnicos

Um protocolo de consenso bem concebido deve fornecer algumas garantias caso a capacidade de tolerância seja ultrapassada e o consenso falha. Isto é especialmente necessário na economia sistemas, onde o comportamento bizantino pode ter um impacto financeiro substancial recompensa. A garantia mais importante é uma forma de responsabilização, onde os processos que levaram ao consenso falhar (ou seja, fez com que os clientes do protocolo aceitassem valores diferentes - um garfo) pode ser identificado e punido de acordo com as regras do protocolo, ou, possivelmente, o sistema legal. Quando o sistema jurídico é não confiável ou excessivamente caro para invocar, validators podem ser forçados a fazer depósitos de segurança para participar, e aqueles os depósitos podem ser revogados ou cortados quando um comportamento malicioso é detectado [10]. Observe que isso é diferente de Bitcoin, onde a bifurcação é uma ocorrência regular devido à assincronia da rede e à natureza probabilística da localização colisões parciais hash. Como em muitos casos um fork malicioso é indistinguível de uma bifurcação devido à assincronia, Bitcoin não pode implementar de forma confiável a responsabilidade do fork, além da implícita custo de oportunidade pago pelos mineradores para minerar um bloco órfão. Chamamos os estágios de votação de PreVote e PreCommit. Uma votação pode ser a favor um bloco específico ou para Nil. Chamamos uma coleção de >⅔ Pré-Votos para um único bloco na mesma rodada, uma Polca e uma coleção de >⅔ Pré-Commits para um único bloco na mesma rodada de um Commit. Se >⅔ Pré-Commit para Nil na mesma rodada, eles passam para a próxima redondo. Observe que o determinismo estrito no protocolo incorre em uma fraqueza suposição de sincronia, pois líderes defeituosos devem ser detectados e

ignorado. Assim, validators esperam algum tempo, TimeoutPropose, antes de Prevote Nil, e o valor de TimeoutPropose aumenta a cada rodada. Progressão através o resto da rodada é totalmente assíncrona, pois o progresso só é feito assim que um validator recebe notícias de >⅔ da rede. Na prática, seria necessário um adversário extremamente forte para frustrar indefinidamente a suposição de sincronia fraca (fazendo com que o consenso não consiga já cometeu um bloco), e isso pode ser ainda mais difícil usando valores aleatórios de TimeoutPropose em cada validator. Um conjunto adicional de restrições, ou regras de bloqueio, garantem que o a rede eventualmente comprometerá apenas um bloco em cada altura. Qualquer tentativa maliciosa de fazer com que mais de um bloco seja confirmado a uma determinada altura pode ser identificado. Primeiro, um PreCommit para um bloco deve vir com justificativa, em forma de Polca para aquele bloco. Se o validator já tiver pré-comprometido um bloco na rodada R_1, nós dizem que estão trancados naquele quarteirão, e a Polca costumava justificar o novo PreCommit na rodada R_2 deve vir em uma rodada R_polka onde R_1 < R_polka <= R_2. Em segundo lugar, validators devem propor e/ou pré-votar o bloco em que estão bloqueados. Juntos, esses condições garantem que um validator não faça Pré-Commit sem evidências suficientes como justificativa, e que validators que têm já o PreCommit não pode contribuir com evidências para o PreCommit outra coisa. Isso garante a segurança e a vivacidade do algoritmo de consenso. Os detalhes completos do protocolo estão descritos aqui. A necessidade de sincronizar todos os cabeçalhos de bloco é eliminada no TendermintPoS, pois a existência de uma cadeia alternativa (um fork) significa ≥⅓ de a participação vinculada pode ser reduzida. Claro, já que cortar requer que alguém compartilhe evidências de um fork, os clientes leves devem armazenar qualquer block-hash confirma que vê. Além disso, clientes levespoderia ficar periodicamente sincronizado com as alterações no conjunto validator, em para evitar ataques de longo alcance (mas outras soluções são possível). Com espírito semelhante ao Ethereum, o Tendermint permite que os aplicativos incorporar uma raiz Merkle global hash em cada bloco, permitindo facilmente consultas de estado verificáveis para coisas como saldos de contas, o valor armazenado em um contrato, ou a existência de uma transação não gasta saída, dependendo da natureza da aplicação. Assumindo uma coleção de redes de transmissão suficientemente resiliente e um conjunto validator estático, qualquer bifurcação no blockchain pode ser detectado e os depósitos dos validators infratores cortados. Isto inovação, sugerida pela primeira vez por Vitalik Buterin no início de 2014, resolve o problema de nada em jogo de outros proof-of-stake criptomoedas (ver Trabalho Relacionado). No entanto, como validator define deve ser capaz de alterar, durante um longo período de tempo, o original validators podem todos se tornar desvinculados e, portanto, estariam livres para criar uma nova cadeia a partir do bloco gênese, sem incorrer em nenhum custo, pois eles não têm mais depósitos bloqueados. Este ataque veio a ser conhecido como Ataque de Longo Alcance (LRA), em contraste com um Ataque de Curto Alcance Ataque à distância, onde validators que estão atualmente vinculados causam um fork e são, portanto, puníveis (assumindo um fork responsável BFT algoritmo como consenso Tendermint). Ataques de longo alcance são muitas vezes considerado um golpe crítico para proof-of-stake. Felizmente, o LRA pode ser mitigado da seguinte forma. Primeiro, por um validator para desvincular (recuperando assim seu depósito de garantia e não ganhando mais taxas para participar do consenso), o o depósito deve ser intransferível por um período de tempo conhecido como “período de desvinculação”, que pode ser da ordem de semanas ou meses. Segundo, para que um cliente leve esteja seguro, o primeiro vez que se conecta à rede, ele deve verificar um bloco recente-hash contra uma fonte confiável ou, de preferência, múltiplas fontes. Isto

Essa condição é às vezes chamada de “subjetividade fraca”. Finalmente, para permanecer seguro, ele deve sincronizar com o validator mais recente definido em menos tão frequentemente quanto a duração do período de desvinculação. Isto garante que o cliente light saiba sobre as alterações no validator definido antes de um validator ter seu capital não garantido e, portanto, não mais em jogo, o que lhe permitiria enganar o cliente realizando um ataque de longo alcance criando novos blocos começando em um altura onde foi colado (assumindo que tenha controle de muitas das primeiras chaves privadas). Note-se que superar o LRA desta forma requer uma revisão o modelo de segurança original de proof-of-work. No PoW, é assumiu que um cliente leve pode sincronizar com a altura atual do bloco genesis confiável a qualquer momento, simplesmente processando a prova de trabalho em cada cabeçalho do bloco. Para superar o LRA, no entanto, exigem que um cliente light fique online com alguma regularidade para rastrear alterações no conjunto validator e que na primeira vez elas ficam on-line, eles devem ter cuidado especial para autenticar o que ouvem da rede em relação a fontes confiáveis. De claro, este último requisito é semelhante ao de Bitcoin, onde o protocolo e o software também devem ser obtidos de um confiável fonte. O método acima para prevenir LRA é adequado para validators e nós completos de um blockchain alimentado por Tendermint porque estes os nós devem permanecer conectados à rede. O método também é adequado para clientes leves que podem esperar sincronizar com a rede frequentemente. No entanto, para clientes leves que não se espera que tenham acesso frequente à Internet ou ao blockchain rede, ainda outra solução pode ser usada para superar o LRA. Titulares que não sejam validator token podem postar seus tokens como garantia com um período de desvinculação muito longo (por exemplo, muito mais longo do que o período de desvinculação para validators) e atender clientes light com um método secundário de atestar a validade dos dados atuais e bloco passado-hashes. Embora esses tokens não contem para o segurança do consenso de blockchain, eles podem, no entanto,fornecer fortes garantias para clientes leves. Se bloco histórico-hash consultas eram suportadas em Ethereum, qualquer um poderia vincular seus tokens em um smart contract especialmente projetado e fornece serviços de atestado pagos, criando efetivamente um mercado para segurança LRA lightclient. Devido à definição de um bloco commit, qualquer coalizão ≥⅓ de o poder de voto pode interromper o blockchain ficando offzine ou não transmitindo seus votos. Tal coligação também pode censurar transações específicas, rejeitando blocos que incluem esses transações, embora isso resultasse em uma proporção significativa de propostas de bloco a serem rejeitadas, o que desaceleraria o ritmo de commits de bloco do blockchain, reduzindo sua utilidade e valor. A coalizão maliciosa também pode transmitir votos aos poucos, para que quanto a moer o bloco blockchain quase paralisar ou se envolver em qualquer combinação desses ataques. Finalmente, pode causar blockchain para bifurcar, assinando duas vezes ou violando o bloqueio regras. Se um adversário globalmente activo também estivesse envolvido, poderia particionar a rede de tal forma que pode parecer que o errado subconjunto de validators foram responsáveis pela desaceleração. Isto não é apenas uma limitação do Tendermint, mas sim uma limitação de todos protocolos de consenso cuja rede é potencialmente controlada por um adversário ativo. Para esses tipos de ataques, um subconjunto de validators deve coordenar através de meios externos para assinar uma proposta de reorganização que escolhe uma bifurcação (e qualquer evidência dela) e o subconjunto inicial de validators com suas assinaturas. Os validadores que assinam tal proposta de reorganização renunciam à sua garantia em todos os outros forks. Os clientes devem verificar as assinaturas na proposta de reorganização, verificar qualquer evidência, e fazer um julgamento ou solicitar uma decisão ao usuário final. Para Por exemplo, um aplicativo de carteira telefônica pode solicitar ao usuário uma mensagem de segurança

aviso, embora uma geladeira possa aceitar qualquer proposta de reorganização assinado por +½ dos validators originais com poder de voto. Nenhum algoritmo bizantino tolerante a falhas não síncrono pode surgir ao consenso quando ≥⅓ do poder de voto são desonestos, mas uma bifurcação assume que ≥⅓ do poder de voto já foi desonesto por assinatura dupla ou alteração de bloqueio sem justificativa. Então, assinando a proposta de reorganização é um problema de coordenação que não pode ser resolvido por qualquer protocolo não síncrono (isto é, automaticamente, e sem fazer suposições sobre a confiabilidade do rede subjacente). Por enquanto, deixamos o problema da coordenação de propostas de reorganização para a coordenação humana via consenso social na mídia da internet. Os validadores devem ter cuidado para garantir que haja não há partições de rede restantes antes de assinar uma proposta de reorganização, para evitar situações em que duas propostas de reorganização conflitantes sejam assinadas. Supondo que o meio e o protocolo de coordenação externa sejam robusto, segue-se que os forks são menos preocupantes do que a censura ataques. Além de bifurcações e censura, que exigem ≥⅓ Bizantina poder de voto, uma coalizão com >⅔ poder de voto pode comprometer estado arbitrário e inválido. Isso é característico de qualquer (BFT) sistema de consenso. Ao contrário da assinatura dupla, que cria bifurcações com evidências facilmente verificáveis, detectando o comprometimento de um estado inválido requer pares não validados para verificar blocos inteiros, o que implica que eles mantenham uma cópia local do estado e executem cada transação, calculando a raiz do estado de forma independente para eles mesmos. Uma vez detectada, a única maneira de lidar com tal falha é através do consenso social. Por exemplo, em situações onde Bitcoin falhou, seja bifurcação devido a bugs de software (como em março 2013), ou cometendo estado inválido devido ao comportamento bizantino de mineiros (como em julho de 2015), a comunidade bem conectada de empresas, desenvolvedores, mineradores e outras organizações estabeleceu um consenso social sobre quais ações manuais eramexigido pelos participantes para curar a rede. Além disso, desde Pode-se esperar que validators de um Tendermint blockchain sejam identificável, o comprometimento de um estado inválido pode até ser punível por lei ou alguma jurisprudência externa, se desejado. ABCI consiste em 3 tipos de mensagens principais que são entregues de o núcleo da aplicação. O aplicativo responde com mensagens de resposta correspondentes. A mensagem  AppendTx  é o carro-chefe do aplicativo. Cada a transação em blockchain é entregue com esta mensagem. O aplicativo precisa validar cada transação recebida com o Mensagem AppendTx em relação ao estado atual, protocolo de aplicação, e as credenciais criptográficas da transação. Um validado transação então precisa atualizar o estado do aplicativo - por vinculando um valor a um armazenamento de valores-chave ou atualizando o UTXO banco de dados. A mensagem  CheckTx  é semelhante a AppendTx, mas é apenas para validando transações. Primeiras verificações do mempool do Tendermint Core a validade de uma transação com CheckTx, e apenas retransmite válido transações para seus pares. Os aplicativos podem verificar um incremento nonce na transação e retornará um erro no CheckTx se o nonce é antigo. A mensagem  Commit  é usada para calcular uma criptografia compromisso com o estado atual da aplicação, para ser colocado no cabeçalho do próximo bloco. Isso tem algumas propriedades úteis. Inconsistências na atualização desse estado agora aparecerão como blockchain bifurcações que capturam toda uma classe de programação erros. Isso também simplifica o desenvolvimento de soluções leves e seguras clientes, como as provas Merkle-hash podem ser verificadas verificando-se o bloco-hash, e o bloco-hash é assinado por um quórum de validators (por poder de voto).

Mensagens ABCI adicionais permitem que o aplicativo acompanhe e alterar o conjunto validator, e para que a aplicação receba o bloquear informações, como a altura e os votos de confirmação. ABCI solicitações/respostas são mensagens simples do Protobuf. Verifique o esquema yle. Argumentos: Dados ([]byte): os bytes da transação da solicitação Retorna: Código (uint32): código de resposta Dados ([]byte): bytes de resultado, se houver Log (string): mensagem de depuração ou erro Uso:

Anexe e execute uma transação. Se a transação for válida, retorna CodeType.OK Argumentos: Dados ([]byte): os bytes da transação da solicitação Retorna: Código (uint32): código de resposta Dados ([]byte): bytes de resultado, se houver Log (string): mensagem de depuração ou erro Uso:

Valide uma transação. Esta mensagem não deve alterar o estado. As transações são executadas primeiro através do CheckTx antes transmitir para pares na camada mempool. Você pode fazer CheckTx semi-stateful e limpe o estado após Commit ou BeginBlock , para permitir sequências dependentes de transações no mesmo bloco.

Retorna: Dados ([]byte): raiz Merkle hash Log (string): mensagem de depuração ou erro Uso:

Retorne uma raiz Merkle hash do estado do aplicativo. Argumentos: Dados ([]byte): os bytes da solicitação de consulta Retorna: Código (uint32): código de resposta Dados ([]byte): os bytes de resposta da consulta Log (string): mensagem de depuração ou erro Uso:

Limpe a fila de respostas. Aplicativos que implementam types.Application não precisa implementar esta mensagem – é manipulados pelo projeto. Retorna: Dados ([]byte): os bytes de informação Uso:

Retorne informações sobre o estado do aplicativo. Aplicação específico. Argumentos: Chave (string): chave a ser definida

Valor (string): valor a ser definido para a chave Retorna: Log (string): mensagem de depuração ou erro Uso:

Defina as opções do aplicativo. Por exemplo Chave=“modo”, Valor=“mempool” para uma conexão mempool, ou Key=“mode”, Value=“consensus” para uma conexão de consenso. Outras opções são específicas do aplicativo. Argumentos: Validadores ([]Validador): gênese inicial-validators Uso:

Chamado uma vez no Gênesis Argumentos: Altura (uint64): a altura do bloco que está começando Uso:

Sinaliza o início de um novo bloco. Chamado antes de qualquer ApêndiceTxs. Argumentos: Altura (uint64): a altura do bloco que terminou Retorna: Validadores ([]Validador): validators alterados com novos poderes de voto (0 para remover) Uso:

Sinaliza o fim de um bloco. Afinal, chamado antes de cada Commit transações Consulte o repositório ABCI para obter mais detalhes.Existem vários motivos pelos quais um remetente pode querer que o confirmação da entrega de um pacote pela cadeia receptora. Por exemplo, o remetente pode não saber o status do cadeia de destino, se for esperado que esteja com defeito. Ou o remetente pode deseja impor um tempo limite ao pacote (com o parâmetro  MaxHeight  rendimento de pacotes), enquanto qualquer cadeia de destino pode sofrer um ataque de negação de serviço com um aumento repentino no número de mensagens recebidas. pacotes. Nestes casos, o remetente pode exigir confirmação de entrega definindo o status inicial do pacote como  AckPending . Então, é o responsabilidade da cadeia de recebimento de confirmar a entrega, incluindo um abreviado como  IBCPacket  no aplicativo Merkle hash. Primeiro, um  IBCBlockCommit  e um  IBCPacketTx  são postados no “Hub” isso comprova a existência de um  IBCPacket  na “Zona1”. Diga isso  IBCPacketTx  tem o seguinte valor: FromChainID: “Zona1” FromBlockHeight: 100 (digamos) Pacote: um IBCPacket:

Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 (digamos) Status: ConfirmadoPendente Tipo: “moeda” MaxHeight: 350 (digamos que “Hub” está atualmente na altura 300) Carga útil: Em seguida, um  IBCBlockCommit  e  IBCPacketTx  são postados na “Zona2” isso comprova a existência de um  IBCPacket  no “Hub”. Diga isso  IBCPacketTx  tem o seguinte valor: FromChainID: “Hub” FromBlockHeight: 300 Pacote: um IBCPacket: Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 Status: ConfirmadoPendente Tipo: “moeda” Altura máxima: 350 Carga útil: A seguir, “Zone2” deve incluir em seu app-hash um pacote abreviado que mostra o novo status de  AckSent . Um  IBCBlockCommit  e  IBCPacketTx  são postados de volta no “Hub” que comprova a existência de um  IBCPacket abreviado  na "Zona2". Diga isso  IBCPacketTx  tem o seguinte valor: FromChainID: “Zona2”

FromBlockHeight: 400 (digamos) Pacote: um IBCPacket: Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 Status: AckSent Tipo: “moeda” Altura máxima: 350 PayloadHash: Finalmente, o “Hub” deve atualizar o status do pacote desde  AckPending  para  AckReceived . Evidência deste novo status ynalizado deve voltar para "Zona2". Digamos que  IBCPacketTx  tenha o seguinte valor: FromChainID: “Hub” FromBlockHeight: 301 Pacote: um IBCPacket: Cabeçalho: um IBCPacketHeader: SrcChainID: “Zona1” DstChainID: “Zona2” Número: 200 Status: AckRecebido Tipo: “moeda” Altura máxima: 350 PayloadHash: Enquanto isso, “Zona1” pode assumir com otimismo uma entrega bem-sucedida de um pacote de "moedas", salvo prova em contrário “Centro”. No exemplo acima, se “Hub” não tivesse recebido um  AckSent

status de “Zona2” pelo bloco 350, teria definido o status automaticamente para  Tempo limite . Esta evidência de um tempo limite pode ser postado de volta em “Zone1”, e qualquer tokens pode ser retornado. Existem dois tipos de Merkle trees suportados no Ecossistema Tendermint/Cosmos: A Árvore Simples e o IAVL+ Árvore. A Árvore Simples é um Merkle tree para uma lista estática de elementos. Se o número de itens não é uma potência de dois, algumas folhas estarão em níveis diferentes. Simple Tree tenta manter ambos os lados da árvore mesma altura, mas a esquerda pode ser uma maior. Este Merkle tree é usado para Merkle-ize as transações de um bloco, e o nível superior elementos da raiz do estado do aplicativo.O objetivo da estrutura de dados IAVL+ é fornecer dados persistentes armazenamento para pares de valores-chave no estado do aplicativo, de modo que um A raiz determinística de Merkle hash pode ser calculada de forma eficiente. O árvore é balanceada usando uma variante do algoritmo AVL, e todos as operações são O (log (n)). Em uma árvore AVL, as alturas das duas subárvores filhas de qualquer nó diferem em no máximo um. Sempre que esta condição for violada por um atualização, a árvore é reequilibrada criando O(log(n)) novos nós que apontam para nós não modificados da árvore antiga. No AVL original algoritmo, os nós internos também podem conter pares de valores-chave. O AVL+ algoritmo (observe o sinal de mais) modifica o algoritmo AVL para manter todos valores em nós folha, enquanto usa apenas nós de ramificação para armazenar chaves. Isso simplifica o algoritmo enquanto mantém a trilha merkle hash curto. A árvore AVL + é análoga às tentativas de Patricia de Ethereum. Existem compensações. As chaves não precisam ser hashed antes da inserção em Árvores IAVL+, portanto, isso fornece iteração ordenada mais rápida na chave espaço que pode beneficiar algumas aplicações. A lógica é mais simples de implementar, exigindo apenas dois tipos de nós – nós internos e nós de folha. A prova de Merkle é em média mais curta, sendo uma                 *                 / \               /     \             /         \           /             \          *               *         / \             / \        /   \           /   \       /     \         /     \      *       *       *       h6     / \     / \     / \    h0  h1  h2  h3  h4  h5    Uma SimpleTree com 7 elementos

árvore binária balanceada. Por outro lado, a raiz Merkle de um A árvore IAVL+ depende da ordem das atualizações. Apoiaremos Merkle trees eficientes adicionais, como Patricia Trie de Ethereum quando a variante binária se torna disponível. Na implementação canônica, as transações são transmitidas para o Aplicativo hub Cosmos por meio da interface ABCI. O hub Cosmos aceitará uma série de transações primárias tipos, incluindo  SendTx ,  BondTx ,  UnbondTx ,  ReportHackTx ,  SlashTx ,  BurnAtomTx ,  ProposalCreateTx  e  ProposalVoteTx , que são bastante autoexplicativos e serão documentados em um revisão futura deste artigo. Aqui documentamos os dois principais tipos de transação para IBC:  IBCBlockCommitTx  e  IBCPacketTx . Uma transação  IBCBlockCommitTx  é composta por: ChainID (string): o ID de blockchain BlockHash ([]byte): O bloco-hash bytes, a raiz Merkle que inclui o aplicativo-hash BlockPartsHeader (PartSetHeader): o cabeçalho do conjunto parcial do bloco bytes, necessários apenas para verificar assinaturas de votos BlockHeight (int): a altura do commit BlockRound (int): a rodada do commit Commit ([]Vote): O >⅔ Tendermint Precommit vota que compreende um commit de bloco ValidatorsHash ([]byte): uma raiz Merkle-tree hash do novo validator conjunto

ValidatorsHashProof (SimpleProof): um SimpleTree Merkleproof para provar o ValidatorsHash em relação ao BlockHash AppHash ([]byte): uma raiz da árvore IAVLTree Merkle hash do estado do aplicativo AppHashProof (SimpleProof): uma prova SimpleTree Merkle para provando o AppHash contra o BlockHash Um  IBCPacket  é composto por: Cabeçalho (IBCPacketHeader): o cabeçalho do pacote Carga útil ([]byte): os bytes da carga útil do pacote. Opcional PayloadHash ([]byte) : o hash para os bytes do pacote. Opcional Um dos  Payload  ou  PayloadHash  deve estar presente. O hash de um  IBCPacket  é uma raiz simples de Merkle dos dois itens,  Header  e  Carga útil . Um  IBCPacket  sem a carga completa é chamado de pacote abreviado. Um  IBCPacketHeader  é composto por: SrcChainID (string): o ID blockchain de origem DstChainID (string): o ID de destino blockchain Número (int): um número exclusivo para todos os pacotes Status (enum): pode ser AckPending , AckSent , AckReceived , NoAck ou Tempo limite Tipo (string): os tipos dependem do aplicativo. Cosmos reserva o tipo de pacote "moeda" MaxHeight (int): se o status não for NoAckWanted ou AckReceived nesta altura, o status se torna Timeout . Opcional Uma transação  IBCPacketTx  é composta por:FromChainID (string): o ID do blockchain que é fornecendo este pacote; não necessariamente a fonte FromBlockHeight (int): a altura blockchain em que o O seguinte pacote está incluído (Merkle-izado) no bloco-hash de a cadeia de origem Pacote (IBCPacket): um pacote de dados, cujo status pode ser um de AckPending , AckSent , AckReceived , NoAck ou Timeout PacketProof (IAVLProof): uma prova IAVLTree Merkle para prova o hash do pacote em relação ao AppHash da cadeia de origem em dada altura A sequência para enviar um pacote de “Zona1” para “Zona2” através do "Hub" está representado na {Figura X}. Primeiro, um  IBCPacketTx  prova ao "Hub" que o pacote está incluído no estado do aplicativo de “Zona1”. Então, outro  IBCPacketTx  prova para “Zona2” que o o pacote está incluído no estado do aplicativo “Hub”. Durante este procedimento, os rendimentos  IBCPacket  são idênticos: o  SrcChainID  é sempre “Zone1” e o  DstChainID  é sempre "Zone2". O  PacketProof  deve ter o caminho à prova de Merkle correto, conforme segue: Quando “Zone1” deseja enviar um pacote para “Zone2” através de “Hub”, os dados de  IBCPacket  são idênticos, quer o pacote seja Merkleizado na “Zona1”, no “Hub” ou na “Zona2”. O único rendimento mutável é  Status para rastreamento de entrega. Agradecemos aos nossos amigos e colegas pela ajuda na conceituação, revisando e fornecendo suporte para nosso trabalho com Tendermint e Cosmos. IBC///

Zaki Manian do SkuChain forneceu muita ajuda na formatação e redação, especialmente na seção ABCI Jehan Tremback da Althea e Dustin Byington por ajudar com iterações iniciais Andrew Miller da Honey Badger pelo feedback sobre o consenso Greg Slepak pelo feedback sobre consenso e redação Também obrigado a Bill Gleim e Seunghwan Han por vários contribuições. Seu nome e organização aqui pela sua contribuição 1 Bitcoin: https://bitcoin.org/bitcoin.pdf 2ZeroCash: http://zerocash-project.org/paper 3 Ethereum: https://github.com/ethereum/wiki/wiki/WhitePaper 4 ODAO: https://download.slock.it/public/DAO/WhitePaper.pdf 5 Testemunha Segregada: https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf 7 Rede Lightning: https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8Tendermint: https://github.com/tendermint/tendermint/wiki 9 Impossibilidade de FLP: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 10Cortador: https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf Compartilhamentos de 12 bits: https://bitshares.org/technology/delegatedproof-of-stake-consensus/

13 Stellar: https://www.stellar.org/papers/stellar-consensusprotocol.pdf 14 Registro intermediário: https://interledger.org/rfcs/0001-interledgerarchitecture/ 15 Cadeias laterais: https://blockstream.com/sidechains.pdf 16 Cáspero: https://blog.ethereum.org/2015/08/01/introducing-casperfriendly-ghost/ 17 ABCI: https://github.com/tendermint/abci 18 Ethereum Fragmentação: https://github.com/ethereum/EIPs/issues/53 19LibSwift: http://www.ds.ewi.tudelft.nl/yleadmin/pds/papers/Performa nceAnalysisOfLibswift.pdf 20 DLS: http://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf 21 Segurança de Thin Client: https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum Papel Malva 2.0: http://vitalik.ca/yles/mauve_paper.html https://www.docdroid.net/ec7xGzs/314477721-ethereumplatform-review-opportunities-and-challenges-for-privateand-consortium-blockchains.pdf.html

³ é

Konsensus dan Detail Teknis

Protokol konsensus yang dirancang dengan baik dapat memberikan beberapa hal jaminan apabila kapasitas toleransi terlampaui dan konsensus gagal. Hal ini terutama diperlukan dalam bidang ekonomi sistem, di mana perilaku Bizantium dapat mempunyai dampak finansial yang besar hadiah. Jaminan yang paling penting tersebut adalah bentuk akuntabilitas, dimana proses-proses itu menimbulkan konsensus gagal (yaitu menyebabkan klien protokol menerima nilai yang berbeda - a garpu) dapat diidentifikasi dan dihukum sesuai dengan aturan protokol, atau, mungkin, sistem hukum. Ketika sistem hukumnya tidak dapat diandalkan atau terlalu mahal untuk digunakan, validator bisa jadi dipaksa untuk memberikan uang jaminan untuk berpartisipasi, dan itu simpanan dapat dicabut, atau dipotong, apabila terjadi perilaku jahat terdeteksi [10]. Perhatikan bahwa ini tidak seperti Bitcoin, di mana forking adalah kejadian biasa karena asinkronnya jaringan dan sifat probabilistik dari hasil pencarian tabrakan sebagian hash. Karena dalam banyak kasus ada garpu berbahaya tidak dapat dibedakan dari garpu karena asinkron, Bitcoin tidak bisa andal menerapkan akuntabilitas fork, selain yang implisit biaya peluang yang dibayarkan oleh penambang untuk menambang blok yatim piatu. Kami menyebut tahapan pemungutan suara PreVote dan PreCommit. Pemungutan suara bisa untuk blok tertentu atau untuk Nil. Kami menyebutnya kumpulan >⅔ PreVotes untuk satu blok di babak yang sama sebuah Polka, dan kumpulan >⅔ PreCommits untuk satu blok di putaran yang sama dengan Commit. Jika >⅔ PreCommit untuk Nil di babak yang sama, mereka melanjutkan ke babak berikutnya bulat. Perhatikan bahwa determinisme yang ketat dalam protokol menimbulkan kelemahan asumsi sinkronisasi sebagai pemimpin yang salah harus dideteksi dan

dilewati. Jadi, validators menunggu beberapa saat, TimeoutUsulkan, sebelum mereka Prevote Nil, dan nilai TimeoutPropose meningkat pada setiap putaran. Kemajuan melalui sisa putaran sepenuhnya tidak sinkron, hanya kemajuan yang ada dibuat setelah validator mendengar dari >⅔ jaringan. Dalam praktiknya, dibutuhkan musuh yang sangat kuat untuk menggagalkannya tanpa batas waktu asumsi sinkronisasi yang lemah (menyebabkan gagalnya konsensus pernah melakukan satu blok), dan hal itu dapat dilakukan lebih banyak lagi kesulitan dengan menggunakan nilai acak TimeoutPropose pada masing-masingnya validator. Serangkaian batasan tambahan, atau Aturan Penguncian, memastikan bahwa jaringan pada akhirnya akan melakukan hanya satu blok pada setiap ketinggian. Apa saja upaya jahat untuk menyebabkan lebih dari satu blok dilakukan pada ketinggian tertentu dapat diidentifikasi. Pertama, PreCommit untuk sebuah blok harus disertai justifikasi berupa Polka untuk blok tersebut. Jika validator telah melakukan PreCommit satu blok pada putaran R_1, kita mengatakan mereka dikunci di blok itu, dan Polka biasa membenarkannya PreCommit baru pada putaran R_2 harus terjadi pada putaran R_polka dimana R_1 < R_polka <= R_2. Kedua, validators harus Mengusulkan dan/atau melakukan PreVote pada blok tempat mereka dikunci. Bersama-sama, ini ketentuan memastikan bahwa validator tidak melakukan PreCommit tanpanya bukti yang cukup sebagai pembenaran, dan validators yang memiliki sudah PreCommit tidak dapat memberikan kontribusi bukti kepada PreCommit sesuatu yang lain. Hal ini menjamin keamanan dan keaktifan algoritma konsensus. Rincian lengkap protokol dijelaskan di sini. Kebutuhan untuk menyinkronkan semua header blok dihilangkan di TendermintPoS karena keberadaan rantai alternatif (garpu) berarti ≥⅓ dari pasak terikat dapat dipangkas. Tentu saja, karena pemotongan memerlukan bahwa seseorang berbagi bukti garpu, klien ringan harus menyimpannya setiap blok-hash melakukan apa yang dilihatnya. Selain itu, klien ringandapat tetap tersinkronisasi secara berkala dengan perubahan pada kumpulan validator, di untuk menghindari serangan jarak jauh (tetapi solusi lain bisa mungkin). Dengan semangat yang mirip dengan Ethereum, Tendermint memungkinkan aplikasi untuk sematkan akar Merkle global hash di setiap blok, sehingga mudah pertanyaan status yang dapat diverifikasi untuk hal-hal seperti saldo akun, nilainya disimpan dalam kontrak, atau adanya transaksi yang tidak terpakai keluarannya, tergantung pada sifat aplikasinya. Dengan asumsi kumpulan jaringan siaran cukup tangguh dan set validator statis, garpu apa pun di blockchain dapat berupa terdeteksi dan simpanan validator yang melanggar dipotong. Ini Inovasi yang pertama kali disarankan oleh Vitalik Buterin pada awal tahun 2014, berhasil memecahkan masalah tersebut masalah tidak ada yang dipertaruhkan dari proof-of-stake lainnya cryptocurrency (lihat Pekerjaan Terkait). Namun, sejak validator ditetapkan harus dapat berubah, dalam jangka waktu yang lama, yang asli validators semuanya dapat menjadi tidak terikat, dan karenanya akan bebas untuk terikat membuat rantai baru dari blok genesis, tanpa biaya mereka tidak lagi menyimpan simpanan. Serangan ini terjadi dikenal sebagai Long Range Attack (LRA), berbeda dengan Short Range Attack, dimana validator yang sedang terikat menyebabkan a garpu dan karenanya dapat dihukum (dengan asumsi BFT yang bertanggung jawab atas garpu algoritma seperti konsensus Tendermint). Serangan Jarak Jauh adalah sering dianggap sebagai pukulan telak bagi proof-of-stake. Untungnya, LRA dapat dimitigasi dengan cara berikut. Pertama, untuk a validator untuk melepas ikatan (sehingga memulihkan simpanan jaminan mereka dan tidak lagi mendapatkan bayaran untuk berpartisipasi dalam konsensus), itu deposit harus dibuat tidak dapat dipindahtangankan untuk jangka waktu tertentu dikenal sebagai “periode tidak terikat”, yang mungkin terjadi pada urutan minggu atau bulan. Kedua, agar klien ringan aman, pertama kali terhubung ke jaringan, ia harus memverifikasi blok terbaru-hash terhadap sumber terpercaya, atau sebaiknya beberapa sumber. Ini

kondisi ini kadang-kadang disebut sebagai “subjektivitas lemah”. Akhirnya, agar tetap aman, harus disinkronkan dengan validator terbaru yang disetel pada paling tidak sesering lamanya periode pelepasan ikatan. Ini memastikan bahwa klien ringan mengetahui tentang perubahan pada validator ditetapkan sebelum validator modalnya tidak terikat sehingga tidak lagi dipertaruhkan, yang memungkinkannya menipu klien dengan melakukan serangan jarak jauh dengan membuat blok baru dimulai dari a ketinggian tempat ia diikat (dengan asumsi ia memiliki kendali yang cukup banyak kunci pribadi awal). Perlu dicatat bahwa mengatasi LRA dengan cara ini memerlukan perombakan model keamanan asli proof-of-work. Di PoW, memang demikian diasumsikan bahwa klien ringan dapat melakukan sinkronisasi ke ketinggian saat ini dari blok genesis tepercaya kapan saja hanya dengan memproses bukti kerja di setiap header blok. Namun, untuk mengatasi LRA, kami mengharuskan klien ringan untuk online secara teratur lacak perubahan di set validator, dan itu untuk pertama kalinya saat online, mereka harus sangat berhati-hati dalam mengautentikasi apa yang mereka dengar dari jaringan terhadap sumber terpercaya. Dari Tentu saja, persyaratan terakhir ini mirip dengan Bitcoin, dimana protokol dan softwarenya juga harus didapat dari yang terpercaya sumber. Metode pencegahan LRA di atas sangat cocok untuk validators dan node penuh dari blockchain yang didukung Tendermint karena ini node dimaksudkan untuk tetap terhubung ke jaringan. Itu Metode ini juga cocok untuk klien ringan yang diharapkan dapat melakukannya sering melakukan sinkronisasi dengan jaringan. Namun, untuk klien ringan itu diharapkan tidak sering mengakses internet atau blockchain jaringan, solusi lain dapat digunakan untuk mengatasinya LRA. Pemegang non-validator token dapat memposting token mereka sebagai agunan dengan jangka waktu pelepasan ikatan yang sangat lama (misalnya lebih lama dari periode pelepasan ikatan selama validators) dan melayani klien ringan dengan metode sekunder untuk membuktikan validitas saat ini dan blok terakhir-hashes. Meskipun token ini tidak diperhitungkan demi keamanan konsensus blockchain, mereka tetap bisa melakukannyamemberikan jaminan yang kuat untuk klien ringan. Jika blok historis-hash kueri didukung di Ethereum, siapa pun dapat menyatukannya tokens dalam smart contract yang dirancang khusus dan disediakan layanan pengesahan dengan bayaran, yang secara efektif menciptakan pasar untuk keamanan LRA klien ringan. Karena definisi dari komitmen blok, setiap ≥⅓ koalisi dari hak suara dapat menghentikan blockchain dengan membuka zine atau tidak menyiarkan suara mereka. Koalisi seperti itu juga bisa melakukan sensor transaksi tertentu dengan menolak blok yang mencakup ini transaksi, meskipun hal ini akan menghasilkan proporsi yang signifikan proposal blok yang akan ditolak, yang akan memperlambat lajunya blok melakukan blockchain, mengurangi utilitas dan nilainya. Koalisi jahat mungkin juga menyiarkan suara secara perlahan untuk mengerjakan blockchain blok yang hampir dihentikan, atau terlibat kombinasi serangan ini. Pada akhirnya, hal ini dapat menyebabkan blockchain melakukan percabangan, dengan menandatangani dua kali atau melanggar penguncian aturan. Jika musuh yang aktif secara global juga terlibat, hal ini dapat terpecah jaringan sedemikian rupa sehingga mungkin tampak salah subset dari validators bertanggung jawab atas perlambatan ini. Ini tidak hanya batasan Tendermint, melainkan batasan semuanya protokol konsensus yang jaringannya berpotensi dikendalikan oleh musuh aktif. Untuk jenis serangan ini, subset dari validator seharusnya berkoordinasi melalui sarana eksternal untuk menandatangani proposal reorg itu memilih garpu (dan bukti apa pun daripadanya) dan bagian awal dari validators dengan tanda tangannya. Validator yang menandatangani proposal reorganisasi tersebut melepaskan jaminan mereka pada semua fork lainnya. Klien harus memverifikasi tanda tangan pada proposal reorg, memverifikasi bukti apa pun, dan membuat penilaian atau meminta pengguna akhir untuk mengambil keputusan. Untuk Misalnya, aplikasi dompet telepon mungkin meminta keamanan kepada pengguna

peringatan, sementara lemari es dapat menerima proposal reorg apa pun ditandatangani oleh +½ dari validator asli dengan hak suara. Tidak ada algoritma toleransi kesalahan Bizantium yang tidak sinkron untuk mencapai konsensus ketika ≥⅓ hak suara tidak jujur, namun merupakan sebuah fork berasumsi bahwa ≥⅓ hak suara telah dilakukan secara tidak jujur penandatanganan ganda atau pengubahan kunci tanpa alasan yang sah. Jadi, penandatanganan usulan reorg adalah masalah koordinasi yang tidak bisa dilakukan diselesaikan oleh protokol non-sinkron apa pun (yaitu secara otomatis, dan tanpa membuat asumsi tentang keandalannya jaringan yang mendasarinya). Untuk saat ini, kami menyerahkan masalah koordinasi reorganisasi proposal kepada koordinasi manusia melalui konsensus sosial di media internet. Validator harus berhati-hati untuk memastikan hal itu ada tidak ada partisi jaringan yang tersisa sebelum menandatangani proposal reorg, untuk menghindari situasi ketika dua proposal reorg yang saling bertentangan ditandatangani. Dengan asumsi bahwa media dan protokol koordinasi eksternal adalah kuat, maka fork tidak terlalu memprihatinkan dibandingkan sensor serangan. Selain garpu dan sensor, yang membutuhkan ≥⅓ Bizantium kekuatan suara, koalisi dengan >⅔ kekuatan suara dapat berkomitmen sewenang-wenang, keadaan tidak valid. Ini adalah karakteristik dari setiap (BFT) sistem konsensus. Berbeda dengan penandatanganan ganda yang menimbulkan percabangan dengan bukti yang mudah diverifikasi, mendeteksi komitmen suatu keadaan tidak valid memerlukan rekan yang tidak memvalidasi untuk memverifikasi seluruh blok, yang menyiratkan bahwa mereka menyimpan salinan lokal negara bagian dan mengeksekusinya setiap transaksi, menghitung root status secara independen diri mereka sendiri. Setelah terdeteksi, satu-satunya cara untuk menangani kegagalan tersebut adalah melalui konsensus sosial. Misalnya, dalam situasi di mana Bitcoin telah gagal, baik forking karena bug perangkat lunak (seperti pada bulan Maret 2013), atau melakukan status tidak sah karena perilaku Bizantium penambang (seperti pada Juli 2015), komunitas yang terhubung dengan baik bisnis, pengembang, penambang, dan organisasi lainnya menetapkan konsensus sosial mengenai tindakan manual apa yang dimaksuddibutuhkan oleh peserta untuk menyembuhkan jaringan. Terlebih lagi, sejak itu validators dari Tendermint blockchain mungkin diharapkan dapat diidentifikasi, komitmen negara yang tidak valid bahkan mungkin dapat dihukum oleh hukum atau yurisprudensi eksternal, jika diinginkan. ABCI terdiri dari 3 jenis pesan utama yang dikirimkan inti dari aplikasi tersebut. Aplikasi membalas dengan pesan respons yang sesuai. Pesan  AppendTx  adalah kerangka kerja aplikasi. Masing-masing transaksi di blockchain dikirimkan dengan pesan ini. Itu aplikasi perlu memvalidasi setiap transaksi yang diterima dengan Pesan AppendTx terhadap status saat ini, protokol aplikasi, dan kredensial kriptografi transaksi. Sebuah divalidasi transaksi kemudian perlu memperbarui status aplikasi — oleh mengikat suatu nilai ke dalam penyimpanan nilai kunci, atau dengan memperbarui UTXO basis data. Pesan  CheckTx  mirip dengan AppendTx, namun hanya untuk memvalidasi transaksi. Pemeriksaan mempool Tendermint Core pertama kali validitas transaksi dengan CheckTx, dan hanya relay yang valid transaksi ke rekan-rekannya. Aplikasi mungkin memeriksa peningkatan nonce dalam transaksi dan mengembalikan kesalahan pada CheckTx jika nonce sudah tua. Pesan  Commit  digunakan untuk menghitung kriptografi komitmen terhadap status aplikasi saat ini, untuk ditempatkan ke dalam header blok berikutnya. Ini memiliki beberapa properti berguna. Inkonsistensi dalam memperbarui status tersebut kini akan muncul sebagai blockchain fork yang menangkap seluruh kelas pemrograman kesalahan. Ini juga menyederhanakan pengembangan kelas ringan yang aman klien, sebagai bukti Merkle-hash dapat diverifikasi dengan melakukan pengecekan blok-hash, dan blok-hash ditandatangani oleh kuorum validators (berdasarkan hak suara).

Pesan ABCI tambahan memungkinkan aplikasi untuk melacaknya dan mengubah set validator, dan agar aplikasi menerima memblokir informasi, seperti tinggi dan suara komit. ABCI permintaan/tanggapan adalah pesan Protobuf sederhana. Periksa keluar skema yle. Argumen: Data ([]byte) : Byte transaksi permintaan Pengembalian: Kode (uint32) : Kode respons Data ([]byte) : Byte hasil, jika ada Log (string): Pesan debug atau error Penggunaan:

Tambahkan dan jalankan transaksi. Jika transaksinya sah, mengembalikan CodeType.OK Argumen: Data ([]byte) : Byte transaksi permintaan Pengembalian: Kode (uint32) : Kode respons Data ([]byte) : Byte hasil, jika ada Log (string): Pesan debug atau error Penggunaan:

Validasi transaksi. Pesan ini tidak boleh mengubah negara bagian. Transaksi pertama kali dijalankan melalui CheckTx sebelumnya disiarkan ke rekan-rekan di lapisan mempool. Anda bisa membuat CheckTx semi-stateful dan hapus status saat Komit atau BeginBlock , untuk memungkinkan urutan transaksi yang bergantung di blok yang sama.

Pengembalian: Data ([]byte): Akar Merkle hash Log (string): Pesan debug atau error Penggunaan:

Mengembalikan akar Merkle hash dari status aplikasi. Argumen: Data ([]byte) : Byte permintaan kueri Pengembalian: Kode (uint32) : Kode respons Data ([]byte) : Byte respons kueri Log (string): Pesan debug atau error Penggunaan:

Hapus antrian respons. Aplikasi yang mengimplementasikan jenis.Aplikasi tidak perlu mengimplementasikan pesan ini – itu ditangani oleh proyek tersebut. Pengembalian: Data ([]byte) : Byte info Penggunaan:

Kembalikan informasi tentang status aplikasi. Aplikasi spesifik. Argumen: Kunci (string) : Kunci untuk disetel

Nilai (string): Nilai yang akan ditetapkan untuk kunci Pengembalian: Log (string): Pesan debug atau error Penggunaan:

Tetapkan opsi aplikasi. Misalnya. Kunci=“mode”, Nilai=“mempool” untuk koneksi mempool, atau Key=“mode”, Value=“konsensus” untuk hubungan konsensus. Pilihan lainnya adalah aplikasi spesifik. Argumen: Validator ([]Validator) : Kejadian awal-validators Penggunaan:

Dipanggil sekali pada saat kejadian Argumen: Tinggi (uint64) : Tinggi balok yang dimulai Penggunaan:

Menandakan dimulainya blok baru. Dipanggil sebelum apa pun TambahkanTxs. Argumen: Tinggi (uint64) : Tinggi blok yang berakhir Pengembalian: Validator ([]Validator) : Mengubah validator dengan yang baru hak suara (0 untuk menghapus) Penggunaan:

Menandakan akhir dari sebuah blok. Bagaimanapun juga, dipanggil sebelum setiap Komit transaksi Lihat repositori ABCI untuk lebih jelasnya.Ada beberapa alasan mengapa pengirim mungkin menginginkannya pengakuan pengiriman paket oleh rantai penerima. Misalnya, pengirim mungkin tidak mengetahui statusnya rantai tujuan, jika diperkirakan salah. Atau, pengirimnya mungkin ingin menerapkan batas waktu pada paket (dengan metode  MaxHeight  paket yeld), sementara rantai tujuan mana pun mungkin mengalami serangan penolakan layanan dengan lonjakan jumlah pesan masuk secara tiba-tiba paket. Dalam kasus ini, pengirim dapat meminta pengakuan pengiriman dengan menyetel status paket awal ke  AckPending . Lalu, itu adalah tanggung jawab rantai penerima untuk mengonfirmasi pengiriman dengan menyertakan disingkat IBCPacket  di aplikasi Merkle hash. Pertama, IBCBlockCommit  dan  IBCPacketTx  diposting di “Hub” yang membuktikan keberadaan IBCPaket  di “Zona1”. Katakan itu  IBCPacketTx  memiliki nilai berikut: FromChainID : “Zona1” FromBlockHeight : 100 (katakanlah) Paket : sebuah IBCPaket :

Tajuk : dan IBCPacketHeader : SrcChainID : “Zona1” DstChainID : “Zona2” Nomor : 200 (katakanlah) Status : AckPending Ketik : “koin” MaxHeight : 350 (misalnya “Hub” saat ini berada pada ketinggian 300) Payload : Selanjutnya, IBCBlockCommit  dan  IBCPacketTx  diposting di “Zone2” yang membuktikan adanya IBCPacket  di “Hub”. Katakan itu  IBCPacketTx  memiliki nilai berikut: DariChainID : “Hub” DariBlockHeight : 300 Paket : sebuah IBCPaket : Tajuk : dan IBCPacketHeader : SrcChainID : “Zona1” DstChainID : “Zona2” Nomor : 200 Status : AckPending Ketik : “koin” Tinggi Maks: 350 Payload : Selanjutnya, “Zona2” harus menyertakan dalam aplikasinya-hash paket yang disingkat yang menunjukkan status baru  AckSent . Sebuah IBCBlockCommit  dan  IBCPacketTx  diposting kembali di “Hub” yang membuktikan keberadaannya dari singkatan IBCPacket  pada "Zona2". Ucapkan IBCPacketTx  mempunyai nilai sebagai berikut: FromChainID : “Zona2”

FromBlockHeight : 400 (katakanlah) Paket : sebuah IBCPaket : Tajuk : dan IBCPacketHeader : SrcChainID : “Zona1” DstChainID : “Zona2” Nomor : 200 Status : AckSent Ketik : “koin” Tinggi Maks: 350 PayloadHash : Terakhir, “Hub” harus memperbarui status paket dari  AckPending  ke  AckReceived . Bukti dari status ynalisasi baru ini harus kembali ke "Zona2". Katakanlah IBCPacketTx  memiliki yang berikut ini nilai: DariChainID : “Hub” DariBlockHeight : 301 Paket : sebuah IBCPaket : Tajuk : dan IBCPacketHeader : SrcChainID : “Zona1” DstChainID : “Zona2” Nomor : 200 Status : Diterima Ketik : “koin” Tinggi Maks: 350 PayloadHash : Sementara itu, “Zona 1” mungkin secara optimis memperkirakan keberhasilan pengiriman dari paket "koin" kecuali terbukti sebaliknya “Pusat”. Pada contoh di atas, jika “Hub” belum menerima  AckSent

status dari “Zona2” di blok 350, itu akan mengatur statusnya secara otomatis ke  Waktu Habis . Bukti batas waktu ini bisa didapat diposting kembali di “Zona1”, dan token apa pun dapat dikembalikan. Ada dua jenis Merkle tree yang didukung di Ekosistem Tendermint/Cosmos: Pohon Sederhana, dan IAVL+ Pohon. Pohon Sederhana adalah Merkle tree untuk daftar elemen statis. Jika jumlah item bukan pangkat dua, beberapa daun akan ada tingkat yang berbeda. Simple Tree mencoba menjaga kedua sisi pohon tetap sama tingginya sama, tapi yang kiri mungkin lebih besar. Merkle tree ini adalah digunakan untuk Merkle-ize transaksi suatu blok, dan tingkat atas elemen root status aplikasi.Tujuan dari struktur data IAVL+ adalah untuk menyediakan persisten penyimpanan untuk pasangan nilai kunci dalam status aplikasi sedemikian rupa sehingga a Akar Merkle deterministik hash dapat dihitung secara efisien. Itu pohon diseimbangkan menggunakan varian algoritma AVL, dan semuanya operasinya adalah O(log(n)). Dalam pohon AVL, tinggi dua subpohon anak dari setiap node berbeda paling banyak satu. Setiap kali kondisi ini dilanggar pada suatu diperbarui, pohon diseimbangkan kembali dengan membuat O(log(n)) node baru itu menunjuk ke simpul pohon tua yang tidak dimodifikasi. Dalam AVL asli algoritma, node dalam juga dapat menampung pasangan nilai kunci. AVL+ algoritma (perhatikan plusnya) memodifikasi algoritma AVL untuk menyimpan semuanya nilai pada node daun, sementara hanya menggunakan node cabang untuk menyimpan kunci. Ini menyederhanakan algoritma sambil menjaga jejak merkle hash pendek. Pohon AVL+ analog dengan percobaan Patricia Ethereum. Ada pengorbanan. Kunci tidak perlu hash sebelum dimasukkan Pohon IAVL+, sehingga memberikan iterasi terurut yang lebih cepat pada kunci ruang yang mungkin menguntungkan beberapa aplikasi. Logikanya lebih sederhana implementasi, hanya membutuhkan dua jenis node – node dalam dan simpul daun. Bukti Merkle rata-rata lebih pendek, yaitu a                 *                 / \               /     \             /         \           /             \          *              >         / \            //\        /   \           /   \       /     \         /     \      +     / \     / \    //\    h0  h1  h2  h3  h4  h5    Sebuah SimpleTree dengan 7 elemen

pohon biner seimbang. Di sisi lain, akar Merkle dari an Pohon IAVL+ bergantung pada urutan pembaruan. Kami akan mendukung Merkle tree tambahan yang efisien, seperti Patricia Trie Ethereum saat varian biner menjadi tersedia. Dalam implementasi kanonik, transaksi dialirkan ke Cosmos aplikasi hub melalui antarmuka ABCI. Hub Cosmos akan menerima sejumlah transaksi utama jenisnya, termasuk  SendTx ,  BondTx ,  UnbondTx ,  ReportHackTx ,  SlashTx, BurnAtomTx,ProposalCreateTx, dan `ProposalVoteTx, yang cukup jelas dan akan didokumentasikan dalam a revisi masa depan makalah ini. Di sini kami mendokumentasikan dua hal utama jenis transaksi untuk IBC:  IBCBlockCommitTx  dan  IBCPacketTx . Transaksi  IBCBlockCommitTx  terdiri dari: ChainID (string): ID blockchain BlockHash ([]byte) : Blok-hash byte, akar Merkle yang mencakup aplikasi-hash BlockPartsHeader (PartSetHeader) : Header kumpulan bagian blok byte, hanya diperlukan untuk memverifikasi tanda tangan suara BlockHeight (int) : Ketinggian penerapan BlockRound (int) : Putaran penerapan Commit ([]Vote): >⅔ Tendermint Precommit memberikan suara tersebut terdiri dari komit blok ValidatorsHash ([]byte) : Akar pohon Merkle hash yang baru validator disetel

ValidatorsHashProof (SimpleProof): SimpleTree Merkleproof untuk membuktikan ValidatorsHash terhadap BlockHash AppHash ([]byte) : Akar pohon Merkle IAVLTree hash dari keadaan aplikasi AppHashProof (SimpleProof): SimpleTree Merkle-proof untuk membuktikan AppHash terhadap BlockHash Sebuah IBCPaket  terdiri dari: Header (IBCPacketHeader) : Header paket Payload ([]byte) : Byte payload paket. Opsional PayloadHash ([]byte) : hash untuk byte paket. Opsional Salah satu dari  Payload  atau  PayloadHash  harus ada. hash dari IBCPacket  adalah akar Merkle sederhana dari dua item,  Header  dan  Muatan . Sebuah IBCPaket  tanpa muatan penuh disebut an paket yang disingkat.  IBCPacketHeader  terdiri dari: SrcChainID (string) : ID blockchain sumber DstChainID (string) : ID blockchain tujuan Nomor (int) : Nomor unik untuk semua paket Status (enum): Dapat berupa salah satu dari AckPending , AckSent , AckReceived , NoAck , atau Timeout Type (string) : Jenisnya bergantung pada aplikasi. Cosmos memesan jenis paket "koin". MaxHeight (int) : Jika statusnya bukan NoAckWanted atau AckReceived pada ketinggian ini, status menjadi Timeout . Opsional Transaksi  IBCPacketTx  terdiri dari:FromChainID (string) : ID dari blockchain yaitu menyediakan paket ini; belum tentu sumbernya FromBlockHeight (int) : Ketinggian blockchain di mana paket berikut disertakan (merkle-ized) di blok-hash dari rantai sumber Paket (IBCPaket) : Paket data, yang statusnya mungkin satu dari AckPending , AckSent , AckReceived , NoAck , atau Timeout PacketProof (IAVLProof): IAVLTree Merkle-proof untuk pembuktian hash paket terhadap AppHash dari rantai sumber di ketinggian tertentu Urutan pengiriman paket dari “Zone1” ke “Zone2” melalui "Hub" digambarkan pada {Gambar X}. Pertama, IBCPacketTx  membuktikan kepada "Hub" bahwa paket tersebut termasuk dalam status aplikasi “Zona 1”. Kemudian, IBCPacketTx  lainnya membuktikan kepada “Zona2” bahwa paket disertakan dalam status aplikasi "Hub". Selama ini prosedurnya, hasil IBCPacket  sama:  SrcChainID  adalah selalu “Zona1”, dan  DstChainID  selalu "Zona2".  PacketProof  harus memiliki jalur anti Merkle yang benar, misalnya berikut: Ketika “Zone1” ingin mengirim paket ke “Zone2” melalui “Hub”, data IBCPacket  tetap identik, baik paket tersebut Merkleisasi di “Zone1”, “Hub”, atau “Zone2”. Satu-satunya teriakan yang bisa berubah adalah  Status  untuk melacak pengiriman. Kami berterima kasih kepada teman-teman dan rekan-rekan kami atas bantuannya dalam membuat konsep, meninjau, dan memberikan dukungan untuk pekerjaan kami dengan Tendermint dan Cosmos. IBC///

Zaki Manian dari SkuChain memberikan banyak bantuan dalam pemformatan dan kata-katanya, terutama di bawah bagian ABCI Jehan Tremback dari Althea dan Dustin Byington atas bantuannya iterasi awal Andrew Miller dari Honey Badger atas masukan mengenai konsensus Greg Slepak atas umpan balik mengenai konsensus dan penyusunan kata-kata Juga terima kasih kepada Bill Gleim dan Seunghwan Han untuk berbagai hal kontribusi. Nama dan organisasi Anda di sini atas kontribusi Anda 1 Bitcoin: https://bitcoin.org/bitcoin.pdf 2 Nol Tunai: http://zerocash-project.org/paper 3 Ethereum: https://github.com/ethereum/wiki/wiki/WhitePaper 4DAO: https://download.slock.it/public/DAO/WhitePaper.pdf 5 Saksi Terpisah: https://github.com/bitcoin/bips/blob/master/bip0141.mediawiki 6 BitcoinNG: https://arxiv.org/pdf/1510.02037v2.pdf 7 Jaringan Petir: https://lightning.network/lightningnetwork-paper-DRAFT-0.5.pdf 8 permen lembut: https://github.com/tendermint/tendermint/wiki 9 Ketidakmungkinan FLP: https://groups.csail.mit.edu/tds/papers/Lynch/jacm85.pdf 10 Pemotong: https://blog.ethereum.org/2014/01/15/slasher-apunitive-proof-of-stake-algorithm/ 11 PBFT: http://pmg.csail.mit.edu/papers/osdi99.pdf 12 BitShare: https://bitshares.org/technology/delegatedproof-of-stake-consensus/

13 Stellar: https://www.stellar.org/papers/stellar-consensusprotocol.pdf 14 Buku Besar: https://interledger.org/rfcs/0001-interledgerarchitecture/ 15 Rantai Samping: https://blockstream.com/sidechains.pdf 16Kasper: https://blog.ethereum.org/2015/08/01/introducing-casperfriendly-ghost/ 17 ABCI: https://github.com/tendermint/abci 18 Ethereum Pembagian: https://github.com/ethereum/EIPs/issues/53 19LibSwift: http://www.ds.ewi.tudelft.nl/yleadmin/pds/papers/Performa nceAnalysisOfLibswift.pdf 20 DLS: http://groups.csail.mit.edu/tds/papers/Lynch/jacm88.pdf 21 Keamanan Klien Tipis: https://en.bitcoin.it/wiki/Thin_Client_Security 22 Ethereum 2.0 Kertas Ungu Muda: http://vitalik.ca/yles/mauve_paper.html https://www.docdroid.net/ec7xGzs/314477721-ethereumplatform-review-opportunities-and-challenges-for-privateand-consortium-blockchains.pdf.html

³ ya