Пример #1
0
 public Fixed8 AvailableBonus()
 {
     using (Snapshot snapshot = Blockchain.Singleton.GetSnapshot())
     {
         return(snapshot.CalculateBonus(currentWallet.GetUnclaimedCoins().Select(p => p.Reference)));
     }
 }
Пример #2
0
        public ClaimTransaction Claim()
        {
            if (this.AvailableBonus() == Fixed8.Zero)
            {
                Console.WriteLine($"no gas to claim");
                return(null);
            }

            CoinReference[] claims = currentWallet.GetUnclaimedCoins().Select(p => p.Reference).ToArray();
            if (claims.Length == 0)
            {
                return(null);
            }

            using (Snapshot snapshot = Blockchain.Singleton.GetSnapshot())
            {
                ClaimTransaction tx = new ClaimTransaction
                {
                    Claims     = claims,
                    Attributes = new TransactionAttribute[0],
                    Inputs     = new CoinReference[0],
                    Outputs    = new[]
                    {
                        new TransactionOutput
                        {
                            AssetId    = Blockchain.UtilityToken.Hash,
                            Value      = snapshot.CalculateBonus(claims),
                            ScriptHash = currentWallet.GetChangeAddress()
                        }
                    }
                };

                return((ClaimTransaction)SignTransaction(tx));
            }
        }
Пример #3
0
        public Fixed8 UnavailableBonus()
        {
            using (Snapshot snapshot = Blockchain.Singleton.GetSnapshot())
            {
                uint   height = snapshot.Height + 1;
                Fixed8 unavailable;

                try
                {
                    unavailable = snapshot.CalculateBonus(currentWallet.FindUnspentCoins().Where(p => p.Output.AssetId.Equals(Blockchain.GoverningToken.Hash)).Select(p => p.Reference), height);
                }
                catch (Exception)
                {
                    unavailable = Fixed8.Zero;
                }

                return(unavailable);
            }
        }