Bitcoin Forum

Bitcoin => Bitcoin Technical Support => Topic started by: bitcreditscc on December 29, 2014, 09:16:53 PM



Title: Transaction count
Post by: bitcreditscc on December 29, 2014, 09:16:53 PM
Code:
int getNumTransactions() const
{
    int numTransactions = 0;
    {
        LOCK(wallet->cs_wallet);
        numTransactions = wallet->mapWallet.size();
    }
    return numTransactions;
}

gives me the total num of transactions
 can anyone please tell me how to get specific details

i want to get the total incoming tx count, the mined tx count and the outgoing tx count seperately.


Title: Re: Transaction count
Post by: Remember remember the 5th of November on December 29, 2014, 09:32:21 PM
RPC or source code?

listtransactions should suit your needs.


Title: Re: Transaction count
Post by: Parazyd on December 29, 2014, 09:38:15 PM
Code:

listtransactions ( "account" count from includeWatchonly)

Returns up to 'count' most recent transactions skipping the first 'from' transactions for account 'account'.

Arguments:
1. "account" (string, optional) The account name. If not included, it will list all transactions for all accounts.
If "" is set, it will list transactions for the default account.
2. count (numeric, optional, default=10) The number of transactions to return
3. from (numeric, optional, default=0) The number of transactions to skip
4. includeWatchonly (bool, optional, default=false) Include transactions to watchonly addresses (see 'importaddress')

Result:
[
{
"account":"accountname", (string) The account name associated with the transaction.
It will be "" for the default account.
"address":"bitcoinaddress", (string) The bitcoin address of the transaction. Not present for
move transactions (category = move).
"category":"send|receive|move", (string) The transaction category. 'move' is a local (off blockchain)
transaction between accounts, and not associated with an address,
transaction id or block. 'send' and 'receive' transactions are
associated with an address, transaction id and block details
"amount": x.xxx, (numeric) The amount in btc. This is negative for the 'send' category, and for the
'move' category for moves outbound. It is positive for the 'receive' category,
and for the 'move' category for inbound funds.
"vout" : n, (numeric) the vout value
"fee": x.xxx, (numeric) The amount of the fee in btc. This is negative and only available for the
'send' category of transactions.
"confirmations": n, (numeric) The number of confirmations for the transaction. Available for 'send' and
'receive' category of transactions.
"blockhash": "hashvalue", (string) The block hash containing the transaction. Available for 'send' and 'receive'
category of transactions.
"blockindex": n, (numeric) The block index containing the transaction. Available for 'send' and 'receive'
category of transactions.
"txid": "transactionid", (string) The transaction id. Available for 'send' and 'receive' category of transactions.
"time": xxx, (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
"timereceived": xxx, (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT). Available
for 'send' and 'receive' category of transactions.
"comment": "...", (string) If a comment is associated with the transaction.
"otheraccount": "accountname", (string) For the 'move' category of transactions, the account the funds came
from (for receiving funds, positive amounts), or went to (for sending funds,
negative amounts).
}
]

Examples:

List the most recent 10 transactions in the systems
> bitcoin-cli listtransactions

List the most recent 10 transactions for the tabby account
> bitcoin-cli listtransactions "tabby"

List transactions 100 to 120 from the tabby account
> bitcoin-cli listtransactions "tabby" 20 100

As a json rpc call
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "listtransactions", "params": ["tabby", 20, 100] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/

Now you can check for all three kinds of transactions.


Title: Re: Transaction count
Post by: bitcreditscc on December 29, 2014, 09:39:44 PM
RPC or source code?

listtransactions should suit your needs.

source code,  i'll take a look at listtransactions , because after this i am going to need to sort them by address as well.

thanks!


Title: Re: Transaction count
Post by: bitcreditscc on December 29, 2014, 09:41:35 PM
Code:

listtransactions ( "account" count from includeWatchonly)

Returns up to 'count' most recent transactions skipping the first 'from' transactions for account 'account'.

Arguments:
1. "account" (string, optional) The account name. If not included, it will list all transactions for all accounts.
If "" is set, it will list transactions for the default account.
2. count (numeric, optional, default=10) The number of transactions to return
3. from (numeric, optional, default=0) The number of transactions to skip
4. includeWatchonly (bool, optional, default=false) Include transactions to watchonly addresses (see 'importaddress')

Result:
[
{
"account":"accountname", (string) The account name associated with the transaction.
It will be "" for the default account.
"address":"bitcoinaddress", (string) The bitcoin address of the transaction. Not present for
move transactions (category = move).
"category":"send|receive|move", (string) The transaction category. 'move' is a local (off blockchain)
transaction between accounts, and not associated with an address,
transaction id or block. 'send' and 'receive' transactions are
associated with an address, transaction id and block details
"amount": x.xxx, (numeric) The amount in btc. This is negative for the 'send' category, and for the
'move' category for moves outbound. It is positive for the 'receive' category,
and for the 'move' category for inbound funds.
"vout" : n, (numeric) the vout value
"fee": x.xxx, (numeric) The amount of the fee in btc. This is negative and only available for the
'send' category of transactions.
"confirmations": n, (numeric) The number of confirmations for the transaction. Available for 'send' and
'receive' category of transactions.
"blockhash": "hashvalue", (string) The block hash containing the transaction. Available for 'send' and 'receive'
category of transactions.
"blockindex": n, (numeric) The block index containing the transaction. Available for 'send' and 'receive'
category of transactions.
"txid": "transactionid", (string) The transaction id. Available for 'send' and 'receive' category of transactions.
"time": xxx, (numeric) The transaction time in seconds since epoch (midnight Jan 1 1970 GMT).
"timereceived": xxx, (numeric) The time received in seconds since epoch (midnight Jan 1 1970 GMT). Available
for 'send' and 'receive' category of transactions.
"comment": "...", (string) If a comment is associated with the transaction.
"otheraccount": "accountname", (string) For the 'move' category of transactions, the account the funds came
from (for receiving funds, positive amounts), or went to (for sending funds,
negative amounts).
}
]

Examples:

List the most recent 10 transactions in the systems
> bitcoin-cli listtransactions

List the most recent 10 transactions for the tabby account
> bitcoin-cli listtransactions "tabby"

List transactions 100 to 120 from the tabby account
> bitcoin-cli listtransactions "tabby" 20 100

As a json rpc call
> curl --user myusername --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "listtransactions", "params": ["tabby", 20, 100] }' -H 'content-type: text/plain;' http://127.0.0.1:8332/

