Skip to content
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

Openbrush follow-up grant application #621

Merged
merged 3 commits into from
Oct 20, 2021
Merged

Conversation

0xMarkian
Copy link
Contributor

@0xMarkian 0xMarkian commented Sep 21, 2021

Project Abstract

The mission of this project is to make ink! usable and facilitate WASM ecosystem adoption.

To be successful with this mission, we have outlined several steps that would need to be taken.

  1. OpenBrush is a library for secure smart contract development on ink!, same as
    OpenZeppelin on Ethereum.
  2. OpenBrush should serve as a starting point for every developer entering a Polkadot(ink!) ecosystem.
  3. In addition to having a standard implementation, Openbrush should also have macroses to simplify and abstract up applications(smart contracts) development.
  4. For Openbrush to fulfill its purpose, several changes must be made & several blockers to be overcome in ink! and in Substrate's pallet-contracts. We are committed to doing that in the context of this project.

It is an application for a follow-up grant. The initial grant covered the first and second milestones:

This grant aims to cover milestones 3-6.

For which grant level are you applying?

  • Level 1: Up to $10,000, 2 approvals
  • Level 2: Up to $50,000, 3 approvals
  • Level 3: Unlimited, 5 approvals (for > $100k Web3 Foundation Council approval)

Application Checklist

  • The application template has been copied, renamed ( project_name.md) and updated.
  • A BTC or Ethereum (DAI/USDT) address for the payment of the milestones is provided inside the application.
  • I have read and acknowledged the terms and conditions.
  • The software delivered for this grant will be released under an open-source license specified in the application.
  • The initial PR contains only one commit (squash and force-push if needed).
  • The grant will only be announced once the first milestone has been accepted.

@CLAassistant
Copy link

CLAassistant commented Sep 21, 2021

CLA assistant check
All committers have signed the CLA.

@semuelle
Copy link
Member

Thanks for the application. I'm happy to see OpenBrush moving forward. We will look into it as soon as possible.

@mmagician
Copy link
Contributor

@cmichi Please have a look at your convenience.

@semuelle semuelle self-assigned this Sep 28, 2021
| 0a. | License | MIT |
| 0b. | Documentation | We will provide inline documentation, example of upgradable contracts. |
| 0c. | Testing Guide | We will add tests to cover upgradability of contracts. |
| 1. | Implement delegated call | We will find and provide the idea of how [delegeted call](https://docs.soliditylang.org/en/v0.4.21/introduction-to-smart-contracts.html#delegatecall-callcode-and-libraries) can be implemented in `contract-pallet`. Help with it's implementation. |
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is the delegatecall needed for upgrade ability? AFAIK it is only needed for library contracts which are not relevant here. Correct me if I am wrong. I was under the impression that paritytech/substrate#8909 implemented everything needed for upgradeable contracts.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea of an upgradeable contract in Solidity, that you will execute the code of another contract in the context of the current contract(you will affect the storage of the current contract by the code of callee contract).

This change doesn't allow that. It allows only to call another without the ability to return back by the TAIL_CALL flag.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I know what delegatecall is. I just didn't know it was used for upgradeability. But it makes sense I guess. But you need to make sure that the new version does not change the storage layout, right?

Copy link
Contributor

@xgreenx xgreenx Oct 4, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, the developer of the upgradable contract must worry about layout. We will create a list of rules that the developer must follow in order not to break the layout. OpenZeppelin did the same for solidity. Also, our library will provide the implementation of standards in upgradable form too.

@mmagician
Copy link
Contributor

@xgreenx After a brief discussion internally, I would suggest that for now you remove milestone 6 from your deliverables, as this overlaps with the ink! team's roadmap, and could already be implemented by the time you get around to M6. Should it not happen by the time you finish the grant, we will be happy to award a follow-up to work on it. How does that sound?

@xgreenx
Copy link
Contributor

xgreenx commented Oct 14, 2021

@xgreenx After a brief discussion internally, I would suggest that for now you remove milestone 6 from your deliverables, as this overlaps with the ink! team's roadmap, and could already be implemented by the time you get around to M6. Should it not happen by the time you finish the grant, we will be happy to award a follow-up to work on it. How does that sound?

It sounds good for us:) Does ink! team plan to implement all points from the milestone, or only 1 and 2?

@mmagician
Copy link
Contributor

I'm not 100% sure at this stage, I guess we'll find out once we get there :)
If you're happy to go ahead, then let me know once you've updated the scope of the application and I'll share with the rest of the grants team - but given that it has a go-ahead from ink! team it should be straightforward.

@xgreenx
Copy link
Contributor

xgreenx commented Oct 19, 2021

Done=) Later we will create a grant related to upgradability. Based on the results from ink! and substrate team we will define the scope of that grant.

@semuelle
Copy link
Member

Thanks for the update, @xgreenx. Two more questions:

  • What is the difference between the existing PSP-22 and deliverable 4.1 (Create Proposal for Fungible token)?
  • Could you list the (possible) extensions mentioned in deliverable 4.2? I assume you mean Mintable, Pausable, etc.?

@xgreenx
Copy link
Contributor

