public Optional<TransactionReceipt> getTransactionReceipt() {
        return Optional.ofNullable(transactionReceipt);
    }
@Test
    public void testTransactionFailedWithRevertReason() throws Exception {
        TransactionReceipt transactionReceipt = createFailedTransactionReceipt();
        prepareCall(OWNER_REVERT_MSG_HASH);

        TransactionException thrown =
                assertThrows(
                        TransactionException.class,
                        () -> {
                            prepareTransaction(transactionReceipt);

                            contract.performTransaction(
                                            new Address(BigInteger.TEN),
                                            new Uint256(BigInteger.ONE))
                                    .send();
                        });

        assertEquals(
                String.format(
                        "Transaction %s has failed with status: %s. Gas used: 1. Revert reason: '%s'.",
                        TRANSACTION_HASH, TXN_FAIL_STATUS, OWNER_REVERT_MSG_STR),
                thrown.getMessage());
        assertEquals(transactionReceipt, thrown.getTransactionReceipt().get());
    }