Author

Topic: As a miner can i decide which block to mine? (Read 294 times)

legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
December 23, 2017, 10:41:30 AM
#17
No, thats not true.
Transactions are limited to a weight of 400.000. Look it up here:
Defined as constant here: https://github.com/bitcoin/bitcoin/blob/3c098a8aa0780009c11b66b1a5d488a928629ebf/src/policy/policy.h#L24.
And validty-check here: https://github.com/bitcoin/bitcoin/blob/3c098a8aa0780009c11b66b1a5d488a928629ebf/src/net_processing.cpp#L661-L665
Since the weight of a non-segwit transaction is 4 times its size, this leads to a maximum size of 100.000 byte (100kb) for valid transactions.

Note the comment:
Code:
// Ignore big transactions, to avoid a
// send-big-orphans memory exhaustion attack.
(to be found in 2nd link).
Yes. Core doesn't view it as a standard transaction and it won't be relayed nor mined by the client.

However, if you were to remove that code, it is still possible for it to be mined since it doesn't violate the protocol rules. If most miner SPV mines, then they probably don't use Bitcoin Core directly or modify the codes slightly. Of course, such transactions are unlikely to appear but they are valid, if they can get into a block which doesn't make the transaction invalid in the first place. It has happened before and I don't think any major changes happened.

The second link is for oprhan transactions, which isn't applicable to most transactions.
legendary
Activity: 1624
Merit: 2481
December 23, 2017, 10:03:24 AM
#16
Transactions can be up to 100kb in size (to be valid according to the network rules).
It's not. Transactions are valid as long as they can fit inside a single block.

No, thats not true.
Transactions are limited to a weight of 400.000. Look it up here:
Defined as constant here: https://github.com/bitcoin/bitcoin/blob/3c098a8aa0780009c11b66b1a5d488a928629ebf/src/policy/policy.h#L24.
And validty-check here: https://github.com/bitcoin/bitcoin/blob/3c098a8aa0780009c11b66b1a5d488a928629ebf/src/net_processing.cpp#L661-L665
Since the weight of a non-segwit transaction is 4 times its size, this leads to a maximum size of 100.000 byte (100kb) for valid transactions.

Note the comment:
Code:
// Ignore big transactions, to avoid a
// send-big-orphans memory exhaustion attack.
(to be found in 2nd link).
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
December 23, 2017, 07:53:48 AM
#15
Transactions can be up to 100kb in size (to be valid according to the network rules).
It's not. Transactions are valid as long as they can fit inside a single block.
but by saying that, all I meant was the same thing again that after we choose how much should be the min fee/byte and max fee/byte or a slab (as said before), how will those low-fee transactions ever confirm?
When the miner choose to mine them; or if all the transactions that the miner see if about that fee/byte.
Can't this be considered as a spam attack by miners' end too in order to break the rules by making transactions wait longer to make mempool congested in order to let others raise fee just for the purpose of profits?
Yeah. It is.
What if (a) miner/s never decide to take those low-fee (even 100 sats/byte) transactions in their blocks?
Then they don't confirm.
Everything (POWER) is in the hands of miners and if they choose not to include low-fee transactions and only raise the fee ahead, will there be anything that might confirm them (even in future)? Or such transactions need to be repeated with higher fee (possibly double-spends) to get through?
No. If no one wants to confirm your transaction, it would never be included in the blockchain.
legendary
Activity: 3052
Merit: 1273
December 23, 2017, 07:38:49 AM
#14
I asked that do we need to set a slab (for e.g.: if we need to take in transactions with fees not less than 200 sats/byte and not more than 600 sats/byte, do we need to (or can we) put it like 200 - 600 sats/byte transactions to include transactions within the mentioned slab only)?

Yes, you can include any transaction you want into your block.

A lot of people seem to not understand how a block is generated. Its not like you 'mine a block' and afterwards include your transactions into it.
I would suggest to read https://en.bitcoin.it/wiki/Block_hashing_algorithm and https://en.wikipedia.org/wiki/Merkle_tree.

I know about that thing, and I didn't ask whether I can include transactions after a block is mined, but can we decide our own fee (which was answered by DannyHamilton Sir that we can). Sorry if you misunderstood.



