Пример #1
0
 public void SetCurrentTournament(SpaceTypeId tournament)
 {
     if (IsTournamentExist(tournament))
     {
         currentTournament = myTournaments[tournament];
     }
 }
Пример #2
0
        public AssetData(JObject value)
        {
            var token = value.Root;

            Amount  = value.TryGetValue(AMOUNT_FIELD_KEY, out token) ? token.ToObject <long>() : 0;
            AssetId = value.TryGetValue(ASSET_ID_FIELD_KEY, out token) ? token.ToObject <SpaceTypeId>() : SpaceTypeId.EMPTY;
        }
Пример #3
0
 public static bool IsExist(SpaceTypeId spaceTypeId)
 {
     lock (rootLocler)
     {
         return(root.ContainsKey(spaceTypeId.SpaceType) && root[spaceTypeId.SpaceType].ContainsKey(spaceTypeId));
     }
 }
        public static IPromise <TournamentCreateOperationData> GenerateCreateTournamentOperation(CreateTournamentData data)
        {
            Func <AssetObject, IPromise <TournamentCreateOperationData> > GenerateOperation = assetObject => Promise <TournamentCreateOperationData> .Resolved(new TournamentCreateOperationData {
                Fee     = new AssetData(0L, assetObject.Id),
                Creator = data.account,
                Options = new TournamentOptionsData {
                    RegistrationDeadline = data.registrationDeadline,
                    NumberOfPlayers      = data.numberOfPlayers,
                    BuyIn        = new AssetData(( long )(data.buyInAmount * Math.Pow(10, assetObject.Precision)), assetObject.Id),
                    Whitelist    = data.whitelist.OrEmpty(),
                    StartTime    = data.startTime,
                    StartDelay   = data.startDelay,
                    RoundDelay   = data.roundDelay,
                    NumberOfWins = data.numberOfWins,
                    Meta         = new CustomData(),
                    GameOptions  = new RockPaperScissorsGameOptionsData {
                        InsuranceEnabled  = data.insuranceEnabled,
                        TimePerCommitMove = data.timePerCommitMove,
                        TimePerRevealMove = data.timePerRevealMove
                    }
                }
            });

            var asset = SpaceTypeId.CreateOne(SpaceType.Asset, data.buyInAssetId);

            return(Repository.GetInPromise(asset, () => ApiManager.Instance.Database.GetAsset(asset.Id)).Then(GenerateOperation));
        }
Пример #5
0
        // Typically this is called automatically just prior to signing. Once finalized this transaction can not be changed.
        private IPromise Finalize()
        {
            if (IsFinalized)
            {
                return(Promise.Rejected(new InvalidOperationException("Finalize... Already finalized")));
            }
            var dynamicGlobalProperties = SpaceTypeId.CreateOne(SpaceType.DynamicGlobalProperties);

            return(Repository.GetInPromise(dynamicGlobalProperties, () => EchoApiManager.Instance.Database.GetObject <DynamicGlobalPropertiesObject>(dynamicGlobalProperties)).Then(FinalizeInPromise));
        }
Пример #6
0
 void Init()
 {
     ApiManager.Instance.Database.GetFullAccount(SelectUpdater(), false).Then(fullAccount => {
         if (!fullAccount.IsNull())
         {
             account     = fullAccount.FullAccount.Account.Id;
             initialized = work = true;
         }
     });
 }
Пример #7
0
    public IPromise <string> QueryContract(uint contractId, string bytecode, uint feeAssetId = 0, long amount = 0)
    {
        if (!Authorization.IsAuthorized)
        {
            return(Promise <string> .Rejected(new InvalidOperationException("Isn't Authorized!")));
        }
        var value = new AssetData(amount, SpaceTypeId.CreateOne(SpaceType.Asset, feeAssetId));

        return(Database.CallContractNoChangingState(contractId, Authorization.Current.UserNameData.Value.Account.Id.ToUintId, value, bytecode));
    }
Пример #8
0
    public void SetUp(TournamentObject tournament)
    {
        ApiManager.Instance.Database
        .GetAccountBalances(AuthorizationManager.Instance.UserData.FullAccount.Account.Id.Id, Array.ConvertAll(AuthorizationManager.Instance.UserData.FullAccount.Balances,
                                                                                                               balance => balance.AssetType.Id))
        .Then(accountBalances => {
            AssetData asset = null;
            foreach (var balance in accountBalances)
            {
                if (balance.Asset.Equals(tournament.Options.BuyIn.Asset))
                {
                    asset = balance;
                }
            }
            var feeAsset = SpaceTypeId.CreateOne(SpaceType.GlobalProperties);

            Repository.GetInPromise <GlobalPropertiesObject>(feeAsset)
            .Then(result => {
                TournamentJoinOperationFeeParametersData myFee = null;
                foreach (var fee in result.Parameters.CurrentFees.Parameters)
                {
                    if (fee != null && fee.Type == ChainTypes.FeeParameters.TournamentJoinOperation)
                    {
                        myFee = fee as TournamentJoinOperationFeeParametersData;
                    }
                }
                currentAccountBalanceObject = asset;
                currentFee = (long)myFee.Fee;

                Repository.GetInPromise <AssetObject>(asset.Asset)
                .Then(assetObject => {
                    buyinText.text = tournament.Options.BuyIn.Amount / Math.Pow(10, assetObject.Precision) + assetObject.Symbol;
                    feeText.text   = myFee.Fee / Math.Pow(10, assetObject.Precision) + assetObject.Symbol;

                    ApiManager.Instance.Database.GetAccount(tournament.Creator.Id)
                    .Then(creator => {
                        creatorNameText.text          = Utils.GetFormatedString(creator.Name);
                        var data                      = new JoinToTournamentData();
                        data.tournament               = tournament;
                        data.account                  = AuthorizationManager.Instance.UserData.FullAccount.Account.Id;
                        currentData                   = data;
                        gameTitleText.text            = "ROCK, PAPER, SCISSORS";
                        numberOfPlayersText.text      = data.tournament.Options.NumberOfPlayers.ToString();
                        winsAmountText.text           = data.tournament.Options.NumberOfWins.ToString();
                        registrationDeadlineText.text = data.tournament.Options.RegistrationDeadline.ToString("MMMM dd, yyyy hh:mmtt (z)").ToUpper();
                        Show();
                    });
                });
            });
        });
    }
Пример #9
0
    void CheckNewVersion()
    {
        var fromId = lastOperationHistory.Id;

        ApiManager.Instance.History.GetAccountHistory(account.Id, fromId, 100, 0).Then(operations => {
            if (!operations.IsNullOrEmpty())
            {
                Array.Sort(operations, OperationHistoryObject.Compare);
                var currentVersion = new VersionInfo(CurrentVersion);
                var maxVersion     = currentVersion;
                for (var i = 0; i < operations.Length; i++)
                {
                    var operationData = operations[i].Operation;
                    if (operationData.Type.Equals(ChainTypes.Operation.Transfer))
                    {
                        var memo = (operationData as TransferOperationData).Memo;
                        if (!memo.IsNull() && !memo.Message.IsNullOrEmpty())
                        {
                            try {
                                var token = JToken.Parse(Tool.FromHex2Chars(memo.Message));
                                if (token.Type.Equals(JTokenType.Object))
                                {
                                    var values = token.ToObject <JObject>();
                                    if (VersionInfo.IsInstance(values))
                                    {
                                        var versionInfo = values.ToObject <VersionInfo>();
                                        if (versionInfo > maxVersion)
                                        {
                                            maxVersion = versionInfo;
                                        }
                                    }
                                }
                            } catch {
                                continue;
                            }
                        }
                    }
                }
                if (!maxVersion.IsNull() && maxVersion > currentVersion)
                {
                    if (!OnNewVersionAvailable.IsNull())
                    {
                        OnNewVersionAvailable.Invoke(maxVersion);
                        work        = false;
                        elapsedTime = 0f;
                    }
                }
                lastOperationHistory = operations.Last().Id;
            }
        });
    }
