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:

x -> d

y -> e

w -> g

z -> f

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.