Skip to content

Commit 52a33e6

Browse files
committed
Merge ElementsProject#1531: Prepare 23.3.2rc2
73db0cf Bump version to 23.3.2-rc2 (Pablo Greco) 6544256 Update manpages (Pablo Greco) 4c79d5a fix: use liquidnetwork or liquidtestnet for uri in elements mode (Byron Hambly) 8f28d82 docs: add github-merge.py process for merging PRs (Byron Hambly) 6c7788a Avoid Simplicity header dependency propogation (Russell O'Connor) Pull request description: Updates master to 6bb916a which includes fixes for simplicity header dependency and qr code generation for QT ACKs for top commit: delta1: ACK 73db0cf; diff looks as expected, tested locally successfully Tree-SHA512: d23312a81033b759466f9bc2d8bbb0bfcdd5bfd0a1d80b101e8461e62a151841910310e82ed8a1ba4ed6bb8a363f53dc2e8e5674c27b9ebafe02169a88b08ed9
2 parents 7d23662 + 73db0cf commit 52a33e6

12 files changed

Lines changed: 149 additions & 27 deletions

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ AC_PREREQ([2.69])
22
define(_CLIENT_VERSION_MAJOR, 23)
33
define(_CLIENT_VERSION_MINOR, 3)
44
define(_CLIENT_VERSION_BUILD, 2)
5-
define(_CLIENT_VERSION_RC, 1)
5+
define(_CLIENT_VERSION_RC, 2)
66
define(_CLIENT_VERSION_IS_RELEASE, true)
77
define(_COPYRIGHT_YEAR, 2026)
88
define(_COPYRIGHT_HOLDERS,[The %s developers])

doc/github-merge-script.md

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# github-merge.py
2+
3+
Please use this python script from the [Bitcoin maintainer tools](https://github.com/bitcoin-core/bitcoin-maintainer-tools/) repo for merging PRs.
4+
5+
- Clone the repo and copy or just download the [github-merge.py](https://github.com/bitcoin-core/bitcoin-maintainer-tools/blob/main/github-merge.py) script into a directory on your $PATH.
6+
7+
```
8+
wget https://raw.githubusercontent.com/bitcoin-core/bitcoin-maintainer-tools/refs/heads/main/github-merge.py -O ~/.local/bin/github-merge.py
9+
chmod +x ~/.local/bin/github-merge.py
10+
```
11+
12+
- In your Elements repo, configure the merge repository.
13+
14+
```
15+
git config githubmerge.repository ElementsProject/elements
16+
```
17+
18+
- Run the script with the PR number you want to test/merge.
19+
20+
```
21+
github-merge.py <PR_NUMBER>
22+
```
23+
24+
For example for PR 1518 I see this output:
25+
26+
```
27+
ElementsProject/elements#1518 Avoid Simplicity header dependency propogation into master
28+
* 6c7788adf373cd8f0dc5c4fe2b7674625631721e Avoid Simplicity header dependency propogation (Russell O'Connor) (upstream/simplicity, pull/1518/head)
29+
30+
Dropping you on a shell so you can try building/testing the merged source.
31+
Run 'git diff HEAD~' to show the changes being merged.
32+
Type 'exit' when done.
33+
```
34+
35+
- Now you can build and test the PR branch, or do whatever review/testing you require.
36+
37+
- Once you are done testing, comment on the PR with your `ACK BRANCH_COMMIT` and/or comments.
38+
39+
Note: this merge script requires one or more ACKs on the top commit of the PR.
40+
41+
- Type `exit` to continue after testing.
42+
43+
```
44+
exit
45+
```
46+
47+
In our example this results in the following output:
48+
49+
```
50+
[pull/1518/local-merge 5e1a950e52] Merge ElementsProject/elements#1518: Avoid Simplicity header dependency propogation
51+
Date: Thu Jan 22 14:49:26 2026 +0200
52+
ElementsProject/elements#1518 Avoid Simplicity header dependency propogation into master
53+
* 6c7788adf373cd8f0dc5c4fe2b7674625631721e Avoid Simplicity header dependency propogation (Russell O'Connor) (upstream/simplicity, pull/1518/head)
54+
ACKs:
55+
* ACK 6c7788a; built and tested locally (delta1)
56+
* ACK 6c7788adf373cd8f0dc5c4fe2b7674625631721e; successfully ran local tests (apoelstra)
57+
Type 's' to sign off on the above merge, or 'x' to reject and exit.
58+
```
59+
60+
- If all looks good then type `s` and hit enter to sign off on the merge. Otherwise type `x` and hit enter to exit.
61+
62+
Signing off in our example shows this output:
63+
64+
```
65+
Type 'push' to push the result to git@github.com:ElementsProject/elements, branch master, or 'x' to exit without pushing.
66+
```
67+
68+
- Type `push` and hit enter to finish the merge.

doc/man/elements-cli.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH ELEMENTS-CLI "1" "January 2026" "elements-cli v23.3.2" "User Commands"
2+
.TH ELEMENTS-CLI "1" "February 2026" "elements-cli v23.3.2" "User Commands"
33
.SH NAME
44
elements-cli \- manual page for elements-cli v23.3.2
55
.SH SYNOPSIS

doc/man/elements-qt.1

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH ELEMENTS-QT "1" "January 2026" "elements-qt v23.3.2" "User Commands"
2+
.TH ELEMENTS-QT "1" "February 2026" "elements-qt v23.3.2" "User Commands"
33
.SH NAME
44
elements-qt \- manual page for elements-qt v23.3.2
55
.SH SYNOPSIS
@@ -139,6 +139,10 @@ blockchain. (default: 0 = disable pruning blocks, 1 = allow
139139
manual pruning via RPC, >=550 = automatically prune block files
140140
to stay under the specified target size in MiB)
141141
.HP
142+
\fB\-ratelimitlogging\fR
143+
.IP
144+
Rate limit unconditional logging to disk (default: 1)
145+
.HP
142146
\fB\-reindex\fR
143147
.IP
144148
Rebuild chain state and block index from the blk*.dat files on disk
@@ -582,9 +586,9 @@ optional). If <category> is not supplied or if <category> = 1,
582586
output all debugging information. <category> can be: addrman,
583587
bench, blockstorage, cmpctblock, coindb, estimatefee, http, i2p,
584588
ipc, leveldb, libevent, mempool, mempoolrej, net, proxy, prune,
585-
qt, rand, reindex, rpc, selectcoins, tor, util, validation,
586-
walletdb, zmq. This option can be specified multiple times to
587-
output multiple categories.
589+
qt, rand, reindex, rpc, selectcoins, tor, uncond_always,
590+
uncond_rate_limited, util, validation, walletdb, zmq. This option
591+
can be specified multiple times to output multiple categories.
588592
.HP
589593
\fB\-debugexclude=\fR<category>
590594
.IP

doc/man/elements-tx.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH ELEMENTS-TX "1" "January 2026" "elements-tx v23.3.2" "User Commands"
2+
.TH ELEMENTS-TX "1" "February 2026" "elements-tx v23.3.2" "User Commands"
33
.SH NAME
44
elements-tx \- manual page for elements-tx v23.3.2
55
.SH SYNOPSIS

doc/man/elements-util.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH ELEMENTS-UTIL "1" "January 2026" "elements-util v23.3.2" "User Commands"
2+
.TH ELEMENTS-UTIL "1" "February 2026" "elements-util v23.3.2" "User Commands"
33
.SH NAME
44
elements-util \- manual page for elements-util v23.3.2
55
.SH SYNOPSIS

doc/man/elements-wallet.1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH ELEMENTS-WALLET "1" "January 2026" "elements-wallet v23.3.2" "User Commands"
2+
.TH ELEMENTS-WALLET "1" "February 2026" "elements-wallet v23.3.2" "User Commands"
33
.SH NAME
44
elements-wallet \- manual page for elements-wallet v23.3.2
55
.SH DESCRIPTION

doc/man/elementsd.1

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
2-
.TH ELEMENTSD "1" "January 2026" "elementsd v23.3.2" "User Commands"
2+
.TH ELEMENTSD "1" "February 2026" "elementsd v23.3.2" "User Commands"
33
.SH NAME
44
elementsd \- manual page for elementsd v23.3.2
55
.SH SYNOPSIS
@@ -139,6 +139,10 @@ blockchain. (default: 0 = disable pruning blocks, 1 = allow
139139
manual pruning via RPC, >=550 = automatically prune block files
140140
to stay under the specified target size in MiB)
141141
.HP
142+
\fB\-ratelimitlogging\fR
143+
.IP
144+
Rate limit unconditional logging to disk (default: 1)
145+
.HP
142146
\fB\-reindex\fR
143147
.IP
144148
Rebuild chain state and block index from the blk*.dat files on disk
@@ -582,9 +586,9 @@ optional). If <category> is not supplied or if <category> = 1,
582586
output all debugging information. <category> can be: addrman,
583587
bench, blockstorage, cmpctblock, coindb, estimatefee, http, i2p,
584588
ipc, leveldb, libevent, mempool, mempoolrej, net, proxy, prune,
585-
qt, rand, reindex, rpc, selectcoins, tor, util, validation,
586-
walletdb, zmq. This option can be specified multiple times to
587-
output multiple categories.
589+
qt, rand, reindex, rpc, selectcoins, tor, uncond_always,
590+
uncond_rate_limited, util, validation, walletdb, zmq. This option
591+
can be specified multiple times to output multiple categories.
588592
.HP
589593
\fB\-debugexclude=\fR<category>
590594
.IP

src/qt/guiutil.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ void AddButtonShortcut(QAbstractButton* button, const QKeySequence& shortcut)
142142

143143
bool parseBitcoinURI(const QUrl &uri, SendCoinsRecipient *out)
144144
{
145-
return false; // TODO
146-
147-
// return if URI is not valid or is no bitcoin: URI
148-
if(!uri.isValid() || uri.scheme() != QString("bitcoin"))
145+
// return if URI is not valid or incorrect scheme
146+
bool valid_liquid = g_con_elementsmode && (uri.scheme() == QString("liquidnetwork") || uri.scheme() == QString("liquidtestnet"));
147+
bool valid_bitcoin = !g_con_elementsmode && (uri.scheme() == QString("bitcoin"));
148+
if (!uri.isValid() || !(valid_liquid || valid_bitcoin))
149149
return false;
150150

151151
SendCoinsRecipient rv;
@@ -209,7 +209,11 @@ QString formatBitcoinURI(const SendCoinsRecipient &info)
209209
{
210210
bool bech_32 = info.address.startsWith(QString::fromStdString(Params().Bech32HRP() + "1"));
211211

212-
QString ret = QString("bitcoin:%1").arg(bech_32 ? info.address.toUpper() : info.address);
212+
QString network = QString("bitcoin:%1");
213+
if (g_con_elementsmode) {
214+
network = Params().NetworkIDString() == "liquidtestnet" ? QString("liquidtestnet:%1") : QString("liquidnetwork:%1");
215+
}
216+
QString ret = network.arg(bech_32 ? info.address.toUpper() : info.address);
213217
int paramCount = 0;
214218

215219
if (info.amount)

src/qt/test/uritests.cpp

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,47 @@
1111

1212
void URITests::uriTests()
1313
{
14-
/* Elements doesn't use URI
14+
// liquid URI tests
15+
g_con_elementsmode = true;
16+
SendCoinsRecipient info{"lq1qq0ha4ml3dsqexnkdssskvt203kl54xj5zxt9sfwgzpy7unf49aagslltf4k7pqjtwk4j8emny0k8vppj88k0z9pa4y0mwfzyu", "label", 100000000, "message"};
17+
QString liquid_uri = GUIUtil::formatBitcoinURI(info);
18+
QVERIFY(liquid_uri.split(":")[0] == "liquidnetwork");
19+
20+
SendCoinsRecipient rcv;
21+
QVERIFY(GUIUtil::parseBitcoinURI(liquid_uri, &rcv));
22+
QVERIFY(rcv.address == QString("lq1qq0ha4ml3dsqexnkdssskvt203kl54xj5zxt9sfwgzpy7unf49aagslltf4k7pqjtwk4j8emny0k8vppj88k0z9pa4y0mwfzyu"));
23+
QVERIFY(rcv.amount == 100000000);
24+
QVERIFY(rcv.label == QString("label"));
25+
QVERIFY(rcv.message == QString("message"));
26+
27+
// example liquidv1 URI from blockstream app
28+
QUrl url{QString("liquidnetwork:lq1qq2j9v49hgsgz9s7v7myty50hsy0a6vk6sjmc9z6m0k208njwcllg9dzwk6prxmzy0wzvejc8tdn0fls88x8ksefwdw2l5hym9?assetid=6f0279e9ed041c3d710a9f57d0c02928416460c4b722ae3457a11eec381c526d&amount=1.00000000")};
29+
QVERIFY(GUIUtil::parseBitcoinURI(url, &rcv));
30+
QVERIFY(rcv.address == QString("lq1qq2j9v49hgsgz9s7v7myty50hsy0a6vk6sjmc9z6m0k208njwcllg9dzwk6prxmzy0wzvejc8tdn0fls88x8ksefwdw2l5hym9"));
31+
QVERIFY(rcv.amount == 100000000);
32+
QVERIFY(rcv.label.isEmpty());
33+
QVERIFY(rcv.message.isEmpty());
34+
35+
// example liquid testnet URI from blockstream app
36+
url.setUrl(QString("liquidtestnet:tlq1qqggjrm7s09agm8vvgsld8sq3a0luppzwyg3fl3rtrl9xcq50n2cny8le5xdl4k7ufxz6m4249njkdvxfzhdax6fczggf8ncjz?assetid=144c654344aa716d6f3abcc1ca90e5641e4e2a7f633bc09fe3baf64585819a49&amount=0.00100000"));
37+
QVERIFY(GUIUtil::parseBitcoinURI(url, &rcv));
38+
QVERIFY(rcv.address == QString("tlq1qqggjrm7s09agm8vvgsld8sq3a0luppzwyg3fl3rtrl9xcq50n2cny8le5xdl4k7ufxz6m4249njkdvxfzhdax6fczggf8ncjz"));
39+
QVERIFY(rcv.amount == 100000);
40+
QVERIFY(rcv.label.isEmpty());
41+
QVERIFY(rcv.message.isEmpty());
42+
43+
// check bitcoin mode
44+
g_con_elementsmode = false;
45+
info = SendCoinsRecipient{"175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W", "label", 100000000, "message"};
46+
QString bitcoin_uri = GUIUtil::formatBitcoinURI(info);
47+
QVERIFY(bitcoin_uri.split(":")[0] == "bitcoin");
48+
QVERIFY(GUIUtil::parseBitcoinURI(bitcoin_uri, &rcv));
49+
QVERIFY(rcv.address == QString("175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W"));
50+
QVERIFY(rcv.amount == 100000000);
51+
QVERIFY(rcv.label == QString("label"));
52+
QVERIFY(rcv.message == QString("message"));
53+
54+
// Bitcoin URI tests from upstream
1555
SendCoinsRecipient rv;
1656
QUrl uri;
1757
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?req-dontexist="));
@@ -64,5 +104,4 @@ void URITests::uriTests()
64104

65105
uri.setUrl(QString("bitcoin:175tWpb8K1S7NmH4Zx6rewF9WQrcZv245W?amount=1,000.0&label=Wikipedia Example"));
66106
QVERIFY(!GUIUtil::parseBitcoinURI(uri, &rv));
67-
*/
68107
}

0 commit comments

Comments
 (0)