Interface TransactionReceivedInBlockListener

  • All Known Implementing Classes:
    NativeBlockChainListener, Wallet

    public interface TransactionReceivedInBlockListener
    Listener interface for when we receive a new block that contains a relevant transaction.
    • Method Detail

      • receiveFromBlock

        void receiveFromBlock​(Transaction tx,
                              StoredBlock block,
                              AbstractBlockChain.NewBlockType blockType,
                              int relativityOffset)
                       throws VerificationException

        Called by the BlockChain when we receive a new block that contains a relevant transaction.

        A transaction may be received multiple times if is included into blocks in parallel chains. The blockType parameter describes whether the containing block is on the main/best chain or whether it's on a presently inactive side chain.

        The relativityOffset parameter is an arbitrary number used to establish an ordering between transactions within the same block. In the case where full blocks are being downloaded, it is simply the index of the transaction within that block. When Bloom filtering is in use, we don't find out the exact offset into a block that a transaction occurred at, so the relativity count is not reflective of anything in an absolute sense but rather exists only to order the transaction relative to the others.

        Throws:
        VerificationException
      • notifyTransactionIsInBlock

        boolean notifyTransactionIsInBlock​(Sha256Hash txHash,
                                           StoredBlock block,
                                           AbstractBlockChain.NewBlockType blockType,
                                           int relativityOffset)
                                    throws VerificationException

        Called by the BlockChain when we receive a new FilteredBlock that contains the given transaction hash in its merkle tree.

        A transaction may be received multiple times if is included into blocks in parallel chains. The blockType parameter describes whether the containing block is on the main/best chain or whether it's on a presently inactive side chain.

        The relativityOffset parameter in this case is an arbitrary (meaningless) number, that is useful only when compared to the relativity count of another transaction received inside the same block. It is used to establish an ordering of transactions relative to one another.

        This method should return false if the given tx hash isn't known about, e.g. because the the transaction was a Bloom false positive. If it was known about and stored, it should return true. The caller may need to know this to calculate the effective FP rate.

        Returns:
        whether the transaction is known about i.e. was considered relevant previously.
        Throws:
        VerificationException