Giter Site home page Giter Site logo

onbloc / adena-wallet Goto Github PK

View Code? Open in Web Editor NEW
26.0 8.0 16.0 30.23 MB

Adena is a friendly browser extension wallet for the Gnoland blockchain.

Home Page: http://adena.app/

License: GNU General Public License v3.0

CSS 0.16% HTML 0.06% TypeScript 98.68% JavaScript 0.59% Shell 0.40% MDX 0.10%
adena extension wallet blockchain gnoland gnoland-blockchain

adena-wallet's Introduction

Adena Wallet

Twitter: Adena Wallet Banner

Introduction

Adena is a friendly, open-source, non-custodial Gnoland wallet, built for Gnomes worldwide. Adena exists to power millions of realms (smart contracts in gnolang) and tokens that will flourish the Gnoland ecosystem with a quality interface, NFT & custom token support, and a seamless integration procedure. ​

For users, Adena makes managing crypto as simple as keeping and sending money on Paypal or Venmo.

​ For developers, Adena provides streamlined web3 experience upon integration!

​ You can find the latest official version of Adena on our official website, or directly on the Chrome Webstore.

​ Also, follow us on our Twitter and Medium for newest updates, patch notes, and partnership announcements! ​

Features

✅ Create & Restore Wallet
✅ View Account Balances
✅ Deposit & Send Tokens
✅ Transaction History
✅ Settings
✅ Connect to Dapps
✅ Sign GNO Contracts
✅ Explore Dapps
✅ Multi-Accounts
✅ Multi-Network
✅ Ledger Support
✅ Web3 Login Support
✅ Manage Custom Tokens
✅ Airgap Support
⬜ Multi-Chain
⬜ View & Transfer NFTs
⬜ In-app Swap ​

Building Locally

To set up a local environment, clone this repository and run the following commands:

 yarn install
​
 yarn build

​ This will store the extension's build output in packages/adena-extension/dist. ​

Documentation

Check out our official documentation page for guides and brand assets.

Author

Onbloc

Contribution & Support

We welcome contributions from the community and are always eager to hear your ideas and feedback! If you have suggestions for improvement, want to contribute to Adena, or need support, please consider the following options:

  • Read our contributing guidelines: Our CONTRIBUTING.md file provides information on how to contribute to the project, including submitting pull requests, reporting issues, and suggesting improvements.
  • Open an issue: If you encounter a bug, have a feature request, or want to suggest improvements, feel free to open an issue on our GitHub repository.
  • Join our community: For discussions, questions, or support, join our channel on Gnoland's Discord server. We're excited to collaborate and help!

adena-wallet's People

Contributors

adr-sk avatar dongwon8247 avatar giansalex avatar hjlee0 avatar jackthgu avatar jineeus avatar jinoosss avatar justyntemme avatar luciorubeens avatar r3v4s avatar sienrik15 avatar skqksh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

adena-wallet's Issues

[New Feature] Send via Link

Overview

A handy tool/feature to send tokens via link (URL), without having to know the recipient address.

Interaction Flow

  1. (Extension) Sender selects the Send via Link option when sending tokens
  2. (Extension) Sender enters information (select token, enter quantity)
  3. (Extension) Sender generates a copyable link and QR code
  4. (External) Sender sends the link or QR code to the recipient using any messenger
  5. (Webpage) Recipient enters the dedicated webpage via the link or QR code to claim tokens
  6. (Webpage) Recipient creates a new wallet (Google Login provided) or connects an existing wallet and claims the tokens

image

Possibilities

  • Can be something that helps to lower the "Web3" barrier for newcomers.
  • Can generate multiple links at once and send each link to multiple people (airdrop, events, etc).
  • Can make good synergies with MPC login tools (Google Login etc) for not crypto-friendly users.

Consideration

  • Should make a limit on the token amount that can be sent using the SVL (to prevent the loss of funds due to human mistakes).
  • URLs should be random/secure enough so that URLs cannot be first accessed by others.
  • Should add a claimable period (i.e., only claimable within 24 hours since the link generation), and if not claimed, the funds go back to the original sender.
  • Should be 100% open source, plain written in Gnolang.

Any feedback is welcome!

