Previous Page
iii.

UTXO

752.

Bitcoin only allows nodes to accept a block if all transactions in it are valid and are not already spent {see the Bitcoin White Paper at [5.5] {L5/26/3}}. The initial release of the Bitcoin Software required there to be an index of historical transactions to enable nodes to check whether the output of a transaction had already been spent {Wuille1 [30] {C1/1/7}}. That index was called blkindex.dat {L8/12/1} and included information about all transactions that had occurred so far, including fully spent transactions, as well as transactions with unspent outputs. The index would point the software to the relevant block data from which the full raw transaction data could be obtained.

753.

As a result of a patch authored by Dr Wuille, and placed by him on GitHub by pull request 1677 in August 2012, a significant optimisation was proposed to that approach. Because a spent transaction cannot be spent again, there was no need for nodes to check new transactions against spent transactions. It was sufficient that nodes confirm that any new transactions were of an unspent output from another transaction. As part of Dr Wuille’s pull request he proposed replacing the transaction index with a database containing just the unspent transaction outputs {Wuille1 [30-31] {C1/1/7}}.

754.

The change proposed by Dr Wuille was introduced in version 0.8 of the Bitcoin Software in February 2013 and resulted in a major performance improvement in the Bitcoin Software because (a) the unspent transaction database was much smaller given that it no longer contained information about spent transactions and (b) there was no need any longer to look up the full transaction data in the blockchain {Wuille1 [30] {C1/1/7}}. Dr Wuille’s change accordingly introduced the concept of a pool of unspent transaction outputs. In addition, it introduced the concept of unspent transaction output caching, by which the software kept a subset of the unspent transaction output database cached in memory for faster access {Wuille1 [31] {C1/1/8}}.

755.

It was in the context of the development of Bitcoin’s treatment of unspent transaction outputs that the abbreviation “UTXO” came into being. Dr Wuille explains that Alan Reiner (who went by the name etotheipi) was the first person to use it. On 21 June 2012 he posted a message on the developers’ chat that he was “going to start using utxo to refer to unspent-txout” {{D1/6/11} at Row 437}. Even some months later, however, the expression had not become well-established {see Wuille1 [31] {C1/1/8}}. In any event, there is no reference to the expression UTXO in the Bitcoin White Paper, in the Bitcoin Software or its updates released by Satoshi Nakamoto or in any of the voluminous emails and forum posts made by Satoshi Nakamoto.

756.

Professor Meiklejohn and Mr Gao were in agreement that the term UTXO began to be adopted in 2012 or so {Meiklejohn1, [45] {G/2/16}, agreed by Gao at {Q/3/2}} and Dr Wright appeared to confirm the position in his eleventh witness statement at Wright11, [578] {CSW/1/107}. That, however, presented a difficulty for Dr Wright:

756.1.

The SEIR_C document refers explicitly to “UTXO caching” {L3/237/13}, to UTXO addresses {L3/237/14} and to the “UTXO pool” {L3/237/15}.

756.2.

A further reliance document alleged to come from 2008, Dr Wright’s Non-Sparse Random Graphs paper {L3/230}, includes a sub-heading referring to UTXO {L3/230/4}.

756.3.

Even one of the documents on the BDO Image, which supposedly dates back to 2007 refers to the UTXO addresses and the “UTXO pool” {PTR-F/39/1}.

757.

Dr Wright’s response to this was to suggest that Satoshi Nakamoto had used the expression UTXO because Dr Wright used it in those three documents. However, the Developers estimated that around 1,000 emails or forum posts written by the real Satoshi Nakamoto are available to the parties and the Court. They submitted that not a single one uses the expression UTXO – and there was no contradiction on this point. Yet, according to Dr Wright, Satoshi is supposed to have used the expression UTXO in 2008 in the precise manner in which UTXO came to be used in 2012 – with UTXO caching and a UTXO pool - in those three documents. I do not find this to be credible.

758.

On this point Dr Wright’s evidence was nothing more than mere assertion:

“139: 6 Q. And if we go to the top of page 15 {L3/237/15}, we can

7 see that this document refers to "the UTXO pool".

8 A. Mm-hm.

9 Q. That only came into existence after the Ultraprune

10 request was updated, right?

11 A. No, that's incorrect. Once again, the models that I'd

12 been building include this. So, what you're assuming is

13 that code and ideas that I'd already got in iDaemon, and

14 other such things, are the only place they exist. And

15 what a UTXO pool is, in my system, is very different to

16 yours.

17 Q. Now, if you were Satoshi Nakamoto, Dr Wright, and if you

18 read this document before you purported -- or you chose

19 to rely on it, before -- sorry, if you were

20 Satoshi Nakamoto and you wanted to present the documents

21 you wanted to rely on, you would have spotted those

22 three anachronisms, wouldn't you?

23 A. No, because they're not. That also goes into things

24 like the orphan block pool, which doesn't, I don't

25 believe, exist in BTC Core, but is something in my

140: 1 software. So when we're talking about that, what we

2 have are competing chains and we've made a pool for

3 that. So using a standard term, that one, you would

4 say, is an anachronism because it's not in core, but

5 it's in my paper.”

759.

Ignoring the irrelevant reference to iDaemon, Dr Wright’s suggestion that he was referring to a different type of UTXO pool to that introduced by the Ultraprune pull request made by Dr Wuille is contradicted by the document to which he was actually referring. That document is specifically addressing the use of the UTXO pool for the purpose of checking double-spending:

In a double spend, a client attempts to spend the same ledger entry in two places, and to separate end addresses, at the same time. The nature of the protocol is such that only one of these competing transactions can be allocated and recorded into the blockchain. Once an amount has been removed from the UTXO pool, it cannot be used again.{L3/237/15}

Next page