Compare commits
2 Commits
a6bca9e27f
...
6998355887
| Author | SHA1 | Date | |
|---|---|---|---|
| 6998355887 | |||
| 253a6314e0 |
20
src/mocks/WeaverMock.sol
Normal file
20
src/mocks/WeaverMock.sol
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
pragma solidity ^0.8.20;
|
||||||
|
|
||||||
|
import {Weaver} from "../types/Weaver.sol";
|
||||||
|
|
||||||
|
contract WeaverMock is Weaver {
|
||||||
|
constructor() Weaver() {}
|
||||||
|
|
||||||
|
function insertTreeNode(bytes32 receiver, uint256 amount) external returns (uint256) {
|
||||||
|
return _insertTreeNode(receiver, amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
function computeArgumentsHash(
|
||||||
|
uint256 index,
|
||||||
|
uint256 amount,
|
||||||
|
bytes32 receiver
|
||||||
|
) external pure returns (bytes32) {
|
||||||
|
return _computeArgumentsHash(index, amount, receiver);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -52,7 +52,10 @@ abstract contract Weaver is IWeaver {
|
|||||||
bytes32 left = bytes32(_treeNodes[session][j].upperLookup(atBlock));
|
bytes32 left = bytes32(_treeNodes[session][j].upperLookup(atBlock));
|
||||||
bytes32 right = bytes32(_treeNodes[session][j | 1].upperLookup(atBlock));
|
bytes32 right = bytes32(_treeNodes[session][j | 1].upperLookup(atBlock));
|
||||||
|
|
||||||
currentLevel[i] = Hashes.efficientKeccak256(left, right);
|
bytes32 leftHash = Hashes.efficientKeccak256(left);
|
||||||
|
bytes32 rightHash = Hashes.efficientKeccak256(right);
|
||||||
|
|
||||||
|
currentLevel[i] = Hashes.efficientKeccak256(leftHash, rightHash);
|
||||||
unchecked { ++i; }
|
unchecked { ++i; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,7 +92,8 @@ abstract contract Weaver is IWeaver {
|
|||||||
uint256 i;
|
uint256 i;
|
||||||
|
|
||||||
for (; i < currentLevelCount;) {
|
for (; i < currentLevelCount;) {
|
||||||
currentLevel[i] = bytes32(_treeNodes[session][i].upperLookup(atBlock));
|
bytes32 leaf = bytes32(_treeNodes[session][i].upperLookup(atBlock));
|
||||||
|
currentLevel[i] = Hashes.efficientKeccak256(leaf);
|
||||||
unchecked { ++i; }
|
unchecked { ++i; }
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,6 +148,6 @@ abstract contract Weaver is IWeaver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function _computeArgumentsHash(uint256 i, uint256 a, bytes32 r) internal pure returns (bytes32) {
|
function _computeArgumentsHash(uint256 i, uint256 a, bytes32 r) internal pure returns (bytes32) {
|
||||||
return Hashes.efficientKeccak256(bytes32(i), Hashes.efficientKeccak256(bytes32(a), r));
|
return Hashes.efficientKeccak256(Hashes.efficientKeccak256(bytes32(a), r), bytes32(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -76,6 +76,8 @@ contract GatekeeperVerification is Gatekeeper {
|
|||||||
unchecked { ++i; }
|
unchecked { ++i; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
computedHash = Hashes.efficientKeccak256(computedHash);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
for (; i < proof.length; ) {
|
for (; i < proof.length; ) {
|
||||||
if (slotIndex % 2 == 0) {
|
if (slotIndex % 2 == 0) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user