-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Chain Extension Suite #2047
Chain Extension Suite #2047
Conversation
CLA Assistant Lite bot All contributors have signed the CLA ✍️ ✅ |
I have read and hereby sign the Contributor License Agreement. |
Thanks @deep-ink-ventures for the application. The suite would be nice to have, but I will say though that the cost seems pretty high to me, especially considering that we've already paid out 200k to your team for various grants. Did you already try getting treasury funding for this? Since your referendum passed for the hookpoints-cli perhaps the community would be willing to fund this project as well. |
Thanks for the Feedback. We are confused about the nature of this grant structure: Our understanding was that the w3f grant program is for bringing infrastructure, libraries and other reusable building blocks to the polkadot / substrate ecosystem - which is why we thought this is a good fit. Especially because it's unrelated to Genesis Dao and we can keep the things in separate lanes. Isn't that the case anymore and everything should be go to opengov and if so what kind of grants are you looking for. Whenever we notice things that are lacking or where we struggled with because of missing tooling, we try to conceptualize it as abstract as possible and to find a solution that helps the ecosystem and this is what we have done here as well. |
Thanks for your response @deep-ink-ventures. The grants program has mostly focused on early-stage PoCs for common-good software development and research, which does include infrastructure, libraries, and other building blocks. That being said, there have been some recent changes within W3F, and the grants program will likely be changing a bit in the coming future. At this time, we don't have a lot of information yet, but hopefully we will learn more in the coming weeks. In the meantime, it is just the price tag that I am debating here. In my opinion it is rather expensive. We also expect well-established teams to have other revenue sources and not rely solely on grants. Not that this necessarily applies to your team, I'm just stating our policy. |
Got ya. Are you up for a quick call to see if there's room for either a smaller price tag or a bigger scope? |
@deep-ink-ventures sure thing, feel free to book a slot: https://calendar.app.google/osmD7mQtxyHoBr6o8 |
Booked :) |
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.
@deep-ink-ventures I added a couple of inline-comments. Feel free to have a look.
| **0c.**| Testing Guide | A detailed guide on how to run the test suites for the CLI Extension tool and a demonstration of the testing coverage. | | ||
| **1.** | CLI Extension Tool - Part 1: Setup | Establishing the CLI tool to inspect the Substrate runtime and enable code generation capabilities. | | ||
| **2.** | CLI Extension Tool - Part 2: Substrate-side Chain Extensions Generation | Auto-generation of the Substrate-side chain extension code based on the inspected runtime methods. | | ||
| **3.** | CLI Extension Tool - Part 3: ink!-side Chain Extension Traits Generation | Auto-generation of ink!-side chain extension traits to facilitate communication with the generated Substrate-side chain extensions. | | ||
| **4.** | CLI Extension Tool - Part 4: Reference Smart Contract Generation | Generation of a reference smart contract in ink! that interacts with the generated chain extension traits and Substrate-side chain extensions. | | ||
| **5.** | Medium Article | A Medium article detailing and announcing the CLI Extension tool, explaining how it simplifies the generation of chain extensions and enhances the developer experience within the Substrate ecosystem. | |
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.
| **0c.**| Testing Guide | A detailed guide on how to run the test suites for the CLI Extension tool and a demonstration of the testing coverage. | | |
| **1.** | CLI Extension Tool - Part 1: Setup | Establishing the CLI tool to inspect the Substrate runtime and enable code generation capabilities. | | |
| **2.** | CLI Extension Tool - Part 2: Substrate-side Chain Extensions Generation | Auto-generation of the Substrate-side chain extension code based on the inspected runtime methods. | | |
| **3.** | CLI Extension Tool - Part 3: ink!-side Chain Extension Traits Generation | Auto-generation of ink!-side chain extension traits to facilitate communication with the generated Substrate-side chain extensions. | | |
| **4.** | CLI Extension Tool - Part 4: Reference Smart Contract Generation | Generation of a reference smart contract in ink! that interacts with the generated chain extension traits and Substrate-side chain extensions. | | |
| **5.** | Medium Article | A Medium article detailing and announcing the CLI Extension tool, explaining how it simplifies the generation of chain extensions and enhances the developer experience within the Substrate ecosystem. | | |
| **0c.**| Testing Guide | A detailed guide on how to run the test suites for the CLI Extension tool and a demonstration of the testing coverage. | | |
| **0d.** | Medium Article | A Medium article detailing and announcing the CLI Extension tool, explaining how it simplifies the generation of chain extensions and enhances the developer experience within the Substrate ecosystem. | | |
| **1.** | CLI Extension Tool - Part 1: Setup | Establishing the CLI tool to inspect the Substrate runtime and enable code generation capabilities. | | |
| **2.** | CLI Extension Tool - Part 2: Substrate-side Chain Extensions Generation | Auto-generation of the Substrate-side chain extension code based on the inspected runtime methods. | | |
| **3.** | CLI Extension Tool - Part 3: ink!-side Chain Extension Traits Generation | Auto-generation of ink!-side chain extension traits to facilitate communication with the generated Substrate-side chain extensions. | | |
| **4.** | CLI Extension Tool - Part 4: Reference Smart Contract Generation | Generation of a reference smart contract in ink! that interacts with the generated chain extension traits and Substrate-side chain extensions. | |
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.
Just moving up the Article to the usually mandatory default deliveries here
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.
My thoughts here:
- Will there be any limitations on which pallets are supported by the CLI? Can they be used for any pallet, for any attribute/function/trait/etc.?
- I think you can skip the CLI Extension Tool - Part 1: Setup delivery, as this essentially only describe a CLI tool with very unclearly scoped "code generation capabilities". In any way, the further 3 deliverables cover the same CLI tool.
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.
Will there be any limitations on which pallets are supported by the CLI? Can they be used for any pallet, for any attribute/function/trait/etc.?
The idea is to work with the introspection that is e.g. used by polkadot.js.org and autogenerate contracts based on this. This may prove to be to complicated for some extrinsic, but we should be able to provide boilerplate code that eases development work, which is our main goal.
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.
The idea is to work with the introspection that is e.g. used by polkadot.js.org and autogenerate contracts based on this. This may prove to be to complicated for some extrinsic, but we should be able to provide boilerplate code that eases development work, which is our main goal.
So in other words, the CLI would be usable for any extrinsic in any pallet, except for some unexpected edge cases that might arise, right?
## Team | ||
|
||
### Contact | ||
|
||
- **Contact Name:** Jakob Drzazga | ||
- **Contact Email:** [email protected] |
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.
Despite having 3 FTE, there is only 1 contact/team member listed. Could you list the 2 remaining members?
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.
Just one quick comment from me: I would be interested in learning more about your future plans with this project and if you already have considered treasury funding for this?
As discussed with @keeganquigley we changed the grant to be a Level II proposal and splitting the functionality where it made sense to still have usable software from day 1. Happy to hear your thoughts! Changes:
|
@keeganquigley Did you have time to take a look? |
| **0a.**| License | Apache 2.0 | | ||
| **0b.**| Documentation | Comprehensive documentation covering the CLI Extension tool, its features, and how to use it for generating chain extensions. | | ||
| **0c.**| Testing Guide | A detailed guide on how to run the test suites for the CLI Extension tool and a demonstration of the testing coverage. | | ||
| **1.** | CLI Extension Tool - Part 1: Setup | Establishing the CLI tool to inspect the Substrate runtime and enable code generation capabilities. | |
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.
This deliverable is too vague - it seems like 2-4 already include everything that is specified here. I suggest to either be more specific (if my assumption is wrong) or remove this deliverable.
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.
I'm not sure what you mean here. I've split up the part into four different parts: Architecture, substrate integration, ink integration and code generation. What do you think I'm missing?
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.
You should think of deliverables as parts of a milestone, that you're going to deliver, rather than the specific steps you have to take to complete a milestone. If I understand correctly, the deliverables 1-4 are all about developing a CLI tool, and deliverable 1 seems to overlap with 2-4, since it basically describes the bootstrap process.
| **2.** | CLI Extension Tool - Part 2: Substrate-side Chain Extensions Generation | Auto-generation of the Substrate-side chain extension code based on the inspected runtime methods. | | ||
| **3.** | CLI Extension Tool - Part 3: ink!-side Chain Extension Traits Generation | Auto-generation of ink!-side chain extension traits to facilitate communication with the generated Substrate-side chain extensions. | | ||
| **4.** | CLI Extension Tool - Part 4: Reference Smart Contract Generation | Generation of a reference smart contract in ink! that interacts with the generated chain extension traits and Substrate-side chain extensions. | | ||
| **5.** | Medium Article | A Medium article detailing and announcing the CLI Extension tool, explaining how it simplifies the generation of chain extensions and enhances the developer experience within the Substrate ecosystem. | |
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.
Could you move this up to the mandatory deliverables? Also, could you include the mandatory docker deliverable?
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.
I'm not sure I can follow. Aren't those all mandatory? Also, this is a CLI tool, there is no use of docker - what should I add here?
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.
You can find the mandatory deliverables in the application template.
The main reasons we usually require a Docker deliverable is to simplify the testing process and avoid potential dependency & operating system mismatches. If you think that's not applicable in your case, you can just add a comment instead, explaining why you won't add the Docker deliverable.
| **0c.**| Testing Guide | A detailed guide on how to run the test suites for the CLI Extension tool and a demonstration of the testing coverage. | | ||
| **1.** | CLI Extension Tool - Part 1: Setup | Establishing the CLI tool to inspect the Substrate runtime and enable code generation capabilities. | | ||
| **2.** | CLI Extension Tool - Part 2: Substrate-side Chain Extensions Generation | Auto-generation of the Substrate-side chain extension code based on the inspected runtime methods. | | ||
| **3.** | CLI Extension Tool - Part 3: ink!-side Chain Extension Traits Generation | Auto-generation of ink!-side chain extension traits to facilitate communication with the generated Substrate-side chain extensions. | | ||
| **4.** | CLI Extension Tool - Part 4: Reference Smart Contract Generation | Generation of a reference smart contract in ink! that interacts with the generated chain extension traits and Substrate-side chain extensions. | | ||
| **5.** | Medium Article | A Medium article detailing and announcing the CLI Extension tool, explaining how it simplifies the generation of chain extensions and enhances the developer experience within the Substrate ecosystem. | |
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.
The idea is to work with the introspection that is e.g. used by polkadot.js.org and autogenerate contracts based on this. This may prove to be to complicated for some extrinsic, but we should be able to provide boilerplate code that eases development work, which is our main goal.
So in other words, the CLI would be usable for any extrinsic in any pallet, except for some unexpected edge cases that might arise, right?
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.
@deep-ink-ventures besides the new inline comments I added, could you address the points I made earlier, regarding:
Additional points & questions:
- I suggest to stick with
pallet_nfts_extensions
(plural) rather thanpallet_nft_extensions
for consistency with the naming of the relatedpallet_nfts
pallet - While I think this would be a useful tool and the proposal has been improving as well, I was also wondering if you have considered funding through the treasury or the decentralised futures program, as also asked by my colleague earlier.
Hi @deep-ink-ventures are you intending to make further changes to address the above comments? |
Yep. We had corona running the team, will update by eow! |
Co-authored-by: S E R A Y A <[email protected]>
Co-authored-by: S E R A Y A <[email protected]>
Co-authored-by: S E R A Y A <[email protected]>
Co-authored-by: S E R A Y A <[email protected]>
Went through it, but didn't get all questions and asked for more details. |
@deep-ink-ventures I added follow-up comments. LMK if you have further questions. |
Co-authored-by: S E R A Y A <[email protected]>
@deep-ink-ventures, are you still planning to submit changes? It seems as if there are still some open questions to be addressed. |
Yes! One of our rust devs is getting at this, but he came back from xmas vacation with a cold. We'll finish it this week! |
pinging @deep-ink-ventures |
Hey Sebastian, thanks for pinging again. I'm closing it for now so you have it from your list and then we'll reopen it. We are currently in talks with some projects that might want to use it and this might a) give a better argument on why approving this grant and b) might alter the requirements a bit. |
Project Abstract
Our project focuses on bridging the gap between the Substrate runtime and smart contracts in ink! through the development of the Chain Extension Suite. The primary objective is to automate and streamline the process of exposing runtime methods to smart contracts, addressing the challenges developers face due to the intricacies of low-level communication. The Chain Extension Suite, accompanied by an auto-generating CLI tool, is crafted to simplify this process, reduce boilerplate code, and accelerate the development cycle.
Grant level
Application Checklist
chain-extension-suite.md
).