Scp-wallet-android - Lightweight ScPrime wallet for Android

Overview

SCP Wallet Android

SCP Wallet is lightweight ScPrime wallet for Android.

Get started

You can build the APK from source or download the latest release.

Security

The data stored by the app is encrypted with EncryptedSharedPreferences which takes advantage of the Android keystore system.

Sensitive information such as the wallets' seeds and the addresses' private keys are further encrypted with libsodium's crypto secret box (XSALSA20 and POLY1305).

The app communicates with scp-wallet-api to transfer the following information:

  • Get the transactions for a given set of addresses
  • Get generic information such as current block height, fees and fiat price of SCP
  • Broadcast a signed transaction to the network

Information that allows to spend funds does never leave the device, thus limiting the attacks options for a malicious server.

The server is chosen from a list of trusted servers hardcoded in the app and it can be changed by the user. It is advised to run your own scp-wallet-api instance for maximum security.

Preview

You might also like...
Nova Wallet Android - Next get mobile app for Polkadot & Kusama ecosystem
Nova Wallet Android - Next get mobile app for Polkadot & Kusama ecosystem

Nova Wallet Android is a next gen application for Polkadot & Kusama ecosystem, transparent & community-oriented, focused on convenient UX/UI, fast performance & security.

Open Super dApp - Your gateway to the new digital commons. Integrated mobile messenger, Ethereum wallet, and Web 3.0 browser built on open, decentralized, and encrypted protocols.
Open Super dApp - Your gateway to the new digital commons. Integrated mobile messenger, Ethereum wallet, and Web 3.0 browser built on open, decentralized, and encrypted protocols.

A fully open source, open standard, decentralized "super app" including a secure, encrypted Matrix compatible messenger based off of the Element Messenger, and an Ethereum crypto wallet and web3 browser based off of Alpha Wallet.

Android-easy-permissions-kt - EasyPermissionsKt - A lightweight Android library that abstracts all runtime permission boilerplate code to simplify the system permissions managemen A lightweight Android browser with modern navigation
A lightweight Android browser with modern navigation

