GithubHelp home page GithubHelp logo

dfinity / nns-dapp Goto Github PK

View Code? Open in Web Editor NEW
99.0 32.0 37.0 96.27 MB

The Dapp of the Internet Computer's Network Nervous System.

Home Page: https://nns.ic0.app/

License: Other

HTML 0.23% JavaScript 0.54% Shell 3.43% TypeScript 43.23% Rust 42.45% Dockerfile 0.14% Svelte 9.91% SCSS 0.04% Vim Script 0.02%

nns-dapp's Introduction

NNS Dapp

NNS Dapp logo

GitHub Workflow Status (with event) GitHub all releases Chat on Discord


NNS Dapp offers a user-friendly platform for interacting with the Network Nervous System (NNS) and any SNS of the Internet Computer. With this decentralized application, you can easily perform the following actions:

  • Send and receive tokens (ICP, ckBTC, CHAT etc.)
  • Stake and manage neurons
  • Vote on the governance of the Internet Computer and SNSes
  • Participate in decentralization swaps
  • Create and top up canisters

Links

Some useful links:

  • HACKING provides guidance for local development and offers helpful resources for developers.
  • BUILD.md contains information about build reproducibility, tools, and pipelines.
  • The SNS aggregator is a back-end canister that provides fast, certified data about Service Nervous Systems (SNS).

Getting Help

Here are some ways you can reach out for help or share your best ideas to improve the dapp:

  • Issue Tracker: Create a new ticket if you encounter a bug using NNS Dapp, or if an issue arises when you try to run or build the code.
  • DFINITY Forum: The forum is a great place to look for information.
  • Support: Create a support request if you'd like to get a personalized help.

nns-dapp's People

Contributors

andrewwylde avatar anishh2003 avatar bitdivine avatar daniel-bloom-dfinity avatar danielthurau avatar davidm-d avatar dependabot[bot] avatar dskloetd avatar dylancm4 avatar egeyar avatar frederikrothenberger avatar georgi-dfinity avatar gilbert-jolly avatar hpeebles avatar ielashi avatar jasonz-dfinity avatar lmuntaner avatar megrogan avatar mraszyk avatar mstrasinskis avatar ninegua avatar nmattia avatar nomeata avatar nzoghb avatar peterpeterparker avatar przydatek avatar sa-github-api avatar tmu0 avatar vusirikala avatar wackyleo459 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  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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nns-dapp's Issues

Redundant "Load more proposals"

The NNS frontend dapp, voting tab, displays a link to "load more proposals" even when there are no additional proposals to load.

BUG: Outdated message and behaviour

When creating a new canister with the NNS UI, it shows this
image

But this is incorrect. 0.1T cycles are charged now for creating a new canister. And hence the minimum should also be reduced.

We can see that the created canister received 1.9T cycles
image

Expected behaviour:

  • Reduce minimum amount to 1.1T or whatever is currently prescribed
  • Update the message accordingly

Instructions for following

The following instructions say: "Following allows you to delegate your votes to another neuron holder. You still earn rewards if you delegate your voting rights. You can change your following at any time."
Could you clarify what happens when you follow multiple neurons? Could you clarify that you only get voting rights if that neuron votes.
E.g. "Following allows you to delegate your votes to another neuron. You vote the same as that neuron votes, so you still get voting rewards as long as that neuron votes. You can change your following at any time. (There is also an opportunity to follow a group of neurons, see https://wiki.internetcomputer.org/wiki/Maximizing_Voting_and_NNS_Rewards for more information.)"

DFX_NETWORK=local ./config.sh error

I followed the local development instructions, and in the step "DFX_NETWORK=local ./config.sh", it prints:
image
do I make a wrong operation anywhere?

Review CSS preprocessor

We should review the CSS preprocessor and the way we imports CSS. This might requires some changes in gix-cmp bundles.

That way we can maybe also migrate from svelte-preprocess to @sveltejs/vite-plugin-svelte.

Stacktrace:

vite v5.0.10 building for production...
transforming (1) .svelte-kit/generated/client-optimized/app.js08:49:48 [vite-plugin-svelte] /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/routes/+layout.svelte svelte.preprocess depends on more than 10 external files which can cause slow builds and poor DX, try to reduce them. Found: /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/colors.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/variables.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/mixins/_media.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/fonts.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/mixins/_fonts.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/theme.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/layout.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/mixins/_display.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/mixins/_layout.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/button.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/mixins/_effect.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/link.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/tag.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/modal.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/grid.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/utility-classes.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/mixins/_content.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/blockquote.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/scrollbar.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/menu.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/selection.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/global/text.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/themes/dark.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/node_modules/@dfinity/gix-components/dist/styles/themes/light.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/themes/legacy.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/themes/global.scss, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/themes/variables.scss

