Skip to content

Commit

Permalink
Add context-contract project
Browse files Browse the repository at this point in the history
  • Loading branch information
OleksanderSalamatov committed Apr 11, 2024
1 parent e200ce4 commit cbf068f
Show file tree
Hide file tree
Showing 2 changed files with 66 additions and 1 deletion.
4 changes: 3 additions & 1 deletion python/src/skale_contracts/projects/__init__.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
"""Supported projects"""
from .context_contract import ContextProject as Context
from .ima import \
MainnetImaProject as MainnetIma, \
SchainImaProject as SchainIma
from .skale_manager import SkaleManagerProject as SkaleManager
from .skale_allocator import SkaleAllocatorProject as SkaleAllocator

__all__ = ['MainnetIma', 'SchainIma', 'SkaleAllocator', 'SkaleManager']
__all__ = ['Context', 'MainnetIma', 'SchainIma', 'SkaleAllocator',
'SkaleManager']
63 changes: 63 additions & 0 deletions python/src/skale_contracts/projects/context_contract.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
"""Module connects context-contract project to the SKALE contracts library"""
from __future__ import annotations
from typing import TYPE_CHECKING
from eth_utils.address import to_canonical_address

from skale_contracts.constants import PREDEPLOYED_ALIAS
from skale_contracts.instance import Instance
from skale_contracts.project import Project

if TYPE_CHECKING:
from eth_typing import Address, ChecksumAddress


class ContextInstance(Instance):
"""Represents instance of context-contract"""

INITIAL_VERSION = '1.0.0-develop.5'

PREDEPLOYED: dict[str, Address] = {
name: to_canonical_address(address) for name, address in {
'ContextContract':
'0xD2001000000000000000000000000000000000D2'
}.items()}

def get_contract_address(
self,
name: str,
*args: str | Address | ChecksumAddress
) -> Address:
if name in self.PREDEPLOYED:
return self.PREDEPLOYED[name]
raise RuntimeError(f"Can't get address of {name} contract")

def _get_version(self) -> str:
try:
return super()._get_version()
except ValueError:
return self.INITIAL_VERSION


class ContextProject(Project):
"""Represents context-contract project"""

@staticmethod
def name() -> str:
return 'ContextContract'

@property
def github_repo(self) -> str:
return 'https://github.com/skalenetwork/context-contract/'

def create_instance(self, address: Address) -> Instance:
return ContextInstance(self, address)

def get_instance(self, alias_or_address: str) -> Instance:
if alias_or_address == PREDEPLOYED_ALIAS:
return self.create_instance(
ContextInstance.PREDEPLOYED['ContextContract']
)
return super().get_instance(alias_or_address)

def get_abi_filename(self, version: str) -> str:
return f'context-{version}-abi.json'

0 comments on commit cbf068f

Please sign in to comment.