Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hardware wallet support for Ledger #43

Merged
merged 28 commits into from
Feb 26, 2024
Merged

Hardware wallet support for Ledger #43

merged 28 commits into from
Feb 26, 2024

Conversation

KingGorrin
Copy link
Collaborator

@KingGorrin KingGorrin commented Jan 24, 2024

This PR implements issue #41

Using a hardware wallet

Currently only Ledger devices are supported when creating a hardware wallet. Use a Ledger Nano S/S+ to sideload the Zenon Ledger Embedded App. See How to sideload the Zenon Ledger Embedded App for Ledger Nano S/S+.

The onboarding experience has been made in such a way other devices can be easily added in the future.

A hardware device with Zenon app is necessary when creating and initializing a hardware wallet. The hardware device is not necessary to unlock the wallet once it is initialized. Only when the wallet cache is reset, will the hardware device be necessary again to unlock and initialize the wallet. An error message will be presented to the user when this is the case.

In the special case of using a different hardware device than the one the wallet was initially initialized on, signing will eventually fail. The address of the hardware device is not asserted with the cached address when unlocking the wallet, because this would require access to the wallet. Resetting the cache and reinitializing the wallet should be enough to start using the new hardware device.

The hardware wallet uses Syrius's notification mechanism to notify the user when confirmation is required.

Generating new addresses on a hardware wallet requires confirmation. When multiple addresses are generated at once, multiple confirmations are required. The process of generating new addresses stops whenever a new address is rejected and a widget error is dislayed.

Signing an arbitrary message or file on a hardware wallet is enabled but fails if the underlying wallet does not implement it. An unsupported error message will then be displayed.

Changes

  • Hardware wallet onboarding is enabled for creating and initializing a hardware wallet.
  • The global kWallet variable has been replaced with the kWalletFile variable.
  • A reference to the wallet is now obtained by opening and closing it with the WalletFile class. Access to the wallet is locked until the wallet is closed to ensure mutual exclusion. This means not only sending and receiving is protected with a lock, but all access to the wallet.
  • All occurrences of blockSigningKey, keyPair or keyFile variables are renamed to the more generic wallet, walletAccount or walletFile terms.
  • The Zenon.defaultKeyPair property is not used anymore, instead the address is specified as an argument to the send method. Allowing the Wallet to be opened only when it is necessary.
  • Decrypting or opening a wallet are now separate actions. This allows to change the wallet password without necessarily opening it.
  • Signing an arbitrary message or file only uses the public key when it is needed and not every time the Settings widget is build.
  • The HtlcSwapsService now uses the wallet password as cipher instead of the wallet private key. Migration code ensures the migration of wallets created by Syrius v0.1.0.
  • Dump mnemonic and backup buttons are disabled when using a hardware wallet.
  • Added new notification type confirm for displaying confirmation notifications.
  • Added wallet type to the about card.
  • Syrius version has been increased to v0.2.0; otherwise p2p migration code does not work.
  • The walletType is stored as metadata in the encrypted file and used when loading in order to differentiate between different wallet types.

@KingGorrin KingGorrin changed the title Hardware wallet support for Ledger devices Hardware wallet support for Ledger Jan 24, 2024
@KingGorrin KingGorrin self-assigned this Jan 24, 2024
@KingGorrin KingGorrin added the enhancement New feature or request label Jan 24, 2024
@ccznn
Copy link

ccznn commented Jan 24, 2024

well done buddy

