Relayer Interface Architecture
class BaseChainInterface(abc.ABC):
"""
Base class for all chain interfaces
Governs transaction retrieval and creation
"""
@abc.abstractmethod
def sign_and_send_transaction(self, tx):
"""
Given a raw transaction, signs it and sends it to the chain
Args:
tx: the raw transaction to be sent to the chain
"""
pass
@abc.abstractmethod
def get_transactions(self, address, height=None):
"""
Retrieves all transactions from the chain that fit interface-dependent filters
"""
pass
@abc.abstractmethod
def get_last_block(self):
"""
Retrieves the current block height of the chain
"""
pass
class BaseContractInterface(abc.ABC):
"""
Base class for all contract interfaces
Governs contract interaction, execution, and event parsing.
"""
address = None
@abc.abstractmethod
def call_function(self, function_name, *args):
"""
Given a function in a contract, and the arguments to that function,
calls it on chain
Args:
function_name: the name of the contract function to call
*args: the (potentially many) arguments to pass to that function
"""
pass
@abc.abstractmethod
def parse_event_from_txn(self, event_name, txn) -> List[Task]:
"""
Given a transaction, outputs all the events of a particular name
that were emitted in that transaction
Args:
event_name: the event to look for
txn: the transaction to parse
Returns: a list of Tasks corresponding to the events
"""
passLast updated