UI for ic.rocks.
Uses Next.js, react-query, and tailwind.
Create a .env
file:
//API_ENDPOINT = http://localhost:3001 // If specified, will override the default API endpoint.
npm run dev
npm run build
npm start
Analytics and explorer for the DFINITY Internet Computer
Home Page: https://ic.rocks
UI for ic.rocks.
Uses Next.js, react-query, and tailwind.
Create a .env
file:
//API_ENDPOINT = http://localhost:3001 // If specified, will override the default API endpoint.
npm run dev
npm run build
npm start
#25 will give us token transaction history, but we still need a table that shows current ownership. We should also display asset previews if possible.
Token ID | Preview | Owner |
---|---|---|
1 | ๐ | alice |
2 | ๐ฆ | bob |
3 | ๐ | - |
This table should be in a different tab, perhaps called "Token Owners".
The cycles minting canister does not store historical data on cycles minted, so run a sync job to store this number daily.
We should create a new chart to display this data.
Right now, we are running syncing all canisters for all subnets sequentially. We can improve this and sync 5-10 subnets in parallel, in order to have fresher data.
Durations that should be 8 years (eg. this neuron dissolve delay) display as in 7 years
because Luxon's toRelative
rounds down.
This should be replaced with a more precise relative string format, like this one from Axon.
Not seeing how this is implemented. Maybe an explainer in the readme??
The hours should not display 24. Please fix.
Replicate here: https://ic.rocks/transaction/ef3862c8f13791d8cb2b7e0dd2f8da0ad0d7d06a099962e52ecf4a866c9f3ee2
The way we currently show subnet canister count is wrong, since the old controllerId
column has been replaced by a many-to-many controllers table.
We should filter by moduleId is not null
instead
Create a new table or page showing a count of neurons broken down like this:
Dissolving | Non-dissolving | |
---|---|---|
<6 mo | 100 | 200 |
6mo - 1yr | 100 | 200 |
1yr - 2yr | 100 | 200 |
2yr - 3yr | 100 | 200 |
3yr - 4yr | 100 | 200 |
4yr - 8yr | 100 | 200 |
A new API endpoint will need to be added here. All required data should be available for querying and grouping.
Notes:
Some neuron IDs will not be associated with account IDs using this method, but it should be a way to identify 90% of the unassociated neuron account IDs. This method requires that the amount of ICP in the accounts and neurons are unique at the time of analysis and that the neuron account has a minting event. It would be good to run this analysis periodically to increase the hit rate for matches.
There are 3 events that mint ICP by the NNS governance cannister: 1) genesis, 2) node provider payments, 3) voting rewards. Genesis minting happened on May 10, 2021. Node provider payments happen every month and the accounts and neurons that hold those ICP will be identified using this method. Voting rewards are minted every time a neuron owner chooses to either Spawn Neuron or Merge Maturity. Spawn Neuron is an action that creates a new locked neuron with the minted ICP and a 7 day dissolve delay. This action can be performed any time the maturity in the parent neuron represents 1 ICP or more. Once the owner dissolves the child neuron, then ICP can be dispersed into any account of the owner's choice. Merge Maturity is an action that allows the neuron owner to mint ICP directly into the parent neuron account. This action can be performed daily. The ability to Merge Maturity was enabled on Sept 6, 2021.
On the Neurons tab, under Genesis Accounts, add two new columns titled Total Neurons and High DD. Display the total number of neurons in each Genesis Account in the Total Neurons column. Display the total number of neurons in each Genesis Account with a dissolve delay greater than 4 years in the High DD column.
It is ok to reduce the width of the Account column. It is also ok to remove the Next Dissolve Date column if necessary.
Change the ICP column title to Total ICP.
The High DD metric is a signal of long term commitment from seed investors to the IC. All genesis neurons were originally configured with 4 years or less dissolve delay, so any neuron with dissolve delay higher than 4 years can only occur if the neuron owner intentionally increased the dissolve delay.
The current ICP mint and burn charts show absolute changes. We should have a chart showing inflation (mints - burns) that show both absolute numbers and the % change to total supply, for better measuring inflation or deflation.
One approach is to have one chart with 2 y-axes, absolute ICP on left, % change on right. This may require tweaking of the Chart component
Current transactions endpoints: https://github.com/ic-rocks/api/blob/main/routes/transactions.ts
Chart config: https://github.com/ic-rocks/ic-rocks/blob/main/components/ChartsPages/ChartIds.tsx
Hooks that fetch chart data: https://github.com/ic-rocks/ic-rocks/blob/main/lib/hooks/useTransactionCounts.ts
Currently, we calculate each neuron's voting power, instead of saving the returned value from the governance canister. The entity column will need to be created
Plug is not supported since our custom API authentication uses the identity
to sign a message, which Plug does not support yet.
When Plug adds arbitrary signatures, it should added as an authentication method.
On canisters like governance, the list of canister methods is very long.
Methods containers should start out collapsed, and clicking on the header should expand it.
Develop a forensic tool that can query neuron accounts for funding sources for that neuron. When an neuron ID is entered, display all the accounts and sum of ICP that were used to fund that neuron sorted from highest to lowest ICP amount. When a user selects an account in the list, expand to show all transactions that funded the neuron from that account sorted from highest to lowest ICP amount. When a user selects a specific transaction, show all accounts and total ICP that made deposits to that account prior to the transaction sorted from highest to lowest ICP amount. When a user selects an account in the list, expand to show all transactions that funded the account sorted from highest to lowest. Continue this pattern as many times as needed by the user. Allow the user to tag each account they consider to be the funding sources for the neuron. Enable quick return to the original neuron level and indicate what forensic path has already been followed in that session.
Note: It may be best to enable this functionality to users who are logged in to ic rocks. Different people will reach different conclusions as to what accounts originally funded the neuron, so it might make more sense for this to be a custom query with user specific results.
We should save votes for proposals of type Motion
to give more insight into governance participation.
Thus it is not possible to use a Candid UI for its methods.
Similar to Etherscan's contract page, we should have a tab menu to display each of these components, as we will likely continue to add more components to this page.
The blackhole canister can be set as controller to "give up" control. We should give a special label to these blackholed canisters, perhaps in the canister details header.
Currently it is possible to scroll one page at a time or go to end or begin on the transactions and the accounts pages. Add an option for the user to go to a specific page number directly.
Similar to this donut chart, we should have a chart to show this data in addition to the existing tabular data.
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.