{"id":25855627,"url":"https://github.com/openzesame/zhip","last_synced_at":"2025-03-01T17:29:41.313Z","repository":{"id":49801499,"uuid":"144578132","full_name":"OpenZesame/Zhip","owner":"OpenZesame","description":"iOS Wallet for Zilliqa","archived":false,"fork":false,"pushed_at":"2022-05-28T13:04:55.000Z","size":98057,"stargazers_count":35,"open_issues_count":0,"forks_count":7,"subscribers_count":7,"default_branch":"main","last_synced_at":"2023-03-02T07:56:12.101Z","etag":null,"topics":["cold-wallet","coordinator-pattern","cryptocurrency","cryptography","ios-wallet","mvvm","rxcocoa","rxswift","swift","wallet","zilliqa"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/OpenZesame.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-08-13T12:40:54.000Z","updated_at":"2023-01-16T01:43:05.000Z","dependencies_parsed_at":"2022-08-29T20:21:12.445Z","dependency_job_id":null,"html_url":"https://github.com/OpenZesame/Zhip","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenZesame%2FZhip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenZesame%2FZhip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenZesame%2FZhip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/OpenZesame%2FZhip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/OpenZesame","download_url":"https://codeload.github.com/OpenZesame/Zhip/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241399538,"owners_count":19956917,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cold-wallet","coordinator-pattern","cryptocurrency","cryptography","ios-wallet","mvvm","rxcocoa","rxswift","swift","wallet","zilliqa"],"created_at":"2025-03-01T17:29:40.636Z","updated_at":"2025-03-01T17:29:41.301Z","avatar_url":"https://github.com/OpenZesame.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"![ZhipLogo](zhip-logo.png)\n\n![Build Status](https://app.bitrise.io/app/257ea698a1e55eec/status.svg?token=Cy4YjEgbtcNYxkJqTtNX3Q\u0026branch=develop)\n\n[![License MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\n# Zhip\nThis is the open source code code for the [iOS wallet app Zhip (App Store link)](https://apps.apple.com/us/app/zhip/id1455248315). Zhip is the worlds first iOS wallet for Zilliqa. It uses the [Zilliqa Swift SDK \"Zesame\"](https://github.com/OpenZesame/Zesame).\n\n# Getting started\n- Xcode 12 (Xcode 11 might work as well.)\n- Clone this repo\n\nYou can thus get started right away:\n```sh\nopen Zhip.xcodeproj\n```\n\n## Optional\n- Install [brew](https://brew.sh/)\n- Install [SwiftLint](https://github.com/realm/SwiftLint) (using brew)\n- Install [SwiftGen](https://github.com/SwiftGen/SwiftGen) (using brew)\n\n# Architecture\nThis app uses a novel architecture named *SLC: Single-Line Controller*, I **strongly** suggest that you begin by reading [this medium article about it](https://medium.com/@sajjon/single-line-controller-fbe474857787) and make sure to [read the second part](https://medium.com/@sajjon/single-line-controller-advanced-case-406e76731ee6) as well.\n\nIt is a kind of MVVM where the `UIViewController` in most cases is one single line and all view and flow of data logic is put in the ViewModel. It also uses the [Coordinator pattern](http://khanlou.com/2015/10/coordinators-redux/).\n\n# Dependencies\nYou will find all dependencies inside the list of SPM packages in Xcode -\u003e Project *Zhip* -\u003e *Swift Packages* (or by *Show the Project navigator* and under *Swift Package Dependencies*), but here are the most important ones.\n\n## Zesame\nThis iOS wallet is entirely dependent on the [Zilliqa Swift SDK known as `Zesame`](https://github.com/OpenZesame/Zesame), without that this wallet couldn't exist. All cryptographic methods and all interaction with the Zilliqa Ledger through their [API](https://apidocs.zilliqa.com/#introduction) is done using `Zesame`.\n\n## EllipticCurveKit\nIn turn, `Zesame` is dependent on the Elliptic Curve Cryptography of [EllipticCurveKit]((https://github.com/Sajjon/EllipticCurveKit)), for the generation of new wallets, restoration of existing ones, the encryption of your private keys into keystores and the signing of your transactions using [Schnorr Signatures](https://en.wikipedia.org/wiki/Schnorr_signature).\n\n## Other\n\n- [RxSwift](https://github.com/ReactiveX/RxSwift): The library uses RxSwift for async programming.\n\n- [EFQRCode](https://github.com/EFPrefix/EFQRCode): Generate QR codes.\n\n- [QRCodeReader.swift](https://github.com/yannickl/QRCodeReader.swift): Scanning QR codes.\n\n\n# Privacy\nWhen starting the app for the first time you will be asked to opt-in or opt-out for crashreporting. \n\nIf you chose to opt in and would like to opt out at a later time - or the other way around - you can do so from Settings at any time. \n\nIf you choose to opt out Crashlytics will not be initialized and no crash reports will be sent from your app. \n\nIf you chose to opt in it will make it easier to fix potential bugs in the apps, especially those crucial ones resulting in crashes. Crashlytics has been added for this sole purpose, make the app more reliable and less likely to crash. \n\n## Disabled by default\nOpen the file [Zhip-Info.plist](Sources/Application/Zhip-Info.plist) and you will see that the value for the key `firebase_crashlytics_collection_enabled` is set to `false`, which is the [documented way of turning of crash reports by default](https://firebase.google.com/docs/crashlytics/customize-crash-reports)\n\nWhen the app starts it checks if you accepted crash reporting, you can verify this by looking in the file [Bootstrap.swift](Sources/Application/Utils/Bootstrap.swift) \n```swift\nfunc setupCrashReportingIfAllowed() {\n    guard Preferences.default.isTrue(.hasAcceptedCrashReporting)\n```\n\nAnd searching in the code for [`\"for .hasAcceptedCrashReporting\"`](https://github.com/OpenZesame/Zhip/search?l=Swift\u0026q=%22for%3A+.hasAcceptedCrashReporting%22) shows when and how the boolean flag `hasAcceptedCrashReporting` gets written.\n\n## Analytics not used\nIn the function `setupCrashReportingIfAllowed` in `Bootstrap.swift` you will see calls to `Firebase`:\n```swift\n    FirebaseConfiguration.shared.setLoggerLevel(FirebaseLoggerLevel.min)\n    FirebaseApp.configure()\n    Fabric.with([Crashlytics.self])\n```\nFirebase analytics is not used, but Crashlytics is setup using Firebase.\n\nYou can search for `Analytics.logEvent` or `Analytics.setScreenName` in the code and you will not find any search results.\n\n# Donate\nThis **free** wallet and the foundation Zesame its built upon has been developed by the single author Alexander Cyon without paid salary in his free time - approximatly **a thousand hours of work** since May 2018 ([see initial commit in Zesame](https://github.com/OpenZesame/Zesame/commit/d948741f3e3d38a9962cc9a23552622a303e7ff4)). \n\n**Any donation would be much appreciated**:\n\n- ZIL: zil108t2jdgse760d88qjqmffhe9uy0nk4wvzx404t\n- BTC: 3GarsdAzLpEYbhkryYz1WiZxhtTLLaNJwo\n- ETH: 0xAB8F0137295BFE37f50b581F76418518a91ab8DB\n- NEO: AbbnnCLP26ccSnLooDDcwPLDnfXbVL5skH\n\n# License\n\n**Zhip** is released under the [MIT License](LICENSE).\n\n# Acknowledgments\nSound effect when transaction is sent is called [\"RADAR\"](https://freesound.org/people/MATTIX/sounds/445723/) by [Mattias \"MATTIX\" Lahoud](https://freesound.org/people/MATTIX/) under [CreativeCommons](https://creativecommons.org/licenses/by/3.0/), thanks a lot!\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenzesame%2Fzhip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fopenzesame%2Fzhip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fopenzesame%2Fzhip/lists"}