From bd38a99ef4701adeed91301bc2609a73819cc886 Mon Sep 17 00:00:00 2001 From: ok300 <106775972+ok300@users.noreply.github.com> Date: Wed, 20 Nov 2024 15:07:35 +0000 Subject: [PATCH 1/2] Add precision validation for Moonpay call (#576) --- lib/core/src/error.rs | 6 ++++++ lib/core/src/sdk.rs | 21 ++++++++++++++++----- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/lib/core/src/error.rs b/lib/core/src/error.rs index ae5a3cc30..a67fd7aa4 100644 --- a/lib/core/src/error.rs +++ b/lib/core/src/error.rs @@ -137,6 +137,12 @@ impl PaymentError { } } + pub(crate) fn invalid_network(err: &str) -> Self { + Self::InvalidNetwork { + err: err.to_string(), + } + } + pub(crate) fn receive_error(err: &str) -> Self { Self::ReceiveError { err: err.to_string(), diff --git a/lib/core/src/sdk.rs b/lib/core/src/sdk.rs index 002cef2c4..d65e44017 100644 --- a/lib/core/src/sdk.rs +++ b/lib/core/src/sdk.rs @@ -2097,6 +2097,19 @@ impl LiquidSdk { Ok(()) } + fn validate_buy_bitcoin(&self, amount_sat: u64) -> Result<(), PaymentError> { + ensure_sdk!( + self.config.network == LiquidNetwork::Mainnet, + PaymentError::invalid_network("Can only buy bitcoin on Mainnet") + ); + // The Moonpay API defines BTC amounts as having precision = 5, so only 5 decimals are considered + ensure_sdk!( + amount_sat % 1_000 == 0, + PaymentError::generic("Can only buy sat amounts that are multiples of 1000") + ); + Ok(()) + } + /// Prepares to buy Bitcoin via a chain swap. /// /// # Arguments @@ -2108,11 +2121,7 @@ impl LiquidSdk { &self, req: &PrepareBuyBitcoinRequest, ) -> Result { - if self.config.network != LiquidNetwork::Mainnet { - return Err(PaymentError::InvalidNetwork { - err: "Can only buy bitcoin on Mainnet".to_string(), - }); - } + self.validate_buy_bitcoin(req.amount_sat)?; let res = self .prepare_receive_payment(&PrepareReceiveRequest { @@ -2145,6 +2154,8 @@ impl LiquidSdk { /// * `prepare_response` - the [PrepareBuyBitcoinResponse] from calling [LiquidSdk::prepare_buy_bitcoin] /// * `redirect_url` - the optional redirect URL the provider should redirect to after purchase pub async fn buy_bitcoin(&self, req: &BuyBitcoinRequest) -> Result { + self.validate_buy_bitcoin(req.prepare_response.amount_sat)?; + let swap = self .create_receive_chain_swap( req.prepare_response.amount_sat, From 14d5bc9c271340abd43f16600964fa0db49fcdc1 Mon Sep 17 00:00:00 2001 From: ok300 <106775972+ok300@users.noreply.github.com> Date: Wed, 20 Nov 2024 15:20:21 +0000 Subject: [PATCH 2/2] Remove 32bit support (#575) * Remove i686 bindings * Remove armv7 bindings --- .github/workflows/build-bindings-android.yml | 29 -------------------- .github/workflows/build-bindings-windows.yml | 2 -- .github/workflows/publish-csharp.yml | 5 ---- .github/workflows/publish-golang.yml | 10 ------- .github/workflows/publish-python.yml | 6 ---- lib/bindings/makefile | 12 ++------ 6 files changed, 2 insertions(+), 62 deletions(-) diff --git a/.github/workflows/build-bindings-android.yml b/.github/workflows/build-bindings-android.yml index 5800a5a9e..2a6aa9829 100644 --- a/.github/workflows/build-bindings-android.yml +++ b/.github/workflows/build-bindings-android.yml @@ -31,8 +31,6 @@ jobs: matrix: target: [ aarch64-linux-android, - armv7-linux-androideabi, - i686-linux-android, x86_64-linux-android, ] steps: @@ -70,11 +68,6 @@ jobs: cp lib/target/${{ matrix.target }}/release/libbreez_sdk_liquid_bindings.so dist - name: Copy libc++_shared - if: ${{ matrix.target == 'armv7-linux-androideabi'}} - run: cp $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so dist - - - name: Copy libc++_shared - if: ${{ matrix.target != 'armv7-linux-androideabi'}} run: cp $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/${{ matrix.target }}/libc++_shared.so dist - name: Archive release @@ -92,16 +85,6 @@ jobs: with: name: bindings-aarch64-linux-android path: arm64-v8a - - - uses: actions/download-artifact@v4 - with: - name: bindings-armv7-linux-androideabi - path: armeabi-v7a - - - uses: actions/download-artifact@v4 - with: - name: bindings-i686-linux-android - path: x86 - uses: actions/download-artifact@v4 with: @@ -122,8 +105,6 @@ jobs: matrix: target: [ aarch64-linux-android, - armv7-linux-androideabi, - i686-linux-android, x86_64-linux-android, ] steps: @@ -147,16 +128,6 @@ jobs: with: name: bindings-aarch64-linux-android path: arm64-v8a - - - uses: actions/download-artifact@v4 - with: - name: bindings-armv7-linux-androideabi - path: armeabi-v7a - - - uses: actions/download-artifact@v4 - with: - name: bindings-i686-linux-android - path: x86 - uses: actions/download-artifact@v4 with: diff --git a/.github/workflows/build-bindings-windows.yml b/.github/workflows/build-bindings-windows.yml index 910025513..f3918c905 100644 --- a/.github/workflows/build-bindings-windows.yml +++ b/.github/workflows/build-bindings-windows.yml @@ -31,7 +31,6 @@ jobs: matrix: target: [ x86_64-pc-windows-msvc, - i686-pc-windows-msvc, ] steps: - name: checkout @@ -74,7 +73,6 @@ jobs: matrix: target: [ x86_64-pc-windows-msvc, - i686-pc-windows-msvc, ] steps: - name: Build dummy windows ${{ matrix.target }} diff --git a/.github/workflows/publish-csharp.yml b/.github/workflows/publish-csharp.yml index 81b911c2d..0697c681c 100644 --- a/.github/workflows/publish-csharp.yml +++ b/.github/workflows/publish-csharp.yml @@ -69,11 +69,6 @@ jobs: name: bindings-x86_64-pc-windows-msvc path: lib/bindings/langs/csharp/src/runtimes/win-x64/native - - uses: actions/download-artifact@v4 - with: - name: bindings-i686-pc-windows-msvc - path: lib/bindings/langs/csharp/src/runtimes/win-x86/native - - name: Update package version if: ${{ inputs.package-version }} working-directory: lib/bindings/langs/csharp/src diff --git a/.github/workflows/publish-golang.yml b/.github/workflows/publish-golang.yml index 0d721a671..1cf6692b1 100644 --- a/.github/workflows/publish-golang.yml +++ b/.github/workflows/publish-golang.yml @@ -36,16 +36,6 @@ jobs: name: bindings-golang path: breez_sdk_liquid - - uses: actions/download-artifact@v4 - with: - name: bindings-i686-linux-android - path: breez_sdk_liquid/lib/android-386 - - - uses: actions/download-artifact@v4 - with: - name: bindings-armv7-linux-androideabi - path: breez_sdk_liquid/lib/android-aarch - - uses: actions/download-artifact@v4 with: name: bindings-aarch64-linux-android diff --git a/.github/workflows/publish-python.yml b/.github/workflows/publish-python.yml index ade04d8e5..9f9e19b14 100644 --- a/.github/workflows/publish-python.yml +++ b/.github/workflows/publish-python.yml @@ -150,12 +150,6 @@ jobs: name: bindings-x86_64-pc-windows-msvc path: lib/bindings/langs/python/src/breez_sdk_liquid - - uses: actions/download-artifact@v4 - if: matrix.arch == 'win32' - with: - name: bindings-i686-pc-windows-msvc - path: lib/bindings/langs/python/src/breez_sdk_liquid - - uses: actions/download-artifact@v4 with: name: bindings-python diff --git a/lib/bindings/makefile b/lib/bindings/makefile index 9202871de..856fc5194 100644 --- a/lib/bindings/makefile +++ b/lib/bindings/makefile @@ -9,7 +9,7 @@ init: rustup target add aarch64-apple-ios x86_64-apple-ios rustup target add aarch64-apple-darwin x86_64-apple-darwin rustup target add aarch64-apple-ios-sim - rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android + rustup target add aarch64-linux-android x86_64-linux-android rustup target add aarch64-unknown-linux-gnu x86_64-unknown-linux-gnu @if [ $$(uname) == "Darwin" ] ; then cargo install cargo-lipo ; fi cargo install cbindgen @@ -36,21 +36,13 @@ all: bindings-swift bindings-android python-darwin react-native ## Android .PHONY: android -android: aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android +android: aarch64-linux-android x86_64-linux-android cargo run --features=uniffi/cli --bin uniffi-bindgen generate src/breez_sdk_liquid.udl --no-format --language kotlin -o ffi/kotlin aarch64-linux-android: $(SOURCES) ndk-home cargo ndk -t aarch64-linux-android -o ffi/kotlin/jniLibs build --release cp -a $(ANDROID_NDK_HOME)/toolchains/llvm/prebuilt/$(OS_NAME)-x86_64/sysroot/usr/lib/aarch64-linux-android/libc++_shared.so ffi/kotlin/jniLibs/arm64-v8a/ -armv7-linux-androideabi: $(SOURCES) ndk-home - cargo ndk -t armv7-linux-androideabi -o ffi/kotlin/jniLibs build --release - cp -a $(ANDROID_NDK_HOME)/toolchains/llvm/prebuilt/$(OS_NAME)-x86_64/sysroot/usr/lib/arm-linux-androideabi/libc++_shared.so ffi/kotlin/jniLibs/armeabi-v7a/ - -i686-linux-android: $(SOURCES) ndk-home - cargo ndk -t i686-linux-android -o ffi/kotlin/jniLibs build --release - cp -a $(ANDROID_NDK_HOME)/toolchains/llvm/prebuilt/$(OS_NAME)-x86_64/sysroot/usr/lib/i686-linux-android/libc++_shared.so ffi/kotlin/jniLibs/x86/ - x86_64-linux-android: $(SOURCES) ndk-home cargo ndk -t x86_64-linux-android -o ffi/kotlin/jniLibs build --release cp -a $(ANDROID_NDK_HOME)/toolchains/llvm/prebuilt/$(OS_NAME)-x86_64/sysroot/usr/lib/x86_64-linux-android/libc++_shared.so ffi/kotlin/jniLibs/x86_64/