Ejemplo n.º 1
0
        public string SponsoredFeeForAsset(PrivateKeyAccount account, Asset asset, decimal minimalFeeInAssets)
        {
            var tx = new SponsoredFeeTransaction(account.PublicKey, asset, minimalFeeInAssets);

            tx.Sign(account);
            return(Broadcast(tx));
        }
Ejemplo n.º 2
0
        public string BurnAsset(PrivateKeyAccount account, Asset asset, decimal amount)
        {
            var tx = new BurnTransaction(account.PublicKey, asset, amount).Sign(account);

            tx.Sign(account);
            return(Broadcast(tx));
        }
Ejemplo n.º 3
0
        public string CreateAlias(PrivateKeyAccount account, string alias, char scheme, long fee)
        {
            var tx = new AliasTransaction(account.PublicKey, alias, scheme);

            tx.Sign(account);
            return(Broadcast(tx));
        }
Ejemplo n.º 4
0
        public string Lease(PrivateKeyAccount sender, string recipient, decimal amount)
        {
            var tx = new LeaseTransaction(sender.PublicKey, recipient, amount);

            tx.Sign(sender);
            return(Broadcast(tx));
        }
Ejemplo n.º 5
0
        public string ReissueAsset(PrivateKeyAccount account, Asset asset, decimal quantity, bool reissuable)
        {
            var tx = new ReissueTransaction(account.PublicKey, asset, quantity, reissuable);

            tx.Sign(account);
            return(Broadcast(tx));
        }
Ejemplo n.º 6
0
        public string PlaceOrder(PrivateKeyAccount sender, OrderSide side,
                                 Asset amountAsset, Asset priceAsset, decimal price, decimal amount, DateTime expiration)
        {
            var order = MakeOrder(sender, MatcherKey, side, amountAsset, priceAsset, price, amount, expiration, 0.02m);

            return(Http.Post($"{_host}/matcher/orderbook", order));
        }
Ejemplo n.º 7
0
        public string PutData(PrivateKeyAccount account, DictionaryObject entries)
        {
            var tx = new DataTransaction(account.PublicKey, entries);

            tx.Sign(account);
            return(Broadcast(tx));
        }
Ejemplo n.º 8
0
        public string CancelLease(PrivateKeyAccount account, string transactionId)
        {
            var tx = new CancelLeasingTransaction(account.PublicKey, transactionId);

            tx.Sign(account);
            return(Broadcast(tx));
        }
Ejemplo n.º 9
0
        public string Transfer(PrivateKeyAccount sender, string recipient, Asset asset, decimal amount,
                               string message = "")
        {
            var tx = new TransferTransaction(sender.PublicKey, recipient, asset, amount, message);

            tx.Sign(sender);
            return(Broadcast(tx));
        }
Ejemplo n.º 10
0
        public string MassTransfer(PrivateKeyAccount sender, Asset asset, IEnumerable <MassTransferItem> transfers,
                                   string message = "")
        {
            var tx = new MassTransferTransaction(sender.PublicKey, asset, transfers, message);

            tx.Sign(sender);
            return(Broadcast(tx));
        }
Ejemplo n.º 11
0
        public string DeleteOrder(PrivateKeyAccount account,
                                  Asset amountAsset, Asset priceAsset, string orderId)
        {
            var request = MakeOrderCancelRequest(account, orderId);
            var url     = $"{_host}/matcher/orderbook/{amountAsset.Id}/{priceAsset.Id}/delete";

            return(Http.Post(url, request));
        }
Ejemplo n.º 12
0
        public Order[] GetOrders(PrivateKeyAccount account, Asset amountAsset, Asset priceAsset)
        {
            string path = $"{_host}/matcher/orderbook/{amountAsset.Id}/{priceAsset.Id}/publicKey/{account.PublicKey.ToBase58()}";

            var headers  = GetProtectionHeaders(account);
            var response = Http.GetObjectsWithHeaders(path, headers);

            return(response.Select(j => Order.CreateFromJson(j, amountAsset, priceAsset)).ToArray());
        }
Ejemplo n.º 13
0
        public Asset IssueAsset(PrivateKeyAccount account,
                                string name, string description, decimal quantity, byte decimals, bool reissuable)
        {
            var tx = new IssueTransaction(account.PublicKey, name, description, quantity, decimals, reissuable);

            tx.Sign(account);
            var response = Broadcast(tx);
            var assetId  = response.ParseJsonObject().GetString("id");

            return(new Asset(assetId, name, decimals));
        }
Ejemplo n.º 14
0
        private static NameValueCollection GetProtectionHeaders(PrivateKeyAccount account)
        {
            long timestamp = Utils.CurrentTimestamp();
            var  stream    = new MemoryStream(40);
            var  writer    = new BinaryWriter(stream);

            writer.Write(account.PublicKey);
            writer.WriteLong(timestamp);
            var signature = account.Sign(stream);

            return(new NameValueCollection
            {
                { "Timestamp", Convert.ToString(timestamp) },
                { "Signature", signature.ToBase58() }
            });
        }
Ejemplo n.º 15
0
        public static DictionaryObject MakeOrderCancelRequest(PrivateKeyAccount sender, string orderId)
        {
            var stream = new MemoryStream();
            var writer = new BinaryWriter(stream);

            writer.Write(sender.PublicKey);
            writer.Write(Base58.Decode(orderId));
            var signature = sender.Sign(stream);

            return(new DictionaryObject
            {
                { "sender", sender.PublicKey.ToBase58() },
                { "orderId", orderId },
                { "signature", signature.ToBase58() }
            });
        }
Ejemplo n.º 16
0
        public static DictionaryObject MakeOrder(PrivateKeyAccount sender, string matcherKey, OrderSide side,
                                                 Asset amountAsset, Asset priceAsset, decimal price, decimal amount, DateTime expiration, decimal matcherFee)
        {
            long timestamp = Utils.CurrentTimestamp();

            var stream = new MemoryStream();
            var writer = new BinaryWriter(stream);

            writer.Write(sender.PublicKey);
            writer.Write(Base58.Decode(matcherKey));
            writer.WriteAsset(amountAsset.Id);
            writer.WriteAsset(priceAsset.Id);
            writer.Write((byte)(side == OrderSide.Buy ? 0x0 : 0x1));
            writer.WriteLong(Asset.PriceToLong(amountAsset, priceAsset, price));
            writer.WriteLong(amountAsset.AmountToLong(amount));
            writer.WriteLong(timestamp);
            writer.WriteLong(expiration.ToLong());
            writer.WriteLong(Assets.TN.AmountToLong(matcherFee));
            var signature = sender.Sign(stream);

            return(new DictionaryObject {
                { "senderPublicKey", Base58.Encode(sender.PublicKey) },
                { "matcherPublicKey", matcherKey },
                { "assetPair", new DictionaryObject {
                      { "amountAsset", amountAsset.IdOrNull },
                      { "priceAsset", priceAsset.IdOrNull }
                  } },
                { "orderType", side.ToString().ToLower() },
                { "price", Asset.PriceToLong(amountAsset, priceAsset, price) },
                { "amount", amountAsset.AmountToLong(amount) },
                { "timestamp", timestamp },
                { "expiration", expiration.ToLong() },
                { "matcherFee", Assets.TN.AmountToLong(matcherFee) },
                { "signature", signature.ToBase58() }
            });
        }
Ejemplo n.º 17
0
 public static T Sign <T>(this T transaction, PrivateKeyAccount account, int proofIndex = 0) where T : Transaction
 {
     transaction.Proofs[proofIndex] = account.Sign(transaction.GetBody());
     return(transaction);
 }