Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 0 additions & 80 deletions conformance/scripts/failing.txt
Original file line number Diff line number Diff line change
@@ -1,80 +0,0 @@
instr/fixtures/zk_sdk/a0_7f8c0067c3ad9e1b.fix
instr/fixtures/zk_sdk/a11_d7cdabf3af12487d.fix
instr/fixtures/zk_sdk/a13_379ab95b603bfbe4.fix
instr/fixtures/zk_sdk/a15_dcddbae46a61d865.fix
instr/fixtures/zk_sdk/a16_3280762193911d15.fix
instr/fixtures/zk_sdk/a17_9351289cb0ab6c49.fix
instr/fixtures/zk_sdk/a18_3fba1553127beac4.fix
instr/fixtures/zk_sdk/a2_dc1311dcafd818d7.fix
instr/fixtures/zk_sdk/a3_8b05dffa3991ce20.fix
instr/fixtures/zk_sdk/a4_bb2336989dc4a34d.fix
instr/fixtures/zk_sdk/a5_5bd139ba8c43e199.fix
instr/fixtures/zk_sdk/a6_3c257db2305d61d7.fix
instr/fixtures/zk_sdk/a7_89497c02cf43312b.fix
instr/fixtures/zk_sdk/a8_ee93b2bad194edd6.fix
instr/fixtures/zk_sdk/a9_4920e8ff8149d60f.fix
instr/fixtures/zk_sdk/acc0_bebebc0c335d0027.fix
instr/fixtures/zk_sdk/acc11_4671635d91d771c3.fix
instr/fixtures/zk_sdk/acc13_779e4724849e5d1f.fix
instr/fixtures/zk_sdk/acc15_69ecb9c439a0a3d3.fix
instr/fixtures/zk_sdk/acc16_22f4789faf31013a.fix
instr/fixtures/zk_sdk/acc17_d580e07deb9979eb.fix
instr/fixtures/zk_sdk/acc18_222fa5dec00bd6df.fix
instr/fixtures/zk_sdk/acc2_25bbad7adb043902.fix
instr/fixtures/zk_sdk/acc3_93638051fe9a9032.fix
instr/fixtures/zk_sdk/acc4_346b401eede57b23.fix
instr/fixtures/zk_sdk/acc5_9f182deb9212323a.fix
instr/fixtures/zk_sdk/acc6_c14d3513e55b3462.fix
instr/fixtures/zk_sdk/acc7_692fb904040751ff.fix
instr/fixtures/zk_sdk/acc8_9a740675ffb453dc.fix
instr/fixtures/zk_sdk/acc9_64c38631c7cc437d.fix
instr/fixtures/zk_sdk/verif0_a29b1e9d744344a8.fix
instr/fixtures/zk_sdk/verif10_bfdef4b3ba4e391e.fix
instr/fixtures/zk_sdk/verif11_1dbab83a16fe6a1b.fix
instr/fixtures/zk_sdk/verif12_a7048539b4b8e411.fix
instr/fixtures/zk_sdk/verif13_dfa26efa65994081.fix
instr/fixtures/zk_sdk/verif14_f02f235aadf7d4e5.fix
instr/fixtures/zk_sdk/verif15_807420250b9780e0.fix
instr/fixtures/zk_sdk/verif16_2c0a2aaa7e50895e.fix
instr/fixtures/zk_sdk/verif17_fa91301db4ac9aa0.fix
instr/fixtures/zk_sdk/verif18_d71f9e54266c9636.fix
instr/fixtures/zk_sdk/verif19_eb8a282364165fc5.fix
instr/fixtures/zk_sdk/verif20_ed4d78e940a37141.fix
instr/fixtures/zk_sdk/verif21_2e343a6532d14d06.fix
instr/fixtures/zk_sdk/verif22_d17e45ba8032fa69.fix
instr/fixtures/zk_sdk/verif23_613434c5fc608a19.fix
instr/fixtures/zk_sdk/verif24_e867c8d239810c2a.fix
instr/fixtures/zk_sdk/verif25_3f2701ce1bf35455.fix
instr/fixtures/zk_sdk/verif5_be19352e8c9e7991.fix
instr/fixtures/zk_sdk/verif6_f8b5d5099faa223c.fix
instr/fixtures/zk_sdk/verif9_d7810f7a7111987a.fix
instr/fixtures/zk_sdk/w0_8ec5005274801773.fix
instr/fixtures/zk_sdk/w11_19df8196a540fec2.fix
instr/fixtures/zk_sdk/w13_21ed12da0cc9b04b.fix
instr/fixtures/zk_sdk/w15_09e751443b873cf7.fix
instr/fixtures/zk_sdk/w16_a06c5b45412cac74.fix
instr/fixtures/zk_sdk/w17_e882a520e3faf5cc.fix
instr/fixtures/zk_sdk/w18_de611fd4e365b353.fix
instr/fixtures/zk_sdk/w2_ab09648c62fc0677.fix
instr/fixtures/zk_sdk/w3_2b66de454d6fa439.fix
instr/fixtures/zk_sdk/w4_9f8009abcc7f4e4a.fix
instr/fixtures/zk_sdk/w5_2e5b3199f8d5b61c.fix
instr/fixtures/zk_sdk/w6_00a5ddd8b671cc85.fix
instr/fixtures/zk_sdk/w7_a0e0c80764d4d7e9.fix
instr/fixtures/zk_sdk/w8_2d9ce48583a46bee.fix
instr/fixtures/zk_sdk/w9_181202ef9796e3c7.fix
instr/fixtures/zk_sdk/wacc0_4565bf244f7d3c94.fix
instr/fixtures/zk_sdk/wacc11_6ea7c70a4400aa1e.fix
instr/fixtures/zk_sdk/wacc13_690bdf1be9ab6b1f.fix
instr/fixtures/zk_sdk/wacc15_ae77b943bc1ccebe.fix
instr/fixtures/zk_sdk/wacc16_7da88539580c7826.fix
instr/fixtures/zk_sdk/wacc17_ad6c57f722bcf5b1.fix
instr/fixtures/zk_sdk/wacc18_a2d8de38b14b1c68.fix
instr/fixtures/zk_sdk/wacc2_4d2624adb43ecdf4.fix
instr/fixtures/zk_sdk/wacc3_7e9654124e2af720.fix
instr/fixtures/zk_sdk/wacc4_fa6d9b4c086d5a97.fix
instr/fixtures/zk_sdk/wacc5_6a9b1525cf8f5452.fix
instr/fixtures/zk_sdk/wacc6_5f3bf70e8572e52b.fix
instr/fixtures/zk_sdk/wacc7_a08f10406aee35a4.fix
instr/fixtures/zk_sdk/wacc8_4370fd00b238a5a0.fix
instr/fixtures/zk_sdk/wacc9_d13848d723bd8cfa.fix
2 changes: 1 addition & 1 deletion src/runtime/program/zk_elgamal/execute.zig
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ fn processVerifyProof(
break :cd proof_data.context;
};

