Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: l1 execution #516

Merged
merged 44 commits into from
Sep 4, 2023
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
e1eb4e5
fix: eth relayer
Aug 22, 2023
33b96f9
refactor: use deserialization for payload
Aug 22, 2023
172745f
fix: l1 avatar payload serialization
Aug 22, 2023
b73dec3
fix: enforce timestamp exceed max voting timestamp
Aug 28, 2023
d23e659
feat: working L1 avatar execution
Aug 28, 2023
72ab36e
chore: mock core contracts and avatar execution for testing
Aug 28, 2023
e0077ed
chore: deps management
Aug 28, 2023
944a551
chore: test/ dir with lq exec test
Aug 28, 2023
813fd0e
chore: more deps managment
Aug 28, 2023
b63ed4d
chore: hardhat config
Aug 28, 2023
082c97c
chore: formatting
Aug 28, 2023
73e3e58
Merge branch 'develop' into fix_l1_exec
Orland0x Aug 28, 2023
4770766
Merge branch 'develop' into fix_l1_exec
Aug 28, 2023
804a88c
chore: L1 Avatar unit forge tests
Aug 29, 2023
8d8454e
chore: deps and cleanup
Aug 29, 2023
cd9cda0
chore: temp remove deps.sol
Aug 29, 2023
afdb9af
fix: relayer imports
Aug 29, 2023
af30b06
chore: foundry deps
Aug 29, 2023
70be85b
chore: fix typo
Aug 29, 2023
4b29fb5
chore: re-add stark sig auth test
Aug 29, 2023
5ca5da2
chore: l1 execution revert tests
Aug 31, 2023
360357a
chore: l1 execution bash script
Aug 31, 2023
9090930
chore: updated deps
Aug 31, 2023
4ab65ec
chore: updated to latest safe versions for setup and pull artifacts f…
Aug 31, 2023
818b037
chore: cleanup test
Aug 31, 2023
f54fcac
chore: updated sol imports
Aug 31, 2023
13ac9ac
Merge branch 'develop' into fix_l1_exec
Aug 31, 2023
1132599
feat: get strategy type on eth relayer
Aug 31, 2023
3a22511
chore: fixe remappings
Aug 31, 2023
d1a3b3e
chore: More test coverage and CI integration
Sep 3, 2023
571ec08
chore: cleanup
Sep 3, 2023
fa6c7d0
chore: PR fixes
Sep 4, 2023
777942d
chore: more coverage and refactor
Sep 4, 2023
95d9631
chore: checks on space manager during init
Sep 4, 2023
498879d
chore: fixed revert string
Sep 4, 2023
1c055a5
chore: update .env.example
Orland0x Sep 4, 2023
eda97bd
Merge branch 'develop' into fix_l1_exec
Sep 4, 2023
091b857
chore: moved safe utils to external sub dir
Sep 4, 2023
a36f69a
chore formatting
Sep 4, 2023
4ce5bce
feat: quorum setter and test
Sep 4, 2023
a34512e
vhore: test invalid space call exec strat
Sep 4, 2023
ddafb71
chore: formatting
Sep 4, 2023
3f2d438
chore: fix revert msg in test
Sep 4, 2023
27f5b1c
feat: setters for Starknet Core and Eth Relayer contracts and tests
Sep 4, 2023
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
8 changes: 7 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1 +1,7 @@
NETWORK_URL=
STARKNET_NETWORK_URL=
ETH_NETWORK_URL=
ADDRESS=
PK=
STARKNET_SIERRA_COMPILE_PATH=
# Needed for Devnet Postman Endpoint to work
OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
73 changes: 61 additions & 12 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
name: SX-Starknet Workflow

env:
STARKNET_SIERRA_COMPILE_PATH: ./cairo/bin/starknet-sierra-compile
OBJC_DISABLE_INITIALIZE_FORK_SAFETY: YES
ADDRESS: "0x347be35996a21f6bf0623e75dbce52baba918ad5ae8d83b6f416045ab22961a"
PK: "0xbdd640fb06671ad11c80317fa3b1799d"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