Feature request - Hide assets with zero balances

I propose implementing a feature that allows users to hide assets with zero balances.

Feature Details

  1. Introduce a toggle switch or a settings option that enables users to hide assets with zero balances.
  2. Ensure that the user's preference for hiding zero balance assets persists across sessions.

Clear description and separate section for Manage Neuron Topic

For ICDevs.org we'd like for it to be easy for users to "dedicate" their neurons to us in a way that they maintain ownership of the underlying ICP but we are able to harvest the maturity for community and code development tasks that benefit the Internet computer. Current instruction can be found at https://icdevs.org/donations.html and as you can see it is a poor user experience. It would be nice to have a specific section in the NNS that explains what this functionality does and how to use it. This was in the NNS previously...I know because I gave dfinity control of my neurons on accident because it was just lumped in with the other topics. It would be great to have it back in a proper context.

Prevent crashing when using NNS dapp on mobile devices

When using the the NNS dapp on my iPhone 12 pro, and navigate to the voting page, it crashes when scrolling down. I found a quick workaround to prevent this, maybe this quick-fix can be implemented in the live version?

To prevent it from crashing I scroll down slowly (in the hope it doesn’t crash) and then click on the proposal status and only leave “open” selected. Then is doesn’t crash anymore. Is it possible to use this selection by default?

I think it's this piece of code;

Please improve error messages

All error messages I've seen are laconic. E.g., I deliberately tried merging maturity in an erroneous way and got "No compatible device found".
May I suggest a review of all error messages with a view towards helping the user to resolve the issues they encounter when hitting an error. E.g., for the above error, perhaps it would be a link to relevant documentation or a list of compatible devices.

Manage neurons error

I have a neuron which still follows some 'manage neuron'. When I try to change following I get this error message:
Sorry, there was an unexpected error. Please try again later. Account with principal aaaa-bbbbb-ccccc-ddddd-eeeee-fffff-ggggg-hhhhh-iiiii-jjjjj-kkk not found!

I don't think that's a useful error message. Will trying again ever resolve the issue or are we just waisting the user's time? What is the user supposed to do or where can they learn what the problem is? Will users in general know what this principal is and where to find it?

Voting tab should be refined

Hi everyone,

We should use a different type of layout for this critical screen, maybe a list with filters. There is to much proposals to present them with cards and a font so big.
Could we add a "find by id" feature too ?

Sincerly

Fix dapp routing

Hi everyone,

I wanted to vote on the roadmap proposals but I found it very painful because the medium article links to https://dashboard.internetcomputer.org/proposal/XXXXX and there is a button to vote on NNS which doesn't redirect to the proposal because routing is not working properly.
When you click on "vote on NNS" button you're redirected to https://nns.ic0.app/#/proposal/XXXXX which immediately redirects to /#/accounts.
Also when you click on a tab you always stay on /#/accounts.
With so much proposals to vote on, the nns dapp needs to be simplified and fix this issue to enable a maximum of participation.

Sincerly

Disable horizontal scrolling

Hi everyone,

Could we disable the horizontal scrolling on the dapp ? I don't find it really important and I find myself switching tabs without wanting it while scrolling through the "voting tab" (i'm using a macbook trackpad).

Sincerly

Gap in proposal records

When I select all types of proposals the records are consecutive in the beginning, but then start having gaps. There is for instance a gap between 56187 Executed to 56138 Open, 56137 Open, 56134 Executed.
I find this puzzling, I was expecting a consecutive list (perhaps down to some cutoff, right now it goes all the way down to 340 Adopted)

Using nns-dapp and quill with the same seed will generate different principal_id

The principal_id generated locally through the seed is inconsistent with the principal_id displayed on the nns dapp:

Take the following two pieces of code as an example:

seed:1947400 story goddess birth execute canoe sense poverty orchard feel mule indoor credit bulb arrest primary giggle turtle order tell glimpse grid act motion february

nns generated: jwfy3-6d6bo-ri5le-apblk-7tmrd-h7sj5-srhi4-4wntx-4daz6-missz-yqe
local generated: nrw4v-2qe5h-dor7z-mm7x4-hfa5f-tfls6-avaja-aysww-c6bwg-g25mq-jqe