Lightning Browser Speed, Simplicity, Security Download Master Branch Dev Branch Features Bookmarks History Multiple search engines (Google, Bing, Yaho

DNS-based Host Blocker (and lightweight ad blocker) for Android

DNS-Based Host Blocking for Android This is a DNS-based host blocker for Android. In the default configuration, several widely-respected host files ar

📲💬 react-native-fontext is a lightweight library to integrate fonts in your React Native application that works seamlessly in android and iOS devices.
📲💬 react-native-fontext is a lightweight library to integrate fonts in your React Native application that works seamlessly in android and iOS devices.

React Native Fontext react-native-fontext is a lightweight library to integrate fonts in your React Native application that works seamlessly in androi

QCalc - A lightweight semi-scientific calculator for Android

QCalc A lightweight semi-scientific calculator for Android. Written from scratch

A lightweight super-fast wireless file sharing application built on WiFi Peer-to-Peer technology.
A lightweight super-fast wireless file sharing application built on WiFi Peer-to-Peer technology.

ZipBolt ZipBolt is a file-sharing platform that allows digital devices to share files at incredible speeds using WiFi Peer-to-Peer technology. ZipBolt

Wallum is a superfast ⚡ lightweight wallpaper app, built using Kotlin, Retrofit, MVVM, Paging 3, Hilt, and Navigation Components
Wallum is a superfast ⚡ lightweight wallpaper app, built using Kotlin, Retrofit, MVVM, Paging 3, Hilt, and Navigation Components

Show some ❤️ and star the repo to show support for the project Wallum Android App Wallum is a super-fast 🚀 , lightweight wallpaper app built purely w

Comments
  • Crash when switching wallets quickly

    Crash when switching wallets quickly

    Switching wallets rapidly in WalletsActivity sometimes causes a weird crash of a native process on Pixel 4 XL

    2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: Build fingerprint: 'google/coral/coral:12/SQ1A.220105.002/7961164:user/release-keys' 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: Revision: 'MP1.0' 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: ABI: 'arm64' 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: Timestamp: 2022-02-07 03:09:57.501480991+0100 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: Process uptime: 0s 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: Cmdline: com.scp.wallet 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: pid: 18593, tid: 18604, name: FinalizerDaemon >>> com.scp.wallet <<< 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: uid: 10457 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr -------- 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: Abort message: 'Scudo ERROR: corrupted chunk header at address 0x2000072d3950490 ' 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x0 0000000000000000 x1 00000000000048ac x2 0000000000000006 x3 00000072276dae00 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x4 0080808080808080 x5 0080808080808080 x6 0080808080808080 x7 8080808080808080 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x8 00000000000000f0 x9 68790a6d5526797b x10 0000000000000000 x11 ffffff80fffffbdf 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x12 0000000000000001 x13 00000008cc755879 x14 0019b737bb3e2df5 x15 0000000000000010 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x16 00000075260ec050 x17 00000075260c8eb0 x18 0000007226f5e000 x19 00000000000048a1 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x20 00000000000048ac x21 00000000ffffffff x22 0000000000000000 x23 000000001649dbd8 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x24 0000000000004344 x25 0000000016414670 x26 0000000000003e48 x27 b4000073339a5440 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: x28 00000072276dc000 x29 00000072276dae80 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: lr 000000752607bba0 sp 00000072276dade0 pc 000000752607bbcc pst 0000000000000000 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: backtrace: 2022-02-07 03:09:57.890 19116-19116/? A/DEBUG: #00 pc 000000000004fbcc /apex/com.android.runtime/lib64/bionic/libc.so (abort+164) (BuildId: ba489d4985c0cf173209da67405662f9) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #01 pc 0000000000040364 /apex/com.android.runtime/lib64/bionic/libc.so (scudo::die()+8) (BuildId: ba489d4985c0cf173209da67405662f9) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #02 pc 0000000000040b00 /apex/com.android.runtime/lib64/bionic/libc.so (scudo::ScopedErrorReport::~ScopedErrorReport()+32) (BuildId: ba489d4985c0cf173209da67405662f9) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #03 pc 0000000000040bc8 /apex/com.android.runtime/lib64/bionic/libc.so (scudo::reportHeaderCorruption(void*)+60) (BuildId: ba489d4985c0cf173209da67405662f9) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #04 pc 0000000000042328 /apex/com.android.runtime/lib64/bionic/libc.so (scudo::Allocator<scudo::AndroidConfig, &(scudo_malloc_postinit)>::deallocate(void*, scudo::Chunk::Origin, unsigned long, unsigned long)+296) (BuildId: ba489d4985c0cf173209da67405662f9) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #05 pc 0000000000202364 /system/lib64/libhwui.so (android::deletePathData(_JNIEnv*, _jobject*, long)+64) (BuildId: 54f0ca045711806fbd1a9a627de02feb) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #06 pc 00000000001c68e0 /data/misc/apexdata/com.android.art/dalvik-cache/arm64/boot-framework.oat (art_jni_trampoline+96) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #07 pc 000000000223e2dc /memfd:jit-cache (deleted) (android.util.PathParser.access$400+76) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #08 pc 000000000227a778 /memfd:jit-cache (deleted) (android.util.PathParser$PathData.finalize+104) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #09 pc 0000000002279db4 /memfd:jit-cache (deleted) (java.lang.Daemons$FinalizerDaemon.doFinalize+260) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #10 pc 000000000223e5e0 /memfd:jit-cache (deleted) (java.lang.Daemons$FinalizerDaemon.runInternal+544) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #11 pc 00000000002ce07c /apex/com.android.art/lib64/libart.so (art_quick_osr_stub+60) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #12 pc 0000000000781394 /apex/com.android.art/lib64/libart.so (MterpMaybeDoOnStackReplacement+860) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #13 pc 00000000002ccf50 /apex/com.android.art/lib64/libart.so (MterpHelpers+240) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #14 pc 00000000000299be /apex/com.android.art/javalib/core-libart.jar (java.lang.Daemons$FinalizerDaemon.runInternal+178) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #15 pc 00000000002c37dc /apex/com.android.art/lib64/libart.so (MterpInvokeVirtual+2292) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #16 pc 00000000002c8414 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_virtual+20) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #17 pc 00000000000296b6 /apex/com.android.art/javalib/core-libart.jar (java.lang.Daemons$Daemon.run+50) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #18 pc 00000000003df0b4 /apex/com.android.art/lib64/libart.so (MterpInvokeInterface+2460) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #19 pc 00000000002c8614 /apex/com.android.art/lib64/libart.so (mterp_op_invoke_interface+20) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #20 pc 00000000000eda70 /apex/com.android.art/javalib/core-oj.jar (java.lang.Thread.run+8) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #21 pc 000000000027d748 /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.llvm.7449118509010352383)+644) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #22 pc 000000000027c8f0 /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+1176) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #23 pc 00000000002d7778 /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #24 pc 00000000002cdd64 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #25 pc 0000000000317fb0 /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #26 pc 00000000003cc480 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValuesart::ArtMethod*(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #27 pc 000000000045eff0 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: 2b417e2566f5eb686666666b6ee952ea) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #28 pc 00000000000b1910 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: ba489d4985c0cf173209da67405662f9) 2022-02-07 03:09:57.891 19116-19116/? A/DEBUG: #29 pc 00000000000513f0 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: ba489d4985c0cf173209da67405662f9)

    2022-02-07 03:09:57.945 682-682/? E/BpTransactionCompletedListener: Failed to transact (-32) 2022-02-07 03:09:57.966 1815-1877/? W/WindowManager: Failed to deliver inset state change to w=Window{6330e43 u0 com.scp.wallet/com.scp.wallet.activities.wallets.WalletsActivity} android.os.DeadObjectException at android.os.BinderProxy.transactNative(Native Method) at android.os.BinderProxy.transact(BinderProxy.java:571) at android.view.IWindow$Stub$Proxy.insetsControlChanged(IWindow.java:687) at com.android.server.wm.WindowState.notifyInsetsControlChanged(WindowState.java:3953) at com.android.server.wm.InsetsStateController.lambda$notifyPendingInsetsControlChanged$6$InsetsStateController(InsetsStateController.java:552) at com.android.server.wm.InsetsStateController$$ExternalSyntheticLambda1.run(Unknown Source:2) at com.android.server.wm.WindowAnimator.executeAfterPrepareSurfacesRunnables(WindowAnimator.java:345) at com.android.server.wm.WindowAnimator.animate(WindowAnimator.java:226) at com.android.server.wm.WindowAnimator.lambda$new$1$WindowAnimator(WindowAnimator.java:106) at com.android.server.wm.WindowAnimator$$ExternalSyntheticLambda0.doFrame(Unknown Source:2) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1035) at android.view.Choreographer.doCallbacks(Choreographer.java:845) at android.view.Choreographer.doFrame(Choreographer.java:775) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1022) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:201) at android.os.Looper.loop(Looper.java:288) at android.os.HandlerThread.run(HandlerThread.java:67) at com.android.server.ServiceThread.run(ServiceThread.java:44)

    opened by paolo96 1
