Question on setting up transaction fees and where they go

+2 votes

Reading the section under blockchain paramters, my understanding was that I only needed to set up minimum-relay-fee in order to have a transaction fee required. I tried to test it by creating a blockchain with the ff parameters:

initial-block-reward=20000000 (so the initial wallet will have some native currency)

first-block-reward=0 (only want to have txn fee, not mining rewards)

minimum-relay-fee = 100

native-currency-multiple = 100

After starting the blockchain, I check that the initial wallet has 200,000 native currency. This is fine. Let's call this initial one AddrA.

I create two additional addresses using getnewaddress and grant them send, receive permissions. Let's call them AddrB and AddrC.

I do the following transfers using sendfrom api call:

sendfrom AddrA AddrB 10000

sendfrom AddrB AddrC 1000

After that, the wallet balances (via getaddressbalances) are:

AddrA - 190,000

AddrB - 8,999.78

AddrC - 1,000

It looks like some amount of transaction fee has been deducted from AddrB in the last transaction, so that's fine. However, where did the transaction fee go? I assumed it would go to AddrA, but it seems to be missing

Edit: Sorry, literally seconds after posting this I retrieved the balances again, and now AddrA has 190,000.22. So there's transaction fee! I assumed that the transaction fee would reflect at the same time that the transfer is reflected. Is this not so? At what point will the transaction fee be transferred? How long should I expect the delay to be?
asked May 22, 2018 by anonymous

1 Answer

0 votes

The transaction fee is collected by the miner of whichever block confirms that transaction. However it is not immediately spendable, which is why it takes time to show up in the node's balance. See the reward-spendable-delay runtime parameter.

answered May 23, 2018 by MultiChain
How the transaction fee is calculated (0.22 in this case)?
The fee is the size in kb of the transactions multipled by minimum-relay-fee, epxressed in low-level units of the native currency.