Another coin bites the dust Sergi Delgado Segura Cristina Prez-Sol, - - PowerPoint PPT Presentation

another coin bites the dust
SMART_READER_LITE
LIVE PREVIEW

Another coin bites the dust Sergi Delgado Segura Cristina Prez-Sol, - - PowerPoint PPT Presentation

Another coin bites the dust Sergi Delgado Segura Cristina Prez-Sol, Sergi Delgado-Segura , Guillermo Navarro-Arribas, Jordi Herrera-Joancomart Another coin bites the dust: An analysis of dust in UTXO based cryptocurrencies sr_gi


slide-1
SLIDE 1

Sergi Delgado Segura

Another coin bites the dust

sr_gi

Cristina Pérez-Solà, Sergi Delgado-Segura, Guillermo Navarro-Arribas, Jordi Herrera-Joancomartí Another coin bites the dust: An analysis of dust in UTXO based cryptocurrencies https://eprint.iacr.org/2018/513.pdf

slide-2
SLIDE 2

Bitcoin fees 101

slide-3
SLIDE 3

Bitcoin fees 101

  • Bitcoin fees are the difference between the sum of all input values and the

sum of all output values

slide-4
SLIDE 4

Bitcoin fees 101

  • Bitcoin fees are the difference between the sum of all input values and the

sum of all output values

  • The fees of each transaction can be claimed by miners when the transactions

are included in a block

slide-5
SLIDE 5

Bitcoin fees 101

  • Bitcoin fees are the difference between the sum of all input values and the

sum of all output values

  • The fees of each transaction can be claimed by miners when the transactions

are included in a block

  • All unconfirmed transactions sit in the mempool waiting to be included in

blocks

slide-6
SLIDE 6

Bitcoin fees 101

  • Bitcoin fees are the difference between the sum of all input values and the

sum of all output values

  • The fees of each transaction can be claimed by miners when the transactions

are included in a block

  • All unconfirmed transactions sit in the mempool waiting to be included in

blocks

  • Who decides the transaction inclusion order?
slide-7
SLIDE 7

Bitcoin fees 101

  • Bitcoin fees are the difference between the sum of all input values and the

sum of all output values

  • The fees of each transaction can be claimed by miners when the transactions

are included in a block

  • All unconfirmed transactions sit in the mempool waiting to be included in

blocks

  • Who decides the transaction inclusion order? Miners
slide-8
SLIDE 8

Bitcoin fees 102

slide-9
SLIDE 9

Bitcoin fees 102

  • Incentive for miners to include your transaction in a block
slide-10
SLIDE 10

Bitcoin fees 102

  • Incentive for miners to include your transaction in a block
  • The block size is limited, so the “better” the fee, the higher the chance of

inclusion

slide-11
SLIDE 11

Bitcoin fees 102

  • Incentive for miners to include your transaction in a block
  • The block size is limited, so the “better” the fee, the higher the chance of

inclusion

  • Does better means higher?
slide-12
SLIDE 12

Bitcoin fees 102

  • Incentive for miners to include your transaction in a block
  • The block size is limited, so the “better” the fee, the higher the chance of

inclusion

  • Does better means higher? Not always
slide-13
SLIDE 13

Calculating for the fees

  • Two factors define the fee of a transaction:
slide-14
SLIDE 14

Calculating for the fees

  • Two factors define the fee of a transaction:
  • Transaction size
slide-15
SLIDE 15

Calculating for the fees

  • Two factors define the fee of a transaction:
  • Transaction size
  • Fee rate
slide-16
SLIDE 16

Transaction size

version #inputs #outputs nLockTime 4-byte var size var size 4-byte

value

scriptPubKey scriptPubKey length 8-byte var size var size prev_out_index scriptSig length scriptSig nSequence prev_tx_id 32-byte 4-byte 4-byte var size var size inputs

  • utputs
slide-17
SLIDE 17

Fee rate

Source: https://core.jochen-hoenicke.de

slide-18
SLIDE 18

What if…

slide-19
SLIDE 19

What if…

  • the value of a transaction is low, but the size is high?
slide-20
SLIDE 20

