Re: Bitcoin P2P e-cash paper

Hal Finney wrote:
> I think it is necessary that nodes keep a separate
> pending-transaction list associated with each candidate chain.
> … One might also ask … how many candidate chains must
> a given node keep track of at one time, on average?

Fortunately, it’s only necessary to keep a pending-transaction pool for the
current best branch. When a new block arrives for the best branch,
ConnectBlock removes the block’s transactions from the pending-tx pool. If a
different branch becomes longer, it calls DisconnectBlock on the main branch
down to the fork, returning the block transactions to the pending-tx pool, and
calls ConnectBlock on the new branch, sopping back up any transactions that
were in both branches. It’s expected that reorgs like this would be rare and

With this optimisation, candidate branches are not really any burden. They
just sit on the disk and don’t require attention unless they ever become the
main chain.

> Or as James raised earlier, if the network broadcast
> is reliable but depends on a potentially slow flooding
> algorithm, how does that impact performance?

Broadcasts will probably be almost completely reliable. TCP transmissions are
rarely ever dropped these days, and the broadcast protocol has a retry
mechanism to get the data from other nodes after a while. If broadcasts turn
out to be slower in practice than expected, the target time between blocks may
have to be increased to avoid wasting resources. We want blocks to usually
propagate in much less time than it takes to generate them, otherwise nodes
would spend too much time working on obsolete blocks.

I’m planning to run an automated test with computers randomly sending payments
to each other and randomly dropping packets.

> 3. The bitcoin system turns out to be socially useful and valuable, so
> that node operators feel that they are making a beneficial contribution
> to the world by their efforts (similar to the various “@Home” compute
> projects where people volunteer their compute resources for good causes).
> In this case it seems to me that simple altruism can suffice to keep the
> network running properly.

It’s very attractive to the libertarian viewpoint if we can explain it
properly. I’m better with code than with words though.

Satoshi Nakamoto

114,710 total views, 5 views today