Пример #10
0
 public CommitAndReveal(ChainTypes.RockPaperScissorsGesture gesture, SpaceTypeId player)
 {
     this.gesture = gesture;
     this.player  = player;
     nonce1       = GetRandomULong();
     nonce2       = GetRandomULong();
     hash         = SHA256.Create().HashAndDispose(Tool.ToBuffer(buffer => {
         buffer.WriteUInt64(nonce1);
         buffer.WriteUInt64(nonce2);
         buffer.WriteEnum(( int )gesture);
     }).ToArray());
     IsCommited = false;
     IsRevealed = false;
 }
    public void SetUp(TournamentObject tournament)
    {
        ApiManager.Instance.Database
        .GetAccountBalances(AuthorizationManager.Instance.UserData.FullAccount.Account.Id.Id, Array.ConvertAll(AuthorizationManager.Instance.UserData.FullAccount.Balances, balance => balance.AssetType.Id))
        .Then(accountBalances => {
            var data        = new LeaveFromTournamentData();
            data.tournament = tournament;
            data.account    = AuthorizationManager.Instance.UserData.FullAccount.Account.Id;
            currentData     = data;
            AssetData asset = null;
            foreach (var balance in accountBalances)
            {
                if (balance.Asset.Equals(currentData.tournament.Options.BuyIn.Asset))
                {
                    asset = balance;
                }
            }

            TournamentTransactionService.GenerateLeaveFromTournamentOperation(currentData)
            .Then(operation => {
                var feeAsset = SpaceTypeId.CreateOne(SpaceType.Asset);

                ApiManager.Instance.Database.GetRequiredFee(operation, feeAsset.Id)
                .Then(feeResult => {
                    Repository.GetInPromise <AssetObject>(feeResult.Asset)
                    .Then(assetData => {
                        buyinText.text              = tournament.Options.BuyIn.Amount / Math.Pow(10, assetData.Precision) + assetData.Symbol;
                        feeText.text                = feeResult.Amount / Math.Pow(10, assetData.Precision) + assetData.Symbol;
                        currentFee                  = feeResult.Amount;
                        currentOperation            = operation;
                        currentAccountBalanceObject = asset;

                        ApiManager.Instance.Database.GetAccount(tournament.Creator.Id)
                        .Then(creator => {
                            gameTitleText.text            = "ROCK, PAPER, SCISSORS";
                            creatorNameText.text          = Utils.GetFormatedString(creator.Name);
                            numberOfPlayersText.text      = data.tournament.Options.NumberOfPlayers.ToString();
                            winsAmountText.text           = data.tournament.Options.NumberOfWins.ToString();
                            registrationDeadlineText.text = data.tournament.Options.RegistrationDeadline.ToString("MMMM dd, yyyy hh:mmtt (z)").ToUpper();
                            Show();
                        });
                    })
                    .Catch(exception => OperationOnDone("There was a mistake during leaving of a tournament!", false));
                })
                .Catch(exception => OperationOnDone("There was a mistake during leaving of a tournament!", false));
            })
            .Catch(exception => OperationOnDone("There was a mistake during leaving of a tournament!", false));
        });
    }
Пример #12
0
 public static IPromise <T> GetInPromise <T>(SpaceTypeId key, Func <IPromise <T> > getter = null) where T : IdObject
 {
     if (IsExist(key))
     {
         return(Promise <T> .Resolved(( T )root[key.SpaceType][key]));
     }
     if (getter.IsNull())
     {
         return(Promise <T> .Resolved(null));
     }
     return(getter.Invoke().Then(idObject => {
         Add(idObject);
         return Promise <T> .Resolved(idObject);
     }));
 }
