FIO Chain Issue: Exception on some chain transactions

Discovery dateSeverityEstimated impactStatus
2024-07-12LOWMultiple accountsRESOLVED

Issue Description

The following bug has been observed on Mainnet and was introduced with FIO Contracts release 2.10.

In certain situations, the chain will not accept a properly formatted transaction and will return server error 500. Observed conditions required for the error condition to be triggered:

  • Account was never sent any FIO Tokens. If account receives tokens then sent them out and now has 0 balance, error will not be triggered.
  • The transaction can be paid for using bundled transactions, such as add_pub_address.
  • Transaction contains a TPID which is a proxy. If a valid TPID is supplied that is not a proxy, error will not be triggered.

Example server response

{
    code: 500,
    message: 'Internal Service Error - (fc)',
    error: {
      code: 3050003,
      name: 'eosio_assert_message_exception',
      what: 'eosio_assert_message assertion failure',
      details: [
  {
    message: 'assertion failure with message: unable to find key',
    file: 'wasm_interface.cpp',
    line_number: 1041,
    method: 'eosio_assert'
  },
  {
    message: 'pending console output: ',
    file: 'apply_context.cpp',
    line_number: 137,
    method: 'exec_one'
  }
]
    }
  },
  errorCode: 500,
  requestParams: {
    baseUrl: 'https://fio.blockpane.com/v1/',
    endPoint: 'chain/push_transaction',
    body: '{"signatures":["SIG_K1_K6yPFCzYeRG5RwDowYUh8iGsTrwDNdUY4dsW3uHodU3fFPevWRRUgsbmpdy89CxfkxZEjuTeqkuRdKoqS8rsu9ndjMqtJ8"],"compression":0,"packed_context_free_data":"","packed_trx":"5686916615401ad1b8180000000001003056372503a85b0000c6eaa664523201c0b95f5e11f9ee8700000000a8ed3232510b706d7561743140656467650103425443034254431e3432333432323334323334343233343233343233343233343233343233340000000000000000c0b95f5e11f9ee870c66696e616e6365406564676500"}',
    fetchOptions: undefined
  }
}

Impact of Issue

If an integrator is supplying a TPID which is registered as a proxy and the account never had any tokens every transaction attempting to utilize bundled transactions will fail.

Recommended Course of Action

Affected integrators are encouraged to remove TPID from all transactions by accounts which have a 0 balance.

Example request before change

{
  fio_address: 'myhandle@hodl',
  public_addresses: [
    {
      chain_code: 'BTC',
      token_code: 'BTC',
      public_address: '123456789123456789123456789123456789'
    }    
    ],
  max_fee: 0,
  tpid: 'tpid@hodl',
  actor: 'accountname'
}

Example request after change

{
  fio_address: 'myhandle@hodl',
  public_addresses: [
    {
      chain_code: 'BTC',
      token_code: 'BTC',
      public_address: '123456789123456789123456789123456789'
    }    
    ],
  max_fee: 0,
  tpid: '',
  actor: 'accountname'
}

Issue Resolution

This issue was resolved in FIO Chain Release 2.11.