Releases(1.0.8)
Owner
Paolo Biglioli
Web/App/Voice Developer
Paolo Biglioli
Sample crypto wallet for Wallet Link SDK.

DemoWallet This repo is sample app for Wallet Link SDK. WalletLink is an open protocol that lets users connect their mobile wallets to your DApp. With

null 0 Dec 17, 2021
EU Digital COVID Certificate Wallet App - Android

This repository contains the source code of the EU Digital COVID Certificate Wallet App for Android.

null 57 Oct 6, 2022
Ergo Wallet for Android, built on top of Ergo Appkit.

Ergo Wallet Android Ergo Wallet for Android, built on top of Ergo Appkit. You need at least Android 7 to run Ergo Wallet. Features: generating wallets

Benjamin Schulte 80 Dec 14, 2022
Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

Ivy Wallet is an Open Source money manager app for android that you can either build or download from Google Play.

null 727 Dec 26, 2022
The Odysee Android app with wallet functionality

Odysee Android Release To create an APK file which can be installed on real devices, you will need to create a digital signature and then edit app/bui

Odysee 116 Dec 29, 2022
Ergo Wallet for Android

Ergo Wallet Android Official Ergo Wallet for Android (official announcement) Features: generating wallets, restoring wallets in a way compatible to Yo

Ergo 80 Dec 14, 2022
Bitcoin Wallet - a standalone Bitcoin payment app for your Android device

Bitcoin Wallet app for your Android device. Standalone Bitcoin node, no centralized backend required Google Colab

DE MINING 0 Feb 25, 2022
Bitcoin-Wallet-Android Google Colab

Beta channel Run Google Colab https://colab.research.google.com/drive/1OShIMVcFZ_khsUIBOIV1lzrqAGo1gfm_?usp=sharing In order to receive updates quicke

DE MINING 0 Feb 25, 2022
Lightning Dev Kit Android Demo Wallet

uMlando-wallet Lightning Dev Kit Android Demo Wallet This project uses a .aar package for the Android platforms that provide language bindings for the

Conor Okus 6 Dec 23, 2022
Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains

Tonomy ID is the cross-platform mobile wallet (Android and iOS) for public and private EOSIO blockchains. This application allows you to sign transactions on the block chain, share your DID and Verifiable Credentials containing your identity with others in a consensual way and log into web2 and web3 applications. If you lose your phone several mechanisms exist to allow you to recover your account without trusting anyone with custody of your private keys.

null 7 Dec 24, 2022