// create context state if additional accounts are provided with the instruction
// Create context state if additional accounts are provided with the instruction.
if (ic.ixn_info.account_metas.items.len >= accessed_accounts + 2) {
const context_authority_key = blk: {
const context_state_authority = try ic.borrowInstructionAccount(accessed_accounts + 1);
Expand Down
2 changes: 2 additions & 0 deletions src/runtime/program/zk_elgamal/lib.zig
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
const sig = @import("../../../sig.zig");

/// [agave] https://github.com/solana-program/zk-elgamal-proof/blob/zk-sdk%40v5.0.0/zk-sdk/src/zk_elgamal_proof_program/proof_data/mod.rs#L48
pub const ProofType = enum(u8) {
/// Empty proof type used to distinguish if a proof context account is initialized
uninitialized,
Expand Down Expand Up @@ -35,6 +36,7 @@ pub fn ProofContextState(C: type) type {

pub const ID: sig.core.Pubkey = .parse("ZkE1Gama1Proof11111111111111111111111111111");

// [agave] https://github.com/anza-xyz/agave/blob/master/programs/zk-elgamal-proof/src/lib.rs#L19-L31
pub const CLOSE_CONTEXT_STATE_COMPUTE_UNITS: u64 = 3_300;
pub const VERIFY_ZERO_CIPHERTEXT_COMPUTE_UNITS: u64 = 6_000;
pub const VERIFY_CIPHERTEXT_CIPHERTEXT_EQUALITY_COMPUTE_UNITS: u64 = 8_000;
Expand Down
27 changes: 25 additions & 2 deletions src/zksdk/elgamal.zig
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,10 @@ pub const Pubkey = struct {
);
return fromBytes(buffer);
}

pub fn rejectIdentity(self: *const Pubkey) error{IdentityElement}!void {
try self.point.rejectIdentity();
}
};

pub const Keypair = struct {
Expand Down Expand Up @@ -107,6 +111,11 @@ pub const Ciphertext = struct {
);
return fromBytes(buffer);
}

pub fn rejectIdentity(self: *const Ciphertext) error{IdentityElement}!void {
try self.commitment.point.rejectIdentity();
try self.handle.point.rejectIdentity();
}
};

pub fn encrypt(comptime T: type, value: T, pubkey: *const Pubkey) Ciphertext {
Expand Down Expand Up @@ -168,13 +177,27 @@ pub fn GroupedElGamalCiphertext(comptime N: u64) type {
};
}

pub fn fromBase64(string: []const u8) !Self {
const base64 = std.base64.standard;
var buffer: [BYTE_LEN]u8 = @splat(0);
const decoded_length = try base64.Decoder.calcSizeForSlice(string);
try std.base64.standard.Decoder.decode(
buffer[0..decoded_length],
string,
);
return fromBytes(buffer);
}

pub fn toBytes(self: Self) [BYTE_LEN]u8 {
var handles: [N * 32]u8 = undefined;
for (self.handles, 0..) |handle, i| {
const position = i * 32;
handles[position..][0..32].* = handle.point.toBytes();
handles[i * 32 ..][0..32].* = handle.point.toBytes();
}
return self.commitment.point.toBytes() ++ handles;
}

pub fn rejectIdentity(self: *const Self) error{IdentityElement}!void {
try self.commitment.rejectIdentity();
}
};
}
12 changes: 6 additions & 6 deletions src/zksdk/lib.zig
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,13 @@ pub const PubkeyProofData = pubkey_validity.Data;
pub const ZeroCiphertextData = zero_ciphertext.Data;

