Skip to content

Instantly share code, notes, and snippets.

@ZenulAbidin
Last active September 11, 2020 22:36
Show Gist options
  • Save ZenulAbidin/1f9aaa83453ab4c9e6c0992ee3fdad5d to your computer and use it in GitHub Desktop.
Save ZenulAbidin/1f9aaa83453ab4c9e6c0992ee3fdad5d to your computer and use it in GitHub Desktop.
Attacker Success Probability function
// Function extracted from http://web.archive.org/web/20200502141047/https://people.xiph.org/~greg/attack_success.html
// $q: Porportion of hash power, 0.0 to 1.0
// $z: Number of confirmations
function _AttackerSuccessProbability($q, $z) {
var label = 0;
label = 2;
while (1) switch (label) {
case 2:
var $1 = 1 - $q;
var $2 = $z | 0;
var $3 = $q / $1;
var $4 = $2 * $3;
var $5 = $q > .5;
var $6 = ($z | 0) < 0;
var $or_cond = $5 | $6;
if ($or_cond) {
var $_0 = 1;
label = 7;
break;
} else {
label = 3;
break;
}
case 3:
var $7 = -$4;
var $8 = Math.exp($7);
var $9 = $z + 1 | 0;
var $sum_019 = 1;
var $k_020 = 0;
var $indvars_iv = 1;
label = 4;
break;
case 4:
var $indvars_iv;
var $k_020;
var $sum_019;
var $11 = ($k_020 | 0) < 1;
if ($11) {
var $poisson_0_lcssa = $8;
label = 6;
break;
} else {
var $i_017 = 1;
var $poisson_018 = $8;
label = 5;
break;
}
case 5:
var $poisson_018;
var $i_017;
var $12 = $i_017 | 0;
var $13 = $4 / $12;
var $14 = $poisson_018 * $13;
var $15 = $i_017 + 1 | 0;
var $exitcond = ($15 | 0) == ($indvars_iv | 0);
if ($exitcond) {
var $poisson_0_lcssa = $14;
label = 6;
break;
} else {
var $i_017 = $15;
var $poisson_018 = $14;
label = 5;
break;
}
case 6:
var $poisson_0_lcssa;
var $16 = $z - $k_020 | 0;
var $17 = $16 | 0;
var $18 = Math.pow($3, $17);
var $19 = 1 - $18;
var $20 = $poisson_0_lcssa * $19;
var $21 = $sum_019 - $20;
var $22 = $k_020 + 1 | 0;
var $indvars_iv_next = $indvars_iv + 1 | 0;
var $exitcond24 = ($22 | 0) == ($9 | 0);
if ($exitcond24) {
var $_0 = $21;
label = 7;
break;
} else {
var $sum_019 = $21;
var $k_020 = $22;
var $indvars_iv = $indvars_iv_next;
label = 4;
break;
}
case 7:
var $_0;
return $_0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment