Skip to content

Instantly share code, notes, and snippets.

@nalinbhardwaj
Last active May 23, 2022 11:11
Show Gist options
  • Save nalinbhardwaj/5d7ce7307ffca6033ddec68ff4b24388 to your computer and use it in GitHub Desktop.
Save nalinbhardwaj/5d7ce7307ffca6033ddec68ff4b24388 to your computer and use it in GitHub Desktop.
Minimal bug tester for circom known/unknown analysis panic: https://github.com/iden3/circom/pull/57
pragma circom 2.0.3;
template TestEllipticCurveScalarMultiplyUnequal(n, k, b, x, p){
signal input in[2][k];
signal output out[2][k];
var Bits[250];
var BitLength;
for (var i = 0; i < 250; i++) {
Bits[i] = (x >> i) & 1;
if(Bits[i] == 1){
BitLength = i + 1;
}
}
signal R[BitLength][2][k];
for(var i=BitLength - 1; i>=0; i--){
if( i == BitLength - 1 ){
for(var j=0; j<2; j++)for(var idx=0; idx<k; idx++)
R[i][j][idx] <== in[j][idx];
}else{
// E(Fp) has no points of order 2, so the only way 2*R[i+1] = O is if R[i+1] = O
for(var j=0; j<2; j++)for(var idx=0; idx<k; idx++)
R[i][j][idx] <== R[i+1][j][idx];
}
}
for(var i=0; i<2; i++)for(var idx=0; idx<k; idx++)
out[i][idx] <== R[0][i][idx];
}
template Tester(n, k) {
signal input in[2][k];
var p[50] = [35747322042231467, 36025922209447795, 1084959616957103, 7925923977987733, 16551456537884751, 23443114579904617, 1829881462546425];
var x_abs = 15132376222941642752;
var b = 4;
component xP = TestEllipticCurveScalarMultiplyUnequal(n, k, b, x_abs, p);
for(var i=0; i<2; i++)for(var idx=0; idx<k; idx++)
xP.in[i][idx] <== in[i][idx];
}
component main { public [ in ] } = Tester(55, 7);
/*
{
"in": [
[
"2009822906594717",
"20442509737585892",
"19998406545305169",
"3257293002446733",
"9524330011591718",
"22878868367690592",
"556175690519393"
],
[
"5482847202149361",
"4456548308632729",
"21161498208540270",
"18926196016982932",
"18046733294100249",
"18607721477678504",
"984728513755546"
]
]
}
*/
thread 'main' panicked at 'Method call in file type_analysis/src/analyzers/unknown_known_analysis.rs line 216', /Users/nibnalin/Documents/circom/program_structure/src/utils/environment.rs:192:9
stack backtrace:
0: 0x10b876191 - std::backtrace_rs::backtrace::libunwind::trace::h310ac7aacd577bf8
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
1: 0x10b876191 - std::backtrace_rs::backtrace::trace_unsynchronized::had33a05577c9d011
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x10b876191 - std::sys_common::backtrace::_print_fmt::hd9acce3818e5f1bc
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:67:5
3: 0x10b876191 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h4edbddd26fc45697
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:46:22
4: 0x10b8929bb - core::fmt::write::h266c957f12b1655a
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/fmt/mod.rs:1163:17
5: 0x10b87290a - std::io::Write::write_fmt::h65d4ee621e8d810d
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/io/mod.rs:1696:15
6: 0x10b877d15 - std::sys_common::backtrace::_print::h9a5ef67cfa8b031e
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:49:5
7: 0x10b877d15 - std::sys_common::backtrace::print::h99dfbbc518768f3b
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:36:9
8: 0x10b877d15 - std::panicking::default_hook::{{closure}}::h5b4886cd9f93dfca
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:210:50
9: 0x10b8778ff - std::panicking::default_hook::h986d152c7bd7e732
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:227:9
10: 0x10b878400 - std::panicking::rust_panic_with_hook::h151f3b3bf37b4f17
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:624:17
11: 0x10b877e9e - std::panicking::begin_panic_handler::{{closure}}::hf6660086d9ebd48c
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:521:13
12: 0x10b876607 - std::sys_common::backtrace::__rust_end_short_backtrace::h34152178ea368a9a
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/sys_common/backtrace.rs:139:18
13: 0x10b877e0a - rust_begin_unwind
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:517:5
14: 0x10b8c1b3b - std::panicking::begin_panic_fmt::h0fe158f210bff25c
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:460:5
15: 0x10b53e344 - program_structure::utils::environment::RawEnvironment<T,CC,SC,VC>::get_mut_variable_or_break::h70c10694635bb6d9
16: 0x10b54896c - type_analysis::analyzers::unknown_known_analysis::analyze::h2fbbfda02f0ba15c
17: 0x10b5495fa - type_analysis::analyzers::unknown_known_analysis::analyze::iterate_statements::h521780550157b87b
18: 0x10b547db1 - type_analysis::analyzers::unknown_known_analysis::analyze::h2fbbfda02f0ba15c
19: 0x10b5495fa - type_analysis::analyzers::unknown_known_analysis::analyze::iterate_statements::h521780550157b87b
20: 0x10b547db1 - type_analysis::analyzers::unknown_known_analysis::analyze::h2fbbfda02f0ba15c
21: 0x10b547666 - type_analysis::analyzers::unknown_known_analysis::unknown_known_analysis::hc45ca09d6c0407de
22: 0x10b533474 - type_analysis::check_types::check_types::h895e7d7756dc359c
23: 0x10b45fd8e - circom::type_analysis_user::analyse_project::h27a511cc6457cb31
24: 0x10b47172a - circom::main::h26e0bd380a334f61
25: 0x10b45ee96 - std::sys_common::backtrace::__rust_begin_short_backtrace::h7968ddfd54d4d243
26: 0x10b45eeac - std::rt::lang_start::{{closure}}::hd799e985cb306c25
27: 0x10b875e7f - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::h042bcf1eeb382749
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/core/src/ops/function.rs:259:13
28: 0x10b875e7f - std::panicking::try::do_call::h58aa98b024209748
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:403:40
29: 0x10b875e7f - std::panicking::try::hcfc7bc2af44bc609
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:367:19
30: 0x10b875e7f - std::panic::catch_unwind::h88980c0eb694c110
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panic.rs:133:14
31: 0x10b875e7f - std::rt::lang_start_internal::{{closure}}::hc07a850a9bc371e5
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/rt.rs:128:48
32: 0x10b875e7f - std::panicking::try::do_call::h061d0434866b3d81
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:403:40
33: 0x10b875e7f - std::panicking::try::h8d38c4e20b01fbf0
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panicking.rs:367:19
34: 0x10b875e7f - std::panic::catch_unwind::hc41b36baa54eb12d
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/panic.rs:133:14
35: 0x10b875e7f - std::rt::lang_start_internal::h59ad95b3bebc83b2
at /rustc/f1edd0429582dd29cccacaf50fd134b05593bd9c/library/std/src/rt.rs:128:20
36: 0x10b4724d9 - _main
DONE (0s)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment