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
Bitcoin fees 101
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 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 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 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 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
Bitcoin fees 102
SLIDE 9 Bitcoin fees 102
- Incentive for miners to include your transaction in a block
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 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 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 Calculating for the fees
- Two factors define the fee of a transaction:
SLIDE 14 Calculating for the fees
- Two factors define the fee of a transaction:
- Transaction size
SLIDE 15 Calculating for the fees
- Two factors define the fee of a transaction:
- Transaction size
- Fee rate
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
SLIDE 17 Fee rate
Source: https://core.jochen-hoenicke.de
SLIDE 18
What if…
SLIDE 19 What if…
- the value of a transaction is low, but the size is high?
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 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
Dust definition
SLIDE 23 Dust definition
- The definition is coined by the Bitcoin Core
SLIDE 24 Dust definition
- The definition is coined by the Bitcoin Core
- Dust is computed in terms of outputs, instead of transactions
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 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
Transaction propagation
SLIDE 28 Transaction propagation
- Are then dust transactions invalid?
SLIDE 29 Transaction propagation
- Are then dust transactions invalid?
SLIDE 30 Transaction propagation
- Are then dust transactions invalid?
SLIDE 31 Transaction propagation
- Are then dust transactions invalid?
NO!
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 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 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
The usual suspect
SLIDE 36
The usual suspect
Really low value outputs
SLIDE 37
The usual suspect
Really low value outputs
SLIDE 38
Can we flag which uneconomical outputs?
SLIDE 39
Can we flag which uneconomical outputs?
SLIDE 40
The UTXO set
SLIDE 41 The UTXO set
- The UTXO is a collection of all UTXOs (Unspent Transaction Outputs)
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 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 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 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
Analyzing the set
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 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 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 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
STATUS
SLIDE 52 STATUS
- STATUS (STatistical Analysis Tool for Utxo Set)
SLIDE 53 STATUS
- STATUS (STatistical Analysis Tool for Utxo Set)
https://git.io/vAzHL
SLIDE 54 STATUS
- STATUS (STatistical Analysis Tool for Utxo Set)
- Open source tool (Python)
https://git.io/vAzHL
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 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
The question(s)
SLIDE 58 The question(s)
- How many UTXOs are actually worth spending
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
The metrics
SLIDE 61 The metrics
- We will define two metrics for uneconomical outputs:
SLIDE 62 The metrics
- We will define two metrics for uneconomical outputs:
- Dust
SLIDE 63 The metrics
- We will define two metrics for uneconomical outputs:
- Dust
- Unprofitable
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 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
Dust outputs
SLIDE 67
To compute dust, both the analyzed output and a P2PKH input are used
Dust outputs
SLIDE 68 To compute dust, both the analyzed output and a P2PKH input are used is_dust(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ (41 + 107/α + 𝔭𝔳𝔲s) 0,
Dust outputs
SLIDE 69 To compute dust, both the analyzed output and a P2PKH input are used is_dust(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ (41 + 107/α + 𝔭𝔳𝔲s) 0,
α where is 4 for SegWit outputs, and 1 otherwise
Dust outputs
SLIDE 70
Unprofitable outputs
SLIDE 71
Unprofitable outputs
To compute it, only an input spending from the analyzed output is used
SLIDE 72 Unprofitable outputs
To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,
SLIDE 73 Unprofitable outputs
To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,
is the predicted size of the input that will spend output 𝔮𝔰𝔣𝔢_𝔧𝔬s 𝔭𝔳𝔲
SLIDE 74 Unprofitable outputs
To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,
and is 4 for SegWit outputs, and 1 otherwise α is the predicted size of the input that will spend output 𝔮𝔰𝔣𝔢_𝔧𝔬s 𝔭𝔳𝔲
SLIDE 75 Unprofitable outputs
To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,
and is 4 for SegWit outputs, and 1 otherwise α is the predicted size of the input that will spend output 𝔮𝔰𝔣𝔢_𝔧𝔬s 𝔭𝔳𝔲
SLIDE 76 Unprofitable outputs
To compute it, only an input spending from the analyzed output is used is_unprofitable(𝔭𝔳𝔲) = { 1, 𝔭𝔳𝔲v < 𝔤 ⋅ 𝔮𝔰𝔣𝔢_𝔧𝔬s/α 0,
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
Computing the inputs size
SLIDE 78
Computing the inputs size
𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size
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
𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size
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
𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes
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
𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes
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
𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes variable_size = scriptSig_len + scriptSig
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
𝔮𝔰𝔣𝔢_𝔧𝔬s = fixed_size + variable_size fixed_size = outpoint + nSequence = 40 bytes variable_size = scriptSig_len + scriptSig
Depends on the UTXO type
SLIDE 84
Variable size (non-SegWit)
SLIDE 85 Variable size (non-SegWit)
- Pay-to-PubKey (P2PK) outputs:
SLIDE 86 Variable size (non-SegWit)
- Pay-to-PubKey (P2PK) outputs:
- PUSH sig (1 byte) + sig (71-73 bytes)
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 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 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 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 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 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
Variable size (SegWit)
SLIDE 94
- Pay-to-Witness-Public-Key-Hash (P2WPKH) outputs:
Variable size (SegWit)
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
- 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
- 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
- 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
Two metrics for non-profitable
SLIDE 100
- Lower bound (unprofitable_low): Takes into account the minimum size of the input
Two metrics for non-profitable
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
- 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
- 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
- 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
- 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
- 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
- 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
BlockSci data (PKs)
SLIDE 109
BlockSci data (redeem scripts)
SLIDE 110
Results - single snapshot
SLIDE 111
Results - single snapshot
Fee rate (sat/byte) Portion of UTXOs
SLIDE 112 Results - single snapshot
Fee rate (sat/byte) Portion of UTXOs Fee rate (sat/byte) P
t .
c
n s i n c i r c u l a t i
SLIDE 113
Results - implications
SLIDE 114 Results - implications
- 1/2 of the outputs are dust/unprofitable at 100-125 sat/byte (30M UTXOS)
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 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 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
Results - evolution
SLIDE 119
Results - evolution
Fee rate (sat/byte) Portion of UTXOs
SLIDE 120
Results - evolution
Fee rate (sat/byte) Portion of UTXOs
SLIDE 121
Results - Litecoin (extreme case)
SLIDE 122
Results - Litecoin (extreme case)
Fee rate (lit/byte) Portion of UTXOs
SLIDE 123 Results - Litecoin (extreme case)
Fee rate (lit/byte) Portion of UTXOs
for ≈ 1 lit/byte
SLIDE 124 Results - Litecoin (extreme case)
Fee rate (lit/byte) Portion of UTXOs
for
1 litoshi ≈ 1 lit/byte
SLIDE 125 Results - Litecoin (extreme case)
Fee rate (lit/byte) Portion of UTXOs
for
1 litoshi
≈ 1 lit/byte
SLIDE 126
Not your keys, not your coins
SLIDE 127
Conclusions
SLIDE 128
- A fairly big percentage of the UTXO set is by dust
Conclusions
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
- 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
- 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
Solutions
SLIDE 133
- TXO commitments (Peter Todd)
Solutions
SLIDE 134
- TXO commitments (Peter Todd)
- High-performance merkle set (Bram Cohen)
Solutions
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
- 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
- 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
What can YOU do?
SLIDE 139
- Output consolidation when fees are low
What can YOU do?
SLIDE 140
- Output consolidation when fees are low
- Good coin selection algorithm (specially for exchanges)
What can YOU do?
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