As well, if this is the case and we are allowed to choose our own size of transaction according to the protocol and decide not to include those low-fee/byte transactions, will they ever confirm?

If those low-fee/byte transaction will never be mined, they never will confirm.
Its fully dependend IF and WHEN a miner decides to include this transaction into his block.


Im not sure what you exactly mean with 'we are allowed to choose our own size of transaction'.
Transactions can be up to 100kb in size (to be valid according to the network rules).

I'm sorry I used the wrong word there when I said "we are allowed to choose our own size of transaction", but by saying that, all I meant was the same thing again that after we choose how much should be the min fee/byte and max fee/byte or a slab (as said before), how will those low-fee transactions ever confirm? Can't this be considered as a spam attack by miners' end too in order to break the rules by making transactions wait longer to make mempool congested in order to let others raise fee just for the purpose of profits? What if (a) miner/s never decide to take those low-fee (even 100 sats/byte) transactions in their blocks? Everything (POWER) is in the hands of miners and if they choose not to include low-fee transactions and only raise the fee ahead, will there be anything that might confirm them (even in future)? Or such transactions need to be repeated with higher fee (possibly double-spends) to get through?
legendary
Activity: 1624
Merit: 2481
December 23, 2017, 07:23:04 AM
#13
I asked that do we need to set a slab (for e.g.: if we need to take in transactions with fees not less than 200 sats/byte and not more than 600 sats/byte, do we need to (or can we) put it like 200 - 600 sats/byte transactions to include transactions within the mentioned slab only)?

Yes, you can include any transaction you want into your block.

A lot of people seem to not understand how a block is generated. Its not like you 'mine a block' and afterwards include your transactions into it.
I would suggest to read https://en.bitcoin.it/wiki/Block_hashing_algorithm and https://en.wikipedia.org/wiki/Merkle_tree.


As well, if this is the case and we are allowed to choose our own size of transaction according to the protocol and decide not to include those low-fee/byte transactions, will they ever confirm?

If those low-fee/byte transaction will never be mined, they never will confirm.
Its fully dependend IF and WHEN a miner decides to include this transaction into his block.

Im not sure what you exactly mean with 'we are allowed to choose our own size of transaction'.
Transactions can be up to 100kb in size (to be valid according to the network rules).
legendary
Activity: 3038
Merit: 4418
Crypto Swap Exchange
December 22, 2017, 09:31:03 PM
#12
so if i understand correctly. (correct me if i am wrong)
if my miners find a block i can decide which transaction to put in the block (up to 1mb transaction)?
for instance, i can do a transaction for 1 satoshi/B and if i find a block i can put that transaction inside it?

to find a block among all the pools its like almost impossible. am i right?

is there another way ? for small miners which dont have peta/exa hashing power?
If you're mining by yourself, the chance of you hitting a block is almost zero. If you're mining with a pool, you can contribute to the effort and you will be rewarded with your effort.

You got a sequence wrong, you specify which transaction to include first, then you try to find a block. The transaction hashes are in the merkle root, which is in the block header. Since you're hashing the block header to find a hash that meets the target, then you are effectively already selecting the transactions BEFORE you find the block.

why u have mention a node?
If you can select the transaction yourself, you would have to own a node to get all the transactions, blocks etc.

why? because i have to find a block first?

theoretically, if i find a block, how long can i hold it?
In theory, less than 10 minutes.

u mention the block reward,
the reward that u mention is 12.5 BTC? + selecting the transaction thats goes into block +getting the transaction fees? (again correct me if i am wrong)
The reward is: 12.5BTC(Block reward) + transaction fees of EVERY transaction that is included in your block.
copper member
Activity: 117
Merit: 17
December 22, 2017, 05:06:09 PM
#11
i am sorry but i am getting mixed feeling and mixed answers.


It depends.

If you are solo mining (not mining in a mining pool), then YES, you have control over the transactions in your block.

If you are mining in a mining pool, then the pool will have control over the transactions in your block.

Note that this also means:

If you operate your own mining pool, and don't do any mining yourself (just rely on the participants in your pool to do the mining for you), then you will have control over the transactions in the blocks that ALL your pool participants work on.

