Beispiel #1
0
        public void EditCoin(int CoinId, int newCount, bool DoBlock) //Изменение блокировки и кол-ва монет
        {
            Coin coin = Repos.GetCoin(CoinId);

            if (coin != null)
            {
                coin.Count = newCount;
                coin.Block = DoBlock;
                Repos.EditCoin(coin);
            }
        }
Beispiel #2
0
        private async Task <string> DetermineBlockChain(Request request)
        {
            try
            {
                var asset1 = request.Parameters.GetDefault <string>(CommandsKeys.Asset) ?? request.Parameters.GetDefault <string>(CommandsKeys.Asset1);
                var asset2 = request.Parameters.GetDefault <string>(CommandsKeys.Asset2);

                ICoin asset1FromDb = await _coinRepository.GetCoin(asset1);

                ICoin asset2FromDb = null;
                if (!string.IsNullOrWhiteSpace(asset2))
                {
                    asset2FromDb = await _coinRepository.GetCoin(asset2);
                }

                var blockchain1 = asset1FromDb.Blockchain.ToLower();
                var blockchain2 = asset2FromDb?.Blockchain?.ToLower();

                if (blockchain1 == Constants.EthereumBlockchain)
                {
                    if (!string.IsNullOrWhiteSpace(blockchain2) && blockchain2 != Constants.EthereumBlockchain)
                    {
                        ThrowBadBlockchain(request.Action, asset1, asset2);
                    }

                    return(Constants.EthereumBlockchain);
                }
                if (blockchain1 == Constants.BitcoinBlockchain)
                {
                    if (!string.IsNullOrWhiteSpace(blockchain2) && blockchain2 != Constants.BitcoinBlockchain)
                    {
                        ThrowBadBlockchain(request.Action, asset1, asset2);
                    }

                    return(Constants.BitcoinBlockchain);
                }

                ThrowBadBlockchain(request.Action, asset1, asset2);
            }
            catch (BackendException e)
            {
                await _logger.WriteError("RouteService", "DetermineBlockChain", "", e);

                //TODO: send email if blockchain is not supported
            }

            return(null);
        }
Beispiel #3
0
        public async Task <string> CashinOverTransferContract(Guid id, string coin, string receiver, decimal amount)
        {
            var coinDb = await _coinRepository.GetCoin(coin);

            if (!coinDb.BlockchainDepositEnabled)
            {
                throw new ClientSideException(ExceptionType.WrongParams, "Coin must be payable");
            }
            var contract = _web3.Eth.GetContract(_settings.TokenTransferContract.Abi, _settings.TokenTransferContract.Address);
            var cashin   = contract.GetFunction("cashin");

            var blockchainAmount = amount.ToBlockchainAmount(coinDb.Multiplier);
            var convertedId      = EthUtils.GuidToBigInteger(id);
            var tr = await cashin.SendTransactionAsync(_settings.EthereumMainAccount, new HexBigInteger(Constants.GasForCoinTransaction),
                                                       new HexBigInteger(0), convertedId, coinDb.AdapterAddress, receiver, blockchainAmount, Constants.GasForCoinTransaction, new byte[0]);

            return(tr);
        }
Beispiel #4
0
        public async Task <ICoin> GetById(string id)
        {
            var coin = await _coinRepository.GetCoin(id);

            return(coin);
        }