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

IMA contracts #564

Closed
wants to merge 79 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
f5c750c
Update README.md
EvgeniyZZ May 7, 2024
294847c
Update README.md
EvgeniyZZ May 13, 2024
f4bdf1a
initial commit
EvgeniyZZ May 13, 2024
a193ef6
upd
EvgeniyZZ May 13, 2024
8791df5
upd
EvgeniyZZ May 13, 2024
48abc0d
Create README.md
EvgeniyZZ May 13, 2024
ac1c3b6
update gitignore
EvgeniyZZ May 13, 2024
27aaa17
add
EvgeniyZZ May 13, 2024
249fb73
Update .gitignore
EvgeniyZZ May 13, 2024
4c6fc99
update test
EvgeniyZZ May 13, 2024
16db80b
add community locker
EvgeniyZZ May 13, 2024
703993a
add community pool
EvgeniyZZ May 16, 2024
106e16c
speling fix
EvgeniyZZ May 19, 2024
cfbbc4a
add token manager erc721
EvgeniyZZ May 28, 2024
27b790f
add token manager erc20
EvgeniyZZ May 30, 2024
61bbc9d
update token managers
EvgeniyZZ Jun 2, 2024
6619ee1
fix fn naming
EvgeniyZZ Jun 3, 2024
dc7ed71
refactor
EvgeniyZZ Jun 6, 2024
b900012
upd
EvgeniyZZ Jun 6, 2024
04888cc
add contracts info
EvgeniyZZ Jun 6, 2024
91a448d
update contracts structure
EvgeniyZZ Jun 7, 2024
8c1e8d8
Fix import
EvgeniyZZ Jun 8, 2024
71b5b04
addERC1155
EvgeniyZZ Jun 10, 2024
481d597
add community pool additional requests
EvgeniyZZ Jun 11, 2024
d9cae77
upd
EvgeniyZZ Jun 12, 2024
18863ae
test
EvgeniyZZ Jun 13, 2024
07e9931
fix contracts info
EvgeniyZZ Jun 13, 2024
7c6f0dc
update erc721
EvgeniyZZ Jun 14, 2024
cbc2dbb
add erc721withmetadate
EvgeniyZZ Jun 17, 2024
9645303
update imports
EvgeniyZZ Jun 17, 2024
23de61c
update imoprt
EvgeniyZZ Jun 17, 2024
2acb440
update erc1155
EvgeniyZZ Jun 17, 2024
0d44a62
update erc1155 token
EvgeniyZZ Jun 17, 2024
ee0c22e
update erc721wmd
EvgeniyZZ Jun 18, 2024
d6d2ed5
add import
EvgeniyZZ Jun 18, 2024
3042933
update erc721wmd
EvgeniyZZ Jun 18, 2024
db4996c
add call to map
EvgeniyZZ Jul 2, 2024
ead1097
restructure, added tm_linker on schian
EvgeniyZZ Jul 3, 2024
e9f4989
update contracts info, dependencies, spelling fixes
EvgeniyZZ Jul 3, 2024
9c6f4bd
upd
EvgeniyZZ Jul 3, 2024
1d97846
fix call
EvgeniyZZ Jul 11, 2024
1eda476
upd
EvgeniyZZ Jul 11, 2024
f197a26
update locker
EvgeniyZZ Jul 14, 2024
d849c89
update ERC721
EvgeniyZZ Aug 5, 2024
812b605
add exit function for erc721
EvgeniyZZ Aug 5, 2024
e620085
Update token_manager_linker.py
EvgeniyZZ Aug 11, 2024
29bc554
Update token_manager_erc721_wmt.py
EvgeniyZZ Aug 14, 2024
94b1411
Update token_manager_erc721.py
EvgeniyZZ Aug 14, 2024
2817b04
Update token_manager_erc1155.py
EvgeniyZZ Aug 16, 2024
c562f19
Update deposit_box_erc721.py
EvgeniyZZ Sep 3, 2024
4c0f03e
add direct deposit for erc1155
EvgeniyZZ Sep 4, 2024
bbc5fc1
tiny fix
EvgeniyZZ Sep 4, 2024
49b17e4
spelling fix
EvgeniyZZ Sep 6, 2024
bdb2806
remove unsused imports
EvgeniyZZ Sep 23, 2024
f3a95fe
pep8
EvgeniyZZ Sep 23, 2024
0664ea1
remove unused imports
EvgeniyZZ Sep 23, 2024
e7aea33
fix E231
EvgeniyZZ Sep 23, 2024
92f577a
update skale-contracts
EvgeniyZZ Sep 23, 2024
f11f2f7
add paymaster
EvgeniyZZ Sep 23, 2024
4901a78
fix naming
EvgeniyZZ Sep 23, 2024
18989a5
update skale-contracts version
EvgeniyZZ Sep 24, 2024
f5a168f
add paymaster
EvgeniyZZ Sep 30, 2024
cb10c46
add paymaster
EvgeniyZZ Oct 3, 2024
274264e
update workflow test
EvgeniyZZ Oct 7, 2024
87df965
fix flake8 test paymaster
EvgeniyZZ Oct 7, 2024
dcfcbb1
add new functions, fix bugs
yatsunastya Oct 7, 2024
a2184a1
added skipTime and effectiveTimestamp
yatsunastya Oct 7, 2024
785e0c2
Pull changes from develop
yatsunastya Oct 7, 2024
a69b3c3
fixed flake8 issues
yatsunastya Oct 7, 2024
5ed0eca
Merge pull request #2 from EvgeniyZZ/paymaster-fix
yatsunastya Oct 7, 2024
01b7080
update version
EvgeniyZZ Oct 9, 2024
5a886c4
Merge branch 'develop' of github.com:EvgeniyZZ/skale.py into develop
EvgeniyZZ Oct 9, 2024
ae16b20
rollback global version
EvgeniyZZ Oct 9, 2024
031210c
add revoke role
EvgeniyZZ Oct 14, 2024
874a395
fix flake
EvgeniyZZ Oct 14, 2024
9507ffa
added debug contracts option
yatsunastya Oct 15, 2024
c6aa9eb
Merge pull request #3 from EvgeniyZZ/paymaster-fix
yatsunastya Oct 16, 2024
9b2b35d
added debts calls
yatsunastya Oct 16, 2024
473058a
Merge pull request #4 from EvgeniyZZ/paymaster-fix
yatsunastya Oct 16, 2024
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
160 changes: 80 additions & 80 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,83 +28,83 @@ jobs:
- name: Lint with flake8
run: flake8 .

