| 66 | print("\tCommitment size: ", convert_size(self.commitment_size())) |
| 67 | |
| 68 | class Polynomial(Message): |
| 69 | def __init__(self, params : LDTParameters, degree, rate_bits, stack=1, name=""): |
| 70 | Message.__init__(self,params, name) |
| 71 | self.degree = degree |
| 72 | self.rate = rate_bits |
| 73 | self.stack = stack |
| 74 | self.fold_param = 1 |
| 75 | |
| 76 | def fold(self, k): |
| 77 | if k != 1: |
| 78 | assert(self.fold_param == 1) |
| 79 | self.fold_param = k |
| 80 | |
| 81 | def fold_amount(self): |
| 82 | return self.fold_param |
| 83 | |
| 84 | def rate_bits(self): |
| 85 | return self.rate |
| 86 | |
| 87 | def degree_real(self): |
| 88 | return self.degree |
| 89 | |
| 90 | def degree_virtual(self): |
| 91 | return self.degree / self.fold_param |
| 92 | |
| 93 | def length_real(self): |
| 94 | return self.degree_real() * 2**self.rate_bits() * self.stack |
| 95 | |
| 96 | def length_virtual(self): |
| 97 | return self.degree_virtual() * 2**self.rate_bits() |
| 98 | |
| 99 | def auth_path_size(self): |
| 100 | if self.queries() == 0: |
| 101 | return 0 |
| 102 | |
| 103 | total_path_size = self.params.rom.authentication_path_size(self.length_virtual(), self.queries()) |
| 104 | |
| 105 | leaf_size = min(self.field_size() * self.stack * self.fold_amount(), self.hash_size()) |
| 106 | |
| 107 | return total_path_size + self.queries() * leaf_size |
| 108 | |
| 109 | def opening_size(self): |
| 110 | return self.queries() * self.field_size() * self.fold_amount() * self.stack |
| 111 | |
| 112 | def commitment_size(self): |
| 113 | return self.hash_size() |
| 114 | |
| 115 | def argument_size(self): |
| 116 | return self.commitment_size() + self.auth_path_size() + self.opening_size() |
| 117 | |
| 118 | def proof_length(self): |
| 119 | return self.length_real() |
| 120 | |
| 121 | def reps_full_sec(self): |
| 122 | return self.params.repetition_parameter(self.rate_bits()) |
| 123 | |
| 124 | def fixed_proof_of_work(self): |
| 125 | rho = self.rate_bits() |
no outgoing calls
no test coverage detected