Now you can check for all three kinds of transactions.

thats rpc thanks, but it does not seperate them based on incoming outgoing or mined.

perhaps i  can modify the method and add category to the arguments.


Title: Re: Transaction count
Post by: bitcreditscc on December 29, 2014, 09:48:21 PM
 ;D ;D ;D

thanks guys!


Title: Re: Transaction count
Post by: bitcreditscc on December 29, 2014, 10:16:59 PM
just bumped into something,

Code:
void WalletModel::getOutputs(const std::vector<COutPoint>& vOutpoints, std::vector<COutput>& vOutputs)
{
    BOOST_FOREACH(const COutPoint& outpoint, vOutpoints)
    {
        if (!wallet->mapWallet.count(outpoint.hash)) continue;
        int nDepth = wallet->mapWallet[outpoint.hash].GetDepthInMainChain();
        if (nDepth < 0) continue;
        COutput out(&wallet->mapWallet[outpoint.hash], outpoint.n, nDepth);
        vOutputs.push_back(out);
    }
}

what is this?


Title: Re: Transaction count
Post by: Parazyd on December 29, 2014, 10:24:12 PM
It returns a list of COutputs from COutPoints

https://dev.visucore.com/bitcoin/doxygen/class_c_out_point.html


Title: Re: Transaction count
Post by: bitcreditscc on December 30, 2014, 05:43:39 AM
I give up,

 :'( :'( :'(

i need help getting the following numbers

Code:
int txincount;

int txoutcount;

int number-of-times-you-have-sent-to-a-specific-address;

int number-of-times-you-have-received-from-a-specific-address;

i know that if i get at least txincount, txoutcount becomes trivial, the last two are a problem though , i have no clue how to get that.


Title: Re: Transaction count
Post by: Parazyd on December 30, 2014, 09:03:34 AM
Can't you grab all transactions and then parse them and output depending on your need?


Title: Re: Transaction count
Post by: bitcreditscc on December 30, 2014, 10:28:39 AM
Can't you grab all transactions and then parse them and output depending on your need?

I thought about that, then i came to the realization that the best tool for that is a separately built database. Kind of like a true block explorer in the wallet. However i have no clue how to do that.


Title: Re: Transaction count
Post by: Parazyd on December 30, 2014, 11:20:18 AM
I can't see why you simply don't wrap up a script and use RPC to get whatever you want.