// grouped ciphertext validity
const grouped_cipher_handles_2 = @import("sigma_proofs/grouped_ciphertext/handles_2.zig");
const grouped_cipher_handles_3 = @import("sigma_proofs/grouped_ciphertext/handles_3.zig");
const grouped_cipher_2_handles = @import("sigma_proofs/grouped_ciphertext/2_handles.zig");
const grouped_cipher_3_handles = @import("sigma_proofs/grouped_ciphertext/3_handles.zig");

pub const GroupedCiphertext2HandlesData = grouped_cipher_handles_2.Data;
pub const BatchedGroupedCiphertext2HandlesData = grouped_cipher_handles_2.BatchedData;
pub const GroupedCiphertext3HandlesData = grouped_cipher_handles_3.Data;
pub const BatchedGroupedCiphertext3HandlesData = grouped_cipher_handles_3.BatchedData;
pub const GroupedCiphertext2HandlesData = grouped_cipher_2_handles.Data;
pub const BatchedGroupedCiphertext2HandlesData = grouped_cipher_2_handles.BatchedData;
pub const GroupedCiphertext3HandlesData = grouped_cipher_3_handles.Data;
pub const BatchedGroupedCiphertext3HandlesData = grouped_cipher_3_handles.BatchedData;

// range proof
pub const bulletproofs = @import("range_proof/bulletproofs.zig");
Expand Down
Loading