block-core / blockcore-wallet Goto Github PK
View Code? Open in Web Editor NEWWeb5 Wallet for your coins, tokens, identities, NFTs and more.
Home Page: https://www.blockcore.net/wallet
License: MIT License
Web5 Wallet for your coins, tokens, identities, NFTs and more.
Home Page: https://www.blockcore.net/wallet
License: MIT License
Many of the handlers in the orchestrator.ts get the active account and wallet upon events raised. Instead the wallet and account (IDs) should be supplied and queried upon request, and then supplied to the manager objects.
When the user creates a new wallet, we should keep the state, especially the secret recovery phrase, since the user might copy and paste into another application, at which time the wizard restarts if the popup closes. The user might end up re-generating a new phrase and not recognize this.
The default derivation path for nostr IDs are: m/44'/1237'/0'/0/0
Allow users to manager their nost Ids and key-pairs using the extension on this path.
New separate identities should increment the account value, which is hardened path. Should not use the last two sections, which in a normal wallet is change/receive address and address (key) index.
A secondary identity should be: m/44'/1237'/1'/0/0
NIP-06: https://github.com/fiatjaf/nostr/blob/master/nips/06.md
The button added in #31 opens the standard page (dashboard when unlocked). It should instead attempt to redirect to the same state as already exists.
It obviously might be hard to replicate user input if user is on a send screen, but at least navigate to the correct account and screen would be helpful.
The position of the pop-up window that opens when the extension is triggered from web site, to be top-right of the browser window.
When user navigate back from settings, which has a lot of options, the user should be returned to the exact same scroll location.
Reference for some example code and implementations: angular/angular#10929
There should be an introduction popup that appears the first time user starts the extension, explaining some of the basic functionality and UI, and with some warnings regarding Non-Custodial Wallet (user controls the keys), etc.
Add a tool under the "Tools" section on wallet dashboard that allow users to sign and verify messages.
The UI should allow users to pick account, then address, then either sign a message manually or verify it.
The extension could be setup to watch a wallet using xpubkey derived from the mnemonic, and query the indexers that we are running for Blockcore chains. The background.ts is the place to put background processing that checks transactions, and then a notification could be actived on the host OS.
While the user can take backup of their secret recovery phrase, the accounts are manually added for different derivations paths / networks / blockchains. Having the ability to export and import would greatly improve the restore experience for users.
The watch list that watches for changes on specific addresses should be persisted, it will be removed if user exists or restarts the extension (background process).
This means that an transaction performed might not be reflected correctly in the state of the account.
It should be possible to re-encrypt the Secret Recovery Phrase.
If an identity is re-used during development for an Blockcore Vault configuration, then locally the Blockcore Extension will attempt to push an invalid sequence update to the DID when publishing. The error should be displayed, and user should be allowed to update local cache to correspond with server.
When the extension starts being used to authenticate against web apps, we should maintain a public blocklist that can be used to display warnings to users.
During development, the extension might come in an always-loading state. This loading indicator should have a timeout that shows some UI options after 3-5 seconds that allow users to restart the extension, perhaps validate the settings, see error log, etc. Maybe copy and paste the error log to show to the dev team. Behavior should be similar to how it is done on Blockcore Hub.
The extension can be opened with a shortcut (currently Shift+Alt+X
, but it would be preferable if web pages could activate the extension as oppose to showing it in a popup window.
This task is to do research and find possible solutions to activate the extension popup from web pages.
This is probably not possible and not allowed for security reasons, but we can still try to improve the user experience.
The settings UI already allows selecting display language, but the functionality is not yet implemented. Consider postponing this task until later in the development cycle, to avoid too much work managing the texts during the initial development phase.
The create account UI should support an advanced option of single key, where the user can enter the whole derivation path and the account will be marked "singleKey" or something similar.
Cirrus Core allows users to pick any of the 20 keys (addresses) to be used when making a wallet, we only support the first (0) index by default, but in the account UI a user can add alternatives for Cirrus Core (and potentially other services that relies on a single key).
nos2x is an "official" browser extension for Nostr, we should implement the same APIs and be compatible as an alternative.
Blockcore Extension is an agnostic and cross-chain and cross-platform wallet extension, so the implementation should be respectful of the official. The extension should check if "window.nostr" already exists, and if it does, we should have an option that allow users to override the "official" extension.
The current provider API (as of 2022-01-16):
async getPublicKey()
async signEvent(event)
https://github.com/bitcoin/bips/blob/master/bip-0021.mediawiki
When user want to receive payment, they should be allowed to create a payment requests.
The metadata should be stored for both sender and receiver.
Also investigate other or newer BIPs if available.
Whenever the user responds to an "action", they must initially pick an account they want to assign to the web page. E.g. if the web page asks the user to perform a signing, they must first pick account, even though there is already an active account open.
The next time any "action" is triggered from the same domain, the extension will auto-select the previous account.
We must ensure we have some UI where user can "logout" their account from specific web pages.
When any web page triggers the extension, this should activate an actions workflow within the extension. This should overlay the regular UI, and the user should be able to exit the workflow.
Triggers from web pages opens in a regular pop-up window. If the user clicks the extension icon in the browser, the same state should be displayed. This ensures that if the user dismissed the popup by mistake or it is hidden, they can get back into the same workflow from tapping the icon.
The extension currently hold all data using the standard storage APIs on extension. We must perform testing on this for larger wallets if it would be smart to migrate to IndexedDB, which is an SQL-like storage in the browser and wouldn't require us to keep everything in-memory. We can of course also partition the data using normal storage too.
We must perform tests and verification on the actual need for this, and should be done before the milestone tagged.
Allow different features to be enabled for different instances.
When a wallet is first created, the user should see a friendly UX that allows them to add multiple accounts with easy clicks.
Add a button that allow users to open the extension in a new tab, getting the full window UI.
Add logging and error handling logic that is able to work in both background and UI. It should store a log of 100 latest issues and show that on dedicated page available from the settings view.
It appears like an wallet is selected, the unlock screen is visible, but no wallet is fully selected after another is deleted.
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.