Пример #13
0
 public static IPromise <T> GetInPromise <T>(SpaceTypeId key, Func <IPromise <T> > getter = null) where T : IdObject
 {
     lock (rootLocler)
     {
         if (root.ContainsKey(key.SpaceType) && root[key.SpaceType].ContainsKey(key))
         {
             return(Promise <T> .Resolved((T)root[key.SpaceType][key]));
         }
     }
     return(getter.IsNull() ? Promise <T> .Resolved(null) : getter.Invoke().Then(idObject =>
     {
         AddObjectInPromise(idObject);
         return Promise <T> .Resolved(idObject);
     }));
 }
Пример #14
0
    public IPromise DeployContract(string bytecode, uint feeAssetId = 0, Action <TransactionConfirmationData> resultCallback = null)
    {
        if (!Authorization.IsAuthorized)
        {
            return(Promise.Rejected(new InvalidOperationException("Isn't Authorized!")));
        }
        var operation = new ContractCallOperationData
        {
            Registrar = SpaceTypeId.CreateOne(SpaceType.Account, Authorization.Current.UserNameData.Value.Account.Id.ToUintId),
            Value     = new AssetData(0, SpaceTypeId.CreateOne(SpaceType.Asset, feeAssetId)),
            Code      = bytecode.OrEmpty(),
            Callee    = null
        };

        return(Authorization.ProcessTransaction(new TransactionBuilder().AddOperation(operation), operation.Value.AssetId, resultCallback));
    }
Пример #15
0
 public IPromise <AssetData[]> GetRequiredFees(OperationData[] operations, uint assetId)
 {
     if (IsInitialized)
     {
         return(new Promise <AssetData[]>((resolve, reject) => {
             var debug = true;
             var requestId = GenerateNewId();
             var methodName = "get_required_fees";
             var title = methodName + " " + requestId;
             var parameters = new Parameters {
                 Id.Value, methodName, new object[] { operations, SpaceTypeId.ToString(SpaceType.Asset, assetId) }
             };
             DoRequest(requestId, parameters, resolve, reject, title, debug);
         }));
     }
     return(Init().Then(api => api.GetRequiredFees(operations, assetId)));
 }
Пример #16
0
 public IPromise <AssetData[]> GetAccountBalances(uint accountId, uint[] assetIds)
 {
     if (IsInitialized)
     {
         return(new Promise <AssetData[]>((resolve, reject) => {
             var debug = true;
             var requestId = GenerateNewId();
             var methodName = "get_account_balances";
             var title = methodName + " " + requestId;
             var parameters = new Parameters {
                 Id.Value, methodName, new object[] { SpaceTypeId.ToString(SpaceType.Account, accountId), SpaceTypeId.ToStrings(SpaceType.Asset, assetIds) }
             };
             DoRequest(requestId, parameters, resolve, reject, title, debug);
         }));
     }
     return(Init().Then(api => api.GetAccountBalances(accountId, assetIds)));
 }
Пример #17
0
 public IPromise <TournamentObject[]> GetTournaments(uint fromId, uint maxCount, uint toId)
 {
     if (IsInitialized)
     {
         return(new Promise <TournamentObject[]>((resolve, reject) => {
             var debug = true;
             var requestId = GenerateNewId();
             var methodName = "get_tournaments";
             var title = methodName + " " + requestId;
             var parameters = new Parameters {
                 Id.Value, methodName,
                 new object[] { SpaceTypeId.ToString(SpaceType.Tournament, fromId), maxCount, SpaceTypeId.ToString(SpaceType.Tournament, toId) }
             };
             DoRequest(requestId, parameters, resolve, reject, title, debug);
         }));
     }
     return(Init().Then(api => api.GetTournaments(fromId, maxCount, toId)));
 }
