meshbits / pirate-chain-ios-wallet Goto Github PK
View Code? Open in Web Editor NEWThis project forked from freesidevirtual/zcash-ios-wallet
iOS version of the Pirate Wallet
License: MIT License
This project forked from freesidevirtual/zcash-ios-wallet
iOS version of the Pirate Wallet
License: MIT License
yes, I have noticed this blank screen too.
steps to replicate for me are:
So far I observed the wallet just opens up and we can continue with our regular wallet operations.
There needs to be a Wallet security like inputting PIN to open a wallet and steps like conforming the PIN before sending transaction.
The simpler examples can be like Mycelium.
Much better examples can be AtomicDEX mobile app. You can just test it and experience it's user interface and we can learn and adapt much from them in our application.
The number pad for entering PIN should be showing the numbers at random location. Example:
1 2 3
4 5 6
7 8 9
0
Shows randomly everytime the app prompts the input PIN option. Like:
9 6 0
7 1 8
3 5 2
4
The use-case I have in my mind as of current Pirate Wallet project is, if we could have a "Tor Mode" for Pirate Wallet in settings, which if enabled, makes the wallet restart, and connect it's connections to the endpoint (in current case lightd.meshbits.io:9067
) routed through Tor.
I know there are limitations of applying Tor routing on iOS, and I have been looking for solution to implement Tor on iOS apps for a while. But, if Tor.framework can solve what I want to achieve, having the Tor router embedded within the app will be very good to have.
These are the relevant links to read on that subject:
lightwaleltd
nodesBecause I can make a home server software coded in golang
, which can be all in one easy to manage Tor
node with Pirate Chain full blockchain node installed along with lightwalletd
setup properly, with the onion v3 address setup to make a connection to the wallet.
In such home server setup, I can show a QR code of the onion v3 address, which the wallet can scan and add it to it's own custom lightwalletd
servers list.
lightwalletd
server which can possibly be under heavy traffic if this wallet gets used heavily, or in general this same lightwalletd
server gets used by other applications around.Overall having the ability for wallet to connect via Tor is all positive. But if we should target this feature, we should target it only for phase 3.
Swift
coded app using Tor.framework
Objective-C
compiled library.lightwalletd
gRPC server through Tor routed network over to server example lightd.meshbits.io:9067
.lightwalletd
gRPC server through Tor routed network over to [onion v3 address] which will be made available soon enough once we start working on this task.After the account creation, enabled FaceID and when i try to login using FaceID screen goes blank .
Restarting the app fixes this issue.
This seems a bug.
We should think about modifying the UI/UX a little bit to have place to display the fiat (govt. issued centralised dumb money) i.e. USD, EUR etc in application wherever relevant.
For this feature, I'd highly recommend checking out Mycelium wallet on Android. Take the idea of displaying fiat converted balance exactly how Mycelium does, or at least influenced by it.
Coinpaprika provides API to get Pirate Chain's price data, which we can use to get started:
➜ ~ curl -s https://api.coingecko.com/api/v3/coins/markets\?vs_currency\=usd\&ids\=pirate-chain\&order\=market_cap_desc\&per_page\=100\&page\=1\&sparkline\=false\&price_change_percentage\=1h%2C%2024h%2C%207d%2C%2030d | jq
[
{
"id": "pirate-chain",
"symbol": "arrr",
"name": "Pirate Chain",
"image": "https://assets.coingecko.com/coins/images/6905/large/Pirate_Chain.png?1560913844",
"current_price": 4.47,
"market_cap": 812017105,
"market_cap_rank": 95,
"fully_diluted_valuation": null,
"total_volume": 2952260,
"high_24h": 4.62,
"low_24h": 3.45,
"price_change_24h": 1.02,
"price_change_percentage_24h": 29.53878,
"market_cap_change_24h": 188313761,
"market_cap_change_percentage_24h": 30.19284,
"circulating_supply": 181820207.53912,
"total_supply": 200000000,
"max_supply": null,
"ath": 16.76,
"ath_change_percentage": -73.43995,
"ath_date": "2021-04-23T18:13:27.423Z",
"atl": 0.00797788,
"atl_change_percentage": 55699.79813,
"atl_date": "2020-11-26T02:10:52.806Z",
"roi": null,
"last_updated": "2021-05-25T11:28:29.355Z",
"price_change_percentage_1h_in_currency": 0.08861843927950086
}
]
please include the cursor on where you put the amount to send because its un-noticeble
I have deleted an APP without the 'unlinking a device' option.
After reinstallation, It asked for an option to set a PIN and then took me to the dashboard screen directly.
It's against privacy.
If you are pretending a user as new then he should go through all the onboarding process again and if not, you must ask for a OLD PIN (do not show an option to set new)
PS: If possible, remove all the data at the time deletion and let him recover his account from recovery key only.
@satindergrewal what's your thought on this?
Add the URI handling, that is so we can get a bitpay like payments system where users click to buy on a website and it pops open the wallet to a payment confirmation screen.
Will have more better details soon on this task.
While I collect more detail information form other developers and team, have a look at this Bitcoin's standard URI scheme:
https://developer.bitcoin.org/devguide/payment_processing.html
Bitcoin proposes URI like this:
bitcoin:mjSk1Ny9spzU2fouzYgLqGUD8U41iR35QN\
?amount=0.10\
&label=Example+Merchant\
&message=Order+of+flowers+%26+chocolates
And for Pirate Chain we can possibly use URI like this:
arrr:zs1j8kz2pkfdmwatkufwlu0e9kkvxmk7g6k78ymld53tg20q8php4s9d26s5jk53f85qxvm6v046em
?amount=0.10\
&label=Example+Merchant\
&message=Order+of+flowers+%26+chocolates
Where the label
and message
can be input in the MEMO field while making a transaction. iOS wallet allows inputting an optional MEMO text, and we can utilise that for the URI data storage.
User had 1.00 ARRR in wallet.
Sent a transaction which errored because wallet tried sending amount + fee (1.00 + 0.0001) which is 1.0001 ARRR.
In such case if it's found that user doesn't has the fee amount to create this transaction the transaction MUST be adjusted accordingly.
In this case, it'll be:
1 ARRR wallet balance - 0.0001 tx fee = 0.9999 ARRR
So, let the user show a dialog box confirming these adjustment with a message:
We found your wallet didn't had enough funds for fees, so the transaction has been adjusted as follows:
Wallet Balance: 1 ARRR
Transaction Fess: 0.0001 ARRR
The receiver <ADDRESS_HERE> will be receiving 0.9999 ARRR.
Please CONFIRM to send this transaction or cancel to adjust sending amount.
Here's a perfect explanation of what it means: https://electrum.readthedocs.io/en/latest/faq.html#:~:text=Sweeping%20private%20keys%20means%20to,existing%20address%20in%20your%20wallet.&text=Instead%2C%20all%20the%20bitcoins%20they,%3E%20Private%20Keys%20%2D%3E%20Sweep.
We can plan for this feature for later phases.
Right now the checkpoints for Pirate chain are with the difference of 100k to sync with the network, and the last or recent one starts from height 1,000,000. Whereas the current height is somewhere about 1,390,000+. That's near to 400k block headers which needs to download and make mobile wallet sync with the network.
I used this file to get required blockheight
and sapling_tree
relevant data to update the dependency of this iOS wallet updated:
https://raw.githubusercontent.com/piratenetwork/piratewallet-light-cli/merge_upstream/coin-checkpoint.json
Checkpoints set for this iOS wallet, based on blocks info taken from piratewallet-light-cli:
https://github.com/Meshbits/ZcashLightClientKit/blob/shield-funds-poc/ZcashLightClientKit/Stencil/WalletBirthday+saplingtree.stencil
I need more checkpoints with the same info to add to the list, which will make syncing wallet faster with the network:
height: 300000,
hash: "000000001598dc03f64b36169a482dfa3d85a10d42cde06aa6cc6a75707389b2",
time: 1553764949,
sapling_tree: "01d7243618851dc06cc59ec16c6d77d8e352af3793cd21c0a9938372bb7157670500120001945ae5bdc14a29faa8e2fd50f01ef6a3a8da167584ce9e82063d4ed17416196f0103ed7a6d19f12d1c442c0057fd078903ef6cd3e3306044d7c0f8fdd36f6fe06a01447f859be85701d6871e2480b5036ea63b6f47c144cf29436e7294be603e1c3001b4ec68e46936f3aebb175fb332509326e8d2a182d1449d53777b4a7e2c29fa5801cfc6e9fbf8f0ca810b0e45cdcebc6e765faaaeb8fa0be187be895e683f0504540000000152ccf74ce6806b561418faa131c772506c83acd3b896cab2663fcfb94d09a45801d5ad937c911d34f096261bf38ccee013ccf89dd50bfe5e54465e3b9506a8a62a01984f57016d4a2bd43c417aab49679e5dd79daba0e1caa26f1f3ce84cf18a54260000013953b793f6fae2bab55d9ab9f8ae549285e768bd97b55e2720922a13c470084e0000013fe4d9c4934ce4be54bd7e7b988c600405efd8ff50c137f63c386f7eab596a0d"
Each time you leave the pirate wallet there is a notification, maybe cap it 1-2x per session depending on if the wallet is sync’d or not
At the time of creating this issue, the application only allows restoring the wallet using 24 word seed phrase only. While, there should also be demand and need for restoring a wallet address directly using the private key associated with a specific Pirate Chain address.
The sample app has example Get Address page which shows the private key of address. So, at least exporting the privkey
which is also referred in shielded address's case as SpendingKey
is possible.
The backup of private key should be only shown after PIN or Biomatric authentication, and two options should be provided to backup:
Unsure at the moment, how the wallet handles the generation and usage of Pirate Chain address from seed phrase. It needs to be explored and identified this process and then make any necessary changes to add the capability to also have the options of importing private key instead of just only the option of restoring with the 24 word seed phrase.
The current process of backup wallet does not verify if the user has actually backup the seed phrase on paper or not.
In current process, the backup wallet screen after creating new wallet shows the option to copy the "seed phrase" and "wallet birthay" to operating system clipboard. After user confirms the wallet backup is taken, it takes user straight to Home screen.
We need to modify this process a little.
Add "Verify Backup" screen before proceeding to Home screen:
A friendly UX can be added on top of each input field where the seed phrase position is shown to enter the seed word at that position, and if the user enters the right seed word in right position's input field, a ✅ is shown, and if wrong ❌ is shown.
This will allow user to identify while typing if they typed the correct seed word at correct position while verifying seed phrase backup.
IMPORTANT: The important part in seed phrase backup process is to "Disable Screen Capture" feature of the OS. If the wallet screen is in the process of Backup Wallet, specially on screen where it shows the wallet seed phrase, "Disable Screen Capture" feature.
Adding a "Send Max" button in the sending tab would be nice so you don't have to calculate amount - tx cost yourself :)
On the Send tab, the wallet displaying Processing fee : 0.00001 ARRR
, it should be 0.0001 ARRR
as default txs are using this value for fees.
It's a cosmetic change.
Trying to compile wallet from branch arrr-mac
gives following errors for TinyQRScanner
dependency under Pods:
'AVCaptureSession' is only available in Mac Catalyst 14.0 or newer
To resolve it, change the "macOS" version from 10..5.1
to 11.0
.
After that when building the project, it gives errors about libzcashlc.a
as follows:
ld: in /Users/satinder/repo/meshbits/pirate-chain-ios-wallet/wallet/Pods/ZcashLightClientKit/lib/libzcashlc.a(zcashlc-c99a8b34047907fb.zcashlc.cgphjfl4-cgu.10.rcgu.o), building for Mac Catalyst, but linking in object file built for , for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Wrapper for zcash flutter - https://github.com/hhanh00/zwallet/tree/main/native/warp_api_ffi
And this is for the flutter plugin which I think is using that wrap-sync API: https://github.com/hhanh00/zwallet/tree/main/packages/warp_api_ffi
I see this has all the APIs for wallet operations. https://github.com/hhanh00/zwallet/blob/main/native/warp_api_ffi/binding.h
Looks like he's made his own API wrapper instead of using Zcash's iOS or Android SDK
NOTE: This option should only be shown under Settings -> Backup Wallet, and not needed to show at wallet creation phase.
Storing seed phrase in icloud keychain has cons and pros:
In any case like history of iCloud account(s) hacking goes, the risk is the user's seed phrase gets compromised via icloud account hacked, and that very well possibly may result in compromising and losing funds in pirate chain address associated to that seed phrase.
The user gets convenient option to backup and restore their seed phrase related to the application.
So, understanding both pros and cons, I propose to make option of storing the seed phrase in iCloud keychain only after user acknowledges the risk that in any case their iCloud account gets compromised, they can potentially lose their funds as well.
In that case under settings make "Backup wallet" option show another screen, instead of straight showing the wallet seed phrase. The options under "Settings -> Backup wallet" should look like this:
On selecting option "Backup wallet seed to iCloud" show user a warning:
Storing the seed phrase in iCloud will provide convenience to store backup of my wallet
which can be used to restore the wallet on another device in case current device is lost or
unusable to access pirate chain wallet funds.
Checkbox: I acknowledge that in case my iCloud account gets compromised, my pirate chain
wallet funds can potentially gets hacked as well.
Under that, give 2 buttons:
Only after the "Understood risk, please proceed" option selected take backup to iCloud account.
If the user selects "No thanks", we'll not be storing the backup on iCloud keychain.
So, this makes the backup of seed phrase to iCloud keychain optional.
Basically after setting pin ans creating new wallet, go to change pin. Enter the pin, it will show up as invalid. When you exit out of the the pin it takes you back to record your seed, but this time it’s a different seed
Need some work to be done to ensure every text in the app is localised. There shouldn't be any text which is sitting statically in the code files.
There are already localised files and holds some text variables which are being used in the app, but let's try to improve it further if we can.
Once we have the text in localised files, we'll need to make settings menu to change the language of the app without depending on system wide language settings to switch the app's language to desired language.
From the Wallet tab, on Recent Transfers
if I click on the tx entry, it doesn't do anything to display details of the tx. I have to navigate to History tab and click on the tx entry to see details/memo.
Could you enable tx details or memo viewing from the main page (Wallet) tab?
Wallet is 100% synced, and after a while it starts throwing "Invalid addresses" errors.
Full log:
2021-05-18 04:04:07.451947+1200 ECC Wallet[45198:1113414] [Bugsnag] [WARN] Invalid apiKey: expected a 32-character hexademical string, got "CEST_NE_PAS_A_TOKEN"
WARN : BSG_KSCrashSentry.c (98): BSG_KSCrashType bsg_kscrashsentry_installWithContext(BSG_KSCrash_SentryContext *, BSG_KSCrashType, void (*)(void *)): App is running in a debugger. Only handled events will be sent to Bugsnag.
WARN : BSG_KSCrashSentry.c (98): BSG_KSCrashType bsg_kscrashsentry_installWithContext(BSG_KSCrash_SentryContext *, BSG_KSCrashType, void (*)(void *)): App is running in a debugger. Only handled events will be sent to Bugsnag.
2021-05-18 04:04:07.455336+1200 ECC Wallet[45198:1113414] [Bugsnag] [ERROR] Failed to install crash handler. No exceptions will be reported!
2021-05-18 04:04:07.455598+1200 ECC Wallet[45198:1113414] [Bugsnag] [INFO] Last run terminated abnormally; likely Out Of Memory.
2021-05-18 04:04:07.569936+1200 ECC Wallet[45198:1113725] [] nw_protocol_get_quic_image_block_invoke dlopen libquic failed
2021-05-18 04:04:07.978783+1200 ECC Wallet[45198:1113725] [Bugsnag] [INFO] Sent session B880612A-B280-48F2-B771-F89B451A6653
2021-05-18 04:04:09.775298+1200 ECC Wallet[45198:1113726] DDFileLogger: Failed to get offset: (null)
2021-05-18 04:04:09.797484+1200 ECC Wallet[45198:1113722] [] DatabaseMigrationManager[75] - migrateDataDb(uvks:) - DEBUG 🐞 - Attempting to perform migration for data Db - currentVersion: 1. Latest version is: 1
2021-05-18 04:04:09.798730+1200 ECC Wallet[45198:1113726] [] DatabaseMigrationManager[91] - migrateDataDb(uvks:) - DEBUG 🐞 - Data Db - no migration needed
2021-05-18 04:04:09.798888+1200 ECC Wallet[45198:1113719] [] DatabaseMigrationManager[63] - migrateCacheDb() - DEBUG 🐞 - Attempting to perform migration for cache Db - currentVersion: 0. Latest version is: 0
2021-05-18 04:04:09.799071+1200 ECC Wallet[45198:1113719] [] DatabaseMigrationManager[69] - migrateCacheDb() - DEBUG 🐞 - Cache Db - no migration needed
2021-05-18 04:04:09.799234+1200 ECC Wallet[45198:1113719] [] DatabaseMigrationManager[50] - migratePendingDb() - DEBUG 🐞 - Attempting to perform migration for pending Db - currentVersion: 0. Latest version is: 0
2021-05-18 04:04:09.799418+1200 ECC Wallet[45198:1113726] [] DatabaseMigrationManager[56] - migratePendingDb() - DEBUG 🐞 - PendingDb Db - no migration needed
2021-05-18 04:04:10.381840+1200 ECC Wallet[45198:1113719] [] LightWalletGRPCService[390] - connectivityStateDidChange(from:to:) - EVENT ⏱ - Connection Changed from idle to connecting
2021-05-18 04:04:10.432340+1200 ECC Wallet[45198:1113719] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-05-18 04:04:10.432496+1200 ECC Wallet[45198:1113719] [Client] Updating selectors after delegate addition failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-05-18 04:04:10.432633+1200 ECC Wallet[45198:1113414] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-05-18 04:04:10.433106+1200 ECC Wallet[45198:1113414] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-05-18 04:04:10.433164+1200 ECC Wallet[45198:1113719] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-05-18 04:04:10.433553+1200 ECC Wallet[45198:1113414] [Client] Synchronous remote object proxy returned error: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-05-18 04:04:10.433617+1200 ECC Wallet[45198:1113719] [Client] Updating selectors failed with: Error Domain=NSCocoaErrorDomain Code=4099 "The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated." UserInfo={NSDebugDescription=The connection to service on pid 0 named com.apple.commcenter.coretelephony.xpc was invalidated.}
2021-05-18 04:04:11.337031+1200 ECC Wallet[45198:1113726] [] LightWalletGRPCService[390] - connectivityStateDidChange(from:to:) - EVENT ⏱ - Connection Changed from connecting to ready
2021-05-18 04:04:22.841204+1200 ECC Wallet[45198:1113724] [] CompactBlockProcessor[746] - setTimer() - DEBUG 🐞 - Timer triggered: Starting compact Block processor!.
Processor State: synced
latestHeight: 1393086
attempts: 0
lowerbound: Optional(1393086)
2021-05-18 04:04:41.922984+1200 ECC Wallet[45198:1114071] [] CompactBlockProcessor[746] - setTimer() - DEBUG 🐞 - Timer triggered: Starting compact Block processor!.
Processor State: synced
latestHeight: 1393086
attempts: 0
lowerbound: Optional(1393086)
2021-05-18 04:05:05.013654+1200 ECC Wallet[45198:1114270] [] CompactBlockProcessor[746] - setTimer() - DEBUG 🐞 - Timer triggered: Starting compact Block processor!.
Processor State: synced
latestHeight: 1393086
attempts: 0
lowerbound: Optional(1393086)
2021-05-18 04:05:17.470835+1200 ECC Wallet[45198:1114419] [] CompactBlockProcessor[746] - setTimer() - DEBUG 🐞 - Timer triggered: Starting compact Block processor!.
Processor State: synced
latestHeight: 1393086
attempts: 0
lowerbound: Optional(1393086)
2021-05-18 04:05:35.560804+1200 ECC Wallet[45198:1114576] [] CompactBlockProcessor[746] - setTimer() - DEBUG 🐞 - Timer triggered: Starting compact Block processor!.
Processor State: synced
latestHeight: 1393086
attempts: 0
lowerbound: Optional(1393086)
2021-05-18 04:05:35.896543+1200 ECC Wallet[45198:1114630] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockDownloadOperation: 0x7f9e06d81ed0>{name = 'Download Operation: 1393087...1393087'} started
2021-05-18 04:05:36.128012+1200 ECC Wallet[45198:1114474] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockValidationOperation: 0x7f9e06d60ed0> started
2021-05-18 04:05:36.240355+1200 ECC Wallet[45198:1114630] [] CompactBlockProcessor[505] - processNewBlocks(range:) - DEBUG 🐞 - validateChainFinished
2021-05-18 04:05:36.240539+1200 ECC Wallet[45198:1114473] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockScanningOperation: 0x7f9e06d321a0> started
2021-05-18 04:05:36.348353+1200 ECC Wallet[45198:1114630] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockEnhancementOperation: 0x7f9e06d6e540> started
2021-05-18 04:05:36.348573+1200 ECC Wallet[45198:1114473] [] CompactBlockProcessor[554] - processNewBlocks(range:) - DEBUG 🐞 - Started Enhancing range: 1393087...1393087
2021-05-18 04:05:36.348879+1200 ECC Wallet[45198:1114630] [] CompactBlockEnhancementOperation[49] - main() - DEBUG 🐞 - no transactions detected on range: 1393087 ... 1393087
2021-05-18 04:05:36.349784+1200 ECC Wallet[45198:1114473] [] CompactBlockProcessor[614] - notifyProgress(completedRange:) - DEBUG 🐞 - progress: 1.0
height: 1393087
2021-05-18 04:05:36.805193+1200 ECC Wallet[45198:1114630] [] CompactBlockProcessor[721] - processingFinished(height:) - ERROR 💥 - failed to refresh utxos
2021-05-18 04:05:36.806249+1200 ECC Wallet[45198:1114473] [] CompactBlockProcessor[800] - fail(_:) - ERROR 💥 - generalError(message: "-5: Invalid addresses")
2021-05-18 04:05:56.794664+1200 ECC Wallet[45198:1114835] [] CompactBlockProcessor[746] - setTimer() - DEBUG 🐞 - Timer triggered: Starting compact Block processor!.
Processor State: error(ZcashLightClientKit.CompactBlockProcessorError.generalError(message: "-5: Invalid addresses"))
latestHeight: 1393087
attempts: 1
lowerbound: Optional(1393086)
2021-05-18 04:05:57.025272+1200 ECC Wallet[45198:1114837] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockDownloadOperation: 0x7f9e06c53450>{name = 'Download Operation: 1393088...1393088'} started
2021-05-18 04:05:57.403430+1200 ECC Wallet[45198:1114834] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockValidationOperation: 0x7f9e06c4eb90> started
2021-05-18 04:05:57.517805+1200 ECC Wallet[45198:1114837] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockScanningOperation: 0x7f9e06c560b0> started
2021-05-18 04:05:57.518077+1200 ECC Wallet[45198:1114835] [] CompactBlockProcessor[505] - processNewBlocks(range:) - DEBUG 🐞 - validateChainFinished
2021-05-18 04:05:57.657375+1200 ECC Wallet[45198:1114837] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockEnhancementOperation: 0x7f9e06c41e10> started
2021-05-18 04:05:57.657548+1200 ECC Wallet[45198:1114835] [] CompactBlockProcessor[554] - processNewBlocks(range:) - DEBUG 🐞 - Started Enhancing range: 1393088...1393088
2021-05-18 04:05:57.657811+1200 ECC Wallet[45198:1114837] [] CompactBlockEnhancementOperation[49] - main() - DEBUG 🐞 - no transactions detected on range: 1393088 ... 1393088
2021-05-18 04:05:57.660008+1200 ECC Wallet[45198:1114838] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockDownloadOperation: 0x7f9e06d79420>{name = 'Download Operation: 1393088...1393088'} started
2021-05-18 04:05:57.887888+1200 ECC Wallet[45198:1114837] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockValidationOperation: 0x7f9e06d5ee40> started
2021-05-18 04:05:58.005358+1200 ECC Wallet[45198:1114838] [] CompactBlockProcessor[505] - processNewBlocks(range:) - DEBUG 🐞 - validateChainFinished
2021-05-18 04:05:58.005578+1200 ECC Wallet[45198:1114834] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockScanningOperation: 0x7f9e06d77410> started
2021-05-18 04:05:58.116950+1200 ECC Wallet[45198:1114834] [] ZcashOperation[42] - start() - DEBUG 🐞 - <ZcashLightClientKit.CompactBlockEnhancementOperation: 0x7f9e06d635f0> started
2021-05-18 04:05:58.117124+1200 ECC Wallet[45198:1114837] [] CompactBlockProcessor[554] - processNewBlocks(range:) - DEBUG 🐞 - Started Enhancing range: 1393088...1393088
2021-05-18 04:05:58.117433+1200 ECC Wallet[45198:1114834] [] CompactBlockEnhancementOperation[49] - main() - DEBUG 🐞 - no transactions detected on range: 1393088 ... 1393088
2021-05-18 04:05:58.118126+1200 ECC Wallet[45198:1114837] [] CompactBlockProcessor[614] - notifyProgress(completedRange:) - DEBUG 🐞 - progress: 1.0
height: 1393088
2021-05-18 04:05:59.242181+1200 ECC Wallet[45198:1114834] [] CompactBlockProcessor[721] - processingFinished(height:) - ERROR 💥 - failed to refresh utxos
2021-05-18 04:05:59.242582+1200 ECC Wallet[45198:1114837] [] CompactBlockProcessor[800] - fail(_:) - ERROR 💥 - generalError(message: "-5: Invalid addresses")
NOTE: This option should only be shown under Settings -> Backup Wallet, and not needed to show at wallet creation phase.
On selecting "Settings -> Backup Wallet -> Print Paper Wallet" the user must be given a prompt to wirelessly print a PDF or equivalent formatted document.
The formatted document to be printed must show the steps to download, install, and restore the wallet seed phrase to either this iOS wallet or Android wallet (which we'll work on soon). For testing this feature we can go with this template to print:
Pirate Chain Wallet Backup - [DATE HERE]
Your Pirate Chain Address:
[ZS_ADDRESS HERE]
Seed phrase words QR code (Encrypted):
[24 SEED PHRASE WORDS QR CODE]
How to restore wallet your wallet seed phrase to iOS Pirate Chain wallet?
1. Go to website [example.com]
2. Click on "Apple Store" icon
3. Install [iOS Wallet Name Goes here]
4. Open [iOS Wallet Name Goes here]
5. Select option "Restore" on greeting screen
6. [Might add more relevant steps ahead if needed]
How to restore wallet your wallet seed phrase to Android Pirate Chain wallet?
1. Go to website [example.com]
2. Click on "Play Store" icon
3. Install [Android Wallet Name Goes here]
4. Open [iOS Wallet Name Goes here]
5. Select option "Restore" on greeting screen
6. [Might add more relevant steps ahead if needed]
Ideally, I'd like the option to have a restore backup from some "encrypted" formatted of backup. This will allow having some sort of security if this printed paper wallet gets compromised.
If we decided on encryption method, then the restore wallet process needs to have the option to follow the process to enter decryption key.
NOTE: This decryption key MUST NOT be backup to iCloud keychain at any point.
It's keep showing 'Recovery screen', whenever I try to resume an app.
[DEBUG 🐞] CompactBlockProcessor.swift - processNewBlocks(range:) - line: 753 -> Warning: fetch operation on range 1480496...1623379 cancelled
[DEBUG 🐞] ZECCWalletEnvironment.swift - subscribeToApplicationNotificationsPublishers() - line: 366 -> applicationWillEnterForeground
[DEBUG 🐞] SDKSynchronizer.swift - start(retry:) - line: 194 -> warning: synchronizer started when already started
[EVENT ⏱] LightWalletGRPCService.swift - connectivityStateDidChange(from:to:) - line: 497 -> Connection Changed from ready to idle
[DEBUG 🐞] ZECCWalletEnvironment.swift - subscribeToApplicationNotificationsPublishers() - line: 382 -> didBecomeActiveNotification
showPassCodeScreen: true
AppDelegate.isTouchIDVisible: true
[DEBUG 🐞] ZECCWalletEnvironment.swift - subscribeToApplicationNotificationsPublishers() - line: 396 -> applicationWillResignActive
SUCCESS IN SETTINGS
[DEBUG 🐞] ZECCWalletEnvironment.swift - subscribeToApplicationNotificationsPublishers() - line: 382 -> didBecomeActiveNotification
[DEBUG 🐞] ZECCWalletEnvironment.swift - subscribeToApplicationNotificationsPublishers() - line: 396 -> applicationWillResignActive
showPassCodeScreen: false
[EVENT ⏱] LightWalletGRPCService.swift - connectivityStateDidChange(from:to:) - line: 497 -> Connection Changed from idle to connecting
2021-10-26 22:18:10.748751+0530 ECC-Wallet-no-logs[76379:6262236] dnssd_clientstub write_all(9) DEFUNCT
2021-10-26 22:18:10.748785+0530 ECC-Wallet-no-logs[76379:6262236] dnssd_clientstub deliver_request ERROR: write_all(9, 76 bytes) failed
2021-10-26 22:18:10.748817+0530 ECC-Wallet-no-logs[76379:6262236] dnssd_clientstub write_all(9) DEFUNCT
[DEBUG 🐞] ZECCWalletEnvironment.swift - subscribeToApplicationNotificationsPublishers() - line: 389 -> didEnterBackgroundNotification
[EVENT ⏱] LightWalletGRPCService.swift - connectivityStateDidChange(from:to:) - line: 497 -> Connection Changed from connecting to ready
2021-10-26 22:18:45.735921+0530 ECC-Wallet-no-logs[76379:6262021] [BackgroundTask] Background Task 20 ("ZcashLightClientKit.SDKSynchronizer"), was created over 30 seconds ago. In applications running in the background, this creates a risk of termination. Remember to call UIApplication.endBackgroundTask(_:) for your task in a timely manner to avoid this.
[INFO ℹ️] ZECCWalletEnvironment.swift - registerBackgroundActivity() - line: 337 -> BackgroundTask Expiration Handler Called
Both Skull-Island and Piratewallet-lite-cli generates a shielded address from 24 word seed phrase, and so does this iOS wallet.
But I found the same seed phrase gives different address on Piratewallet-lite-cli and this iOS wallet.
SEED PHRASE:
scout power diamond brother expose cart senior enter afford gym tired chase violin harsh gasp panic bicycle normal waste more spike sea inner crush
iOS Wallet generated this:
zs1da5xf5ake2jr63acq22v0ln53vt48vfl49ys82zrrgcfszcpkhk5ehedsy499p0fnfprkgax3nt
piratewallet-lite-cli generated this:
zs1j8kz2pkfdmwatkufwlu0e9kkvxmk7g6k78ymld53tg20q8php4s9d26s5jk53f85qxvm6v046em
Need to check what needs to be changed to either ZcashLightClientKit or within this iOS swift files, to get same address from seed phrase as other Pirate apps.
We should also think from the start if we need to make any changes to the data storage to make it possible to have multiple Profiles or Accounts with different wallet address.
The idea is each different Profile has their own settings such as:
The first thing opening an application should greet you to either
If there isn't already on the system. If creating a new profile
Right now the receiving transactions in the wallet are showing longer than expected time.
Expected is that after 1+ confirmations the balance shows in the wallet balance instead of "expected balance".
investigate if there is part of code which is handling the confirmations numbers etc in the code and adjust it to 2.
Please check what is the issue with the process of deleting wallet, and help fix it.
As discussed,
Notifications flow needs to be addressed.
Thank you
User reported FaceID disables randomly upon app restarts.
for some weird reason
it keeps disabling my faceid
it just randomly disables it and I have to turn it on in settings again
it happened 2 times in the past 20min
when entering the app and when it asks you for face id I quit the app at the right moment and completely exited out of it (even from background processes) and when I started the app again I had to use my passcode to get into the app and turn on faceid again since it turned it off
it has all the perms in iOS Settings for app
I managed to turn the faceid off for the wallet 3 times now
without actually turning it off
idk just click on random buttons and exit and enter the app and it'll happen
iPhone 13 Pro; IOS: 15.0.2
When you click on "Send Max" it puts a dot instead of a comma and until you replace it with a comma you can't send a transaction:
https://cdn.discordapp.com/attachments/899274784720977920/916368402875043860/pin_overflow.PNG
I have a 2020 SE so small screen and also my eyes are not amazing so my text size is big, some screens overflow, e.g. pin entry
The purpose of "Edit Light Client Server Address" setting will be to let the end users edit the address lightd.meshbits.io
with something with their own.
In case some advanced users has their own lightwalletd
setup for Pirate Chain, or if they wish to use some other server of their choice, they can just edit it in the settings menu that way.
lightwalletd
address in settings.lightwalletd
port in settings.As title mentions, clicking on send/receive buttons from within the wallet is noticeably delayed, closing of the said window from within the wallet is delayed as well.
Video:
2
The other similar lightwalletd
based cryptocurrency I'd like to explore to add to this wallet is VerusCoin.
VerusCoin is one of the smartest Komodo Platform ecosystem project. One great feature it provides is trustless revocable and recoverable Decentralised Identities, referred as VerusID. And having the ability to use that in our wallet will be great to have.
But to use VerusIDs, we first has to explore how much modifications we'll need to do in the current UI/UX and backend codebase to make this Pirate Chain iOS wallet a multi-cryptocurrencies wallet.
As I understand the so far codebase and the UI/UX, having this feature added will need significant amount of rework on both front-end and back-end sides. So, consider this feature as an "experimental" and "exploration" idea only when we reach the point to try this.
Few devs from Verus community has already made a modified/enhanced version of lightwalletd
which already makes it possible to query VerusID APIs without needing to have the full blockchain downloaded, just like Pirate Chain's lightwalletd
works. Relevant Github commit and repo: Asherda/lightwalletd@56ad341
When clicking on "Recovery Phrase" and trying to backup the words again, the x button glitches out and won't let you exit (this was only on the first launch of the wallet), I closed the wallet and re-opened and didn't encounter such issue anymore
this happened only on my very first launch, after closing and re-opening the wallet it didn't happen anymore
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.