public Fixed8 AvailableBonus() { using (Snapshot snapshot = Blockchain.Singleton.GetSnapshot()) { return(snapshot.CalculateBonus(currentWallet.GetUnclaimedCoins().Select(p => p.Reference))); } }
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)); } }
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); } }