What if…

  • the value of a transaction is low, but the size is high?
  • the fee rate at the time of creating the transaction is too high?
slide-21
SLIDE 21

What if…

  • the value of a transaction is low, but the size is high?
  • the fee rate at the time of creating the transaction is too high?
slide-22
SLIDE 22

Dust definition

slide-23
SLIDE 23

Dust definition

  • The definition is coined by the Bitcoin Core
slide-24
SLIDE 24

Dust definition

  • The definition is coined by the Bitcoin Core
  • Dust is computed in terms of outputs, instead of transactions
slide-25
SLIDE 25

Dust definition

  • The definition is coined by the Bitcoin Core
  • Dust is computed in terms of outputs, instead of transactions
  • An output is said to be dust if the value it is holding is lower than the

fees required to spend it

slide-26
SLIDE 26

Dust definition

  • The definition is coined by the Bitcoin Core
  • Dust is computed in terms of outputs, instead of transactions
  • An output is said to be dust if the value it is holding is lower than the

fees required to spend it

  • Dust depends, therefore, in the state of the network
slide-27
SLIDE 27

Transaction propagation

slide-28
SLIDE 28

Transaction propagation

  • Are then dust transactions invalid?
slide-29
SLIDE 29

Transaction propagation

  • Are then dust transactions invalid?
slide-30
SLIDE 30

Transaction propagation

  • Are then dust transactions invalid?
slide-31
SLIDE 31

Transaction propagation

  • Are then dust transactions invalid?

NO!

slide-32
SLIDE 32

Transaction propagation

  • Are then dust transactions invalid?

NO!

  • Dust transactions are seen as uneconomical transactions, therefore

they are not propagated by the Core client

slide-33
SLIDE 33

Transaction propagation

  • Are then dust transactions invalid?

NO!

  • Dust transactions are seen as uneconomical transactions, therefore

they are not propagated by the Core client

slide-34
SLIDE 34

Transaction propagation

  • Are then dust transactions invalid?

NO!

  • Dust transactions are seen as uneconomical transactions, therefore

they are not propagated by the Core client

Relay rules ≠ Consensus rules

slide-35
SLIDE 35

The usual suspect

slide-36
SLIDE 36

The usual suspect

Really low value outputs

slide-37
SLIDE 37

The usual suspect

Really low value outputs

slide-38
SLIDE 38

Can we flag which uneconomical outputs?

slide-39
SLIDE 39

Can we flag which uneconomical outputs?

slide-40
SLIDE 40

The UTXO set

slide-41
SLIDE 41

The UTXO set

  • The UTXO is a collection of all UTXOs (Unspent Transaction Outputs)
slide-42
SLIDE 42

The UTXO set

  • The UTXO is a collection of all UTXOs (Unspent Transaction Outputs)
  • Every (Bitcoin Core client) full node stores a copy of the set
slide-43
SLIDE 43

The UTXO set

  • The UTXO is a collection of all UTXOs (Unspent Transaction Outputs)
  • Every (Bitcoin Core client) full node stores a copy of the set
  • Each UTXO is an entry in the set
slide-44
SLIDE 44

The UTXO set

  • The UTXO is a collection of all UTXOs (Unspent Transaction Outputs)
  • Every (Bitcoin Core client) full node stores a copy of the set
  • Each UTXO is an entry in the set
  • The value of the UTXO does not affect its size (bigger value != bigger size)
slide-45
SLIDE 45

The UTXO set

  • The UTXO is a collection of all UTXOs (Unspent Transaction Outputs)
  • Every (Bitcoin Core client) full node stores a copy of the set
  • Each UTXO is an entry in the set
  • The value of the UTXO does not affect its size (bigger value != bigger size)
  • In general, the larger the output script, the bigger the UTXO size
slide-46
SLIDE 46

Analyzing the set

slide-47
SLIDE 47

Analyzing the set

  • By analyzing the set we can see which outputs are likely to be

uneconomical under a given fee rate

slide-48
SLIDE 48

Analyzing the set

  • By analyzing the set we can see which outputs are likely to be

uneconomical under a given fee rate

  • Every Bitcoin (Core client) fork shares the same UTXO set format
slide-49
SLIDE 49

