/// <summary> /// Get unclaimed gas /// </summary> /// <param name="account">account scripthash</param> /// <returns></returns> public async Task <decimal> GetUnclaimedGasAsync(UInt160 account) { UInt160 scriptHash = NativeContract.NEO.Hash; var blockCount = await rpcClient.GetBlockCountAsync().ConfigureAwait(false); var result = await nep17API.TestInvokeAsync(scriptHash, "unclaimedGas", account, blockCount - 1).ConfigureAwait(false); BigInteger balance = result.Stack.Single().GetInteger(); return(((decimal)balance) / (long)NativeContract.GAS.Factor); }
public async Task <TransactionManager> MakeTransactionAsync(byte[] script, long systemFee, Signer[] signers = null, TransactionAttribute[] attributes = null) { uint blockCount = await rpcClient.GetBlockCountAsync().ConfigureAwait(false) - 1; var tx = new Transaction { Version = 0, Nonce = (uint)new Random().Next(), Script = script, Signers = signers ?? Array.Empty <Signer>(), ValidUntilBlock = blockCount - 1 + rpcClient.protocolSettings.MaxValidUntilBlockIncrement, SystemFee = systemFee, Attributes = attributes ?? Array.Empty <TransactionAttribute>(), }; return(new TransactionManager(tx, rpcClient)); }
/// <summary> /// Create an unsigned Transaction object with given parameters. /// </summary> /// <param name="script">Transaction Script</param> /// <param name="attributes">Transaction Attributes</param> /// <returns></returns> public async Task <TransactionManager> MakeTransactionAsync(byte[] script, Signer[] signers = null, TransactionAttribute[] attributes = null) { uint blockCount = await rpcClient.GetBlockCountAsync().ConfigureAwait(false) - 1; RpcInvokeResult invokeResult = await rpcClient.InvokeScriptAsync(script, signers).ConfigureAwait(false); var tx = new Transaction { Version = 0, Nonce = (uint)new Random().Next(), Script = script, Signers = signers ?? Array.Empty <Signer>(), ValidUntilBlock = blockCount - 1 + Transaction.MaxValidUntilBlockIncrement, SystemFee = invokeResult.GasConsumed, Attributes = attributes ?? Array.Empty <TransactionAttribute>(), }; return(new TransactionManager(tx, rpcClient)); }