Feature request - Network RPC Address

Hello.

I'm a part of Gno Playground team and we're using API provided by Adena Wallet extension.

Right now, Adena Wallet provides a way to obtain currently selected chain ID using window.adena.GetAccount() method.

We have some scenarios for which we would need to have RPC URL of a selected chain.

Can you please extend the GetAccount method to provide RPC URL as well? (or any other way to obtain it)

Thank you.
Best regards.

[New Feature] In-app Faucet

Overview

A feature that allows users to receive tokens from the official Gno.land Testnets inside the Adena Wallet Extension by integrating with the gnolang/faucet.

Policies

  1. Supported networks: Portal-Loop and Testnet3 (to be replaced with Testnet4).
  2. Each Faucet request will transfer 10 $GNOT tokens to the requester's address on the respective network.
  3. Spam-prevention mechanisms:
    • Each address may only make 1 Faucet request per 24 hours.
    • An address with a balance of 10 $GNOT or more may not receive tokens.

User Flow

  1. The user selects one of the supported networks.
  2. The Deposit button is replaced with the Faucet button.
  3. The user clicks on the Faucet button to request tokens.
  4. Adena Wallet checks for the requester's eligibility, then either completes the transfer or rejects the request with a feedback pop-up.

In-App Faucet

Possibilities

  • Improves the UX for acquiring testnet tokens to enhance the DevX for developers and encourage end-user engagement.

Consideration

  • Requires a pre-mined supply of $GNOTs inside a wallet dedicated to the In-app Faucet.

Any feedback is welcome!

Max password length of 23

Hello team,

I was wanting to play with the Adena wallet, but the max password length is 23:

image

From a security standpoint this is:

  1. Not secure
  2. Bad UX
  3. Against guidelines (ie NIST)

From a programming perspective there is no reason not to make it a max of 128 or even 256 characters.

I recommend:

  1. changing the maximum length to 256 characters
  2. changing the minimum length to 8.

Importing an Account using a private key

Description

Hey, I have tried importing the test1 private key to Adena, but I was unsuccessful. It seems that no matter what I try, I end up with an "invalid format" error. This is how I went about it:

  1. Exported the test1 private key locally, with the --unsafe flag, to get the unencrypted version:
-----BEGIN TENDERMINT PRIVATE KEY-----

ChQvdG0uUHJpdktleVNlY3AyNTZrMRIiCiDql7n9235r9oZwkKeoGWVwR5Sfu5Rm
1hf5QFOO/YiGBQ==
=wH/4
-----END TENDERMINT PRIVATE KEY-----
  1. I tried copying the whole thing into Adena, including the ---BEGIN--- & ---END--- statements, and just the string inside (ChQ....=wH/4). I did the same thing with the encrypted private key, just as a sanity check, and it also didn't work.

How is this handled in Adena, and what is the correct way to do this?

[New Feature] Pop Window

Overview

A feature that opens the Adena Extension in a new tab. This feature improves the multitasking UX, especially for users engaged in complex tasks in Adena, such as uploading signed transaction files for an air-gap account while preventing forced minimization from tab switching.

User Flow

  1. (Extension) The user clicks on the Pop Window Icon located on the right side of the header.
  2. (Tab) Adena is opened in a new tab.
  3. (Tab) The user has the freedom to click on other areas of the browser or switch tabs while avoiding the app minimization.

Frame 38640

Possibilities

  • Unlocks advanced UX features such as Drag & Drop to upload a file.
  • Allows users to leave Adena open while interacting with dApps or monitoring transactions in a block explorer.

Consideration

  • Injection methods should automatically detect if there's already a tab opened in the background to avoid Error 1001, which ensures that only a single pop-up exists at a time.

Any feedback is welcome!

[New Feature] Multi-chain Assets & IBC Transfer

Overview

Support for multi-chain asset display and Inter-Blockchain Communication (IBC) Protocol.

User Flow

Balance Aggregation

  1. In the Wallet, tokens of the same kind across multiple chains are aggregated into a single balance for improved visibility.
  2. In the Token Details Page, the distribution of the tokens by chain is displayed along with a composite transaction history that involves the token from all chains.

