Beispiel #1
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)));
        }
Beispiel #2
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);
        }
Beispiel #3
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);
            }
        }