Skip to content


This module contains the behaviours for the 'registration_abci' skill.


1 minute

RegistrationBaseBehaviour Objects

class RegistrationBaseBehaviour(BaseBehaviour, ABC)

Agent registration to the FSM App.


def async_act() -> Generator

Do the action.

Steps: - Build a registration transaction. - Send the transaction and wait for it to be mined. - Wait until ABCI application transitions to the next round. - Go to the next behaviour (set done event).

RegistrationStartupBehaviour Objects

class RegistrationStartupBehaviour(RegistrationBaseBehaviour)

Agent registration to the FSM App.


def initial_tm_configs() -> Dict[str, Dict[str, Any]]

A mapping of the other agents' addresses to their initial Tendermint configuration.


def initial_tm_configs(configs: Dict[str, Dict[str, Any]]) -> None

A mapping of the other agents' addresses to their initial Tendermint configuration.

LogMessages Objects

class LogMessages(Enum)

Log messages used in RegistrationStartupBehaviour


def __str__() -> str

For ease of use in formatted string literals


def tendermint_parameter_url() -> str

Tendermint URL for obtaining and updating parameters


def is_correct_contract(
        service_registry_address: str) -> Generator[None, None, bool]

Contract deployment verification.


def get_agent_instances(
        service_registry_address: str,
        on_chain_service_id: int) -> Generator[None, None, Dict[str, Any]]

Get service info available on-chain


def get_addresses() -> Generator

Get addresses of agents registered for the service


def get_tendermint_configuration() -> Generator[None, None, bool]

Make HTTP GET request to obtain agent's local Tendermint node parameters


def request_tendermint_info() -> Generator[None, None, bool]

Request Tendermint info from other agents


def format_genesis_data(
        collected_agent_info: Dict[str, Any]) -> Dict[str, Any]

Format collected agent info for genesis update


def request_update() -> Generator[None, None, bool]

Make HTTP POST request to update agent's local Tendermint node


def wait_for_block(timeout: float) -> Generator[None, None, bool]

Wait for a block to be received in the specified timeout.


def async_act() -> Generator

Do the action.

Steps: 1. Collect personal Tendermint configuration 2. Make Service Registry contract call to retrieve addresses of the other agents registered on-chain for the service. 3. Request Tendermint configuration from registered agents. This is done over the Agent Communication Network using the p2p_libp2p_client connection. 4. Update Tendermint configuration via genesis.json with the information of the other validators (agents). 5. Restart Tendermint to establish the validator network.

RegistrationBehaviour Objects

class RegistrationBehaviour(RegistrationBaseBehaviour)

Agent registration to the FSM App.

AgentRegistrationRoundBehaviour Objects

class AgentRegistrationRoundBehaviour(AbstractRoundBehaviour)

This behaviour manages the consensus stages for the registration.