Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,7 @@ config.toml

# Solidity Compiler files
cache/
out/
out/

# Foundry cache
cache-foundry/
8 changes: 7 additions & 1 deletion .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,10 @@
url = https://github.com/OpenZeppelin/openzeppelin-contracts.git
[submodule "vendor/openzeppelin-contracts-upgradeable"]
path = vendor/openzeppelin-contracts-upgradeable
url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable.git
url = https://github.com/OpenZeppelin/openzeppelin-contracts-upgradeable.git
[submodule "vendor/forge-std"]
path = vendor/forge-std
url = https://github.com/foundry-rs/forge-std
[submodule "vendor/openzeppelin-foundry-upgrades"]
path = vendor/openzeppelin-foundry-upgrades
url = https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades
10 changes: 10 additions & 0 deletions foundry.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[profile.default]
src='zilliqa/src/contracts'
out='out'
test='tests'
cache_path='cache-foundry'
viaIR=true
auto_detect_solc=true
build_info=true
extra_output=['storageLayout']
solc='0.8.28'
5 changes: 4 additions & 1 deletion remappings.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
@openzeppelin/contracts/=vendor/openzeppelin-contracts/contracts/
@openzeppelin/lib/=vendor/openzeppelin-contracts/lib/
@openzeppelin/contracts-upgradeable/=vendor/openzeppelin-contracts-upgradeable/contracts/
@openzeppelin/contracts-upgradeable/=vendor/openzeppelin-contracts-upgradeable/contracts/
@openzeppelin/foundry-upgrades=vendor/openzeppelin-foundry-upgrades/src
forge-std=vendor/forge-std/src

1 change: 1 addition & 0 deletions vendor/forge-std
Submodule forge-std added at 8ba903
1 change: 1 addition & 0 deletions vendor/openzeppelin-foundry-upgrades
4 changes: 2 additions & 2 deletions zilliqa/src/contracts/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,5 @@ ZQ_CONTRACT_TEST_BLESS=1 cargo test --features test_contract_bytecode -- contrac
## Run Solidity tests

```sh
forge test -C zilliqa/src/contracts/tests
```
forge test -C zilliqa/src/contracts/tests --gas-limit 2000000000000
```
63 changes: 63 additions & 0 deletions zilliqa/src/contracts/test/Tester.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// SPDX-License-Identifier: MIT OR Apache-2.0
pragma solidity ^0.8.20;

import {Test, Vm} from "forge-std/Test.sol";

abstract contract Tester is Test {
modifier TODO() {
vm.skip(true);
_;
}

function quickSort(
Vm.Wallet[] memory arr,
int256 left,
int256 right
) private pure {
int256 i = left;
int256 j = right;
if (i == j) return;
Vm.Wallet memory pivot = arr[uint256(left + (right - left) / 2)];
while (i <= j) {
while (arr[uint(i)].addr < pivot.addr) i++;
while (pivot.addr < arr[uint(j)].addr) j--;
if (i <= j) {
(arr[uint256(i)], arr[uint256uint256uint256(j)]) = (
arr[uint256(j)],
arr[uint256(i)]
);
i++;
j--;
}
}
if (left < j) quickSort(arr, left, j);
if (i < right) quickSort(arr, i, right);
}

function sign(
Vm.Wallet memory wallet,
bytes32 hashedMessage
) public returns (bytes memory) {
(uint8 v, bytes32 r, bytes32 s) = vm.sign(wallet, hashedMessage);
return abi.encodePacked(r, s, v);
}

function multiSign(
Vm.Wallet[] memory wallet,
bytes32 hashedMessage
) public returns (bytes[] memory) {
bytes[] memory signatures = new bytes[](wallet.length);

for (uint256 i = 0; i < wallet.length; ++i) {
signatures[i] = sign(wallet[i], hashedMessage);
}
return signatures;
}

function sort(
Vm.Wallet[] memory data
) public pure returns (Vm.Wallet[] memory) {
quickSort(data, int256(0), int256(data.length - 1));
return data;
}
}
Loading
Loading