Let me go into a little more detail. Let's assume there is a way to sign a bit using a pubkey, there is a blockchain, there is 4 people who already own 4 coins on the blockchain. The system works as follows:
The 4 people who own coins are the initial 4 debitors, denoted by their pubkeys x y w z.
They want to send 4 coins to 4 other people, and there are 4 additional users (scammers).
Together the 4 receivers and 4 scammers are the 8 creditors. Denoted by their pubkeys a, b, c, d, e, f, g, h.
The debitors want to send coin to these creditors:
as you can see a, b, c, h are the scammers.
What first happens is
collect &
partition. The miner collects the 8 creditor pubkeys into a block and mines that. The miner randomly splits creditors into two halves:
a b c d | e f g h
x y | z w
What next happens is
vote. Everyone votes in which half the counterparty is.
4 debitors vote:
x y | z w
< > > >
8 creditors vote:
a b c d | e f g h
> < > < < > > >
What next happens is
matrix. A system of linear equations is built from all prior knowledge about who sends / receives coins from whom. This system has the more equations the more times is the algorithm repeated. Because it has more equations if eventually has a solution. The solution is the set of people who receive coins.
But nobody knows (not even miner) that X send coin to D except X and D.