Analyzing the set

  • By analyzing the set we can see which outputs are likely to be

uneconomical under a given fee rate

  • Every Bitcoin (Core client) fork shares the same UTXO set format
  • A tool to analyze them all
slide-50
SLIDE 50

Analyzing the set

  • By analyzing the set we can see which outputs are likely to be

uneconomical under a given fee rate

  • Every Bitcoin (Core client) fork shares the same UTXO set format
  • A tool to analyze them all
slide-51
SLIDE 51

STATUS

slide-52
SLIDE 52

STATUS

  • STATUS (STatistical Analysis Tool for Utxo Set)
slide-53
SLIDE 53

STATUS

  • STATUS (STatistical Analysis Tool for Utxo Set)

https://git.io/vAzHL

slide-54
SLIDE 54

STATUS

  • STATUS (STatistical Analysis Tool for Utxo Set)
  • Open source tool (Python)

https://git.io/vAzHL

slide-55
SLIDE 55

STATUS

  • STATUS (STatistical Analysis Tool for Utxo Set)
  • Open source tool (Python)
  • Easy way to access, decode and analyze data from the UTXO set

https://git.io/vAzHL

slide-56
SLIDE 56

STATUS

  • STATUS (STatistical Analysis Tool for Utxo Set)
  • Open source tool (Python)
  • Easy way to access, decode and analyze data from the UTXO set
  • We will see more about it during the working groups

https://git.io/vAzHL

slide-57
SLIDE 57

The question(s)

slide-58
SLIDE 58

The question(s)

  • How many UTXOs are actually worth spending
slide-59
SLIDE 59

The question(s)

  • How many UTXOs are actually worth spending
  • How much space is every full node devoting to store uneconomical
  • utputs?
slide-60
SLIDE 60

The metrics

slide-61
SLIDE 61

The metrics

  • We will define two metrics for uneconomical outputs:
slide-62
SLIDE 62

The metrics

  • We will define two metrics for uneconomical outputs:
  • Dust
slide-63
SLIDE 63

The metrics

  • We will define two metrics for uneconomical outputs:
  • Dust
  • Unprofitable
slide-64
SLIDE 64

The metrics

  • We will define two metrics for uneconomical outputs:
  • Dust
  • Unprofitable
  • Both are defined as outputs that hold less value than the required fees
slide-65
SLIDE 65

The metrics

  • We will define two metrics for uneconomical outputs:
  • Dust
  • Unprofitable
  • Both are defined as outputs that hold less value than the required fees
  • Each one is computed using a different approach
slide-66
SLIDE 66

Dust outputs

slide-67
SLIDE 67

To compute dust, both the analyzed output and a P2PKH input are used

Dust outputs

slide-68
SLIDE 68

To compute dust, both the analyzed output and a P2PKH input are used is_dust(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ (41 + 107/α + 𝔭𝔳𝔲s) 0,

  • therwise

Dust outputs

slide-69
SLIDE 69

To compute dust, both the analyzed output and a P2PKH input are used is_dust(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ (41 + 107/α + 𝔭𝔳𝔲s) 0,

  • therwise

α where is 4 for SegWit outputs, and 1 otherwise

Dust outputs

slide-70
SLIDE 70

Unprofitable outputs

slide-71
SLIDE 71

Unprofitable outputs

To compute it, only an input spending from the analyzed output is used

slide-72
SLIDE 72

Unprofitable outputs

To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,

  • therwise
slide-73
SLIDE 73

Unprofitable outputs

To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,

  • therwise

is the predicted size of the input that will spend output 𝔮𝔰𝔣𝔢_𝔧𝔬s 𝔭𝔳𝔲

slide-74
SLIDE 74

Unprofitable outputs

To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,

  • therwise

and is 4 for SegWit outputs, and 1 otherwise α is the predicted size of the input that will spend output 𝔮𝔰𝔣𝔢_𝔧𝔬s 𝔭𝔳𝔲

slide-75
SLIDE 75

Unprofitable outputs

To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,

  • therwise

and is 4 for SegWit outputs, and 1 otherwise α is the predicted size of the input that will spend output 𝔮𝔰𝔣𝔢_𝔧𝔬s 𝔭𝔳𝔲

slide-76
SLIDE 76

Unprofitable outputs

To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,

  • therwise

and is 4 for SegWit outputs, and 1 otherwise α is the predicted size of the input that will spend output 𝔮𝔰𝔣𝔢_𝔧𝔬s 𝔭𝔳𝔲 We need a way of computing the input size

slide-77
SLIDE 77

Computing the inputs size

slide-78
SLIDE 78

Computing the inputs size

𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size

slide-79
SLIDE 79

Computing the inputs size

version #inputs #outputs nLockTime 4-byte var size var size 4-byte value scriptPubKey scriptPubKey length 8-byte var size var size prev_out_index scriptSig length scriptSig nSequence prev_tx_id 32-byte 4-byte 4-byte var size var size inputs

  • utputs

𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size

slide-80
SLIDE 80

Computing the inputs size

version #inputs #outputs nLockTime 4-byte var size var size 4-byte value scriptPubKey scriptPubKey length 8-byte var size var size prev_out_index scriptSig length scriptSig nSequence prev_tx_id 32-byte 4-byte 4-byte var size var size inputs

  • utputs

𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes

slide-81
SLIDE 81

Computing the inputs size

version #inputs #outputs nLockTime 4-byte var size var size 4-byte value scriptPubKey scriptPubKey length 8-byte var size var size prev_out_index scriptSig length scriptSig nSequence prev_tx_id 32-byte 4-byte 4-byte var size var size inputs

  • utputs

𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes

slide-82
SLIDE 82

Computing the inputs size

version #inputs #outputs nLockTime 4-byte var size var size 4-byte value scriptPubKey scriptPubKey length 8-byte var size var size prev_out_index scriptSig length scriptSig nSequence prev_tx_id 32-byte 4-byte 4-byte var size var size inputs

  • utputs

𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes variable_size = scriptSig_len + scriptSig

slide-83
SLIDE 83

Computing the inputs size

version #inputs #outputs nLockTime 4-byte var size var size 4-byte value scriptPubKey scriptPubKey length 8-byte var size var size prev_out_index scriptSig length scriptSig nSequence prev_tx_id 32-byte 4-byte 4-byte var size var size inputs

  • utputs

𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes variable_size = scriptSig_len + scriptSig

Depends on the UTXO type

slide-84
SLIDE 84

Variable size (non-SegWit)

slide-85
SLIDE 85

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
slide-86
SLIDE 86

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes)
slide-87
SLIDE 87

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes)
  • Pay-to-PubKeyHash (P2PKH) outputs:
slide-88
SLIDE 88

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes)
  • Pay-to-PubKeyHash (P2PKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33-65 bytes)
slide-89
SLIDE 89

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes)
  • Pay-to-PubKeyHash (P2PKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33-65 bytes)
  • Pay-to-multisig (P2MS) outputs:
slide-90
SLIDE 90

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes)
  • Pay-to-PubKeyHash (P2PKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33-65 bytes)
  • Pay-to-multisig (P2MS) outputs:
  • OP_0 (1 byte) + [PUSH sig (1 byte) + sig (71-73 bytes)] * req_sigs (1-20)
slide-91
SLIDE 91

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes)
  • Pay-to-PubKeyHash (P2PKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33-65 bytes)
  • Pay-to-multisig (P2MS) outputs:
  • OP_0 (1 byte) + [PUSH sig (1 byte) + sig (71-73 bytes)] * req_sigs (1-20)
  • Pay-to-ScriptHash (P2SH) outputs:
slide-92
SLIDE 92

Variable size (non-SegWit)

  • Pay-to-PubKey (P2PK) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes)
  • Pay-to-PubKeyHash (P2PKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33-65 bytes)
  • Pay-to-multisig (P2MS) outputs:
  • OP_0 (1 byte) + [PUSH sig (1 byte) + sig (71-73 bytes)] * req_sigs (1-20)
  • Pay-to-ScriptHash (P2SH) outputs:
slide-93
SLIDE 93

Variable size (SegWit)

slide-94
SLIDE 94
  • Pay-to-Witness-Public-Key-Hash (P2WPKH) outputs:

Variable size (SegWit)

slide-95
SLIDE 95
  • Pay-to-Witness-Public-Key-Hash (P2WPKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33 bytes)

Variable size (SegWit)

slide-96
SLIDE 96
  • Pay-to-Witness-Public-Key-Hash (P2WPKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33 bytes)
  • Pay-to-Witnes-ScriptHash (P2WSH) outputs:

Variable size (SegWit)

slide-97
SLIDE 97
  • Pay-to-Witness-Public-Key-Hash (P2WPKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33 bytes)
  • Pay-to-Witnes-ScriptHash (P2WSH) outputs:
  • Variable size (SegWit)

slide-98
SLIDE 98
  • Pay-to-Witness-Public-Key-Hash (P2WPKH) outputs:
  • PUSH sig (1 byte) + sig (71-73 bytes) + PUSH pk (1 byte) + pk (33 bytes)
  • Pay-to-Witnes-ScriptHash (P2WSH) outputs:
  • Variable size (SegWit)

Witness scripts discounted = 1/4

α

slide-99
SLIDE 99

Two metrics for non-profitable

slide-100
SLIDE 100
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input

Two metrics for non-profitable

slide-101
SLIDE 101
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input
  • Signatures: 71 bytes

Two metrics for non-profitable

slide-102
SLIDE 102
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input
  • Signatures: 71 bytes
  • Unknown variable size: Not counted

Two metrics for non-profitable

slide-103
SLIDE 103
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input
  • Signatures: 71 bytes
  • Unknown variable size: Not counted
  • Estimation (unprofitable_est): Estimates the size of the input using blockchain data

Two metrics for non-profitable

slide-104
SLIDE 104
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input
  • Signatures: 71 bytes
  • Unknown variable size: Not counted
  • Estimation (unprofitable_est): Estimates the size of the input using blockchain data
  • Signatures: 72 bytes

Two metrics for non-profitable

slide-105
SLIDE 105
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input
  • Signatures: 71 bytes
  • Unknown variable size: Not counted
  • Estimation (unprofitable_est): Estimates the size of the input using blockchain data
  • Signatures: 72 bytes

Two metrics for non-profitable

slide-106
SLIDE 106
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input
  • Signatures: 71 bytes
  • Unknown variable size: Not counted
  • Estimation (unprofitable_est): Estimates the size of the input using blockchain data
  • Signatures: 72 bytes

Two metrics for non-profitable

Most probable size for an ECDSA signature

slide-107
SLIDE 107
  • Lower bound (unprofitable_low): Takes into account the minimum size of the input
  • Signatures: 71 bytes
  • Unknown variable size: Not counted
  • Estimation (unprofitable_est): Estimates the size of the input using blockchain data
  • Signatures: 72 bytes
  • Uses BlockSci (public key sizes and redeem scripts sizes)

Two metrics for non-profitable

Most probable size for an ECDSA signature

slide-108
SLIDE 108

BlockSci data (PKs)

slide-109
SLIDE 109

BlockSci data (redeem scripts)

slide-110
SLIDE 110

Results - single snapshot

slide-111
SLIDE 111

Results - single snapshot

Fee rate (sat/byte) Portion of UTXOs

slide-112
SLIDE 112

Results - single snapshot

Fee rate (sat/byte) Portion of UTXOs Fee rate (sat/byte) P

  • r

t .

  • f

c

  • i

n s i n c i r c u l a t i

  • n
slide-113
SLIDE 113

Results - implications

slide-114
SLIDE 114

Results - implications

  • 1/2 of the outputs are dust/unprofitable at 100-125 sat/byte (30M UTXOS)
slide-115
SLIDE 115

Results - implications

  • 1/2 of the outputs are dust/unprofitable at 100-125 sat/byte (30M UTXOS)
  • It represents around 1/2 of the size of the UTXO set (1.7 GB)
slide-116
SLIDE 116

Results - implications

  • 1/2 of the outputs are dust/unprofitable at 100-125 sat/byte (30M UTXOS)
  • It represents around 1/2 of the size of the UTXO set (1.7 GB)
  • Its total value is almost worthless (0.015% of total value)
slide-117
SLIDE 117