- name: Launch hardhat node
working-directory: hardhat-node
run: |
docker-compose up -d && sleep 20

- name: Deploy manager
run: |
bash ./helper-scripts/deploy_test_manager.sh
docker rmi -f skalenetwork/skale-manager:${{ env.MANAGER_TAG }}

- name: Show stats before tests
if: always()
run: |
sudo lsblk -f
sudo free -h

- name: Run tests
run: |
bash ./scripts/run_manager_tests.sh
- name: Codecov
run: |
codecov -t $CODECOV_TOKEN

- name: Show stats after tests
if: always()
run: |
sudo lsblk -f
sudo free -h

test_allocator:
runs-on: ubuntu-20.04
strategy:
matrix:
python-version: [3.11]
env:
ENDPOINT: ${{ secrets.ENDPOINT }}
ETH_PRIVATE_KEY: ${{ secrets.ETH_PRIVATE_KEY }}
MANAGER_TAG: "1.9.0-develop.20"
ALLOCATOR_TAG: "2.2.2-develop.0"
steps:
- uses: actions/checkout@v4
with:
submodules: true

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
cache: 'pip'
python-version: ${{ matrix.python-version }}

- name: Install host dependencies
run: bash ./scripts/install_host_dependencies.sh

- name: Install python dependencies
run: bash ./scripts/install_python_dependencies.sh

- name: Launch hardhat node
working-directory: hardhat-node
run: |
docker-compose up -d && sleep 20

- name: Deploy manager contracts
run: |
bash ./helper-scripts/deploy_test_manager.sh
docker rmi -f skalenetwork/skale-manager:${{ env.MANAGER_TAG }}

- name: Deploy allocator contracts
run: |
bash ./helper-scripts/deploy_test_allocator.sh
docker rmi -f skalenetwork/skale-allocator:${{ env.ALLOCATOR_TAG }}

- name: Run tests
run: |
bash ./scripts/run_allocator_tests.sh

- name: Show stats after tests
if: always()
run: |
sudo lsblk -f
sudo free -h
# - name: Launch hardhat node
# working-directory: hardhat-node
# run: |
# docker-compose up -d && sleep 20

# - name: Deploy manager
# run: |
# bash ./helper-scripts/deploy_test_manager.sh
# docker rmi -f skalenetwork/skale-manager:${{ env.MANAGER_TAG }}

# - name: Show stats before tests
# if: always()
# run: |
# sudo lsblk -f
# sudo free -h

# - name: Run tests
# run: |
# bash ./scripts/run_manager_tests.sh
# - name: Codecov
# run: |
# codecov -t $CODECOV_TOKEN

# - name: Show stats after tests
# if: always()
# run: |
# sudo lsblk -f
# sudo free -h

