### Install Go using Homebrew Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/manual_testing/README.md Install the Go programming language using Homebrew. This is a prerequisite for compiling lightwalletd. ```bash brew install go ``` -------------------------------- ### Install Rust Toolchain Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md Install the Rust toolchain using rustup. This is a prerequisite for local FFI development. ```bash curl --proto '=https' --tlsv1.3 -sSf https://sh.rustup.rs | sh ``` -------------------------------- ### Install SwiftLint using Homebrew Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/SWIFTLINT.md Use this command to install SwiftLint if you have Homebrew. Avoid installing it as a CocoaPod. ```bash brew install swiftlint ``` -------------------------------- ### Setup Bundles Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Sets up bundles for a given round. Frees `FfiBundleSetupResult` via `zcashlc_voting_free_bundle_setup_result`. ```swift zcashlc_voting_setup_bundles(roundId:notes:) ``` -------------------------------- ### Example Final Summary Output Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/Performance.md An example of how the `finalSummary` object might be printed, showing the min, max, and average times for various synchronization-related operations. ```text downloadedBlocksTimes: min: 0.002303004264831543 max: 0.9062199592590332 avg: 0.14520481750369074 validatedBlocksTimes: min: 0.01760399341583252 max: 0.019036054611206055 avg: 0.0178409144282341 scannedBlocksTimes: min: 0.045277953147888184 max: 0.5136369466781616 avg: 0.2530662305653095 enhancementTimes: min: 0.0 max: 0.0 avg: 0.0 fetchUTXOsTimes: min: 1.9073486328125e-06 max: 2.09808349609375e-05 avg: 3.166496753692627e-06 totalSyncTimes: min: 7.222689986228943 max: 10.718868017196655 avg: 8.997062936425209 ``` -------------------------------- ### Setup Local FFI Development Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/README.md Run these commands to set up the Rust code for FFI development. This includes building from source and configuring the workspace. ```bash # One-time setup (builds from source and configures the workspace) ./Scripts/init-local-ffi.sh # Open the development workspace open ZcashSDK.xcworkspace # Fast incremental rebuild after changes ./Scripts/rebuild-local-ffi.sh ``` -------------------------------- ### Commit Message Example Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CONTRIBUTING.md An example of a well-structured commit message, including a title, issue closing, and detailed explanation. This format helps automate issue tracking and provides comprehensive context. ```text commit [some_hash] Author: You Date: some date [#258] User can take the backup test successfully more than once (#282) Closes #258 this checks that when the user taps the finished button on the phrase displayed it has definitely not passed the test before going to the recovery flow. Note: this should actually go to the next or previous screen according to the context that takes the user to the phrase display screen from that context. Add //TODO comment with the permanent fix for the problem ``` -------------------------------- ### Start Local Lightwalletd for Darkside Tests Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CLAUDE.md Launch a local lightwalletd instance for Darkside or AliasDarkside tests. Ensure to configure data directory and logging as shown. ```bash lightwalletd --no-tls-very-insecure --data-dir /tmp --darkside-very-insecure --log-file /dev/stdout ``` -------------------------------- ### Initialize Local FFI Build Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CLAUDE.md Perform a one-time setup for local FFI development, building all architectures and creating the LocalPackages directory. Use --macos-only for faster Mac development. ```bash ./Scripts/init-local-ffi.sh --macos-only ``` -------------------------------- ### Performance Test Workflow Example Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/Performance.md Illustrates a typical workflow for performance testing by enabling metrics, running multiple synchronization cycles, accumulating data for each run, and finally summarizing all runs. ```swift SDKMetrics.shared.enableMetrics() for run in 1...X { // ensure fresh start of synchronization // synchronize // collect data for this run and start new set SDKMetrics.shared.cumulateReportsAndStartNewSet() } // collect final data as a merge of all runs let finalSummary = SDKMetrics.shared.summarizedCumulativeReports() SDKMetrics.shared.disableMetrics() ``` -------------------------------- ### Reset Local FFI Setup Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CLAUDE.md Remove the LocalPackages directory and revert to using the pre-built binary XCFramework. Use this to switch back from local FFI development. ```bash ./Scripts/reset-local-ffi.sh ``` -------------------------------- ### Benchmarking Synchronization Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Example of a performance test measuring the synchronization of 100 mainnet blocks using the new SDKMetrics interface. ```swift new performance (unit) test measuring synchronization of 100 mainnet blocks ``` -------------------------------- ### Enabling Metrics Collection Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/Performance.md Call this method to start collecting raw performance data within the SDK. Metrics are disabled by default. ```swift SDKMetrics.shared.enableMetrics() ``` -------------------------------- ### Accessing the SDKMetrics Singleton Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/Performance.md Get the shared instance of SDKMetrics to interact with its functionalities. This is the entry point for all metric-related operations. ```swift SDKMetrics.shared ``` -------------------------------- ### Libzcashlc Voting Utility FFI Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Provides various utility functions for voting proof setup, PCZT/signature extraction, and witness verification. ```c zcashlc_voting_warm_proving_caches ``` ```c zcashlc_voting_decompose_weight ``` ```c zcashlc_voting_generate_delegation_inputs ``` ```c zcashlc_voting_generate_delegation_inputs_with_fvk ``` ```c zcashlc_voting_extract_pczt_sighash ``` ```c zcashlc_voting_extract_spend_auth_sig ``` ```c zcashlc_voting_extract_nc_root ``` ```c zcashlc_voting_verify_witness ``` -------------------------------- ### Install Apple Platform Rust Targets Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md Add the necessary Rust targets for Apple platforms. These are required for cross-compiling Rust code for iOS and macOS. ```bash rustup target add aarch64-apple-ios aarch64-apple-ios-sim x86_64-apple-ios rustup target add aarch64-apple-darwin x86_64-apple-darwin ``` -------------------------------- ### Initialize Local FFI Development Environment Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md Set up the local FFI development environment by running the init script. This builds the FFI from source and configures the project to use it. ```bash # Clone the repository git clone https://github.com/zcash/zcash-swift-wallet-sdk cd zcash-swift-wallet-sdk # Initialize local FFI (builds from source) ./Scripts/init-local-ffi.sh ``` -------------------------------- ### Initialize Local FFI with Cached Release Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md Initialize the local FFI environment by downloading a pre-built release instead of building from source. Use with caution if FFI code has changed. ```bash ./Scripts/init-local-ffi.sh --cached ``` -------------------------------- ### Cumulate Reports and Start New Set Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/Performance.md Generates a CumulativeSummary from the current metrics, stores it in memory, and then clears the collected data to start a new set of measurements. Useful for measuring individual runs in performance tests. ```swift // Generates `CumulativeSummary` and stores it in memory & clears out data SDKMetrics.shared.cumulateReportsAndStartNewSet() ``` -------------------------------- ### Get Commitment Bundle Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves a commitment bundle for a proposal. ```swift zcashlc_voting_get_commitment_bundle(roundId:bundleIndex:proposalId:) ``` -------------------------------- ### Get Bundle Count Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves the number of bundles for a given round. ```swift zcashlc_voting_get_bundle_count(roundId:) ``` -------------------------------- ### Get Keystone Signatures Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves Keystone signatures for a given round. ```swift zcashlc_voting_get_keystone_signatures(roundId:) ``` -------------------------------- ### Initialize Local FFI Script Usage Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md Shows the command-line usage for the init-local-ffi.sh script, including options for building from source or downloading a cached release. ```bash ./Scripts/init-local-ffi.sh # Build from source (recommended) ./Scripts/init-local-ffi.sh --cached # Download pre-built release ``` -------------------------------- ### Get Vote Transaction Hash Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves the transaction hash for a vote. ```swift zcashlc_voting_get_vote_tx_hash(roundId:bundleIndex:proposalId:) ``` -------------------------------- ### Get Delegation Submission Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves delegation submission data. Overloaded function. ```swift zcashlc_voting_get_delegation_submission(roundId:bundleIndex:senderSeed:networkId:accountIndex:) ``` ```swift zcashlc_voting_get_delegation_submission_with_keystone_sig(roundId:bundleIndex:keystoneSig:sighash:) ``` -------------------------------- ### Get Unconfirmed Delegations Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves unconfirmed delegation information for a given round. ```swift zcashlc_voting_get_unconfirmed_delegations(roundId:) ``` -------------------------------- ### Open Package.swift Directly in Xcode Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md Open the Package.swift file directly. This is a simpler option but requires manual rebuilding of the FFI after Rust changes. ```bash open Package.swift ``` -------------------------------- ### Get Share Delegations Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves share delegation information for a given round. ```swift zcashlc_voting_get_share_delegations(roundId:) ``` -------------------------------- ### Run Local lightwalletd Server Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/README.md Execute this command to run a local lightwalletd binary for DarksideTests. It configures insecure settings for testing purposes. ```bash Tests/lightwalletd/lightwalletd --no-tls-very-insecure --data-dir /tmp --darkside-very-insecure --log-file /dev/stdout ``` -------------------------------- ### Get Delegation Transaction Hash Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves the transaction hash for a delegated transaction. ```swift zcashlc_voting_get_delegation_tx_hash(roundId:bundleIndex:) ``` -------------------------------- ### SDK Initialization Parameters Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Updates to the SDK initialization process. `viewingKeys` and `walletBirthday` are removed from the `Initializer` constructor and moved to `SDKSynchronizer.prepare`. The `Initializer` constructor no longer throws exceptions. ```swift // Old initialization (pre-0.19.0) // let initializer = Initializer(fsCacheDbURL: url, viewingKeys: viewingKeys, walletBirthday: birthday) // New initialization approach let synchronizer = SDKSynchronizer(dependencies: ...) let viewingKeys = ... let birthday = WalletBirthday.birthday(with: height) _ = try await synchronizer.prepare(with: viewingKeys, walletBirthday: birthday) ``` -------------------------------- ### Prepare for Release Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CLAUDE.md Semi-automatically prepare for a new release by updating version numbers and related artifacts. ```bash ./Scripts/prepare-release.sh ``` -------------------------------- ### Compile lightwalletd Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/manual_testing/README.md Compile the lightwalletd program from its source code. This command should be run within the lightwalletd checkout directory. ```bash make ``` -------------------------------- ### Deprecated Initializer Balance Methods Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md These methods are deprecated. Use the Zatoshi-returning API for balance retrieval. ```swift func getBalance(account index: Int = 0) -> Int64 ``` ```swift func getVerifiedBalance(account index: Int = 0) -> Int64 ``` -------------------------------- ### Build ZcashLightClientKit Package Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CLAUDE.md Build the Swift Package for the macOS target. This is a fundamental command for local development and testing. ```bash swift build ``` -------------------------------- ### Get Recipients Functionality Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Implements the `getRecipients()` function for `Synchronizer`. This function retrieves possible recipients from a sent transaction, which can be addresses or internal accounts. ```swift implement getRecipients() for Synchronizer. ``` -------------------------------- ### Get Cumulative Summary Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/Performance.md Retrieves the cumulative performance summary of all collected metrics. This method returns the summary without clearing the collected data. ```swift // Get the cumulative summary of the collected data SDKMetrics.shared.cumulativeSummary() -> CumulativeSummary ``` -------------------------------- ### Initializer Alias Handling Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Demonstrates the use of ZcashSynchronizerAlias to manage multiple SDKSynchronizer instances with unique resource paths. ```swift let alias = ZcashSynchronizerAlias.default let synchronizer = try await SDKSynchronizer(alias: alias) ``` -------------------------------- ### Clone lightwalletd Repository Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/manual_testing/README.md Clone the lightwalletd repository to your local machine. This is the first step in setting up the Darksidewalletd testing environment. ```bash git clone https://github.com/zcash/lightwalletd.git ``` -------------------------------- ### Initializer with Cache DB URL for Migration Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/MIGRATING.md This convenience initializer for `Initializer` allows specifying a URL for the cache database to facilitate migration of the internal state of `CompactBlockProcessor`. ```Swift convenience public init( cacheDbURL: URL?, fsBlockDbRoot: URL, dataDbURL: URL, pendingDbURL: URL, endpoint: LightWalletEndpoint, network: ZcashNetwork, spendParamsURL: URL, outputParamsURL: URL, viewingKeys: [UnifiedFullViewingKey], walletBirthday: BlockHeight, alias: String = "", loggerProxy: Logger? = nil ) ``` -------------------------------- ### SwiftUI Button with Trailing Closure Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/SWIFTLINT.md Example of a SwiftUI Button using trailing closure syntax for its label. This pattern can trigger SwiftLint's `multiple_closures_with_trailing_closure` rule. ```swift Button(action: { self.isPresented.toggle() }) { Image(systemName: "plus") } ``` -------------------------------- ### Build PCZT Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Builds PCZT data. Takes `VotingBuildPcztParams`. ```swift zcashlc_voting_build_pczt(_:) ``` -------------------------------- ### Key Derivation with Async Methods Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Updated `KeyDeriving` protocol and `DerivationTool` methods for key derivation. `deriveUnifiedSpendingKey` and `deriveUnifiedFullViewingKey` are now async. ```swift await DerivationTool.deriveUnifiedSpendingKey(seed:accountIndex:) deriveUnifiedFullViewingKey(from:) ``` -------------------------------- ### Get Wallet Notes Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Retrieves unspent Orchard notes for a wallet account at a specific snapshot height. The account UUID must be a 16-byte non-null pointer. ```swift zcashlc_voting_get_wallet_notes(accountUuidBytes:dataDbPath:snapshotHeight:networkId:) ``` -------------------------------- ### Mainnet Checkpoints (2.0.5) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the file paths for mainnet checkpoints used in version 2.0.5. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2330000.json ``` -------------------------------- ### New Checkpoint for testShieldFunds() Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Adds a specific checkpoint file for the testShieldFunds() test case in version 0.17.3-beta. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1631000.json ``` -------------------------------- ### Open Project Workspace in Xcode Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md Open the ZcashSDK.xcworkspace file in Xcode. This is the recommended method for FFI development as it includes the FFIBuilder target. ```bash open ZcashSDK.xcworkspace ``` -------------------------------- ### Mainnet Checkpoints (2.0.3) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the file paths for mainnet checkpoints used in version 2.0.3. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2250000.json ... Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2267500.json ``` -------------------------------- ### Error Handling for Alias in Use Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Illustrates how prepare() and wipe() methods fail with InitializerError.aliasAlreadyInUse if an alias is already in use. ```swift do { try await synchronizer.prepare() } catch InitializerError.aliasAlreadyInUse { print("Alias is already in use.") } catch { // Handle other errors } ``` -------------------------------- ### Build and Prove Delegation Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Asynchronously builds and proves delegation. Resolves PIR snapshot endpoint and runs proving on a detached Task with a progress callback bridge. ```swift zcashlc_voting_build_and_prove_delegation(roundId:bundleIndex:notes:hotkeyRawAddress:pirEndpoints:expectedSnapshotHeight:networkId:pirResolver:progress:) ``` -------------------------------- ### Alternative Synchronizer APIs (Combine and Closure) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Introduces `ClosureSynchronizer` and `CombineSynchronizer` protocols with corresponding concrete implementations (`ClosureSDKSynchronizer`, `CombineSDKSynchronizer`) offering alternative API choices to the existing `SDKSynchronizer`. This allows clients to choose between different asynchronous programming models. ```swift import ZcashLightClientKit // Example usage of CombineSynchronizer let synchronizer: CombineSynchronizer = CombineSDKSynchronizer(dependencies: ...) // Example usage of ClosureSynchronizer let closureSynchronizer: ClosureSynchronizer = ClosureSDKSynchronizer(dependencies: ...) ``` -------------------------------- ### Mainnet Checkpoints (2.0.4) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the file paths for mainnet checkpoints used in version 2.0.4. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2270000.json ... Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2327500.json ``` -------------------------------- ### Run lightwalletd in Darkside Mode Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/testing/manual_testing/README.md Execute lightwalletd in a special 'darkside' mode for testing purposes. This command configures logging, timeouts, certificate generation, and network security settings. ```bash ./lightwalletd --log-file /dev/stdout --darkside-very-insecure --darkside-timeout 1000 --gen-cert-very-insecure --data-dir . --no-tls-very-insecure ``` -------------------------------- ### Development Loop: Edit, Rebuild, Test Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/docs/LOCAL_DEVELOPMENT.md The typical development loop involves editing Rust code, performing a fast incremental rebuild of the FFI, and then building/testing in Xcode. ```bash # 1. Edit Rust code vim rust/src/lib.rs # 2. Fast incremental rebuild (seconds, not minutes!) ./Scripts/rebuild-local-ffi.sh # iOS Simulator (default) ./Scripts/rebuild-local-ffi.sh ios-device # iOS Device ./Scripts/rebuild-local-ffi.sh macos # macOS # 3. Build/test in Xcode # Clean build folder if Xcode doesn't pick up changes: Cmd+Shift+K ``` -------------------------------- ### Mainnet Checkpoints Added (0.17.1-beta) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON checkpoint files added for the Mainnet in version 0.17.1-beta. These files are used to track the blockchain state. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1882500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1885000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1887500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1890000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1892500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1895000.json ``` -------------------------------- ### Automated Release Script Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CLAUDE.md Execute the fully automated release process, which includes bumping the XCFramework URL/checksum, signing a tag, and drafting a GitHub Release. ```bash ./Scripts/release.sh ``` -------------------------------- ### Testnet Checkpoints (2.0.5) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the file paths for testnet checkpoints used in version 2.0.5. ```text Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2630000.json ``` -------------------------------- ### Sapling Parameters Source URL Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Introduces a new parameter `saplingParamsSourceURL` to the `Initializer` constructor for internal use. The default value `SaplingParamsSourceURL.default` should be used. ```swift let initializer = Initializer(fsCacheDbURL: url, saplingParamsSourceURL: SaplingParamsSourceURL.default) ``` -------------------------------- ### Mainnet Checkpoints Added (0.17.5-beta) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON checkpoint files added for the Mainnet in version 0.17.5-beta. These files are used to track the blockchain state. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1912500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1915000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1917500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1920000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1922500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1925000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1927500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1930000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1932500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1935000.json ``` -------------------------------- ### Mainnet Checkpoints Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the file paths for mainnet checkpoints used in version 2.0.6. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2332500.json ... Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2382500.json ``` -------------------------------- ### Mainnet Checkpoint Files Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON files containing checkpoint data for the Zcash mainnet. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/3340000.json ... Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/3355000.json ``` -------------------------------- ### Mainnet Checkpoint Files Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md List of checkpoint files for the Mainnet. ```plaintext Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1937500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1940000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1942500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1945000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1947500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1950000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1952500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1955000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1957500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1960000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1962500.json ``` -------------------------------- ### Mainnet Checkpoints Added (0.17.3-beta) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON checkpoint files added for the Mainnet in version 0.17.3-beta. These files are used to track the blockchain state. ```text Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1897500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1900000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1902500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1905000.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1907500.json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/1910000.json ``` -------------------------------- ### Testnet Checkpoints (2.0.3) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the file paths for testnet checkpoints used in version 2.0.3. ```text Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2540000.json Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2550000.json ``` -------------------------------- ### Testnet Checkpoint Files Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON files containing checkpoint data for the Zcash testnet. ```text Sources/ZcashLightClientKit/Resources/checkpoints/testnet/4010000.json ... Sources/ZcashLightClientKit/Resources/checkpoints/testnet/4030000.json ``` -------------------------------- ### Testnet Checkpoints Added (0.17.1-beta) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON checkpoint files added for the Testnet in version 0.17.1-beta. These files are used to track the blockchain state. ```text Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2120000.json Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2130000.json ``` -------------------------------- ### Testnet Checkpoints Added (0.17.5-beta) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON checkpoint files added for the Testnet in version 0.17.5-beta. These files are used to track the blockchain state. ```text Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2150000.json Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2160000.json Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2170000.json ``` -------------------------------- ### Checkpoint File for Testnet Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the checkpoint JSON file added for the Testnet network, used for efficient synchronization. ```json Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2250000.json ``` -------------------------------- ### Checkpoint Files for Mainnet Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the checkpoint JSON files added for the Mainnet network, used for efficient synchronization. ```json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2002500.json ``` ```json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2005000.json ``` ```json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2007500.json ``` ```json Sources/ZcashLightClientKit/Resources/checkpoints/mainnet/2010000.json ``` -------------------------------- ### Testnet Checkpoints Added (0.17.3-beta) Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Lists the JSON checkpoint files added for the Testnet in version 0.17.3-beta. These files are used to track the blockchain state. ```text Sources/ZcashLightClientKit/Resources/checkpoints/testnet/2140000.json ``` -------------------------------- ### Logging Policy Configuration Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CHANGELOG.md Configure the SDK's logging behavior by passing a `loggingPolicy` to the `Initializer`. Options include default logging with customizable levels, custom logger implementations, or disabling logging entirely. ```swift Initializer(loggingPolicy: .default(OSLogger.LogLevel.debug)) ``` ```swift Initializer(loggingPolicy: .custom(MyCustomLogger())) ``` ```swift Initializer(loggingPolicy: .noLogging) ``` -------------------------------- ### Run Specific Test Plan with Xcodebuild Source: https://github.com/zcash/zcash-swift-wallet-sdk/blob/main/CLAUDE.md Use xcodebuild to run tests with a specific test plan, enabling only the OfflineTests by default. Other test targets may need manual enabling. ```bash xcodebuild ... -testPlan ZcashLightClientKit.xctestplan ```