Multi-chain Addresses

  1. The address popup displays all of the user's addresses in a single place.
  2. The user may click on any of the addresses to copy it with ease.

Address Book

  1. Each registered address is tagged with the corresponding chain.
  2. When the user adds a new address, Adena detects the chain of the user's input and automatically tags it.

1

IBC Deposit

  1. The Deposit menu displays all of the supported addresses. The user may copy the address or view details.
  2. By clicking on the QR code icon, the user is taken to the Detailed Address, where a full QR code and a link to the respective explorer are available.

IBC Send

  1. The user selects the token and the source chain.
  2. Once the user enters an address from any of the supported chains, Adena automatically detects the destination network by analyzing the prefix. Adena also warns users to protect them from potential losses resulting from using IBC transfer to CEXs.
  3. The user may review the amount and the destination network before approving the transaction.

2

Possibilities

  • Seamlessly connect Gno users to the broader interchain ecosystem by abstracting the complexities of multi-chain asset management.
  • Allow users to avoid manually searching and entering the channels during IBC transfers to streamline interchain experience.

Consideration

  • How (and whether) to allow users to search & add custom tokens from other IBC-connected smart contract platforms?
  • How to deal with edge cases in which a user sends a token through a "non-canonical" IBC path. (in terms of balance aggregation & display)

Any feedback is welcome!

Bug: Unable to add new account to existing wallet

Hey, I tried adding a new wallet address in the newest version of Adena - 1.9.1.

When I click "Add account" in the left bar, I get a new tab opened that is fully white and doesn't respond. I am using Arc Browser on MacOS. Below are the screenshots.

Add Account:
Screenshot 2024-03-08 at 22 38 42

Screen after clicking "Add Account":
Screenshot 2024-03-08 at 22 37 56

Nothing happens after some time, and it seems I'm unable to add a new account.

[New Feature] Username Transfer

Overview

Support for transactions using the username registered in the /r/demo/users realm as the recipient's address.

User Flow

  1. The sender selects Send.
  2. In the Recipient's Address input field, the sender enters a username registered in the /r/demo/users realm.
  3. The sender enters the amount of tokens to send and selects Next.
  4. The sender approves the transaction.
  5. Adena sends the tokens to the address that is resolved from the username.

1

Possibilities

  • Provide a simple transaction flow that resembles sending messages to your contacts as in Web2 applications.
  • Promote the wider adoption of the /r/demo/users realm by providing a powerful use case.

Any feedback is welcome!

request: adding accounts with mnemonics (after first use)

Hey, I noticed you can only currently import accounts using private keys, if you try to do it after Adena already has an account.

Can we add support for mnemonic import? This way we can have own keys + keys like test1.

Thanks!

bug: creating an account after importing test1 is deterministic

adena_bug_report.mp4

Is this supposed to happen? Are subsequent accounts created with "Create an account" using the same private key but with a different account number?

Address generated: g1kcdd3n0d472g2p5l8svyg9t0wq6h5857nq992f
privkey: b937d2c1748b5abd4d0700e2e02fad554f3f378f8eb33d740878d51db6aa25bd

Project Overview: General Work Process, Dev Environment and Structure

Work Process

1. Planning Phase (Notion)

  • Ideation & Research
  • Roadmap for new features/improvements
  • Wireframes
  • Functional specification
  • Information Architecture (IA)
  • Versioning suggestion

When planning is done, request for design.

2. Design Phase (Figma)

  • Design components
  • Design UI/Flow
  • Many Iterations

When the design is done, request for development.

3. Development Phase (Jira & GitHub)

  • Analyze the requested features/bugs and assign them to appropriate persons
  • Run a two-week sprint, with the aim of releasing a new version every month
  • Synchronize Jira issue cards with GitHub commits for better tracking & review process
  • Manage the Adena Developer Docs

When development is done, ready for release. For the release process, go to: #301

Dev Environment & Structure

Stack

  • Typescript: 4+
  • React: 18.2
  • yarn: 3.4.1 (yarn workspace)

Test Tools

  • jest
  • storybook

CI/CD

  • GitHub Actions
  • AWS S3 (Storage for build files)

Build

  • Build
$ yarn set version berry
$ yarn
$ yarn build
  • Run
