Return-Path: <mark@friedenbach.org>
Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org
	[172.17.192.35])
	by mail.linuxfoundation.org (Postfix) with ESMTPS id BE198102A
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Tue,  9 Jan 2018 12:40:38 +0000 (UTC)
X-Greylist: whitelisted by SQLgrey-1.7.6
Received: from mail-pg0-f50.google.com (mail-pg0-f50.google.com [74.125.83.50])
	by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 659D1A3
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Tue,  9 Jan 2018 12:40:36 +0000 (UTC)
Received: by mail-pg0-f50.google.com with SMTP id z20so5621965pgv.6
	for <bitcoin-dev@lists.linuxfoundation.org>;
	Tue, 09 Jan 2018 04:40:36 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=friedenbach-org.20150623.gappssmtp.com; s=20150623;
	h=mime-version:subject:from:in-reply-to:date:cc
	:content-transfer-encoding:message-id:references:to;
	bh=U3bD0coz2LWr7GuQTb9pdDHQpBBYQn8YNn39DIKQejU=;
	b=P+Pss+Pq0mcf+pncjRr28WZ3BuFcEv86INI/GzxtbxmfidpS6ld4voJFnm9qnvpD9R
	CQagCHBQMxf/V+kxSivj+o4FewQZzzMGmjuBIw4iPWeqeyidG5wZo9gzOp8XUwh/Eua6
	dTWsOfX08VIVGpJ76TQeqlMqZ9knMKXSvqcZMaRNiOv/sqXmroyauVPKM1HIdG23XaR3
	zrrrV491QahGX3hWAz1oKRT4rnI1+ZAco3fczLjAXHkXdThaBl0RSLsii8gk6Y9rCMuJ
	1Gm9+apeb2JP3bWPHFh8zpBrg5tsXQhwEv/RfWMjH22VtckEWOFfJGN0Xk0yrdrCDj3+
	p0eA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
	d=1e100.net; s=20161025;
	h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
	:content-transfer-encoding:message-id:references:to;
	bh=U3bD0coz2LWr7GuQTb9pdDHQpBBYQn8YNn39DIKQejU=;
	b=i+KQ++MdxIdk67kOHNbWzYKHvV5TIzKABOd7dJZXgKI4QR8er8YIqCR3FQtJ/YDyJw
	0quWgxl1tZV4c+zNpc9ZzdSSlZJE6zXgaog1S4DZmH3wb6LP+aWpPXrzvlFwkDv7Jsbd
	523OTTlDZg3SmanwfUoNkxahJglmxSw4QeshIuHh+Rl48T/gydl5/3PPPVdlehkWPbvC
	z8ZwG4X8TXKg1dSx85246XFOTubFbWeD0f1vkgoPO491LdW3AeWgERv18RryeLOY+zLo
	BDMJ9JwFYIL3tVqdnbQZvGigC83x1IbG9vmdJhs4aokhhwC9F2pyEcvfHmWAk0L0X7Pl
	JkPw==
X-Gm-Message-State: AKGB3mLtOW6Y0WJvUpMskRkwQ2xGf/jdn+U57j4Hv48f9gjvarZM8yh/
	1RWJilqjY0F9+V9s+CMZ9S9LrA==
X-Google-Smtp-Source: ACJfBosIe/qo4go4OD++F2EMpwgRwFvC5TnG9tgk0RL67XGfyC1BTFJBz/QcuguYh6zEUgZVciWm0w==
X-Received: by 10.99.126.86 with SMTP id o22mr8261910pgn.364.1515501635920;
	Tue, 09 Jan 2018 04:40:35 -0800 (PST)
Received: from [26.253.30.111] (mf42736d0.tmodns.net. [208.54.39.244])
	by smtp.gmail.com with ESMTPSA id
	g2sm11033347pfh.62.2018.01.09.04.40.34
	(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
	Tue, 09 Jan 2018 04:40:34 -0800 (PST)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (1.0)
From: Mark Friedenbach <mark@friedenbach.org>
X-Mailer: iPhone Mail (15C153)
In-Reply-To: <87608btgyd.fsf@rustcorp.com.au>
Date: Tue, 9 Jan 2018 21:40:30 +0900
Content-Transfer-Encoding: quoted-printable
Message-Id: <DB7E57AC-5588-4BBA-9ABC-B9B4F6BAECE2@friedenbach.org>
References: <87608btgyd.fsf@rustcorp.com.au>
To: Rusty Russell <rusty@rustcorp.com.au>
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID, MIME_QP_LONG_LINE,
	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
Cc: Bitcoin Protocol Discussion <bitcoin-dev@lists.linuxfoundation.org>,
	Russell O'Connor <roconnor@blockstream.com>,
	Kalle Alm <kalle.alm@gmail.com>
Subject: Re: [bitcoin-dev] BIP 117 Feedback
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: Tue, 09 Jan 2018 12:40:38 -0000

The use of the alt stack is a hack for segwit script version 0 which has the=
 clean stack rule. Anticipated future improvements here are to switch to a w=
itness script version, and a new segwit output version which supports native=
 MAST to save an additional 40 or so witness bytes. Either approach would al=
low getting rid of the alt stack hack. They are not part of the proposal now=
 because it is better to do things incrementally, and because we anticipate u=
sage of MAST to better inform these less generic changes.

Your suggestion of =E2=80=9Csingle blob on the stack=E2=80=9D seems to be ex=
actly this proposal afaict? Note the witness data needs to be passed separat=
ely because signatures can=E2=80=99t be included in that single blob if that=
 blob is hashed and compared against something in the scriptPubKey.

The sigop and opcode limit drop can be justified with some back of the envel=
ope calculations. Non-scriptPubKey scripts are fundamentally limited by bloc=
ksize/weight and the most damage you can do, as an adversary, is limited by s=
pace. The most expensive thing you can do check a signature. Our assumptions=
 about block size safety are basically due to how much computation you can s=
tuff in a block with checksigs =E2=80=94 all the analysis there applies.

My suggestion is to limit the number of checksigs allowed in a script to siz=
e(script+witness)/64, but I wanted this to come up in review rather than com=
plicate the code right off the bat.

I will make a strong assertion: static analyzing the number of opcodes and s=
igops gets us absolutely nothing. It is cargo cult safety engineering. No ne=
ed to perpetuate it when it is now in the way.

Sent from my iPhone

> On Jan 9, 2018, at 8:22 PM, Rusty Russell <rusty@rustcorp.com.au> wrote:
>=20
> I've just re-read BIP 117, and I'm concerned about its flexibility.  It
> seems to be doing too much.
>=20
> The use of altstack is awkward, and makes me query this entire approach.
> I understand that CLEANSTACK painted us into a corner here :(
>=20
> The simplest implementation of tail recursion would be a single blob: if
> a single element is left on the altstack, pop and execute it.  That
> seems trivial to specify.  The treatment of concatenation seems like
> trying to run before we can walk.
>=20
> Note that if we restrict this for a specific tx version, we can gain
> experience first and get fancier later.
>=20
> BIP 117 also drops SIGOP and opcode limits.  This requires more
> justification, in particular, measurements and bounds on execution
> times.  If this analysis has been done, I'm not aware of it.
>=20
> We could restore statically analyzability by rules like so:
> 1.  Only applied for tx version 3 segwit txs.
> 2.  For version 3, top element of stack is counted for limits (perhaps
>    with discount).
> 3.  The blob popped off for tail recursion must be identical to that top
>    element of the stack (ie. the one counted above).
>=20
> Again, future tx versions could drop such restrictions.
>=20
> Cheers,
> Rusty.