? who's pk is this?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The address above it

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

haha yeah I figured but I just wanted to make sure this was indeed a random pk and not one of yours :)


on:
push:
branches:
Expand All @@ -14,28 +20,28 @@ jobs:
name: Forge tests
runs-on: ubuntu-latest
steps:
- name: Step 1 - Check out main branch
- name: Check out main branch
uses: actions/checkout@v3
with:
submodules: recursive

- name: Step 2 - Install Foundry
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Step 3 - Check formatting
- name: Check formatting
working-directory: ./ethereum
run: forge fmt --check

- name: Step 4 - Build Solidity contracts
- name: Build Solidity contracts
working-directory: ./ethereum
run: |
forge --version
forge build --sizes
id: build

- name: Step 5 - Run Forge tests
- name: Run Forge tests
working-directory: ./ethereum
run: |
forge test -vvv
Expand All @@ -46,24 +52,67 @@ jobs:
fail-fast: true

name: Cairo tests
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
steps:
- name: Step 1 - Check out main branch
- name: Check out main branch
uses: actions/checkout@v3

- name: Step 2 - Install Scarb
- name: Set up node
uses: actions/setup-node@v3
with:
node-version: 18.16.0

- name: Get yarn cache directory path
id: yarn-cache-dir-path
run: echo "::set-output name=dir::$(yarn cache dir)"

- name: Cache Yarn dependencies
uses: actions/cache@v3
with:
path: ${{ steps.yarn-cache-dir-path.outputs.dir }}
key: yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
yarn-

- name: Install Yarn dependencies
run: yarn install

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: 3.9

- name: Install Python dependencies
run: |
sudo apt install -y libgmp3-dev
python -m pip install --upgrade pip
pip install -r requirements.txt

- name: Install Cairo
run: curl -L https://github.com/starkware-libs/cairo/releases/download/v2.2.0/release-x86_64-unknown-linux-musl.tar.gz > cairo.tar.gz

- name: Extract Cairo
run: tar -xvf cairo.tar.gz

- name: Install Scarb
uses: software-mansion/setup-scarb@v1
with:
scarb-version: 0.7.0

- name: Step 3 - Check formatting
- name: Check Cairo formatting
working-directory: ./starknet
run: scarb fmt --check

- name: Step 4 - Build Cairo contracts
- name: Build Cairo contracts
working-directory: ./starknet
run: scarb build --verbose

- name: Step 4 - Running Cairo tests
- name: Run Cairo tests
working-directory: ./starknet
run: scarb test --verbose
run: scarb test --verbose

- name: Compile Cairo contracts for Hardhat tests
run: yarn hardhat starknet-build

