Reconciling balances: does the tx status have to be 'success'?

If I make a contract call transaction, and it succeeds (with a status of “success”), rosetta-cli picks up on that and subtracts the fee from its computed balance for my address. If the status is something else, it doesn’t seem to do that, and I end up with a reconciliation error:

Missing balance-changing operation detected for ST3BGS3XT2613ZQBQHG9R4G2FRHWRF8XBMGT8J920 computed: 1000000000STX live: 999999220STX

The address received 500000000 twice, and then made three failed contract calls, costing it 260 each time.

:wave: @fariedn

The allowed Operation.Status and the success of each Operation.Status is defined by each Rosetta implementation in its /network/options response (see operation_statuses):

When a status is considered successful, the Operation it applies to affects balance. The reconciler loop in rosetta-cli checks to make sure the balance computed in each block from all Operations matches the balance returned by /account/balance. The error you are seeing is a result of this discrepancy (the balance changed without a corresponding operation).

If you want to change which statuses are allowed (i.e. doesn’t have to be success) or are considered success, you should change this section of your code: