-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Enable indexing Merkle trees on other SVMs #211
Conversation
This is going to get harry fast through. Other SVM based networks are going to want to deploy metaplex and if we have to adjust the code each time to support its going stifle adoption. I think we need to look at this more at the validator level and having adjustments made for ALT-SVM to have overrides that they can manage for deploying and upgrading programs from mainnet without having to change the address every time. |
If Metaplex is deploying Bubblegum on another SVM, we would deploy mpl-account-compression and mpl-noop as well, and to the same addresses that we plan to use for Eclipse. I agree this would be a headache if we had to keep using new addresses for other SVM networks. But I don't see why that would be the case after this deployment. Also, if SVM teams can deploy and upgrade programs without having to change the address, it means they can deploy without needing the private key for program address. Wouldn't that break trust assumptions of what the SVM provides in terms of account security and decentralization? I think immutable SPL programs like spl-token might be able to be considered a required base layer, but for mutable programs (SPL or otherwise), someone has to be on the hook for security and maintenance in general, and it should be the team that owns the program. But they should not be expected to maintain a program on an SVM they didn't agree to support. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it necessary to make this change now, given that the noop program is referenced during transaction execution? As long as the instruction data allows, SVM chains could deploy the noop program once, and as long as it’s not upgraded, it should remain usable.
In the future, if an upgrade to the program becomes necessary and mpl-noop is in use, the transaction program address would update, allowing us to handle both scenarios as needed on a per-transaction basis.
For now, I’d like to test if spl-noop can work as it is on mainnet, deployed under a single address without access to update authority. If the goal is to establish flows for protocol teams to deploy to multiple networks under a consistent address, then Metaplex could manage bubblegum while Solana Labs manages spl-noop.
It depends if the network is running under an authority for say SPE or closed network alt-svm where a mod to upgrade program is deployed to only let a specific address deploy. However, overall agree that a public key should represent a private key and if they are able to be overriden then trust assumption start to fall apart. As I said in my previous comment I think its more on improving program deployment workflows to accommodate launching to multiple networks. |
I think it would be pretty onerous to have to ask Solana Labs to deploy Noop on every SVM we would have to deploy to. They don't have a strong incentive to support other SVMs. In general they have gone the direction of self-CPI for all logging, and spl account compression doesn't see much non-bubblegum use so I think it makes sense to consolidate these under the same authority umbrella. |
We also need spl-account-compression for Bubblegum to work, and that is the one that is more worrisome than spl-noop, as we do expect that to need periodic updates including potential security hotfixes. If an upgrade to either noop or account-compression is needed, and at that point we pivot to the MPL programs, we would also still need to fix the SPL versions for compatibility with existing trees. Solana has firmly said to us they do not want to deploy and manage spl-noop and spl-account-compression on other SVMs, and they recommended we fork the programs. And Metaplex does want be able to deploy uniform updates across SVMs, maintaining ownership for the quality and security of Bubblegum everywhere it is deployed. |
* Update to Solana 1.18 * Add Bubblegum parsing for mpl-account-compression trees * Refactor and update docker prepare script * Suppress warning on use of Borsh 0.10 usage * Move common functionality to helpers * Download Bubblegum from devnet * Add integration test for transferring an mpl-account-compression asset
Notes
Other changes
Testing
Test results