local code
import { Ed25519KeyIdentity } from '@dfinity/identity';
import { mnemonicToSeedSync } from "bip39";
import {
    pub_key_to_address,
} from '@dfinity/rosetta-client';
let crypto;

const HARDENED = 0x80000000;

function toBigEndianArray(n) {
    const byteArray = new Uint8Array([0, 0, 0, 0]);
    for (let i = byteArray.length - 1; i >= 0; i--) {
        const byte = n & 0xff;
        byteArray[i] = byte;
        n = (n - byte) / 256;
    }
    return byteArray;
}

async function derive(
    parentKey,
    parentChaincode,
    i,
) {
    // From the spec: Data = 0x00 || ser256(kpar) || ser32(i)
    const data = new Uint8Array([0, ...parentKey, ...toBigEndianArray(i)]);
    const key = await crypto.subtle.importKey(
        'raw',
        parentChaincode,
        {
            name: 'HMAC',
            hash: { name: 'SHA-512' },
        },
        false,
        ['sign'],
    );

    const h = await crypto.subtle.sign('HMAC', key, data.buffer);
    const slipSeed = new Uint8Array(h.slice(0, 32));
    const chainCode = new Uint8Array(h.slice(32));
    return [slipSeed, chainCode];
}

async function generateMasterKey(
    seed,
) {
    const data = new TextEncoder().encode('ed25519 seed');
    const key = await crypto.subtle.importKey(
        'raw',
        data,
        {
            name: 'HMAC',
            hash: { name: 'SHA-512' },
        },
        false,
        ['sign'],
    );
    const h = await crypto.subtle.sign('HMAC', key, seed);
    const slipSeed = new Uint8Array(h.slice(0, 32));
    const chainCode = new Uint8Array(h.slice(32));
    return [slipSeed, chainCode];
}

export async function fromSeedWithSlip0010(
    masterSeed,
    derivationPath,
) {
    let [slipSeed, chainCode] = await generateMasterKey(masterSeed);

    for (let i = 0; i < derivationPath.length; i++) {
        [slipSeed, chainCode] = await derive(
            slipSeed,
            chainCode,
            derivationPath[i] | HARDENED,
        );
    }

    return Ed25519KeyIdentity.generate(slipSeed);
}

async function main() {
    try {
        crypto = await import('node:crypto');
    } catch (err) {
        console.log('crypto support is disabled!');
    }
    crypto.subtle
    const mem = "story goddess birth execute canoe sense poverty orchard feel mule indoor credit bulb arrest primary giggle turtle order tell glimpse grid act motion february"
    const seed = mnemonicToSeedSync(mem);
    const id = await fromSeedWithSlip0010(seed, [44, 223, 0, 0, 0]);
    console.log(id.getPublicKey().toDer())
    // console.log(pub_key_to_address(id.getPublicKey()))
}

main()
nns-dapp code
import { Ed25519KeyIdentity } from '@dfinity/identity';
import { mnemonicToSeedSync } from "bip39";
let crypto;

const HARDENED = 0x80000000;

function toBigEndianArray(n) {
    const byteArray = new Uint8Array([0, 0, 0, 0]);
    for (let i = byteArray.length - 1; i >= 0; i--) {
        const byte = n & 0xff;
        byteArray[i] = byte;
        n = (n - byte) / 256;
    }
    return byteArray;
}

async function derive(
    parentKey,
    parentChaincode,
    i,
) {
    // From the spec: Data = 0x00 || ser256(kpar) || ser32(i)
    const data = new Uint8Array([0, ...parentKey, ...toBigEndianArray(i)]);
    const key = await crypto.subtle.importKey(
        'raw',
        parentChaincode,
        {
            name: 'HMAC',
            hash: { name: 'SHA-512' },
        },
        false,
        ['sign'],
    );

    const h = await crypto.subtle.sign('HMAC', key, data.buffer);
    const slipSeed = new Uint8Array(h.slice(0, 32));
    const chainCode = new Uint8Array(h.slice(32));
    return [slipSeed, chainCode];
}

