From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 11 Feb 2026 02:59:42 -0800 Received: from mail-oi1-f188.google.com ([209.85.167.188]) by mail.fairlystable.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1vq7wc-0005eA-8H for bitcoindev@gnusha.org; Wed, 11 Feb 2026 02:59:42 -0800 Received: by mail-oi1-f188.google.com with SMTP id 5614622812f47-45c8650ffcasf10969398b6e.1 for ; Wed, 11 Feb 2026 02:59:41 -0800 (PST) ARC-Seal: i=3; a=rsa-sha256; t=1770807576; cv=pass; d=google.com; s=arc-20240605; b=eXYPYlQxKfywsal0xImsRw5MUt/p5VqrPP2OxLAnxSrfp/7caiZJAkpwjSKZvHeeKJ rWDg10tO1bMl5ml5DuzAuOjoPj3CyhhN7O3BoyMNOQPv51RbyWP1jBSX13xXM7t4nMGk a6WMZei/lbIWkLPi5eTRycKao8hHQP89h6BhWQVreJoS1uKq27V2m60PxwkDvDa/+kCU Nr6knYK57zqnQwPQ413iMyuCgrTdRdF/njFaKavUOU4EbyABDOLk/Ef6am0A/KVqTsTc vd75JxjPHLWpfDExtK+TZf50uILqldbrPKFI6HHwGnXet1hbIiMw8KLtjleLJX0ZQA4Q 942Q== ARC-Message-Signature: i=3; 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:to:subject:message-id:date:from :mime-version:sender:dkim-signature:dkim-signature; bh=vhEgh6uZe16SRWwIsLfsAN5xkChkBmzkQO2FmUW2ZWE=; fh=SeIQq0ZMmsjBTChJbq5N53VMrLTEJtMgwv2rrUGyX8c=; b=E0aMdnadrI3ktu+0dPcgzR2ScrqpayTqo7mFGLYEJEBz0xd6BrItpcultsZyH+tyqO qPswE2mkk+HbywwQ0Jb27ngh8U34MxjfXNTgreM1uSrwg6miO2BK4yT0hzN7BxgoZhMo bRyGelTPvhrFfHM2omoiHtt34iBgJptFLr9/kQ5F8vfd5ULJJlEJ72/IMwWSzNQlceSK nPdozTW2gWUehb0x0TQGJ0HW+ZRInJ5Wff8oZ1SopLpHjO4zpLHA/7FP9sj01pdys2NK C3PzSbSvsNb/jxtYLlgWLrSCWjzSa9ec1ariYTv+Hk2g4zB0Fi7LtIRWar+RxpVL2YHX 5Ypg==; darn=gnusha.org ARC-Authentication-Results: i=3; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=NzRSdfqJ; arc=pass (i=1); spf=pass (google.com: domain of craigraw@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) smtp.mailfrom=craigraw@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=pass header.i=@googlegroups.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20230601; t=1770807576; x=1771412376; darn=gnusha.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:to:subject:message-id:date:from:mime-version :sender:from:to:cc:subject:date:message-id:reply-to; bh=vhEgh6uZe16SRWwIsLfsAN5xkChkBmzkQO2FmUW2ZWE=; b=FnUACZyOn+0siX6i+yu+kCrBlThq84V2G24NFYsNtSsy9Sn0k+WwcZdiGuqfaiNH3H nFtgJhapmx7JbBfsanp3I//ssKLukBYmXr8HVgkYSOGPSRG8xIpr5zywVkCLIy3ViHhl 6QSq5o3AfYpcujsbqyTO7JANezlf634dH8csog3eQR6s+Jpho2TeJNrs7kqyOVkNxClA chYSeMz1FWoeSi5DJLmUvj+R3LUKRfK2Nszih1Pz4EB2ZYRFnu1oOrmHWisH5DBnsSIj 85BNDsxNGsrggDyBBJwVsqkL9GJnZ2oHdzDV+wG/cOuDsIH6p7aF6bOFJd02ZrYApoFw Wt9g== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770807576; x=1771412376; darn=gnusha.org; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:to:subject:message-id:date:from:mime-version:from :to:cc:subject:date:message-id:reply-to; bh=vhEgh6uZe16SRWwIsLfsAN5xkChkBmzkQO2FmUW2ZWE=; b=cLFq0Iam480IWRflYzcErv/otJQgkMqgxPXj3UjY4jxq7I5WSWivNpWBS77bjYF4m6 SpIXu83G85OcUxCwwbka3v36e4vzZw9wzojxmodlyBR0VsfpstgmbFvty/vKhXOq4Kbv lR8ynNVx4R0M1Wt3Y0lHtUFPdA3061tXxWuP7zuqQ5hrfIadk9Ww2vh63La1OZP7BmL3 5s5lxr+Jer+M7JKLxEG5FYNpcnHQQLejrSHEaCP/vDeOycWXsu4wJ02abKFPziXS8U0g yyMMfqGaJ/Di6x21mgpjJ7IAoxJk6UcNS2KhRrryBIIYtPELbS8orPr+fqWrJsDt3+TD 0Tlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770807576; x=1771412376; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:x-original-authentication-results :x-original-sender:to:subject:message-id:date:from:mime-version :x-gm-gg:x-beenthere:x-gm-message-state:sender:from:to:cc:subject :date:message-id:reply-to; bh=vhEgh6uZe16SRWwIsLfsAN5xkChkBmzkQO2FmUW2ZWE=; b=UJbTSbkfOwIKWHhW5995vBCizCI6WqgP0/8jckL4zVuhiPSAD6UTBn/SpwjIODH2Pr dl6jfWnNTNx2N05YuJCSFwSaM0JhI8fJQkj0sS8PZ8a27IFTXh0YUgqwqaH1xHe/W6ua 2ANz3iaeFuVOs+m3JastW3XH3h2BdA2SIysvp9U4aHuzlI1Mcmi7AIGb1wWstP8zxx9V 23n3quZ3LhbdFDFCppFNraEvw25FKRoM1rX0LBVxeZdrXwm+VHLQyOBXnlLCgPg2oUKR +rn8C3IVlXSCLfURd1r2t9SfO/1GIJzu39KFVw9OrS+O8tqIhGmincmUNW+pg8N7ZYzM lvig== Sender: bitcoindev@googlegroups.com X-Forwarded-Encrypted: i=3; AJvYcCW26GS9J2bZsRlIHtrHJu+C7qW0tVTgLiEwguHBaTG2zDiiyG8sW7mUV16qEI5O+22GD/p4QB/pI8oj@gnusha.org X-Gm-Message-State: AOJu0Yzk9qApIZLmOMoGSEbWXlS5QoAX8u+9RInij8CGhmJYQ6HImGc8 MmgD03xzKpQIBWAONaAJA5mkpPyV3D6Ov/PQecoblWYZ58AD6ZJ2q5Jo X-Received: by 2002:a05:6808:1807:b0:44d:ae36:dd86 with SMTP id 5614622812f47-4636663530bmr1053944b6e.59.1770807575769; Wed, 11 Feb 2026 02:59:35 -0800 (PST) X-BeenThere: bitcoindev@googlegroups.com; h="AV1CL+Hxl17PKVVN8c1+2tT6+UphXWUSdNzufsMjzQcj5OihXA==" Received: by 2002:a05:6871:520d:b0:3f5:d306:979f with SMTP id 586e51a60fabf-40a745566b7ls3466066fac.0.-pod-prod-06-us; Wed, 11 Feb 2026 02:59:30 -0800 (PST) X-Received: by 2002:a05:6808:1442:b0:45e:a749:81ed with SMTP id 5614622812f47-463665131cfmr1040897b6e.25.1770807569859; Wed, 11 Feb 2026 02:59:29 -0800 (PST) Received: by 2002:a05:690c:3101:b0:796:6bfb:cf56 with SMTP id 00721157ae682-7966bfbd7eems7b3; Wed, 11 Feb 2026 02:38:54 -0800 (PST) X-Received: by 2002:a05:690c:e3cc:b0:796:2ee6:3f9f with SMTP id 00721157ae682-7966a97965amr19199627b3.14.1770806333131; Wed, 11 Feb 2026 02:38:53 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1770806333; cv=pass; d=google.com; s=arc-20240605; b=H0crhtL/AJJghlGS+LKJTMw/7rorBEaU+iv3GTS2yEPzspT75iFRNRmka1epzWh4Ru mBtV0bB63H5KTbhyGbzvnBdQ6rLH8wanlZrfy+5RJmD/ltzo/41Ff2yIRIP5aL1E5gji D9a+dQeDfmh76MdQ2053k8qwUa7FrZKNg/HPlXFEdYsxJLQpcRisY4pW4J1B4RyGdstU xxII/FwpStaHOvXmE3G0XJ7+UHtj2dV6u+d00p2FPt3gLu0Fx790S3hoXTvkUbhbUZL5 U9fsKAz+9J24En3+tOhEq0h6P6JwpXYcnbEbZ65HiO1qWfhhcIpJvfOyu9ZD4xuAVGwU xUDA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=Zt0mZZSJ9g4UBaEvj8FgnkkVLahCFubI97Qjq7XCnYg=; fh=DMP0F9ULS1guKiqimntQRCN8ZraraesEgQuVcn7F0Z0=; b=dyKo64zRseGks2IYjyjY9DeavIbKivVsPcjb1xC/G+VN17gue9YPfS0mlXeJMV0Wnw tSDqo0v4QmV71bhOdcLk6/EIHqRAmS5SylXlBGYpe3t335zSnAFbKLBJsQxSAn7EKSrJ f1C2qyFfU9znIMqwSRdcorV21jwmbwv4SZeVXCV5k0sOZMWPfVlKDrbYqby/OQFZdrXh ZNb+5dszA9DztdHSk+6kSVTDwaRVVe5Z59swsJF3pwgf1rz7EgN7H4Da9vr1zwpB2oaM C+6XnA+9HqvQMCOovv21kkSRdFMhVeU94DvN+yMnOhvIgzLWCZp4FyavxKwOyuU+2siO 4Nng==; dara=google.com ARC-Authentication-Results: i=2; gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=NzRSdfqJ; arc=pass (i=1); spf=pass (google.com: domain of craigraw@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) smtp.mailfrom=craigraw@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=pass header.i=@googlegroups.com Received: from mail-qt1-x82d.google.com (mail-qt1-x82d.google.com. [2607:f8b0:4864:20::82d]) by gmr-mx.google.com with ESMTPS id 00721157ae682-7966c247eacsi507997b3.6.2026.02.11.02.38.53 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 11 Feb 2026 02:38:53 -0800 (PST) Received-SPF: pass (google.com: domain of craigraw@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) client-ip=2607:f8b0:4864:20::82d; Received: by mail-qt1-x82d.google.com with SMTP id d75a77b69052e-5036d7d14easo61416611cf.1 for ; Wed, 11 Feb 2026 02:38:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1770806332; cv=none; d=google.com; s=arc-20240605; b=Vd0iN5uoyAP2mWNCpURor4KQQKTJMkVa/kwf28IRtl2hZmJgfL1fDPBcoPbCDdI5WB NcGAZrfqdyj/nzt8+LitEHgGMYRWBkTkx7xnnijOB2L66sY1XOWxobj6O3RKnOt4zerW SFxij7CeeVjIQ1MNKdbQfzyCPaNkRRmQojv/zf6cff9aVmM517rIYGwA4xZrXsNJuxjz BDF99G5oqcWSlSgwru+uYHjuprvhG1PzdahyEee4Wu05886HaIajjzzb/47THRyvGyJw LeMcpZ7fMjO1w5HL59ufMDVBLshzPKQnoam64k4/9fzxlZdXaEzQTgzm+6lgz0Efn1eA ieRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=Zt0mZZSJ9g4UBaEvj8FgnkkVLahCFubI97Qjq7XCnYg=; fh=DMP0F9ULS1guKiqimntQRCN8ZraraesEgQuVcn7F0Z0=; b=MCRW9eWJHbcSVgZ3mruF+v6QMQjOfY5YKjBPogYkkmuAJyqrcweInjIzIO0Sl2/mRH DUucWVs+Hk2Ba5zWKZyfuXllnZVif/gXEZ4m/NR7jgALr0/c0oUOUULI4b67rD8WhBAa 28hwUkvFO4nutb1jNPkwaTUKflP1Ao5N1o/AfWscBEgm0F0vlTPUElsTaRJ+c1J88Bc6 yYZfahpHecJahi0lrJ/Y7WbQP69fqBJtFP9GNuwXtKuB09lCdFo42rtswem/qubKHPyi c4grNeLwcgClsur1mHE5KufpDkuHm7ePP5CpJwH0YMp9Jf18JWjhCWqxE+gvR+r6gtkY OW+Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; arc=none X-Gm-Gg: AZuq6aLuDgLmgvjhZYMkUeaI55G27wbBWar6f1Fo77WKgx7IhgZ8dMAvYMoyiVU9cAr GT6ip45urA1RUFrp4YsIhQ5MkChVrYRIKmY6elMOBn9ns0sN3w4PpsW7I5MMTThi+Z0m5WMRr4/ rGoYjDOEs23+VXiuqSnm6Ypm8xE5P60vnjtzpKneBvK+r+GnScknpYUbJwYeJ5V2l5gzO2288dp wnyG6FSF5+0P/WCnPFEIZfQznbbi8rJBArY8oAv0dUo2cdCfbbAiSF+GVNQo69P+WpCpIOflSFT XfG/hjSX1pOzMduYl4zeTYTnwHaXtrAVG6izyLBGUOztca+fheUEYH+ymBdbiaT+AQFnog== X-Received: by 2002:a05:622a:30f:b0:4ee:26ef:7f4c with SMTP id d75a77b69052e-5068102b8d5mr29209591cf.17.1770806332518; Wed, 11 Feb 2026 02:38:52 -0800 (PST) MIME-Version: 1.0 From: Craig Raw Date: Wed, 11 Feb 2026 12:38:41 +0200 X-Gm-Features: AZwV_Qj6ZIbxIHX5FtgdVNSygrcOQW1hrPs2JZafymbEiPHrBLlI-VptX8mN1eo Message-ID: Subject: [bitcoindev] [BIP Proposal] Output Script Descriptor Annotations To: Bitcoin Development Mailing List Content-Type: multipart/alternative; boundary="0000000000006a758b064a89fa38" X-Original-Sender: craigraw@gmail.com X-Original-Authentication-Results: gmr-mx.google.com; dkim=pass header.i=@gmail.com header.s=20230601 header.b=NzRSdfqJ; arc=pass (i=1); spf=pass (google.com: domain of craigraw@gmail.com designates 2607:f8b0:4864:20::82d as permitted sender) smtp.mailfrom=craigraw@gmail.com; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com; dara=pass header.i=@googlegroups.com 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: -0.5 (/) --0000000000006a758b064a89fa38 Content-Type: text/plain; charset="UTF-8" Hi all, During discussion around BIP392 [1] for Silent Payment Output Script Descriptors, it emerged that due to the resource-intensive scanning requirements of the protocol some metadata (for example the birthday block height) may be practically required for efficient recovery of wallet funds. However, this metadata is not technically required to determine the output scripts, and therefore deemed unsuitable for direct inclusion in an output descriptor. This may lead to a situation in future where a wallet backup consisting of a valid output descriptor may not practically be complete enough to recover all the funds in a wallet. This is not unique to silent payments. Any descriptor-based backup can suffer from the same issue: the descriptor specifies in general what to derive, but not where to begin or how far to scan. A wallet restored with only a descriptor must guess at parameters like the gap limit or starting block height, and may be inefficient or alternatively miss funds if those guesses are too conservative. This BIP proposal provides a solution in the form of annotations - key/value pairs appended to a descriptor expression using URL-like query string delimiters. Annotations provide a compact way to include such metadata directly in a descriptor string, using characters already present in the BIP380 checksum character set. An annotated descriptor has the form: SCRIPT?key=value&key=value#CHECKSUM Three key names are defined for starting block height, gap limit (for BIP32 HD wallets) and max label index (for silent payments wallets). Annotation values are declared lower bounds: they represent the minimum values required to recover all funds at the time the descriptor was exported. Over the lifetime of a wallet these values may increase (e.g. the gap limit may grow as more addresses are used) but should not decrease. Example: wpkh([deadbeef/84h/0h/0h]xpub.../0/*)?bh=800000&gl=30#v35n46d2 Note that annotations are not intended for general wallet backup, which may include other data such as labels. They are strictly scoped to convey operational metadata to aid recovery of funds without altering the scripts produced by the descriptor. The full text of the BIP can be found at https://github.com/craigraw/bips/blob/descriptorannotations/bip-descriptorannotations.mediawiki --Craig [1]: https://github.com/bitcoin/bips/pull/2047 -- 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/CAPR5oBN8vJs2wNhKWBo6XpkdXdzDK0%2BnYHSzQqWS26%3DXNdiejg%40mail.gmail.com. --0000000000006a758b064a89fa38 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi all,

During discussion around BIP392= [1] for=C2=A0Silent Payment Output Script Descriptors, it emerged that due= to the resource-intensive scanning requirements of the protocol some metad= ata (for example the birthday block height) may be practically required for= efficient recovery of wallet funds. However, this metadata is not technica= lly required to determine the output scripts, and therefore deemed unsuitab= le for direct inclusion in an output descriptor. This may lead to a situati= on in future where a wallet backup consisting of a valid output descriptor = may not practically be complete enough to recover all the funds in a wallet= .

This is not unique to silent payments. Any descr= iptor-based backup can suffer from the same issue: the descriptor specifies= in general what to derive, but not where to begin or how far to scan. A wa= llet restored with only a descriptor must guess at parameters like the gap = limit or starting block height, and may be inefficient or alternatively mis= s funds if those guesses are too conservative.

This BIP proposal pro= vides a solution in the form of annotations - key/value pairs appended to a= descriptor expression using URL-like query string delimiters. Annotations = provide a compact way to include such metadata directly in a descriptor str= ing, using characters already present in the BIP380 checksum character set.=

An annotated descriptor has the form:
S= CRIPT?key=3Dvalue&key=3Dvalue#CHECKSUM

Three k= ey names are defined for starting block height, gap limit (for BIP32 HD wal= lets) and max label index (for silent payments wallets).=C2=A0Annotation va= lues are declared lower bounds: they represent the minimum values required = to recover all funds at the time the descriptor was exported. Over the life= time of a wallet these values may increase (e.g. the gap limit may grow as = more addresses are used) but should not decrease.

= Example: wpkh([deadbeef/84h/0h/0h]xpub.../0/*)?bh=3D800000&gl=3D30#v35n= 46d2

Note that annotations are not intended for ge= neral wallet backup, which may include other data such as labels. They are = strictly scoped to=C2=A0convey operational metadata=C2=A0to aid recovery of= funds without altering the scripts produced by the descriptor.
<= br>

--Craig=

<= /div>

--
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/CAPR5oBN8vJs2wNhKWBo6XpkdXdzDK0%2BnYHSzQqWS26%3DXNdiejg%= 40mail.gmail.com.
--0000000000006a758b064a89fa38--