public inbox for bitcoindev@googlegroups.com
 help / color / mirror / Atom feed
* Re: [Bitcoin-development] New standard transaction types: time to schedule a blockchain split?
@ 2011-08-25 20:14 Pieter Wuille
  2011-08-26 11:09 ` Mike Hearn
  0 siblings, 1 reply; 34+ messages in thread
From: Pieter Wuille @ 2011-08-25 20:14 UTC (permalink / raw)
  To: Bitcoin Dev

On Thu, Aug 25, 2011 at 02:31:49PM -0400, Gregory Maxwell wrote:
> Perhaps just an address type that can encode any payment script?  User
> provides the inputs, sets the outputs plus and additional outputs, and
> signs. Client refuses to pay to an address if the resulting
> transaction fails IsStandard.

On the github pull request I posted a general scheme that can convert arbitrary
expressions over signature-checks (given in RPL notation) to bitcoin scripts.
Maybe we can define an address type that encodes an expression in RPL form (which
should be more compact and more easily parseable)?

That basically just means the usual bitcoin scripts, with two extra pseudo-
instructions: one that represents an address check, one that represents an
pubkey check.

For example (same example as on the pull req), the expression
a1 OR (a2 AND a3) OR COUNT(a4,a5,a6)>1 (with a1-a6 given addresses)
can be given in RPL form as

  ADDR<a1> ADDR<a2> ADDR<a3> BOOLAND BOOLOR ADDR<a4> ADDR<a5>
  ADD ADDR<a6> ADD 1 GREATERTHAN BOOLOR

Which is 13 bytes + 6*20 bytes, instead of the 54 bytes + 6*20 bytes for the
real bitcoin output script.


-- 
Pieter



^ permalink raw reply	[flat|nested] 34+ messages in thread
* Re: [Bitcoin-development] New standard transaction types: time to schedule a blockchain split?
@ 2011-08-24 16:18 Pieter Wuille
  2011-08-24 16:26 ` Luke-Jr
  0 siblings, 1 reply; 34+ messages in thread
From: Pieter Wuille @ 2011-08-24 16:18 UTC (permalink / raw)
  To: Bitcoin Dev

On Wed, Aug 24, 2011 at 11:12:10AM -0400, Gavin Andresen wrote:
> So, if we are going to have new releases that are incompatible with
> old clients why not do things right in the first place, implement or
> enable opcodes so the new bitcoin addresses can be small, and schedule
> a block chain split for N months from now.

What was the reason for disabling these opcodes in the first place? I can
understand wanting to prevent excessive signature-verification, or limitation
of arithmetic to a limited amount of bits, but completely disabling all
arithmetic beyond addition and subtraction, and all bitwise operations seems
very limiting to me. Thus, if we agree to do a future incompatible update,
i would vote to re-enable these, and maybe allow arithmetic up to 520 or
1024 bits numbers.

While we're at it, some additional opcodes could be useful. Either a custom
operator to do boolean evaluation, or a few more lowlevel operations. Given
the presence of bitwise operators, you could have scripts that process a
sequence of pubkey/signature pairs, build up a number in which each bit
corresponds to a valid signature, and then do some bitwise checks on this
number. I'd argue that a "count number of bits set in number" opcode would
be very useful for this.

In short: I'm in favor of re-enabling opcodes, and possibly adding an
OP_BITCOUNT operation.

-- 
Pieter



^ permalink raw reply	[flat|nested] 34+ messages in thread
* [Bitcoin-development] New standard transaction types: time to schedule a blockchain split?
@ 2011-08-24 15:12 Gavin Andresen
  2011-08-24 15:17 ` Rick Wesson
                   ` (7 more replies)
  0 siblings, 8 replies; 34+ messages in thread
From: Gavin Andresen @ 2011-08-24 15:12 UTC (permalink / raw)
  To: Bitcoin Dev

It seems to me the fastest path to very secure, very-hard-to-lose
bitcoin wallets is multi-signature transactions.

To organize this discussion: first, does everybody agree?

ByteCoin pointed to a research paper that gives a scheme for splitting
a private key between two people, neither of which every knows the
full key, but, together, both can DSA-sign transactions.  That's very
cool, but it involves high-end cutting-edge crypto like zero-knowledge
proofs that I know very little about (are implementations available?
are they patented?  have they been thoroughly vetted/tested?  etc).
So I'm assuming that is NOT the fastest way to solving the problem.

If anybody has some open-source, patent-free, thoroughly-tested code
that already does DSA-key-splitting, speak up please.


I've been trying to get consensus on low-level 'standard' transactions
for transactions that must be signed by 2 or 3 keys; current draft
proposal is here:
 https://gist.github.com/39158239e36f6af69d6f
and discussion on the forums here:
 https://bitcointalk.org/index.php?topic=38928.0
... and there is a pull request that is relevant here:
 https://github.com/bitcoin/bitcoin/pull/319


I still think it is a good idea to enable a set of new 'standard'
multisignature transactions, so they get relayed and included into
blocks.  I don't want to let "the perfect become the enemy of the
good" -- does anybody disagree?

The arguments against are that if the proposed standard transactions
are accepted, then the next step is to define a new kind of bitcoin
address that lets coins be deposited into a multisignature-protected
wallet.

And those new as-yet-undefined bitcoin addresses will have to be 2 or
3 times as big as current bitcoin addresses, and will be incompatible
with old clients.

So, if we are going to have new releases that are incompatible with
old clients why not do things right in the first place, implement or
enable opcodes so the new bitcoin addresses can be small, and schedule
a block chain split for N months from now.

My biggest worry is we'll say "Sure, it'll only take a couple days to
agree on how to do it right" and six months from now there is still no
consensus on exactly which digest function should be used, or whether
or not there should be a new opcode for arbitrary boolean expressions
involving keypairs.  And people's wallets continue to get lost or
stolen.



-- 
--
Gavin Andresen



^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2011-08-27  1:36 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-08-25 20:14 [Bitcoin-development] New standard transaction types: time to schedule a blockchain split? Pieter Wuille
2011-08-26 11:09 ` Mike Hearn
2011-08-26 21:30   ` Pieter Wuille
  -- strict thread matches above, loose matches on Subject: below --
2011-08-24 16:18 Pieter Wuille
2011-08-24 16:26 ` Luke-Jr
2011-08-24 15:12 Gavin Andresen
2011-08-24 15:17 ` Rick Wesson
2011-08-24 15:45 ` Gregory Maxwell
2011-08-24 15:55   ` Rick Wesson
2011-08-24 16:05 ` Douglas Huff
2011-08-24 16:15 ` Luke-Jr
2011-08-24 16:46   ` Gregory Maxwell
2011-08-24 17:03     ` Luke-Jr
2011-08-24 17:07     ` Rick Wesson
2011-08-24 17:19       ` Gregory Maxwell
2011-08-24 17:40         ` Rick Wesson
2011-08-24 17:57           ` Gavin Andresen
2011-08-24 18:45             ` Jeff Garzik
2011-08-25  7:39             ` Michael Grønager
2011-08-25 17:18               ` Gavin Andresen
2011-08-26 10:50                 ` Mike Hearn
2011-08-27  1:36                 ` bgroff
2011-08-25 18:31               ` Gregory Maxwell
     [not found]                 ` <20110825201026.GA21380@ulyssis.org>
2011-08-25 20:29                   ` Gregory Maxwell
2011-08-25 21:06                     ` Pieter Wuille
2011-08-24 17:03 ` theymos
2011-08-24 17:47 ` bgroff
2011-08-24 19:05 ` Christian Decker
2011-08-24 20:29   ` Gregory Maxwell
2011-08-24 22:27     ` Douglas Huff
2011-08-25 21:30     ` Christian Decker
2011-08-26 11:42 ` Mike Hearn
2011-08-26 19:44   ` Gavin Andresen
2011-08-27  1:15     ` bgroff

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox