private async Task <NonFungibleTokenComputedTable> CreateNewSmartContract(string address)
    {
        var contractCreationTransaction = await mongoDb.CirrusContractTable
                                          .AsQueryable()
                                          .Where(_ => _.NewContractAddress == address)
                                          .SingleOrDefaultAsync();

        if (contractCreationTransaction is null)
        {
            throw new ArgumentNullException(nameof(contractCreationTransaction));
        }

        var builder = logReaderFactory.GetSmartContractBuilder(contractCreationTransaction.ContractCodeType);

        var contract = builder.BuildSmartContract(contractCreationTransaction);

        await SaveTheContractAsync(address, contract);

        return(contract);
    }