Author

Topic: Transaction inclusion and exclusion (Read 782 times)

legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
April 25, 2014, 08:06:07 PM
#15
1. longest-chain-wins  may be too simple.  could be longest-VALID-chain wins, with some rules for validation, namely that the chain should include certain transactions.

Surely you can see that this path just closes the circle, right?  How do you create a distributed agreement on which transaction must be included?

2. transactions can be timestamped, either locally by each miner, or in some seperate bucket or sidechain

Ditto.

Well, you build it into the protocol.

One problem though is that an attacker can try to circumvent the aims of the protocol.
For example, let's say you created a rule that you reject new blocks unless they contain
the oldest transactions, the attacker can flood the system with many of their own transactions
so most of the oldest ones are those of the attacker.
kjj
legendary
Activity: 1302
Merit: 1026
April 25, 2014, 07:45:03 PM
#14
1. longest-chain-wins  may be too simple.  could be longest-VALID-chain wins, with some rules for validation, namely that the chain should include certain transactions.

Surely you can see that this path just closes the circle, right?  How do you create a distributed agreement on which transaction must be included?

2. transactions can be timestamped, either locally by each miner, or in some seperate bucket or sidechain

Ditto.
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
April 25, 2014, 12:49:12 PM
#13
My next question is what happens to the transactions that are received by a node.  Bitcoin transactions only take a few seconds, so every node receives the transactions being sent. What does it do with the transaction before it is entered into the block?  It sits in some bucket, right?  What happens if a node receives the transaction but it not in the next block?  At what point does it get discarded?


legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
April 24, 2014, 12:50:47 PM
#12
not trying to reinvent bitcoin!  just hoping to improve it a little.

thoughts:

1. longest-chain-wins  may be too simple.  could be longest-VALID-chain wins,
with some rules for validation, namely that the chain should include certain transactions.

2. transactions can be timestamped, either locally by each miner, or in some seperate
bucket or sidechain

3. in the event of a 51% attack, older transactions would eventually be forced into
the blocks, or nodes would start rejecting chains that are deemed corrupted (manipulated)
legendary
Activity: 1792
Merit: 1111
April 24, 2014, 12:39:23 PM
#11
I'm thinking about a system where nodes can look at old transactions, ordered chronologically.
Oldest transactions should be forced in, not left up to miner's discretion.  That's the basic idea.
What do you guys think?

Thanks all for the responses.

Yes Danny, I'm generally aware of these kinds of issues that exist in a distributed system.
We have to create consensus among the nodes.

I haven't created an implementation plan yet...still gathering information to fully understand the problem.
Let me think about the "how" this can be done.



Bitcoin is ALREADY a consensus system for the chronology of transactions. So you are just going to reinvent bitcoin, or something that is fundamentally better than bitcoin.
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
April 24, 2014, 12:22:40 PM
#10
yes but arent improvements being made every year?  little tweaks and upgrades that fix weaknesses?
legendary
Activity: 3472
Merit: 4801
April 24, 2014, 11:59:38 AM
#9
Yes Danny, I'm generally aware of these kinds of issues that exist in a distributed system.
We have to create consensus among the nodes.

The blockchain and proof-of-work is the consensus system.  And as you've already realized, the weakness is that it is subject to a 51% attack.

You're going to find this to be very difficult to "solve".

If a better solution for decentralized distributed consensus existed, bitcoin wouldn't be the revolutionary ingenious protocol that it is.
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
April 24, 2014, 11:54:10 AM
#8
Thanks all for the responses.

Yes Danny, I'm generally aware of these kinds of issues that exist in a distributed system.
We have to create consensus among the nodes.

I haven't created an implementation plan yet...still gathering information to fully understand the problem.
Let me think about the "how" this can be done.

legendary
Activity: 3472
Merit: 4801
April 24, 2014, 11:39:43 AM
#7
I'm thinking about a system where nodes can look at old transactions, ordered chronologically.
Oldest transactions should be forced in, not left up to miner's discretion.  That's the basic idea.
What do you guys think?

What if a miner hasn't heard about the old transaction?  How can the miner know when the transaction was created?  Have you really thought through all the details of what you're trying to do?

How would this scenario be handled?
You and I are both miners.
I hear about transaction A before I hear about transaction B
You hear about transaction B before you hear about transaction A

I mine a block with transaction A in it (and not transaction B)
You mine a block with transaction B in it (and not transaction A)

Which block belongs on the blockchain, and which is invalid?
kjj
legendary
Activity: 1302
Merit: 1026
April 24, 2014, 10:58:30 AM
#6
I'm thinking about a system where nodes can look at old transactions, ordered chronologically.
Oldest transactions should be forced in, not left up to miner's discretion.  That's the basic idea.

How?  Why?
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
April 24, 2014, 08:01:08 AM
#5
I'm thinking about a system where nodes can look at old transactions, ordered chronologically.
Oldest transactions should be forced in, not left up to miner's discretion.  That's the basic idea.
What do you guys think?
sr. member
Activity: 412
Merit: 287
April 24, 2014, 06:04:49 AM
#4
You can see this happen when you compare Eligius vs other pools: Each pool can control what transactions get included in a block, usually based on fee's, size, etc. Most operators use a client which prevents non-standard transactions (really really unusual ones) from being included in a block. Given bitcoins scripting possibilities, there are still only two particular transaction types that are standard at the moment. Eligius will mine non-standard transactions into blocks, even though no one else will.

Standard transactions:
Pay to pubkey hash
Pay to script hash (very particular circumstances, ie, m < 3 && n < 4)
 - These will not be forced into a block, they will only be included if they have an adequate fee.

Non-standard:
p2sh addresses where m > 3, n > 4.
https://en.bitcoin.it/wiki/Script#Transaction_puzzle
other unusual scripts.
 - If you broadcast these, the nodes your connected to probably will not even relay the transactions to others. It has very little chance of propagation. It would need to be directly pushed to Eligius in order for it to go through.

Even though the majority don't allow non-standard transactions into the chain, one someone does, they will eventually trickle into blocks (With Eligius at 15% hashrate a non-standard txn with sufficient fee should confirm within an hour), and at which point they can be spent.
legendary
Activity: 1792
Merit: 1111
April 24, 2014, 05:48:39 AM
#3

what transactions does the protocol try to force to be included in a block?


Nope


what transactions does the protocol try to force to be excluded in a block?


Any invalid transactions
legendary
Activity: 4522
Merit: 3183
Vile Vixen and Miss Bitcointalk 2021-2023
April 24, 2014, 03:37:43 AM
#2
None. A miner has complete freedom to choose which transactions are or are not included in the blocks they mine (by default, transactions paying fees are included in favour of ones that don't, but any arbitrary criteria can be used). However, any transaction that is rejected by one miner may be included in a later block by another miner, and the first miner cannot normally prevent this. However, during a 51% attack, no other miners can get their blocks into the main chain, so no other miners can include transactions that were rejected by the attacker (at least until the attack is over).
legendary
Activity: 1302
Merit: 1008
Core dev leaves me neg feedback #abuse #political
April 24, 2014, 12:06:49 AM
#1
I'm trying to better understand the inner workings of bitcoin so I can contribute my ideas about how to thwart the dangers of a 51% attack.

I understand one of the main threats being that a mining monopolist can arbitrarily exclude transactions.

My question for the moment is: what transactions does the protocol try to force to be included or excluded in a block?
Jump to: