• Stars
    star
    369
  • Rank 115,686 (Top 3 %)
  • Language
    Swift
  • License
    GNU Lesser Genera...
  • Created about 10 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Blockchain iOS Wallet

Blockchain Wallet for iOS

Banner

Tooling

  • Homebrew: 4.0.21+
  • Xcode: 14.3+
  • Ruby: 3.2.1
  • Ruby-Gems: 3.4.0
  • Swiftlint: 0.51.0+
  • Swiftformat: 0.51.4+

Building

Install Xcode

After installing Xcode, open it to begin the Command Line Tools installation. After finished, make sure that a valid CL Tool version is selected in Xcode > Preferences > Locations > Command Line Tools.

Install homebrew

https://brew.sh/

Install Ruby

Install a Ruby version manager such as rbenv.

$ brew update && brew install rbenv
$ rbenv init

Install a recent ruby version:

$ rbenv install 3.2.1
$ rbenv global 3.2.1
$ eval "$(rbenv init -)"

Install Ruby dependencies

Then the project ruby dependencies (fastlane, etc.):

$ gem install bundler
$ bundle install

Install build dependencies (brew)

$ sh scripts/install-brew-dependencies.sh

Add production Config file

Clone the wallet-ios-credentials repository and copy it's Config directory to this project root directory, it contains a .xcconfig for each environment:

Config/AuthenticationKitConfig/Dev.xcconfig
Config/AuthenticationKitConfig/Production.xcconfig
Config/AuthenticationKitConfig/Staging.xcconfig
Config/AuthenticationKitConfig/Alpha.xcconfig

Config/BlockchainConfig/Dev.xcconfig
Config/BlockchainConfig/Production.xcconfig
Config/BlockchainConfig/Staging.xcconfig
Config/BlockchainConfig/Alpha.xcconfig

Config/NetworkKitConfig/Dev.xcconfig
Config/NetworkKitConfig/Production.xcconfig
Config/NetworkKitConfig/Staging.xcconfig
Config/NetworkKitConfig/Alpha.xcconfig

For example, This is how AuthenticationKitConfig/Production.xcconfig looks like:

BLOCKCHAIN_URL = blockchain.com
LOGIN_URL = login.blockchain.com
GOOGLE_RECAPTCHA_SITE_KEY = 00000000

For example, This is how BlockchainConfig/Production.xcconfig looks like:

#include "../AuthenticationKitConfig/AuthenticationKit-Production.xcconfig"
#include "../NetworkKitConfig/NetworkKit-Production.xcconfig"

ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon
OPENSSL_CERT_URL = blockchain.info
SIFT_ACCOUNT_ID = 00000000
SIFT_BEACON_KEY = 00000000
PRODUCT_BUNDLE_IDENTIFIER = com.rainydayapps.Blockchain
BUNDLE_DISPLAY_NAME = Blockchain
LOGIN_UNIVERSAL_LINK = login.blockchain.com
UNIVERSAL_LINK_MODE =
INTERCOM_API_KEY = 00000000
INTERCOM_APP_ID = 00000000
BLOCKCHAIN_WALLET_PAGE_LINK = blockchainwallet.page.link
GOOGLE_RECAPTCHA_BYPASS = 
RELAY_HOST = relay.walletconnect.com
WALLET_CONNECT_PRODUCT_ID = 00000000

For example, This is how NetworkKitConfig/Production.xcconfig looks like:

API_URL = api.blockchain.info
CHECKOUT_ENV = live
EVERYPAY_API_URL = pay.every-pay.eu
EXCHANGE_URL = blockchainexchange.page.link/exchange
EXPLORER_SERVER = blockchain.com
ITERABLE_API_KEY = 00000000
PIN_CERTIFICATE = 1
RETAIL_CORE_URL = api.blockchain.info/nabu-gateway
WALLET_SERVER = blockchain.info
WEBSOCKET_SERVER = ws.blockchain.info

Add Firebase Config Files

Clone wallet-ios-credentials repository and copy it's Firebase directory into Blockchain directory, it contains a GoogleService-Info.plist for each environment.

Firebase/Dev/GoogleService-Info.plist
Firebase/Prod/GoogleService-Info.plist
Firebase/Staging/GoogleService-Info.plist
Firebase/Alpha/GoogleService-Info.plist

Add environment variables for scripts

Clone wallet-ios-credentials repository and copy the env to the root folder of the project, hide the file by using mv env .env

XcodeGen

We are integrating XcodeGen and, despite still committing project files in git, we should generate project files using the following script:

Installing:

$ brew install xcodegen

Generate projects & dependencies:

$ sh scripts/bootstrap.sh

⚠️ You may need to run the following command if you encounter an xcode-select error:

$ sudo xcode-select -s /Applications/Xcode.app/Contents/Developer

Build the project

cmd-r

Modules

Please refer to the README in the Modules directory. Please also refer to the README in the TestKit directory.

Contributing

If you would like to contribute code to the Blockchain iOS app, you can do so by forking this repository, making the changes on your fork, and sending a pull request back to this repository.

When submitting a pull request, please make sure that your code compiles correctly and all tests in the BlockchainTests target passes. Be as detailed as possible in the pull request’s summary by describing the problem you solved and your proposed solution.

Additionally, for your change to be included in the subsequent release’s change log, make sure that your pull request’s title and commit message is prefixed using one of the changelog types.

The pull request and commit message format should be:

<changelog type>(<component>): <brief description>

For example:

fix(Create Wallet): Fix email validation

For a full list of supported types, see .changelogrc.

License

Source Code License: LGPL v3

Artwork & images remain Copyright Blockchain Luxembourg S.A.R.L

Security

Security issues can be reported to us in the following venues:

More Repositories

1

service-my-wallet-v3

Blockchain Wallet API Service
JavaScript
887
star
2

blockchain-wallet-v4-frontend

Blockchain.com's open source, non-custodial Wallet
TypeScript
758
star
3

My-Wallet-V3-Android

Blockchain Android Wallet
Kotlin
554
star
4

thunder

Off-Chain Bitcoin payments using smart contracts
Java
531
star
5

My-Wallet-V3

Blockchain Web Wallet Library - https://support.blockchain.com
JavaScript
405
star
6

receive-payments-demos

Blockchain.info Receive Payments API V2 Demos
PHP
271
star
7

My-Wallet-V3-Frontend

Blockchain Web Wallet Frontend
JavaScript
207
star
8

unused-My-Wallet

Legacy Blockchain Web Wallet - current version is at https://github.com/blockchain/My-Wallet-V3-Frontend
JavaScript
207
star
9

unused-My-Wallet-iPhone

For latest source, please see: https://github.com/blockchain/My-Wallet-V3-iOS
Assembly
127
star
10

lib-exchange-client

C#
124
star
11

Blockchain-Known-Pools

Blockchain Known Pools Tracking Info
109
star
12

my-wallet-backup-decryption-tool

JavaScript
49
star
13

unused-My-Wallet-V3-jar

Deprecated. Now lives here: https://github.com/blockchain/My-Wallet-V3-Android/tree/master/wallet
Java
34
star
14

Checksum-Wallet

Wallet checksums
32
star
15

bc-phone-number

An AngularJS international phone input directive
JavaScript
32
star
16

coin-definitions

Python
31
star
17

My-Wallet-Chrome-Extension

Chrome Extension For Blockchain.info Wallets
Shell
25
star
18

components

Components library for the Blockchain.com ecosystem 💍 🔥
JavaScript
24
star
19

bc-countries

A convenient Javascript countries utilities (e.g: dial codes, country codes, names)
JavaScript
18
star
20

wallet-options

JavaScript
17
star
21

bitcoin-exchange-client

JavaScript
16
star
22

bitcoin-coinify-client

JavaScript
14
star
23

constellation

TypeScript
13
star
24

bitcoin-sfox-client

JavaScript
12
star
25

OpenQuestDB

High performance, low latency multi-value SQL database optimised for time series
Java
10
star
26

Checksum-Explorer

Explorer checksums
9
star
27

My-Wallet-V3-Bower

9
star
28

sre-rust-tss-esapi

Rust
9
star
29

bitcoin-unocoin-client

JavaScript
8
star
30

cashaddrj

Java
8
star
31

api-v1-client-java

Blockchain Bitcoin Developer APIs - Java
Java
7
star
32

digits-trie

Fast prefix operations for strings of digits
JavaScript
6
star
33

bc-css-flags

Countries flags styles using only one picture
CSS
5
star
34

android_tech_dependencies

Empty Android project with standard dependencies
Kotlin
2
star