Пример #18
0
 public IPromise <OperationHistoryObject[]> GetAccountHistory(uint accountId, uint fromId, uint maxCount, uint toId)
 {
     if (IsInitialized)
     {
         return(new Promise <OperationHistoryObject[]>((resolve, reject) => {
             var debug = true;
             var requestId = GenerateNewId();
             var methodName = "get_account_history";
             var title = methodName + " " + requestId;
             var parameters = new Parameters {
                 Id.Value, methodName,
                 new object[] { SpaceTypeId.ToString(SpaceType.Account, accountId), SpaceTypeId.ToString(SpaceType.OperationHistory, fromId), maxCount, SpaceTypeId.ToString(SpaceType.OperationHistory, toId) }
             };
             DoRequest(requestId, parameters, resolve, reject, title, debug);
         }));
     }
     return(Init().Then(api => api.GetAccountHistory(accountId, fromId, maxCount, toId)));
 }
    private IPromise <AuthorizationResult> AuthorizationBy(uint id)
#endif
    {
        return(EchoApiManager.Instance.Database.GetFullAccount(SpaceTypeId.ToString(SpaceType.Account, id), true).Then(result =>
        {
            if (result.IsNull())
            {
                return Promise <AuthorizationResult> .Resolved(AuthorizationResult.UserNotFound);
            }
#if BY_PASS
            return AuthorizationBy(result, password);
#elif BY_WIF
            return AuthorizationBy(result, wif);
#else
            return Promise <AuthorizationResult> .Resolved(AuthorizationResult.Failed);
#endif
        }));
    }
    public void SetTournamentInformation(CreateTournamentData data, bool isJoin)
    {
        isJoinToTournament = isJoin;
        currentData        = data;
        gameTitleText.text = "ROCK, PAPER, SCISSORS";
        var username = AuthorizationManager.Instance.Authorization.UserNameData.UserName;

        creatorNameText.text          = Utils.GetFormatedString(username);
        numberOfPlayersText.text      = data.numberOfPlayers.ToString();
        winsAmountText.text           = data.numberOfWins.ToString();
        registrationDeadlineText.text = data.registrationDeadline.ToString("MMMM dd, yyyy hh:mmtt (z)").ToUpper();
        TournamentManager.Instance.GetAssetObject(data.buyInAssetId)
        .Then(asset => {
            buyinText.text =
                Utils.GetFormatedDecimaNumber(data.buyInAmount.ToString()) + asset.Symbol;
            var feeAsset = SpaceTypeId.CreateOne(SpaceType.GlobalProperties);

            Repository
            .GetInPromise <GlobalPropertiesObject>(feeAsset)
            .Then(result => {
                TournamentJoinOperationFeeParametersData joinFee     = null;
                TournamentCreateOperationFeeParametersData createFee = null;

                foreach (var fee in result.Parameters.CurrentFees.Parameters)
                {
                    if (fee != null && fee.Type == ChainTypes.FeeParameters.TournamentJoinOperation)
                    {
                        joinFee = fee as TournamentJoinOperationFeeParametersData;
                    }
                    if (fee != null && fee.Type == ChainTypes.FeeParameters.TournamentCreateOperation)
                    {
                        createFee = fee as TournamentCreateOperationFeeParametersData;
                    }
                }

                var amount   = isJoin ? Convert.ToDouble(createFee.Fee + joinFee.Fee) : Convert.ToDouble(createFee.Fee);
                amount      /= Mathf.Pow(10, asset.Precision);
                feeText.text = amount + asset.Symbol;
                gameObject.SetActive(true);
            });
        });
    }
    void JoinTournament(SpaceTypeId tournament)
    {
        if (isJoinToTournament)
        {
            Action <TournamentObject> JoinToTournament = tournamentObject => {
                var joinTournamentData = new JoinToTournamentData();
                joinTournamentData.tournament = tournamentObject;
                joinTournamentData.account    = AuthorizationManager.Instance.Authorization.UserNameData.FullAccount.Account.Id;

                TournamentTransactionService.GenerateJoinToTournamentOperation(joinTournamentData)
                .Then(operation => {
                    TournamentTransactionService.JoinToTournament(operation)
                    .Then(() => JoinOperationOnDone("Your tournament was successfully created & joined!", true))
                    .Catch(exception => JoinOperationOnDone("Your tournament was successfully created, but not joined!", false));
                })
                .Catch(exception => JoinOperationOnDone("There was a mistake during joining of a tournament!", false));
            };
            Repository.GetInPromise(tournament, () => TournamentManager.Instance.LoadTournament(tournament.Id)).Then(JoinToTournament);
        }
    }