0x3639 pushed a commit to 0x3639/syrius that referenced this pull request Jan 26, 2024
* Release v0.1.0 (zenon-network#34)

* Escape metadata string variables

* Fix linux metadata script

* Special char test ~!@#$%^&*()_+`-=:";'\|[]{}<>?,./

* Change metadata script with sed cmd

* Special char test ~`!@#$%^&*()_+-={}[]:;"'<>?,./|\

* Fix metadata ps script function on top

* Special char test ~`!@#$%^&*()_+-={}[]:;"'<>?,./|\

* Fix metadata scripts using raw strings

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Fix metadata macos script

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Fix pubspec

* Restore pubspec

* Fix failing build and release workflow (zenon-network#7)

The build and release workflow uses the latest Flutter SDK version that is available on the stable channel. The current codebase is not compatible with Flutter SDK versions 3.10.0 and newer, so the Flutter version must be constrained in the build and release workflow.

* [cicd] Release on tags

* [cicd] Fix tag releases lib-builder

* Updated native libraries

* [cicd] Make lib-builder only trigger manually

* [cicd] Fix SYRIUS_VERSION

* Updated native libraries

* Fix realtime statistics refresh (zenon-network#9)

* Implement P2P swaps for ZTS tokens (zenon-network#11)

* Set state when beneficiary address changes

* Fix realtime statistics refresh (2) (zenon-network#17)

* Adjust P2P swap expiration times (zenon-network#21)

* Update P2P swap card descriptions (zenon-network#20)

* Enable P2P swap UI on mainnet (zenon-network#22)

* Add warning banner onto the P2P swap page (zenon-network#23)

* Check for local time discrepancy when entering the P2P swap tab (zenon-network#25)

* Add hash back to auto-receive tx queue on all exceptions (zenon-network#24)

* Enable wakelock and disable auto-lock when incoming swap is active (zenon-network#19)

* Fix auto receive queue logic (zenon-network#27)

* Filter on all owned projects (zenon-network#10)

* Update README.md badges for hypercore-one

Signed-off-by: georgezgeorgez <[email protected]>

* Make P2P swap related duration constants global and improve the expiration times configuration (zenon-network#29)

* Call setState when updating the swap completed text (zenon-network#30)

* Improve the logic of the auto unlock worker (zenon-network#32)

* Prevent the same hash from being added twice into the auto receive tx pool (zenon-network#31)

* Prevent the same hash from being added twice into the auto receive tx pool

* Add comment to addHash function

* Integrate changes from master (zenon-network#36)

* Feat: Add deep linking - syrius://

* Update main_app_container.dart

* fix: MacOS deep link support

* Feat: Add UI for Wallet Connect

* feat: Enable pairing with dApps through WC

* chore: Add namespaces and more listeners

* Replace bodyText1 with bodyLarge

* fix: Change WC initialization

* chore: Update gitignore

* chore: Update repo after gitignore update

* feat: Add method that activates the pairing

* feat: Add feature that captures a part of the screen and listens to the clipboard

* feat: Build table that shows the current pairings

* feat: Add feature to scan the QR code from the screen

* fix: Remove Expanded widget from Pairings card widget tree

* feat: Listens to values in the clipboard in order to check for WC URI

* fix: Make access check for MacOS before scanning screen

* feat: Redirect to WC tab when a WC URI is detected

* fix: Rebuild WC URI input field when another URI is detected in the clipboard

* Updated native libraries

* fix: Recreate the windows folder

* feat: Add code that opens the app through deep linking

* refactor: Change API call when activating a pairing

* feat: Add possibility to deactivate a WC pair

* feat: Redirect to WC tab when opening the wallet through WC deep linking

* fix: Error initializing the WC uri input field

* feat: Improve validating the WC URI

* feat: Add handler for znn_net_info WC method

* feat: Add handler for znn_sign WC method

* refactor: Create function for signing with the key pair from the wallet file

* feat: Add handler for WC znn_send method

* feat: Change name of znn_net_info method to znn_info and refactor sending a block

* fix: Restyle the Topic column from the WC pairings table

* feat: Send back an account block to the dApp after executing the znn_send method

* feat: Send events to the dApp when the address or chain id were changed

* feat: Send error to the dApp when user rejects the transfer

* fix: Change the error type send to the dApp

* feat: Add confirmation dialogs before making an action sent from the dApp

* refactor

* feat: Fix dialog when dApp wants to send a tx

* fix: Reset the URI value from the change notifier once it's used

* fix: Don't redirect to WC when detecting a WC URI if the wallet is locked

* fix: Show WC URI detected notification if the user is already on the WC tab

* feat: Throw an error when trying to trigger an action through WC and wallet is locked

* feat: Reconnect to websocket when WC connection falls

* feat: Add methods to retrieve the active sessions and all sessions

* feat: Get the reference for getting the ZNN SDK

* feat: Change position of the WC Connect button and disable it in case the input is not valid

* refactor: Delete unused method

* feat: Send notification when user cancels the QR scanning

* feat: Keep the WC URI in memory when wallet is locked

* feat: Update WalletConnectPairingCard with the needed permissions

* feat: Update files

* feat: Wrap up WC

* fix: Clean up

* feat: Get WC project id from environment variable

* fix: Rebuild 'Connect' button when the URI input field is also rebuild

* feat: Rebuild pubspec.lock

* feat: Change the source of the ZNN SDK

* build: referenced wallet-connect sdk branch

* build: added required macos entitlements

* refactor: small refactor

* docs: updated README

* cicd: retrieve WALLET_CONNECT_PROJECT_ID

* cicd: added environment name

* cicd: updated flutter-action

* cicd: set linux directory permissions

* feat: added BigInt support

* fix: referenced latest SDK changes

* fix: desktop window

* fix: windows desktop window

* fix: bigInt decimal conversions

* chore: updated dependencies

* fix: tokenSymbol widget

* fix: minor UI fixes

* cicd: hardcoded flutter version for compatibility

* feat: Change caching the active sessions for a pairing

* fix: allow any ZTS in znn_send

* feat: added WalletConnect events

* fix: remove relayClient reconnect

* feat: Add widget for pairing session data

* feat: Tweak WC pairing flow

* fix: Emit the session event (address and chain id events) to each dApp with an active pair and session

* fix: add windows directory

* chore: update walletconnect_flutter_v2 to v2.0.4

* fix: BigInt fixes

* feat: Regenerate windows folder

* feat: Regenerate windows folder

* feat: Refresh WC URI input field after pairing

* feat: error notification for auto-receive

* chore: updated walletconnect_flutter_v2 to v2.0.6

* feat: Build WC uri card

* feat: Build WC QR card

* feat: Build WC camera card

* feat: Put the pairings and sessions widgets side by side

* feat: Change button name

* fix: flutter windows directory

* chore: update uni_links_desktop to v0.1.6

* fix: windows deep link handling

* feat: added notification for incoming links

* feat: Refresh pairing and session lists when connecting to dApp

* feat: Align pairing and session list widgets on top of each other

* refactor: Add the getter pairings to the WalletConnectService class

* feat: replaced uni_links with app_links

* fix: Revert changes to the pairing list widget

* fix: Make InfiniteScrollBloc handle case when the data request is not paginated

* fix: Don't dispose the pairings and sessions bloc

* fix: Also refresh sessions list after deleting a pairing

* fix: Check for broken WC URI

* fix: added refresh for onPairingCreate

* fix: Redirect to WC tab when an WC URI is detected while the wallet is locked

* fix: Don't cache results for blocs that don't handle paginated results

* fix: Decode WC URI before parsing

* feat: Upgrade project to Dart 3.0.1

* feat: Delete button that disconnects the WC session with the dApp

* feat: Throw error if trying to send tx from dApp while wallet is locked

* cicd: upgraded flutter to v3.10.2

* chore: update texts

* feat: Update WC dependency to 2.0.8

* fix: parse WalletConnect URI

* fix: Dart lint warnings

* feat: bump version to v0.0.7

* fix: Windows deep link

* Updated native libraries

* feat: Hard code chainId to 1 for WC

* fix: WalletConnect improvements

* fix: When to mark last page of the infinite scroll bloc

* fix: dialog navigator pop

* fix: added marquee for token balance

* feat: logging to disk

* refactor: renamed votePillar to delegateToPillar

* fix: WalletConnect issues

* feat: programmatically display WalletConnect tab

* feat: added deep link actions

* feat: update defaultValue for kWcProjectId

* chore: updated walletconnect_flutter_v2 to v2.0.12

* chore: update dependencies

* feat: added camera QR scanning for MacOS

* fix: WakelockPlus Linux support

* fix: replaced logger with Logger

* chore: added descriptions and code cleanup

* fix: wallet_connect_tab_child  import

* fix: minimum amount to send

* fix: refresh WalletConnectSessionsBloc

* fix: remainingZnnBudget decimals

* fix: onSessionDelete refresh

* Integrate changes from master with P2P swaps

---------

Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>

* Verify the uniqueness of the hashlock when joining a swap (zenon-network#37)

* Add option to delete swap history (zenon-network#38)

* Remove P2P swap warning banner and add a warning modal (zenon-network#41)

* Add deposit recovery feature (zenon-network#40)

* Add width constraints to shown amounts and token symbols (zenon-network#39)

* Add width constraints to shown amounts and token symbols

* Decrease P2P swap list item's max text width to prevent overflow

* Refactor swap expiration warnings and increase counter HTLC expiration time (zenon-network#42)

Signed-off-by: vilkris <[email protected]>

* Fix workflow file issues caused by upstream changes (zenon-network#44)

* Remove bridge tab and related widgets (zenon-network#43)

* Add link to P2P swap tutorial (zenon-network#45)

* Update pubspec.lock to latest ZNN SDK version

* Update version numbers and Git commit date format (zenon-network#46)

* Fix the extractDecimals extension method to handle zero decimals (zenon-network#47)

* Fix ExchangeRateWidget's rate calculation (zenon-network#48)

* Add documentation for how P2P swaps work (zenon-network#49)

* Add documentation for how P2P swaps work

* Add a note of the used hash function to the documentation

* fix: enabled transfers for minimum zts amount

* Fix typo in bullet point card (zenon-network#53)

* Merge master branch into develop (zenon-network#54)

* Feat: Add deep linking - syrius://

* Update main_app_container.dart

* fix: MacOS deep link support

* Feat: Add UI for Wallet Connect

* feat: Enable pairing with dApps through WC

* chore: Add namespaces and more listeners

* Replace bodyText1 with bodyLarge

* fix: Change WC initialization

* chore: Update gitignore

* chore: Update repo after gitignore update

* feat: Add method that activates the pairing

* feat: Add feature that captures a part of the screen and listens to the clipboard

* feat: Build table that shows the current pairings

* feat: Add feature to scan the QR code from the screen

* fix: Remove Expanded widget from Pairings card widget tree

* feat: Listens to values in the clipboard in order to check for WC URI

* fix: Make access check for MacOS before scanning screen

* feat: Redirect to WC tab when a WC URI is detected

* fix: Rebuild WC URI input field when another URI is detected in the clipboard

* Updated native libraries

* fix: Recreate the windows folder

* feat: Add code that opens the app through deep linking

* refactor: Change API call when activating a pairing

* feat: Add possibility to deactivate a WC pair

* feat: Redirect to WC tab when opening the wallet through WC deep linking

* fix: Error initializing the WC uri input field

* feat: Improve validating the WC URI

* feat: Add handler for znn_net_info WC method

* feat: Add handler for znn_sign WC method

* refactor: Create function for signing with the key pair from the wallet file

* feat: Add handler for WC znn_send method

* feat: Change name of znn_net_info method to znn_info and refactor sending a block

* fix: Restyle the Topic column from the WC pairings table

* feat: Send back an account block to the dApp after executing the znn_send method

* feat: Send events to the dApp when the address or chain id were changed

* feat: Send error to the dApp when user rejects the transfer

* fix: Change the error type send to the dApp

* feat: Add confirmation dialogs before making an action sent from the dApp

* refactor

* feat: Fix dialog when dApp wants to send a tx

* fix: Reset the URI value from the change notifier once it's used

* fix: Don't redirect to WC when detecting a WC URI if the wallet is locked

* fix: Show WC URI detected notification if the user is already on the WC tab

* feat: Throw an error when trying to trigger an action through WC and wallet is locked

* feat: Reconnect to websocket when WC connection falls

* feat: Add methods to retrieve the active sessions and all sessions

* feat: Get the reference for getting the ZNN SDK

* feat: Change position of the WC Connect button and disable it in case the input is not valid

* refactor: Delete unused method

* feat: Send notification when user cancels the QR scanning

* feat: Keep the WC URI in memory when wallet is locked

* feat: Update WalletConnectPairingCard with the needed permissions

* feat: Update files

* feat: Wrap up WC

* fix: Clean up

* feat: Get WC project id from environment variable

* fix: Rebuild 'Connect' button when the URI input field is also rebuild

* feat: Rebuild pubspec.lock

* feat: Change the source of the ZNN SDK

* build: referenced wallet-connect sdk branch

* build: added required macos entitlements

* refactor: small refactor

* docs: updated README

* cicd: retrieve WALLET_CONNECT_PROJECT_ID

* cicd: added environment name

* cicd: updated flutter-action

* cicd: set linux directory permissions

* feat: added BigInt support

* fix: referenced latest SDK changes

* fix: desktop window

* fix: windows desktop window

* fix: bigInt decimal conversions

* chore: updated dependencies

* fix: tokenSymbol widget

* fix: minor UI fixes

* cicd: hardcoded flutter version for compatibility

* feat: Change caching the active sessions for a pairing

* fix: allow any ZTS in znn_send

* feat: added WalletConnect events

* fix: remove relayClient reconnect

* feat: Add widget for pairing session data

* feat: Tweak WC pairing flow

* fix: Emit the session event (address and chain id events) to each dApp with an active pair and session

* fix: add windows directory

* chore: update walletconnect_flutter_v2 to v2.0.4

* fix: BigInt fixes

* feat: Regenerate windows folder

* feat: Regenerate windows folder

* feat: Refresh WC URI input field after pairing

* feat: error notification for auto-receive

* chore: updated walletconnect_flutter_v2 to v2.0.6

* feat: Build WC uri card

* feat: Build WC QR card

* feat: Build WC camera card

* feat: Put the pairings and sessions widgets side by side

* feat: Change button name

* fix: flutter windows directory

* chore: update uni_links_desktop to v0.1.6

* fix: windows deep link handling

* feat: added notification for incoming links

* feat: Refresh pairing and session lists when connecting to dApp

* feat: Align pairing and session list widgets on top of each other

* refactor: Add the getter pairings to the WalletConnectService class

* feat: replaced uni_links with app_links

* fix: Revert changes to the pairing list widget

* fix: Make InfiniteScrollBloc handle case when the data request is not paginated

* fix: Don't dispose the pairings and sessions bloc

* fix: Also refresh sessions list after deleting a pairing

* fix: Check for broken WC URI

* fix: added refresh for onPairingCreate

* fix: Redirect to WC tab when an WC URI is detected while the wallet is locked

* fix: Don't cache results for blocs that don't handle paginated results

* fix: Decode WC URI before parsing

* feat: Upgrade project to Dart 3.0.1

* feat: Delete button that disconnects the WC session with the dApp

* feat: Throw error if trying to send tx from dApp while wallet is locked

* cicd: upgraded flutter to v3.10.2

* chore: update texts

* feat: Update WC dependency to 2.0.8

* fix: parse WalletConnect URI

* fix: Dart lint warnings

* feat: bump version to v0.0.7

* fix: Windows deep link

* Updated native libraries

* feat: Hard code chainId to 1 for WC

* fix: WalletConnect improvements

* fix: When to mark last page of the infinite scroll bloc

* fix: dialog navigator pop

* fix: added marquee for token balance

* feat: logging to disk

* refactor: renamed votePillar to delegateToPillar

* fix: WalletConnect issues

* feat: programmatically display WalletConnect tab

* feat: added deep link actions

* feat: update defaultValue for kWcProjectId

* chore: updated walletconnect_flutter_v2 to v2.0.12

* chore: update dependencies

* feat: added camera QR scanning for MacOS

* fix: WakelockPlus Linux support

* fix: replaced logger with Logger

* chore: added descriptions and code cleanup

* fix: wallet_connect_tab_child  import

* fix: minimum amount to send

* fix: refresh WalletConnectSessionsBloc

* fix: remainingZnnBudget decimals

* fix: onSessionDelete refresh

* v0.0.7 -  BigInt support & WalletConnect implementation

* BigInt support & WalletConnect implementation
* Embedded node update: libznn libraries will mitigate the fork at height 5094735

---------

Co-authored-by: Github Actions <[email protected]>

* fix: enabled transfers for minimum zts amount (zenon-network#32)

---------

Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>
Co-authored-by: Sol Sanctum <[email protected]>

* Fix local time discrepancy warning with remote node

* Fix linter warning

* Update README.md badges for zenon network (zenon-network#55)

* Update ZNN SDK dependency to use Zenon Network repository (zenon-network#56)

---------

Signed-off-by: georgezgeorgez <[email protected]>
Signed-off-by: vilkris <[email protected]>
Co-authored-by: CryptoFish <[email protected]>
Co-authored-by: georgezgeorgez <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: CryptoFish <[email protected]>
Co-authored-by: Sol Sanctum <[email protected]>
Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>

* Update libznn binaries to latest version (zenon-network#35)

---------

Signed-off-by: georgezgeorgez <[email protected]>
Signed-off-by: vilkris <[email protected]>
Co-authored-by: CryptoFish <[email protected]>
Co-authored-by: georgezgeorgez <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: CryptoFish <[email protected]>
Co-authored-by: Sol Sanctum <[email protected]>
Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>
Copy link
Collaborator

@vilkris4 vilkris4 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. P2P Swap related changes appear to work as expected, including the cipherkey migration.

The Ledger implementation looks good but I don't have a Ledger device and was unable to properly test it.

pubspec.lock Outdated Show resolved Hide resolved
@0x3639
Copy link
Collaborator

0x3639 commented Feb 20, 2024

@vilkris4 I've tested the ledger device on macOS with @KingGorrin. We've tested transfers and P2P swaps. We did the P2P swap on mainnet without issue. I'm going to review the PR and approve it today unless you or anyone else disagrees.

@KingGorrin
Copy link
Collaborator Author

I've updated the znn_sdk_dart and znn_ledger_dart references and pointed the znn_ledger_dart reference to hypercore-one/znn_ledger_dart at the release/v0.0.4 branch until Mr Kaine gives us permission to merge it into the zenon-network/znn_ledger_dart repo.

This allows us to continue with merging the develop branch.

@KingGorrin KingGorrin merged commit fa32051 into develop Feb 26, 2024
4 checks passed
@KingGorrin KingGorrin mentioned this pull request Mar 19, 2024
KingGorrin added a commit that referenced this pull request Apr 2, 2024
* Release v0.1.0 (#34)

* Escape metadata string variables

* Fix linux metadata script

* Special char test ~!@#$%^&*()_+`-=:";'\|[]{}<>?,./

* Change metadata script with sed cmd

* Special char test ~`!@#$%^&*()_+-={}[]:;"'<>?,./|\

* Fix metadata ps script function on top

* Special char test ~`!@#$%^&*()_+-={}[]:;"'<>?,./|\

* Fix metadata scripts using raw strings

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Fix metadata macos script

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Char test `~!@#$%^&*\t()_+-={}[]:";'|\<>?,./

* Fix pubspec

* Restore pubspec

* Fix failing build and release workflow (#7)

The build and release workflow uses the latest Flutter SDK version that is available on the stable channel. The current codebase is not compatible with Flutter SDK versions 3.10.0 and newer, so the Flutter version must be constrained in the build and release workflow.

* [cicd] Release on tags

* [cicd] Fix tag releases lib-builder

* Updated native libraries

* [cicd] Make lib-builder only trigger manually

* [cicd] Fix SYRIUS_VERSION

* Updated native libraries

* Fix realtime statistics refresh (#9)

* Implement P2P swaps for ZTS tokens (#11)

* Set state when beneficiary address changes

* Fix realtime statistics refresh (2) (#17)

* Adjust P2P swap expiration times (#21)

* Update P2P swap card descriptions (#20)

* Enable P2P swap UI on mainnet (#22)

* Add warning banner onto the P2P swap page (#23)

* Check for local time discrepancy when entering the P2P swap tab (#25)

* Add hash back to auto-receive tx queue on all exceptions (#24)

* Enable wakelock and disable auto-lock when incoming swap is active (#19)

* Fix auto receive queue logic (#27)

* Filter on all owned projects (#10)

* Update README.md badges for hypercore-one

Signed-off-by: georgezgeorgez <[email protected]>

* Make P2P swap related duration constants global and improve the expiration times configuration (#29)

* Call setState when updating the swap completed text (#30)

* Improve the logic of the auto unlock worker (#32)

* Prevent the same hash from being added twice into the auto receive tx pool (#31)

* Prevent the same hash from being added twice into the auto receive tx pool

* Add comment to addHash function

* Integrate changes from master (#36)

* Feat: Add deep linking - syrius://

* Update main_app_container.dart

* fix: MacOS deep link support

* Feat: Add UI for Wallet Connect

* feat: Enable pairing with dApps through WC

* chore: Add namespaces and more listeners

* Replace bodyText1 with bodyLarge

* fix: Change WC initialization

* chore: Update gitignore

* chore: Update repo after gitignore update

* feat: Add method that activates the pairing

* feat: Add feature that captures a part of the screen and listens to the clipboard

* feat: Build table that shows the current pairings

* feat: Add feature to scan the QR code from the screen

* fix: Remove Expanded widget from Pairings card widget tree

* feat: Listens to values in the clipboard in order to check for WC URI

* fix: Make access check for MacOS before scanning screen

* feat: Redirect to WC tab when a WC URI is detected

* fix: Rebuild WC URI input field when another URI is detected in the clipboard

* Updated native libraries

* fix: Recreate the windows folder

* feat: Add code that opens the app through deep linking

* refactor: Change API call when activating a pairing

* feat: Add possibility to deactivate a WC pair

* feat: Redirect to WC tab when opening the wallet through WC deep linking

* fix: Error initializing the WC uri input field

* feat: Improve validating the WC URI

* feat: Add handler for znn_net_info WC method

* feat: Add handler for znn_sign WC method

* refactor: Create function for signing with the key pair from the wallet file

* feat: Add handler for WC znn_send method

* feat: Change name of znn_net_info method to znn_info and refactor sending a block

* fix: Restyle the Topic column from the WC pairings table

* feat: Send back an account block to the dApp after executing the znn_send method

* feat: Send events to the dApp when the address or chain id were changed

* feat: Send error to the dApp when user rejects the transfer

* fix: Change the error type send to the dApp

* feat: Add confirmation dialogs before making an action sent from the dApp

* refactor

* feat: Fix dialog when dApp wants to send a tx

* fix: Reset the URI value from the change notifier once it's used

* fix: Don't redirect to WC when detecting a WC URI if the wallet is locked

* fix: Show WC URI detected notification if the user is already on the WC tab

* feat: Throw an error when trying to trigger an action through WC and wallet is locked

* feat: Reconnect to websocket when WC connection falls

* feat: Add methods to retrieve the active sessions and all sessions

* feat: Get the reference for getting the ZNN SDK

* feat: Change position of the WC Connect button and disable it in case the input is not valid

* refactor: Delete unused method

* feat: Send notification when user cancels the QR scanning

* feat: Keep the WC URI in memory when wallet is locked

* feat: Update WalletConnectPairingCard with the needed permissions

* feat: Update files

* feat: Wrap up WC

* fix: Clean up

* feat: Get WC project id from environment variable

* fix: Rebuild 'Connect' button when the URI input field is also rebuild

* feat: Rebuild pubspec.lock

* feat: Change the source of the ZNN SDK

* build: referenced wallet-connect sdk branch

* build: added required macos entitlements

* refactor: small refactor

* docs: updated README

* cicd: retrieve WALLET_CONNECT_PROJECT_ID

* cicd: added environment name

* cicd: updated flutter-action

* cicd: set linux directory permissions

* feat: added BigInt support

* fix: referenced latest SDK changes

* fix: desktop window

* fix: windows desktop window

* fix: bigInt decimal conversions

* chore: updated dependencies

* fix: tokenSymbol widget

* fix: minor UI fixes

* cicd: hardcoded flutter version for compatibility

* feat: Change caching the active sessions for a pairing

* fix: allow any ZTS in znn_send

* feat: added WalletConnect events

* fix: remove relayClient reconnect

* feat: Add widget for pairing session data

* feat: Tweak WC pairing flow

* fix: Emit the session event (address and chain id events) to each dApp with an active pair and session

* fix: add windows directory

* chore: update walletconnect_flutter_v2 to v2.0.4

* fix: BigInt fixes

* feat: Regenerate windows folder

* feat: Regenerate windows folder

* feat: Refresh WC URI input field after pairing

* feat: error notification for auto-receive

* chore: updated walletconnect_flutter_v2 to v2.0.6

* feat: Build WC uri card

* feat: Build WC QR card

* feat: Build WC camera card

* feat: Put the pairings and sessions widgets side by side

* feat: Change button name

* fix: flutter windows directory

* chore: update uni_links_desktop to v0.1.6

* fix: windows deep link handling

* feat: added notification for incoming links

* feat: Refresh pairing and session lists when connecting to dApp

* feat: Align pairing and session list widgets on top of each other

* refactor: Add the getter pairings to the WalletConnectService class

* feat: replaced uni_links with app_links

* fix: Revert changes to the pairing list widget

* fix: Make InfiniteScrollBloc handle case when the data request is not paginated

* fix: Don't dispose the pairings and sessions bloc

* fix: Also refresh sessions list after deleting a pairing

* fix: Check for broken WC URI

* fix: added refresh for onPairingCreate

* fix: Redirect to WC tab when an WC URI is detected while the wallet is locked

* fix: Don't cache results for blocs that don't handle paginated results

* fix: Decode WC URI before parsing

* feat: Upgrade project to Dart 3.0.1

* feat: Delete button that disconnects the WC session with the dApp

* feat: Throw error if trying to send tx from dApp while wallet is locked

* cicd: upgraded flutter to v3.10.2

* chore: update texts

* feat: Update WC dependency to 2.0.8

* fix: parse WalletConnect URI

* fix: Dart lint warnings

* feat: bump version to v0.0.7

* fix: Windows deep link

* Updated native libraries

* feat: Hard code chainId to 1 for WC

* fix: WalletConnect improvements

* fix: When to mark last page of the infinite scroll bloc

* fix: dialog navigator pop

* fix: added marquee for token balance

* feat: logging to disk

* refactor: renamed votePillar to delegateToPillar

* fix: WalletConnect issues

* feat: programmatically display WalletConnect tab

* feat: added deep link actions

* feat: update defaultValue for kWcProjectId

* chore: updated walletconnect_flutter_v2 to v2.0.12

* chore: update dependencies

* feat: added camera QR scanning for MacOS

* fix: WakelockPlus Linux support

* fix: replaced logger with Logger

* chore: added descriptions and code cleanup

* fix: wallet_connect_tab_child  import

* fix: minimum amount to send

* fix: refresh WalletConnectSessionsBloc

* fix: remainingZnnBudget decimals

* fix: onSessionDelete refresh

* Integrate changes from master with P2P swaps

---------

Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>

* Verify the uniqueness of the hashlock when joining a swap (#37)

* Add option to delete swap history (#38)

* Remove P2P swap warning banner and add a warning modal (#41)

* Add deposit recovery feature (#40)

* Add width constraints to shown amounts and token symbols (#39)

* Add width constraints to shown amounts and token symbols

* Decrease P2P swap list item's max text width to prevent overflow

* Refactor swap expiration warnings and increase counter HTLC expiration time (#42)

Signed-off-by: vilkris <[email protected]>

* Fix workflow file issues caused by upstream changes (#44)

* Remove bridge tab and related widgets (#43)

* Add link to P2P swap tutorial (#45)

* Update pubspec.lock to latest ZNN SDK version

* Update version numbers and Git commit date format (#46)

* Fix the extractDecimals extension method to handle zero decimals (#47)

* Fix ExchangeRateWidget's rate calculation (#48)

* Add documentation for how P2P swaps work (#49)

* Add documentation for how P2P swaps work

* Add a note of the used hash function to the documentation

* fix: enabled transfers for minimum zts amount

* Fix typo in bullet point card (#53)

* Merge master branch into develop (#54)

* Feat: Add deep linking - syrius://

* Update main_app_container.dart

* fix: MacOS deep link support

* Feat: Add UI for Wallet Connect

* feat: Enable pairing with dApps through WC

* chore: Add namespaces and more listeners

* Replace bodyText1 with bodyLarge

* fix: Change WC initialization

* chore: Update gitignore

* chore: Update repo after gitignore update

* feat: Add method that activates the pairing

* feat: Add feature that captures a part of the screen and listens to the clipboard

* feat: Build table that shows the current pairings

* feat: Add feature to scan the QR code from the screen

* fix: Remove Expanded widget from Pairings card widget tree

* feat: Listens to values in the clipboard in order to check for WC URI

* fix: Make access check for MacOS before scanning screen

* feat: Redirect to WC tab when a WC URI is detected

* fix: Rebuild WC URI input field when another URI is detected in the clipboard

* Updated native libraries

* fix: Recreate the windows folder

* feat: Add code that opens the app through deep linking

* refactor: Change API call when activating a pairing

* feat: Add possibility to deactivate a WC pair

* feat: Redirect to WC tab when opening the wallet through WC deep linking

* fix: Error initializing the WC uri input field

* feat: Improve validating the WC URI

* feat: Add handler for znn_net_info WC method

* feat: Add handler for znn_sign WC method

* refactor: Create function for signing with the key pair from the wallet file

* feat: Add handler for WC znn_send method

* feat: Change name of znn_net_info method to znn_info and refactor sending a block

* fix: Restyle the Topic column from the WC pairings table

* feat: Send back an account block to the dApp after executing the znn_send method

* feat: Send events to the dApp when the address or chain id were changed

* feat: Send error to the dApp when user rejects the transfer

* fix: Change the error type send to the dApp

* feat: Add confirmation dialogs before making an action sent from the dApp

* refactor

* feat: Fix dialog when dApp wants to send a tx

* fix: Reset the URI value from the change notifier once it's used

* fix: Don't redirect to WC when detecting a WC URI if the wallet is locked

* fix: Show WC URI detected notification if the user is already on the WC tab

* feat: Throw an error when trying to trigger an action through WC and wallet is locked

* feat: Reconnect to websocket when WC connection falls

* feat: Add methods to retrieve the active sessions and all sessions

* feat: Get the reference for getting the ZNN SDK

* feat: Change position of the WC Connect button and disable it in case the input is not valid

* refactor: Delete unused method

* feat: Send notification when user cancels the QR scanning

* feat: Keep the WC URI in memory when wallet is locked

* feat: Update WalletConnectPairingCard with the needed permissions

* feat: Update files

* feat: Wrap up WC

* fix: Clean up

* feat: Get WC project id from environment variable

* fix: Rebuild 'Connect' button when the URI input field is also rebuild

* feat: Rebuild pubspec.lock

* feat: Change the source of the ZNN SDK

* build: referenced wallet-connect sdk branch

* build: added required macos entitlements

* refactor: small refactor

* docs: updated README

* cicd: retrieve WALLET_CONNECT_PROJECT_ID

* cicd: added environment name

* cicd: updated flutter-action

* cicd: set linux directory permissions

* feat: added BigInt support

* fix: referenced latest SDK changes

* fix: desktop window

* fix: windows desktop window

* fix: bigInt decimal conversions

* chore: updated dependencies

* fix: tokenSymbol widget

* fix: minor UI fixes

* cicd: hardcoded flutter version for compatibility

* feat: Change caching the active sessions for a pairing

* fix: allow any ZTS in znn_send

* feat: added WalletConnect events

* fix: remove relayClient reconnect

* feat: Add widget for pairing session data

* feat: Tweak WC pairing flow

* fix: Emit the session event (address and chain id events) to each dApp with an active pair and session

* fix: add windows directory

* chore: update walletconnect_flutter_v2 to v2.0.4

* fix: BigInt fixes

* feat: Regenerate windows folder

* feat: Regenerate windows folder

* feat: Refresh WC URI input field after pairing

* feat: error notification for auto-receive

* chore: updated walletconnect_flutter_v2 to v2.0.6

* feat: Build WC uri card

* feat: Build WC QR card

* feat: Build WC camera card

* feat: Put the pairings and sessions widgets side by side

* feat: Change button name

* fix: flutter windows directory

* chore: update uni_links_desktop to v0.1.6

* fix: windows deep link handling

* feat: added notification for incoming links

* feat: Refresh pairing and session lists when connecting to dApp

* feat: Align pairing and session list widgets on top of each other

* refactor: Add the getter pairings to the WalletConnectService class

* feat: replaced uni_links with app_links

* fix: Revert changes to the pairing list widget

* fix: Make InfiniteScrollBloc handle case when the data request is not paginated

* fix: Don't dispose the pairings and sessions bloc

* fix: Also refresh sessions list after deleting a pairing

* fix: Check for broken WC URI

* fix: added refresh for onPairingCreate

* fix: Redirect to WC tab when an WC URI is detected while the wallet is locked

* fix: Don't cache results for blocs that don't handle paginated results

* fix: Decode WC URI before parsing

* feat: Upgrade project to Dart 3.0.1

* feat: Delete button that disconnects the WC session with the dApp

* feat: Throw error if trying to send tx from dApp while wallet is locked

* cicd: upgraded flutter to v3.10.2

* chore: update texts

* feat: Update WC dependency to 2.0.8

* fix: parse WalletConnect URI

* fix: Dart lint warnings

* feat: bump version to v0.0.7

* fix: Windows deep link

* Updated native libraries

* feat: Hard code chainId to 1 for WC

* fix: WalletConnect improvements

* fix: When to mark last page of the infinite scroll bloc

* fix: dialog navigator pop

* fix: added marquee for token balance

* feat: logging to disk

* refactor: renamed votePillar to delegateToPillar

* fix: WalletConnect issues

* feat: programmatically display WalletConnect tab

* feat: added deep link actions

* feat: update defaultValue for kWcProjectId

* chore: updated walletconnect_flutter_v2 to v2.0.12

* chore: update dependencies

* feat: added camera QR scanning for MacOS

* fix: WakelockPlus Linux support

* fix: replaced logger with Logger

* chore: added descriptions and code cleanup

* fix: wallet_connect_tab_child  import

* fix: minimum amount to send

* fix: refresh WalletConnectSessionsBloc

* fix: remainingZnnBudget decimals

* fix: onSessionDelete refresh

* v0.0.7 -  BigInt support & WalletConnect implementation

* BigInt support & WalletConnect implementation
* Embedded node update: libznn libraries will mitigate the fork at height 5094735

---------

Co-authored-by: Github Actions <[email protected]>

* fix: enabled transfers for minimum zts amount (#32)

---------

Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>
Co-authored-by: Sol Sanctum <[email protected]>

* Fix local time discrepancy warning with remote node

* Fix linter warning

* Update README.md badges for zenon network (#55)

* Update ZNN SDK dependency to use Zenon Network repository (#56)

---------

Signed-off-by: georgezgeorgez <[email protected]>
Signed-off-by: vilkris <[email protected]>
Co-authored-by: CryptoFish <[email protected]>
Co-authored-by: georgezgeorgez <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: CryptoFish <[email protected]>
Co-authored-by: Sol Sanctum <[email protected]>
Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>

* Update libznn binaries to latest version (#35)

* fix: _wcClient initialization

* fix: check relay server connection

* chore: update walletconnect_flutter_v2 to v2.0.15

* fix: onPairingDelete refresh pairingsBloc

* chore: update dependencies

Upgrade several dependencies and remove flutter_test

* chore: update dependencies

* feat: updated WalletConnect integration

* feat: added community public nodes

* feat: added badge for notifications

* refactor: resyncWallet and NodeManagement

* feat: separated Plasma generation from sync

* fix: fl_charts

* fix: duplicate nodes in NodeManagement

* feat: open Syrius logs directory

* chore: update dependencies

* feat: switch auto-receiver on/off

* Create SECURITY.md

* feat: switch auto-receiver on/off

* chore: remove WC_PROJECT_ID environment variable

* cicd: removed wallet-connect environment

* Fix auto receiver

* Sync pubspec

* Fix different green colors

* Separate plasma from sync

* Revert "Add alienc0der's v0.0.7 changes"

* Reword `Send Payment` to `Send`. (#56)

* Fix wrapping of revocation time (#53)

* Fix FormatException when trying to fuse a large amount (#58)

* Community public nodes (#49)

* Update app_links and ignore incoming links on Linux (#55)

* Fix receive amount formatting and QrInputTooLongException (#59)

* Update charts (#52)

* Position address above amount (#62)

* Hardware wallet support for Ledger (#43)

* Delay Embedded Node until selected (#63)

* Disable autoreceive feature (#47)

* Reset words when verify incorrect seed (#66)

* Add auto-receive option on the onboard node-management screen (#65)

* Use CircularProgressIndicator for sync state

* Update znn_sdk_dart ref

* Change AZ pillar owner filters (#68)

* Load community nodes from assets (#69)

* Add manual test cases (#70)

* Update README

* Check for active sentinel

* chore(deps): bump archive from 3.3.7 to 3.3.8 (#73)

* WalletConnect refactor (#48)

* Release wallet lock after use

* Use finally to release wallet lock

* Restore WC_PROJECT_ID doc

* Update ledger test

* Add ledger test-run

* Fix missing quotes

* Fix missing quotes

* Fix running auto-receiver  (#76)

* Correct ledger test run

* Correct walletconnect test

* Fix delete web3 cache (#78)

* Add auto-receive test run

* Add community-nodes test run

* Remove unused import

* Allow znn or qsr az donations (#84)

* Restore connection on rejected chain identifier mismatch (#82)

* Rearrange settings widgets (#83)

* Remove type step from pillar stepper (#88)

* Use wallet name to identify ledger device (#89)

* Remove double error notification (#93)

* Add auto-receive test run

* Disconnect node on Wallet Reset (#94)

* Properly await all notifications (#95)

* Add community-nodes test run

* Fix dashboard highlight overlap (#97)

* Update znn_ledger_dart ref

* Update QR child image (#98)

* Fix error handling when generating new addresses (#100)

* Refactor Sentinel stepper with Pillar impl. (#101)

* Update ledger test run

* Chore: upgrades and workflow fixes (#103)

* Add walletconnect test run

* Fix WalletConnect camera scanner (#104)

* Add walletconnect test run

* Delete web3 cache by deactivating pairings (#107)

* Fix "shadows" on token cards (#109)

* Apply sync check to all hosts (#112)

* Refrase auto-receiver checkbox tooltip

* Clean up unused AsyncMutex

---------

Signed-off-by: georgezgeorgez <[email protected]>
Signed-off-by: vilkris <[email protected]>
Co-authored-by: vilkris <[email protected]>
Co-authored-by: georgezgeorgez <[email protected]>
Co-authored-by: Github Actions <[email protected]>
Co-authored-by: Sol Sanctum <[email protected]>
Co-authored-by: mik3mast3rs <[email protected]>
Co-authored-by: Alien Coder <[email protected]>
Co-authored-by: Interstellar Traveler <[email protected]>
Co-authored-by: vilkris <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@KingGorrin KingGorrin deleted the feature/ledger branch April 2, 2024 07:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants