An advanced Ethereum/EVM mobile wallet
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Hwee-Boon Yar 81ea2e7c57 Switch from NSLog to os.log for AlphaWalletTrackAPICalls 5 months ago
.github Update CODEOWNERS file to update default reviewers for PRs 1 year ago
AlphaWallet Open TokenScript viewer in in-app browser for tokens with `script-uri` entries instead of with the in-app TokenScript engine viewer 5 months ago
AlphaWallet.xcworkspace/xcshareddata/swiftpm Use xcodegen 5 months ago
AlphaWalletSafariExtension Switch Safari Web Extension from os.log os_logger to os.log logger 5 months ago
AlphaWalletShare SwiftFormat 5 months ago
AlphaWalletTests SwiftFormat 5 months ago
docs Fix: typo 2 years ago
fastlane Rename fastlane lane to `upload` to avoid name collison: "Name of the lane 'testflight' is already taken by the action named 'testflight' #4964 2 years ago
modules Switch from NSLog to os.log for AlphaWalletTrackAPICalls 5 months ago
resources Classify a few types comforming to `Initializer` as a new protocol `Service` instead, to be more intention revealing, reflecting that they are long-running 2 years ago
scripts Added target to Makefile to download, compress, and add the chains.zip file to the AlphaWallet project. 3 years ago
.all-contributorsrc Update contributors in README 4 years ago
.gitattributes renamed project to AlphaWallet 7 years ago
.gitignore Use xcodegen 5 months ago
.gitmodules Remove submodule: contracts 6 years ago
.node-version [DEV] Add .node-version for convenience when running danger 2 years ago
.swift-version Upgrade to Swift 5.0 (some external pods are kept at 4.2) 2 years ago
.swiftformat Enabled additional rules for SwiftFormat 2 years ago
.swiftlint.yml Upgrade SwiftLint 2 years ago
.travis.yml Update config for Xcode 14.3 1 year ago
.xcode-version Update config for Xcode 14.3 1 year ago
AlphaWalletABI.podspec [Refactoring] Moved some types into AlphaWalletABI to make AlphaWalletFoundation (and AlphaWalletWeb3) smaller 1 year ago
AlphaWalletAddress.podspec [Refactoring] Moved TokenInstanceWebView and related types into AlphaWalletTokenScript pod, where it belongs and renamed to TokenScriptWebView 1 year ago
AlphaWalletAttestation.podspec [Refactoring] Moved some types into AlphaWalletABI to make AlphaWalletFoundation (and AlphaWalletWeb3) smaller 1 year ago
AlphaWalletBrowser.podspec [Refactoring] Moved TokenInstanceWebView and related types into AlphaWalletTokenScript pod, where it belongs and renamed to TokenScriptWebView 1 year ago
AlphaWalletCore.podspec [Refactoring] Moved TokenInstanceWebView and related types into AlphaWalletTokenScript pod, where it belongs and renamed to TokenScriptWebView 1 year ago
AlphaWalletENS.podspec Updated Podspecs to specify Swift 5.0 for all AlphaWallet* pods, edited code to allow CoinTicker.swift, UniversalLinkService.swift, and Formatter.swift to be compiled under Swift 5. 1 year ago
AlphaWalletFoundation.podspec Format .podspec(s) 6 months ago
AlphaWalletGoBack.podspec [Refactoring] Extract AlphaWalletTokenScript pod 1 year ago
AlphaWalletHardwareWallet.podspec [Refactoring] Extract AlphaWalletTokenScript pod 1 year ago
AlphaWalletLogger.podspec [Refactoring] Extract AlphaWalletTokenScript pod 1 year ago
AlphaWalletNotifications.podspec [Refactoring] Extract AlphaWalletTokenScript pod 1 year ago
AlphaWalletOpenSea.podspec [Refactoring] Extract AlphaWalletTokenScript pod 1 year ago
AlphaWalletShareExtensionCore.podspec [Refactoring] Extract AlphaWalletTokenScript pod 1 year ago
AlphaWalletTokenScript.podspec [Refactoring] Moved TokenInstanceWebView and related types into AlphaWalletTokenScript pod, where it belongs and renamed to TokenScriptWebView 1 year ago
AlphaWalletTrackAPICalls.podspec Format .podspec(s) 6 months ago
AlphaWalletTrustWalletCoreExtensions.podspec [Refactoring] Extract AlphaWalletTokenScript pod 1 year ago
AlphaWalletWeb3.podspec [Refactoring] Move more types into AlphaWalletWeb3, also tightening related function/property access specifiers 1 year ago
CONTRIBUTING.md Add docs and some re-organization of docs 3 years ago
FUNDING.json Create FUNDING.json 9 months ago
Gemfile [Xcode] Make it build with Xcode 15 (with 1 commented out change needed) 1 year ago
Gemfile.lock Upgrade fastlane 8 months ago
LICENSE Change to MIT license 5 years ago
Makefile Use xcodegen 5 months ago
NotificationSubscribersStorage.swift Prepare for push notifications #6707 1 year ago
Podfile Up deployment target from iOS 13.0 to iOS 14.0 5 months ago
Podfile.lock Up deployment target from iOS 13.0 to iOS 14.0 5 months ago
README.md Use xcodegen 5 months ago
crowdin.yml Add extra source mappings for crowdin 6 years ago
dangerfile.js Add Danger check for Decimal(exactly: aBigUInt) which compiles but crashes at runtime 6 years ago
package.json [DEV] Fix: danger broken after #6067 2 years ago
project.yml Up deployment target from iOS 13.0 to iOS 14.0 5 months ago
yarn.lock Merge pull request #6872 from AlphaWallet/dependabot/npm_and_yarn/semver-7.5.3 1 year ago

README.md

AlphaWallet - Advanced, Open Source Ethereum Mobile Wallet & dApp Browser for iOS

Build Status Maintenance GitHub contributors MIT license codecov

AlphaWallet is an open source programmable blockchain apps platform. It's compatible with tokenisation framework TokenScript, offering businesses and their users in-depth token interaction, a clean white label user experience and advanced security options. Supports all Ethereum based networks.

AlphaWallet and TokenScript have been used by tokenisation projects like FIFA and UEFA’s blockchain tickets, Bartercard’s Qoin ecommerce ecosystem, several Automobiles’ car ownership portal and many more.

Star us on GitHub — it helps!

alphawallet open source wallet ios preview

Get AlphaWallet Open Source Wallet on Apple Store

Table of Contents

About AlphaWallet - Features

Easy to use and secure open source Ethereum wallet for iOS and Android, with native ERC20, ERC721 and ERC875 support. AlphaWallet supports all Ethereum based networks: Ethereum, xDai, Ethereum Classic, POA, Ropsten, Sepolia, Kovan, Rinkeby and Sokol.

  • Beginner Friendly
  • Secure Enclave Security
  • Web3 dApp Browser
  • TokenScript Enabled
  • Interact with DeFi, DAO and Games with SmartTokens
  • No hidden fees or tech background needed

AlphaWallet Is A Token Wallet

AlphaWallet's focus is to provide an interface to interact with Ethereum Tokens in an intuitive, simple and full featured manner. This is what sets us aside from other open source ethereum wallets.

Select Use Cases

Full TokenScript Support

With TokenScript, you can extend your Token’s capabilities to become "smart" and secure, enabling a mobile-native user experience 📱

“SmartTokens” are traditional fungible and non fungible tokens that are extended with business logic, run natively inside the app and come with signed code to prevent tampering or phishing. It allows you to realise rich functions that Dapps previously struggled to implement. With SmartTokens you can get your token on iOS and Android in real time without the need to build your own ethereum wallet.

AlphaWallet is the “browser” for users to access these SmartTokens. You can get the most out of your use case implementation... without leaving the wallet.

Visit TokenScript Documentation or see TokenScript Examples to learn what you can do with it.

Philosophy

AlphaWallet is founded by blockchain geeks, business professionals who believe blockchain technology will have a massive impact on the future and change the landscape of technology in general.

We are committed to connecting businesses and consumers with the new digital economic infrastructure through tokenisation. Tokenised rights can be traded on the market and integrated across systems, forming a Frictionless Market and allowing limitless integration with the web.

We want to give businesses the whitelabel tools they need to develop their ethereum wallets, and join the tokenised economy.

Getting Started

  1. Download Xcode. Check here for the Xcode we are building with.
  2. Clone this repository
  3. Run make bootstrap to install tools and dependencies.
  4. Run make to generate the project file
  5. Open the AlphaWallet.xcworkspace file (not AlphaWallet.xcodeproj) to begin.

Whenever you add/remove/move source files, re-run make to update the project and workspace files. Do not edit AlphaWallet.xcodeproj and AlphaWallet.xcworkspace directly.

If you get a "Bundle does not exist. Please install bundle." error, please consult with your macOS guru because a vital part of your system is missing.

Read INTRODUCTION-CODE.md.

Updating GemFile or Podfile

After the Gemfile is updated, run make install_gems to update the gems in the vendor/bundle directory.

After the Podfile is updated, run make install_pods to update the pods in the Pods directory.

Add your token to AlphaWallet

if you want to add your token you can use one of functions of ImportToken class. It allows you to import your own erc token

func importToken(token: ERCToken, shouldUpdateBalance: Bool = true) -> Token

or import token by resolving contract fields name, symbol, decimals ... by passing Contract Address and RPCServer.

func importToken(for contract: AlphaWallet.Address, server: RPCServer, onlyIfThereIsABalance: Bool = false) -> Promise<Token>

If you’d like to include TokenScript and extend your token functionalities, please refer to TokenScript.

Add dApp to the “Discover dApps” section in the browser

Submit a PR to the following file: https://github.com/AlphaWallet/alpha-wallet-ios/blob/master/AlphaWallet/Browser/ViewModel/Dapps.swift

Unfortunately the app store forbade us from listing dapps, so this list is not currently used. It is still maintained in this repo, but in the meantime this will not be visible in the app. We hope to bring this back in the future.

Replace API Keys

API keys are stored in the file modules/AlphaWalletFoundation/AlphaWalletFoundation/Settings/Types/Constants+Credentials.swift. You can replace the keys for your own build. Tell git to ignore changes to that file by running:

git update-index --assume-unchanged modules/AlphaWalletFoundation/AlphaWalletFoundation/Settings/Types/Constants+Credentials.swift

Undo this with:

git update-index --no-assume-unchanged modules/AlphaWalletFoundation/AlphaWalletFoundation/Settings/Types/Constants+Credentials.swift

How to Contribute

You can submit feedback and report bugs as Github issues. Please be sure to include your operating system, device, version number, and steps to reproduce reported bugs.

All contibutions welcome. Please read CONTRIBUTING.md

Request or submit a feature 📮

Would you like to request a feature? Please get in touch with us Telegram, Twitter or through our community forums.

If you’d like to contribute code with a Pull Request, please make sure to follow code submission guidelines.

Spread the word 🐥

We want to connect businesses and consumers with the new digital economic infrastructure, where everyone can benefit from technology-enabled free markets. Help us spread the word:

share on linkedin share on twitter share on telegram send via email share on reddit share on facebook

To learn more about us, please check our Blog or join the conversation:

Contributors

Thank you to all the contributors! You are awesome.


Hwee-Boon Yar

💻

James Sangalli

💻

Vladyslav Shepitko
💻

Tomek Nowak

💻

Oguzhan Gungor

💻

Oleg Gordiichuk

💻

Victor Zhang

💻

Viktor Radchenko

💻

Michael Scoff

💻

Philipp Rieger

💻

Alejandro Isaza

💻

Qixiang

💻

hewig

💻

Tyler Miller

💻

Marat Subkhankulov

💻

Cyrus Goh

💻

Weiwu Zhang

💻

Kamuela Franco

💻

Mish Ochu

💻

James Zaki

💻

Lucas Toledo

💻

Victor Miroshnikov

💻

Steven Wolfe

💻

Roman Storm

💻

Nimit

💻

Kerr Marin Miller

💻

Sergej Kunz

💻

Mohsen

💻

Cory Smith

💻

Corey Caplan

💻

Tal Beja

💻

Alex Soong

💻

Alex Tsankov

💻

TamirTian

💻

Ling

💻

Timur Badretdinov

💻


💻

Stanislav Strebul

💻

Andrew

💻

Peter Grassberger

💻

License

AlphaWallet iOS is available under the MIT license. Free for commercial and non-commercial use.