- name: run Hardhat tests
run: yarn test:l1-execution
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,6 @@
url = https://github.com/safe-global/safe-contracts
[submodule "lib/safe-contracts"]
branch = v1.4.0
[submodule "ethereum/lib/openzeppelin-contracts"]
path = ethereum/lib/openzeppelin-contracts
url = https://github.com/OpenZeppelin/openzeppelin-contracts
160 changes: 160 additions & 0 deletions audited_cairo_libfuncs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
{
"allowed_libfuncs": [
"alloc_local",
"array_append",
"array_get",
"array_len",
"array_new",
"array_pop_front",
"array_pop_front_consume",
"array_slice",
"array_snapshot_pop_back",
"array_snapshot_pop_front",
"bitwise",
"bool_and_impl",
"bool_not_impl",
"bool_or_impl",
"bool_to_felt252",
"bool_xor_impl",
"branch_align",
"call_contract_syscall",
"class_hash_const",
"class_hash_to_felt252",
"class_hash_try_from_felt252",
"contract_address_const",
"contract_address_to_felt252",
"contract_address_try_from_felt252",
"deploy_syscall",
"disable_ap_tracking",
"downcast",
"drop",
"dup",
"ec_neg",
"ec_point_from_x_nz",
"ec_point_is_zero",
"ec_point_try_new_nz",
"ec_point_unwrap",
"ec_point_zero",
"ec_state_add",
"ec_state_add_mul",
"ec_state_init",
"ec_state_try_finalize_nz",
"emit_event_syscall",
"enable_ap_tracking",
"enum_init",
"enum_match",
"enum_snapshot_match",
"felt252_add",
"felt252_const",
"felt252_dict_entry_finalize",
"felt252_dict_entry_get",
"felt252_dict_new",
"felt252_dict_squash",
"felt252_div",
"felt252_is_zero",
"felt252_mul",
"felt252_sub",
"finalize_locals",
"function_call",
"get_block_hash_syscall",
"get_builtin_costs",
"get_execution_info_syscall",
"hades_permutation",
"into_box",
"jump",
"keccak_syscall",
"library_call_syscall",
"match_nullable",
"null",
"nullable_from_box",
"pedersen",
"rename",
"replace_class_syscall",
"revoke_ap_tracking",
"secp256k1_add_syscall",
"secp256k1_get_xy_syscall",
"secp256k1_get_point_from_x_syscall",
"secp256k1_mul_syscall",
"secp256k1_new_syscall",
"send_message_to_l1_syscall",
"snapshot_take",
"storage_address_from_base",
"storage_address_from_base_and_offset",
"storage_address_to_felt252",
"storage_address_try_from_felt252",
"storage_base_address_const",
"storage_base_address_from_felt252",
"storage_read_syscall",
"storage_write_syscall",
"store_local",
"store_temp",
"struct_construct",
"struct_deconstruct",
"struct_snapshot_deconstruct",
"u256_safe_divmod",
"u256_sqrt",
"u256_is_zero",
"u128_const",
"u128_eq",
"u128_is_zero",
"u128_overflowing_add",
"u128_overflowing_sub",
"u128_safe_divmod",
"u128_sqrt",
"u128_byte_reverse",
"u128_to_felt252",
"u128_guarantee_mul",
"u128_mul_guarantee_verify",
"u128s_from_felt252",
"u16_bitwise",
"u16_const",
"u16_eq",
"u16_is_zero",
"u16_overflowing_add",
"u16_overflowing_sub",
"u16_safe_divmod",
"u16_sqrt",
"u16_to_felt252",
"u16_try_from_felt252",
"u16_wide_mul",
"u32_bitwise",
"u32_const",
"u32_eq",
"u32_is_zero",
"u32_overflowing_add",
"u32_overflowing_sub",
"u32_safe_divmod",
"u32_sqrt",
"u32_to_felt252",
"u32_try_from_felt252",
"u32_wide_mul",
"u512_safe_divmod_by_u256",
"u64_bitwise",
"u64_const",
"u64_eq",
"u64_is_zero",
"u64_overflowing_add",
"u64_overflowing_sub",
"u64_safe_divmod",
"u64_sqrt",
"u64_to_felt252",
"u64_try_from_felt252",
"u64_wide_mul",
"u8_bitwise",
"u8_const",
"u8_eq",
"u8_is_zero",
"u8_overflowing_add",
"u8_overflowing_sub",
"u8_safe_divmod",
"u8_sqrt",
"u8_to_felt252",
"u8_try_from_felt252",
"u8_wide_mul",
"unbox",
"unwrap_non_zero",
"upcast",
"withdraw_gas",
"withdraw_gas_all"
]
}
1 change: 1 addition & 0 deletions ethereum/lib/openzeppelin-contracts
Submodule openzeppelin-contracts added at fd81a9
5 changes: 4 additions & 1 deletion ethereum/remappings.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
@gnosis.pm/safe-contracts=lib/safe-contracts
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts
@gnosis.pm/zodiac/=lib/zodiac/
@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts
@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts
@safe-global/safe-contracts/=lib/safe-contracts/
7 changes: 7 additions & 0 deletions ethereum/src/deps.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

import "@safe-global/safe-contracts/contracts/SafeL2.sol";
import "@safe-global/safe-contracts/contracts/proxies/SafeProxyFactory.sol";
import "@gnosis.pm/zodiac/contracts/factory/ModuleProxyFactory.sol";
Loading
Loading