ZcashLightClientKit/Example/ZcashLightClientSample
Francisco Gindre 802aaa437d
[#959] Fix `v_transactions` view issues with value (#963)
This change switches to a new (future) version of the rust crates
that will get rid of the sent and received transactions Views in
favor of a `v_transaction` view that will do better accounting of
outgoing and incoming funds. Additionally it will support an
outputs view for seeing the inner details of transactions enabling
the SDKs tell the users the precise movement of value that a tx
causes in its multiple possible ways according to the protocol.

the `v_tx_outputs` view is not yet implemented.

Sent and Received transaction sub-types are kept for compatibility
purposes but they are generated from Overviews instead of queried
from a specific view.

In the transaction Overview the value represents the whole value
transfer for the transaction from the point of view of a given
account including fees. This means that the value for a single
transaction Overview struct represents the addition or subtraction
of ZEC value to the account's balance.

Future updates will give clients the possibility to drill into the
inner workings of those value changes in a per-output basis for
each transaction.

Also, the field `pending_unmined` field was added to `v_transactions`
so that wallets can query `DataDb` for pending but yet unmined txs

This will prepare the field for removing the notion of a "PendingDb"
and its nuances.

Also updated test database `darkside_data.db`

Closes #959

Closes #971 ZcashLightClientKitSample main target broken swiftlint script

Demo App improvements: Show Short date and value on transaction list
2023-04-18 09:10:56 -03:00
..
ZcashLightClientSample [#959] Fix `v_transactions` view issues with value (#963) 2023-04-18 09:10:56 -03:00
ZcashLightClientSample.xcodeproj [#959] Fix `v_transactions` view issues with value (#963) 2023-04-18 09:10:56 -03:00
ZcashLightClientSampleTests [#711] Add Swiftlint plug in to SDK (#722) 2023-01-18 17:09:04 +01:00
assets Move read.me up a directory. (#90) 2020-03-09 19:39:10 -03:00
README.md Remove dependecy on rust sources 2022-02-28 17:03:20 +00:00
ZcashLightClientSample-Mainnet-Info.plist Feature/single pod mainnet (#60) 2020-01-14 19:25:14 -03:00

README.md

iOS demo app

This is a demo app that exercises code in https://github.com/zcash/ZcashLightClientKit, which has all the iOS-related functionalities necessary to build a mobile Zcash shielded wallet.

It relies on Lightwalletd, a backend service that provides a bandwidth-efficient interface to the Zcash blockchain. There is an equivalent Android demo app.

Contents

Requirements

Demo app requires a target device running iOS 12+.

Back to contents

Exploring the demo app

After building the app, the emulator should launch with a basic app that exercises the SDK (see picture below). To explore the app, click on each menu item, in order, and also look at the associated code.

The android demo app, running in Android Studio

The demo app is not trying to show what's possible, but to present how to accomplish the building blocks of wallet functionality in a simple way in code. It is comprised of the following self-contained demos. All data is reset between demos in order to keep the behavior repeatable and independent of state.

Demos

Menu Item Related Code Description
Get address GetAddressViewController.swift Given a seed, display its z-addr
Latest block height LatestHeightViewController.swift Given a lightwalletd server, retrieve the latest block height
Sync blocks SyncBlocksViewController.swift Download compact blocks from the lightwalletd server.
Get balance GetBalanceViewController.swift Calculates the balance of the current wallet address.
Send funds SendViewController.swift Send a transaction, the most complex demo.
Transaction details TransactionDetailViewController.swift See status of a transaction: pending or confirmed, sent or received.
All transactions TransactionsTableViewController.swift, TransactionsDataSource.swift Displays as much available transaction information on the wallet.
Paginated transactions PaginatedTransactionsViewController.swift Demonstrates how to paginate transactions.

Back to contents

Getting started

Were assuming you already have a brilliant app idea, a vision for the apps UI, and know the ins and outs of the Android lifecycle. Well just stick to the Zcash app part of “getting started.”

Similarly, the best way to build a functioning Zcash shielded app is to implement the functionalities that are listed in the demo app, in roughly that order:

  1. Generate and safely store your private key.
  2. Get the associated address, and display it to the user on a receive screen. You may also want to generate a QR code from this address.
  3. Make sure your app can talk to the lightwalletd server and check by asking for the latest height, and verify that its current with the Zcash network.
  4. Try interacting with lightwalletd by fetching a block and processing it. Then try fetching a range of blocks, which is much more efficient.
  5. Now that you have the blocks process them and list transactions that send to or are from that wallet, to calculate your balance.
  6. With a current balance (and funds, of course), send a transaction and monitor its transaction status and update the UI with the results.

Back to contents

Resources

You dont need to do it all on your own.

Back to contents