コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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));
        }
コード例 #3
0
        /// <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));
        }