Bitcoin Forum

Bitcoin => Bitcoin Technical Support => Topic started by: RandomQ on July 15, 2012, 02:56:49 AM



Title: Configure Bitcoind to NOT relay 0 fee transactions
Post by: RandomQ on July 15, 2012, 02:56:49 AM
I've been searching for more information on how to do this? almost 30 mins now.

I want my bitcoind to not relay any transaction that has a 0 fee included. Yes, I'm a greedy miner lol

Do i have to use a forked client? patch?

Someone point me in the right direction lol


Title: Re: Configure Bitcoind to NOT relay 0 fee transactions
Post by: Stephen Gornick on July 15, 2012, 03:08:59 AM
I want my bitcoind to not relay any transaction that has a 0 fee included. Yes, I'm a greedy miner lol

Heh thousands of nodes will relay it, but yours won't.  So if I'm connected to eight nodes, and yours is one of them, it might then take 3.6 seconds for my transaction to propagate globally rather than 3.5 seconds.


Title: Re: Configure Bitcoind to NOT relay 0 fee transactions
Post by: RandomQ on July 15, 2012, 03:14:17 AM
Yea I know let the free loaders leech someone else blocks lol.
I'm sure 99% of the clients will relay them, I want to be the 1% lol
-----
I want my sub pool/pool to not relay them


Title: Re: Configure Bitcoind to NOT relay 0 fee transactions
Post by: randomproof on July 23, 2012, 03:23:50 PM
Here is what I found after a quick check:

Look for this code in main.cpp
Code:
        // Note: if you modify this code to accept non-standard transactions, then
        // you should add code here to check that the transaction does a
        // reasonable number of ECDSA signature verifications.

        int64 nFees = tx.GetValueIn(mapInputs)-tx.GetValueOut();
        unsigned int nSize = ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION);

        // Don't accept it if it can't get into a block
        if (nFees < tx.GetMinFee(1000, true, GMF_RELAY))
            return error("CTxMemPool::accept() : not enough fees");

and change to this:

Code:
        // Note: if you modify this code to accept non-standard transactions, then
        // you should add code here to check that the transaction does a
        // reasonable number of ECDSA signature verifications.

        int64 nFees = tx.GetValueIn(mapInputs)-tx.GetValueOut();

        if (nFees == 0)
                return false;

        unsigned int nSize = ::GetSerializeSize(tx, SER_NETWORK, PROTOCOL_VERSION);

        // Don't accept it if it can't get into a block
        if (nFees < tx.GetMinFee(1000, true, GMF_RELAY))
            return error("CTxMemPool::accept() : not enough fees");