Dolandırıcılık Kanıtı ve ZK Dolandırıcılık Kanıtı'nın Uygulama Yaklaşımı
Dolandırıcılık kanıtı, blok zinciri alanında yaygın olarak kullanılan bir teknik çözümdür, ilk olarak Ethereum topluluğunda ortaya çıkmış ve Arbitrum ve Optimism gibi Layer2 projeleri tarafından benimsenmiştir. 2023'te Bitcoin ekosisteminin yükselmesiyle, Robin Linus BitVM çözümünü önerdi, dolandırıcılık kanıtını merkezine alarak Bitcoin'in mevcut teknik temeli üzerinde ikinci katman veya köprüler için yeni bir güvenlik modeli sağladı.
BitVM, erken dönemlerde mantık kapıları temel alınarak geliştirilen BitVM0'dan, daha sonra ZK Dolandırıcılık Kanıtı ve Groth16 doğrulama devrelerini merkezine alan BitVM2'ye kadar birçok versiyon evrimi geçirmiştir. İlgili teknik yollar sürekli olarak olgunlaşmaktadır. Bitlayer, Citrea, BOB gibi birçok proje, farklı uygulamalar gerçekleştirmek için BitVM'yi teknik temel olarak kullanmaktadır.
Bu makalede, Optimism'in dolandırıcılık kanıtı planı örnek alınarak, MIPS sanal makinesi ve etkileşimli dolandırıcılık kanıtına dayanan planı ile ZK tabanlı dolandırıcılık kanıtının ana fikirleri analiz edilecektir.
OutputRoot ve StateRoot
Optimism, tanınmış bir Optimistic Rollup projesidir ve altyapısı sıralayıcı ve Ethereum üzerindeki akıllı sözleşlerden oluşmaktadır. Sıralayıcı, işlemleri işledikten sonra verileri Ethereum'a gönderir. Optimism düğüm istemcisini çalıştırmak bu verileri indirmenizi ve yerel olarak çalıştırmanızı sağlar, böylece mevcut durum kümesi hash'ini hesaplayabilirsiniz.
Eğer sıralayıcı yanlış bir durum kümesi hash'i yüklerse, yerel hesaplama sonuçları farklı olacaktır; bu durumda dolandırıcılık kanıtı sistemi aracılığıyla itiraz başlatılabilir.
EVM tabanlı blok zincirleri genellikle durum kümesini kaydetmek için Merkle Tree veri yapısını kullanır ve buna World State Trie denir. İşlem gerçekleştirildikten sonra, World State Trie değişir ve nihai hash'i de güncellenir. Ethereum bu hash'e StateRoot der ve durum kümesindeki değişiklikleri göstermek için kullanır.
Optimism'in hesap sistemi Ethereum'a benzer, ayrıca StateRoot alanını da kullanır. Sıralayıcı, düzenli olarak OutputRoot'u Ethereum'a yükler, OutputRoot StateRoot ve diğer iki alandan hesaplanır.
MIPS Sanal Makinesi ve Bellek Merkle Ağacı
OutputRoot'un doğruluğunu zincir üzerinde doğrulamak için en basit yöntem, Ethereum üzerinde OP düğüm istemcisi uygulamaktır, ancak iki sorun vardır:
Akıllı sözleşmeler, dolandırıcılık kanıtı için gerekli girdi parametrelerini otomatik olarak alamaz.
Ethereum Gas Limit sınırlıdır, karmaşık hesaplama görevlerini desteklemez.
İlk sorun PreimageOracle sözleşmesi ile çözülebilir. İkinci sorun için, OP ekibi Solidity ile MIPS sanal makinesini yazdı ve OP düğümünün bazı işlevlerini gerçekleştirdi.
OP geliştirme ekibi, işlemleri yürütmek, bloklar oluşturmak ve OutputRoot modülü ile temel olarak aynı işlevselliğe sahip bir basitleştirilmiş program oluşturmak için Golang kullanmıştır. Ancak, hesaplama maliyeti çok büyük olduğundan, tüm işlemleri zincir üzerinde tam olarak yürütmek mümkün olmamıştır.
Bunun için Optimism, etkileşimli dolandırıcılık kanıtı sistemini tasarladı ve işlem işleme sürecini MIPS opcode'larının sıralı işlenmesine ayrıştırdı. Her opcode uygulandıktan sonra, sanal makine durumu hash'i değişir ve bu kayıtlar bir Merkle ağacında toplanır.
Etkileşimli dolandırıcılık kanıtında, hangi MIPS işlem kodunun sanal makine durumu hash hatasına neden olduğunu belirlemek gerekir, ardından o zamanki durumu zincir üzerinde yeniden oluşturup işlem kodunu çalıştırmak ve sonuçların tutarlı olup olmadığını gözlemlemek gerekir. Bu, bazı MIPS sanal makine durumu bilgilerini zincir üzerinde yüklemeyi gerektirir.
Zincir üzerindeki dolandırıcılık kanıtı ile ilgili sözleşmeler, Step fonksiyonu aracılığıyla MIPS işlem kodu yürütmesi gerçekleştirilir:
katılık
function step(
bytes memory _stateData,
bytes bellek _proof
) public returns (bytes32) {
// ...
}
_stateData ve _proof parametreleri, bir MIPS opcode'unun yürütülmesine ilişkin bağımlı verileri içermektedir; örneğin, kayıt durumu, bellek durumu hash'i vb.
OP, 32 bit MIPS mimarisini kullanır; bellek, 28 katmanlı ikili Merkle Ağacı olarak düzenlenebilir ve altta 2^27 yaprak, her bellek adresinin verilerini kaydeder. Tüm yaprak verilerinin toplam hash'i memRoot'tur.
Etkileşimli dolandırıcılık kanıtı
Tartışmalı MIPS opcode'larını belirlemek için OP ekibi, Fault Dispute Game(FDG) protokolünü geliştirdi. FDG'de, bir meydan okuyan ve bir savunucu olmak üzere iki rol bulunmaktadır ve her iki taraf da yerel olarak GameTree'yi oluşturmalıdır.
GameTree, iki katmanlı bir ağaçtan oluşur: Birinci katmanın yaprakları, farklı blokların OutputRoot'udur; ikinci katmanın yaprakları ise MIPS sanal makinesinin durum hash'idir. Tartışan taraflar, zincir üzerinde birkaç kez etkileşimde bulunarak, nihayetinde zincir üzerinde yürütülmesi gereken tek bir MIPS opcode'unu belirler.
Özetle, etkileşimli dolandırıcılık kanıtı iki temel mekanizma içerir:
FDG'nin zincir üstünde yürütülmesi gereken MIPS işlem kodu ve VM durum bilgisi
Ethereum zincirindeki MIPS sanal makinesinde bu opcode'u çalıştırarak nihai sonucu elde et
ZKlaşmış dolandırıcılık kanıtı
Geleneksel dolandırıcılık kanıtı etkileşimi karmaşık, aşağıdaki sorunları barındırıyor:
Çoklu etkileşim büyük miktarda gas maliyeti üretir.
Etkileşim süreci uzundur, bu süre zarfında Rollup normal bir şekilde işlem gerçekleştiremez.
Zincir üzerinde belirli VM geliştirme zorluğu yüksek
Bu sorunları çözmek için, Optimism ZK Dolandırıcılık Kanıtı kavramını önerdi. Temel olarak, meydan okuma sırasında yeniden oynatılması gereken işlemleri belirlemek, sıralayıcı tarafından ZK kanıtının sağlanması ve Ethereum sözleşmesi tarafından doğrulanmasıdır.
Interaktif dolandırıcılık kanıtına kıyasla, ZK Dolandırıcılık Kanıtı çoklu etkileşimi tek bir ZK kanıtı üretimi ve doğrulamasına dönüştürerek zaman ve maliyet tasarrufu sağlar. ZK Rollup'a kıyasla, ZK Dolandırıcılık Kanıtı'na dayanan OP Rollup yalnızca meydan okuma durumunda kanıt üretir, bu da hesaplama maliyetlerini düşürür.
ZK'leştirilmiş dolandırıcılık kanıtı düşüncesi de BitVM2 tarafından benimsenmiştir. BitVM2'yi kullanan projeler arasında Bitlayer, Goat Network gibi projeler bulunmakta ve Bitcoin script’i aracılığıyla ZK Proof doğrulama programını gerçekleştirmekte ve zincir üstü program boyutunu büyük ölçüde sadeleştirmektedir.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Dolandırıcılık kanıtının detaylı açıklaması: Etkileşimli çözümlerden ZK Dolandırıcılık Kanıtı'na teknik evrim
Dolandırıcılık Kanıtı ve ZK Dolandırıcılık Kanıtı'nın Uygulama Yaklaşımı
Dolandırıcılık kanıtı, blok zinciri alanında yaygın olarak kullanılan bir teknik çözümdür, ilk olarak Ethereum topluluğunda ortaya çıkmış ve Arbitrum ve Optimism gibi Layer2 projeleri tarafından benimsenmiştir. 2023'te Bitcoin ekosisteminin yükselmesiyle, Robin Linus BitVM çözümünü önerdi, dolandırıcılık kanıtını merkezine alarak Bitcoin'in mevcut teknik temeli üzerinde ikinci katman veya köprüler için yeni bir güvenlik modeli sağladı.
BitVM, erken dönemlerde mantık kapıları temel alınarak geliştirilen BitVM0'dan, daha sonra ZK Dolandırıcılık Kanıtı ve Groth16 doğrulama devrelerini merkezine alan BitVM2'ye kadar birçok versiyon evrimi geçirmiştir. İlgili teknik yollar sürekli olarak olgunlaşmaktadır. Bitlayer, Citrea, BOB gibi birçok proje, farklı uygulamalar gerçekleştirmek için BitVM'yi teknik temel olarak kullanmaktadır.
Bu makalede, Optimism'in dolandırıcılık kanıtı planı örnek alınarak, MIPS sanal makinesi ve etkileşimli dolandırıcılık kanıtına dayanan planı ile ZK tabanlı dolandırıcılık kanıtının ana fikirleri analiz edilecektir.
OutputRoot ve StateRoot
Optimism, tanınmış bir Optimistic Rollup projesidir ve altyapısı sıralayıcı ve Ethereum üzerindeki akıllı sözleşlerden oluşmaktadır. Sıralayıcı, işlemleri işledikten sonra verileri Ethereum'a gönderir. Optimism düğüm istemcisini çalıştırmak bu verileri indirmenizi ve yerel olarak çalıştırmanızı sağlar, böylece mevcut durum kümesi hash'ini hesaplayabilirsiniz.
Eğer sıralayıcı yanlış bir durum kümesi hash'i yüklerse, yerel hesaplama sonuçları farklı olacaktır; bu durumda dolandırıcılık kanıtı sistemi aracılığıyla itiraz başlatılabilir.
EVM tabanlı blok zincirleri genellikle durum kümesini kaydetmek için Merkle Tree veri yapısını kullanır ve buna World State Trie denir. İşlem gerçekleştirildikten sonra, World State Trie değişir ve nihai hash'i de güncellenir. Ethereum bu hash'e StateRoot der ve durum kümesindeki değişiklikleri göstermek için kullanır.
Optimism'in hesap sistemi Ethereum'a benzer, ayrıca StateRoot alanını da kullanır. Sıralayıcı, düzenli olarak OutputRoot'u Ethereum'a yükler, OutputRoot StateRoot ve diğer iki alandan hesaplanır.
MIPS Sanal Makinesi ve Bellek Merkle Ağacı
OutputRoot'un doğruluğunu zincir üzerinde doğrulamak için en basit yöntem, Ethereum üzerinde OP düğüm istemcisi uygulamaktır, ancak iki sorun vardır:
İlk sorun PreimageOracle sözleşmesi ile çözülebilir. İkinci sorun için, OP ekibi Solidity ile MIPS sanal makinesini yazdı ve OP düğümünün bazı işlevlerini gerçekleştirdi.
OP geliştirme ekibi, işlemleri yürütmek, bloklar oluşturmak ve OutputRoot modülü ile temel olarak aynı işlevselliğe sahip bir basitleştirilmiş program oluşturmak için Golang kullanmıştır. Ancak, hesaplama maliyeti çok büyük olduğundan, tüm işlemleri zincir üzerinde tam olarak yürütmek mümkün olmamıştır.
Bunun için Optimism, etkileşimli dolandırıcılık kanıtı sistemini tasarladı ve işlem işleme sürecini MIPS opcode'larının sıralı işlenmesine ayrıştırdı. Her opcode uygulandıktan sonra, sanal makine durumu hash'i değişir ve bu kayıtlar bir Merkle ağacında toplanır.
Etkileşimli dolandırıcılık kanıtında, hangi MIPS işlem kodunun sanal makine durumu hash hatasına neden olduğunu belirlemek gerekir, ardından o zamanki durumu zincir üzerinde yeniden oluşturup işlem kodunu çalıştırmak ve sonuçların tutarlı olup olmadığını gözlemlemek gerekir. Bu, bazı MIPS sanal makine durumu bilgilerini zincir üzerinde yüklemeyi gerektirir.
Zincir üzerindeki dolandırıcılık kanıtı ile ilgili sözleşmeler, Step fonksiyonu aracılığıyla MIPS işlem kodu yürütmesi gerçekleştirilir:
katılık function step( bytes memory _stateData, bytes bellek _proof ) public returns (bytes32) { // ... }
_stateData ve _proof parametreleri, bir MIPS opcode'unun yürütülmesine ilişkin bağımlı verileri içermektedir; örneğin, kayıt durumu, bellek durumu hash'i vb.
OP, 32 bit MIPS mimarisini kullanır; bellek, 28 katmanlı ikili Merkle Ağacı olarak düzenlenebilir ve altta 2^27 yaprak, her bellek adresinin verilerini kaydeder. Tüm yaprak verilerinin toplam hash'i memRoot'tur.
Etkileşimli dolandırıcılık kanıtı
Tartışmalı MIPS opcode'larını belirlemek için OP ekibi, Fault Dispute Game(FDG) protokolünü geliştirdi. FDG'de, bir meydan okuyan ve bir savunucu olmak üzere iki rol bulunmaktadır ve her iki taraf da yerel olarak GameTree'yi oluşturmalıdır.
GameTree, iki katmanlı bir ağaçtan oluşur: Birinci katmanın yaprakları, farklı blokların OutputRoot'udur; ikinci katmanın yaprakları ise MIPS sanal makinesinin durum hash'idir. Tartışan taraflar, zincir üzerinde birkaç kez etkileşimde bulunarak, nihayetinde zincir üzerinde yürütülmesi gereken tek bir MIPS opcode'unu belirler.
Özetle, etkileşimli dolandırıcılık kanıtı iki temel mekanizma içerir:
ZKlaşmış dolandırıcılık kanıtı
Geleneksel dolandırıcılık kanıtı etkileşimi karmaşık, aşağıdaki sorunları barındırıyor:
Bu sorunları çözmek için, Optimism ZK Dolandırıcılık Kanıtı kavramını önerdi. Temel olarak, meydan okuma sırasında yeniden oynatılması gereken işlemleri belirlemek, sıralayıcı tarafından ZK kanıtının sağlanması ve Ethereum sözleşmesi tarafından doğrulanmasıdır.
Interaktif dolandırıcılık kanıtına kıyasla, ZK Dolandırıcılık Kanıtı çoklu etkileşimi tek bir ZK kanıtı üretimi ve doğrulamasına dönüştürerek zaman ve maliyet tasarrufu sağlar. ZK Rollup'a kıyasla, ZK Dolandırıcılık Kanıtı'na dayanan OP Rollup yalnızca meydan okuma durumunda kanıt üretir, bu da hesaplama maliyetlerini düşürür.
ZK'leştirilmiş dolandırıcılık kanıtı düşüncesi de BitVM2 tarafından benimsenmiştir. BitVM2'yi kullanan projeler arasında Bitlayer, Goat Network gibi projeler bulunmakta ve Bitcoin script’i aracılığıyla ZK Proof doğrulama programını gerçekleştirmekte ve zincir üstü program boyutunu büyük ölçüde sadeleştirmektedir.