Skip to content

Commit 3772d81

Browse files
author
Docs Syncer
committed
CI: a453a6a
1 parent a3f462d commit 3772d81

File tree

2 files changed

+28
-44
lines changed

2 files changed

+28
-44
lines changed

docs/reference/contracts/libs/crypto/ECDSA384.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ library ECDSA384
1111
Cryptography module
1212

1313
This library provides functionality for ECDSA verification over any 384-bit curve. Currently,
14-
this is the most efficient implementation out there, consuming ~9 million gas per call.
14+
this is the most efficient implementation out there, consuming ~8.1 million gas per call.
1515

16-
The approach is Strauss-Shamir double scalar multiplication with 4 bits of precompute + projective points.
16+
The approach is Strauss-Shamir double scalar multiplication with 4 bits of precompute + affine coordinates.
17+
For reference, naive implementation uses ~400 billion gas, which is 48000 times more expensive.
18+
19+
We also tried using projective coordinates, however, the gas consumption rose to ~9 million gas.
1720
## Structs info
1821

1922
### Parameters

docs/reference/contracts/libs/crypto/U384.md

Lines changed: 23 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -85,17 +85,6 @@ function modexp(
8585
```
8686

8787

88-
### modexpAssign
89-
90-
```solidity
91-
function modexpAssign(
92-
uint256 call_,
93-
uint256 b_,
94-
uint256 eInteger_
95-
) internal view
96-
```
97-
98-
9988
### modexpAssignTo
10089

10190
```solidity
@@ -126,18 +115,6 @@ function modaddAssign(uint256 a_, uint256 b_, uint256 m_) internal pure
126115
```
127116

128117

129-
### modaddAssignTo
130-
131-
```solidity
132-
function modaddAssignTo(
133-
uint256 to_,
134-
uint256 a_,
135-
uint256 b_,
136-
uint256 m_
137-
) internal pure
138-
```
139-
140-
141118
### modmul
142119

143120
```solidity
@@ -156,36 +133,40 @@ function modmulAssign(uint256 call_, uint256 a_, uint256 b_) internal view
156133
```
157134

158135

159-
### modmulAssignTo
136+
### modsub
160137

161138
```solidity
162-
function modmulAssignTo(
163-
uint256 call_,
164-
uint256 to_,
139+
function modsub(
165140
uint256 a_,
166-
uint256 b_
167-
) internal view
141+
uint256 b_,
142+
uint256 m_
143+
) internal pure returns (uint256 r_)
168144
```
169145

170146

171-
### sub
147+
### modsubAssign
172148

173149
```solidity
174-
function sub(uint256 a_, uint256 b_) internal pure returns (uint256 r_)
150+
function modsubAssign(uint256 a_, uint256 b_, uint256 m_) internal pure
175151
```
176152

177153

178-
### subAssignTo
154+
### modsubAssignTo
179155

180156
```solidity
181-
function subAssignTo(uint256 to_, uint256 a_, uint256 b_) internal pure
157+
function modsubAssignTo(
158+
uint256 to_,
159+
uint256 a_,
160+
uint256 b_,
161+
uint256 m_
162+
) internal pure
182163
```
183164

184165

185-
### modshl1Assign
166+
### modshl1
186167

187168
```solidity
188-
function modshl1Assign(uint256 a_, uint256 m_) internal pure
169+
function modshl1(uint256 a_, uint256 m_) internal pure returns (uint256 r_)
189170
```
190171

191172

@@ -196,6 +177,13 @@ function modshl1AssignTo(uint256 to_, uint256 a_, uint256 m_) internal pure
196177
```
197178

198179

180+
### moddivAssign
181+
182+
```solidity
183+
function moddivAssign(uint256 call_, uint256 a_, uint256 b_) internal view
184+
```
185+
186+
Stores modinv into `b_` and moddiv into `a_`.
199187
### moddiv
200188

201189
```solidity
@@ -225,10 +213,3 @@ function modinv(
225213
function _shl1(uint256 a_, uint256 r_) internal pure
226214
```
227215

228-
229-
### _shl1To
230-
231-
```solidity
232-
function _shl1To(uint256 a_) internal pure
233-
```
234-

0 commit comments

Comments
 (0)