Results - implications

  • 1/2 of the outputs are dust/unprofitable at 100-125 sat/byte (30M UTXOS)
  • It represents around 1/2 of the size of the UTXO set (1.7 GB)
  • Its total value is almost worthless (0.015% of total value) ≈ 252740 BTC
slide-118
SLIDE 118

Results - evolution

slide-119
SLIDE 119

Results - evolution

Fee rate (sat/byte) Portion of UTXOs

slide-120
SLIDE 120

Results - evolution

Fee rate (sat/byte) Portion of UTXOs

slide-121
SLIDE 121

Results - Litecoin (extreme case)

slide-122
SLIDE 122

Results - Litecoin (extreme case)

Fee rate (lit/byte) Portion of UTXOs

slide-123
SLIDE 123

Results - Litecoin (extreme case)

Fee rate (lit/byte) Portion of UTXOs

  • 70%+ UTXOs are dust

for ≈ 1 lit/byte

slide-124
SLIDE 124

Results - Litecoin (extreme case)

Fee rate (lit/byte) Portion of UTXOs

  • 70%+ UTXOs are dust

for

  • 50% are worth exactly

1 litoshi ≈ 1 lit/byte

slide-125
SLIDE 125

Results - Litecoin (extreme case)

Fee rate (lit/byte) Portion of UTXOs

  • 70%+ UTXOs are dust

for

  • 50% are worth exactly

1 litoshi

  • Spam attack 2011/2012

≈ 1 lit/byte

slide-126
SLIDE 126

Not your keys, not your coins

slide-127
SLIDE 127

Conclusions

slide-128
SLIDE 128
  • A fairly big percentage of the UTXO set is by dust

Conclusions

slide-129
SLIDE 129
  • A fairly big percentage of the UTXO set is by dust
  • The current implementation of the UTXO set can grow unbounded

Conclusions

slide-130
SLIDE 130
  • A fairly big percentage of the UTXO set is by dust
  • The current implementation of the UTXO set can grow unbounded
  • The bigger the set, the less suitable running a full node in optimal

conditions

Conclusions

slide-131
SLIDE 131
  • A fairly big percentage of the UTXO set is by dust
  • The current implementation of the UTXO set can grow unbounded
  • The bigger the set, the less suitable running a full node in optimal

conditions

  • Spam attacks can be performed to make the set grow

Conclusions

slide-132
SLIDE 132

Solutions

slide-133
SLIDE 133
  • TXO commitments (Peter Todd)

Solutions

slide-134
SLIDE 134
  • TXO commitments (Peter Todd)
  • High-performance merkle set (Bram Cohen)

Solutions

slide-135
SLIDE 135
  • TXO commitments (Peter Todd)
  • High-performance merkle set (Bram Cohen)
  • RSA accumulators for UTXOS (Benedikt Bünz, Benjamin Fisch and Dan Boneh)

Solutions

slide-136
SLIDE 136
  • TXO commitments (Peter Todd)
  • High-performance merkle set (Bram Cohen)
  • RSA accumulators for UTXOS (Benedikt Bünz, Benjamin Fisch and Dan Boneh)
  • UTXO accumulators (Tadge Dryja)

Solutions

slide-137
SLIDE 137
  • TXO commitments (Peter Todd)
  • High-performance merkle set (Bram Cohen)
  • RSA accumulators for UTXOS (Benedikt Bünz, Benjamin Fisch and Dan Boneh)
  • UTXO accumulators (Tadge Dryja)
  • May be more

Solutions

slide-138
SLIDE 138

What can YOU do?

slide-139
SLIDE 139
  • Output consolidation when fees are low

What can YOU do?

slide-140
SLIDE 140
  • Output consolidation when fees are low
  • Good coin selection algorithm (specially for exchanges)

What can YOU do?

slide-141
SLIDE 141

Sergi Delgado Segura

Another coin bites the dust

Cristina Pérez-Solà, Sergi Delgado-Segura, Guillermo Navarro-Arribas, Jordi Herrera-Joancomartí Another coin bites the dust: An analysis of dust in UTXO based cryptocurrencies https://eprint.iacr.org/2018/513.pdf

sr_gi