You can set custom URLs via the configuration for any self-hosted Jupiter APIs, like the V6 Swap API or Paid Hosted APIs Here is an example:
NEXT_PUBLIC_JUPTER_SWAP_API_ENDPOINT=https://quote-api.jup.ag/v6
Home Page: https://realms.today
License: Apache License 2.0
You can set custom URLs via the configuration for any self-hosted Jupiter APIs, like the V6 Swap API or Paid Hosted APIs Here is an example:
NEXT_PUBLIC_JUPTER_SWAP_API_ENDPOINT=https://quote-api.jup.ag/v6
One valuable feature would be to mint options with https://github.com/mithraiclabs/psyoptions to grant to proposals or new dao contributors.
The issue seems to be caused by https://github.com/blockworks-foundation/governance-ui/pull/76
When an owner of governance tokens deposits tokens into the DAO and then subsequently disposes the token account then Withdraw
would not work
Check for governance token account existence for the current wallet and if not found then create ATA when the tokens are withdrawn
hi guys we have a collection of 111 NFTS used for governance. i have it set to 51% which uses the total collection size. my question:
Is it possible to be set at 51% of those who voted. so ie : if only 100 votes, to pass it would need 51 of those votes as opposed to the 57 needed when using the entire collection. if so how would i go about setting this up? thanks
to reproduce -
Two weeks ago I was able to add a token treasury to a DAO, where the UI asked for the type of treasury (SOL, Token, or NFT) and the token mint address. This seems to no longer be an option and only SOL treasuries can be added. If I refresh the "Create new DAO wallet" page (https://realms.today/dao/YOUR_DAO_ADDRESS/treasury/new) the type dropdown and mint address textboxes appear briefly until they disappear about 7 seconds later.
I see no errors in the browser console, only the text:
Program version (simulation) {major: 2, minor: 2, patch: 4}
refresh
I have also ensured that I have deposited more tokens than the value set for "Min community tokens to create governance".
I have tested this on devnet and mainnet.
Can anybody explain what this verified collection ID that is needed for the nft voting plugin? my cmv2 minted collection is verified and the metadata supports this verified = 1, but i dont see this verified ID as shown in the docs. creator id, cm id, update authority etc yes... can anyone please tell me where i can find this or where / how to create.. thanks
@emotion/babel-preset-css-prop
appears unused, removing it doesn't break the build, which it would if it were an essential build/compilation dependencyidentity-obj-proxy
appears unused"@metaplex/js" "^4.2.1"
appears to be unused."@project-serum/borsh": "^0.2.2"
appears to be unused.
dependency
or peerDependency
of said package.@project-serum/common
appears to be redundant with Anchor ?@project-serum/sol-wallet-adapter
shouldn't be needed, it's only used to provide a Wallet
or SigneWalletAdapter
type..moment
is bloated, inneficient & ~outdated, ideally should be replaced by modern, lightweight alternatives such as date-fns
, or day.js
/ luxon
, if native Intl
API is insufficientnode-fetch
is only used for a single script, can trivially be removed in favor of native http.request
utility functionreact-portal
can be removed in favor of React's native portal API.ts-node
& tsconfig-paths
are properly unnecessarySolana's network has been dropping transactions left and right these days. When submitting a proposal that is split into more than one transaction often times the create proposal TX may make it through, but the insert tx/instruction to the proposal fails.
The create proposal code should help recover or use these accounts.
There are a few places where the code checks that a treasury account has both a mint
and a token
. These are sometimes not true for native treasury accounts. One example of this is native accounts aren't included in the total treasury balance.
I have created a token with the default of 9 decimals and the largest value I can enter to mint in the UI is 9007199, which lines up with JavaScript Number.MAX_SAFE_INTEGER (9007199254740991) assuming 9 digits that represent the decimals are then added. In other words, 9007199000000000 works, but 9007200000000000 does not.
When I press Preview instruction I get
Can't simulate transaction
The instruction is invalid
if you share a proposal URL on social platforms, the link preview doesn't show any information
this is assumably because the parsers either do not load javascript, or they do but don't wait for the data to load from RPCs
> curl -sNL https://dao-beta.mango.markets/dao/MNGO/proposal/AgwjETY7YNSZHara17PFSkN6DPWcefiEe5RYQoo5VNL8 | xmllint --html --xpath "/html/head/meta[starts-with(@property, 'og:')]" -
<meta property="og:type" content="website"><meta property="og:title" content="Solana Governance"><meta property="og:description" content="Discuss and vote on Solana Governance proposals.">
consider loading RPC data server-side from next/vercel (especially if it's a crawler user-agent) to enable rich previews
User supplies program id, governance automatically detects idl and generates remaining form based on it.
User should have an interface be able to release all unrelinquished votes
Example:
https://realms-explorer.com/#/member/EZLvwGdGyeks3jQLWeBbjL1uGeGbqb2MYU4157pDP9ch
When a new proposal is created and DAO uses different approval quorums then it's not obvious which one is going to be used.
Show the selected quorum when proposal is created
The governance notifier is currently using the public RPC endpoint and is being rate limited on the getProgramAccounts instruction.
There is no retry logic when this happens the data it uses is incomplete. I think it either needs to implement retry or throttling behaviour, or use a different endpoint.
Unexpected response {"jsonrpc":"2.0","error":{"code":429,"message":"Too requests for a specific RPC call, contact your app developer or [email protected]."},"id":1}
-- countJustOpenedForVoting: 0, countVotingNotStartedYet: 19, countClosed: 43
-- countJustOpenedForVoting: 0, countVotingNotStartedYet: 20, countClosed: 45
-- countJustOpenedForVoting: 0, countVotingNotStartedYet: 20, countClosed: 45
https://realms.today/dao/HymmUoabLo1sB8nTENxSFz1bAmobMJyGQoXqyXZ9FySB/treasury?cluster=devnet
If you click on any of the recent transactions
it will take you to a mainnet beta explorer link instead of a devnet one.
"Deploy the example using Vercel:" failing
Problem:
Governance DAO metadata is currently added to a json file to show up on the realms deployed UI.
This is not scalable and if DAOs ever get popular on Solana this will be a major time sink. Case in point: the unscalable token-list.
Solution:
Token list is making its way on chain for metadata. Governance Metadata should be on chain as well. Governance metadata should be created like the token metadata. Token metadata is a PDA off of the mint that the mint authority is required to initially create it. In it has the fields needed for metadata:
{
"name": "USD Coin",
"symbol": "USDC",
"description": "Fully reserved fiat-backed stablecoin created by Circle.",
"image": "https://www.circle.com/hs-fs/hubfs/sundaes/USDC.png?width=540&height=540&name=USDC.png"
}
Governance metadata should be a PDA off of the realm address or equivalent to mint, and store just the same information:
{
"symbol": "BD",
"displayName": "Bland DAO",
"programId": "GovER5Lthms3bLBqWub97yVrMmEogzX7xNjdXpPPCVZw",
"realmId": "DMTkorwRhKbPGioE5kr1BHDBEcwFSUepyuz66ro3MQXU",
"website": "https://website.land",
"twitter": "@twitterhandle",
"ogImage": "www.logo.png"
}
Let's kill this problem before it becomes a huge problem.
Right now when a proposal is created it only links to a confirmation on solana explorer.
Would be a huge time saver if it also linked to the proposal that was created too.
with-typescript-eslint-jest
.
@solana/governance-ui
@erikdstock
MIT
tc
script is not explicit, prefer typecheck:watch
or remove if not really usedtype-check
script would be less confusing to type imo if it were named typecheck
test-all
script name is misleading, could be validate
So I'm getting a broken programID reference on my new devnet realm:
https://solana-labs.github.io/oyster-gov/#/realm/2VckEenCkkRSRik2ZpNkJN9YjcZke91nbCajYkgP5M9o?programId=undefined
I'd like to question why the MVP link is even needed at this point. I guess I need some clarification on the future of the oyster implementation, whether we're going to continue to rely on it.
It's important to know what actually changes for these instructions and we should highlight the diff in proposal instruction details
This workflow would required the concept of a meta-instruction.
The user should be able specify all budget parameters in one form:
This would result in a series of Instructions:
This happens when a manual reload is done (devnet toggle switch), pressing F5, etc. Another possible edge case could happen when switching to different wallets.
Create error boundary to show error details blockworks-foundation/mango-ui-v3@cd49edd
I have this error when i want to see the members of our DAO https://realms.today/dao/$OXSQ/members
Something went wrong.
Number can only safely store up to 53 bits
Refresh and try again
Error: Number can only safely store up to 53 bits at o (https://realms.today/_next/static/chunks/pages/_app-1ad73622216274f4.js:327:4312959) at r.toNumber (https://realms.today/_next/static/chunks/pages/_app-1ad73622216274f4.js:327:4318821) at https://realms.today/_next/static/chunks/pages/dao/%5Bsymbol%5D/members-54a351bb8988a2a8.js:1:13801 at Array.sort () at https://realms.today/_next/static/chunks/pages/dao/%5Bsymbol%5D/members-54a351bb8988a2a8.js:1:13757 at Object.To [as useMemo] (https://realms.today/_next/static/chunks/framework-79bce4a3a540b080.js:1:64150) at t.useMemo
The number of decimals in the token supply * the decimals cannot exceed 16, else it throws an error Number can only safely store up to 53 bits
For example, create a community mint with the default 9 decimals, then mint 10_000_000 tokens.
pages/realms/new.tsx:152:
const handleCommunityMint = async (mintId) => {
handleSetForm({
communityMintId: mintId,
communityMint: undefined,
})
try {
const mintPublicKey = new PublicKey(mintId)
const mint = await tryGetMint(connection.current, mintPublicKey)
console.log("tryGetMint");
if (mint) {
console.log("mint!.account.supply", mint!.account.supply);
const supply = mint!.account.supply.toNumber()
try {
const supply = mint!.account.supply.toNumber()
} catch (e) {
console.log('failed to get mint supply', e)
}
```
I'm not sure the best way to resolve this. Maybe leaving supply as a BN will do the trick, will have to trace the code and see how many changes are needed.
Selecting a wallet other than Phantom does not update the wallet icon:
You can see the icon and the wallet [Solflare], do not match:
Steps to reproduce the behavior:
Expected behavior
The icon should match the wallet.
It's currently possible to create a draft proposal but then there is no way to Sign it off without using Realm Explorer
Make it possible to Sign off draft proposal (based on the Realm Explorer
code).
The Sing Off
button should be located in the Vote panel
When a proposal to upgrade a program is created but not voted on then the SOL used for its rent should be easily recoverable
Create UI logic to find all outstanding buffer and create a proposal to close them similarly to solana program close -buffer
There are a few workflows that require creating a new governance from the UI.
One example would be the recent vote I created to establish a program update council: https://dao-beta.mango.markets/dao/MNGO/proposal/GqowP2B2ZaACxrhUy2nAq7Hem4ZoN5HNtb4zpgRfzF8r
Here are the steps I went through to set this up:
From now on we can vote on program updates using the council mint.
When contributing to this repo the linting checks don't seem to be the same when making a commit vs pushing. For example, a commit can be made but won't be allowed to be pushed. This could be due to things like unused variables or imports. Both linting checks should be the same so that extra commits aren't made.
(devnet) When creating a proposal to send a token from a treasury (NFT or else), the "Propose" button stays greyed out even though I have both council and community tokens deposited.
The function canUseGovernanceForInstruction
doesn't seem to be returning the right boolean from checking if I have the required tokens or not. Changing to hardcoded return true
enables the Propose button and I'm able to create and execute proposals. Link to code.
I'm trying to a full governance UI run through on devnet and running into some weird state issues. I'm using a mint from devnet to create a Treasury account, but the request for the AccountInfo returns null because it is connecting to the mainnet RPC url. Yet the cluster query string param is set to devnet and you can see the devnet toggle is also set.
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.