Secara umum, dua contoh sering disebutkan saat memperkenalkan blockchain: satu adalah perluasan model pembukuan kuno ke buku besar yang didistribusikan, dan yang lainnya adalah Masalah Jenderal Bizantium. Tujuan menggunakan buku besar terdistribusi adalah untuk memungkinkan setiap node memverifikasi transaksi, dan masalah umum Bizantium terkait dengan konsistensi buku besar, yang merupakan mekanisme konsensus (Konsensus) yang akan dibahas dalam artikel ini.
Mekanisme konsensus pada blockchain terutama menyelesaikan masalah siapa yang membangun blok dan bagaimana menjaga kesatuan blockchain. Dasar teoritis dari masalah ini adalah Byzantine Fault-Tolerant (BFT). BFT telah dipelajari sejak 1980-an, dan sekarang menjadi teori yang diteliti dengan baik. Sudah ada algoritma untuk prasyarat dan implementasi spesifik dari solusi tersebut. Namun, artikel ini tidak bermaksud untuk memulai dengan BFT, karena yang akan dianalisis adalah evolusi dari mekanisme konsensus blockchain, dan Nakamoto tidak mengadopsi BFT. Faktanya, pada awal penelitian saya tentang Bitcoin, bahkan setelah saya memahami mekanisme POW dalam waktu yang lama, saya tidak memahami masalah Jenderal Bizantium. Nanti, ketika menganalisis PBFT dari HyperLedger Fabric dan DBFT dari proyek Xiaoyi, masalah umum Bizantium dan algoritma konsensus terdistribusi tradisional (PAXOS, RAFT) akan dijelaskan sepenuhnya.
Inti dari mekanisme konsensus adalah konstruksi dan verifikasi blok. Proses pembuatan blok pada sistem POW umumnya disebut "mine", dan metode konstruksi blok pada sistem POS PPC umumnya disebut "mint", sedangkan NXT Metode konstruksi balok umumnya disebut forge (menempa).
POW
Mekanisme konsensus umumnya disebut Proof di masa lalu, karena Bitcoin menggunakan Proof-Of-Work (Proof-Of-Work, disingkat POW). Karena semua orang terus mengeksplorasi masalah konsistensi buku besar terdistribusi, banyak metode telah diusulkan. Secara khusus, banyak proyek blockchain baru-baru ini kembali ke peningkatan algoritme BFT tradisional, dan telah keluar dari semantik "bukti" dalam pemikiran mereka. Ini selanjutnya diringkas sebagai mekanisme konsensus. Saya ingat pertama kali menemui konsep proof-of-work, saya merasa sangat bingung. Saya pusing dengan cara berekspresi seperti ini. Setelah saya menguasai mekanisme POW, saya benar-benar memahaminya. Dalam istilah awam, itu adalah "memperoleh hasil yang ditentukan melalui kerja dan menggunakan hasil untuk membuktikan Upaya yang dilakukan sebelumnya ". Faktanya, kita sering menggunakan bukti beban kerja dalam pekerjaan dan kehidupan sehari-hari, seperti nilai ujian siswa, sertifikat kelulusan, dan SIM. Ciri khas dari metode pembuktian ini adalah sering membutuhkan banyak usaha untuk mendapatkan hasil yang ditentukan, tetapi hasilnya mudah verifikasi. Karena umumnya sulit bagi kami untuk memantau apakah seseorang benar-benar telah membayar beban kerja secara real time, kami hanya dapat menggunakan hasil beban kerja tersebut untuk membuktikannya.
Kembali ke ide desain Bitcoin, Satoshi Nakamoto telah menggunakan kriptografi asimetris untuk menyelesaikan masalah kepemilikan mata uang elektronik, menggunakan stempel waktu blok untuk menyelesaikan masalah keberadaan transaksi, dan menggunakan buku besar terdistribusi untuk menyelesaikan transaksi setelah menghapus struktur pihak ketiga. Masalah tersisa yang perlu diselesaikan adalah pembayaran ganda. Ini mengharuskan semua akun node disatukan, dan kesetaraan sejati harus memberi semua orang hak untuk memiliki akun. Menjaga akun adalah masalah sederhana, semua orang bisa Jelas, akan ada banyak buku besar yang serupa pada akhirnya, tetapi kita hanya membutuhkan salah satunya.
Satoshi Nakamoto berpikir untuk menambahkan biaya ke pembukuan. Buku besar diurutkan berdasarkan setiap halaman dalam urutan kronologis, dan standar penilaian ditetapkan untuk setiap halaman buku untuk membedakan apakah halaman buku tersebut memenuhi syarat. Hal ini menambah kesulitan pembukuan, dan pada saat yang sama memberikan setiap buku Elemen acak ditambahkan ke halaman untuk menyesuaikan tingkat kesulitan akuntansi untuk memastikan bahwa hanya satu orang yang menghasilkan halaman buku yang memenuhi syarat dalam jangka waktu tertentu. Peningkatan biaya adalah beban kerja, dan halaman buku besar yang memenuhi syarat adalah bukti beban kerja. Untuk Bitcoin, yang disebut halaman buku besar adalah blok, dan blok tersebut membentuk rantai blok melalui desain yang cerdas.Blok yang memenuhi syarat dapat dinyatakan sebagai:
F (Nonce) < Target
Diantaranya, Nonce adalah elemen acak, Target adalah kuantifikasi blok yang memenuhi syarat, dan Target setiap node akuntansi adalah sama. Selain itu, operasi POW yang berhasil juga perlu bekerja sama dengan dua perjanjian berikut, Prinsip rantai terbaik: perlakukan rantai terpanjang sebagai rantai yang benar.
Prinsip insentif: Ada imbalan untuk menemukan blok yang memenuhi syarat.
Perjanjian pertama adalah aturan yang tegas dan cepat, tanpa syarat mematuhinya. Semua orang tidak bermain, dan jika Anda ingin bermain, Anda harus mematuhi prinsip ini. Bagaimanapun, tujuan yang sama adalah menemukan buku besar yang konsisten, dan rantai terpanjang mewakili beban kerja terbesar. Jika tidak ada kesepakatan seperti itu , Setiap orang hanya akan membangun blockchain mereka sendiri dan tidak dapat disatukan. Pasal 2 adalah insentif beban kerja.Karena pembukuan memiliki biaya, hanya pendapatan yang dapat mendorong setiap orang untuk melakukan pembukuan. Berpartisipasi dalam blok bangunan pembukuan menjadi perilaku investasi. Risiko biaya dan pendapatan membentuk permainan di bawah batasan Pasal 1. , Untuk mendorong semua node untuk membangun blok dengan jujur sesuai dengan aturan yang disepakati, dan akhirnya mencapai ekuilibrium Nash.
Metode implementasi spesifiknya adalah Bitcoin menggunakan algoritma hash (Hash) Prinsip dan karakteristik algoritma hash telah dibahas secara rinci pada artikel sebelumnya (Mining Evolution). Logikanya, Bitcoin adalah hash seluruh blok, tetapi realisasi sebenarnya bukanlah menggunakan seluruh data blok sebagai parameter dari fungsi hash. Blok secara kasar dapat dibagi menjadi dua bagian: tajuk rantai blok dan daftar transaksi. Daftar transaksi dibuat Pohon Merkle akhirnya diringkas menjadi Merkleroot, yang dibangun ke dalam header blok. Header blok hanya memiliki 6 bidang dan total 80 byte. Keuntungan pertama dari desain ini adalah nyaman untuk operasi hash. Setiap operasi hanya membutuhkan 80 byte input parameter. Ini bukan data seluruh blok, tetapi setiap perubahan dalam daftar transaksi dapat tercermin dalam hasil operasi hash.
Bitcoin menggunakan operasi hash SHA256, dan setiap kali dilakukan dua operasi SHA256 berturut-turut untuk menjadi hasil akhir, hasil operasi sebelumnya digunakan sebagai input operasi berikutnya, yaitu SHA256 Ganda, umumnya disebut SHA256D, perluas rumus di atas, bit Dasar untuk menilai blok yang memenuhi syarat token adalah sebagai berikut:
SHA256D (nVersion, hashPreBlock, hashMerkleRoot, nTimes, nBits, Nonce) < MAXTARGET / Diff
6 parameter (header blok) di sisi kiri rumus telah dijelaskan pada artikel sebelumnya, MAXTARGET adalah nilai target maksimum, konstanta; Diff mewakili tingkat kesulitan, dan tingkat kesulitan seluruh jaringan sama. MAXTARGET / Diff biasanya disebut sebagai nilai target saat ini.
Jelas, arti inti dari POW adalah: semakin besar daya komputasi, semakin besar kemungkinan penggalian blok, dan semakin besar bobot menjaga keamanan blockchain. Dibandingkan dengan mekanisme konsensus lainnya, POW memiliki logika sederhana, implementasi yang mudah, toleransi kesalahan 50%, dan bukti matematis yang ketat untuk keamanannya.
POS
POW tidak sempurna. Diantaranya, ada dua poin utama yang paling banyak dikritik. Salah satunya adalah pemborosan energi, dan yang lainnya adalah bahwa permainan risiko dan pengembalian pasti akan mengarah pada penambangan bersama, dan kumpulan penambangan skala besar dapat menjadi ancaman bagi desentralisasi sistem.
Jadi pada tahun 2011, seorang penggemar mata uang digital bernama Quantum Mechanic mengusulkan mekanisme bukti Proof-of-Stake (POS) di forum Bitcointalk, yang telah didiskusikan sepenuhnya dan terbukti layak. Jika Anda mengatakan bahwa POW terutama bersaing dengan daya komputasi, semakin besar daya komputasi, semakin besar kemungkinan menggali blok, dan POS adalah keseimbangan persaingan. Secara umum, semakin banyak koin di tangan Anda, semakin besar kemungkinan menggali blok. Blok berkualifikasi POS dapat dinyatakan sebagai:
F (Stempel waktu) < Target * Keseimbangan
Dibandingkan dengan POW, ruang pencarian di sisi kiri formula berubah dari Nonce menjadi Timestamp. Rentang nilai Nonce tidak terbatas, sedangkan Stempel waktu sangat terbatas. Waktu blok dari blok yang memenuhi syarat harus berada dalam rentang yang ditentukan dari waktu blok sebelumnya. Blok yang terlalu awal atau terlalu maju tidak akan diterima oleh node lain. Nilai target di sisi kanan rumus memperkenalkan keseimbangan faktor produk, terlihat bahwa semakin besar saldo, semakin besar nilai target secara keseluruhan (Target * Balance), semakin mudah menemukan blok. Karena Stempel Waktu terbatas, tingkat keberhasilan blok pencetakan POS terutama terkait dengan Saldo.
POS hanya merepresentasikan konsep mekanisme konsensus, yang dapat diimplementasikan dalam berbagai cara, berikut ini berfokus pada analisis dua ide implementasi klasik lainnya.
Peercoin
Peercoin (PPC) dirilis pada Agustus 2012. Inovasi terbesar adalah metode penambangannya adalah campuran dari bukti kerja POW dan bukti ekuitas POS. Diantaranya, POW terutama digunakan untuk menerbitkan mata uang. Di masa depan, diharapkan karena kesulitan penambangan meningkat, output Dikurangi, keamanan sistem terutama dijaga oleh POS. Saat ini ada dua jenis blok di blockchain, blok POW dan blok POS. Penulis PPC adalah Sunny King, seorang ahli cryptocurrency yang juga tidak mau mengungkapkan identitasnya, dan juga merupakan penemu Primecoin.
Untuk menguasai mekanisme POS Peercoin, Anda perlu fokus untuk memahami beberapa konsep inti yang dirancang khusus oleh Sunny King untuk PPC: Coinstake, Kernel, Stake Modifier, Modifier Interval, Stake Reward, Coinage, dll.
CoinstakeUntuk mewujudkan POS, Sunny King secara khusus merancang transaksi khusus yang disebut Coinstake, desain Coinstake dipinjam dari desain Coinbase Satoshi Nakamoto. Intinya, Coinbase dan Coinsake adalah transaksi, tetapi mereka memberlakukan beberapa batasan keras pada input dan output mereka.
Dan desain Coinstake harus berbeda dari Coinbase, agar tidak mengganggu mekanisme POW asli dari sistem. Cukup bandingkan perbedaan struktural antara keduanya.
Persyaratan struktur Coinbase:
Kuantitas input harus sama dengan 1, dan field input prevout (menentukan output dari transaksi sebelumnya) harus kosong. Kuantitas keluaran harus lebih besar dari atau sama dengan 1.
Persyaratan struktur koin:
Jumlah masukan lebih besar dari atau sama dengan 1, dan bidang sebelumnya dari masukan pertama tidak boleh kosong, yaitu, Kernel harus ada. Jumlah keluaran lebih besar dari atau sama dengan 2, dan keluaran pertama harus kosong.
Lokasi dua transaksi khusus ini dalam blockchain juga memiliki persyaratan khusus.Satoshi Nakamoto menetapkan bahwa transaksi pertama dari setiap blok harus ditempatkan di Coinbase, sebaliknya Coinbase tidak dapat muncul di lokasi lain dari blok tersebut. Sunny King jelas tidak ingin melanggar aturan ini. Dia menambahkan aturan. Untuk blok POS, Coinstake harus ditempatkan di transaksi kedua. Sebaliknya, Coinstake tidak dapat muncul di tempat lain. Dengan kata lain, selama transaksi kedua adalah Coinstake, maka blok ini dianggap sebagai blok POS.
Coinbase dan Coinstake tidak akan disiarkan secara terpisah, tetapi hanya ada di blok. Oleh karena itu, node klien umumnya tidak diizinkan untuk memasuki kumpulan memori. Ketika dua transaksi ini dihabiskan, perlu untuk memeriksa apakah keduanya sudah matang.
Protokal KernelInput pertama (Input 0) dari Coinstake disebut Kernel. Kernel memang memainkan peran sentral dalam mekanisme POS, dan penentuan blok yang memenuhi syarat terkait erat dengannya. Ketentuan penilaian blok berkualifikasi PPC adalah:
SHA256D (nStakeModifier + txPrev.block.nTime + txPrev.offset + txPrev.nTime + txPrev.vout.n + nTime) < bnTarget * nCoinDayWeight
Setiap parameter di sisi kiri rumus memiliki tujuan desain yang jelas, di antaranya,
nStakeModifier: Regulator yang dirancang khusus untuk POS. Berdasarkan rumus di atas, jika tidak ada parameter nStakeModifier, ketika seseorang menerima koin dan mendapat konfirmasi dari jaringan, dia dapat langsung menghitung terlebih dahulu kapan dia dapat memalsukan blok di masa mendatang. Ini jelas tidak memenuhi tujuan desain. Sunny King berharap penambang POS dapat melakukan eksplorasi buta seperti penambang POW untuk mempertahankan blockchain online secara real time. NStakeModifier dirancang untuk mencegah penambang POS menghitung sebelumnya. nStakeModifier dapat dipahami sebagai atribut blok POS, setiap blok sesuai dengan nilai nStakeModifier, tetapi nStakeModifier tidak mengubah setiap blok, tetapi kesepakatan menetapkan bahwa Modifier Interval harus dihitung ulang setiap waktu tertentu (Modifier Interval). NStakeModifier sebelumnya terkait dengan nilai hash blok terbaru, sehingga penambang POS tidak dapat menghitungnya terlebih dahulu karena dia tidak mengetahui nilai hash blok di masa mendatang.
Dengan kata lain, dalam sistem PPC, selain keberadaan blockchain, rantai koin (sejarah tanda tangan transaksi koin), juga terdapat rantai yang jarang disebutkan-rantai regulator ekuitas.
Perlu disebutkan bahwa Sunny King hanya menambahkan regulator ini di versi PPC yang lebih baru. Awalnya, dia menggunakan nBits.
txPrev: Transaksi sebelumnya terkait dengan Kernel.
txPrev.block.nTime: Stempel waktu dari blok tempat txPrev berada. Waktu ketika transaksi termasuk dalam blok tidak dapat ditentukan oleh pemrakarsa transaksi. Node dapat menghitung stempel waktu yang bermanfaat bagi dirinya sendiri di masa mendatang melalui penghitungan sebelumnya. Parameter ini Ini untuk mencegah node menggunakan perkiraan keuntungan ini untuk menghasilkan transaksi dalam jumlah besar sebelumnya.
txPrev.offset: Offset txPrev di blok, digunakan untuk mengurangi kemungkinan bahwa node jaringan akan menghasilkan koin pada waktu yang sama.
txPrev.nTime: waktu konstruksi txPrev, tujuan desain seperti txPrev.offset.
txPrev.vout.n: Subskrip keluaran Kernel di txPrev, target desainnya seperti txPrev.offset.
Lihat lagi ruas kanan persamaan,
bnTarget: Nilai benchmark tingkat kesulitan target saat ini dari seluruh jaringan, mirip dengan nilai kesulitan saat ini di POW, dicatat oleh nbits.
nCoinDayWeight: Era koin dari Kernel.
Dapat dilihat dari rumus di atas bahwa Sunny King berharap dapat memberikan keacakan yang cukup untuk penambang POS di satu sisi, dan di sisi lain, ruang pencarian sangat terbatas pada bidang cap waktu Coinstake untuk memastikan bahwa faktor terbesar yang mempengaruhi penemuan blockchain yang memenuhi syarat adalah mata uang Kernel. usia.
Ketika sebuah node memalsukan sebuah blok, ia pertama-tama memilih salah satu UTXO-nya sendiri sebagai Kernel, membuat koin, menghitung hash, jika tidak memenuhi syarat, merekonstruksi coinstake, stempel waktu Waktu akan berubah selama rekonstruksi, dan Anda juga dapat mengubah Kernel untuk mendapatkan Coinstakes yang berbeda mengulangi cara ini hingga blok yang memenuhi syarat ditemukan.
KoinUsia koin yang disebutkan di atas juga disebut hari koin. Jika 1,5 koin ada di blockchain selama 10 hari, nilai usia koin adalah:
Koin = 1,5 * 10 = 15
PPC menggunakan umur mata uang daripada langsung menggunakan saldo (Balance) untuk menghitung. Setelah UTXO dibelanjakan, usia mata uangnya dihapus, dan usia mata uang UTXO yang baru dimulai dari 0.
stakeRewardInsentif ekuitas atau yang biasa disebut bunga produktif dihitung sebagai berikut:
stakeReward = nCoinAge * 33 / (365 * 33 + 8) * 0,01 * COIN
Rumusnya dapat disederhanakan menjadi:
stakeReward = (0,01 * nCoinAge / 365) * KOIN
Diantaranya, nCoinAge adalah jumlah dari semua usia koin yang dimasukkan oleh Coinstake. Rumusnya menunjukkan bahwa pendapatan dihitung dengan tarif tahunan 1%. Dalam keadaan ideal, dengan asumsi bahwa semua koin berpartisipasi dalam penambangan sepanjang tahun, jumlah token memiliki tingkat inflasi tahunan sebesar 1%. Desain ini dikritik oleh banyak orang, dan desain ini tidak mendorong penambang untuk berpartisipasi aktif dalam penambangan untuk pemeliharaan Keamanan blockchain, karena jika Anda tidak mempertimbangkan biaya penanganan, pemegang mata uang membuka node untuk mencetak setiap beberapa bulan, atau pencetakan online waktu nyata, manfaat teoretisnya sama.
stakeMinAgeSistem POS juga memiliki risiko serangan usia koin 51%. Untuk meningkatkan kesulitan serangan, Sunny King menetapkan batasan usia minimum (stakeMinAge) pada kualifikasi pencetakan setiap UTXO: UTXO tidak memenuhi syarat untuk pencetakan jika waktu keberadaan di blockchain kurang dari stakeMinAge , Usia koin minimum PPC adalah 8 jam.
Kemudian, beberapa mata uang yang bersaing menambahkan batas usia maksimum (stakeMaxAge): UTXO telah berada di blockchain lebih lama dari stakeMaxAge, dan usia koin selalu dihitung sebagai stakeMaxAge.
Dalam mekanisme POS yang dirancang oleh Sunny King, UTXO seperti penambang. Penambang harus beristirahat untuk jangka waktu tertentu setelah berhasil melemparkan blok. Oleh karena itu, seluruh sistem harus memastikan bahwa cukup banyak "penambang" yang secara bersamaan melakukan cast blok secara online. Dimungkinkan untuk mendapatkan kecepatan produksi blok yang mulus.
Nextcoin
Pada September 2013, seorang pengguna bernama BCNext memulai posting di forum Bitcointalk, mengumumkan bahwa mata uang POS murni baru akan dikeluarkan, yang kemudian dinamai Nextcoin, atau disingkat NXT. Tidak seperti altcoin lain pada masa itu, yang dikembangkan langsung dari kode sumber Bitcoin, BCNext memulai dari awal, menggunakan bahasa JAVA untuk mengembangkan NXT dari awal, dan melakukan banyak perbaikan pada struktur blok, struktur transaksi, dan kriptografi asimetris. Ada banyak inovasi di NXT, hanya inovasi terpenting-Transparent Forging (Penempaan Transparan) yang dibahas disini.
Metode implementasi POS NXT sangat berbeda dari PPC. Metode untuk menentukan blok yang memenuhi syarat adalah:
memukul < baseTarget * effectiveBalance * elapseTime
diantara mereka,
memukul:
NXT meninggalkan skema desain UTXO Satoshi Nakamoto dan mengadopsi skema saldo akun, di mana setiap akun sesuai dengan kunci privat. Setiap blok memiliki bidang generationSignature, dan generasi klik terkait dengan bidang ini. Saat pengguna perlu memalsukan blok, pertama-tama dia menghitung klik uniknya. Proses penghitungannya adalah sebagai berikut:
Pengguna menandatangani generationSignature dari blok sebelumnya dengan kunci pribadinya sendiri dan mendapatkan generationSignature dari bloknya sendiri.
Lakukan operasi SHA256 pada hasil dari langkah sebelumnya untuk mendapatkan hashdata.
Ambil 8 byte pertama (64 bit total) hashdata sebagai variabel hit.
Desain menghasilkan tanda tangan agak mirip dengan stakeModifier PPC, artinya, ada rantai tanda tangan yang tersembunyi di bawah blockchain NXT.
Di sisi kanan rumus,
baseTarget: Nilai dasar kesulitan seluruh jaringan. Tingkat kesulitan ini disesuaikan dengan target blok per menit.
effectiveBalance: Saldo efektif akun, transfer mata uang ke akun membutuhkan konfirmasi yang cukup untuk memiliki hak untuk mencetak, yang disebut saldo efektif.
elapseTime: Interval waktu antara waktu saat ini dan blok sebelumnya, dihitung berdasarkan currentTime-lastBlockTime.
Menganalisis rumus di atas, jika sisi kiri rumus masih dianggap sebagai penambangan dan sisi kanan dianggap sebagai nilai target, dapat dilihat bahwa pengguna tidak memiliki ruang pencarian sama sekali, karena ketika seluruh jaringan menghasilkan blok baru, untuk blok berikutnya masing-masing Klik pengguna sendiri telah diperbaiki. Di sisi kanan rumus, nilai target setiap pengguna berbanding lurus dengan saldo efektif akun mereka sendiri.Selain itu, seiring berjalannya waktu, nilai target terus meningkat, dan ketimpangan akhirnya akan terbentuk, yaitu secara teoritis setiap node dapat menambang Blok itu, tetapi ditetapkan bahwa blok yang dihasilkan paling awal dipilih terlebih dahulu.
Gunakan gambar di atas untuk membandingkan mekanisme penempaan NXT. Setiap silinder memiliki ketinggian tetap (hit). Dengan asumsi bahwa batang pembatas ketinggian terus naik (target nilai target terus meningkat dari waktu ke waktu), semua silinder bisa lewat (memenuhi syarat) Block), tetapi silinder dengan ketinggian terpendek bisa lewat lebih dulu.
Proses blok penyusun segmen node adalah: akun harus online dalam waktu nyata. Saat blok terbaru dibuat di seluruh jaringan, setiap akun segera menghitung kliknya sendiri yang sesuai, lalu menghitung pemalsuannya sesuai dengan rumus elapseTime = hit / (baseTaret * effectiveBalance) Nilai waktu yang diharapkan dari blok dan menyiarkan waktu yang diharapkan ini ke node lain dalam jaringan.Dengan cara ini, setiap node di seluruh jaringan mengetahui waktu yang diharapkan dari node lain, dan dengan demikian mengetahui siapa yang akan memalsukan blok berikutnya. Akun memalsukan blok di jendela waktunya sendiri dan segera menyiarkannya ke seluruh jaringan. Node lain memeriksa apakah blok baru valid. Pertama, periksa apakah tanda tangan yang dihasilkan dari blok itu valid, dan periksa apakah stempel waktu dari blok baru sama dengan yang ada di blok yang dibuat. Waktu yang diharapkan dari rilis node sebelumnya bertepatan. Setiap kali klien mendeteksi bahwa blok baru dibuat di jaringan, ia akan menghitung ulang waktu yang diharapkan dan menerbitkannya ke seluruh jaringan.
Karena hit adalah hasil dari tanda tangan pengguna dengan kunci pribadinya sendiri, ia memiliki banyak keacakan untuk pengguna yang berbeda. Bahkan pengguna dengan saldo kecil, jika cukup beruntung dan nilai hitnya kecil, adalah mungkin untuk memalsukan blok dengan cepat.
Generasi blok NXT sepenuhnya meninggalkan konsep kompetisi. Ini sedikit "Tuhan telah mengatur segalanya". Siapa yang akan menghasilkan blok berikutnya ditakdirkan untuk waktu yang lama. Semua node dari seluruh jaringan bisa lakukan adalah menunggu itu. Saatnya tiba.
Seperti yang ditunjukkan pada gambar, bagaimana jika node A tidak menyiarkan blok dalam jendela waktu tempa, tidak masalah, jaringan akan menunggu blok B, tetapi jika A dan B tidak berjauhan, atau beberapa node menerima lebih dulu karena transmisi jaringan Untuk blok A, beberapa node terlebih dahulu menerima blok B, dan jaringannya bercabang. Saat ini prinsip Bestchain masih mengutamakan rantai terpanjang, cabang dengan panjang yang sama, dan cabang dengan cap waktu blok tertinggi terlebih dahulu. . Jika node memalsukan dan menyiarkan blok ke semua cabang, itu menjadi serangan, dan percabangan di dekat blok jaringan terbaru akan meningkat. Cara untuk mengatasi masalah tersebut adalah membiarkan node hanya menggali cabang yang optimal, hal ini tidak dapat tercermin dalam kesepakatan dan hanya dapat mengandalkan disiplin diri dari node yang jujur.
Meninggalkan konsep persaingan, konsensus NXT harus sangat bergantung pada timeline. Meskipun node dapat memprediksi kapan mereka dapat menghasilkan blok di masa depan, mereka harus menunggu sampai waktu untuk menyiarkan blok. Jika node disiarkan terlebih dahulu, node lain di jaringan akan Tidak akan menerima, BCNext memberlakukan batasan pada implementasi klien: Untuk blok terbaru, klien hanya menerima siaran blok dalam waktu 15 detik sebelum dan setelah waktu mesin saat ini. Batasan ini tidak dapat tercermin dalam perjanjian, hanya Andalkan bantuan real-time klien.
Tidak heran jika semua token NXT sudah ditambang sebelumnya. Jika model seperti Bitcoin perlahan-lahan dikeluarkan oleh penambang, itu pasti akan membuat blok di segmen kompetitif, dan begitu kompetisi, blockchain akan segera jatuh ke dalam percabangan. Keberhasilan pengoperasian seluruh rangkaian aturan konsensus NXT sebenarnya memiliki permainan minat potensial di belakangnya, yaitu, pemegang koin adalah pengguna sistem dan penerima manfaat sistem. Setiap orang harus bekerja sama untuk menjaga blockchain dan menjadi simpul yang jujur.
Mungkin Anda akan memikirkan metode serangan: meskipun Anda memiliki sedikit koin di tangan, Anda dapat menghasilkan banyak akun dan mentransfer sejumlah kecil koin ke setiap akun untuk menemukan pukulan kecil setiap saat dan dengan cepat memalsukan blok. Akibatnya, POS merosot menjadi situasi canggung yang mirip dengan POW. BCNext pertama kali dimulai dengan algoritme tanda tangan asimetris, menggunakan ED25519 daripada ECDSA Bitcoin, yang pertama lebih sulit dihitung daripada yang terakhir. Selain itu, jangka waktu jatuh tempo ditingkatkan menjadi 1440 blok (1 hari), yaitu, setelah saldo efektif akun berhasil memalsukan blok, sebagian saldo harus menunggu 1 hari untuk memenuhi syarat kembali untuk penempaan.
Sebuah percabangan pendek masih tak terhindarkan. Akan ada banyak cabang di dekat blok terbaru NXT. Sebuah transaksi membutuhkan lebih banyak konfirmasi agar cukup aman. NXT secara resmi merekomendasikan 10 konfirmasi.
POS2.0
Operasi PPC yang sukses dengan cepat menarik sekelompok pengikut, di antaranya yang lebih terkenal termasuk Novacoin (NVC), Blackcoin (BLK), dan sebagainya. Komunitas koin hitam percaya bahwa era koin dapat disalahgunakan oleh node jahat untuk mendapatkan bobot jaringan yang lebih tinggi dan berhasil menerapkan serangan pembelanjaan ganda. Oleh karena itu, buku putih POS2.0 dirilis dan beberapa pengoptimalan terperinci dari PPC dilakukan untuk menyelesaikan beberapa potensi masalah keamanan. , Peningkatan yang paling penting adalah menggunakan saldo, bukan usia mata uang. Ketentuan untuk pemblokiran yang memenuhi syarat adalah:
F (Stempel waktu) < Target * Jumlah koin * Usia koin
Menjadi:
F (Stempel waktu) < Target * Jumlah koin
Dengan cara ini, tidak peduli berapa lama UTXO ditempatkan, kemampuannya untuk menempa blok tetap tidak berubah. Tindakan ini dapat memberi insentif kepada node agar lebih banyak online untuk mencetak koin, meningkatkan keamanan sistem, mengurangi jalur serangan seminimal mungkin, dan meningkatkan secara signifikan Jumlah node yang terus dijalankan jaringan.
POS3.0
Komunitas koin hitam kemudian meningkatkan dan meluncurkan versi POS3.0, yang membuat beberapa pengoptimalan pada biaya transaksi dan penyesuaian kesulitan. Perubahan paling signifikan adalah mengubah mekanisme hadiah tingkat bunga tahunan 1% menjadi hadiah jumlah tetap (hadiah tetap per blok 1.5BLK), langkah ini tidak hanya mengurangi tingkat inflasi token (mengingat token akan hilang secara permanen dan mekanisme reward bernilai rendah kembali ke ide desain dari jumlah total yang konstan), ini juga berarti bahwa node pemegang token harus online dalam waktu nyata untuk mendapatkan pendapatan.
DPOS
Proyek Bitshares diluncurkan pada Agustus 2013. Ini adalah proyek ambisius yang telah membuat banyak perubahan pada blockchain dan memperkenalkan banyak konsep dan fitur baru, terutama Bitshares X dan bilangan polimorfik yang mempesona. Istilah baru seperti platform perdagangan aset dan penahan aset sangat menarik dan membingungkan untuk sementara waktu. Saat ini, baik POW maupun POS telah berjalan dengan sukses sejak lama, dan pro dan kontra satu sama lain telah berulang kali dibahas, dan kedua kubu masih berdebat sampai hari ini. Menurut rencana proyek, BitShares memiliki persyaratan yang sangat tinggi untuk kapasitas transaksi dan kecepatan blok. Jelas baik POW maupun POS tidak dapat memenuhi persyaratan tersebut, sehingga BitShares menciptakan mekanisme konsensus baru-Delegated Proof-Of-Stake (DPOS) , Artinya, sertifikat otorisasi saham.
DPOS mudah dipahami. Mirip dengan sistem dewan direksi korporat modern, sistem BitShares merujuk pada pemegang token sebagai pemegang saham. Pemegang saham memilih 101 perwakilan, dan kemudian perwakilan ini bertanggung jawab untuk menghasilkan blok. Kemudian masalah inti yang perlu diselesaikan terutama mencakup: bagaimana menjadi perwakilan yang dipilih, bagaimana dengan bebas menarik diri dari "dewan direksi", dan bagaimana berkolaborasi antar perwakilan untuk menghasilkan blok.
Jika pemegang token ingin menjadi perwakilan, ia harus mendaftar dengan blockchain dengan kunci publiknya terlebih dahulu, dan mendapatkan pengenal identitas unik dengan panjang 32 bit. Pengguna dapat memberikan suara pada pengenal ini dalam bentuk transaksi dan mendapatkan jumlah suara. 101 teratas dipilih sebagai perwakilan. Perwakilan bergiliran menghasilkan blok, dan pendapatan (biaya transaksi) dibagi rata. Jika seorang perwakilan tidak membuat blok secara jujur, maka akan mudah ditemukan oleh perwakilan dan pemegang saham lainnya, dan dia akan segera dikeluarkan dari "dewan direksi", dan posisi kosong akan otomatis diisi oleh perwakilan dengan suara ke-102.
Dari perspektif tertentu, DPOS dapat dipahami sebagai sistem multi-pusat, yang memiliki keunggulan desentralisasi dan sentralisasi.
Untuk menyimpulkan
Terakhir, analisis komparatif sederhana mengenai kelebihan dan kekurangan serta karakteristik mekanisme konsensus di atas dari beberapa aspek:
keamananAda bukti matematis lengkap untuk keamanan POW, yang merupakan keunggulan POS dan DPOS yang tak tertandingi. Mekanisme konsensus blockchain umumnya perlu mempertimbangkan serangan DDOS dan serangan pembelanjaan ganda. POW memiliki 51% ancaman serangan daya komputasi. Daya komputasi super Bitcoin saat ini membuat kerusakan sistem menjadi mahal. POS juga akan memiliki 51% serangan usia koin, dan keamanan DPOS sepenuhnya bergantung pada kejujuran perwakilan. Teori NXT dapat mencapai transaksi yang cepat, tetapi perlu menempa node untuk mengekspos IP-nya sendiri, sehingga mudah menjadi target serangan DDOS, dan perwakilan DPOS juga mudah menjadi target serangan DDOS.
Perlindungan lingkunganDalam teori segitiga yang mustahil (desentralisasi, keamanan, dan perlindungan lingkungan tidak dapat digabungkan pada saat yang sama), POW sepenuhnya mengabaikan kebutuhan untuk konservasi energi, dan menggunakan daya komputasi yang besar untuk menjaga keamanan sistem dan karakteristik desentralisasi. POS dan DPOS hampir tidak memerlukan biaya tambahan, tetapi pengorbanan pada dua fitur lainnya tidak dapat dihindari.
Kecepatan konsensusSulit bagi POW untuk mempersingkat waktu blok, POS dapat mempersingkat waktu blok secara relatif, terutama NXT akan lebih cepat daripada implementasi PPC, DPOS juga dapat mencapai konsensus dalam waktu singkat, BitShares saat ini menghasilkan blok dalam 30 detik. Namun POS lebih rentan terhadap fork, terutama NXT, sehingga transaksi perlu menunggu konfirmasi lebih lanjut sebelum dianggap aman.
Kapasitas transaksiIni adalah masalah inti yang perlu diselesaikan dalam pengembangan blockchain di masa depan. Kemudahan transaksi yang besar berarti bandwidth dan ruang penyimpanan yang besar. Kapasitas transaksi POW sulit untuk diperluas, dan NXT karena setiap node dapat memprediksi siapa yang akan memalsukan blok berikutnya. , Dapat langsung mengirim transaksi ke node tempa, sehingga kapasitas transaksi NXT memiliki skalabilitas yang besar. Dari perspektif tertentu, DPOS dapat dipahami sebagai sistem multi-pusat, yang memiliki keuntungan dari desentralisasi dan sentralisasi. Jika node perwakilan menjalankan server yang kuat dan bandwidth masing-masing cukup besar, secara teoritis, kapasitas pemrosesan transaksi dapat dibandingkan dengan sentralisasi tradisional. Sistem, seperti Visa.
Blokir kehalusanKarena karakteristik algoritma hash, POW bisa mendapatkan kecepatan pembuatan blok yang mulus, dan tingkat kesulitan seluruh jaringan dapat disesuaikan setelah jangka waktu tertentu. Pembuatan blok POS terutama terkait dengan keseimbangan, dan gradien keseimbangan pengguna relatif besar, jadi POS umumnya perlu disesuaikan untuk setiap blok Kesulitan dasar dari seluruh jaringan. DPOS mengandalkan sinergi perwakilan terbatas, jika perwakilan tidak sering keluar-masuk, hampir dapat mencapai interval tetap antar blok.
FinalitasPOW dan PPC mencapai konsensus melalui kompetisi dan tidak ada finalitas. Secara teori, jika ada cukup daya komputasi, sekarang mungkin untuk menambang blockchain Bitcoin dari awal, tetapi dapat mengandalkan titik deteksi untuk mencapai finalitas. NXT dan DPOS sangat bergantung pada sumbu waktu dan mengandalkan deteksi node online waktu nyata, sehingga ada finalitas.
Berdasarkan keunggulan semua pihak, menurut saya pribadi POW cocok untuk public chain.Jika private chain dibangun, karena tidak ada masalah trust dari verifikasi node maka lebih tepat menggunakan POS. Namun karena adanya local node yang tidak terpercaya dalam consortium chain maka DPOS lebih tepat.
Artikel selanjutnya akan menganalisis PBFT, DBFT, RPCA (Ripple) dan mekanisme konsensus lainnya.
Harga standar Bitcoin pada saat posting Harga beli: 5565,00 Harga jual: 5564,00
Penulis: wakil presiden teknik invasif mata uang Zhou Ye Fei, instruktur Asosiasi rantai blok DACA, pakar teknologi rantai blok
Sumber naskah: Informasi Babbitt ( Pernyataan Hak Cipta: Penulis berhak. Artikel tersebut merupakan pendapat independen penulis dan tidak mewakili posisi Babbitt.
- Selama Festival Musim Semi, 6 jenis makanan lezat yang membuat Anda semakin gemuk, jangan disentuh saat Anda menurunkan berat badan!
- Para astronom telah menemukan "super-Earth", planet yang paling mungkin untuk kehidupan alien sejauh ini!
- Bantu Anda menyelesaikan tujuan kecil Festival Musim Semi-kehilangan perut Anda dan pamerkan perut Anda!
- Jika Anda tidak dapat memilih yang tepat untuk membeli mobil, jangan khawatir! Lihat mobil baru yang terdaftar di bulan Juli!