Code Monkey home page Code Monkey logo

agent-academy-1's Introduction

agent-academy-1

El Collectooorr is an autonomous service that watches for new Art Blocks drops and intelligently collects new works for you. This agent service has been created using the Autonolas stack as part of Valory's Agent Academy 1.

This repository holds the code for the FSM apps used in the El Collectooorr.

Cloning

Requirements & Setup

  • Refer to requirements for open-autonomy in the requirements section of the README.

  • Pull pre-built images:

    docker pull node:16.7.0
    docker pull trufflesuite/ganache:beta
    docker pull valory/elcollectooorr-network:latest
    docker pull valory/open-autonomy-tendermint:latest
    docker pull valory/open-autonomy:latest
    docker pull valory/open-autonomy-user:latest
  • Create a virtual environment with all development dependencies:

    make new_env
  • Enter virtual environment:

    pipenv shell
  • Fetch packages:

    autonomy packages sync --update-packages
  • Optionally: run all checks

    tox

Running El Collectooorr as a service

These steps only work for operators registered on-chain!

  1. Ensure the service and its dependencies are pushed:

    autonomy init --reset --remote --ipfs
    autonomy push-all
  2. Prepare a JSON file keys.json containing the addresses and keys of the agents. Below you have some sample keys for testing. Use these keys for testing purposes only. Never use these keys in a production environment or for personal use.. Also, make sure that the addresses have some funds or transactions will fail.

    [
    {
          "address": "0x15d34AAf54267DB7D7c367839AAf71A00a2C6A65",
          "private_key": "0x47e179ec197488593b187f80a00eb0da91f1b9d0b13f8733639f19c30a34926a"
    },
    {
          "address": "0x9965507D1a55bcC2695C58ba16FB37d819B0A4dc",
          "private_key": "0x8b3a350cf5c34c9194ca85829a2df0ec3153be0318b5e2d3348e872092edffba"
    },
    {
          "address": "0x976EA74026E726554dB657fA54763abd0C3a0aa9",
          "private_key": "0x92db14e403b83dfe3df233f83dfa3a0d7096f21ca9b0d6d6b8d88b2b4ec1564e"
    },
    {
          "address": "0x14dC79964da2C08b23698B3D3cc7Ca32193d9955",
          "private_key": "0x4bbbf85ce3377467afe5d46f804f221813b2bb87f24d81f60f1fcdbf7cbf4356"
    }
    ]
  3. Run the service:

    • Option 1: Step-by-step

    Ensure you have set the following environment variables:

    export SAFE_CONTRACT_ADDRESS="0x123a3d66cf688b676f9b7a6bcc3991f62fec7f0a"
    export WHITELISTED_INVESTOR_ADDRESSES='["YOUR_WHITELIST"]'
    export SERVICE_ELCOLLECTOOORR_RPC_0="YOUR_RPC_URL"
    export SERVICE_ELCOLLECTOOORR_RPC_1="YOUR_RPC_URL"
    export SERVICE_ELCOLLECTOOORR_RPC_2="YOUR_RPC_URL"
    export SERVICE_ELCOLLECTOOORR_RPC_3="YOUR_RPC_URL"

    where 0x123a3d66cf688b676f9b7a6bcc3991f62fec7f0a should match the correct address from the on-chain service deployment, and YOUR_WHITELIST, YOUR_RPC_URL_0 and YOUR_RPC_URL_1 should be replaced accordingly.

    Then fetch the service:

    autonomy fetch elcollectooorr/elcollectooorr:0.1.0:bafybeielssdlvnocbltwqz2fao7kwjyenblyfe6k7yuenf3bhjlac3negi --service
    cd elcollectooorr

    Then build the service:

    autonomy build-image
    autonomy deploy build keys.json --force --local --password "\${PASSWORD}" --aev

    (On MAC OS manually update permissions with chmod 777 abci_build and it's subfolders!)

    Then run the service:

    cd abci_build
    docker-compose up --force-recreate
    • Option 2: One-step (requires on-chain to reference the correct hash)
    autonomy deploy from-token 1 keys.json

Useful commands:

Check out the Makefile for useful commands, e.g. make formatters, make generators, make code-checks, as well as make common-checks-1. To run all tests use make test. Or simply use tox.

Running a fork of Ethereum

You can run a fork of Ethereum Mainnet via Ganache in the following way:

ganache --fork.network mainnet

agent-academy-1's People

Contributors

0xardi avatar davidminarsch avatar dvilelaf avatar adamantios avatar jmoreira-valory avatar angrybayblade avatar marcofavorito avatar 8ball030 avatar supermosl avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar Zarathustra avatar  avatar  avatar

agent-academy-1's Issues

Don't spend funds from non-whitelisted addresses

We should not take into consideration funds that are coming from non-whitelisted addresses. #80 doesn't pay non-whitelisted addresses fractions, but still allows spending their funds.
To overcome this we must:

  1. Subtract the non-whitelisted funds from the safe-balance. We have account of this in the FundingRoundBehaviour.
  2. Stop subtracting non-whitelisted funds when they are paid back. We should check for SafeModuleTransaction events to the non-whitelisted addresses.

Timeout on safe txs

I get timeouts when sending transactions via the safe contract using the latest version of the gnosis_safe contract package.
I am able to make it work by removing gas from the tx_parameters. I think it has to do with setting gas before calling buildTransaction(). From my understanding this results in eth_estimateGas not being called.

Here's how I am modifying the gnosis_safe package:

def get_raw_safe_transaction(...): 
        sender_address = ledger_api.api.toChecksumAddress(sender_address)
        to_address = ledger_api.api.toChecksumAddress(to_address)
        ledger_api = cast(EthereumApi, ledger_api)
        signatures = cls._get_packed_signatures(owners, signatures_by_owner)
        safe_contract = cls.get_instance(ledger_api, contract_address)

        w3_tx = safe_contract.functions.execTransaction(
            to_address,
            value,
            data,
            operation,
            safe_tx_gas,
            base_gas,
            safe_gas_price,
            gas_token,
            refund_receiver,
            signatures,
        )
        configured_gas = base_gas + safe_tx_gas + 75000
        tx_parameters: Dict[str, Union[str, int]] = {
            "from": sender_address,

            
            "gas": configured_gas, # remove this line


        }
        actual_nonce = ledger_api.api.eth.get_transaction_count(
            ledger_api.api.toChecksumAddress(sender_address)
        )
        if actual_nonce != nonce:
            nonce = actual_nonce
            old_price = None
        if gas_price is not None:
            tx_parameters["gasPrice"] = gas_price
        if max_fee_per_gas is not None:
            tx_parameters["maxFeePerGas"] = max_fee_per_gas  # pragma: nocover
        if max_priority_fee_per_gas is not None:  # pragma: nocover
            tx_parameters["maxPriorityFeePerGas"] = max_priority_fee_per_gas
        if (
            gas_price is None
            and max_fee_per_gas is None
            and max_priority_fee_per_gas is None
        ):
            tx_parameters.update(ledger_api.try_get_gas_pricing(old_price=old_price))
        

        # note, the next line makes an eth_estimateGas call!
        # `eth_estimateGas` not called when `tx_parameters` has a `gas` key

        transaction_dict = w3_tx.buildTransaction(tx_parameters)
        transaction_dict["gas"] = Wei(
            max(transaction_dict["gas"] + 75000, configured_gas)
        )
        transaction_dict["nonce"] = nonce  # pragma: nocover

        return transaction_dict

Why I think that setting gas in tx_parameters is a problem

buildTransaction on web3 tries to fill in default values for the missing fields, gas is one the fields it will try to set if missing.
Chain of methods called: web3/contract.py:buildTransaction() -> web3/contract.py:build_transaction_for_function() -> web3/contract.py:fill_transaction_defaults()
For reference here's the impl of fill_transaction_defaults():

@curry
def fill_transaction_defaults(web3: "Web3", transaction: TxParams) -> TxParams:
    """
    if web3 is None, fill as much as possible while offline
    """
    strategy_based_gas_price = web3.eth.generate_gas_price(transaction)
    is_dynamic_fee_transaction = (
        not strategy_based_gas_price
        and (
            'gasPrice' not in transaction  # default to dynamic fee transaction
            or any_in_dict(DYNAMIC_FEE_TXN_PARAMS, transaction)
        )
    )

    defaults = {}
    for key, default_getter in TRANSACTION_DEFAULTS.items():
        if key not in transaction:
            if (
                is_dynamic_fee_transaction and key == 'gasPrice'
                or not is_dynamic_fee_transaction and key in DYNAMIC_FEE_TXN_PARAMS
            ):
                # do not set default max fees if legacy txn or gas price if dynamic fee txn
                continue

            if callable(default_getter):
                if web3 is None:
                    raise ValueError("You must specify a '%s' value in the transaction" % key)
                default_val = default_getter(web3, transaction)
            else:
                default_val = default_getter

            defaults[key] = default_val
    return merge(defaults, transaction)

gas is a transaction default member. If we set it, according to the above method, the 'gas' lambda function will not be called:

TRANSACTION_DEFAULTS = {
    'value': 0,
    'data': b'',
    'gas': lambda web3, tx: web3.eth.estimate_gas(tx),
    'gasPrice': lambda web3, tx: web3.eth.generate_gas_price(tx) or web3.eth.gas_price,
    'maxFeePerGas': (
        lambda web3, tx:
        web3.eth.max_priority_fee + (2 * web3.eth.get_block('latest')['baseFeePerGas'])
    ),
    'maxPriorityFeePerGas': lambda web3, tx: web3.eth.max_priority_fee,
    'chainId': lambda web3, tx: web3.eth.chain_id,
}

The following I think is proof that this is the case:

Setup:

  • Ganache as a local fork.
  • To web3/eth.py:estimate_gas() a print statement was added:
   def estimate_gas(
       self,
       transaction: TxParams,
       block_identifier: Optional[BlockIdentifier] = None
   ) -> Wei:
       print("estimate gas called!!!!!!")
       return self._estimate_gas(transaction, block_identifier)

Notice estimate gas called!!!!!! in the AEA logs and eth_estimateGas in the ganache logs.

When gas is not set:
Two estitmate_gas calls are made both in the AEA and in ganache. One before the safe is deployed, and one for a safe tx.

AEA logs:

    _     _____     _    
   / \   | ____|   / \   
  / _ \  |  _|    / _ \  
 / ___ \ | |___  / ___ \ 
/_/   \_\|_____|/_/   \_\
                         
v1.7.0

Available packages.

Starting AEA 'elcollectooorr' in 'async' mode...
[2022-05-12 16:03:08,242] [INFO] [elcollectooorr] Entered in the 'registration_startup' round for period 0
[2022-05-12 16:03:08,242] [INFO] [elcollectooorr] Start processing messages...
[2022-05-12 16:03:08,243] [INFO] [elcollectooorr] Entered in the 'registration_startup' behaviour state
[2022-05-12 16:03:08,243] [INFO] [elcollectooorr] Checking sync...
[2022-05-12 16:03:08,243] [INFO] [elcollectooorr] Checking status
[2022-05-12 16:03:11,248] [INFO] [elcollectooorr] Checking status
[2022-05-12 16:03:14,259] [INFO] [elcollectooorr] Checking status
[2022-05-12 16:03:17,263] [INFO] [elcollectooorr] Checking status
[2022-05-12 16:03:17,277] [INFO] [elcollectooorr] local height == remote; Sync complete...
[2022-05-12 16:03:17,888] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:16.834124
[2022-05-12 16:03:17,889] [INFO] [elcollectooorr] current AbciApp time: None
[2022-05-12 16:03:17,889] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 16:03:18,354] [INFO] [elcollectooorr] A2A transaction delivered!
[2022-05-12 16:03:18,355] [INFO] [elcollectooorr] Stop condition is true, no more attempts to send the transaction.
[2022-05-12 16:03:18,897] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:17.884065
[2022-05-12 16:03:18,898] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:16.834124
[2022-05-12 16:03:18,898] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 16:03:18,907] [INFO] [elcollectooorr] 'registration_startup' round is done with event: Event.DONE
[2022-05-12 16:03:18,907] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 16:03:47.884065
[2022-05-12 16:03:18,907] [INFO] [elcollectooorr] Entered in the 'randomness_safe' round for period 0
[2022-05-12 16:03:18,907] [INFO] [elcollectooorr] Entered in the 'randomness_safe' behaviour state
[2022-05-12 16:03:18,908] [INFO] [elcollectooorr] Retrieving DRAND values from api.
[2022-05-12 16:03:19,477] [INFO] [elcollectooorr] Verifying DRAND values.
[2022-05-12 16:03:19,863] [INFO] [elcollectooorr] DRAND check successful.
[2022-05-12 16:03:19,863] [INFO] [elcollectooorr] Retrieved DRAND values: {'round': 1897772, 'randomness': 'bcf753df221f3cff04c34bad430f72b3618137a28650de8c2b9be3705b914885', 'signature': '937c903ca1cf1851a6b0c991a860c797fad936755d8225279758f01941158a20851ba0c7ec39abf800b9a3fc8245600e18b7dea184ae2fa01f639c4c71bfd949afc365fdab0e00fdeb548f4e48e2c26fa5a01d1905fa576e3131f76c3d4808e3'}.
[2022-05-12 16:03:19,904] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:18.891808
[2022-05-12 16:03:19,904] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:17.884065
[2022-05-12 16:03:19,919] [INFO] [elcollectooorr] 'randomness_safe' round is done with event: Event.DONE
[2022-05-12 16:03:19,919] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 16:03:48.891808
[2022-05-12 16:03:19,919] [INFO] [elcollectooorr] Entered in the 'select_keeper_safe' round for period 0
[2022-05-12 16:03:19,920] [INFO] [elcollectooorr] Entered in the 'select_keeper_safe' behaviour state
[2022-05-12 16:03:19,920] [INFO] [elcollectooorr] Selected a new keeper: 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0.
[2022-05-12 16:03:20,913] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:19.899419
[2022-05-12 16:03:20,913] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:18.891808
[2022-05-12 16:03:20,928] [INFO] [elcollectooorr] 'select_keeper_safe' round is done with event: Event.DONE
[2022-05-12 16:03:20,928] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.DEPLOY_TIMEOUT with deadline 2022-05-12 16:03:49.899419
[2022-05-12 16:03:20,928] [INFO] [elcollectooorr] Entered in the 'deploy_safe' round for period 0
[2022-05-12 16:03:20,930] [INFO] [elcollectooorr] Entered in the 'deploy_safe' behaviour state
[2022-05-12 16:03:20,930] [INFO] [elcollectooorr] I am the designated sender, deploying the safe contract...
[2022-05-12 16:03:20,940] [INFO] Network 1 - Sender 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0 - Balance: 1000.000000Ξ
[2022-05-12 16:03:20,950] [INFO] Creating new Safe with owners=['0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0'] threshold=1 fallback-handler=0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4 salt-nonce=83638030360768167581629667952699494882599947840158484695659506031279433682200
[2022-05-12 16:03:21,921] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:20.908348
[2022-05-12 16:03:21,921] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:19.899419
estimate gas called!!!!!!
[2022-05-12 16:03:22,928] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:21.916340
[2022-05-12 16:03:22,928] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:20.908348
[2022-05-12 16:03:23,036] [INFO] [elcollectooorr] Sending signing request for transaction: RawTransaction: ledger_id=ethereum, body={'value': 0, 'gas': 312044, 'chainId': 1337, 'from': '0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0', 'maxFeePerGas': 89000000000, 'maxPriorityFeePerGas': 3000000000, 'nonce': 658, 'to': '0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2', 'data': '0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee7095520000000000000000000000000000000000000000000000000000000000000060b8e972967496c874cedfd85da6efd3b28f441dcaf77bdee8ed23ee575ead8d180000000000000000000000000000000000000000000000000000000000000184b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ffcf8fdee72ac11b5c542428b35eef5769c409f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'}...
[2022-05-12 16:03:23,043] [INFO] [elcollectooorr] Received signature response: Message(sender=decision_maker,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('61c462162bd779bc8688a74baac362941f6bf02a2e84b26abe44674966400238', '8fdbe4394e314496b40fde4238db34485f6f5bdb31e3a899a721868e76698519'),message_id=-1,performative=signed_transaction,signed_transaction=SignedTransaction: ledger_id=ethereum, body={'raw_transaction': '0x02f9029682053982029284b2d05e008514b8d03a008304c2ec94a6b71e26c5e0845f74c812102ca7114b6a896ab280b902241688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee7095520000000000000000000000000000000000000000000000000000000000000060b8e972967496c874cedfd85da6efd3b28f441dcaf77bdee8ed23ee575ead8d180000000000000000000000000000000000000000000000000000000000000184b63e800d00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000,target=1)
 Sending transaction...
[2022-05-12 16:03:23,044] [INFO] [elcollectooorr] sending transaction to ledger.
[2022-05-12 16:03:23,078] [INFO] [elcollectooorr] Transaction sent! Received transaction digest: Message(sender=valory/ledger:0.1.0,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('1b39cb9a2730eeb9f6cfa33e76081b854f100c843590ababf000f4de233f0a82', '9e5d0406a146d071ed2086a58ea32a7dabac48de0976996df7625dac6f7c7374'),message_id=-1,performative=transaction_digest,target=1,transaction_digest=TransactionDigest: ledger_id=ethereum, body=0x37386b83291d71d1c1a0884d1a0d8bd62b8aaf14cb8bbc920a3c2c6c54bd84c9)
[2022-05-12 16:03:23,078] [INFO] [elcollectooorr] sending transaction receipt request for tx_digest='0x37386b83291d71d1c1a0884d1a0d8bd62b8aaf14cb8bbc920a3c2c6c54bd84c9'.
[2022-05-12 16:03:23,952] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:22.923458
[2022-05-12 16:03:23,952] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:21.916340
[2022-05-12 16:03:24,955] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:23.938010
[2022-05-12 16:03:24,956] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:22.923458
[2022-05-12 16:03:25,964] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:24.950997
[2022-05-12 16:03:25,964] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:23.938010
[2022-05-12 16:03:26,103] [INFO] [elcollectooorr] Deployment tx digest: 0x37386b83291d71d1c1a0884d1a0d8bd62b8aaf14cb8bbc920a3c2c6c54bd84c9
[2022-05-12 16:03:26,103] [INFO] [elcollectooorr] Safe contract address: 0x90AEDb74544C66fAf575a9CbaCfd99e58C20675f
[2022-05-12 16:03:26,975] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:25.959936
[2022-05-12 16:03:26,975] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:24.950997
[2022-05-12 16:03:26,990] [INFO] [elcollectooorr] 'deploy_safe' round is done with event: Event.DONE
[2022-05-12 16:03:26,990] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.VALIDATE_TIMEOUT with deadline 2022-05-12 16:03:55.959936
[2022-05-12 16:03:26,990] [INFO] [elcollectooorr] Entered in the 'validate_safe' round for period 0
[2022-05-12 16:03:26,992] [INFO] [elcollectooorr] Entered in the 'validate_safe' behaviour state
[2022-05-12 16:03:27,986] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:26.969676
[2022-05-12 16:03:27,986] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:25.959936
[2022-05-12 16:03:28,001] [INFO] [elcollectooorr] 'validate_safe' round is done with event: Event.DONE
[2022-05-12 16:03:28,001] [INFO] [elcollectooorr] Entered in the 'deploy_decision_round' round for period 0
[2022-05-12 16:03:28,001] [INFO] [elcollectooorr] Entered in the 'deploy_decision_round_behaviour' behaviour state
[2022-05-12 16:03:28,996] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:27.981490
[2022-05-12 16:03:28,996] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:26.969676
[2022-05-12 16:03:28,996] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 16:03:29,012] [INFO] [elcollectooorr] 'deploy_decision_round' round is done with event: Event.DECIDED_YES
[2022-05-12 16:03:29,012] [INFO] [elcollectooorr] Entered in the 'deploy_basket_round' round for period 0
[2022-05-12 16:03:29,013] [INFO] [elcollectooorr] Entered in the 'deploy_basket_transaction_collection' behaviour state
[2022-05-12 16:03:30,005] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:28.991394
[2022-05-12 16:03:30,005] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:27.981490
[2022-05-12 16:03:30,005] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 16:03:30,020] [INFO] [elcollectooorr] 'deploy_basket_round' round is done with event: Event.DONE
[2022-05-12 16:03:30,021] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 16:03:58.991394
[2022-05-12 16:03:30,021] [INFO] [elcollectooorr] Entered in the 'randomness_transaction_submission' round for period 0
[2022-05-12 16:03:30,021] [INFO] [elcollectooorr] Entered in the 'randomness_transaction_submission' behaviour state
[2022-05-12 16:03:30,021] [INFO] [elcollectooorr] Retrieving DRAND values from api.
[2022-05-12 16:03:30,196] [INFO] [elcollectooorr] Verifying DRAND values.
[2022-05-12 16:03:30,560] [INFO] [elcollectooorr] DRAND check successful.
[2022-05-12 16:03:30,560] [INFO] [elcollectooorr] Retrieved DRAND values: {'round': 1897772, 'randomness': 'bcf753df221f3cff04c34bad430f72b3618137a28650de8c2b9be3705b914885', 'signature': '937c903ca1cf1851a6b0c991a860c797fad936755d8225279758f01941158a20851ba0c7ec39abf800b9a3fc8245600e18b7dea184ae2fa01f639c4c71bfd949afc365fdab0e00fdeb548f4e48e2c26fa5a01d1905fa576e3131f76c3d4808e3'}.
[2022-05-12 16:03:31,013] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:30.000692
[2022-05-12 16:03:31,013] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:28.991394
[2022-05-12 16:03:31,029] [INFO] [elcollectooorr] 'randomness_transaction_submission' round is done with event: Event.DONE
[2022-05-12 16:03:31,029] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 16:04:00.000692
[2022-05-12 16:03:31,029] [INFO] [elcollectooorr] Entered in the 'select_keeper_transaction_submission_a' round for period 0
[2022-05-12 16:03:31,030] [INFO] [elcollectooorr] Entered in the 'select_keeper_transaction_submission_a' behaviour state
[2022-05-12 16:03:31,030] [INFO] [elcollectooorr] Selected a new keeper: 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0.
[2022-05-12 16:03:32,020] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:31.008546
[2022-05-12 16:03:32,021] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:30.000692
[2022-05-12 16:03:32,042] [INFO] [elcollectooorr] 'select_keeper_transaction_submission_a' round is done with event: Event.DONE
[2022-05-12 16:03:32,043] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 16:04:01.008546
[2022-05-12 16:03:32,043] [INFO] [elcollectooorr] Entered in the 'collect_signature' round for period 0
[2022-05-12 16:03:32,044] [INFO] [elcollectooorr] Entered in the 'sign' behaviour state
[2022-05-12 16:03:32,044] [INFO] [elcollectooorr] Consensus reached on tx hash: fd2d268242aa28e27286c512bbba2321688abba7678f0dd2a27da0538db89922000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009896800xde771104C0C44123d22D39bB716339cD0c3333a100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000x00000000000000000000000000000000000000000x00000000000000000000000000000000000000005d6c58de
[2022-05-12 16:03:32,054] [INFO] [elcollectooorr] Signature: 31d510e5c4f060f3385f6de505481b1b1753657f6112a3b48c0bd65030457b3129d05790784c2d690e1a1df1446b42c1f1bd3ac03894196e2d9535f1851cc4f01c
[2022-05-12 16:03:33,028] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:32.015707
[2022-05-12 16:03:33,029] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:31.008546
[2022-05-12 16:03:33,046] [INFO] [elcollectooorr] 'collect_signature' round is done with event: Event.DONE
[2022-05-12 16:03:33,046] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.FINALIZE_TIMEOUT with deadline 2022-05-12 16:04:02.015707
[2022-05-12 16:03:33,046] [INFO] [elcollectooorr] Entered in the 'finalization' round for period 0
[2022-05-12 16:03:33,048] [INFO] [elcollectooorr] Entered in the 'finalize' behaviour state
[2022-05-12 16:03:33,048] [INFO] [elcollectooorr] I am the designated sender, attempting to send the safe transaction...
estimate gas called!!!!!!
[2022-05-12 16:03:34,036] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:33.023875
[2022-05-12 16:03:34,036] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:32.015707
[2022-05-12 16:03:34,941] [INFO] [elcollectooorr] Sending signing request for transaction: RawTransaction: ledger_id=ethereum, body={'value': 0, 'gas': 10460502, 'chainId': 1337, 'from': '0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0', 'maxFeePerGas': 78000000000, 'maxPriorityFeePerGas': 3000000000, 'to': '0x90AEDb74544C66fAf575a9CbaCfd99e58C20675f', 'data': '0x6a761202000000000000000000000000de771104c0c44123d22d39bb716339cd0c3333a100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009896800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000045d6c58de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004131d510e5c4f060f3385f6de505481b1b1753657f6112a3b48c0bd65030457b3129d05790784c2d690e1a1df1446b42c1f1bd3ac03894196e2d9535f1851cc4f01c00000000000000000000000000000000000000000000000000000000000000', 'nonce': 659}...
[2022-05-12 16:03:34,948] [INFO] [elcollectooorr] Received signature response: Message(sender=decision_maker,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('39292833f3761bfaea0dedaf689e8bc15b81e23d2ebb50900f3071b04c0ed7ac', 'e2c295addb21f6cb8c0c06f01100f96608f38ca0cfd79f46eb5f0edf9d205848'),message_id=-1,performative=signed_transaction,signed_transaction=SignedTransaction: ledger_id=ethereum, body={'raw_transaction': '0x02f9027682053982029384b2d05e00851229298c00839f9d569490aedb74544c66faf575a9cbacfd99e58c20675f80b902046a761202000000000000000000000000de771104c0c44123d22d39bb716339cd0c3333a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000989680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,target=1)
 Sending transaction...
[2022-05-12 16:03:34,949] [INFO] [elcollectooorr] sending transaction to ledger.
[2022-05-12 16:03:34,994] [INFO] [elcollectooorr] Transaction sent! Received transaction digest: Message(sender=valory/ledger:0.1.0,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('fa00c3fa24f40efc3c984ebc6320df168746decdc11737624ecfbd5bc00a7ea6', '36283b4ee2b9f2516d02c7eb837255d887f9178513829fdf97e6ceced0c1467d'),message_id=-1,performative=transaction_digest,target=1,transaction_digest=TransactionDigest: ledger_id=ethereum, body=0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1)
[2022-05-12 16:03:34,994] [INFO] [elcollectooorr] Sent transaction for mining with gas parameters {'maxPriorityFeePerGas': 3000000000, 'maxFeePerGas': 78000000000}
[2022-05-12 16:03:34,994] [INFO] [elcollectooorr] Finalization tx digest: 0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1
[2022-05-12 16:03:35,044] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:34.031465
[2022-05-12 16:03:35,044] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:33.023875
[2022-05-12 16:03:35,061] [INFO] [elcollectooorr] 'finalization' round is done with event: Event.DONE
[2022-05-12 16:03:35,061] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.VALIDATE_TIMEOUT with deadline 2022-05-12 16:04:04.031465
[2022-05-12 16:03:35,061] [INFO] [elcollectooorr] Entered in the 'validate_transaction' round for period 0
[2022-05-12 16:03:35,062] [INFO] [elcollectooorr] Entered in the 'validate_transaction' behaviour state
[2022-05-12 16:03:35,062] [INFO] [elcollectooorr] sending transaction receipt request for tx_digest='0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1'.
[2022-05-12 16:03:36,054] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:35.038814
[2022-05-12 16:03:36,054] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:34.031465
[2022-05-12 16:03:37,063] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:36.049013
[2022-05-12 16:03:37,063] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:35.038814
[2022-05-12 16:03:38,075] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:37.059219
[2022-05-12 16:03:38,075] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:36.049013
[2022-05-12 16:03:38,116] [INFO] [elcollectooorr] Verified result: True
[2022-05-12 16:03:38,116] [INFO] [elcollectooorr] Finalized with transaction hash: 0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1
[2022-05-12 16:03:39,079] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:38.066796
[2022-05-12 16:03:39,079] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:37.059219
[2022-05-12 16:03:39,095] [INFO] [elcollectooorr] 'validate_transaction' round is done with event: Event.DONE
[2022-05-12 16:03:39,095] [INFO] [elcollectooorr] Entered in the 'post_transaction_settlement_round' round for period 0
[2022-05-12 16:03:39,096] [INFO] [elcollectooorr] Entered in the 'post_tx_settlement_state' behaviour state
[2022-05-12 16:03:39,096] [INFO] [elcollectooorr] The TX submitted by deploy_basket_round was settled.
[2022-05-12 16:03:39,110] [INFO] [elcollectooorr] The settled tx cost: 0.09135382399736319Ξ.
[2022-05-12 16:03:40,086] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:39.074994
[2022-05-12 16:03:40,086] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:38.066796
[2022-05-12 16:03:40,086] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 16:03:40,102] [INFO] [elcollectooorr] 'post_transaction_settlement_round' round is done with event: PostTransactionSettlementEvent.BASKET_DONE
[2022-05-12 16:03:40,102] [INFO] [elcollectooorr] Entered in the 'post_deploy_basket_round' round for period 0
[2022-05-12 16:03:40,103] [INFO] [elcollectooorr] Entered in the 'basket_address_round_behaviour' behaviour state
/home/ardian/.virtualenvs/agent-academy-1-ivkQXcJL/lib/python3.8/site-packages/web3/contract.py:1166: UserWarning: The log with transaction hash: HexBytes('0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1') and logIndex: 0 encountered the following error during processing: MismatchedABI(The event signature did not match the provided ABI). It has been discarded.
  warnings.warn(
/home/ardian/.virtualenvs/agent-academy-1-ivkQXcJL/lib/python3.8/site-packages/web3/contract.py:1166: UserWarning: The log with transaction hash: HexBytes('0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1') and logIndex: 1 encountered the following error during processing: MismatchedABI(The event signature did not match the provided ABI). It has been discarded.
  warnings.warn(
/home/ardian/.virtualenvs/agent-academy-1-ivkQXcJL/lib/python3.8/site-packages/web3/contract.py:1166: UserWarning: The log with transaction hash: HexBytes('0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1') and logIndex: 2 encountered the following error during processing: MismatchedABI(The event signature did not match the provided ABI). It has been discarded.
  warnings.warn(
/home/ardian/.virtualenvs/agent-academy-1-ivkQXcJL/lib/python3.8/site-packages/web3/contract.py:1166: UserWarning: The log with transaction hash: HexBytes('0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1') and logIndex: 4 encountered the following error during processing: MismatchedABI(The event signature did not match the provided ABI). It has been discarded.
  warnings.warn(
[2022-05-12 16:03:40,121] [INFO] [elcollectooorr] New basket address=0x97F1e70d521b83d17734efC1E26dCC7ae9ED0536
[2022-05-12 16:03:41,094] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:40.082053
[2022-05-12 16:03:41,095] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:39.074994
[2022-05-12 16:03:41,095] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 16:03:41,112] [INFO] [elcollectooorr] 'post_deploy_basket_round' round is done with event: Event.DONE
[2022-05-12 16:03:41,112] [INFO] [elcollectooorr] Entered in the 'permission_factory_round' round for period 0
[2022-05-12 16:03:41,114] [INFO] [elcollectooorr] Entered in the 'permission_vault_factory' behaviour state
[2022-05-12 16:03:42,102] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:41.090256
[2022-05-12 16:03:42,102] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:40.082053
[2022-05-12 16:03:42,102] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 16:03:42,120] [INFO] [elcollectooorr] 'permission_factory_round' round is done with event: Event.DONE
[2022-05-12 16:03:42,120] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 16:04:11.090256
[2022-05-12 16:03:42,120] [INFO] [elcollectooorr] Entered in the 'randomness_transaction_submission' round for period 0
[2022-05-12 16:03:42,121] [INFO] [elcollectooorr] Entered in the 'randomness_transaction_submission' behaviour state
[2022-05-12 16:03:42,121] [INFO] [elcollectooorr] Retrieving DRAND values from api.
[2022-05-12 16:03:42,471] [INFO] [elcollectooorr] Verifying DRAND values.
[2022-05-12 16:03:42,853] [INFO] [elcollectooorr] DRAND check successful.
[2022-05-12 16:03:42,853] [INFO] [elcollectooorr] Retrieved DRAND values: {'round': 1897773, 'randomness': 'd74c17658dc4d65131fec67deb1d55de392784af97c0b354c00b0fcb81ab1813', 'signature': '8948cc2a8e727c8cffe91b0f27c74c3ac60e035dd790090dbdcc5393163f5c87c645b155d4d1b7757c4f98b7ecef44230ca894c3065a8a2ac9ff83afa9b41f3f14d84d122a02976efb488b901cbf97db75ccb1dc4c750249c4b85afcf160a02c'}.
[2022-05-12 16:03:43,110] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 16:03:42.097991
[2022-05-12 16:03:43,110] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 16:03:41.090256
[2022-05-12 16:03:43,127] [INFO] [elcollectooorr] 'randomness_transaction_submission' round is done with event: Event.DONE
[2022-05-12 16:03:43,127] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 16:04:12.097991
[2022-05-12 16:03:43,127] [INFO] [elcollectooorr] Entered in the 'select_keeper_transaction_submission_a' round for period 0
[2022-05-12 16:03:43,129] [INFO] [elcollectooorr] Entered in the 'select_keeper_transaction_submission_a' behaviour state
[2022-05-12 16:03:43,129] [INFO] [elcollectooorr] Selected a new keeper: 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0.
 AEA 'elcollectooorr' interrupted!
Stopping AEA 'elcollectooorr' ...

Ganache logs:

Forked Chain
==================
Location:        Ethereum Mainnet, via 丕Infura
Block:           14698800
Network ID:      1
Time:            Thu May 12 2022 16:03:19 GMT+0200 (Central European Summer Time)

Chain Id
==================
1337

RPC Listening on 127.0.0.1:8545
eth_getBalance
net_version
eth_getCode
eth_getCode
eth_chainId
eth_getTransactionCount
eth_call
eth_getBlockByNumber
eth_estimateGas
eth_chainId
eth_sendRawTransaction

  Transaction: 0x37386b83291d71d1c1a0884d1a0d8bd62b8aaf14cb8bbc920a3c2c6c54bd84c9
  Gas usage: 259064
  Block number: 14698802
  Block time: Thu May 12 2022 16:03:23 GMT+0200 (Central European Summer Time)

eth_getTransactionReceipt
eth_getTransactionByHash
eth_getCode
eth_call
eth_call
eth_chainId
eth_getTransactionCount
eth_getBlockByNumber
eth_estimateGas
eth_chainId
eth_sendRawTransaction

  Transaction: 0x2e0d3c180753bb9753b2e0960a2a392ebbec7aab4de75e30144872ec15c80ae1
  Gas usage: 2010889
  Block number: 14698803
  Block time: Thu May 12 2022 16:03:34 GMT+0200 (Central European Summer Time)

eth_getTransactionReceipt
eth_getTransactionByHash
eth_call
eth_getTransactionByHash
eth_getTransactionReceipt
eth_getTransactionReceipt
eth_getTransactionByHash
eth_getTransactionReceipt
eth_call
eth_call
eth_chainId

When gas is set:
One estimate gas call is made both in the AEA and in ganache, ie only when the safe contract is deployed.

The AEA logs

    _     _____     _    
   / \   | ____|   / \   
  / _ \  |  _|    / _ \  
 / ___ \ | |___  / ___ \ 
/_/   \_\|_____|/_/   \_\
                         
v1.7.0

Starting AEA 'elcollectooorr' in 'async' mode...
[2022-05-12 15:44:16,589] [INFO] [elcollectooorr] Entered in the 'registration_startup' round for period 0
[2022-05-12 15:44:16,589] [INFO] [elcollectooorr] Start processing messages...
[2022-05-12 15:44:16,590] [INFO] [elcollectooorr] Entered in the 'registration_startup' behaviour state
[2022-05-12 15:44:16,590] [INFO] [elcollectooorr] Checking sync...
[2022-05-12 15:44:16,590] [INFO] [elcollectooorr] Checking status
[2022-05-12 15:44:19,594] [INFO] [elcollectooorr] Checking status
[2022-05-12 15:44:22,606] [INFO] [elcollectooorr] Checking status
[2022-05-12 15:44:25,618] [INFO] [elcollectooorr] Checking status
[2022-05-12 15:44:28,630] [INFO] [elcollectooorr] Checking status
[2022-05-12 15:44:31,279] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:30.209864
[2022-05-12 15:44:31,279] [INFO] [elcollectooorr] current AbciApp time: None
[2022-05-12 15:44:31,280] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 15:44:31,639] [INFO] [elcollectooorr] Checking sync...
[2022-05-12 15:44:31,639] [INFO] [elcollectooorr] Checking status
[2022-05-12 15:44:31,653] [INFO] [elcollectooorr] local height == remote; Sync complete...
[2022-05-12 15:44:32,280] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:31.266440
[2022-05-12 15:44:32,280] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:30.209864
[2022-05-12 15:44:32,280] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 15:44:32,760] [INFO] [elcollectooorr] A2A transaction delivered!
[2022-05-12 15:44:32,760] [INFO] [elcollectooorr] Stop condition is true, no more attempts to send the transaction.
[2022-05-12 15:44:33,291] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:32.275674
[2022-05-12 15:44:33,291] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:31.266440
[2022-05-12 15:44:33,291] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 15:44:33,297] [INFO] [elcollectooorr] 'registration_startup' round is done with event: Event.DONE
[2022-05-12 15:44:33,298] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 15:45:02.275674
[2022-05-12 15:44:33,298] [INFO] [elcollectooorr] Entered in the 'randomness_safe' round for period 0
[2022-05-12 15:44:33,298] [INFO] [elcollectooorr] Entered in the 'randomness_safe' behaviour state
[2022-05-12 15:44:33,298] [INFO] [elcollectooorr] Retrieving DRAND values from api.
[2022-05-12 15:44:33,767] [INFO] [elcollectooorr] Verifying DRAND values.
[2022-05-12 15:44:34,186] [INFO] [elcollectooorr] DRAND check successful.
[2022-05-12 15:44:34,186] [INFO] [elcollectooorr] Retrieved DRAND values: {'round': 1897735, 'randomness': '0d463c86bbb45f58897fd4473769f7752d254b45989658b702483ceef37884d4', 'signature': 'b45e825939bb645467cfd79e77f09269718e3f170855f08a932f8aa76397f16dac5f40193c0f2521b091bc5076fc0fc715fdb07a3e5e66bb5bee0bfa155bddbf41ee1bde34562f99d46208226aeefd2d02a36645380ab87dcbb9bc6e229d07f8'}.
[2022-05-12 15:44:34,301] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:33.285893
[2022-05-12 15:44:34,301] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:32.275674
[2022-05-12 15:44:34,317] [INFO] [elcollectooorr] 'randomness_safe' round is done with event: Event.DONE
[2022-05-12 15:44:34,317] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 15:45:03.285893
[2022-05-12 15:44:34,317] [INFO] [elcollectooorr] Entered in the 'select_keeper_safe' round for period 0
[2022-05-12 15:44:34,318] [INFO] [elcollectooorr] Entered in the 'select_keeper_safe' behaviour state
[2022-05-12 15:44:34,318] [INFO] [elcollectooorr] Selected a new keeper: 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0.
[2022-05-12 15:44:35,310] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:34.296228
[2022-05-12 15:44:35,310] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:33.285893
[2022-05-12 15:44:35,325] [INFO] [elcollectooorr] 'select_keeper_safe' round is done with event: Event.DONE
[2022-05-12 15:44:35,325] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.DEPLOY_TIMEOUT with deadline 2022-05-12 15:45:04.296228
[2022-05-12 15:44:35,325] [INFO] [elcollectooorr] Entered in the 'deploy_safe' round for period 0
[2022-05-12 15:44:35,326] [INFO] [elcollectooorr] Entered in the 'deploy_safe' behaviour state
[2022-05-12 15:44:35,326] [INFO] [elcollectooorr] I am the designated sender, deploying the safe contract...
[2022-05-12 15:44:35,337] [INFO] Network 1 - Sender 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0 - Balance: 1000.000000Ξ
[2022-05-12 15:44:35,347] [INFO] Creating new Safe with owners=['0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0'] threshold=1 fallback-handler=0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4 salt-nonce=75528173773057354050542427737433987055045026913652713805146881223330236147429
[2022-05-12 15:44:36,332] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:35.305845
[2022-05-12 15:44:36,332] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:34.296228
estimate gas called!!!!!!
[2022-05-12 15:44:37,299] [INFO] [elcollectooorr] Sending signing request for transaction: RawTransaction: ledger_id=ethereum, body={'value': 0, 'gas': 312044, 'chainId': 1337, 'from': '0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0', 'maxFeePerGas': 89000000000, 'maxPriorityFeePerGas': 3000000000, 'nonce': 658, 'to': '0xa6B71E26C5e0845f74c812102Ca7114b6a896AB2', 'data': '0x1688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee7095520000000000000000000000000000000000000000000000000000000000000060a6fb6e731795a6934e3ffc141bb69ecd9030a02e9361ec9bcb85b1543bab26e50000000000000000000000000000000000000000000000000000000000000184b63e800d0000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000f48f2b2d2a534e402487b3ee7c18c33aec0fe5e40000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ffcf8fdee72ac11b5c542428b35eef5769c409f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'}...
[2022-05-12 15:44:37,307] [INFO] [elcollectooorr] Received signature response: Message(sender=decision_maker,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('7a312f86a74eda303cc62dfd491d82daaa893af9a92f4439264a71176fe3d424', 'e5f13a7f38ae726020c66361480d3a936078848f9cb219c892c3657b2f58d514'),message_id=-1,performative=signed_transaction,signed_transaction=SignedTransaction: ledger_id=ethereum, body={'raw_transaction': '0x02f9029682053982029284b2d05e008514b8d03a008304c2ec94a6b71e26c5e0845f74c812102ca7114b6a896ab280b902241688f0b9000000000000000000000000d9db270c1b5e3bd161e8c8503c55ceabee7095520000000000000000000000000000000000000000000000000000000000000060a6fb6e731795a6934e3ffc141bb69ecd9030a02e9361ec9bcb85b1543bab26e50000000000000000000000000000000000000000000000000000000000000184b63e800d00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000,target=1)
 Sending transaction...
[2022-05-12 15:44:37,307] [INFO] [elcollectooorr] sending transaction to ledger.
[2022-05-12 15:44:37,334] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:36.319599
[2022-05-12 15:44:37,334] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:35.305845
[2022-05-12 15:44:37,345] [INFO] [elcollectooorr] Transaction sent! Received transaction digest: Message(sender=valory/ledger:0.1.0,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('1be52ff51efaf2ae95922fe4833e66780fb9d8d7f4aed5b5a6a3936cbcbb3625', '9b387bc1901372caf526910325a9226c92a0f2129ce0fbeebc22bb0e28ef8940'),message_id=-1,performative=transaction_digest,target=1,transaction_digest=TransactionDigest: ledger_id=ethereum, body=0x734f544e0799746c1619eac882cf21dd99b29e45f36960f16e047b8968b55de6)
[2022-05-12 15:44:37,345] [INFO] [elcollectooorr] sending transaction receipt request for tx_digest='0x734f544e0799746c1619eac882cf21dd99b29e45f36960f16e047b8968b55de6'.
[2022-05-12 15:44:38,347] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:37.329443
[2022-05-12 15:44:38,347] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:36.319599
[2022-05-12 15:44:39,362] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:38.340161
[2022-05-12 15:44:39,362] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:37.329443
[2022-05-12 15:44:40,366] [INFO] [elcollectooorr] Deployment tx digest: 0x734f544e0799746c1619eac882cf21dd99b29e45f36960f16e047b8968b55de6
[2022-05-12 15:44:40,366] [INFO] [elcollectooorr] Safe contract address: 0xEEf009511BE3B84AdfE9eb5774cF7F80C145Fc11
[2022-05-12 15:44:40,374] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:39.355479
[2022-05-12 15:44:40,375] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:38.340161
[2022-05-12 15:44:41,381] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:40.367053
[2022-05-12 15:44:41,381] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:39.355479
[2022-05-12 15:44:41,396] [INFO] [elcollectooorr] 'deploy_safe' round is done with event: Event.DONE
[2022-05-12 15:44:41,396] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.VALIDATE_TIMEOUT with deadline 2022-05-12 15:45:10.367053
[2022-05-12 15:44:41,396] [INFO] [elcollectooorr] Entered in the 'validate_safe' round for period 0
[2022-05-12 15:44:41,397] [INFO] [elcollectooorr] Entered in the 'validate_safe' behaviour state
[2022-05-12 15:44:42,390] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:41.376253
[2022-05-12 15:44:42,390] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:40.367053
[2022-05-12 15:44:42,405] [INFO] [elcollectooorr] 'validate_safe' round is done with event: Event.DONE
[2022-05-12 15:44:42,405] [INFO] [elcollectooorr] Entered in the 'deploy_decision_round' round for period 0
[2022-05-12 15:44:42,406] [INFO] [elcollectooorr] Entered in the 'deploy_decision_round_behaviour' behaviour state
[2022-05-12 15:44:43,402] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:42.385776
[2022-05-12 15:44:43,403] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:41.376253
[2022-05-12 15:44:43,403] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 15:44:43,418] [INFO] [elcollectooorr] 'deploy_decision_round' round is done with event: Event.DECIDED_YES
[2022-05-12 15:44:43,418] [INFO] [elcollectooorr] Entered in the 'deploy_basket_round' round for period 0
[2022-05-12 15:44:43,419] [INFO] [elcollectooorr] Entered in the 'deploy_basket_transaction_collection' behaviour state
[2022-05-12 15:44:44,412] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:43.396238
[2022-05-12 15:44:44,412] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:42.385776
[2022-05-12 15:44:44,412] [INFO] [elcollectooorr] no pending timeout, move time forward
[2022-05-12 15:44:44,427] [INFO] [elcollectooorr] 'deploy_basket_round' round is done with event: Event.DONE
[2022-05-12 15:44:44,427] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 15:45:13.396238
[2022-05-12 15:44:44,427] [INFO] [elcollectooorr] Entered in the 'randomness_transaction_submission' round for period 0
[2022-05-12 15:44:44,428] [INFO] [elcollectooorr] Entered in the 'randomness_transaction_submission' behaviour state
[2022-05-12 15:44:44,429] [INFO] [elcollectooorr] Retrieving DRAND values from api.
[2022-05-12 15:44:44,619] [INFO] [elcollectooorr] Verifying DRAND values.
[2022-05-12 15:44:44,990] [INFO] [elcollectooorr] DRAND check successful.
[2022-05-12 15:44:44,990] [INFO] [elcollectooorr] Retrieved DRAND values: {'round': 1897735, 'randomness': '0d463c86bbb45f58897fd4473769f7752d254b45989658b702483ceef37884d4', 'signature': 'b45e825939bb645467cfd79e77f09269718e3f170855f08a932f8aa76397f16dac5f40193c0f2521b091bc5076fc0fc715fdb07a3e5e66bb5bee0bfa155bddbf41ee1bde34562f99d46208226aeefd2d02a36645380ab87dcbb9bc6e229d07f8'}.
[2022-05-12 15:44:45,421] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:44.407904
[2022-05-12 15:44:45,421] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:43.396238
[2022-05-12 15:44:45,437] [INFO] [elcollectooorr] 'randomness_transaction_submission' round is done with event: Event.DONE
[2022-05-12 15:44:45,437] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 15:45:14.407904
[2022-05-12 15:44:45,437] [INFO] [elcollectooorr] Entered in the 'select_keeper_transaction_submission_a' round for period 0
[2022-05-12 15:44:45,437] [INFO] [elcollectooorr] Entered in the 'select_keeper_transaction_submission_a' behaviour state
[2022-05-12 15:44:45,438] [INFO] [elcollectooorr] Selected a new keeper: 0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0.
[2022-05-12 15:44:46,445] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:45.416821
[2022-05-12 15:44:46,445] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:44.407904
[2022-05-12 15:44:46,499] [INFO] [elcollectooorr] 'select_keeper_transaction_submission_a' round is done with event: Event.DONE
[2022-05-12 15:44:46,499] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-05-12 15:45:15.416821
[2022-05-12 15:44:46,499] [INFO] [elcollectooorr] Entered in the 'collect_signature' round for period 0
[2022-05-12 15:44:46,501] [INFO] [elcollectooorr] Entered in the 'sign' behaviour state
[2022-05-12 15:44:46,501] [INFO] [elcollectooorr] Consensus reached on tx hash: ba6d618cac64b454e2b13b88e1e4858ada359b3b8fd5cafbf1c922253ce3e27b000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009896800xde771104C0C44123d22D39bB716339cD0c3333a100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000x00000000000000000000000000000000000000000x00000000000000000000000000000000000000005d6c58de
[2022-05-12 15:44:46,508] [INFO] [elcollectooorr] Signature: 50d59cdde16c1af6141c1dfd7edf2d2020d283a7c699027836e9b000a98e818b5d9f91c3644e029102081716fb7425b2d650f2803cdb626a7f07d10275958c011c
[2022-05-12 15:44:47,446] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:46.431038
[2022-05-12 15:44:47,446] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:45.416821
[2022-05-12 15:44:47,461] [INFO] [elcollectooorr] 'collect_signature' round is done with event: Event.DONE
[2022-05-12 15:44:47,461] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.FINALIZE_TIMEOUT with deadline 2022-05-12 15:45:16.431038
[2022-05-12 15:44:47,461] [INFO] [elcollectooorr] Entered in the 'finalization' round for period 0
[2022-05-12 15:44:47,462] [INFO] [elcollectooorr] Entered in the 'finalize' behaviour state
[2022-05-12 15:44:47,462] [INFO] [elcollectooorr] I am the designated sender, attempting to send the safe transaction...
[2022-05-12 15:44:47,483] [INFO] [elcollectooorr] Sending signing request for transaction: RawTransaction: ledger_id=ethereum, body={'value': 0, 'chainId': 1337, 'from': '0xFFcf8FDEE72ac11b5c542428B35EEF5769C409f0', 'gas': 10150000, 'maxFeePerGas': 78000000000, 'maxPriorityFeePerGas': 3000000000, 'to': '0xEEf009511BE3B84AdfE9eb5774cF7F80C145Fc11', 'data': '0x6a761202000000000000000000000000de771104c0c44123d22d39bb716339cd0c3333a100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000140000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000009896800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018000000000000000000000000000000000000000000000000000000000000000045d6c58de00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004150d59cdde16c1af6141c1dfd7edf2d2020d283a7c699027836e9b000a98e818b5d9f91c3644e029102081716fb7425b2d650f2803cdb626a7f07d10275958c011c00000000000000000000000000000000000000000000000000000000000000', 'nonce': 659}...
[2022-05-12 15:44:47,490] [INFO] [elcollectooorr] Received signature response: Message(sender=decision_maker,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('fcb108d5face098d1627e2c7d4d23a300ba19bab14baeb9e5cfc893a1d8057e0', '2b59f06f24fcadc532f131fa3dbb6670d894261b2d3439c5da5260a3f77add99'),message_id=-1,performative=signed_transaction,signed_transaction=SignedTransaction: ledger_id=ethereum, body={'raw_transaction': '0x02f9027682053982029384b2d05e00851229298c00839ae07094eef009511be3b84adfe9eb5774cf7f80c145fc1180b902046a761202000000000000000000000000de771104c0c44123d22d39bb716339cd0c3333a10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000989680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,target=1)
 Sending transaction...
[2022-05-12 15:44:47,491] [INFO] [elcollectooorr] sending transaction to ledger.
[2022-05-12 15:44:47,674] [INFO] [elcollectooorr] Transaction sent! Received transaction digest: Message(sender=valory/ledger:0.1.0,to=valory/elcollectooorr_abci:0.1.0,dialogue_reference=('fdf7e69e2c3091b0bb5caf907f5bca18d994e74d97da7128721555ffd256c013', 'ce561fd68185f89bd2c4e3d2a579abb9abaf233bb54467eb494b9a031f7971ef'),message_id=-1,performative=transaction_digest,target=1,transaction_digest=TransactionDigest: ledger_id=ethereum, body=0x7d33a196e59e642f26eb78141d25361b849616ec5356dce8c1b844bd25710f6f)
[2022-05-12 15:44:47,675] [INFO] [elcollectooorr] Sent transaction for mining with gas parameters {'maxPriorityFeePerGas': 3000000000, 'maxFeePerGas': 78000000000}
[2022-05-12 15:44:47,675] [INFO] [elcollectooorr] Finalization tx digest: 0x7d33a196e59e642f26eb78141d25361b849616ec5356dce8c1b844bd25710f6f
[2022-05-12 15:44:48,457] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:47.441821
[2022-05-12 15:44:48,457] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:46.431038
[2022-05-12 15:44:48,472] [INFO] [elcollectooorr] 'finalization' round is done with event: Event.DONE
[2022-05-12 15:44:48,472] [INFO] [elcollectooorr] scheduling timeout of 30.0 seconds for event Event.VALIDATE_TIMEOUT with deadline 2022-05-12 15:45:17.441821
[2022-05-12 15:44:48,472] [INFO] [elcollectooorr] Entered in the 'validate_transaction' round for period 0
[2022-05-12 15:44:48,473] [INFO] [elcollectooorr] Entered in the 'validate_transaction' behaviour state
[2022-05-12 15:44:48,474] [INFO] [elcollectooorr] sending transaction receipt request for tx_digest='0x7d33a196e59e642f26eb78141d25361b849616ec5356dce8c1b844bd25710f6f'.
[2022-05-12 15:44:49,466] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:48.452905
[2022-05-12 15:44:49,466] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:47.441821
[2022-05-12 15:44:50,477] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:49.461859
[2022-05-12 15:44:50,477] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:48.452905
[2022-05-12 15:44:51,498] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:50.472440
[2022-05-12 15:44:51,499] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:49.461859
[2022-05-12 15:44:52,514] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:51.486150
[2022-05-12 15:44:52,515] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:50.472440
[2022-05-12 15:44:53,524] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:52.501901
[2022-05-12 15:44:53,524] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:51.486150
[2022-05-12 15:44:54,534] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:53.518206
[2022-05-12 15:44:54,534] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:52.501901
[2022-05-12 15:44:55,551] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:54.529198
[2022-05-12 15:44:55,551] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:53.518206
[2022-05-12 15:44:56,560] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:55.542908
[2022-05-12 15:44:56,560] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:54.529198
[2022-05-12 15:44:57,567] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:56.555635
[2022-05-12 15:44:57,567] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:55.542908
[2022-05-12 15:44:58,590] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:57.562784
[2022-05-12 15:44:58,590] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:56.555635
[2022-05-12 15:44:59,601] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:58.576720
[2022-05-12 15:44:59,601] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:57.562784
[2022-05-12 15:45:00,620] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:44:59.593164
[2022-05-12 15:45:00,620] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:58.576720
[2022-05-12 15:45:01,624] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:45:00.608932
[2022-05-12 15:45:01,625] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:44:59.593164
[2022-05-12 15:45:02,639] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:45:01.620244
[2022-05-12 15:45:02,639] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:45:00.608932
[2022-05-12 15:45:03,655] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:45:02.631970
[2022-05-12 15:45:03,655] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:45:01.620244
[2022-05-12 15:45:04,662] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:45:03.646660
[2022-05-12 15:45:04,662] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:45:02.631970
[2022-05-12 15:45:05,683] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:45:04.657400
[2022-05-12 15:45:05,683] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:45:03.646660
[2022-05-12 15:45:06,685] [INFO] [elcollectooorr] arrived block with timestamp: 2022-05-12 15:45:05.670926
[2022-05-12 15:45:06,685] [INFO] [elcollectooorr] current AbciApp time: 2022-05-12 15:45:04.657400
 AEA 'elcollectooorr' interrupted!
Stopping AEA 'elcollectooorr' ...

ganache logs:


Forked Chain
==================
Location:        Ethereum Mainnet, via 丕Infura
Block:           14698800
Network ID:      1
Time:            Thu May 12 2022 15:44:14 GMT+0200 (Central European Summer Time)

Chain Id
==================
1337

RPC Listening on 127.0.0.1:8545
eth_getBalance
net_version
eth_getCode
eth_getCode
eth_chainId
eth_getTransactionCount
eth_call
eth_getBlockByNumber
eth_estimateGas
eth_chainId
eth_sendRawTransaction

  Transaction: 0x734f544e0799746c1619eac882cf21dd99b29e45f36960f16e047b8968b55de6
  Gas usage: 259064
  Block number: 14698802
  Block time: Thu May 12 2022 15:44:37 GMT+0200 (Central European Summer Time)

eth_getTransactionReceipt
eth_getTransactionByHash
eth_getCode
eth_call
eth_call
eth_chainId
eth_getTransactionCount
eth_getBlockByNumber
eth_chainId
eth_sendRawTransaction

  Transaction: 0x7d33a196e59e642f26eb78141d25361b849616ec5356dce8c1b844bd25710f6f
  Gas usage: 64623
  Block number: 14698803
  Block time: Thu May 12 2022 15:44:47 GMT+0200 (Central European Summer Time)
  Runtime error: revert
  Revert reason: GS010

eth_getTransactionReceipt
eth_getTransactionByHash
eth_call
eth_getTransactionReceipt
eth_getTransactionByHash
eth_call
eth_getTransactionReceipt
eth_getTransactionByHash
eth_call
eth_getTransactionByHash

Small improvement suggestions

Here a few small improvement suggestions:

El Collectooorr review 18/07/22 `e7f5eae0c430444ac43aa70ea64c63a5f219bca7`

This review was performed for commit: e7f5eae

Using TransactionSettlementABCI multiple times in a single agent

For context, I need to use the TransactionSettlmentABCI 3-4 times, in a single flow.

I am having a difficulty using an ABCI more than 1 in a chain. I think understand the reason behind the constraint, state transitioning out of the abci app refferenced twice makes no sense, at least with the current implementation of state transitioning being a map, i.e. a state of one type can have only 1 next state, thats fairly clear and obvious why.
I took a brief look at chain(), and effectively the abci apps get flattened out when chained together, hence encapulsating doesn't solve the issue.
Simply subclassing the transaction settlement abci app won't do it either, since the same rounds and behaviours would be used, which ends up being the same as just adding the abci app multiple times.
I managed to solve this issue by modifying the TransactionSettlementAbci skill to use rounds and behaviours in an "adapter pattern" like way.
I tested it out and it works.
It still requires some subclassing, but as much as it would without these changes.
Checkout the changes to transaction_settlement_abci and the behaviours and rounds of fractionalize_deployment_abci here.

TypeError on RegistrationPayload

Reproducing the issue

Checkout demo branch:

git checkout bug/registration_payload

Run a local fork

Run a ropsten fork on block number 11290000:

export BLOCK_NUMBER=11290000
ganache -d --fork.network ropsten --fork.blockNumber $BLOCK_NUMBER

Run the agent and tendermint
I prefer to run tendermint manually, so I can do a clean run everytime.

Run the agent:

pipenv shell
cd elcollectooor
aea -s run
Run tendermint:

rm -r .tendermint/ && tendermint init && tendermint node --abci grpc --proxy_app=tcp://127.0.0.1:26658 --rpc.laddr=tcp://127.0.0.1:26657 --p2p.laddr=tcp://0.0.0.0:26656 --p2p.seeds= --consensus.create_empty_blocks=true

Useful commands

If tendermint ever fails to exit successfully, I use the following commands to find & kill the tendermint process.

netstat -ltp | grep tendermint

Extracting response from tx logs

There are certain contract functions that don't return a response but rather emit an event, ex. the createBasket function in the fractionalize BasketFactory.
I think such cases should be handled in the appropriate contract package.
One way to do this would be through callbacks, functions that have to be handled in this manner in their response would make clear that a callback needs to be used in order for the needed information to be extracted.
This would ensure that the contract specific logic is always in the necessary contract package.

Unused reset_pause_abci

This means the state of the chain grows indefinitely. For 0.2.0 the app needs to be extended to incorporate this skill.

Too many rpc calls

Even with pausing, the agent makes too many requests, which results in rpc quota problems.

alphabetic skill loading

The skills are listed alphabetically in the aea-config.yaml of the elcollectooor agent.
From my understanding they are listed sequentially, but loaded in parallel (just my assumption from the behaviour explained below).
The elcollectooor skills look like this:

skills:
- valory/abstract_abci:0.1.0
- valory/abstract_round_abci:0.1.0
- valory/elcollectooor_abci:0.1.0
- valory/registration_abci:0.1.0
- valory/safe_deployment_abci:0.1.0
- valory/transaction_settlement_abci:0.1.0

Trying to run the agent with the skills listed like this causes an error, because the elcollectooor_abci has a dependency on all the other skills. Here's a sample error:

Error: Package loading error: An error occurred while loading skill valory/elcollectooor_abci:0.1.0:
Traceback (most recent call last):

  File "/home/ardian/ada/agent-academy-1/elcollectooor/vendor/valory/skills/elcollectooor_abci/rounds.py", line 49, in <module>
    from packages.valory.skills.registration_abci.rounds import (

aea.components.loader.AEAPackageNotFound: No AEA package found with author name 'valory', type 'skills', name 'registration_abci'

Changing the order manually works on the first run only, after which the aea-config.yaml is reformatted automatically. I tried making the config read-only, but then i got an other error regarding aea-config.yaml being read-only (this was obviously expected).

After doing so, I went on to change the naming of the elcollectooor_abci -> z_ellcollectooor_abci (this change is not, and I think should not be committed).

This isn't a good solution, since this also fails sometimes, with the same error as above. Which leaves me to believe that the skills are loaded in parallel, hence in some occasions the elcollectooor_abci is loaded before its dependencies.

I haven't tried running the agent programatically, nor assigning the elcollectooor_abci to a different author/vendor.

Is there a way to define dependencies between skills? I think this could be as simple as enforcing a sequential non-alphabetic loading of skills.

Resetting support

The agent service should be able to reset at any time, without losing any data.

Wrong buffer length

The buffer length in the abci connection gives a ShortBufferLengthError when the payload is bigger than 64KB.
My local tendermint configuration has the default settings, which is 1MB for the maximum tx size.
To reproduce the error:

Run test_abci:

git checkout bug/abci
cd test_abci
aea run

Run the break_abci.py script:

python break_abci.py

Logs from the test_abci:

Starting AEA 'test_abci' in 'async' mode...
[2022-04-16 20:31:18,250] [INFO] [test_abci] Entered in the 'dummy' round for period 0
[2022-04-16 20:31:18,250] [INFO] [test_abci] Start processing messages...
[2022-04-16 20:31:18,251] [INFO] [test_abci] Entered in the 'dummy' behaviour state
[2022-04-16 20:31:18,251] [INFO] [test_abci] Checking sync...
[2022-04-16 20:31:18,251] [INFO] [test_abci] Checking status
[2022-04-16 20:31:20,519] [ERROR] [test_abci] an error occurred while reading a message: ShortBufferLengthError: expected buffer of length 100008, got 65479. The message will be ignored.
[2022-04-16 20:31:20,519] [ERROR] [test_abci] an error occurred while reading a message: DecodeError: Error parsing message with type 'tendermint.abci.Request'. The message will be ignored.
[2022-04-16 20:31:20,564] [ERROR] [test_abci] an error occurred while reading a message: DecodeError: Error parsing message with type 'tendermint.abci.Request'. The message will be ignored.

Fractionalizing NFTs

Tokenomics Summary

To fund the El Collectooorr we can have an ERC20 token sale, I will refer to this token as EC, or ECs in the plural. The funds from the token sale would be used as the 'seed' investment for the El Collectooorr. After a given amount of ECs is sold, the El Collectooorr ABCI can be put to work.

Every time the El Collectooorr ABCI makes a purchase, that NFT is moved to the basket, which effectively means that the NFT is moved into the Token Vault. Each Token Vault can have one basket. Each basket can have 1 or more NFTs. The fractionalization happens in the vault, i.e. it's the vault that gets fractionalized. In the case where a vault gets auctioned and sold, we transfer the funds to the EC holders based on their weight, i.e. number of tokens they hold. Additionally, I suggest that a percentage of the funds from the auction be left for the El Collectooorr ABCI itself so that it continues to work without having more funding rounds from investors, we can refer to this as "commission". We can also commission from the transfer of ECs, although I am not sure how acceptable that would be from the EC holders.

A couple of ideas about selling the NFTs:
- Making an El Collectooorr Market where auctioning would be available to the public.
- Listing the NFTs on existing markets.
- Other ideas are more than welcome 😄

Components

On chain:

  • Basket: This is both an ERC721 and ERC721Receiver, it holds the NFTs.
  • Basket Factory: Used for creating new baskets.
  • Token Vault: The key component, that actually does the fractionalization of NFTs.
  • Token Vault Factory: Used to create Token Vaults.
  • Token Settings: This acts as the governance contract for the Token Vault.
  • EC Contract: Simple ERC20 contract used for the funding and later profit sharing.
  • Safe: Gnosis Safe Contract.
  • Safe Factory: Factory contract for Safes.
  • Artblocks & Friends (Not our responsibility)

Off chain:

  • El Collectooorr ABCI
  • (Possibly) El Collectooorr web app

TODO:

  • Extend the current implementation of the El Collectooorr ABCI with:
    • New rounds (checkout the TODO rounds comment).
    • A price setting algorithm for the purchased NFTs.
    • Other stuff that I am currently unaware of.

GnosisSafeContract get_raw_safe_transaction arguments mismatch

On transaction_settlement_abci you are calling get_raw_safe_transaction like this:

        contract_api_msg = yield from self.get_contract_api_response(
            performative=ContractApiMessage.Performative.GET_RAW_TRANSACTION,  # type: ignore
            contract_address=self.period_state.safe_contract_address,
            contract_id=str(GnosisSafeContract.contract_id),
            contract_callable="get_raw_safe_transaction",
            sender_address=self.context.agent_address,
            owners=tuple(self.period_state.participants),
            to_address=to_address,
            value=ether_value,
            data=data,
            safe_tx_gas=safe_tx_gas,
            signatures_by_owner={
                key: payload.signature
                for key, payload in self.period_state.participant_to_signature.items()
            },
            nonce=self.period_state.nonce,
            old_tip=self.period_state.max_priority_fee_per_gas,
        )

But nonce and old_tip are not defined in the contract method and cause the call to the contract to fail.
Removing those two args allows for calls to propagate to the contract.

I assume we could replace old_tip with max_priority_fee_per_gas, since thats defined in the contract. However, nonce is not, should that be removed?

Move tests into packages

Since v0.2.2 of open-autonomy tests inside packages are supported. Let's move the tests here too!

invalid signature on observation

The issue

In a nutshell, the observation fails since the transaction signature cannot be validated. Check the following comments and the sample output for more info on where and what fails.

class Transaction(ABC):
    # multiple lines omitted
    def verify(self, ledger_id: str) -> None:
        """
        Verify the signature is correct.

        :param ledger_id: the ledger id of the address
        :raises: SignatureNotValidError: if the signature is not valid.
        """
        payload_bytes = DictProtobufStructSerializer.encode(self.payload.json)
        addresses = LedgerApis.recover_message(
            identifier=ledger_id, message=payload_bytes, signature=self.signature
        ) # <- normally produces the address of the private key, on observation it produces a random address each time the aea is run 
        
        # self.payload.sender is OK
        if self.payload.sender not in addresses:
            raise SignatureNotValidError("signature not valid.") # <- This error is thrown

Reproducing the issue

Checkout demo branch:

git checkout issue/invalid_signature

Run a local fork

While on project root,
Build the hardhat image:

make build-fork-image

Run a ropsten fork on block number 11290000:

export BLOCK_NUMBER=11290000
make run-ropsten-fork-docker

Run the agent and tendermint

I prefer to run tendermint manually, so I can do a clean run everytime.

Run the agent:

pipenv shell
cd elcollectooor
aea -s run

Run tendermint:

rm -r .tendermint/ && tendermint init && tendermint node --abci grpc --proxy_app=tcp://127.0.0.1:26658 --rpc.laddr=tcp://127.0.0.1:26657 --p2p.laddr=tcp://0.0.0.0:26656 --p2p.seeds= --consensus.create_empty_blocks=true

Useful commands

If tendermint ever fails to exit successfully, I use the following commands to find & kill the tendermint process.

netstat -ltp | grep tendermint
kill -9 <enter_pid>

Resetting the fork:

docker kill ropsten-fork
docker rm ropsten-fork

On project root:

export BLOCK_NUMBER=11290000
make run-ropsten-fork-docker

Sample output

/home/ardian/.virtualenvs/agent-academy-1-ivkQXcJL/bin/python /home/ardian/.local/share/virtualenvs/agent-academy-1-ivkQXcJL/bin/aea -s run
[2022-01-24 23:59:05,665] [WARNING] [elcollectooor] Class SafeDeploymentRoundBehaviour of type behaviour found in skill module behaviours.py but not declared in the configuration file.
[2022-01-24 23:59:05,668] [WARNING] [elcollectooor] Class AgentRegistrationRoundBehaviour of type behaviour found in skill module behaviours.py but not declared in the configuration file.
[2022-01-24 23:59:05,673] [WARNING] [elcollectooor] Class TransactionSettlementRoundBehaviour of type behaviour found in skill module behaviours.py but not declared in the configuration file.
    _     _____     _    
   / \   | ____|   / \   
  / _ \  |  _|    / _ \  
 / ___ \ | |___  / ___ \ 
/_/   \_\|_____|/_/   \_\
                         
v1.3.0

Starting AEA 'elcollectooor' in 'async' mode...
[2022-01-24 23:59:05,910] [INFO] [elcollectooor] Starting gRPC server
[2022-01-24 23:59:05,917] [INFO] [elcollectooor] Entered in the 'registration_startup' round for period 0
[2022-01-24 23:59:05,917] [INFO] [elcollectooor] Start processing messages...
[2022-01-24 23:59:05,917] [INFO] [elcollectooor] Entered in the 'tendermint_healthcheck' behaviour state
[2022-01-24 23:59:05,922] [ERROR] [elcollectooor] Tendermint not running yet, trying again!
[2022-01-24 23:59:06,936] [ERROR] [elcollectooor] Tendermint not running yet, trying again!
[2022-01-24 23:59:07,951] [INFO] [elcollectooor] local-height = 0, remote-height=0
[2022-01-24 23:59:07,951] [INFO] [elcollectooor] local height == remote height; done
[2022-01-24 23:59:07,952] [INFO] [elcollectooor] 'tendermint_healthcheck' behaviour state is done
[2022-01-24 23:59:07,953] [INFO] [elcollectooor] Entered in the 'registration_startup' behaviour state
[2022-01-24 23:59:08,897] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:07.838817
[2022-01-24 23:59:08,897] [INFO] [elcollectooor] current AbciApp time: None
[2022-01-24 23:59:08,897] [INFO] [elcollectooor] no pending timeout, move time forward
[2022-01-24 23:59:09,049] [INFO] [elcollectooor] A2A transaction delivered!
[2022-01-24 23:59:09,907] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:08.893098
[2022-01-24 23:59:09,907] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:07.838817
[2022-01-24 23:59:09,908] [INFO] [elcollectooor] no pending timeout, move time forward
[2022-01-24 23:59:09,911] [INFO] [elcollectooor] 'registration_startup' round is done with event: Event.DONE
[2022-01-24 23:59:09,911] [INFO] [elcollectooor] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-01-24 23:59:38.893098
[2022-01-24 23:59:09,911] [INFO] [elcollectooor] Entered in the 'randomness_safe' round for period 0
[2022-01-24 23:59:09,912] [INFO] [elcollectooor] 'registration_startup' behaviour state is done
[2022-01-24 23:59:09,912] [INFO] [elcollectooor] Entered in the 'randomness_safe' behaviour state
[2022-01-24 23:59:09,912] [INFO] [elcollectooor] Retrieving DRAND values from api.
[2022-01-24 23:59:10,173] [INFO] [elcollectooor] Verifying DRAND values.
[2022-01-24 23:59:10,546] [INFO] [elcollectooor] DRAND check successful.
[2022-01-24 23:59:10,546] [INFO] [elcollectooor] Retrieved DRAND values: {'round': 1587804, 'randomness': '6785802d078ed5c53f90e1f46e325e50cf814e2b3677bed04868d8da50f884bf', 'signature': 'af21cfc88867a4eca525a13f47b39be48e78120f5c6fb20569d63a892ff01919ce93c7c4c8a6e9b67036de8d3f75c3721909f93cba2908292626aea512a62a324fb2f54877149cf842f170a9b9d707c6121d55e3ace4fc6d9016755444cc2d32'}.
[2022-01-24 23:59:10,917] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:09.903008
[2022-01-24 23:59:10,917] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:08.893098
[2022-01-24 23:59:10,929] [INFO] [elcollectooor] 'randomness_safe' round is done with event: Event.DONE
[2022-01-24 23:59:10,929] [INFO] [elcollectooor] scheduling timeout of 30.0 seconds for event Event.ROUND_TIMEOUT with deadline 2022-01-24 23:59:39.903008
[2022-01-24 23:59:10,929] [INFO] [elcollectooor] Entered in the 'select_keeper_safe' round for period 0
[2022-01-24 23:59:10,930] [INFO] [elcollectooor] 'randomness_safe' behaviour state is done
[2022-01-24 23:59:10,930] [INFO] [elcollectooor] Entered in the 'select_keeper_safe' behaviour state
[2022-01-24 23:59:10,930] [INFO] [elcollectooor] Selected a new keeper: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266.
[2022-01-24 23:59:11,926] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:10.912310
[2022-01-24 23:59:11,926] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:09.903008
[2022-01-24 23:59:11,939] [INFO] [elcollectooor] 'select_keeper_safe' round is done with event: Event.DONE
[2022-01-24 23:59:11,939] [INFO] [elcollectooor] scheduling timeout of 30.0 seconds for event Event.DEPLOY_TIMEOUT with deadline 2022-01-24 23:59:40.912310
[2022-01-24 23:59:11,939] [INFO] [elcollectooor] Entered in the 'deploy_safe' round for period 0
[2022-01-24 23:59:11,939] [INFO] [elcollectooor] 'select_keeper_safe' behaviour state is done
[2022-01-24 23:59:11,939] [INFO] [elcollectooor] Entered in the 'deploy_safe' behaviour state
[2022-01-24 23:59:11,939] [INFO] [elcollectooor] I am the designated sender, deploying the safe contract...
[2022-01-24 23:59:11,950] [INFO] Network 31337 - Sender 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 - Balance: 9999.999223Ξ
[2022-01-24 23:59:11,956] [INFO] Creating new Safe with owners=['0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266'] threshold=1 fallback-handler=0xf48f2B2d2a534e402487b3ee7C18c33Aec0Fe5e4 salt-nonce=89918403450481681153105711022333782024290697085436437536025926925047234230950
[2022-01-24 23:59:12,643] [INFO] [elcollectooor] sending transaction to ledger.
[2022-01-24 23:59:12,687] [INFO] [elcollectooor] sending transaction receipt request for tx_digest='0x99adcb5f9e8caf4c9aa249deb441132b532aece03146589b479a4c8996e98924'.
[2022-01-24 23:59:12,936] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:11.921487
[2022-01-24 23:59:12,936] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:10.912310
[2022-01-24 23:59:13,948] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:12.931391
[2022-01-24 23:59:13,949] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:11.921487
[2022-01-24 23:59:14,957] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:13.944122
[2022-01-24 23:59:14,957] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:12.931391
[2022-01-24 23:59:15,702] [INFO] [elcollectooor] Deployment tx digest: 0x99adcb5f9e8caf4c9aa249deb441132b532aece03146589b479a4c8996e98924
[2022-01-24 23:59:15,703] [INFO] [elcollectooor] Safe contract address: 0xf7a387C152C2858eAdB339Ba26fBCB525e837ABB
[2022-01-24 23:59:15,965] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:14.952973
[2022-01-24 23:59:15,966] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:13.944122
[2022-01-24 23:59:15,981] [INFO] [elcollectooor] 'deploy_safe' round is done with event: Event.DONE
[2022-01-24 23:59:15,981] [INFO] [elcollectooor] scheduling timeout of 30.0 seconds for event Event.VALIDATE_TIMEOUT with deadline 2022-01-24 23:59:44.952973
[2022-01-24 23:59:15,981] [INFO] [elcollectooor] Entered in the 'validate_safe' round for period 0
[2022-01-24 23:59:15,981] [INFO] [elcollectooor] 'deploy_safe' behaviour state is done
[2022-01-24 23:59:15,981] [INFO] [elcollectooor] Entered in the 'validate_safe' behaviour state
[2022-01-24 23:59:16,975] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:15.960866
[2022-01-24 23:59:16,975] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:14.952973
[2022-01-24 23:59:16,988] [INFO] [elcollectooor] 'validate_safe' round is done with event: Event.DONE
[2022-01-24 23:59:16,988] [INFO] [elcollectooor] scheduling timeout of 30 seconds for event Event.ROUND_TIMEOUT with deadline 2022-01-24 23:59:45.960866
[2022-01-24 23:59:16,988] [INFO] [elcollectooor] Entered in the 'observation' round for period 0
[2022-01-24 23:59:16,989] [INFO] [elcollectooor] 'validate_safe' behaviour state is done
[2022-01-24 23:59:16,989] [INFO] [elcollectooor] Entered in the 'observation' behaviour state
[2022-01-24 23:59:17,985] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:16.970513
[2022-01-24 23:59:17,985] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:15.960866
[2022-01-24 23:59:18,994] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:17.980167
[2022-01-24 23:59:18,994] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:16.970513
[2022-01-24 23:59:20,004] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:18.989964
[2022-01-24 23:59:20,004] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:17.980167
[2022-01-24 23:59:20,006] [INFO] [elcollectooor] Retrieved project id: 56.
[2022-01-24 23:59:20,026] [ERROR] [elcollectooor] SignatureNotValidError: signature not valid.
[2022-01-24 23:59:21,027] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:19.998988
[2022-01-24 23:59:21,027] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:18.989964
[2022-01-24 23:59:22,041] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:21.011990
[2022-01-24 23:59:22,041] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:19.998988
[2022-01-24 23:59:23,044] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:22.028774
[2022-01-24 23:59:23,044] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:21.011990
[2022-01-24 23:59:24,055] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:23.040032
[2022-01-24 23:59:24,055] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:22.028774
[2022-01-24 23:59:25,064] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:24.050259
[2022-01-24 23:59:25,064] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:23.040032
[2022-01-24 23:59:25,101] [ERROR] [elcollectooor] SignatureNotValidError: signature not valid.
[2022-01-24 23:59:26,081] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:25.059378
[2022-01-24 23:59:26,081] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:24.050259
[2022-01-24 23:59:27,089] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:26.073490
[2022-01-24 23:59:27,089] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:25.059378
[2022-01-24 23:59:28,115] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:27.084866
[2022-01-24 23:59:28,115] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:26.073490
[2022-01-24 23:59:29,116] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:28.099367
[2022-01-24 23:59:29,116] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:27.084866
[2022-01-24 23:59:30,128] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:29.111279
[2022-01-24 23:59:30,128] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:28.099367
[2022-01-24 23:59:30,150] [ERROR] [elcollectooor] SignatureNotValidError: signature not valid.
[2022-01-24 23:59:31,138] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:30.123094
[2022-01-24 23:59:31,138] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:29.111279
[2022-01-24 23:59:32,149] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:31.133751
[2022-01-24 23:59:32,149] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:30.123094
[2022-01-24 23:59:33,162] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:32.144358
[2022-01-24 23:59:33,162] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:31.133751
[2022-01-24 23:59:34,182] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:33.156506
[2022-01-24 23:59:34,182] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:32.144358
[2022-01-24 23:59:35,190] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:34.170527
[2022-01-24 23:59:35,190] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:33.156506
[2022-01-24 23:59:35,206] [ERROR] [elcollectooor] SignatureNotValidError: signature not valid.
[2022-01-24 23:59:36,196] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:35.182019
[2022-01-24 23:59:36,196] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:34.170527
[2022-01-24 23:59:37,205] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:36.191610
[2022-01-24 23:59:37,205] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:35.182019
[2022-01-24 23:59:38,230] [INFO] [elcollectooor] arrived block with timestamp: 2022-01-24 23:59:37.200811
[2022-01-24 23:59:38,231] [INFO] [elcollectooor] current AbciApp time: 2022-01-24 23:59:36.191610
 AEA 'elcollectooor' interrupted!
Stopping AEA 'elcollectooor' ...
[2022-01-24 23:59:38,947] [INFO] [elcollectooor] HTTP Client has shutdown on port: 8000.
AEA 'elcollectooor' stopped.

Process finished with exit code 0

"last timestamp is None" error when initial_round_cls has Event.ROUND_TIMEOUT defined

The working tests can be run with:

git pull
git checkout feature/app-chaining

Run the tests:

pytest tests/test_packages/test_skills/test_elcollectooor_abci/test_behaviours.py

To reproduce the issue, navigate to packages/valory/skills/elcollectooor_abci/rounds.py
Replace

class ElCollectooorBaseAbciApp(AbciApp[Event]):
    """The base logic of El Collectooor."""

    initial_round_cls: Type[AbstractRound] = ElCollectooorStartRound
    # the rest of the class is omitted.

with

class ElCollectooorBaseAbciApp(AbciApp[Event]):
    """The base logic of El Collectooor."""

    initial_round_cls: Type[AbstractRound] = ObservationRound
    # the rest of the class is omitted.

Sample error output:

________________________________________________________________________________ ERROR at setup of TestTransactionRoundBehaviour.test_retries_exceeded _________________________________________________________________________________

cls = <class 'tests.test_packages.test_skills.test_elcollectooor_abci.test_behaviours.TestTransactionRoundBehaviour'>, kwargs = {}, @py_assert1 = None, @py_assert3 = None, @py_assert5 = None, @py_assert8 = None, @py_assert7 = None

    @classmethod
    def setup(cls, **kwargs: Any) -> None:
        """Setup the test class."""
        # we need to store the current value of the meta-class attribute
        # _MetaPayload.transaction_type_to_payload_cls, and restore it
        # in the teardown function. We do a shallow copy so we avoid
        # modifying the old mapping during the execution of the tests.
        cls.old_tx_type_to_payload_cls = copy(
            _MetaPayload.transaction_type_to_payload_cls
        )
        _MetaPayload.transaction_type_to_payload_cls = {}
        super().setup()
        assert cls._skill.skill_context._agent_context is not None
        cls._skill.skill_context._agent_context.identity._default_address_key = (
            "ethereum"
        )
        cls._skill.skill_context._agent_context._default_ledger_id = "ethereum"
        cls.elcollectooor_abci_behaviour = cast(
            ElCollectooorAbciConsensusBehaviour,
            cls._skill.skill_context.behaviours.main,
        )
        cls.http_handler = cast(HttpHandler, cls._skill.skill_context.handlers.http)
        cls.signing_handler = cast(
            SigningHandler, cls._skill.skill_context.handlers.signing
        )
        cls.contract_handler = cast(
            ContractApiHandler, cls._skill.skill_context.handlers.contract_api
        )
        cls.ledger_handler = cast(
            LedgerApiHandler, cls._skill.skill_context.handlers.ledger_api
        )
    
        cls.elcollectooor_abci_behaviour.setup()
>       cls._skill.skill_context.state.setup()

tests/test_packages/test_skills/test_elcollectooor_abci/test_behaviours.py:136: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
packages/valory/skills/elcollectooor_abci/models.py:49: in setup
    super().setup()
packages/valory/skills/abstract_round_abci/models.py:84: in setup
    self.period.setup(
packages/valory/skills/abstract_round_abci/base.py:1717: in setup
    self._abci_app.setup()
packages/valory/skills/abstract_round_abci/base.py:1474: in setup
    self._schedule_round(self.initial_round_cls)
packages/valory/skills/abstract_round_abci/base.py:1511: in _schedule_round
    deadline = self.last_timestamp + datetime.timedelta(0, timeout)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <packages.valory.skills.elcollectooor_abci.rounds.ElCollectooorBaseAbciApp object at 0x7fe8e3cc1430>

    @property
    def last_timestamp(self) -> datetime.datetime:
        """Get last timestamp."""
        if self._last_timestamp is None:
>           raise ABCIAppInternalError("last timestamp is None")
E           packages.valory.skills.abstract_round_abci.base.ABCIAppInternalError: internal error: last timestamp is None

packages/valory/skills/abstract_round_abci/base.py:1469: ABCIAppInternalError

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.