Пример #22
0
    public IEnumerator GetAccount(SpaceTypeId accountId, List <AccountObject> accountResult)
    {
        List <AccountObject> account = null;

        ApiManager.Instance.Database.GetAccount(accountId.Id)
        .Then(result => {
            account = new List <AccountObject>();
            account.Add(result);
        })
        .Catch(exeption => account = new List <AccountObject>());

        while (account == null)
        {
            yield return(null);
        }

        if (account.Count > 0)
        {
            accountResult.AddRange(account);
        }
    }
Пример #23
0
 public TransactionBuilder AddOperation(OperationData operation)
 {
     if (IsFinalized)
     {
         throw new InvalidOperationException("AddOperation... Already finalized");
     }
     if (operation.Fee.IsNull())
     {
         operation.Fee = new AssetData(0, SpaceTypeId.CreateOne(SpaceType.Asset));
     }
     if (operation.Type.Equals(ChainTypes.Operation.ProposalCreate))
     {
         var proposalCreateOperation = (ProposalCreateOperationData)operation;
         if (proposalCreateOperation.ExpirationTime.IsZero())
         {
             proposalCreateOperation.ExpirationTime = TimeTool.ZeroTime().AddSeconds(BaseExpirationSeconds + ChainConfig.ExpireInSecondsProposal);
         }
     }
     operations.Add(operation);
     return(this);
 }
Пример #24
0
 public IPromise <AssetObject> GetAsset(uint id = 0)
 {
     return(GetObject <AssetObject>(SpaceTypeId.CreateOne(SpaceType.Asset, id)));
 }
Пример #25
0
 public int CompareTo(OperationHistoryObject other)
 {
     return(SpaceTypeId.Compare(Id, other.Id));
 }
Пример #26
0
 public PayerAmountPair(SpaceTypeId payer, long amount)
 {
     Payer  = payer;
     Amount = amount;
 }
Пример #27
0
 public IPromise <AccountObject[]> GetAccounts(uint[] ids)
 {
     return(GetObjects <AccountObject>(SpaceTypeId.CreateMany(SpaceType.Account, ids)));
 }
