o1js
Version:
TypeScript framework for zk-SNARKs and zkApps
42 lines (34 loc) • 1.18 kB
text/typescript
import { Hash, Field, SmartContract, state, State, method, Permissions, Bytes } from 'o1js';
let initialCommitment = Field(0);
class Bytes32 extends Bytes(32) {}
export class HashStorage extends SmartContract {
commitment = State<Field>();
init() {
super.init();
this.account.permissions.set({
...Permissions.default(),
editState: Permissions.proofOrSignature(),
});
this.commitment.set(initialCommitment);
}
async SHA3_256(xs: Bytes32) {
const shaHash = Hash.SHA3_256.hash(xs);
const commitment = Hash.hash(shaHash.toFields());
this.commitment.set(commitment);
}
async SHA3_384(xs: Bytes32) {
const shaHash = Hash.SHA3_384.hash(xs);
const commitment = Hash.hash(shaHash.toFields());
this.commitment.set(commitment);
}
async SHA3_512(xs: Bytes32) {
const shaHash = Hash.SHA3_512.hash(xs);
const commitment = Hash.hash(shaHash.toFields());
this.commitment.set(commitment);
}
async Keccak256(xs: Bytes32) {
const shaHash = Hash.Keccak256.hash(xs);
const commitment = Hash.hash(shaHash.toFields());
this.commitment.set(commitment);
}
}