o1js SHA – zkHack Nov23

o1js SHA – zkHack Nov23

Uses o1js’s newly released bitwise operations gadgets to optimize the SHA256 circuit implementation by operating on the 32-bit words (32 field elements) as a single field element utilizing native binary gadgets.

The repository serves as a proof of concept for the development of the SHA256 hashing algorithm using the o1js SDK during ZK-HACK Istanbul. The o1js SDK provides robust native binary functions, facilitating the construction of an efficient SHA2 circuit for zero-knowledge applications on the Mina blockchain.

Optimizations:
In general, SHA2 circuits face inefficiencies as binaries (0 or 1) consume the space of a complete field element. Performing multiple binary operations on binaries represented as field elements makes the SHA2 algorithm a constraint-heavy circuit. To address this, the o1js SDK aims to optimize the circuit implementation by treating 32-bit words (32 field elements) as a single field element, especially given that SHA256 construction (Merkle–Damgård) operates on 32-bit words.

How SHA-256 Works:
SHA-2 algorithms can be delineated into two stages: preprocessing and hash computation. During preprocessing, the process involves padding a message, parsing the padded message into m-bit blocks, and establishing initialization values for use in the subsequent hash computation. The hash computation generates a message schedule from the padded message, utilizing this schedule along with functions, constants, and word operations to iteratively produce a series of hash values. The final hash value, derived through the hash computation, determines the message digest.

‘Chewing Glass’ Prize Winner ZK Hack Istanbul
Further information here >

Github https://github.com/Shigoto-dev19/sha256-o1js

zkok-id: zkok104 Categories: , , Tags: , ,

Türkçe

o1js’nin yeni yayınlanmış bitwise işlemler araçlarıyla SHA256 devresinin uygulanmasını, 32-bitlik kelimeleri (32 alan öğesi) tek bir alan öğesi olarak işletmek için yerel ikili araçları kullanarak optimize ediyor. Bu depo, ZK-HACK Istanbul sırasında o1js SDK’sını kullanarak SHA256 karma algoritmasının geliştirilmesine yönelik bir kanıt olarak hizmet ediyor. o1js SDK, Mina blockchain üzerindeki sıfır bilgi uygulamaları için etkili bir SHA2 devresi oluşturmayı kolaylaştıran sağlam yerel ikili işlevler sağlar. Optimizasyonlar: Genellikle SHA2 devreleri, ikili (0 veya 1) bir tam alan öğesinin yerini aldığından verimsizliklerle karşılaşır. Alan öğeleri olarak temsil edilen ikililer üzerinde çoklu ikili işlemler, SHA2 algoritmasını kısıt yoğun bir devre haline getirir. Bununla başa çıkmak için o1js SDK, 32-bitlik kelimeleri (32 alan öğesi) tek bir alan öğesi olarak ele alarak devre uygulamasını optimize etmeyi hedefler. Bu yaklaşım, SHA256 yapısının (Merkle–Damgård) 32-bitlik kelimeler üzerinde çalıştığı göz önüne alındığında özellikle önemlidir. SHA-256 Nasıl Çalışır: SHA-2 algoritmaları genellikle iki aşamaya ayrılır: önişleme ve karma hesaplama. Önişleme, bir mesajı doldurma, doldurulmuş mesajı m-bitlik bloklara ayırma ve sonraki karma hesaplamada kullanılmak üzere başlangıç değerlerini belirleme işlemini içerir. Karma hesaplama, doldurulmuş mesajdan bir mesaj programı oluşturur ve bu programı, işlevler, sabitler ve kelime işlemleri ile birlikte kullanarak ardışık karma değerleri üretir. Karma hesaplama yoluyla elde edilen nihai karma değeri, mesaj özetini belirler. ‘Chewing Glass’ Ödülü Sahibi ZK Hack Istanbul

Featured zkApps
MAC!
Katz
Anomix
Social Cap
zkLocus
Protokit
Pado
Wordle
zkFusion
zKeeper
Scroll to Top