Exemplo n.º 1
0
        /// <summary>
        /// Transfer coins from DC hot wallet to users address
        /// </summary>
        /// <param name="amount"></param>
        /// <param name="cardId">Users DC Card</param>
        /// <returns></returns>
        public String TransferCoinsToBuyer(String cardId, Decimal amount)
        {
            if (amount > 0)
            {
                if (!String.IsNullOrEmpty(cardId))
                {
                    using (DC.Data.DiamondCircle_dbEntities db = new Data.DiamondCircle_dbEntities())
                    {
                        DC.Data.Card card = db.Cards.First(c => c.CardId == cardId);

                        if (card != null)
                        {
                            Providers.IWallet wallet = Helpers.Factory.GetWallet();

                            String txn = wallet.Send(card.PublicKey, amount);
                            return(txn);
                        }
                        else
                        {
                            throw new Exception(String.Format("No card found with card id {0}", cardId));
                        }
                    }
                }
                else
                {
                    throw new ArgumentException("Invalid bitcoin address.");
                }
            }
            else
            {
                throw new ArgumentException("Amount must be greater than zero.");
            }
        }
Exemplo n.º 2
0
        public String ReceiveCoins(String encryptedPrivateKey, String cardId, String destinationAddress, Decimal amount)
        {
            if (!String.IsNullOrEmpty(cardId))
            {
                using (DC.Data.DiamondCircle_dbEntities db = new Data.DiamondCircle_dbEntities())
                {
                    DC.Data.Card card = db.Cards.First(c => c.CardId == cardId);

                    if (card != null)
                    {
                        Byte[] encryptedPrivateKeyAsBytes = Convert.FromBase64String(encryptedPrivateKey);
                        Byte[] password = Convert.FromBase64String(card.Password);
                        String wif      = DC.Common.Security.DecryptStringFromBytes_Aes(encryptedPrivateKeyAsBytes, password);

                        return(SignAndTransfer(wif, destinationAddress, amount));
                    }
                    else
                    {
                        throw new Exception(String.Format("No card found with card id {0}", cardId));
                    }
                }
            }
            else
            {
                throw new ArgumentOutOfRangeException("Card id must not be null.");
            }
        }