$ yarn set version berry
$ yarn
$ yarn build:module
$ yarn develop

Structure

adena-wallet
├── packages
│   ├── adena-extension // Adena Wallet extension
│   │   └── src
│   │       ├── assets // Assets, svg, png ...
│   │       ├── common // Common modules
│   │       ├── components // UI components
│   │       ├── containers // Data handles
│   │       ├── hooks // Hooks
│   │       ├── inject // Injection script
│   │       ├── layouts // UI layouts
│   │       ├── migrates // Storage data migration 
│   │       ├── models // Data interface
│   │       ├── pages // Pages
│   │       ├── repositories // Data input/output
│   │       ├── resources // Resource data
│   │       ├── services // Service logic
│   │       ├── states // Recoil state variables
│   │       └── types // External interface
│   │
│   ├── adena-module // Wallet/account management module
│   │   └── src
│   │       ├── crypto 
│   │       ├── encoding 
│   │       ├── math 
│   │       ├── transaction
│   │       ├── utils
│   │       └── wallet 
│   └── adena-torus-signin // MPC Google Login module 
│
└── scripts // Build scripts

Git workflow (+Release process)

Git Workflow

Adena Github Flow v5 drawio

  • main: This branch stores the source code of the latest released version of Adena.
  • release/*: Release branch for a specific version, including QA and final review.
  • hotfix/*: Branch for critical bugs.
  • develop: Branch for ongoing development.
  • feature branches: Branches for specific features or enhancements.

Release Process

  1. Develop features in the develop branch (following the work process in #300).
  2. When finished, create a release/* branch for QA.
  3. When QA is complete, submit the final review to @dongwon8247.
  4. After merging the release/* branch into main upon approval, submit a review to the Chrome Web Store.
  5. (If approved) Create official releases and tags with updated features/bug fixes.
  6. (If rejected) Create a feature branch, fix the issue, and resubmit for review.

Feature request: Import wallet per mnemonic seed

Hi, I'm playing around with adena wallet atm, tried to import one of my keplr hot wallets but keplr only allows to export/view the mnemonic seed (not the private key) and adena only allows the import of private keys (not mnemonic seeds).

So my feature request would be to also allow the import of a wallet by mnemonic seed to make it easier for keplr users to move their wallets to adena.

Show current network on main page of the wallet

Hey @onbloc team, love the work on Adena.

I found a small improvement that could be added to the Adena UI: having an indicator of what network you are currently connected to (ie staging/test3/.../mainnet) on the main page of the wallet.

IMHO, this is an important piece of UI when using the wallet. What do you guys think?

Local development network

Hi, when I change network to local development network the first launch does it correctly and when I leave adena and go back a second time it loads indefinitely, like in the photo below. I would also like to know how to add tokens to the local development network, because I tried to add my adena address to the genesis_balance.txt file of gno.land/genesis but the tokens are not loaded on adena.
Screenshot 2024-04-12 at 21 09 22

[New Feature] Notifications

Overview

A feature that logs transactions that had interacted with the user's account while the user was away, and notifies the user.

User Flow

  1. The user clicks on the notification icon on the right side of the header. The icon lights up when there is an unread notification.
  2. Transactions are displayed in chronological order.
  3. The user may click on a transaction to view its details, or, in the case of an airdrop, visit the website for details.
  4. The user may clear out notifications by clicking on Clear All.

Frame 38641

Possibilities

  • Improves the visibility of on-chain events such as airdrops, ensuring the user maximizes every possible opportunity.
  • Allows users to monitor new transactions without manually scrolling through their history.

Consideration

  • Ways to protect users from interacting with scam airdrops via warning UI such as the "Unverified Token" label.

Any feedback is welcome!

Bug: sometimes extension is unresponsive

Sometimes, the extension stops responding and at the same time when I'm trying to change network - I get an empty popup.

In addition to blank dialog popups, Adena Wallet extension button also doesn't work.
Disabling and re-enabling extension doesn't work. The only was to fix the issue is to terminate and restart Chrome process.

Reproducing is quite problematic, but it occurs more often when wallet is locked or when page is frequently reloaded.

adena-bug-demo.mp4

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.