Mimblewimble: Private, Massively-Prunable Blockchains Andrew - - PowerPoint PPT Presentation

mimblewimble private massively prunable blockchains
SMART_READER_LITE
LIVE PREVIEW

Mimblewimble: Private, Massively-Prunable Blockchains Andrew - - PowerPoint PPT Presentation

Mimblewimble: Private, Massively-Prunable Blockchains Andrew Poelstra grindelwald@wpsoftware.net January 27, 2016 1 / 49 What is Mimblewimble? Mimblewimble is a design for a blockchain-based ledger that is very different from Bitcoin. 2 /


slide-1
SLIDE 1

Mimblewimble: Private, Massively-Prunable Blockchains

Andrew Poelstra

grindelwald@wpsoftware.net

January 27, 2016

1 / 49

slide-2
SLIDE 2

What is Mimblewimble?

Mimblewimble is a design for a blockchain-based ledger that is very different from Bitcoin.

2 / 49

slide-3
SLIDE 3

What is Mimblewimble?

Mimblewimble is a design for a blockchain-based ledger that is very different from Bitcoin. In Bitcoin transactions, old outputs sign new outputs; outputs have “script pubkeys” that are independent of each other. In Mimblewimble transactions, outputs have only EC pubkeys, and the difference between new outputs’ keys and old ones’ is multisigned by all transacting parties.

3 / 49

slide-4
SLIDE 4

What is Mimblewimble?

Mimblewimble is a design for a blockchain-based ledger that is very different from Bitcoin. In Bitcoin transactions, old outputs sign new outputs; outputs have “script pubkeys” that are independent of each other. In Mimblewimble transactions, outputs have only EC pubkeys, and the difference between new outputs’ keys and old ones’ is multisigned by all transacting parties. These outputs, or “transaction kernels”, are the only thing that needs to be retained in the blockchain.

4 / 49

slide-5
SLIDE 5

What is Mimblewimble?

Mimblewimble is a design for a blockchain-based ledger that is very different from Bitcoin. In Bitcoin transactions, old outputs sign new outputs; outputs have “script pubkeys” that are independent of each other. In Mimblewimble transactions, outputs have only EC pubkeys, and the difference between new outputs’ keys and old ones’ is multisigned by all transacting parties. These outputs, or “transaction kernels”, are the only thing that needs to be retained in the blockchain. Mimblewimble outputs (and inputs) are inherently scriptless.

5 / 49

slide-6
SLIDE 6

History

04:30 UTC, August 2nd, 2016: “Tom Elvis Jedusor” posts a .onion link to a text file on IRC and disappears

6 / 49

slide-7
SLIDE 7

History

04:30 UTC, August 2nd, 2016: “Tom Elvis Jedusor” posts a .onion link to a text file on IRC and disappears Next morning: myself and Bryan Bishop verify it’s actually just text and rehost it.

7 / 49

slide-8
SLIDE 8

History

04:30 UTC, August 2nd, 2016: “Tom Elvis Jedusor” posts a .onion link to a text file on IRC and disappears Next morning: myself and Bryan Bishop verify it’s actually just text and rehost it. Following week: discussion on Reddit with Greg Sanders and

  • thers leads to understanding Mimblewimble’s trust model,

and hints that the new crypto has merit.

8 / 49

slide-9
SLIDE 9

History

04:30 UTC, August 2nd, 2016: “Tom Elvis Jedusor” posts a .onion link to a text file on IRC and disappears Next morning: myself and Bryan Bishop verify it’s actually just text and rehost it. Following week: discussion on Reddit with Greg Sanders and

  • thers leads to understanding Mimblewimble’s trust model,

and hints that the new crypto has merit. October 8th: paper shows Avi Kularni’s and my work extending/formalizing this; presented at Scaling Bitcoin Milan

9 / 49

slide-10
SLIDE 10

History

At 23:47 UTC, October 20, “Ignotus Peverell” appeared on IRC announcing a project to implement MimbleWimble.

10 / 49

slide-11
SLIDE 11

History

At 23:47 UTC, October 20, “Ignotus Peverell” appeared on IRC announcing a project to implement MimbleWimble. A few minutes later, Bryan Bishop called me to tell me to join the conversation. I pointed out that aggregate signatures give space savings on top of the Voldemort scheme, even without new crypto.

11 / 49

slide-12
SLIDE 12

History

At 23:47 UTC, October 20, “Ignotus Peverell” appeared on IRC announcing a project to implement MimbleWimble. A few minutes later, Bryan Bishop called me to tell me to join the conversation. I pointed out that aggregate signatures give space savings on top of the Voldemort scheme, even without new crypto. Other Harry Potter characters arrived over the next few weeks; the project continues to move forward. Though I’ve been involved with the project, I have not contributed any

  • code. I am certainly not Ignotus Peverell.

12 / 49

slide-13
SLIDE 13

History

At 23:47 UTC, October 20, “Ignotus Peverell” appeared on IRC announcing a project to implement MimbleWimble. A few minutes later, Bryan Bishop called me to tell me to join the conversation. I pointed out that aggregate signatures give space savings on top of the Voldemort scheme, even without new crypto. Other Harry Potter characters arrived over the next few weeks; the project continues to move forward. Though I’ve been involved with the project, I have not contributed any

  • code. I am certainly not Ignotus Peverell.

January 17th, 2017: I meet with Ethan Heilman of TumbleBit

  • fame. We go back and forth on Lightning, ZKCP, etc., and

discover a powerful new primitive to get all these things on MimbleWimble.

13 / 49

slide-14
SLIDE 14

History

At 23:47 UTC, October 20, “Ignotus Peverell” appeared on IRC announcing a project to implement MimbleWimble. A few minutes later, Bryan Bishop called me to tell me to join the conversation. I pointed out that aggregate signatures give space savings on top of the Voldemort scheme, even without new crypto. Other Harry Potter characters arrived over the next few weeks; the project continues to move forward. Though I’ve been involved with the project, I have not contributed any

  • code. I am certainly not Ignotus Peverell.

January 17th, 2017: I meet with Ethan Heilman of TumbleBit

  • fame. We go back and forth on Lightning, ZKCP, etc., and

discover a powerful new primitive to get all these things on MimbleWimble. The next day, Ruben Somsen messaged me on Reddit explaining how to get non-expiring bidirectonal channels.

14 / 49

slide-15
SLIDE 15

Mimblewimble Transactions

A Mimblewimble transaction is the following data: Inputs (references to old outputs).

15 / 49

slide-16
SLIDE 16

Mimblewimble Transactions

A Mimblewimble transaction is the following data: Inputs (references to old outputs). Outputs: confidential transaction outputs (group elements, which blind and commit to amounts), plus rangeproofs.

16 / 49

slide-17
SLIDE 17

Mimblewimble Transactions

A Mimblewimble transaction is the following data: Inputs (references to old outputs). Outputs: confidential transaction outputs (group elements, which blind and commit to amounts), plus rangeproofs. Kernel: algebraically, difference between outputs and inputs (group element); morally a multisignature key for all transacting parties. Kernel signature: the kernel must sign itself to prove that the transaction is honestly constructed; by signing other blockchain-enforced data we can add additional functionality (e.g. locktimes).

17 / 49

slide-18
SLIDE 18

Mimblewimble Transactions

18 / 49

slide-19
SLIDE 19

Mimblewimble Transactions

19 / 49

slide-20
SLIDE 20

Mimblewimble Transactions

20 / 49

slide-21
SLIDE 21

Mimblewimble Transactions

21 / 49

slide-22
SLIDE 22

Mimblewimble Transactions

22 / 49

slide-23
SLIDE 23

Mimblewimble Transactions

23 / 49

slide-24
SLIDE 24

Mimblewimble Transactions

24 / 49

slide-25
SLIDE 25

Mimblewimble Transactions

25 / 49

slide-26
SLIDE 26

Scaling: Real Numbers

In Bitcoin there are 150 million transactions with about 350 million outputs, and 45 million of which are unspent.

26 / 49

slide-27
SLIDE 27

Scaling: Real Numbers

In Bitcoin there are 150 million transactions with about 350 million outputs, and 45 million of which are unspent. This takes about 100Gb of space on disk today; with CT this would be over 1Tb!

27 / 49

slide-28
SLIDE 28

Scaling: Real Numbers

In Bitcoin there are 150 million transactions with about 350 million outputs, and 45 million of which are unspent. This takes about 100Gb of space on disk today; with CT this would be over 1Tb! MimbleWimble gives us CT and requires storing: 15Gb of transaction kernels, headers etc.; 2Gb of unspent outputs, and 100Gb of UTXO rangeproofs.

28 / 49

slide-29
SLIDE 29

Scaling: Real Numbers

In Bitcoin there are 150 million transactions with about 350 million outputs, and 45 million of which are unspent. This takes about 100Gb of space on disk today; with CT this would be over 1Tb! MimbleWimble gives us CT and requires storing: 15Gb of transaction kernels, headers etc.; 2Gb of unspent outputs, and 100Gb of UTXO rangeproofs. In pre-segwit Bitcoin, none of this is separable “witness data” which can be dropped in exchange for trust. In MW the rangeproofs are, leaving less than 20Gb of normative blockchain space.

29 / 49

slide-30
SLIDE 30

Trust Model: Blockchain

It should be verifiable that A transaction, once committed to a block, cannot be reversed without doing enough work to rewrite the block (and all its descendants).

30 / 49

slide-31
SLIDE 31

Trust Model: Blockchain

It should be verifiable that A transaction, once committed to a block, cannot be reversed without doing enough work to rewrite the block (and all its descendants). The current state of all coins reflects zero net theft and inflation.

31 / 49

slide-32
SLIDE 32

Trust Model: Blockchain

It should be verifiable that A transaction, once committed to a block, cannot be reversed without doing enough work to rewrite the block (and all its descendants). The current state of all coins reflects zero net theft and inflation. The exact structure of each individual transaction does not need to be publicly verifiable.

32 / 49

slide-33
SLIDE 33

Claim or Refund

MimbleWimble supports Information ⇔ Money

33 / 49

slide-34
SLIDE 34

Claim or Refund

MimbleWimble supports Information ⇔ Money Kernels sign not only themselves; but also (optionally) a locktime and a hash. A valid transaction must include the preimage of this hash.

34 / 49

slide-35
SLIDE 35

Claim or Refund

MimbleWimble supports Information ⇔ Money Kernels sign not only themselves; but also (optionally) a locktime and a hash. A valid transaction must include the preimage of this hash. To do a hash-locktimed transaction, buying party sends coins to a 2-of-2 multisig output, conditioned on the seller signing a transaction to return the money at a later block.

35 / 49

slide-36
SLIDE 36

Claim or Refund

MimbleWimble supports Information ⇔ Money Kernels sign not only themselves; but also (optionally) a locktime and a hash. A valid transaction must include the preimage of this hash. To do a hash-locktimed transaction, buying party sends coins to a 2-of-2 multisig output, conditioned on the seller signing a transaction to return the money at a later block. The buyer then signs a transaction sending the money to the seller, signing the hash she wants the preimage to.

36 / 49

slide-37
SLIDE 37

Claim or Refund

MimbleWimble supports Information ⇔ Money Kernels sign not only themselves; but also (optionally) a locktime and a hash. A valid transaction must include the preimage of this hash. To do a hash-locktimed transaction, buying party sends coins to a 2-of-2 multisig output, conditioned on the seller signing a transaction to return the money at a later block. The buyer then signs a transaction sending the money to the seller, signing the hash she wants the preimage to. The seller, to complete the transaction and take the coins, must reveal the preimage.

37 / 49

slide-38
SLIDE 38

Claim or Refund

MimbleWimble supports Information ⇔ Money Kernels sign not only themselves; but also (optionally) a locktime and a hash. A valid transaction must include the preimage of this hash. To do a hash-locktimed transaction, buying party sends coins to a 2-of-2 multisig output, conditioned on the seller signing a transaction to return the money at a later block. The buyer then signs a transaction sending the money to the seller, signing the hash she wants the preimage to. The seller, to complete the transaction and take the coins, must reveal the preimage. This primitive is the basis of: cross-chain atomic swaps, ZKCP’s, Lighting Channels, TumbleBit, and more.

38 / 49

slide-39
SLIDE 39

Secret Atomic Swaps

For atomic swaps, we are exchanging a signature on one transaction for a signature on another.

39 / 49

slide-40
SLIDE 40

Secret Atomic Swaps

For atomic swaps, we are exchanging a signature on one transaction for a signature on another. This can be done algebraically such that the two signatures are not related in a publicly verifiable way (and is deniable)

40 / 49

slide-41
SLIDE 41

Secret Atomic Swaps

For atomic swaps, we are exchanging a signature on one transaction for a signature on another. This can be done algebraically such that the two signatures are not related in a publicly verifiable way (and is deniable) Since the locktimed transaction never touches the blockchain unless something goes wrong, the default case is that the atomic swap is indistinguishable from any other transaction.

41 / 49

slide-42
SLIDE 42

Next Steps

Development, development, development!

42 / 49

slide-43
SLIDE 43

Next Steps

Development, development, development! Wallet support: multisig rangeproofs, triggers, secret atomic swaps, etc.

43 / 49

slide-44
SLIDE 44

Next Steps

Development, development, development! Wallet support: multisig rangeproofs, triggers, secret atomic swaps, etc. ValueShuffle

44 / 49

slide-45
SLIDE 45

Open Problems

Smaller rangeproofs? Aggregation of rangeproofs?

45 / 49

slide-46
SLIDE 46

Open Problems

Smaller rangeproofs? Aggregation of rangeproofs? Peer-to-peer layer that avoids monitoring (ValueShuffle?)

46 / 49

slide-47
SLIDE 47

Open Problems

Smaller rangeproofs? Aggregation of rangeproofs? Peer-to-peer layer that avoids monitoring (ValueShuffle?) Quantum resistance

47 / 49

slide-48
SLIDE 48

Thank You Andrew Poelstra <grindelwald@wpsoftware.net>

48 / 49