async function generateMasterKey(
    seed,
) {
    const data = new TextEncoder().encode('ed25519 seed');
    const key = await crypto.subtle.importKey(
        'raw',
        data,
        {
            name: 'HMAC',
            hash: { name: 'SHA-512' },
        },
        false,
        ['sign'],
    );
    const h = await crypto.subtle.sign('HMAC', key, seed);
    const slipSeed = new Uint8Array(h.slice(0, 32));
    const chainCode = new Uint8Array(h.slice(32));
    return [slipSeed, chainCode];
}

export async function fromSeedWithSlip0010(
    masterSeed,
    derivationPath,
) {
    let [slipSeed, chainCode] = await generateMasterKey(masterSeed);

    for (let i = 0; i < derivationPath.length; i++) {
        [slipSeed, chainCode] = await derive(
            slipSeed,
            chainCode,
            derivationPath[i] | HARDENED,
        );
    }

    return Ed25519KeyIdentity.generate(slipSeed);
}

async function main() {
    try {
        crypto = await import('node:crypto');
    } catch (err) {
        console.log('crypto support is disabled!');
    }
    crypto.subtle
    const mem = "story goddess birth execute canoe sense poverty orchard feel mule indoor credit bulb arrest primary giggle turtle order tell glimpse grid act motion february"
    const seed = mnemonicToSeedSync(mem);
    const id = await fromSeedWithSlip0010(seed, [44, 223, 0, 0, 0]);
    console.log(id.getPrincipal().toString())
}

main()

FEATURE REQUEST: Mechanism to label canisters that are listed in the "Canisters" tab

Since a lot of individuals (myself included) use the NNS UI to manage cycle balances and topups for canisters, it quickly becomes unwieldy to try and identify which canister is for what project using just the canister principal IDs.
A mechanism to add some sort of identifying label to each canister listed in the canisters tab would help greatly in organizing canisters by what project they belong to.

Stake neuron fails on Safari

The spinner appears but no 'call' request is made to the back end so this is definitely an issue somewhere on the front end.

Info about proposals

In the current design the dapp displays title, proposer id and proposal id.
I think it should display topic, since otherwise a proposal may be given a misleading title may lead me to believe it is for a different topic (and maybe I don't follow anybody for that category).
(And personally, proposer id and proposal id is not useful)

Improve dynamic chunking

We might want to resolve this bundling warning:

[plugin:vite:reporter]
(!) /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/stores/sns.store.ts is dynamically imported by /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/services/neurons.services.ts but also statically imported by /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/components/launchpad/Projects.svelte, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/components/launchpad/Proposals.svelte, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/derived/sns/sns-projects.derived.ts, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/derived/sns/sns-token-symbol-selected.store.ts, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/derived/sns/sns-total-supply-token-amount.derived.ts, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/pages/ProjectDetail.svelte, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/services/$public/sns.services.ts, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/services/sns-finalization.services.ts, /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/services/sns.services.ts, dynamic import will not move module into another chunk.

[plugin:vite:reporter]
(!) /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/identities/ledger.identity.ts is dynamically imported by /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/proxy/icp-ledger.services.proxy.ts but also statically imported by /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/services/icp-ledger.services.ts, dynamic import will not move module into another chunk.

[plugin:vite:reporter]
(!) /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/services/icp-ledger.services.ts is dynamically imported by /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/proxy/icp-ledger.services.proxy.ts but also statically imported by /Users/daviddalbusco/projects/dfinity/nns-dapp/frontend/src/lib/services/neurons.services.ts, dynamic import will not move module into another chunk.

Proposed improvement to voting on the Proposals pane

As of today, when I have lots of open proposals that I want to manually vote on, it is a rather arduous procedure:

  1. Visit the "Voting" pane.
  2. Click on the "Hide ineligible" checkbox.
  3. Click on the first visible proposal, wait for it to load (several seconds).
  4. Scroll down to the bottom.
  5. Click Accept or Reject.
  6. Click that yes, I'm sure.
  7. Wait several seconds.
  8. Press the little "Back" button in the upper left of the window.
  9. Repeat.

My suggestion is to change this page entirely, or allow for an "advanced" voting mode. It would work like this:

  1. "Hide ineligible" is the default.
  2. Every proposal has a disclosure triangle next to it to reveal the whole summary on that same page. This way, I don't have to click anything to read further.
  3. Every proposal has a radio button next to it: yes/no. This allows me to bulk select yes or no for every eligible, open proposal.
  4. At the bottom is a single button "Submit votes", that does not prompt for confirmation. Or maybe it does, but I can mark a checkbox to remove the confirmation in future. It then proceeds to submit my votes, proposal by proposal.

This would allow me to very quickly vote on dozens of proposals without every leaving the proposals page, and without having to wait for network acknowledgement of the vote for each proposal before moving on to vote on the next.

Sub account transactions not showing

The 'TransactionSyncService.syncAccount' function in 'transaction_sync_service.dart' is only ever called with the default account so we are never loading transactions for sub accounts.

Cannot execute transaction using Chrome and Ledger

Hi guys,

Today, I wanted to send my ICP tokens using https://nns.ic0.app to my new Ledger Live account.
I have set up a number of tokens and approved the transaction in Ledger device. From Ledger side, everything looks fine, but in the browser I got an error: "Sorry, there was an error trying to execute the transaction".
Could you help me?

Chrome: Version 119.0.6045.159 (Official Build) (arm64)

ICP_issue

Preload transaction URL

It would be great to be able to open the NNS via a URL with a query string that would preload a transaction. It would be nice to prefill the to address, amount of ICP, and memo field. Then the user would be able to select the account they want to send from and confirm the transaction. This will help with usability.

Example
http://nns.ic0.app/?mode=transfer&to=kdfjljdljalkjdfkldjfjdjfdlj&amount=124.568&memo=45

This query string should survive Internet Identity verification.

Nns Dapp wants to connect to HID Device

Reporting this error from mparikh on forum:
"So I was trying out an innocuous feature on Nns Dapp – Add Hotkey.

After adding and removing an Hotkey, I was trying the Add HotKey function again on Chrome in Ubuntu 20.04.

At that point, I got these two pops.

9319a73178902607962522746902a9c218601622

d84eec2795c7ace71b69b44bd081a5739f3a1deb
I have never connected the ledger wallet to the nns dapp. What gives?
I am unable to reproduce this behavior."

Not able to trace this in context of call stack.

Improvements on the Neurons tab of the nns wallet

Hey guys so I have some requests/feedback for the neurons tab of the nns wallet dapp.

  1. It would be super super awesome to switch from these pill like things to a table format. This way you can know how many neurons you have easily. At the moment I need to count by hand and that does not work with many neurons.
  2. Provide an overall sum of the entire stake. There is no way to currently know how much ICP the user has staked across all neurons. This would help immensely.
  3. Show that staking amount in the ICP tab so one can have a full view of the ICP in their accounts.
  4. Allow toggle between staking end date and amount of dissolve delay.
    2021-10-20_18-36
    Would be nice to show an end date there.
  5. When the neurons tab becomes a table allow sorting it by dissolve delay, stake, maturity etc. This will be immensely helpful to manage one's neurons.
  6. Allow translation of maturity to ICP you can claim in the maturity tab
    2021-10-20_18-39
  7. Show the neuron's age bonus.

Improve accuracy of calculation for total voting power

Problem: It appears that stake, age bonus, dissolve delay bonus, and voting power are all displayed with 2 decimal places. However, the actual calculation is based on a lot more decimal places. Hence, a manual calculation based on the parameters on display does not equal to the voting power that is displayed. In the example below, the manually calculated value is 6342.49 and the displayed value is 6324.62, which is a discrepancy of 23.94 votes. This was enough for the end user who provided this screen capture to question the accuracy of the calculations.

image

Solution: If the voting power result that is displayed is going to have 6 significant figures as shown in the screen capture, then the age bonus and the dissolve delay bonus need to be shown with 6 significant figures as well. Alternatively, if age bonus and dissolve delay bonus are going to be displayed with 3 significant digits, then the voting power result should also have only 3 significant figures. From a more practical perspective, you could display 4 decimal places for age bonus and dissolve delay bonus. Then the rounding discrepancies would only be evident in the largest neurons.

Ability to merge neurons

I noticed there's a new button to split neurons.

If there could be an analogous button to merge neurons, that would make neuron management much easier for users. Especially because a bunch of neurons were probably spawned by users prior to the release of the "merge maturity" feature a couple months ago.

CVE-2022-29078 - Template injection in ejs

Bumps ejs from 3.1.6 to 3.1.8.

Release notes

Sourced from ejs's releases.

v3.1.8

Version 3.1.8

v3.1.7

Version 3.1.7

Commits

imhunterandwill resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @imhunterandrebase.


imhunterand commands and options

You can trigger imhunterand actions by commenting on this PR:

You can disable automated security fix PRs for this repo from the Security Alerts page.

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.