Exemple #1
0
        private IList <Asset> GetAssetList(ProgramOptions options)
        {
            var assetList = new List <Asset>();

            if (options.Mode == Mode.All)
            {
                assetList = _assetService.GetAllAssets().Result.AssetList;
            }
            else if (options.Mode == Mode.Account)
            {
                _transfers = _assetService.GetAssetTransfers(AssetIdOrAccountId.ByAccountId(options.Id.ToString()), includeAssetInfo: false).Result.Transfers;
                _trades    = _assetService.GetTrades(AssetIdOrAccountId.ByAccountId(options.Id.ToString()), includeAssetInfo: false).Result.Trades;

                var assetIds = _transfers.Select(transfer => transfer.AssetId).Union(_trades.Select(trade => trade.AssetId)).Distinct();

                assetList = _assetService.GetAssets(assetIds).Result.AssetList;
            }
            else if (options.Mode == Mode.Asset)
            {
                assetList = new List <Asset> {
                    _assetService.GetAsset(options.Id).Result
                };
            }
            return(assetList);
        }
Exemple #2
0
        private IEnumerable <AssetOwner> CalculateOwnership(int height)
        {
            var owners = new Dictionary <string, long> {
                { _asset.AccountRs, _asset.QuantityQnt }
            };
            var index = 0;

            while (index < _asset.NumberOfTrades)
            {
                var getTradesResult = _assetService.GetTrades(AssetIdOrAccountId.ByAssetId(_asset.AssetId), index, index + 99, includeAssetInfo: false).Result;
                foreach (var trade in getTradesResult.Trades.Where(t => t.Height <= height))
                {
                    UpdateOwnership(owners, trade.BuyerRs, trade.SellerRs, trade.QuantityQnt);
                }
                index += 100;
            }
            index = 0;
            while (index < _asset.NumberOfTransfers)
            {
                var getTransfersResult = _assetService.GetAssetTransfers(AssetIdOrAccountId.ByAssetId(_asset.AssetId), index, index + 99, includeAssetInfo: false).Result;
                foreach (var transfer in getTransfersResult.Transfers.Where(t => t.Height <= height))
                {
                    UpdateOwnership(owners, transfer.RecipientRs, transfer.SenderRs, transfer.QuantityQnt);
                }
                index += 100;
            }
            return(owners.Where(o => o.Value != 0).Select(o => new AssetOwner(o.Key, o.Value)));
        }
Exemple #3
0
        private static void GetAllTrades()
        {
            foreach (var asset in Assets)
            {
                var trades = new List <AssetTrade>();
                AssetTrades.Add(asset.AssetId, trades);

                var       index = 0;
                int       replyCount;
                const int increase = 100;
                do
                {
                    var tradesReply = AssetExchangeService.GetTrades(AssetIdOrAccountId.ByAssetId(asset.AssetId), index,
                                                                     index + increase - 1, includeAssetInfo: false).Result;
                    trades.AddRange(tradesReply.Trades);

                    foreach (var assetTrade in tradesReply.Trades)
                    {
                        AssetTradeCount[assetTrade.Buyer]  = GetValueOrDefault(AssetTradeCount, assetTrade.Buyer) + 1;
                        AssetTradeCount[assetTrade.Seller] = GetValueOrDefault(AssetTradeCount, assetTrade.Seller) + 1;
                    }
                    replyCount = tradesReply.Trades.Count;
                    index     += increase;
                } while (replyCount == increase);
            }
        }
Exemple #4
0
        private static void GetAllTransfers()
        {
            foreach (var asset in Assets)
            {
                var transfers = new List <AssetTransfer>();
                AssetTransfers[asset.AssetId] = transfers;

                var       index = 0;
                int       replyCount;
                const int increase = 100;
                do
                {
                    var transfersReply = AssetExchangeService.GetAssetTransfers(AssetIdOrAccountId.ByAssetId(asset.AssetId), index,
                                                                                index + increase - 1, includeAssetInfo: false).Result;
                    transfers.AddRange(transfersReply.Transfers);

                    foreach (var assetTransfer in transfersReply.Transfers)
                    {
                        AssetTransferCount[assetTransfer.SenderId]    = GetValueOrDefault(AssetTransferCount, assetTransfer.SenderId) + 1;
                        AssetTransferCount[assetTransfer.RecipientId] = GetValueOrDefault(AssetTransferCount, assetTransfer.RecipientId) + 1;
                    }
                    replyCount = transfersReply.Transfers.Count;
                    index     += increase;
                } while (replyCount == increase);
            }
        }
Exemple #5
0
        private void TestGetAssetDeletes()
        {
            using (Logger = new TestsessionLogger(_logger))
            {
                var result = _service.GetAssetDeletes(AssetIdOrAccountId.ByAssetId(TestSettings.ExistingAssetId)).Result;

                var txTime  = new DateTime(2015, 12, 26, 16, 3, 15);
                var deleted = result.Deletes.Single(d => d.AssetDeleteId == 14523372185703177675);
                AssertEquals(TestSettings.Account1.AccountId, deleted.AccountId, nameof(deleted.AccountId));
                AssertEquals(TestSettings.Account1.AccountRs, deleted.AccountRs, nameof(deleted.AccountRs));
                AssertEquals(TestSettings.ExistingAssetId, deleted.AssetId, nameof(deleted.AssetId));
                AssertEquals(512164, deleted.Height, nameof(deleted.Height));
                AssertEquals(1, deleted.QuantityQnt, nameof(deleted.QuantityQnt));
                AssertEquals(txTime.Ticks, deleted.Timestamp.Ticks, nameof(deleted.Timestamp));
            }
        }
Exemple #6
0
        private static IList <AssetTransfer> GetAssetTransfers(Asset asset)
        {
            var       index     = 0;
            const int count     = 100;
            var       hasMore   = true;
            var       transfers = new List <AssetTransfer>();

            while (hasMore)
            {
                var transfersReply =
                    _service.GetAssetTransfers(AssetIdOrAccountId.ByAssetId(asset.AssetId), index, index + count - 1,
                                               includeAssetInfo: false).Result;
                transfers.AddRange(transfersReply.Transfers);

                index  += count;
                hasMore = transfersReply.Transfers.Count == count;
            }
            return(transfers);
        }