Delivery-date: Tue, 30 Sep 2025 16:02:46 -0700 Received: from mail-oa1-f60.google.com ([209.85.160.60]) by mail.fairlystable.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1v3jMr-00040Z-Qm for bitcoindev@gnusha.org; Tue, 30 Sep 2025 16:02:46 -0700 Received: by mail-oa1-f60.google.com with SMTP id 586e51a60fabf-35568e6088asf8623506fac.0 for ; Tue, 30 Sep 2025 16:02:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1759273359; cv=pass; d=google.com; s=arc-20240605; b=Na6lcf0zzEm9qspqF+3McY2+5LMK+91/zNBNr5qoepzfmZ18sIKoCg+t2oGfLGBJH7 tKmY2e5eBPCUjC8/NqTfen75EJ/5FddyOBGOmGQg5RkK0N5ZVi1bSDRo0V0oRB7j/0SZ JZU41jzveT/dgdd9gS8r99xyqeG0aPeIzTCHc9Qf/ufCK6vUq1Jla9qCHK7dV9PTW40Y R2aQH593KbDMNOcNCuc3D3MRibrtYYKvsKmYb+3GH4v8FRUwNOyH1j0HNZvxx/lUd/8Y maQl2wWtFIkbFc/W6IeLOlVk//nG2j8KmVf9x2UA8FTXhnXqEZbZd71E50S7qn+j+UvH HvQg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to:autocrypt :content-transfer-encoding:mime-version:message-id:references :in-reply-to:user-agent:subject:to:from:date:dkim-signature; bh=ofyBlBMNsc/Zbv+Qap17sKAgWzi5iM8XL+f+WNuS77I=; fh=oKjhHn2GpCdU/2O5tXg/LSBkKfr+CgOs81+sVKx5UxM=; b=BZXFzQe0GY8g/c+HL77xW2XmWqoLibOoCx7KAmVmyGNi1/RnNDtVc3ivu7d3TH264N RC4fb0GfL9X+pueDv3/LvuFUnCWisdeP7ZMT9pPpMcGByy898xsBzZ8VpZd0htEMCOaY VeLr1Dnjkiyagmql3atWYTCpQzQcEP0EebItLuMW/AAyj4KG+uMwEaGurtr4eZKN/JF4 4j54EllzVdYetwTC5YezPU/ZqJ1aFxWEQzaux3Olbba3XfDx8ZlG3ahnzXfZufPx3P7D JLeJMgXE7Rt6AOKsdOsXhU9v1Jv38lmwY2Nd9uWahR5mcixxWAiQYQAv/xH+vx2iR4p2 dJOw==; darn=gnusha.org ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@drbonez.dev header.s=default header.b="e2+dU0/r"; spf=pass (google.com: domain of me@drbonez.dev designates 198.54.127.69 as permitted sender) smtp.mailfrom=me@drbonez.dev; dmarc=pass (p=REJECT sp=QUARANTINE dis=NONE) header.from=drbonez.dev DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1759273359; x=1759878159; darn=gnusha.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:autocrypt :content-transfer-encoding:mime-version:message-id:references :in-reply-to:user-agent:subject:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=ofyBlBMNsc/Zbv+Qap17sKAgWzi5iM8XL+f+WNuS77I=; b=lq5RBSJm4ThQSZLmxABTTE5QOs2PSz5tGj7zjRjwNcncZtkV0Jb57A5dlTlQGLeFyt +WBbQ1lrHoIsgOKeC0R83NNG4oV73I8YP5pV2zrYNSOCdSGzyQf68tlbtV4LYTwRTBEo KE4vYHSZoVIbwt8bQV+/2y1w/a9Zh8Wjd99eT+kG1z4BQieJ3fBRfwAPgw9gP7hwLN4f O2pjFeK254xEuD2HY63IBpanumUq2s6GRSSLjTYtZHttfkKBuxSWprxGgczGjqpDl29c R90yMT/K/sXdjjLxylIC+yJpiRaNebsqgGFlNDJZgScZ6jXJi+FC69tXM+NlWuotahaE X2KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1759273359; x=1759878159; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:reply-to :x-original-authentication-results:x-original-sender:autocrypt :content-transfer-encoding:mime-version:message-id:references :in-reply-to:user-agent:subject:to:from:date:x-beenthere :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ofyBlBMNsc/Zbv+Qap17sKAgWzi5iM8XL+f+WNuS77I=; b=f4KVpg2qfyORWv83UD9GiDyP8M3Pv+lbkqgCSEV0Xp5lsktqYDNmCgeUF5mjzqpSHB z8EtgLPv29KWgEY3rMq5BhcYKDEpespG/5eOWNJtKKHwMovRI6E2Oz+Sj/4xKWM+Y3tf yajfW4UwRFCerR3ANrPXRUKo0PiIhtKqNO7+RSWmE2XkIfq8787p7xwtGY+KasTq+qsh jjxkbATGt9+8oHQSRKeufWY1OEq1KKbQzMkBwY0baYOtHhIP/s65JnkDwG2P5xErSxIR k9CfDIMKHnWGJ7Pk7wcMnN0j/AHQ7rk/hK0XkZ3zB9vcFjWgIfGkMnAXnTrcrpDUC6ps b/ug== X-Forwarded-Encrypted: i=2; AJvYcCUaebJHscSyKDO0Y0FVZmlhN2FJyYBCy5nfA+ZkV4G8AWBh9FGm1m5jb+zm5sguo4ByFu4WuupsFd59@gnusha.org X-Gm-Message-State: AOJu0Yxuloh85tTcXLFnHQS/a2CcIGdrBAqPJVrKCruY5FV86Db0jAQP 1703cfEoe/1jB8fT49kO1AHL6vwu40tMHxoW5dBQZ/QvrKwg57fDJZRu X-Google-Smtp-Source: AGHT+IHjwGD+2Qca55aGwnMp0uwgZ7qK/OdJRQkQbpc4qSL1ETghwDO8sxi/JKKTgHLY0faqC53pQw== X-Received: by 2002:a05:6870:65a2:b0:36c:abe0:83d3 with SMTP id 586e51a60fabf-39bb2ec3134mr792432fac.39.1759273358915; Tue, 30 Sep 2025 16:02:38 -0700 (PDT) X-BeenThere: bitcoindev@googlegroups.com; h="ARHlJd5kBBVNHvZfKlTNqCRRxRetGq2eYvjejohW2BEOtu+I2w==" Received: by 2002:a05:6870:5593:b0:35a:ce0a:d0a3 with SMTP id 586e51a60fabf-35ebc17c4a5ls5212285fac.0.-pod-prod-08-us; Tue, 30 Sep 2025 16:02:34 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXjKnDpnGiaLtYhkyy1v9i4wyFlw/ouGmNBnUHeSP9sVAhxX7JW541f8SvhdowtHqqDHbDI1Q8CxFqZ@googlegroups.com X-Received: by 2002:a05:6808:1b23:b0:43f:5e96:f01e with SMTP id 5614622812f47-43fa4331778mr761865b6e.50.1759273354108; Tue, 30 Sep 2025 16:02:34 -0700 (PDT) Received: by 2002:a05:620a:5306:b0:80d:5a8b:a44e with SMTP id af79cd13be357-873b4be879ams85a; Tue, 30 Sep 2025 15:45:06 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVf0J9xKWCd/8avUpAKkq8S6rmn1PudeG/k2mre7Ih/uv+5zAG87CQbz2H2pjwj7CluCP4ykrqQz4rx@googlegroups.com X-Received: by 2002:a05:6102:38ca:b0:525:471f:de14 with SMTP id ada2fe7eead31-5d3fe5358a2mr604645137.13.1759272305640; Tue, 30 Sep 2025 15:45:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1759272305; cv=none; d=google.com; s=arc-20240605; b=IrkPk884dMqDFMg1R8cgBXp+qOGA3zw+AtUG3qptQAyLFKGhF6tBpcfowZTDhTXRFq jmga/LPPH5sDVSSYtoHyRkUWvm/pHWVKTjhRdB0ymTGc7JS13+b6q+r3FNLFmVw2tz22 LmfQgpNoQvubFEcLN72EEwZkO/95YJiguf+6baVWSIzstEUoRta7gLlx67/qTNNqpfvc me/7XercEZ2FwPnR7VK/ObEJVjy4D50GOEfBwFbGk8UwCu3dYWF/T/kpdNpGz7uUGZnx qwBHMNcNhZzdJoDXdHqd0ZoV8G2B7RKr98vn0uaIO8RbqgpNmH9/tGJQdQxcC4XSdjMm QG5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=autocrypt:content-transfer-encoding:mime-version:message-id :references:in-reply-to:user-agent:subject:to:from:date :dkim-signature; bh=Enf4wWnZjmocIpMCNtM6NTuPK7BdFQB0gfdM1wKOCAU=; fh=3yCfg7a5juTAINdBObOMumTn11XLNsMOkCWQuhv0OsQ=; b=YHTrrt4T9jqAlZUhLn664bmday3sixReDFd0N0h2mAYjUnSEKcPLZs1PU6OcnRlqye MlLnUj47itAmlG3UoYEf5PoGi681bf0e14nc0C9Pm8enPjL8h9v6yvIc/8J9ZPchfolX 9cNEQ6JyK59vwAAwvoaM6Slebn6zH6HkFCSm6LQQ4th8GZzEq8tL9I5XwJptX2976aFZ by0Hz6OB9NAnL0rxmGcRoPHA1cfWoZhq/IKS6L7LYQ/vF+eoR48b+jCmqJF0TY0WIzDK VFSgZWoCgCCE6UesBiDvP1O4HNbhjevgQzqVz3mxyAN+kNxvk4Kv2tocRloRUlPJJ05n YBOg==; dara=google.com ARC-Authentication-Results: i=1; gmr-mx.google.com; dkim=pass header.i=@drbonez.dev header.s=default header.b="e2+dU0/r"; spf=pass (google.com: domain of me@drbonez.dev designates 198.54.127.69 as permitted sender) smtp.mailfrom=me@drbonez.dev; dmarc=pass (p=REJECT sp=QUARANTINE dis=NONE) header.from=drbonez.dev Received: from out-09.pe-a.jellyfish.systems (out-09.pe-a.jellyfish.systems. [198.54.127.69]) by gmr-mx.google.com with ESMTPS id ada2fe7eead31-5ae3333204dsi717403137.2.2025.09.30.15.45.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Sep 2025 15:45:05 -0700 (PDT) Received-SPF: pass (google.com: domain of me@drbonez.dev designates 198.54.127.69 as permitted sender) client-ip=198.54.127.69; Received: from MTA-11-1.privateemail.com (unknown [10.50.14.23]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by NEW-01-3.privateemail.com (Postfix) with ESMTPS id 4cbtRc3Fzsz2SdSL; Tue, 30 Sep 2025 18:45:00 -0400 (EDT) Received: from mta-11.privateemail.com (localhost [127.0.0.1]) by mta-11.privateemail.com (Postfix) with ESMTP id 4cbtRc1zh9z3hhTp; Tue, 30 Sep 2025 18:45:00 -0400 (EDT) Received: from ehlo.thunderbird.net (unknown [76.8.195.86]) by mta-11.privateemail.com (Postfix) with ESMTPA; Tue, 30 Sep 2025 18:44:58 -0400 (EDT) Date: Tue, 30 Sep 2025 16:44:41 -0600 From: "'Aiden McClelland' via Bitcoin Development Mailing List" To: bitcoindev@googlegroups.com, jeremy , Bitcoin Development Mailing List Subject: Re: [bitcoindev] [BIP Proposal] Mempool Validation and Relay Policies via User-Defined Scripts User-Agent: K-9 Mail for Android In-Reply-To: <8c6bb024-437f-4122-8ae0-f8ed9b9c23e4n@googlegroups.com> References: <8c6bb024-437f-4122-8ae0-f8ed9b9c23e4n@googlegroups.com> Message-ID: <1A33D206-444A-49E7-B1F1-E9FE5F4E32FB@drbonez.dev> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary=----GQ46LS9W4CLNE7XRFW0LH0J7UGTMCE Content-Transfer-Encoding: 7bit Autocrypt: addr=me@drbonez.dev; prefer-encrypt=mutual; keydata= mDMEaNcksxYJKwYBBAHaRw8BAQdAgpcI3hOExv1njCt+zJoYBartdyk4SKiqSIy3+9tcpOK0IUFp ZGVuIE1jQ2xlbGxhbmQgPG1lQGRyYm9uZXouZGV2PoiJBBMWCAAxFiEEtBbA5nud8/FxhICufP/a QcpmBWoFAmjXJLMCGwMECwkIBwUVCAkKCwUWAgMBAAAKCRB8/9pBymYFamtoAQDebf0jXVUtKKur 70LUB5+dmHndsIeGpVgGEs5rDGhelwD7BTgcermFsaPWXg6p7RjQ9cSCaGdDIp/87QVAy0lMeAy4 OARo1ySzEgorBgEEAZdVAQUBAQdATE1CS5FypyXAJdO+9a1LYQR1rgfuEgeChUcYSOUme3oDAQgH iHgEGBYIACAWIQS0FsDme53z8XGEgK58/9pBymYFagUCaNckswIbDAAKCRB8/9pBymYFavYZAP95 dgwYia0VN0Cy75K4+pxiuaG4UpEGdY0v+bgN7zbLVQEA28muMHpEW/b3gtR+W6MaONTQuGFy61Sk QaHWmrqyNg8= X-Virus-Scanned: ClamAV using ClamSMTP X-Original-Sender: me@drbonez.dev X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@drbonez.dev header.s=default header.b="e2+dU0/r"; spf=pass (google.com: domain of me@drbonez.dev designates 198.54.127.69 as permitted sender) smtp.mailfrom=me@drbonez.dev; dmarc=pass (p=REJECT sp=QUARANTINE dis=NONE) header.from=drbonez.dev X-Original-From: Aiden McClelland Reply-To: Aiden McClelland Precedence: list Mailing-list: list bitcoindev@googlegroups.com; contact bitcoindev+owners@googlegroups.com List-ID: X-Google-Group-Id: 786775582512 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , X-Spam-Score: -1.0 (-) ------GQ46LS9W4CLNE7XRFW0LH0J7UGTMCE Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Jeremy,=20 That's actually really clever. I had wanted the scripts to be able to manag= e mempool size, and handle prioritization of higher feerate transactions (h= ence the evict() fn and minFeerate part of the api), which I don't think co= uld be done with script, and I'm not sure we'd want to add opcodes to make = that possible, given that it only makes sense in this context. But maybe th= at part doesn't need to be part of the dynamic scripts? Definitely gives me= a lot to think about.=20 Thanks,=20 Aiden McClelland=20 On September 30, 2025 3:09:15 PM MDT, jeremy wro= te: >Bitcoin already has a built in user defined script language: Bitcoin Scrip= t. > >If you add a couple conditionally verified opcodes (the same ones necessar= y=20 >for covenants), you could write whatever filter you like, and we'd learn= =20 >more about what the best opcodes are for writing covenants. > >You would execute the script "pretending" to be input 0. > >We would then at least learn something about covenants. >On Tuesday, September 30, 2025 at 2:22:10=E2=80=AFAM UTC-4 Aiden McClellan= d wrote: > >> /dev/fd0, >> >> I appreciate the comments. A txnotify solution could work, although it= =20 >> loses a lot of the modularity and sandboxing of what I'm proposing. It= =20 >> would probably result in a single external binary, running all of the=20 >> policy validation logic, rather than a bundle of scripts you can mix and= =20 >> match. And it might encourage solutions that involve fetching relay=20 >> policies over the internet, which is probably not ideal. Ideally, updati= ng=20 >> policy should require user action.=20 >> >> Thanks,=20 >> Aiden McClelland >> >> >> >> On September 27, 2025 7:22:28 PM MDT, /dev /fd0 =20 >> wrote: >> >>> Hi Aiden, >>> >>> There is an easy solution based on my understanding of [transaction=20 >>> validation][0] although I have not tested it: >>> >>> 1. Add a config option `txnotify` similar to `blocknotify` that execute= s=20 >>> commands or script when a new transaction is received from a peer. >>> 2. Add a function `ExecuteTxNotify()` that will run the script provided= =20 >>> by the user in step 1. Script should either return 'accept' for 'reject= '=20 >>> and function would return true/false accordingly. >>> 3. Call `ExecuteTxNotify()` in ` AcceptToMemoryPool()` so that rejected= =20 >>> transactions do not enter the mempool. >>> >>> [0]: https://bitcoincore.academy/transaction-validation.html >>> >>> /dev/fd0 >>> floppy disk guy >>> >>> On Thu, Sep 25, 2025 at 12:00=E2=80=AFAM Aiden McClelland =20 >>> wrote: >>> >>>> Hi all, >>>> >>>> I'd like to share for discussion a draft BIP to allow for a modular=20 >>>> mempool/relay policy: https://github.com/bitcoin/bips/pull/1985 >>>> >>>> I think it could potentially reduce conflict within the community arou= nd=20 >>>> relay policy, as an alternative to running lots of different node=20 >>>> implementations/forks when there are disagreements. >>>> >>>> I am working on a reference implementation using Bellard's QuickJS, bu= t=20 >>>> it has been almost a decade since I've written C++, so it's slow going= and=20 >>>> I'm sure doesn't follow best-practices. Once it's working, it can be= =20 >>>> cleaned up. >>>> >>>> Thanks, >>>> Aiden McClelland >>>> >>>> --=20 >>>> You received this message because you are subscribed to the Google=20 >>>> Groups "Bitcoin Development Mailing List" group. >>>> To unsubscribe from this group and stop receiving emails from it, send= =20 >>>> an email to bitcoindev+...@googlegroups.com. >>>> To view this discussion visit=20 >>>> https://groups.google.com/d/msgid/bitcoindev/cbdab6fa-93bc-44c9-80f0-6= c68c6554f56n%40googlegroups.com=20 >>>> >>>> . >>>> >>> > >--=20 >You received this message because you are subscribed to the Google Groups = "Bitcoin Development Mailing List" group. >To unsubscribe from this group and stop receiving emails from it, send an = email to bitcoindev+unsubscribe@googlegroups.com. >To view this discussion visit https://groups.google.com/d/msgid/bitcoindev= /8c6bb024-437f-4122-8ae0-f8ed9b9c23e4n%40googlegroups.com. --=20 You received this message because you are subscribed to the Google Groups "= Bitcoin Development Mailing List" group. To unsubscribe from this group and stop receiving emails from it, send an e= mail to bitcoindev+unsubscribe@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/= 1A33D206-444A-49E7-B1F1-E9FE5F4E32FB%40drbonez.dev. ------GQ46LS9W4CLNE7XRFW0LH0J7UGTMCE Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Jeremy,

