summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleg Andreev <oleganza@gmail.com>2017-04-12 17:43:50 -0700
committerbitcoindev <bitcoindev@gnusha.org>2017-04-13 00:43:53 +0000
commitc85144dc4d35a1325deb5224c75e735ad96cb8c6 (patch)
tree52887bf3c0600b9c07a05f735ac432659d9a0b33
parentd06a98284c3b9010685edb004db5a02ff65c556a (diff)
downloadpi-bitcoindev-c85144dc4d35a1325deb5224c75e735ad96cb8c6.tar.gz
pi-bitcoindev-c85144dc4d35a1325deb5224c75e735ad96cb8c6.zip
[bitcoin-dev] Deploying CT in Bitcoin without extension blocks?
-rw-r--r--69/0ae9cd07ad3735000a35087084925aec1f758e176
1 files changed, 176 insertions, 0 deletions
diff --git a/69/0ae9cd07ad3735000a35087084925aec1f758e b/69/0ae9cd07ad3735000a35087084925aec1f758e
new file mode 100644
index 000000000..a2a25ce8f
--- /dev/null
+++ b/69/0ae9cd07ad3735000a35087084925aec1f758e
@@ -0,0 +1,176 @@
+Return-Path: <oleganza@gmail.com>
+Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
+ [172.17.192.35])
+ by mail.linuxfoundation.org (Postfix) with ESMTPS id C46354A3
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Thu, 13 Apr 2017 00:43:53 +0000 (UTC)
+X-Greylist: whitelisted by SQLgrey-1.7.6
+Received: from mail-pf0-f176.google.com (mail-pf0-f176.google.com
+ [209.85.192.176])
+ by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 38E7E159
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Thu, 13 Apr 2017 00:43:53 +0000 (UTC)
+Received: by mail-pf0-f176.google.com with SMTP id s16so21020058pfs.0
+ for <bitcoin-dev@lists.linuxfoundation.org>;
+ Wed, 12 Apr 2017 17:43:53 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025;
+ h=from:content-transfer-encoding:mime-version:subject:message-id:date
+ :to; bh=+NV6MI8tWdJ6QRRVhDvwZhUw/js4QKsVQ+6AooCYNSE=;
+ b=o9OGdiBVFNaC2Q38hm2bxFHkvy1xCoeN0djUfindH2WEXPQRrM4BXikpfIJD6xf3Bq
+ od0ItlbnAHUe+7Ncd81it3LUF7Rl4y3FU8VefIPOTF6Opiv0IPwZDAnBlOD1RLGS4ZX4
+ nwlychC1f07mYbCH6x1X1CXDuA90gRwLsfPFeg/fPNQXsYjKQZScWcYDNNt2ABXNuILF
+ 0oIMCHrTug+EDEc/e0+PkahKH6hfIBBxKPnJkGjDElfFL2eirzjdHnWCWxj1gHthX7EA
+ G1ydPoSVuBxIe9+ZkYlUH+Z/ljO7GwlskQMu5ph7ZcjtMOEaEB4OBeAh7d/NlWxrDfyP
+ zRTQ==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=1e100.net; s=20161025;
+ h=x-gm-message-state:from:content-transfer-encoding:mime-version
+ :subject:message-id:date:to;
+ bh=+NV6MI8tWdJ6QRRVhDvwZhUw/js4QKsVQ+6AooCYNSE=;
+ b=jU27dNZOWgKvpZZrD7ya102MySnAk+/J7WVqigv68a3IyYt+iARNTzcNQDmKDzoBLC
+ pQ1c10Jur3uXoIi6+xHsMwCcGoqTZr5EOlFA1KQlK/nvEOz8BtEYoRl1OYUPOwf1TGXs
+ xjxxICvo2MLPUKrMtiSwwGlnHwPlXOO5dAKmF2Lb9m0fhulhCJdle8PrwM4DNZ9qugUi
+ ethny0Tk0cbtcOI+4K7Y8zuHQ6I6p08od931yzUO1N88d0DYHy2uTS07xX7to8hx6/NP
+ eHHMDxpwxXGkAo1ML9m0rr2KdsX9cy2HQkZO6eMyru8al8qoSi+6ICPfDfmKKnknD11J
+ oSxQ==
+X-Gm-Message-State: AN3rC/4z16UT92bvcQ6l8oNqCT27EhSl8ZKWBIcmTLpAjBveZ7Pw4xOX
+ Dt4Xm889LWDH3XUPY0w=
+X-Received: by 10.98.59.9 with SMTP id i9mr521584pfa.50.1492044232416;
+ Wed, 12 Apr 2017 17:43:52 -0700 (PDT)
+Received: from [192.168.1.126] ([52.119.113.96])
+ by smtp.gmail.com with ESMTPSA id
+ 11sm38571702pgf.28.2017.04.12.17.43.51
+ for <bitcoin-dev@lists.linuxfoundation.org>
+ (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
+ Wed, 12 Apr 2017 17:43:51 -0700 (PDT)
+From: Oleg Andreev <oleganza@gmail.com>
+Content-Type: text/plain; charset=us-ascii
+Content-Transfer-Encoding: quoted-printable
+Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\))
+Message-Id: <6DF303E6-E379-45FD-947B-BB5F938177E5@gmail.com>
+Date: Wed, 12 Apr 2017 17:43:50 -0700
+To: "bitcoin-dev@lists.linuxfoundation.org"
+ <bitcoin-dev@lists.linuxfoundation.org>
+X-Mailer: Apple Mail (2.3273)
+X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,
+ DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM,
+ RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1
+X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on
+ smtp1.linux-foundation.org
+Subject: [bitcoin-dev] Deploying CT in Bitcoin without extension blocks?
+X-BeenThere: bitcoin-dev@lists.linuxfoundation.org
+X-Mailman-Version: 2.1.12
+Precedence: list
+List-Id: Bitcoin Protocol Discussion <bitcoin-dev.lists.linuxfoundation.org>
+List-Unsubscribe: <https://lists.linuxfoundation.org/mailman/options/bitcoin-dev>,
+ <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=unsubscribe>
+List-Archive: <http://lists.linuxfoundation.org/pipermail/bitcoin-dev/>
+List-Post: <mailto:bitcoin-dev@lists.linuxfoundation.org>
+List-Help: <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=help>
+List-Subscribe: <https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev>,
+ <mailto:bitcoin-dev-request@lists.linuxfoundation.org?subject=subscribe>
+X-List-Received-Date: Thu, 13 Apr 2017 00:43:53 -0000
+
+(This is a sketch, not a fully-formed proposal, just to kick off the =
+discussion.)
+
+Confidential Transactions (by GMaxwell & Poelstra) require a new =
+accounting model,=20
+new representation of numbers (EC points as Pedersen commitments) and =
+range proofs=20
+per number. Setting aside performance and bandwidth concerns (3-4Kb per =
+output,=20
+50x more signature checks), how would we deploy that feature on Bitcoin =
+network=20
+in the most compatible manner?
+
+I'll try to present a sketch of the proposal. I apologize if this =
+discussion already
+happened somewhere, although I couldn't find anything on this subject, =
+apart from Elements=20
+sidechain proposal, of course.
+
+At first glance we could create a new extblock and transaction format, =
+add a protocol to
+"convert" money into and from such extblock, and commit to that extblock =
+from the=20
+outer block's coinbase transaction. Unfortunately, this opens gates to a =
+flood of
+debates such as what should be the block size limit in such block, =
+should we=20
+take opportunity to fix over 9000 of pet-peeve issues with existing =
+transactions
+and blocks, should we adjust inflation schedule, insert additional PoW, =
+what would
+Satoshi say etc. Federated sidechain suffers from the same issues, plus =
+adds=20
+concerns regarding governance, although it would be more decoupled, =
+which is useful.
+
+I tried to look at a possibility to make the change as compatible as =
+possible,
+sticking confidential values right into the existing transaction =
+structure and
+see how that would look like. As a nice bonus, confidential transactions =
+would have=20
+to fit into the hard-coded 1 Mb limit, preserving the drama around it =
+:-P
+
+We start with a segwit-enabled script versioning and introduce 2 new =
+script versions:
+version A has an actual program concatenated with the commitment, while =
+version B=20
+has only the commitment and allows mimblewimble usage (no signatures, =
+non-interactive=20
+cut-through etc). Legacy cleartext amount can nicely act as "min value" =
+to minimize
+the range proof size, and range proofs themselves are provided =
+separately in the
+segregated witness payload.
+
+Then, we soft fork additional rules:
+
+1. In non-coinbase tx, sum of commitments on inputs must balance with =
+sum of commitments
+ on the outputs plus the cleartext mining fee in the witness.
+2. Range proof can be confidential, based on borromean ring signature.
+3. Range proof can be non-confidential, consisting of an amount and raw =
+blinding factor.
+4. Tx witness can have an excess value (cf. MW) and cleartext amount for =
+a miner's fee.
+5. In coinbase tx, total plaintext reward + commitments must balance =
+with subsidy,=20
+ legacy fees and new fees in the witness.
+6. Extra fees in the witness must be signed with the excess value's key.
+
+The confidential transactions use the same UTXO set, can be co-authored =
+with plaintext inputs/outputs
+using legacy software and maybe even improve scalability by compressing =
+on-chain transactions
+using mimblewimble cut-through.
+
+The rules above could have been made more complicated with export/import =
+logic to allow users
+converting their coins to and from confidential ones, but that would =
+require
+more complex support from miners to respect and merge outputs =
+representing "plaintext value bank",
+mutate export transactions, which in turn requires introduction of a =
+non-malleable TxID
+that excludes miner-adjustable export/import outputs.
+
+The rules above have a nice side effect that miners, being the minters =
+of confidential coins,=20
+can sell them at a premium, which creates an incentive for them to =
+actually support
+that feature and work on improving performance of rangeproof validation =
+(e.g. in GPUs).
+
+Would love to hear comments and criticism of that approach.
+
+Thanks!
+Oleg.
+
+
+
+