xgreenx commented Oct 19, 2021

  • What is the difference between the existing PSP-22 and deliverable 4.1 (Create Proposal for Fungible token)?

We already have started the process of creation of standards for tokens, because it takes time for approval from the community=)
PSP22 is one of them. After approve of it, we will create a PSP for NFT and Multi token.

  • Could you list the (possible) extensions mentioned in deliverable 4.2? I assume you mean Mintable, Pausable, etc.?

If you want, I can put all of them into the milestone, but it will take a lot of rows=)
Implement these extensions:
ERC20Burnable
ERC20Wrapper
TokenTimelock
ERC20FlashMint
ERC721Enumerable

Add examples of how the next contracts can be implemented:
ERC20Pausable
ERC20Capped

@semuelle
Copy link
Member

If you want, I can put all of them into the milestone, but it will take a lot of rows

No need to add a deliverable for each of these. I just wanted to make sure we are talking about the same thing. Having them listed here is sufficient for me.

@semuelle semuelle added the ready for review The project is ready to be reviewed by the committee members. label Oct 20, 2021
@semuelle semuelle requested a review from Noc2 October 20, 2021 11:07
@Noc2 Noc2 merged commit 4504d11 into w3f:master Oct 20, 2021
@github-actions
Copy link
Contributor

Congratulations and welcome to the Web3 Foundation Grants Program! Please refer to our Milestone Delivery repository for instructions on how to submit milestones and invoices, our FAQ for frequently asked questions and the support section of our README for more ways to find answers to your questions.

Before you start, take a moment to read through our announcement guidelines for all communications related to the grant or make them known to the right person in your organisation. In particular, please don't announce the grant publicly before at least the first milestone of your project has been approved. At that point or shortly before, you can get in touch with us at grantsPR@web3.foundation and we'll be happy to collaborate on an announcement about the work you’re doing.

Lastly, please remember to let us know in case you run into any delays or deviate from the deliverables in your application. You can either leave a comment here or directly request to amend your application via PR. We wish you luck with your project! 🚀

@semuelle
Copy link
Member

Hey @0xMarkian & @xgreenx, can I ask what the status of M5 and related issues is? Is this still on the roadmap? I remember vaguely seeing it discussed somewhere on here, but can't find it anymore.

@xgreenx
Copy link
Contributor

xgreenx commented May 12, 2023

I also can't find where we discuss it=) Maybe in the old element.
Milestone 5 is ready. It seems we forgot to deliver it.

  • Contribute to ink! with fixing of events- ink! teams decided to fix it internally without our help we only participated in the issue.
  • Re-work the storage of contracts - Is done and merged.
  • Refactor of implementation according changes in ink! - Also is done via a bunch of PRs.

I think we need to create a delivery report.

@semuelle
Copy link
Member

I think we need to create a delivery report.

That would be great. Thanks!

@keeganquigley
Copy link
Contributor

Thanks @xgreenx does your team still plan on submitting a delivery report?

@Artemka374
Copy link

Hey! This milestone was created as a part of Supercolony's work, so we are not sure that we can deliver it as a part of Brushfam. Is it a problem, and if it is, does there exist some solution to it?

@semuelle
Copy link
Member

semuelle commented Jun 9, 2023

Is it a problem, and if it is, does there exist some solution to it?

That is indeed not so trivial. I'll check with our legal team if we can assign the grant to you. Otherwise, we might have to cancel the old one and sign a new one.

@semuelle
Copy link
Member

@Artemka374 We would need confirmation from SuperColony that they are willing to transfer the grant to Brushfam. Do you think that would be possible?

@0xMarkian
Copy link
Contributor Author

Hey @semuelle, thanks a lot for making the inquiry! However, I believe Brushfam cannot receive compensation for this milestone as it wasn't executed by us, but rather by SuperColony.
That said, we value our relationship and if it will be helpful for w3f Brushfam can do delivery itself.

@semuelle
Copy link
Member

Thanks for the quick reply, @0xMarkian. My question was specifically for the purpose of transferring the grant from SuperColony to BrushFam so that you could deliver and get compensated for it. It would, however, require SuperColony's written approval.

If that fails, of course we'd be happy to review your delivery of M5. I understand that it isn't your responsibility, though, and would be voluntary. I can see that the work was done, so I wouldn't expect you to put more work into it now.

@0xMarkian
Copy link
Contributor Author

Hey, thanks for understanding. Let us know if M5 delivery will be of help for w3f. If so we will do it!

@semuelle
Copy link
Member

From my point of view, OpenBrush is doesn't need our stamp of approval anymore. If you're not reliant on it, we'd simply cancel the last milestone and call it a day.

@0xMarkian
Copy link
Contributor Author

Hey, apologies, missed this message. Yes, sounds good to me!

@Noc2 Noc2 mentioned this pull request Jun 28, 2023
@semuelle
Copy link
Member

Thanks for the straightforward resolution, @0xMarkian. The remaining milestone is officially cancelled.
Looking forward to your next application.

@0xMarkian
Copy link
Contributor Author

Thank you @semuelle !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ready for review The project is ready to be reviewed by the committee members.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants