Merge pull request #10958 from SomberNight/202609_deps
What changed, and why it matters
This commit is a routine dependency update for the Electrum Bitcoin wallet. It bumps versions of Python, OpenSSL, secp256k1, and various Python packages used in builds and runtime. The commit itself does not fix any known security bug in Electrum's own code, nor does the project describe it as a security update. Dependency updates can indirectly improve security by including upstream bug fixes, but without specific vulnerability information we cannot say this patch is itself a security fix.
Treat as a normal maintenance update. Review upstream release notes for the bumped dependencies (especially OpenSSL, libsecp256k1, electrum-ecc, aiohttp, and Python) to identify any security fixes included in the new versions. No immediate incident response is warranted based on this commit alone.
Security signals we found
Dependency version bumps for cryptographic libraries (OpenSSL, libsecp256k1, electrum-ecc)
Routine maintenance commit with no explicit security claim
Hash-only changes in deterministic requirements files
No Electrum application code changes
Evidence from the diff
The merge commit updates pinned dependency versions across build recipes and deterministic requirements files: Python 3.11.15→3.11.16 and 3.12.13→3.12.14; OpenSSL 3.0.21→3.0.22; libsecp256k1 from v0.7.1 to v0.8.0; electrum-ecc 0.0.7→0.0.8; aiohttp 3.14.1→3.14.3; certifi, multidict, propcache, yarl, python-socks, typing-extensions, build, expandvars, poetry-core, setuptools-scm, and aiohappyeyeballs to newer patch/minor versions. Hashes are updated accordingly. A new environment variable PROPCACHE_NO_EXTENSIONS=1 is added to the AppImage build to opt out of compiling a C extension, matching existing YARL_NO_EXTENSIONS and FROZENLIST_NO_EXTENSIONS settings.
Changed components
Android build recipesLinux AppImage build scriptlibsecp256k1 build scriptDeterministic Python dependency lock filesInspect captured patch +57 / −56
### contrib/android/p4a_recipes/hostpython3/__init__.py
@@ -13,8 +13,8 @@
class HostPython3RecipePinned(util.InheritedRecipeMixin, HostPython3Recipe):
# PYTHON_VERSION= # < line here so that I can grep the codebase and teleport here
- version = "3.11.15"
- sha512sum = "d4b4d9c51412dca47f0259ad351d4630d4d26fccbbe1457cc8e2168a7b2cbbd43113c1b5a64efe62d0e81f81c31c6f28109696e8633bc0943ad4cb9eb9340bbb"
+ version = "3.11.16"
+ sha512sum = "430fbf05fa14a1e8fa66bdcd268558d6e816ba756c6b13fe338ff90f6fd55d2ec80ff723d9f9771f40b318d060d9d39cc5e8cddca066324359020cefabeab864"
# use official releases from python.org that have sigs, instead of auto-generated archives from github
url = 'https://www.python.org/ftp/python/{version}/Python-{version}.tgz'
### contrib/android/p4a_recipes/libsecp256k1/__init__.py
@@ -6,9 +6,9 @@
class LibSecp256k1RecipePinned(LibSecp256k1Recipe):
- version = "1a53f4961f337b4d166c25fce72ef0dc88806618"
+ version = "6e2c8bc4ecdc6e71dbe7a368f360d8d453ce435d"
url = "https://github.com/bitcoin-core/secp256k1/archive/{version}.zip"
- sha512sum = "4072e45517bc1bb416250bc8e4fa4ed94f83b4eebbe25a70925fd7cc9759df3edbce64ab0116519c335f82353f6a029cde92018ed7116f2f85c8092a9adeb532"
+ sha512sum = "34495e3ac28cee89d9ec5af1ea36659242e459b8d359be3b8cf5fb2b6d80cbaefcce79d9d08a01db3be3705ef3fbb5c34dcae94b303edca3d222d9b7555d76c6"
recipe = LibSecp256k1RecipePinned()
### contrib/android/p4a_recipes/openssl/__init__.py
@@ -12,8 +12,8 @@
class OpenSSLRecipePinned(util.InheritedRecipeMixin, OpenSSLRecipe):
- version = "3.0.21"
- sha512sum = "9be1c8c11a2d55417bb177804d1b5369aa54a9dcd2e136929509457d549697407ae9611079e94c61b58a95be598ce35b94edb336e050d1019e7269f4d2f52cda"
+ version = "3.0.22"
+ sha512sum = "88f5cffd8949b9e236f989f414eefcd4e924145b9e8cb303a969534908e055a9ff2a4b29bd1619425c84240d9ae40aab0d84dbee0f338d20fac81cf7b2f20492"
recipe = OpenSSLRecipePinned()
### contrib/android/p4a_recipes/python3/__init__.py
@@ -12,8 +12,8 @@
class Python3RecipePinned(util.InheritedRecipeMixin, Python3Recipe):
# PYTHON_VERSION= # < line here so that I can grep the codebase and teleport here
- version = "3.11.15"
- sha512sum = "d4b4d9c51412dca47f0259ad351d4630d4d26fccbbe1457cc8e2168a7b2cbbd43113c1b5a64efe62d0e81f81c31c6f28109696e8633bc0943ad4cb9eb9340bbb"
+ version = "3.11.16"
+ sha512sum = "430fbf05fa14a1e8fa66bdcd268558d6e816ba756c6b13fe338ff90f6fd55d2ec80ff723d9f9771f40b318d060d9d39cc5e8cddca066324359020cefabeab864"
# use official releases from python.org that have sigs, instead of auto-generated archives from github
url = 'https://www.python.org/ftp/python/{version}/Python-{version}.tgz'
### contrib/build-linux/appimage/make_appimage.sh
@@ -20,7 +20,7 @@ git -C "$PROJECT_ROOT" rev-parse 2>/dev/null || fail "Building outside a git clo
export GCC_STRIP_BINARIES="1"
# pinned versions
-PYTHON_VERSION=3.12.13
+PYTHON_VERSION=3.12.14
PY_VER_MAJOR="3.12" # as it appears in fs paths
PKG2APPIMAGE_COMMIT="a9c85b7e61a3a883f4a35c41c5decb5af88b6b5d"
@@ -44,7 +44,7 @@ verify_hash "$CACHEDIR/appimagetool" "46fdd785094c7f6e545b61afcfb0f3d98d8eab243f
# appimagetool tags a new release (see https://github.com/AppImage/appimagetool/pull/47)
download_if_not_exist "$CACHEDIR/Python-$PYTHON_VERSION.tar.xz" "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz"
-verify_hash "$CACHEDIR/Python-$PYTHON_VERSION.tar.xz" "c08bc65a81971c1dd5783182826503369466c7e67374d1646519adf05207b684"
+verify_hash "$CACHEDIR/Python-$PYTHON_VERSION.tar.xz" "5c8462af5790baf43a321a1559dbe0db06d1be4300fb85fb53c40060668e548a"
@@ -140,6 +140,7 @@ info "Installing build dependencies."
# opt out of compiling C extensions
export YARL_NO_EXTENSIONS=1
export FROZENLIST_NO_EXTENSIONS=1
+export PROPCACHE_NO_EXTENSIONS=1
export ELECTRUM_ECC_DONT_COMPILE=1
### contrib/deterministic-build/requirements-binaries-mac.txt
@@ -181,9 +181,9 @@ PyQt6-sip==13.11.1 \
setuptools==80.9.0 \
--hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \
--hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c
-typing-extensions==4.15.0 \
- --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
- --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
+typing-extensions==4.16.0 \
+ --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \
+ --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
wheel==0.45.1 \
--hash=sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729 \
--hash=sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248
### contrib/deterministic-build/requirements-binaries.txt
@@ -185,9 +185,9 @@ PyQt6-sip==13.11.1 \
setuptools==80.9.0 \
--hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \
--hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c
-typing-extensions==4.15.0 \
- --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
- --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
+typing-extensions==4.16.0 \
+ --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \
+ --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
wheel==0.45.1 \
--hash=sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729 \
--hash=sha256:708e7481cc80179af0e556bbf0cc00b8444c7321e2700b8d8580231d13017248
### contrib/deterministic-build/requirements-build-android.txt
@@ -1,7 +1,7 @@
appdirs==1.4.4 \
--hash=sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41
-build==1.4.0 \
- --hash=sha256:f1b91b925aa322be454f8330c6fb48b465da993d1e7e7e6fa35027ec49f3c936
+build==1.5.0 \
+ --hash=sha256:302c22c3ba2a0fd5f3911918651341ebb3896176cbdec15bd421f80b1afc7647
colorama==0.4.5 \
--hash=sha256:e6c6b4334fc50988a639d9b98aa429a0b57da6e17b9a44f0451f930b6967b7a4
Cython==0.29.37 \
@@ -28,7 +28,7 @@ toml==0.10.2 \
--hash=sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f
tomli==2.4.1 \
--hash=sha256:7c7e1a961a0b2f2472c1ac5b69affa0ae1132c39adcb67aba98568702b9cc23f
-typing-extensions==4.15.0 \
- --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466
+typing-extensions==4.16.0 \
+ --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
wheel==0.45.1 \
--hash=sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729
### contrib/deterministic-build/requirements-build-base.txt
@@ -1,6 +1,6 @@
-expandvars==1.0.0 \
- --hash=sha256:f04070b8260264185f81142cd85e5df9ceef7229e836c5844302c4ccfa00c30d \
- --hash=sha256:ff1690eceb90bbdeefd1e4b15f4d217f22a3e66f776c2cb060635d2dde4a7689
+expandvars==1.1.2 \
+ --hash=sha256:6c5822b7b756a99a356b915dd1267f52ab8a4efaa135963bd7f4bd5d368f71d7 \
+ --hash=sha256:d1652fe4e61914f5b88ada93aaedb396446f55ae4621de45c8cb9f66e5712526
flit-core==3.12.0 \
--hash=sha256:18f63100d6f94385c6ed57a72073443e1a71a4acb4339491615d0f16d6ff01b2 \
--hash=sha256:e7a0304069ea895172e3c7bb703292e992c5d1555dd1233ab7b5621b5b69e62c
@@ -10,15 +10,15 @@ packaging==26.2 \
pip==25.1.1 \
--hash=sha256:2913a38a2abf4ea6b64ab507bd9e967f3b53dc1ede74b01b0931e1ce548751af \
--hash=sha256:3de45d411d308d5054c2168185d8da7f9a2cd753dbac8acbfa88a8909ecd9077
-poetry-core==2.1.3 \
- --hash=sha256:0522a015477ed622c89aad56a477a57813cace0c8e7ff2a2906b7ef4a2e296a4 \
- --hash=sha256:2c704f05016698a54ca1d327f46ce2426d72eaca6ff614132c8477c292266771
+poetry-core==2.4.1 \
+ --hash=sha256:89dceb6c10e9c6d8650a16183400e3c9ff9ddee13b0a81023b5575334a2b3744 \
+ --hash=sha256:acf06f9537cd2625bdaec926d95d90b557ba15353bc71d27a3a8a441042b5316
setuptools==80.9.0 \
--hash=sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 \
--hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c
-setuptools-scm==8.3.1 \
- --hash=sha256:332ca0d43791b818b841213e76b1971b7711a960761c5bea5fc5cdb5196fbce3 \
- --hash=sha256:3d555e92b75dacd037d32bafdf94f97af51ea29ae8c7b234cf94b7a5bd242a63
+setuptools-scm==9.2.2 \
+ --hash=sha256:1c674ab4665686a0887d7e24c03ab25f24201c213e82ea689d2f3e169ef7ef57 \
+ --hash=sha256:30e8f84d2ab1ba7cb0e653429b179395d0c33775d54807fc5f1dd6671801aef7
tomli==2.0.2 \
--hash=sha256:2ebe24485c53d303f690b0ec092806a085f07af5a5aa1464f3931eec36caaa38 \
--hash=sha256:d46d457a85337051c36524bc5349dd91b1877838e2979ac5ced3e710ed8a60ed
### contrib/deterministic-build/requirements-hw.txt
@@ -49,9 +49,9 @@ cbor2==5.9.0 \
--hash=sha256:fb7afe77f8d269e42d7c4b515c6fd14f1ccc0625379fb6829b269f493d16eddd \
--hash=sha256:fbb06f34aa645b4deca66643bba3d400d20c15312d1fe88d429be60c1ab50f27 \
--hash=sha256:fbdcf4d74acbeb7672e6413e81cd2c1ced1a4a8cf949484ac54e9af5265c3c72
-certifi==2026.6.17 \
- --hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432 \
- --hash=sha256:2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db
+certifi==2026.7.22 \
+ --hash=sha256:62f22742b58a1a33014a2b6b706588a8d7e2a88ae7bd1a6ebe8c992928483775 \
+ --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55
cffi==2.0.0 \
--hash=sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb \
--hash=sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b \
@@ -486,9 +486,9 @@ slip10==1.1.0 \
trezor==0.20.1 \
--hash=sha256:06f21ef1b0ad20f8bc220f229f2ff3abfedc15e90ca3bbdafcd967a6031e2cb3 \
--hash=sha256:6de50703102f90dc5399d40dd7c8134d13b6c54a617d41178b081baf2aeb2b91
-typing-extensions==4.15.0 \
- --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466 \
- --hash=sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548
+typing-extensions==4.16.0 \
+ --hash=sha256:481caa481374e813c1b176ada14e97f1f67a4539ce9cfeb3f350d78d6370c2e8 \
+ --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
urllib3==1.26.20 \
--hash=sha256:0ed14ccfbf1c30a9072c7ca157e4319b70d65f623e91e7b32fadb2853431016e \
--hash=sha256:40c2dc0c681e47eb8f90e7e27bf6ff7df2e677421fd46756da1161c39ca70d32
### contrib/deterministic-build/requirements.txt
@@ -1,8 +1,8 @@
-aiohappyeyeballs==2.6.2 \
- --hash=sha256:e202810ee718bd01fc6ef49e8ea53d023d5cb6b581076d7925aa499fa55dbe64
-aiohttp==3.14.1 \
- --hash=sha256:307f2cff90a764d329e77040603fa032db89c5c24fdad50c4c15334cba744035
-aiohttp-socks==0.11.0 \
+aiohappyeyeballs==2.7.1 \
+ --hash=sha256:065665c041c42a5938ed220bdcd7230f22527fbec085e1853d2402c8a3615d9d
+aiohttp==3.14.3 \
+ --hash=sha256:9491196535a88924a60afd5b5f434b5b203b6cc616250878dbdb223a8f7844bc
+aiohttp_socks==0.11.0 \
--hash=sha256:0afe51638527c79077e4bd6e57052c87c4824233d6e20bb061c53766421b10f0
aiorpcX==0.25.0 \
--hash=sha256:940fa250ea5e9fd372d4c6acdc20dcb603bd1960ca324759d29864a4aaf64570
@@ -12,14 +12,14 @@ async-timeout==5.0.1 \
--hash=sha256:d9321a7a3d5a6a5e187e824d2fa0793ce379a202935782d555d6e9d2735677d3
attrs==22.2.0 \
--hash=sha256:c9227bfc2f01993c03f68db37d1d15c9690188323c067c641f1a35ca58185f99
-certifi==2026.6.17 \
- --hash=sha256:024c88eeec92ca068db80f02b8b07c9cef7b9fe261d1d535abfd5abd6f6af432
+certifi==2026.7.22 \
+ --hash=sha256:741e2c3b351ddf169a738da9f2c048608ff7f2c5cc02f1ebc6b118bb090d5d55
dnspython==2.4.2 \
--hash=sha256:8dcfae8c7460a2f84b4072e26f1c9f4101ca20c071649cb7c34e8b6a93d58984
electrum-aionostr==0.1.0 \
--hash=sha256:3774f8e8312388272e10851a869c9f4d3d4a54d8d564851c36e2dc40297bec84
-electrum-ecc==0.0.7 \
- --hash=sha256:ed4134e1dbff0fd83022764c6acc97a02cde3512927d7c41f4d48b9a06e91fb2
+electrum-ecc==0.0.8 \
+ --hash=sha256:94869a77de28ee79b7f7e974af5c20b392b949905880a8b26504e28202644106
frozenlist==1.8.0 \
--hash=sha256:3ede829ed8d842f6cd48fc7081d7a41001a56f1f38603f9d49bf3020d59a31ad
idna==3.18 \
@@ -28,16 +28,16 @@ jsonpatch==1.33 \
--hash=sha256:9fcd4009c41e6d12348b4a0ff2563ba56a2923a7dfee731d004e212e1ee5030c
jsonpointer==3.0.0 \
--hash=sha256:2b2d729f2091522d61c3b31f82e11870f60b68f43fbc705cb76bf4b832af59ef
-multidict==6.7.1 \
- --hash=sha256:ec6652a1bee61c53a3e5776b6049172c53b6aaba34f18c9ad04f82712bac623d
+multidict==6.8.0 \
+ --hash=sha256:5cd4637ce76312ba1e05eb9c5193fec231f64fee0944e135fa1e951242355b37
packaging==26.2 \
--hash=sha256:ff452ff5a3e828ce110190feff1178bb1f2ea2281fa2075aadb987c2fb221661
pip==25.1.1 \
--hash=sha256:3de45d411d308d5054c2168185d8da7f9a2cd753dbac8acbfa88a8909ecd9077
-propcache==0.3.1 \
- --hash=sha256:40d980c33765359098837527e18eddefc9a24cea5b45e078a7f3bb5b032c6ecf
-python-socks==2.8.1 \
- --hash=sha256:698daa9616d46dddaffe65b87db222f2902177a2d2b2c0b9a9361df607ab3687
+propcache==0.5.2 \
+ --hash=sha256:01c4fc7480cd0598bb4b57022df55b9ca296da7fc5a8760bd8451a7e63a7d427
+python-socks==2.8.2 \
+ --hash=sha256:ffc493951854fa3fc0551e0434a09a7b9f9047f9ad666dce42cb94a52e8a34b6
QDarkStyle==3.2.3 \
--hash=sha256:0c0b7f74a6e92121008992b369bab60468157db1c02cd30d64a5e9a3b402f1ae
qrcode==8.2 \
@@ -46,9 +46,9 @@ QtPy==2.4.3 \
--hash=sha256:db744f7832e6d3da90568ba6ccbca3ee2b3b4a890c3d6fbbc63142f6e4cdf5bb
setuptools==80.9.0 \
--hash=sha256:f36b47402ecde768dbfafc46e8e4207b4360c654f1f3bb84475f0a28628fb19c
-typing-extensions==4.15.0 \
- --hash=sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466
+typing-extensions==4.16.0 \
+ --hash=sha256:dc983d19a509c94dba722ee6abd33940f7c05a89e243c47e907eb4db6f1a43e5
wheel==0.45.1 \
--hash=sha256:661e1abd9198507b1409a20c02106d9670b2576e916d58f520316666abca6729
-yarl==1.24.2 \
- --hash=sha256:9ac374123c6fd7abf64d1fec93962b0bd4ee2c19751755a762a72dd96c0378f8
+yarl==1.24.5 \
+ --hash=sha256:e81b83143bee16329c23db3c1b2d82b29892fcbcb849186d2f6e98a5abe9a57f
### contrib/make_libsecp256k1.sh
@@ -14,8 +14,8 @@
# sudo apt-get install gcc-multilib g++-multilib
# $ AUTOCONF_FLAGS="--host=i686-linux-gnu CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32" ./contrib/make_libsecp256k1.sh
-LIBSECP_VERSION="1a53f4961f337b4d166c25fce72ef0dc88806618"
-# ^ tag "v0.7.1"
+LIBSECP_VERSION="6e2c8bc4ecdc6e71dbe7a368f360d8d453ce435d"
+# ^ tag "v0.8.0"
# note: this version is duplicated in contrib/android/p4a_recipes/libsecp256k1/__init__.py
# (and also in electrum-ecc, for the "secp256k1" git submodule)
Why this scored 23/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.