# test_allocator:
# runs-on: ubuntu-20.04
# strategy:
# matrix:
# python-version: [3.11]
# env:
# ENDPOINT: ${{ secrets.ENDPOINT }}
# ETH_PRIVATE_KEY: ${{ secrets.ETH_PRIVATE_KEY }}
# MANAGER_TAG: "1.9.0-develop.20"
# ALLOCATOR_TAG: "2.2.2-develop.0"
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: true

# - name: Set up Python ${{ matrix.python-version }}
# uses: actions/setup-python@v4
# with:
# cache: 'pip'
# python-version: ${{ matrix.python-version }}

# - name: Install host dependencies
# run: bash ./scripts/install_host_dependencies.sh

# - name: Install python dependencies
# run: bash ./scripts/install_python_dependencies.sh

# - name: Launch hardhat node
# working-directory: hardhat-node
# run: |
# docker-compose up -d && sleep 20

# - name: Deploy manager contracts
# run: |
# bash ./helper-scripts/deploy_test_manager.sh
# docker rmi -f skalenetwork/skale-manager:${{ env.MANAGER_TAG }}

# - name: Deploy allocator contracts
# run: |
# bash ./helper-scripts/deploy_test_allocator.sh
# docker rmi -f skalenetwork/skale-allocator:${{ env.ALLOCATOR_TAG }}

# - name: Run tests
# run: |
# bash ./scripts/run_allocator_tests.sh

# - name: Show stats after tests
# if: always()
# run: |
# sudo lsblk -f
# sudo free -h
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ coverage.xml
*.cover
.hypothesis/
.pytest_cache/
tests/ima/*

# Translations
*.mo
Expand Down Expand Up @@ -122,4 +123,4 @@ allocator_contracts_data/

.vscode/

fake_multisig_data.json
fake_multisig_data.json
2 changes: 1 addition & 1 deletion pytest.ini
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[pytest]
log_cli = 0
log_cli = 1
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
log_cli_date_format=%Y-%m-%d %H:%M:%S
Expand Down
2 changes: 1 addition & 1 deletion scripts/calculate_version.sh
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ if [ -z $VERSION ]; then
fi


if [[ $BRANCH == 'master' ]]; then
if [[ $BRANCH == 'stable' ]]; then
echo $VERSION
exit 0
elif [[ $BRANCH == 'develop' ]]; then
Expand Down
11 changes: 11 additions & 0 deletions scripts/run_ima_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash

set -e

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
PROJECT_DIR=$(dirname $DIR)
export ENDPOINT=${ENDPOINT:-http://localhost:8545}
export ENV=test


py.test $PROJECT_DIR/tests/ima $@
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@

setup(
name='skale.py',
version='7',
version='7.0',
description='SKALE client tools',
long_description_markdown_filename='README.md',
author='SKALE Labs',
Expand All @@ -45,7 +45,7 @@
"pyyaml==6.0",
"redis==5.0.3",
"sgx.py==0.9dev2",
"skale-contracts==1.0.1a5",
"skale-contracts==1.0.2a6",
"typing-extensions==4.9.0",
"web3==6.13.0"
],
Expand Down
10 changes: 9 additions & 1 deletion skale/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,12 @@
from skale.skale_manager import SkaleManager as Skale # todo: deprecated naming, will be removed in skale.py v5

from skale.skale_allocator import SkaleAllocator
from skale.skale_ima import SkaleIma
# from skale.contracts.ima_mainnet import Linker
# from skale.contracts.ima_schain.token_manager_erc20 import TokenManagerERC20
# from skale.contracts.ima import DepositBoxEth
# from skale.contracts.ima import DepositBoxERC20
# from skale.contracts.ima.schain.token_manager_erc20 import TokenManagerERC20
# from skale.contracts.ima.schain.token_manager_erc721 import TokenManagerERC721
# from skale.contracts.ima.schain.token_manager_erc721_wmt import TokenManagerERC721WithMetadata
# from skale.contracts.ima.schain.token_manager_erc1155 import TokenManagerERC1155
# from skale.contracts.ima.schain.token_manager_eth import TokenManagerETH
10 changes: 0 additions & 10 deletions skale/contracts/ima/__init__.py
Original file line number Diff line number Diff line change
@@ -1,10 +0,0 @@
# flake8: noqa

from skale.contracts.manager.contract_manager import ContractManager
from skale.contracts.base_contract import BaseContract, transaction_method

from skale.contracts.ima.linker import Linker

__all__ = [
'Linker'
]
26 changes: 26 additions & 0 deletions skale/contracts/ima/mainnet/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# flake8: noqa


from skale.contracts.base_contract import BaseContract, transaction_method

from skale.contracts.ima.mainnet.message_proxy_for_mainnet import MessageProxyForMainnet
from skale.contracts.ima.mainnet.linker import Linker
from skale.contracts.ima.mainnet.community_pool import CommunityPool
from skale.contracts.ima.mainnet.deposit_box_eth import DepositBoxEth
from skale.contracts.ima.mainnet.deposit_box_erc20 import DepositBoxERC20
from skale.contracts.ima.mainnet.deposit_box_erc721 import DepositBoxERC721
from skale.contracts.ima.mainnet.deposit_box_erc721_wmt import (
DepositBoxERC721WithMetadata,
)
from skale.contracts.ima.mainnet.deposit_box_erc1155 import DepositBoxERC1155

__all__ = [
"MessageProxyForMainnet",
"Linker",
"CommunityPool",
"DepositBoxEth",
"DepositBoxERC20",
"DepositBoxERC721",
"DepositBoxERC1155",
"DepositBoxERC721WithMetadata",
]
53 changes: 53 additions & 0 deletions skale/contracts/ima/mainnet/community_pool.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
from Crypto.Hash import keccak

from skale.contracts.base_contract import BaseContract, transaction_method
from skale.transactions.result import TxRes


class CommunityPool(BaseContract):
@transaction_method
def recharge_user_wallet(self, schain_name: str, address: int) -> TxRes:
return self.contract.functions.rechargeUserWallet(schain_name, address)

@transaction_method
def withdraw_funds(self, schain_name: str, amount: int) -> TxRes:
return self.contract.functions.withdrawFunds(schain_name, amount)

@transaction_method
def set_min_transaction_gas(self, min_gas_value: int) -> TxRes:
return self.contract.functions.setMinTransactionGas(min_gas_value)

@transaction_method
def set_multiplier(self, new_numerator: int, new_divider: int) -> TxRes:
return self.contract.functions.setMultiplier(new_numerator, new_divider)

def get_balance(self, address: int, schain_name: str) -> int:
return self.contract.functions.getBalance(address, schain_name).call()

def check_user_balance(self, schain_name: bytes, receiver: int) -> bool:
keccak_hash = keccak.new(data=schain_name.encode("utf8"), digest_bits=256)
schain_id = keccak_hash.digest()
return self.contract.functions.checkUserBalance(schain_id, receiver).call()

def get_recommended_recharge_amount(self, schain_hash: bytes, receiver: int) -> int:
keccak_hash = keccak.new(data=schain_hash.encode("utf8"), digest_bits=256)
schain_id = keccak_hash.digest()
return self.contract.functions.getRecommendedRechargeAmount(
schain_id, receiver
).call()

def constant_setter_role(self) -> bool:
return self.contract.functions.CONSTANT_SETTER_ROLE().call()

def admin_role(self) -> bytes:
return self.contract.functions.DEFAULT_ADMIN_ROLE().call()

def has_role(self, role: bytes, address: int) -> bool:
return self.contract.functions.hasRole(role, address).call()

@transaction_method
def grant_role(self, role: bytes, address: str) -> TxRes:
return self.contract.functions.grantRole(role, address)

def get_role_member(self, role: bytes, index: int) -> bytes:
return self.contract.functions.getRoleMember(role, index).call()
39 changes: 39 additions & 0 deletions skale/contracts/ima/mainnet/deposit_box_erc1155.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
from skale.contracts.base_contract import BaseContract, transaction_method
from skale.transactions.result import TxRes


class DepositBoxERC1155(BaseContract):
"""Class deposit"""

@transaction_method
def add_erc1155_token(self, schain_name: str, address: int) -> TxRes:
return self.contract.functions.addERC1155TokenByOwner(schain_name, address)

@transaction_method
def deposit_erc1155(
self, schain_name: str, address: int, token_id: int, amount: int
) -> TxRes:
"""Deposit ERC1155"""
return self.contract.functions.depositERC1155(
schain_name, address, token_id, amount
)

@transaction_method
def deposit_direct_erc1155(
self, schain_name: str, address: int, token_id: int, amount: int, receiver: int
) -> TxRes:
"""Direct deposit ERC1155"""
return self.contract.functions.depositERC1155Direct(
schain_name, address, token_id, amount, receiver
)

@transaction_method
def deposit_erc1155_batch(
self, schain_name: str, address: int, ids: list, amount: list
) -> TxRes:
return self.contract.functions.depositERC1155Batch(
schain_name, address, ids, amount
)

def get_schain_to_erc1155(self, schain_name: str, token_address: int) -> TxRes:
return self.contract.functions.getSchainToERC1155(schain_name, token_address)
Loading
Loading