Module moody.m.multicall.execute

Expand source code
from web3.contract import Contract
from typing import Tuple, List, Union
from ..bases import ContractBase
from ..multicall import Multicall
from ...libeb import MiliDoS
from eth_utils import to_checksum_address


class MultiCallerV1Contract:
    """
    Need some tests, help is needed
    """
    def __init__(self, moon: MiliDoS, address: str):
        self._moon = moon
        self._address = address
        self._data = []
        self._callersetup()

    def _callersetup(self):
        self.caller: Multicall = Multicall(self._moon, self._address).CallAutoConf(self._moon).CallDebug(True)

    def Config(self) -> Multicall:
        """
        You may want to do more with the original instance
        :return: instance of the call
        """
        return self.caller

    def getInfo(self, address: str, abi: str) -> Contract:
        return self._moon.w3.eth.contract(address=address, abi=abi)

    def addCallClassic(self, contract: str, abi: str, method: str, params: list) -> "MultiCallerV1Contract":
        hex = self.getInfo(contract, abi).encodeABI(fn_name=method, args=params)
        self._data.append(hex)
        return self

    def addCallEasy(self, contract: ContractBase, method: str, params: list) -> "MultiCallerV1Contract":
        hex = self.getInfo(
            to_checksum_address(contract.contract_address),
            contract.fromAbi
        ).encodeABI(fn_name=method, args=params)
        self._data.append(hex)
        return self

    def execute(self) -> None:
        self.caller.aggregate(self._data)

    def executeSimple(self) -> Tuple[int, List[Union[bytes, str]]]:
        """
        gives the returns of the block number
        :return:  (blocknumber, hash, results)
        """
        (blocknum, data) = self.caller.aggregate(self._data)
        return (blocknum, data)

Classes

class MultiCallerV1Contract (moon: MiliDoS, address: str)

Need some tests, help is needed

Expand source code
class MultiCallerV1Contract:
    """
    Need some tests, help is needed
    """
    def __init__(self, moon: MiliDoS, address: str):
        self._moon = moon
        self._address = address
        self._data = []
        self._callersetup()

    def _callersetup(self):
        self.caller: Multicall = Multicall(self._moon, self._address).CallAutoConf(self._moon).CallDebug(True)

    def Config(self) -> Multicall:
        """
        You may want to do more with the original instance
        :return: instance of the call
        """
        return self.caller

    def getInfo(self, address: str, abi: str) -> Contract:
        return self._moon.w3.eth.contract(address=address, abi=abi)

    def addCallClassic(self, contract: str, abi: str, method: str, params: list) -> "MultiCallerV1Contract":
        hex = self.getInfo(contract, abi).encodeABI(fn_name=method, args=params)
        self._data.append(hex)
        return self

    def addCallEasy(self, contract: ContractBase, method: str, params: list) -> "MultiCallerV1Contract":
        hex = self.getInfo(
            to_checksum_address(contract.contract_address),
            contract.fromAbi
        ).encodeABI(fn_name=method, args=params)
        self._data.append(hex)
        return self

    def execute(self) -> None:
        self.caller.aggregate(self._data)

    def executeSimple(self) -> Tuple[int, List[Union[bytes, str]]]:
        """
        gives the returns of the block number
        :return:  (blocknumber, hash, results)
        """
        (blocknum, data) = self.caller.aggregate(self._data)
        return (blocknum, data)

Subclasses

Methods

def Config(self) ‑> Multicall

You may want to do more with the original instance :return: instance of the call

Expand source code
def Config(self) -> Multicall:
    """
    You may want to do more with the original instance
    :return: instance of the call
    """
    return self.caller
def addCallClassic(self, contract: str, abi: str, method: str, params: list) ‑> MultiCallerV1Contract
Expand source code
def addCallClassic(self, contract: str, abi: str, method: str, params: list) -> "MultiCallerV1Contract":
    hex = self.getInfo(contract, abi).encodeABI(fn_name=method, args=params)
    self._data.append(hex)
    return self
def addCallEasy(self, contract: ContractBase, method: str, params: list) ‑> MultiCallerV1Contract
Expand source code
def addCallEasy(self, contract: ContractBase, method: str, params: list) -> "MultiCallerV1Contract":
    hex = self.getInfo(
        to_checksum_address(contract.contract_address),
        contract.fromAbi
    ).encodeABI(fn_name=method, args=params)
    self._data.append(hex)
    return self
def execute(self) ‑> NoneType
Expand source code
def execute(self) -> None:
    self.caller.aggregate(self._data)
def executeSimple(self) ‑> Tuple[int, List[Union[bytes, str]]]

gives the returns of the block number :return: (blocknumber, hash, results)

Expand source code
def executeSimple(self) -> Tuple[int, List[Union[bytes, str]]]:
    """
    gives the returns of the block number
    :return:  (blocknumber, hash, results)
    """
    (blocknum, data) = self.caller.aggregate(self._data)
    return (blocknum, data)
def getInfo(self, address: str, abi: str) ‑> web3.contract.Contract
Expand source code
def getInfo(self, address: str, abi: str) -> Contract:
    return self._moon.w3.eth.contract(address=address, abi=abi)