so if i understand correctly. (correct me if i am wrong)
if my miners find a block i can decide which transaction to put in the block (up to 1mb transaction)?
for instance, i can do a transaction for 1 satoshi/B and if i find a block i can put that transaction inside it?

to find a block among all the pools its like almost impossible. am i right?

is there another way ? for small miners which dont have peta/exa hashing power?


Yes, you can.

As for the how, that is up to you based on your own implementation of your mining node.

For reference, a brief google search turned up this:
https://bitcoin.stackexchange.com/questions/61066/why-are-transactions-grouped-into-blocks-how-are-transactions-put-into-blocks



 why u have mention a node?



Theoretically yes - practically, it's very unlikely.

why? because i have to find a block first?

theoretically, if i find a block, how long can i hold it?

theoretically: if you can mine blocks then you can certainly include your own transactions in the block.
practically: you are competing with every other miner on the planet to find the next block. If it happen you get the block reward plus you get to choose which transactions are included in your block. and if somebody else wins you get no say in the matter Unless you have a very large mining operation, the chance of you winning is so small that it's never going to happen.
miiners who do make new blocks today may choose to include their own transactions in their blocks.

u mention the block reward,
the reward that u mention is 12.5 BTC? + selecting the transaction thats goes into block +getting the transaction fees? (again correct me if i am wrong)

copper member
Activity: 630
Merit: 2614
If you don’t do PGP, you don’t do crypto!
December 21, 2017, 02:31:48 PM
#10
Apropos:  Bitcoin mining is NP-hard (or rather, transaction selection is).  The upshot is that it doesn’t get solved optimally, at least from a theoretical perspective.  In practice, “good enough” is good enough:  Fill your knapsack mostly full of mostly the best stuff, and start hashing.  The race is on, and time is critical!

There are all sorts of prickly points around the subtle art of selecting transactions for inclusion in a block.  When making changes to Bitcoin, careful engineering work can be required to at least not make it harder.

(please alaborate for a  non-technical person so every1 could understand the answer)

Please be advised that this is a forum for technical discussion, titled “Development & Technical Discussion”.  For basic questions about Bitcoin, go to “Beginners & Help”.  For technical support appertaining to “Bitcoin Core, nodes, the Bitcoin network, transactions, and addresses”, go to “Bitcoin Technical Support”.  For education needed by “every1”, see alt.english.usage.
legendary
Activity: 3052
Merit: 1273
December 21, 2017, 01:27:31 PM
#9
If yes, is it like a slab that we need to choose to include the given sats/byte transactions included only?

I don't understand this question.

I asked that do we need to set a slab (for e.g.: if we need to take in transactions with fees not less than 200 sats/byte and not more than 600 sats/byte, do we need to (or can we) put it like 200 - 600 sats/byte transactions to include transactions within the mentioned slab only)?

As well, if this is the case and we are allowed to choose our own size of transaction according to the protocol and decide not to include those low-fee/byte transactions, will they ever confirm?
Isn't it considered as monopoly spam attack by the miners' end itself to make the whole network and mempool congested in order to make everyone helpless and unwantedly give higher fee?
donator
Activity: 4760
Merit: 4323
Leading Crypto Sports Betting & Casino Platform
December 21, 2017, 01:27:15 PM
#8
if yes how?

Mine the next block and include the transaction in it.


if no why not? (please alaborate for a  non-technical person so every1 could understand the answer)

You don't have the hashrate to solo mine a block (it's a possibility, but so is winning the lottery).
member
Activity: 84
Merit: 10
December 21, 2017, 01:24:27 PM
#7
theoretically: if you can mine blocks then you can certainly include your own transactions in the block.
practically: you are competing with every other miner on the planet to find the next block. If it happen you get the block reward plus you get to choose which transactions are included in your block. and if somebody else wins you get no say in the matter Unless you have a very large mining operation, the chance of you winning is so small that it's never going to happen.
miiners who do make new blocks today may choose to include their own transactions in their blocks.
legendary
Activity: 3472
Merit: 4801
December 21, 2017, 01:15:41 PM
#6
I wish to conclude one thing about this that whether mining solo or having a mining pool where others work for us with their computational power, what exact type of control over transactions do we have?

The protocol requires that you ONLY include VALID transactions in your blocks.

