コード例 #1
0
        public async Task Deposit(long amount, ConstellationInfo.Asset asset, params KeyPair[] extraSigners)
        {
            var tx = await TransactionHelper.GetDepositTx(keyPair, constellation, Amount.FromXdr(amount), asset);

            tx.Sign(keyPair);
            foreach (var signer in extraSigners)
            {
                tx.Sign(signer);
            }
            await tx.Submit(constellation);
        }
コード例 #2
0
        public async Task <MessageEnvelope> MakePayment(KeyPair destination, long amount, ConstellationInfo.Asset asset, bool waitForFinalize = true)
        {
            var paymentMessage = new PaymentRequest {
                Amount = amount, Destination = destination, Asset = asset.Id
            };
            var response = (CentaurusResponse)await connection.SendMessage(paymentMessage.CreateEnvelope());

            var result = await(waitForFinalize ? response.ResponseTask : response.AcknowledgmentTask);

            return(result);
        }
コード例 #3
0
        public async Task <MessageEnvelope> CreateOrder(long amount, double price, OrderSide side, ConstellationInfo.Asset asset, bool waitForFinalize = true)
        {
            var order = new OrderRequest {
                Amount = amount, Price = price, Side = side, Asset = asset.Id
            };

            var response = (CentaurusResponse)await connection.SendMessage(order.CreateEnvelope());

            var result = await(waitForFinalize ? response.ResponseTask : response.AcknowledgmentTask);

            return(result);
        }
コード例 #4
0
        public async Task <MessageEnvelope> Withdrawal(KeyPair destination, string amount, ConstellationInfo.Asset asset, bool waitForFinalize = true)
        {
            var paymentMessage = new WithdrawalRequest();
            var tx             = await TransactionHelper.GetWithdrawalTx(keyPair, constellation, destination, amount, asset);

            paymentMessage.TransactionXdr = tx.ToArray();

            var response = (CentaurusResponse)await connection.SendMessage(paymentMessage.CreateEnvelope());

            var result          = await(waitForFinalize ? response.ResponseTask : response.AcknowledgmentTask);
            var txResultMessage = result.Message as ITransactionResultMessage;

            if (txResultMessage is null)
            {
                throw new Exception($"Unexpected result type '{result.Message.MessageType}'");
            }

            tx.Sign(keyPair);
            foreach (var signature in txResultMessage.TxSignatures)
            {
                tx.Signatures.Add(signature.ToDecoratedSignature());
            }

            var submitResult = await tx.Submit(constellation);

            if (!submitResult.IsSuccess())
            {
                logger.Error($"Submit withdrawal failed. Result xdr: {submitResult.ResultXdr}");
            }
            return(result);
        }
コード例 #5
0
        public static async Task <Transaction> GetDepositTx(KeyPair sourceAccount, ConstellationInfo constellation, string amount, ConstellationInfo.Asset asset)
        {
            using (var server = constellation.StellarNetwork.GetServer())
            {
                var txBuilder = await GetTxBuilder(server, sourceAccount);

                txBuilder.AddOperation(new PaymentOperation.Builder((KeyPair)constellation.VaultPubKey, asset.StellarAsset, amount).Build());
                var tx = txBuilder.Build();
                return(tx);
            }
        }
コード例 #6
0
        public static async Task <Transaction> GetWithdrawalTx(KeyPair sourceAccount, ConstellationInfo constellation, KeyPair destination, string amount, ConstellationInfo.Asset asset)
        {
            using (var server = constellation.StellarNetwork.GetServer())
            {
                var txBuilder = await GetTxBuilder(server, sourceAccount);

                if ((await server.GetAccountData(destination.AccountId)) == null)
                {
                    throw new Exception($"{destination.AccountId} is not a part of Stellar Network.");
                }

                txBuilder.AddOperation(new PaymentOperation.Builder(destination, asset.StellarAsset, amount).SetSourceAccount(KeyPair.FromAccountId(constellation.Vault)).Build());
                txBuilder.AddTimeBounds(new stellar_dotnet_sdk.TimeBounds(maxTime: DateTimeOffset.UtcNow.AddSeconds(60)));
                var tx = txBuilder.Build();
                return(tx);
            }
        }