hyperledger-firefly / hyperledger-firefly/firefly

bug: Seeing multiple blockchain transaction confirmed events for a single transaction

Open
#1,614 1 comment 0 reactions 0 assignees View on GitHub
bug
Dominant language
Go
Stars
602
Forks
246
Avg merge
18h 47m
Merged PRs (30d)
6

Description

### What happened?

I have a FireFly namespace setup with a token connector and evmconnect. I submitted a blockchain invoke operation that resulted in a transaction to EVMConnect. In the meantime, I have FireFly and the Token Connector connected each through their own web socket to EVMConnect on a separate Event Stream.

Once EVMConnect confirms that the transaction has been submitted correctly it will submitted an event on the event stream to all connected sockets see https://github.com/hyperledger/firefly-transaction-manager/blob/b66a96a45b3b66d17d9aa913e5d2584c6da1da42/pkg/fftm/transaction_events_handler.go#L94

Thus FireFly and the Token Connector both receive a blockchain transaction submitted event, the token connector forwards that event to FireFly and you end up with two events on the transaction.

This did not happen every single time! Sometimes I only got one event, it might be related to the best effort of TX confirmation events in the web socket as per the comment in the code linked.

### What did you expect to happen?

I would expect to only see one confirmation but based on this background that one Transaction object could have multiple blockchain transactions it could make sense to see multiple events (but not in the case of one blockchain tx):

> Currently in FireFly there are two related objects which represent an attempt to perform a blockchain transaction:
>
> - The FireFly Transaction object - one of these is created for each high-level type of action being performed, and there could be zero, one or (in the future) more than one blockchain transaction associated with this.
> - The Blockchain Operation object - the ID of this is used when calling EthConnect/EVMConnect. This is a re-submittable item, and a new ID is generated if a user chooses to submit it again.

### How can we reproduce it (as minimally and precisely as possible)?

Setup a FireFly stack with EVMConnect and a Token Connector. Submit a transaction to any smart contract and look at the transaction object to see the blockchain events associated with it.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.