That's actually = really clever. I had wanted the scripts to be able to manage mempool size, = and handle prioritization of higher feerate transactions (hence the evict()= fn and minFeerate part of the api), which I don't think could be done with= script, and I'm not sure we'd want to add opcodes to make that possible, g= iven that it only makes sense in this context. But maybe that part doesn't = need to be part of the dynamic scripts? Definitely gives me a lot to think = about.

Thanks,
Aiden McClelland


On September 30, 2025 3:09:15 PM MDT, jeremy &l= t;jeremy.l.rubin@gmail.com> wrote:
Bitcoin already has a built in user defined script language: Bitcoin Script= .

If you add a couple conditionally verified opcodes (th= e same ones necessary for covenants), you could write whatever filter you l= ike, and we'd learn more about what the best opcodes are for writing covena= nts.

You would execute the script "pretending" to = be input 0.

We would then at least learn something= about covenants.
On Tuesday, September 30, 2025 at 2:22:10=E2=80=AFAM UTC-4 = Aiden McClelland wrote:
/dev/fd0,

I appreciate the comments= . A txnotify solution could work, although it loses a lot of the modularity= and sandboxing of what I'm proposing. It would probably result in a single= external binary, running all of the policy validation logic, rather than a= bundle of scripts you can mix and match. And it might encourage solutions = that involve fetching relay policies over the internet, which is probably n= ot ideal. Ideally, updating policy should require user action.

Than= ks,
Aiden McClelland



On September 27, 2025 7:22:28 PM MDT, /dev /fd0 = <alice...@gmail.com> w= rote:
Hi Aiden,

There is an easy solution bas= ed on my understanding of [transaction validation][0] although I have not t= ested it:

1. Add a config option `txnotify` similar to `blocknotify`= that executes commands or script when a new transaction is received from a= peer.
2. Add a function `ExecuteTxNotify()` that will run the sc= ript provided by the user in step 1. Script should either return 'accept' f= or 'reject' and function would return true/false accordingly.
3. = Call `ExecuteTxNotify()` in ` AcceptToMemoryPool()` so that rejected transactions do not enter the mempoo= l.

=

= On Thu, Sep 25, 2025 at 12:00=E2=80=AFAM Aiden McClelland <m...@drbonez.dev> wrote:
Hi all,

I'd like to share for discussion a draft BIP to allow for a modula= r mempool/relay policy: https://github.com/bitcoin/bips/pull/1985

I t= hink it could potentially reduce conflict within the community around relay= policy, as an alternative to running lots of different node implementation= s/forks when there are disagreements.

I am working= on a reference implementation using Bellard's QuickJS, but it has been alm= ost a decade since I've written C++, so it's slow going and I'm sure doesn'= t follow best-practices. Once it's working, it can be cleaned up.

Thanks,
Aiden McClelland

--
You received this message because you are subscribed to the Google Groups "= Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an e= mail to bitcoindev+...@googlegro= ups.com.
To view this discussion visit https= ://groups.google.com/d/msgid/bitcoindev/cbdab6fa-93bc-44c9-80f0-6c68c6554f5= 6n%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups &= quot;Bitcoin Development Mailing List" group.
To unsubscribe from this group and stop receiving emails from it, send an e= mail to bitcoind= ev+unsubscribe@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/bitcoindev/1A3= 3D206-444A-49E7-B1F1-E9FE5F4E32FB%40drbonez.dev.
------GQ46LS9W4CLNE7XRFW0LH0J7UGTMCE--