public async Task CompleteTransfer(TransferContractUserAssignment assignment)
        {
            ICoin coinAdapter = await _coinRepository.GetCoinByAddress(assignment.CoinAdapterAddress);

            if (coinAdapter == null)
            {
                throw new Exception($"CoinAdapterAddress {assignment.CoinAdapterAddress} does not exis");
            }

            string coinAbi;

            if (coinAdapter.ContainsEth)
            {
                coinAbi = _settings.EthAdapterContract.Abi;
            }
            else
            {
                coinAbi = _settings.TokenAdapterContract.Abi;
            }

            var ethereumContract = _web3.Eth.GetContract(coinAbi, assignment.CoinAdapterAddress);
            var function         = ethereumContract.GetFunction("setTransferAddressUser");
            //function setTransferAddressUser(address userAddress, address transferAddress) onlyowner{

            string transactionHash =
                await function.SendTransactionAsync(_settings.EthereumMainAccount,
                                                    assignment.UserAddress, assignment.TransferContractAddress);

            var transferContract = await _transferContractRepository.GetAsync(assignment.TransferContractAddress);

            transferContract.AssignmentHash = transactionHash;

            await _transferContractRepository.SaveAsync(transferContract);
        }
        public async Task PushContract(TransferContractUserAssignment transferContract)
        {
            string transferContractSerialized = Newtonsoft.Json.JsonConvert.SerializeObject(transferContract);

            await _queue.PutRawMessageAsync(transferContractSerialized);
        }