Пример #28
0
        public static IPromise <TransactionBuilder> SetRequiredFees(TransactionBuilder builder, SpaceTypeId assetId = null)
        {
            if (builder.IsFinalized)
            {
                throw new InvalidOperationException("SetRequiredFees... Already finalized");
            }
            if (builder.operations.IsNullOrEmpty())
            {
                throw new InvalidOperationException("SetRequiredFees... Add operation first");
            }
            var ops = new OperationData[builder.operations.Count];

            for (var i = 0; i < builder.operations.Count; i++)
            {
                ops[i] = builder.operations[i].Clone();
            }
            var coreAssetId = SpaceTypeId.CreateOne(SpaceType.Asset);

            if (assetId.IsNull())
            {
                var firstFee = ops.First().Fee;
                if (!firstFee.IsNull() && !firstFee.AssetId.IsNullOrEmpty())
                {
                    assetId = firstFee.AssetId;
                }
                else
                {
                    assetId = coreAssetId;
                }
            }
            var isNotCoreAsset = !assetId.Equals(coreAssetId);
            var promises       = new List <IPromise <object> >();

            if (ops.Contains(op => op.Type.Equals(ChainTypes.Operation.ContractCall)))
            {
                promises.Add(EchoApiManager.Instance.Database.GetRequiredFees <FeeForCallContractData>(ops, assetId.ToUintId).Then <object>(feesData => feesData.Cast <IFeeAsset>()));
                if (isNotCoreAsset)
                {
                    promises.Add(EchoApiManager.Instance.Database.GetRequiredFees <FeeForCallContractData>(ops, coreAssetId.ToUintId).Then <object>(coreFeesData => coreFeesData.Cast <IFeeAsset>()));
                }
            }
            else
            if (ops.Contains(op => op.Type.Equals(ChainTypes.Operation.ContractCreate)))
            {
                promises.Add(EchoApiManager.Instance.Database.GetRequiredFees <FeeForCreateContractData>(ops, assetId.ToUintId).Then <object>(feesData => feesData.Cast <IFeeAsset>()));
                if (isNotCoreAsset)
                {
                    promises.Add(EchoApiManager.Instance.Database.GetRequiredFees <FeeForCreateContractData>(ops, coreAssetId.ToUintId).Then <object>(coreFeesData => coreFeesData.Cast <IFeeAsset>()));
                }
            }
            else
            {
                promises.Add(EchoApiManager.Instance.Database.GetRequiredFees <AssetData>(ops, assetId.ToUintId).Then <object>(feesData => feesData.Cast <IFeeAsset>()));
                if (isNotCoreAsset)
                {
                    promises.Add(EchoApiManager.Instance.Database.GetRequiredFees <AssetData>(ops, coreAssetId.ToUintId).Then <object>(coreFeesData => coreFeesData.Cast <IFeeAsset>()));
                }
            }

            if (isNotCoreAsset)
            {
                promises.Add(Repository.GetInPromise(assetId, () => EchoApiManager.Instance.Database.GetAsset(assetId.ToUintId)).Then <object>(assetObject => assetObject));
            }

            return(Promise <object> .All(promises.ToArray()).Then(results =>
            {
                var list = new List <object>(results).ToArray();

                var feesData = list.First() as IFeeAsset[];
                var coreFeesData = (list.Length > 1) ? (list[1] as IFeeAsset[]) : null;
                var assetObject = (list.Length > 2) ? (list[2] as AssetObject) : null;

                var dynamicPromise = isNotCoreAsset ? EchoApiManager.Instance.Database.GetObject <AssetDynamicDataObject>(assetObject.DynamicAssetData) : Promise <AssetDynamicDataObject> .Resolved(null);

                return dynamicPromise.Then(dynamicObject =>
                {
                    if (isNotCoreAsset)
                    {
                        var totalFees = 0L;
                        for (var j = 0; j < coreFeesData.Length; j++)
                        {
                            totalFees += coreFeesData[j].FeeAsset.Amount;
                        }
                        var feePool = dynamicObject.IsNull() ? 0L : dynamicObject.FeePool;
                        if (totalFees > feePool)
                        {
                            feesData = coreFeesData;
                        }
                    }
                    var flatAssets = GetFee(feesData.OrEmpty(), new List <AssetData>());
                    var assetIndex = 0;
                    for (var i = 0; i < builder.operations.Count; i++)
                    {
                        SetFee(builder.operations[i], ref assetIndex, flatAssets);
                    }
                });
            }).Then(() => Promise <TransactionBuilder> .Resolved(builder)));
        }
Пример #29
0
 public TournamentOptionsData()
 {
     RegistrationDeadline = Tool.ZeroTime();
     Whitelist            = new SpaceTypeId[0];
 }
Пример #30
0
 public IPromise <AccountObject> GetAccount(uint id)
 {
     return(GetObject <AccountObject>(SpaceTypeId.CreateOne(SpaceType.Account, id)));
 }