As long as the transactions are valid, you can use any criteria you like to decide which transactions you include.

Since most miners are interested in profit, most of the existing mining software and mining pool software uses a default setting of choosing the transactions that pay the highest fee per block weight.  However, some of the software is configurable, or will allow you to override the settings with specific transactions.  Also, you can always create or modify the software on your own (or hire someone to do it for you).

I mean do we have the control to decide the fee/byte we want in order to be included in the block that we may (probably) find?

Yes, the rules of the protocol allow you to choose any valid transaction using any reason you like.

If yes, is it like a slab that we need to choose to include the given sats/byte transactions included only?

I don't understand this question.
hero member
Activity: 938
Merit: 559
Did you see that ludicrous display last night?
December 21, 2017, 12:52:13 PM
#5
can i decide which block to mine ?
You cannot decide which block to mine, but if you mine a block, you can decide which transactions to include.

Realistically, you would be extremely unlikely to mine a block unless you have a huge amount of equipment and massive farms of ASICs.  You would have to join a mining pool, and they would decide to mine the transactions with the highest fees, so you would not be able to choose which transactions to include.
lets say i did a transaction and right now its in the unconfirmed pool. (for 3 days now)
can i with my miner(s) pick it up and confirmed it?
Theoretically yes - practically, it's very unlikely.
legendary
Activity: 3052
Merit: 1273
December 21, 2017, 12:50:51 PM
#4
hey ya all,

so heres my question. (i am sure tons of ppl had the same question)

for the example i have 1 miner or 10 or a farm of 100-200.
can i decide which block to mine ?
lets say i did a transaction and right now its in the unconfirmed pool. (for 3 days now)
can i with my miner(s) pick it up and confirmed it?

if yes how?
if no why not? (please alaborate for a  non-technical person so every1 could understand the answer)


thanks.

It depends.

If you are solo mining (not mining in a mining pool), then YES, you have control over the transactions in your block.

If you are mining in a mining pool, then the pool will have control over the transactions in your block.

Note that this also means:

If you operate your own mining pool, and don't do any mining yourself (just rely on the participants in your pool to do the mining for you), then you will have control over the transactions in the blocks that ALL your pool participants work on.

I wish to conclude one thing about this that whether mining solo or having a mining pool where others work for us with their computational power, what exact type of control over transactions do we have? I mean do we have the control to decide the fee/byte we want in order to be included in the block that we may (probably) find? If yes, is it like a slab that we need to choose to include the given sats/byte transactions included only?
legendary
Activity: 3472
Merit: 4801
December 21, 2017, 12:44:55 PM
#3
hey ya all,

so heres my question. (i am sure tons of ppl had the same question)

for the example i have 1 miner or 10 or a farm of 100-200.
can i decide which block to mine ?
lets say i did a transaction and right now its in the unconfirmed pool. (for 3 days now)
can i with my miner(s) pick it up and confirmed it?

if yes how?
if no why not? (please alaborate for a  non-technical person so every1 could understand the answer)


thanks.

It depends.

If you are solo mining (not mining in a mining pool), then YES, you have control over the transactions in your block.

If you are mining in a mining pool, then the pool will have control over the transactions in your block.

Note that this also means:

If you operate your own mining pool, and don't do any mining yourself (just rely on the participants in your pool to do the mining for you), then you will have control over the transactions in the blocks that ALL your pool participants work on.
member
Activity: 116
Merit: 101
December 21, 2017, 12:33:14 PM
#2
Yes, you can.

As for the how, that is up to you based on your own implementation of your mining node.

For reference, a brief google search turned up this:
https://bitcoin.stackexchange.com/questions/61066/why-are-transactions-grouped-into-blocks-how-are-transactions-put-into-blocks

copper member
Activity: 117
Merit: 17
December 21, 2017, 12:19:45 PM
#1
hey ya all,

so heres my question. (i am sure tons of ppl had the same question)

for the example i have 1 miner or 10 or a farm of 100-200.
can i decide which block to mine ?
lets say i did a transaction and right now its in the unconfirmed pool. (for 3 days now)
can i with my miner(s) pick it up and confirmed it?

if yes how?
if no why not? (please alaborate for a  non-technical person so every1 could understand the answer)


thanks.

Jump to: