diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index b748710cf..08da5f02c 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -3,7 +3,8 @@ - [x] The [milestone-delivery-template.md](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/deliveries/milestone-delivery-template.md) has been copied and updated. - [ ] The [invoice form :pencil:](https://forms.gle/LSRr7PCjBpEbKGh89) has been filled out for this milestone. - [ ] This pull request is being made by the same account as the accepted application. +- [ ] I have disclosed any and all sources of reused code in the submitted repositories and have done my due diligence to meet its license requirements. - [ ] In case of acceptance, the payment will be transferred to the BTC/ETH/fiat account provided in the application. -- [ ] The delivery is according to the [Guidelines for Milestone Deliverables](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md). +- [ ] The delivery is according to the [Guidelines for Milestone Deliverables](https://grants.web3.foundation/docs/Support%20Docs/milestone-deliverables-guidelines). Link to the application pull request: https://github.com/w3f/Grants-Program/pull/XXX < please fill this in with the PR number of your application. diff --git a/.github/workflows/google_sheet_update.yml b/.github/workflows/google_sheet_update.yml index 9b9f093fb..c3d6d9ca0 100644 --- a/.github/workflows/google_sheet_update.yml +++ b/.github/workflows/google_sheet_update.yml @@ -103,13 +103,12 @@ jobs: "${{ steps.parse-delivery.outputs.milestone_number }}", "", "Not Yet", - "=IFERROR(SWITCH(INDIRECT(ADDRESS(ROW(),COLUMN()-1)), \"Not Yet\", 4, \"In Progress\", 3, \"Asked for Changes\", 2, \"Final Check\", 3, \"Final Warning\", 3, \"Done\", 0, \"Terminated\", 0, \"On Hold\", 1))", "=INDEX(Legal!$W$2:$W,MATCH(INDIRECT(CONCATENATE(\"B\", TEXT(ROW(), \"#\"))),Legal!$D$2:$D,0))", "${{ github.event.pull_request.html_url }}", "", "${{ steps.date.outputs.date }}", "", - "=IF(ISNUMBER(INDIRECT(ADDRESS(ROW(),11))),INDIRECT(ADDRESS(ROW(),11))-INDIRECT(ADDRESS(ROW(),10)),\"\")", + "=IF(ISNUMBER(INDIRECT(ADDRESS(ROW(),COLUMN()-1))),INDIRECT(ADDRESS(ROW(),COLUMN()-1))-INDIRECT(ADDRESS(ROW(),COLUMN()-2)),\"\")", "=IF(INDIRECT(ADDRESS(ROW(),5))=\"Done\",VLOOKUP(INDIRECT(ADDRESS(ROW(),2)),Milestones!B:BE,SWITCH(INDIRECT(ADDRESS(ROW(),3)),1,19,2,23,3,27,4,31,5,35,6,39,7,43,8,47,9,51,10,55),FALSE),\"\")", "=IF(INDIRECT(ADDRESS(ROW(),5))=\"Done\",VLOOKUP(INDIRECT(ADDRESS(ROW(),2)),Milestones!B:BE,SWITCH(INDIRECT(ADDRESS(ROW(),3)),1,20,2,24,3,28,4,32,5,36,6,40,7,44,8,48,9,52,10,56),FALSE),\"\")" ]], diff --git a/README.md b/README.md index 42b574039..6cadce297 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,9 @@ ## :mailbox: Milestone Delivery Process -The milestone delivery process is part of the [W3F Grants Program](https://github.com/w3f/Grants-Program). You can find the application process [here](https://github.com/w3f/Grants-Program/blob/master/README.md#pencil-process). +The milestone delivery process is part of the [W3F Grants Program](https://github.com/w3f/Grants-Program). You can find the application process [here](https://grants.web3.foundation/docs/Process/how-to-apply). -:warning: Before you submit a milestone, make sure it complies with our [Guidelines for Milestone Deliverables](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md). +:warning: Before you submit a milestone, make sure it complies with our [Guidelines for Milestone Deliverables](https://grants.web3.foundation/docs/Support%20Docs/milestone-deliverables-guidelines). 1. **Milestone Delivery:** 1. [Fork](https://github.com/w3f/Grant-Milestone-Delivery/fork) this repository with the **same GitHub account** that you used to submit the application (ignore if you applied privately). @@ -26,13 +26,13 @@ The milestone delivery process is part of the [W3F Grants Program](https://githu 5. Fill out the [invoice form](https://forms.gle/LSRr7PCjBpEbKGh89). 6. Create a pull request and fill out the comment template. 2. **Milestone Review:** - 1. [Evaluators](https://github.com/w3f/Grants-Program#team) can (and usually do) issue comments and request changes on the pull request. Their feedback needs to be resolved before your milestone is accepted. + 1. [Evaluators](https://grants.web3.foundation/docs/Introduction/team#w3f-grants-committee) can (and usually do) issue comments and request changes on the pull request. Their feedback needs to be resolved before your milestone is accepted. 2. Grants Evaluators will merge your pull request to accept the delivery. 3. **Milestone Payment:** - 1. The [operations team](https://github.com/w3f/Grants-Program#team) receives a notification once the delivery is accepted. Payments are usually processed within 14 days. + 1. The [operations team](https://grants.web3.foundation/docs/Introduction/team#w3f-operations-team) receives a notification once the delivery is accepted. Payments are usually processed within 14 days. 2. Payment is made to the bank account or Bitcoin, Polkadot, Kusama or Ethereum address specified in the initial application. The exchange rate for BTC depends on the time of payment. -Grant applications can be [amended](https://github.com/w3f/Grants-Program#changes-to-a-grant-after-approval) at any time. However, this _necessitates a reevaluation by the committee_. If your application has been accepted and, during development, you find that your project significantly deviates from the original specification, please open a new pull request that modifies the existing application. +Grant applications can be [amended](https://grants.web3.foundation/docs/Process/changes) at any time. However, this _necessitates a reevaluation by the committee_. If your application has been accepted and, during development, you find that your project significantly deviates from the original specification, please open a new pull request that modifies the existing application. ## :ballot_box_with_check: External Evaluations @@ -51,9 +51,9 @@ As part of the grant program, we allow everyone to participate in the evaluation 2. In the newly created fork, create a **copy** of the evaluation template ([`evaluations/evaluation-template.md`](evaluations/evaluation-template.md)). 3. Name the file `project-name_milestone-number_your-github-username.md`. 4. Fill out the template with the specifics of your evaluation. The higher the quality of your assessment and the level of detail, the higher the KSM recompense. -5. Once you have completed the evaluation, create a pull request in the [W3F Grants Delivery](https://github.com/w3f/Grant-Milestone-Delivery) repo. +5. Once you have completed the evaluation, create a pull request in this repository. 6. Add a comment or review to the pull request that contains the evaluated milestone delivery. This comment should contain a quick summary of your finding as well as link to the milestone submission. -7. Milestone evaluations are double-checked by [W3F Grants Evaluators](https://github.com/w3f/Grants-Program#team). Successful milestone evaluations are merged and the evaluator is rewarded with KSM. +7. Milestone evaluations are double-checked by [W3F Grants Evaluators](https://grants.web3.foundation/docs/Introduction/team#w3f-grants-committee). Successful milestone evaluations are merged and the evaluator is rewarded with KSM. ## :bulb: Help diff --git a/deliveries/Awesome-Polka-1.md b/deliveries/Awesome-Polka-1.md new file mode 100644 index 000000000..55ea1be49 --- /dev/null +++ b/deliveries/Awesome-Polka-1.md @@ -0,0 +1,29 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/tree/master/applications/Awesome-Polka.md +* **Milestone Number:** 1 + +**Context** +This milestone includes the functionality of the public part of the platform and the design of the project owner dashboard, as stated in the contract, normal users and project owners can use the platform. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| **0a.** | License | [MIT](https://github.com/tolgayayci/awesome-polka/blob/dev/LICENSE) | License Added to All Branches | +| **0b.** | Documentation | [Awesome Polka Docs](https://docs.awesomepolka.org/docs/awesome-polka/getting-started) | Base documentation provided, in near time this will be enhanced with examples and use cases. | +| **0c.** | Testing and Testing Guide | [Guide](https://docs.awesomepolka.org/docs/technical-details/testing) | API Tests & End to End tests are completed with a few users, also in this link you can see form validation tests. For future, hooks and api tests will be included in this page. | +| **0e.** | Article | [Documentation Includes](https://docs.awesomepolka.org/docs/awesome-polka/getting-started) | Documentation like a kind of article about how to use this platform. | +| **1.** | UI & UX Development | **Home Page:** [Link](https://awesomepolka.org)

**Projects Page:** [Link](https://awesomepolka.org/projects)

**Project Detail Page:** [Link](https://awesomepolka.org/projects/awesome-polka)

**Articles Page:** [Link](https://awesomepolka.org/articles)

**Article Detail Page:** [Link](https://awesomepolka.org/articles/09885b15-3a16-478f-aa2f-d6929d2f05c8)

**Ranking Page:** [Link](https://awesomepolka.org/ranking)

**Learn Page:** [Link](https://awesomepolka.org/learn)

**UX Improvements & Testing:** [Link](https://docs.awesomepolka.org/docs/technical-details/testing)| All pages that designed for milestones are completed, you can visit links to verify, ux improvements will be continue in future stages. | ... | +| *2.* | Project Owner Dashboard | [Dashboard Link](https://awesomepolka.org/dashboard/project) | You **must have an account** to use this dashboard. If you have an account, a "Dashboard" link appears in the footer of the site and you can access the dashboard by clicking this link. To request an account, click on the "Submit Project" on the main page or directly [this link](https://ts6prh04a2p.typeform.com/to/L4jpfJKl), after your membership is defined, you will receive an e-mail and you can start testing the dashboard.
| + +**Additional Information** +Although milestones of the project have been completed, it will continue to be actively developed, I will publish a report stating its status in the next two quarters. + +I would like to offer a more detailed infrastructure for testing, but you can test it by using the platform in the easiest way, while everyone can view the public part, I will authorize you when you fill out the form for the project owner dashboard, so you can try this dashboard. + +Api key of many platforms such as algolia, aws, thirdweb, coinbase cloud is required to set up a test infrastructure from start to finish, so a partial test report has been published to make things easier. + +Main domain currently lists dev branch but after approval I will push a clean main branch and we will start from scratch with new projects, so you can tamper with it as you wish, these changes will not be visible in prod version. diff --git a/deliveries/CoongWallet-Milestone_2.md b/deliveries/CoongWallet-Milestone_2.md new file mode 100644 index 000000000..07d29205f --- /dev/null +++ b/deliveries/CoongWallet-Milestone_2.md @@ -0,0 +1,37 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Coong Wallet](https://github.com/w3f/Grants-Program/blob/master/applications/coong_wallet.md) +* **Milestone Number:** 2 + +**Deliverables** +| Number | Deliverable | Link | Notes | +| -----: | ----------- | ------------- | ------------- | +| **0a.** | License | [Apache 2.0](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/LICENSE) | +| **0b.** | Documentation | - [README](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/README.md)
- [Live Working Application](https://app.coongwallet.io/)
- [Example Dapp](https://dapp.coongwallet.io) to demonstrate interactions
- [Integration instruction](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/README.md#integrate-coong-wallet-into-your-dapps) | | +| **0c.** | Testing and Testing Guide | [How to run tests](https://github.com/CoongCrafts/coong-wallet/tree/w3f-milestone-2#how-to-run-tests) | +| **0d.** | Docker | - [Dockerfile](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/Dockerfile)
- [How to run the app on Docker](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/README.md#run-it-on-docker) | +| 0e. | Article | [Link](https://docs.google.com/document/d/1nZUzetDZvLReof3easrRvR5HQSpjags-XShYj55gJEo/edit?usp=sharing) | We are still polishing the content and will publish this article after the milestone is accepted | +| 1. | Wallet App / Additional features | We've implemented the following features for the wallet app:
- [Sign raw message](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/packages/ui/src/components/pages/Request/RequestSigning/RequestSignRawMessage.tsx)
- [Import existing wallet](https://github.com/CoongCrafts/coong-wallet/tree/w3f-milestone-2/packages/ui/src/components/pages/SetupWallet/RestoreWallet)
- [Forget wallet password / Reset wallet](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/packages/ui/src/components/shared/buttons/ForgotPasswordButton.tsx)
- [Account controls](https://github.com/CoongCrafts/coong-wallet/tree/w3f-milestone-2/packages/ui/src/components/pages/Accounts/AccountControls)
- [Export wallet](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/packages/ui/src/components/shared/menu/ExportWalletDialog.tsx)
- [Import account from QR Code, JSON file](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/packages/ui/src/components/shared/menu/ImportAccountDialog/index.tsx)
- [Manage Dapps Access](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/packages/ui/src/components/shared/settings/ManageDappAccessDialog/index.tsx)
- [Settings](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/packages/ui/src/components/shared/settings/SettingsWalletDialog/index.tsx)
| +| 2. | Demo Dapp | - [Source Code](https://github.com/CoongCrafts/playground-dapp)
- https://dapp.coongwallet.io | 🚀 Don't forget to try out the dapp on your mobile/tablet browsers to see the advantage of CoongWallet over extension-based wallets 😃 | + +**Additional Information** +- Known issues mentioned in [Milestone 1](https://github.com/CoongCrafts/coong-wallet/tree/w3f-milestone-1#known-issues) + - `Blocking third party cookies issue`: + - Requiring users to disable the "Block third-party cookies" setting in their browser would make the website-based wallet experience (UX, API) similar to extension-based wallets. But this approach poses certain tradeoffs. + + Firstly, it violates users' privacy as they likely might not want to disable this setting and be tracked by social media platforms and other services. + + Secondly, each browser (both on mobile and desktop) has its own unique method of enabling or disabling this setting. Consequently, providing custom instructions for each browser would complicate the user experience and onboarding process for new users. As our purpose is to create a more user-friendly onboarding experience, we strive to avoid complex instructions during this process. + - Therefore, we have decided to take a different approach to address this issue. + + We will no longer initiate or append an embedded iframe of the wallet within the dapp, eliminating the need to deal with the "Block third-party cookies" issue. + + Instead, we will utilize first-party localStorage (dapp's localStorage) to store granted information (connected accounts). Additionally, we will introduce extra APIs to (1) allow users to add or remove (update) their granted information within the dapp and (2) clear granted information when users want to sign out of the dapp. This alternative approach requires some additional handling for developers during the integration of Coong Wallet into the dapp. However, for users, they will no longer need to toggle browser settings, resulting in a seamless onboarding experience. + - `Blocking popups issue` when calling API that opens a Coong Wallet window/popup (asking for user's consent, signing transaction) + - This issue might happen for actions that are running asynchronously or take a bit of time to complete. + - To prevent this from happening, we introduce an API that allows developers to open a waiting wallet window/popup (`CoongSdk.newWaitingWalletInstance()`) ready to send messages to later, so developers can call this API first thing on users interaction (click/touch) before calling any asynchronous tasks. + - More on this can be found [here](https://github.com/CoongCrafts/coong-wallet/tree/w3f-milestone-2#prevent-blocking-popups-issue) + - Example integration for [transfering balance](https://github.com/CoongCrafts/playground-dapp/blob/a6072c80fe5dfd263c1b4bcbe44423cdda9798b2/src/components/TransferBalanceButton.tsx#L93-L99), [demo dapp](https://dapp.coongwallet.io/) +- As for the `Manage & decode metadata feature` mentioned in [milestone 1 delivery](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/deliveries/CoongWallet-Milestone_1.md), due to timing constraints as we're changing approach to solve the known issues mentioned above, we don't have any extra time left to address this. So we decided to working on this in the future outside the scope of this grant. +- As for the `Import account from Private Key`: This feature was mentioned in the proposal but make more senses to implement when we have support for EVM accounts to allow users to transfering account using Private Key exported from MetaMask. So we decided to put this on hold until we implement EVM accounts support for the wallet. Let us know if we need to make an amendment PR to remove this from the proposal. +- Demo videos + - Dapp x Wallet Interaction on Desktop: https://youtu.be/9fIcAlpx_UI + - Dapp x Wallet Interaction on Mobile: https://youtu.be/F8S2fmQFRWQ diff --git a/deliveries/DIA_Bridgestate-1.md b/deliveries/DIA_Bridgestate-1.md new file mode 100644 index 000000000..c3ee9d5fa --- /dev/null +++ b/deliveries/DIA_Bridgestate-1.md @@ -0,0 +1,32 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Application](https://github.com/w3f/Grants-Program/blob/master/applications/DIA_Bridge_Attestation_Oracle.md) +* **Milestone Number:** 1 + +**Context** + +We are submitting the delivery of the first milestone according to the initial grant application. The milestone includes core functionality of the solution, including: +- Pallet +- Off-chain worker +- Collateral ratio calculation logic +- Documentation on running the pallet +- Tests +- Article announcing the core functionality and features of the solution + +Next deliverable will be bridge integrations which will enable the full usage of the product. + +**Deliverables** + +| Number | Deliverable | Link | Notes +| -----: | ----------- | ------------- | ------------- | +| **0a.** | License | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/LICENSE) | Apache 2.0 license | +| **0b.** | Documentation | [Link](https://github.com/diadata-org/bridgestate-ocw#readme) | Read.me explaining the core functionality | +| **0c.** | Testing and Testing Guide | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/src/tests.rs) | Test the functionality | +| **0d.** | Docker | [Link](https://github.com/diadata-org/bridgestate-ocw#using-docker) | Docker file with functionality | +| 0e. | Article | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/Article.md) | Article to be announced after approval | +| 1. | Attestation oracle core: Off-chain worker | Off-chain worker is part of the pallet listed below | +| 2. | Attestation oracle core: Pallet | [Link](https://github.com/diadata-org/bridgestate-ocw/tree/main#add-the-collateral-reader-pallet-to-your-runtime) | Pallet integration | +| 3. | Attestation oracle core: RPCs | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/src/impls.rs) | RPCs fallback functionality | +| 4. | Attestation oracle core: Collateral ratio calculation | [Link](https://github.com/diadata-org/bridgestate-ocw/tree/main#about-the-collateral-reader-pallet) | The logic for calculating collateral ratio | diff --git a/deliveries/Diffy_messenger_st1_ms1.md b/deliveries/Diffy_messenger_st1_ms1.md new file mode 100644 index 000000000..7375dd6b6 --- /dev/null +++ b/deliveries/Diffy_messenger_st1_ms1.md @@ -0,0 +1,31 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Diffy_chat.md +* **Milestone Number:** 1 + +**Context** + +P2p channels between users are set by usernames using WebRTC. This Substrate pallet is used for exchanging SDP offers. For address discovery of NAT users any public STUN server can be used. All messages between users are encrypted with user’s ed25519 keys and transactions are signed using sr25519 keys (to support Polkadot compatibility). Both keys are tied to usernames so that users do not have to generate ed25519 keys manually. This pallet will also include a “contacts” feature in the next milestone. + +**Deliverables** +In this milestone our team has executed the following deliverables + +- a Substrate pallet for chat initiation; +- a DOTRTC library for p2p transport implementation with test html pages for message passing. + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. :heavy_check_mark: | License | [LICENSE](https://github.com/Belsoft-rs/diffychat-pallet/blob/main/LICENSE) | Apache 2.0 license | +| 0b. :heavy_check_mark: | Documentation | [Readme.md](https://github.com/Belsoft-rs/diffychat-pallet#readme) | Explaining basic features | +| 0c. :heavy_check_mark: | Testing Guide | [DOTRTC usage](https://github.com/Belsoft-rs/diffychat-dotrtc#usage); [Substrate pallet](https://github.com/Belsoft-rs/diffychat-pallet#getting-started) | "How To" guide | +| 1. :heavy_check_mark: | Diffy chat pallet | [See here](https://github.com/Belsoft-rs/diffychat-pallet) | The Diffy chat Substrate pallet to [register usernames](https://github.com/Belsoft-rs/diffychat-pallet/blob/main/pallets/template/src/lib.rs#L106), [send and approve WebRTC offers](https://github.com/Belsoft-rs/diffychat-pallet/blob/main/pallets/template/src/lib.rs#L86) for chat initiation. | +| 2. :heavy_check_mark: | DOTRTC library | [See here](https://github.com/Belsoft-rs/diffychat-dotrtc) | This library includes [method for username registration](https://github.com/Belsoft-rs/diffychat-dotrtc/blob/main/src/Blockchain.js#L127), [an API class for organizing p2p communication](https://github.com/Belsoft-rs/diffychat-dotrtc/blob/main/src/PeerChannel.js#L3), methods for [splitting packets into chunks](https://github.com/Belsoft-rs/diffychat-dotrtc/blob/main/src/PeerChannel.js#L81) (and [reassembling](https://github.com/Belsoft-rs/diffychat-dotrtc/blob/main/src/PeerChannel.js#L132) on the receiver’s end). For secure messaging between two participants an [e2e encryption using the ed25519 algorithm](https://github.com/Belsoft-rs/diffychat-dotrtc/blob/main/src/Blockchain.js#L180) is implemented. | +| 3. :heavy_check_mark: | HTML test page | [See here](https://belsoft-rs.github.io/diffychat/index.html) | An HTML test page for DOTRTC library testing (setting a p2p channel between 2 users using the DOTRTC library). | + +**Additional Information** + +A short video showing delivered functionality: + +[![Delivery vid pic ms1](https://user-images.githubusercontent.com/126072104/232100957-aa315c8c-2c3f-440e-b2d3-0c2055c47eaf.jpg)](https://media.belsoft.rs/diffychat/diffy.mp4) diff --git a/deliveries/Diffy_messenger_st1_ms2.md b/deliveries/Diffy_messenger_st1_ms2.md new file mode 100644 index 000000000..a18719f45 --- /dev/null +++ b/deliveries/Diffy_messenger_st1_ms2.md @@ -0,0 +1,31 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Diffy_chat.md +* **Milestone Number:** 2 + +**Context** + +P2p channels between users are set by usernames using WebRTC. Thу Diffy Chat Substrate pallet is used for exchanging SDP offers. For address discovery of NAT users any public STUN server can be used. All messages between users are encrypted with user’s ed25519 keys and transactions are signed using sr25519 keys (to support Polkadot compatibility). Both keys are tied to usernames so that users do not have to generate ed25519 keys manually. In this milestone we have also added a “contacts” feature. + +**Deliverables** +In this milestone our team has executed the following deliverables + +- a contacts list feature; +- a web messenger dapp MVP. + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. :heavy_check_mark: | License | [LICENSE](https://github.com/Belsoft-rs/diffychat-pallet/blob/main/LICENSE) | Apache 2.0 license | +| 0b. :heavy_check_mark: | Documentation | [Readme.md](https://github.com/Belsoft-rs/diffychat-client/blob/master/README.md) | Explaining basic features | +| 0c. :heavy_check_mark: | Testing Guide | [Diffy chat pallet](https://github.com/Belsoft-rs/diffychat-pallet#getting-started) | "How To" guide | +| 0d. :heavy_check_mark: | Article | [BelSoft Dev on Medium](https://medium.com/@belsoft/diffy-chat-a-secured-decentralized-messenger-194ad74d6669) | An article on Medium that explains what was achieved, how to use the new Dapp and what are the benefits of using the Diffy Chat messenger | +| 1. :heavy_check_mark: | Contacts list feature | [See here](https://github.com/Belsoft-rs/diffychat-client/blob/master/src/components/messenger/contacts/contacts.js) | The contact list [feature](https://github.com/Belsoft-rs/diffychat-pallet/blob/5ff7e47cf8b6a4bf6e26a55c3836dabe44d047d5/pallets/template/src/lib.rs#L168), that allow users to tie real names to contact’s wallet addresses and store them encrypted in a blockchain. | +| 2. :heavy_check_mark: | Web messenger dapp MVP | [See here](https://belsoft-rs.github.io/diffychat/index.html) | The Diffy chat web messenger dapp with authorization via Polkadot.js keys, p2p messaging using developed DOTRTC library and contacts list. | + +**Additional Information** + +A short video showing delivered functionality: + +[![Preview](https://github-production-user-asset-6210df.s3.amazonaws.com/126072104/251771167-7fee3eb1-b81e-4ce2-ac20-1ffd6b04216a.png)](https://media.belsoft.rs/diffychat/diffychat.mp4) diff --git a/deliveries/FIAT-on-off-ramp-milestone-3.md b/deliveries/FIAT-on-off-ramp-milestone-3.md new file mode 100644 index 000000000..d2ff5acf0 --- /dev/null +++ b/deliveries/FIAT-on-off-ramp-milestone-3.md @@ -0,0 +1,47 @@ +# Milestone Delivery :mailbox: + +> ⚡ Only the GitHub account that submitted the application is allowed to submit milestones. +> +> Don't remove any of the mandatory parts presented in bold letters or as headlines! Lines starting with `>`, such as this one, can be removed. + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** FIAT on-off-ramp [FIAT-on-off-ramp.md](https://github.com/w3f/Open-Grants-Program/blob/master/applications/FIAT-on-off-ramp.md) +* **Milestone Number:** 3 + +**Context** (optional) +> Please provide a short paragraph or two connecting the deliverables in this milestone and describing their purpose. + +In this milestone we worked on a demo application that uses the Substrate chain developed in the previous milestone. The demo application is a simple web application that allows users to register their bank accounts and perform basic token actions such as minting, burning and transferring. The demo application is a proof of concept that shows how the Substrate chain can be used to build a FIAT on-off ramp. + +Demo app is a React application that uses [Polkadot JS API](https://polkadot.js.org/docs/api/start/) to interact with the Substrate chain. + +**Deliverables** +> Please provide a list of all deliverables of the milestone extracted from the initial application and a link to the deliverable itself. Ideally all links inside the below table should include a commit hash, which will be used for testing. If you don't provide a commit hash, we will work off the default branch of your repository. Thus, if you plan on continuing work after delivery, we suggest you create a separate branch for either the delivery or your continuing work. +> +> If there is anything particular about any of the deliverables we or a future reader should know, use the respective `Notes` column. + +### Milestone 3 Demo-Dapp & Documentation + +* **Estimated Duration:** 2 months +* **FTE:** 1 +* **Costs:** 5000 USD + +* Link to [github repo](https://github.com/element36-io/ocw-ebics) +* Link to the initial [pull request 348](https://github.com/w3f/Open-Grants-Program/pull/348) + + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| 0a. | License | Apache 2.0 | +| 0b. | Tutorial | Tutorial is provided in the [`/ebics-demo/DEMO.md`](https://github.com/element36-io/ocw-ebics/blob/main/ebics-demo/DEMO.md) file. | +| 1. | Buy me a coffee dApp | A decentralized [application](https://github.com/element36-io/ocw-ebics/tree/main/ebics-demo) is provided, which allows users to buy someone a coffee or simply donate to support their cause. Users can donate by either sending stablecoins or fiat to the recipient's on-chain account or bank account (IBAN). The recipient can then withdraw the funds to their bank account or send them to someone else. | +| 2. | Docker-Compose: node & Dapp | Instead of `docker-compose` a [Makefile](https://github.com/element36-io/ocw-ebics/blob/main/Makefile) is provided with the commands that launch the chain and the demo app | + +**Additional Information** +> Any further comments on the milestone that you would like to share with us. +All previously completed deliverables can be tested the same way as described in the older milestone. Specifically, unit tests and coverage. We also added linting with `clippy`. + +There have been one significant change to the project. Along with the demo app, to provide a better context to the project we were working on a draft [whitepaper](https://github.com/element36-io/ocw-ebics/blob/main/docs/hyperfridge-draft.pdf) for our project “HyperFridge” which builds right on top of our delivery. In the initial funding request we noted that an attack vector would be the (ISO20022) API based backend which is vulnerable to man-in-the-middle attack or just to a fake backend, which we are actually using in our demo environment. The paper describes how this can be mitigated by zero knowledge proofs which leverage on the signatures of the banks, which are included in each transaction message coming from the banking backend. With HyperFridge, we cryptographically prove transaction data (and balances) of the banking ledger. Hence a bank account (its transactions) can be treated like a blockchain ledger in terms of trust. If this would work, we are able to fully mirror a bank ledger data on-chain, thus reducing the problem with “asymmetric information” between blockchain and banking ledgers. This allows us to create zero-trust decentralized Fiat bridges which also work across multiple chains consistently - proof of assets for stable coins and payment systems are the most obvious use cases. + +We also would like to note that we are very grateful for your support and understanding during the last months. We had to deal with some personal issues and we are very happy that we were able to deliver the project. We are looking forward to continue working on the project and we are very excited about the future of the Web3 Foundation and the Polkadot ecosystem. diff --git a/deliveries/GenesisDAO-Milestone-3.md b/deliveries/GenesisDAO-Milestone-3.md new file mode 100644 index 000000000..cd62927b8 --- /dev/null +++ b/deliveries/GenesisDAO-Milestone-3.md @@ -0,0 +1,30 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/GenesisDAO.md +* **Milestone Number:** 3 + +**Context** (optional) +This milestone is finalising the MVP. We now have a fully working core product to create and manage DAOs, council creation, proposal lifecycle and voting. + +The product has it's own testnet: + +- [the frontend](https://www.genesis-dao.org/) +- [the backend service](https://service.genesis-dao.org/redoc/) +- [the node](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fnode.genesis-dao.org#/) + +> Note: This is a testnet. It does not have real tokens, the alice/bob testaccounts are available for free use and we are resetting this testnet regularly. Do not use for production use cases and do not except data to remain. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | Licence | n/a | All repositories have a LICENSE.md file at their repo root. | +| 0b. | Documentation | n/a | All repositories have a README.md file at their repo root, that is the entry point to the documentation. | +| 0c. | Testing and Testing Guide | https://github.com/deep-ink-ventures/genesis-dao-node/blob/main/docs/testing.md | We have [unit](https://github.com/deep-ink-ventures/genesis-dao-node/blob/main/docs/testing.md#unit-tests), [integration testing](https://github.com/deep-ink-ventures/genesis-dao-node/blob/main/docs/testing.md#integration-tests). | +| 0d. | Docker | [node Dockerfile](https://github.com/deep-ink-ventures/genesis-dao-node/blob/main/Dockerfile), [frontend Dockerfile](https://github.com/deep-ink-ventures/genesis-dao-frontend/blob/main/Dockerfile), [backend Dockerfile](https://github.com/deep-ink-ventures/genesis-dao-service/blob/main/Dockerfile) | All repositories are dockerized. | +| 0e. | Article | [Link](https://docs.google.com/document/d/1c3B9iyoHE7cP5a5qYwa-A_0Vy5zo1uAo-S1vcZ5h_B4/edit#heading=h.obore8uev3ox) | The article will be published right after the acceptance of this milestone. We'll reach out on how to increase visibillity | +| 1. | Substrate module: pallet_dao_vote | [Link](https://github.com/deep-ink-ventures/genesis-dao-node/tree/main/pallets/dao-votes) | The pallet has been finalized with flow adjustments as we have finalized the frontend. | +| 2. | Frontend Implementation | [Website](https://genesis-dao.org). [Repo](https://github.com/deep-ink-ventures/genesis-dao-frontend) | The proposal lifecycle and votes flow is now implemented | +| 3. | Product Touches | n/a | We have done an extensive QA session and incorporated feedback into small details of the app, an [FAQ](https://genesis-dao.org/faq) page has been added as well. | diff --git a/deliveries/High-Availability validator setup - Milestone 3.md b/deliveries/High-Availability validator setup - Milestone 3.md new file mode 100644 index 000000000..9325ca36d --- /dev/null +++ b/deliveries/High-Availability validator setup - Milestone 3.md @@ -0,0 +1,34 @@ +# Milestone Delivery :mailbox: + + + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/High_availability_validator_setup.md +* **Milestone Number:** 3 + +**Context** + +Replace the dummy microservice as an infrastructure component with a [TiKV](https://github.com/tikv/tikv) cluster used for leader selection. +Each node should try to get authorship permission based on the KV (Key-value) state. Replace the current microservice client with a TiKV client and add corresponding logic. + + + +**Deliverables** + +Milestone 1 is deliveried under the [milestone-3](https://github.com/bright/substrate-raft-setup/blob/milestone-3) branch in our repository. + + +| Number | Deliverable | Specification | Testing | +| ------------- | ------------- | ------------- | ------------- | +| **0a.** | License | Apache 2.0 / GPLv3 / MIT / Unlicense | License can be found under: [substrate-raft-setup](https://github.com/bright/substrate-raft-setup/blob/milestone-3/LICENSE) +| **0b.** | Documentation | We will provide inline documentation.| +| **0c.** | Testing and Testing Guide | We will provide unit tests and the guidelines for running and testing it the scope. | Run `cargo test` in the `substrate-raft-setup` root directory +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | In the root directory of the `substrate-raft-setup` please run `bash docker/build.sh` +| 1. | Run the necessary Raft services | Set up a local dev infrastructure to run TiKV components in order to provide a distributed KV store. | Basicly [docker-compose.yml](https://github.com/bright/substrate-raft-setup/blob/milestone-3/docker-compose.yml) setups 6 validator nodes where two of them (`alice-1`, `alice-2`) works with authorship permission. We are running there a Placement Drivers (PD) with three TiKV nodes. +| 2. | Integrate a Raft client into the node | Replace the previous logic with a TiKV based one and modify configs to allow the TiKV client to connect to Placement Drivers. Placement Drivers (PD) is one of the components which stores metadata for the entire TiKV cluster. It is responsible for sending commands to the TiKV nodes. The minimum setup for PD is to manage three TiKV nodes. | Same as in point **1**. +| 3. | Integration test | A dockerised setup that allows to test the Raft consensus mechanism. | Build docker as pointed in **0d** and than run `docker-compose up` in the root of the `substrate-raft-setup`. + + +**Additional Information** +> Any further comments on the milestone that you would like to share with us. diff --git a/deliveries/High-availability validator setup - Milestone 2.md b/deliveries/High-availability validator setup - Milestone 2.md new file mode 100644 index 000000000..166f6278c --- /dev/null +++ b/deliveries/High-availability validator setup - Milestone 2.md @@ -0,0 +1,38 @@ +# Milestone Delivery :mailbox: + + + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/High_availability_validator_setup.md +* **Milestone Number:** 2 + +**Context** + +The second milestone introduces a microservice which will test dynamic switching of the permission granting, during the validator's work. We will be able to test permission granting triggered whenever the block is produced, the vote is made on the finalized block (GRANDPA) and a message (`I'm online`) is sent for communicating liveness. Only the leader validator will be granted to run those actions. At worst, the author may miss a slot. + +The service should contain only basic logic (e.g. return `true` for node that asked first and `false` for following ones). + + + +**Deliverables** + +Milestone 2 is deliveried under the `milestone-2` branch on the [substrate-raft](https://github.com/bright/substrate-raft/blob/milestone-2) and the [substrate-raft-setup](https://github.com/bright/substrate-raft-setup/blob/milestone-2) repositories. + + +| Number | Deliverable | Notes | Testing | +| ------------- | ------------- | ------------- | ------------- | +| **0a.** | License | Apache 2.0 / GPLv3 / MIT / Unlicense | License can be found under: [substrate-raft](https://github.com/bright/substrate-raft/blob/milestone-2/LICENSE-GPL3), [substrate-raft-setup](https://github.com/bright/substrate-raft-setup/blob/milestone-2/LICENSE) +| **0b.** | Documentation | We will provide inline documentation.| +| **0c.** | Testing and Testing Guide | We will provide unit tests and the guidelines for running and testing it the scope. | Run `cargo test` in `substrate-raft`, `substrate-raft-setup` root directory and for testing authority-service in `substrate-raft-setup/bin/authority-service`. +| **0d.** | Docker | We will provide a Dockerfile(s) that can be used to test all the functionality delivered with this milestone. | In the root directory of the `substrate-raft-setup` please run `bash docker/build.sh` +| 1. | Basic service | Create a microservice that accepts connections from the node.|[Authority-service](https://github.com/bright/substrate-raft-setup/blob/milestone-2/bin/authority-service) code +| 2. | Getting permission from microservice | Set up a custom node repository and write the `PermissionResolver` trait implementation for getting permission from the microservice. | [Repository](https://github.com/bright/substrate-raft-setup/blob/milestone-2) for the custom node, and the [implementation](https://github.com/bright/substrate-raft-setup/blob/milestone-2/permission_resolver/src/lib.rs) for the PermissionResolver. +| 3. | Allow as optional | The choice of using an outside decision making agent for block submission should be configurable in the cli. | Code for the [cli](https://github.com/bright/substrate-raft-setup/blob/milestone-2/node/src/cli.rs) +| 4. | Clean up substrate code | Remove deprecated cli options. | Changes in [code](https://github.com/bright/substrate-raft/commit/f4bab8f2a461271ab52ec6343934f6b84623b6c8) +| 5. | Integration test | A dockerized setup that allows to run custom node networks and a microservice in order to show that the created solution works. | Build docker as pointed in **0d** and than run `docker-compose up` in the root of the `substrate-raft-setup`. We are running here a `permission-service`, which is our `authority-service`, and the validator node. + + + +**Additional Information** +> Any further comments on the milestone that you would like to share with us. diff --git a/deliveries/Omniverse_DLT_milestone_2.md b/deliveries/Omniverse_DLT_milestone_2.md new file mode 100644 index 000000000..9cd905355 --- /dev/null +++ b/deliveries/Omniverse_DLT_milestone_2.md @@ -0,0 +1,58 @@ +# Milestone Delivery :mailbox: + +> ⚡ Only the GitHub account that submitted the application is allowed to submit milestones. +> +> Don't remove any of the mandatory parts presented in bold letters or as headlines! Lines starting with `>`, such as this one, can be removed. + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Omniverse DLT](https://github.com/w3f/Grants-Program/blob/master/applications/Omniverse%20DLT.md). +* **PR Link:** [Omniverse DLT](https://github.com/w3f/Grants-Program/pull/1431), [update proposal](https://github.com/w3f/Grants-Program/pull/1475) +* **Milestone Number:** 2 + +**Context** (optional) +> Please provide a short paragraph or two connecting the deliverables in this milestone and describing their purpose. + +* In this milestone, we have finished create `Swap` pallet, user can add liquidity and make exchanges for two different o-tokens. +* In this milestone, we have finished the `Omniverse-DLT` protocol in `Ink!` technology stack, it have the same functions as the `assets pallet` in milestone 1. +* We have enhanced the related off-chain tools to operate `o-tokens` both on the Parachain of Polkadot and EVM chains. +* We have provided **incredibly convenient** **deployment** and **testing** tools for deploying and testing the entire process, which was complex and suffering in the previous milestone. +* In addition, thanks to the suggestions by the [reviewers](https://github.com/w3f/Grant-Milestone-Delivery/pull/800#issuecomment-1502611594), according to previous experience, we provide **videos** for [auto-testing for basic points of `Ink!`](https://omniversedlt.s3.amazonaws.com/token-swap-test/token-test.mp4), [auto-testing for swap](https://omniversedlt.s3.amazonaws.com/token-swap-test/swap-test.mp4), [auto-deployment](https://omniversedlt.s3.amazonaws.com/auto-deploy-tutorial/Auto-Deployment.mp4), and [operations](https://omniversedlt.s3.amazonaws.com/auto-deploy-tutorial/Auto-Tutorial.mp4) to improve efficiency. + +**Deliverables** +> Please provide a list of all deliverables of the milestone extracted from the initial application and a link to the deliverable itself. Ideally all links inside the below table should include a commit hash, which will be used for testing. If you don't provide a commit hash, we will work off the default branch of your repository. Thus, if you plan on continuing work after delivery, we suggest you create a separate branch for either the delivery or your continuing work. +> +> If there is anything particular about any of the deliverables we or a future reader should know, use the respective `Notes` column. + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | - [Omniverse Swap](https://github.com/Omniverse-Web3-Labs/omniverse-swap/blob/milestone-2/LICENSE)
-[Omniverse Ink!](https://github.com/Omniverse-Web3-Labs/omniverse-ink/blob/main/LICENSE) | GPLv3 | +| 0b. | Documentation | - [A high-level Priciple of the Omniverse Swap](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/High-Level%20Principle%20of%20Omniverse%20Swap.md)
- [How to dev with `Ink!`](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/dev-for-Ink!.md)
- [Tutorial of how to auto-deploy](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/Auto-Deployment.md)
- [Tutorial of how to operate](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/Auto-Tutorial.md) | The documentation for this milestone include the high-level introduction of the swap, how to dev with `Ink!`, and the tutorial of how to use. We provide the tutorial for two parts, the one is the deployment that is made **automatically**, and the other is the operation. | +| 0c. | Testing Guide | [The test guide for milestone 2](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/test-guide/m2-test-guide.md) | For this milestone we have provided incredibly convenient testing tools for testing the entire process in just a few steps. We think it brings much convenient and really makes sense. | +| 0d. | Docker | [Synchronizer docker](https://github.com/Omniverse-Web3-Labs/omniverse-synchronizer/tree/milestone-2/docker)| We provide a Dockerfile to auto-run synchronizers. The related document can be found in the [Auto-Deployment](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/Auto-Deployment.md#launch-the-auto-synchronizer) | +| 0e. | Article | [link](https://medium.com/@xiyuzheng1984/the-ink-tech-stack-along-with-a-swap-for-o-dlt-tokens-be128bb955e6) | The Ink! Tech Stack along with a Swap for O-DLT Tokens | +| 1. | Substrate module: swap | - [Pallet for Omniverse Swap](https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/milestone-2/pallets/omni-swap)
-[the simulation of the o-amm](https://github.com/Omniverse-Web3-Labs/o-amm)
- [off-chain calc and on-chain verify](https://github.com/Omniverse-Web3-Labs/O-AMM-ParaSim/tree/main) | - We made out Omniverse Swap which can exchanges two different omniverse fungible tokens.
- Besides, to make a intuitive comprehension of the o-amm model, we provide a simulation based on python (not included in the milestone but makes sense).
- Also for intuitive understanding of the off-chain calc and on-chain verification mechanism, we provide a parachain to show the details, and developers can build their own mechanism based on it. | +| 2. | Substrate chain | [Parachain itself](https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/milestone-2) | Building a Parachain is very easy. We have provided an implementation example mentioned in milestone 1 | +| 3. | Ink! smart contract implementation | [Ink! tech stacks](https://github.com/Omniverse-Web3-Labs/omniverse-ink) | We deploy the omniverse Ink! smart contract on [substrate-contracts-node-v0.25.1](https://github.com/paritytech/substrate-contracts-node/releases/tag/v0.25.1) | +| 4. | Off-Chain Synchronizer | [link](https://github.com/Omniverse-Web3-Labs/omniverse-synchronizer/tree/milestone-2) | We have optimized the synchronizer, improving its efficiency, added support for ink! parachain, and provided deployment through Docker. | + +**Additional Information** +* Here is the [GitHub of O-DLT](https://github.com/Omniverse-Web3-Labs). + +#### **Works until now** + +Currently, we have finished the basic functions of `O-DLT` protocol, and provided four tech stack implementations: + +- [Ethereum (EVMs)](https://github.com/Omniverse-Web3-Labs/omniverse-evm/tree/main) +- Polkadot + - [Pallet](https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/milestone-2/pallets) + - [Ink!](https://github.com/Omniverse-Web3-Labs/omniverse-ink) + - [Flow](https://github.com/Omniverse-Web3-Labs/omniverse-flow) + +And an application of `O-DLT` protocol: + +- [Omniverse Swap](https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/milestone-2/pallets/omni-swap) + +#### **Future Work** + +We will continue to dedicate ourselves to the improvement of `O-DLT` protocol and explore further applications based on it. Currently we just provide CLI tools, and the front-ui is on the way. Besides, a `zk-synchronization` platform rolluping the transactions will be made out to save most of the gas fees. diff --git a/deliveries/PolkaFlow-1.md b/deliveries/PolkaFlow-1.md new file mode 100644 index 000000000..7ab08b1d9 --- /dev/null +++ b/deliveries/PolkaFlow-1.md @@ -0,0 +1,46 @@ +# Milestone Delivery :mailbox: + + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/polkaflow.md +* **Milestone Number:** 1 + +**Context** (optional) + +PolkaFlow is a platform that provides visualizations and insights for open source projects in the DOT ecosystem. It offers a comprehensive view of activities of projects and insights into the ecosystem's trends. This is the document for the completion of only milestone for PolkaFlow. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License |[Frontend License](https://github.com/justmert/eco-flow-frontend/blob/master/LICENSE)
[Backend License](https://github.com/justmert/eco-flow-backend/blob/master/LICENSE)| | +| 0b. | Documentation |[Frontend Documentation](https://github.com/justmert/eco-flow-frontend/blob/master/README.md)
[Backend Documentation](https://github.com/justmert/eco-flow-backend/blob/master/README.md)| | +| 0c. | Testing and Testing Guide | [Backend Repo - Testing](https://github.com/justmert/eco-flow-backend#test-the-app) | 1-Clone the [Backend Documentation](https://github.com/justmert/eco-flow-backend/blob/master/README.md).
2-In the project directory, run `pip3 install -r requirements.txt`
3-After installing is done, run `pytest tests.py` | +| 0d. | Docker | | Not applicable | +| 1. | Database |[PolkaFlow Firebase Database Integration ](https://github.com/justmert/eco-flow-frontend/blob/master/src/App.js)| | +| 2. | Python Backend |[Backend Repo](https://github.com/justmert/eco-flow-backend)| | +| 3. | Frontend: Dashboard Page
Backend: Data Process - (Star Count) |[PolkaFlow Website Dashboard Page](https://polkaflow.xyz/dashboard/substrate) | See `Polkadot Ecosystem Star Count` widget. | +| 4. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Commit History) |[PolkaFlow Website Example Project](https://polkaflow.xyz/projects/paritytech/substrate)| See `Commit History By Weeks` widget. | +| 5. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Code Frequency) |[PolkaFlow Website Example Project](https://polkaflow.xyz/projects/paritytech/substrate)| See `Weekly Code Frequency` widget. | +| 6. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Top Contributors) |[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| See `Top Contributors` widget. | +| 7. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Issue Activity) |[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | See `Recent Issue Activity` widget. | +| 8. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Issue Count) |[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| See `Issue Count` widget. | +| 9. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Recent Issues) | [PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| See `Recent Issues` widget. | +| 10. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Recent Commits) |[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | See `Recent Commits` widget. | +| 11. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Pull Request Count) |[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| See `Pull Request Count` widget. | +| 12. | Frontend: Project Page
Backend: Data Process - (Pull Request Activity) |[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| See `Recent Pull Request Activity` widget. | +| 13. | Frontend: Project Page
Backend: Data Process - (Project Info Card) |[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| See project info at the top of the project page. | +| 14. | Frontend: Project Page
Backend: Data Process - (Recent Stargazing) | [PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | See `Recent Stargazing Activity` widget. | +| 15. | Frontend: Project List Page | [PolkaFlow Website Projects Page](https://polkaflow.xyz/projects)| | +| 16. | Integrate: Algolia | [Frontend Repo - Algolia Search Integration ](https://github.com/justmert/eco-flow-frontend/blob/master/src/components/Layouts/Search/search.js) | | +| 17. | Frontend: Categorization |[Frontend Repo - Typeform Integration Line ](https://github.com/justmert/eco-flow-frontend/blob/170707defb2e00fbb475a7e338593fd80c343636/src/components/Layouts/Navbar/navbar.js#L96) | | +| 18. | Integrate: Typeform | [Frontend Repo - Analytics Integration](https://github.com/justmert/eco-flow-frontend/blob/master/public/index.html) | | +| 19. | Integrate: Google Analytics | [Frontend Repo - Analytics Integration](https://github.com/justmert/eco-flow-frontend/blob/master/public/index.html) | | +| 20. | Backend: Schedule | [Backend Repo - Schedule](https://github.com/justmert/eco-flow-backend/blob/master/main.py) | | +| 21. | Frontend: UX & UI | [PolkaFlow Website](https://polkaflow.xyz/)| Improved overall UI&UX | + + +**Additional Information** + +Implementation of insigts/charts can be also found in `components` directory of the [Frontend Repo](https://github.com/justmert/eco-flow-frontend/tree/master/src/components) and the [Backend Repo](https://github.com/justmert/eco-flow-backend/blob/master/update.py). diff --git a/deliveries/SaaS3-milestone_2.md b/deliveries/SaaS3-milestone_2.md new file mode 100644 index 000000000..1199ad56f --- /dev/null +++ b/deliveries/SaaS3-milestone_2.md @@ -0,0 +1,39 @@ +# Milestone Delivery :mailbox: + +> ⚡ Only the GitHub account that submitted the application is allowed to submit milestones. +> +> Don't remove any of the mandatory parts presented in bold letters or as headlines! Lines starting with `>`, such as this one, can be removed. + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/SaaS3.md +* **Milestone Number:** 2 + +**Context** (optional) +> Please provide a short paragraph or two connecting the deliverables in this milestone and describing their purpose. + +**Deliverables** +> Please provide a list of all deliverables of the milestone extracted from the initial application and a link to the deliverable itself. Ideally all links inside the below table should include a commit hash, which will be used for testing. If you don't provide a commit hash, we will work off the default branch of your repository. Thus, if you plan on continuing work after delivery, we suggest you create a separate branch for either the delivery or your continuing work. +> +> If there is anything particular about any of the deliverables we or a future reader should know, use the respective `Notes` column. + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | Apache 2.0 +| 0b. | Documentation |https://github.com/SaaS3-Foundation/saas3-dao| | +| 0c. | Testing Guide |https://github.com/SaaS3-Foundation/saas3-dao| | +| 0d. | Docker | We are not able to provide a Dockerfile | | +| oe. | Article/Tutorial | https://github.com/SaaS3-Foundation/saas3-dao/blob/main/Tutorial.md | | +| 1. | pallet-court | https://github.com/SaaS3-Foundation/saas3-dao/tree/main/pallets/court |A pallet of court DAO, dAPI user raise sue to determine the punishment of malfunction miners / services and return sue claimed tokens to dAPI user. | +| | Functions | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L233
https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L262
https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L286|`pub fn submit_sue(origin, value, defendent, statement)` dAPI User submit sue claims for malfunction.
`pub fn vote_sue(origin, lawsuit_id, approve)` Jury evaluates and votes the sue submission to determine punishment.
`pub fn process_sue(origin, lawsuit_id)` Process the accepted sue claims of dAPI user to slash malfunction miner / dAPI. The tokens will be paid to dAPI user and treasury with a ratio. | +| | Structs | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#LL68C1-L79C2 | | +| | Storage | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#LL115C2-L121C4 | | +| | Events |https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L160 | +| 2. | pallet-treasury | https://github.com/SaaS3-Foundation/saas3-dao/blob/main/pallets/treasury/src/lib.rs|A pallet of SaaS3 DAO treasury. It sends or receives token based on different situations. It is built on top of [FRAME Treasury Pallet](https://github.com/paritytech/substrate/tree/master/frame/treasury), with some additional functionalities. | +| | Functions | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/treasury/src/lib.rs#L221
https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/treasury/src/lib.rs#L254|`pub fn receive(origin, amount, category_type)` Receive tokens with categorized reason, such as commission fees and miner node malfunctions.
`pub fn claim_rewards(origin, amount)` Court Jury members claim their rewards for their contribution in Court DAO. | +| | Storage | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/treasury/src/lib.rs#L117 | +| | Events | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/treasury/src/lib.rs#L169| | +| 3. | UI & Frontend | https://github.com/SaaS3-Foundation/SaaS3-DAO-Pallets|This part is implemented by [substrate front-end template](https://github.com/substrate-developer-hub/substrate-front-end-template). The frontend web interface contains DAO procedures related functions which including user sue judgement. A special document website is developed to guide entities to participate in DAO events. | + +**Additional Information** +> Any further comments on the milestone that you would like to share with us. diff --git a/deliveries/ScoutCoinFabrik-2.md b/deliveries/ScoutCoinFabrik-2.md new file mode 100644 index 000000000..4e4e8d527 --- /dev/null +++ b/deliveries/ScoutCoinFabrik-2.md @@ -0,0 +1,48 @@ +# Milestone Delivery :mailbox: + + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ScoutCoinFabrik_2.md +* **Milestone Number:** 1 + +**Context** (optional) + +In this delivery we provide a prototype of an extensible open-source tool intended to assist ink! smart contract developers and auditors detect common security issues and deviations from best practices. This prototype includes: +* A Command Line Interface. +* A VSCode extension. +* An extended list of detectors, test-cases and vulnerability classes. +* A [web page](https://coinfabrik.github.io/scout/) for the tool, providing further documentation. + +We also include, as part of this delivery, a blog post and an evaluation report of the tool against a selection of projects deployed on testnet or mainnet. + +This [Prototype](https://github.com/CoinFabrik/scout/tree/web3-v2) builds on our [Proof of Concept](https://github.com/CoinFabrik/web3-grant), performed as a previous [project](https://github.com/w3f/Grants-Program/blob/master/applications/ScoutCoinFabrik.md). + + +**Deliverables** + +Please note that all relevant links associated with the deliverables of this milestone make references to the branch [`web3-v2`](https://github.com/CoinFabrik/scout/tree/web3-v2) of our [repository](https://github.com/CoinFabrik/scout). + + +| Number | Deliverable | Link | Notes | +| ------ | ----------- | ---- | ----- | +| 0a. | License | https://github.com/CoinFabrik/scout/blob/web3-v2/LICENSE | MIT | +| 0b. | Documentation | https://coinfabrik.github.io/scout/docs/intro | We provide documentation hosted on a [separate webpage](https://coinfabrik.github.io/scout) from [Scout's repository](https://github.com/CoinFabrik/scout/tree/web3-v2). The main [README.md](https://github.com/CoinFabrik/scout/blob/web3-v2/README.md) in our repository also provides links to this webpage. | +| 0c. | Testing | https://github.com/CoinFabrik/scout/tree/web3-v2/apps/cargo-scout-audit/tests | We provide [integration testing](https://github.com/CoinFabrik/scout/tree/web3-v2/apps/cargo-scout-audit/tests). Specific tests for every linting detector based on [code examples and snippets of smart contracts](https://github.com/CoinFabrik/scout/tree/web3-v2/test-cases). | +| 0d. | Docker | - | Does not apply at this stage. | +| 0e. | Article | https://blog.coinfabrik.com/bigger-better-and-faster-vulnerability-detection-in-ink | We uploaded to our blog a report summary. | +| 1.a | Research and Development | https://coinfabrik.github.io/scout/docs/vulnerabilities | Vulnerability examples. In addition to the [examples developed in the previous project of ScoutCoinFabrik PoC](https://github.com/w3f/Grants-Program/blob/master/applications/ScoutCoinFabrik.md#milestone-1-proof-of-concept), we developed more code examples and snippets of vulnerabilities, best practices, and enhancements related to smart contracts written in ink!. | +| 1.b | Research and Development | https://github.com/CoinFabrik/scout/tree/web3-v2/test-cases | We developed further example versions of [vulnerabilities developed in the previous project of ScoutCoinFabrik PoC](https://github.com/CoinFabrik/web3-grant/tree/main/vulnerabilities). These example versions are the new test-cases developed for the vulnerability classes [integer-overflow-or-underflow](https://github.com/CoinFabrik/scout/tree/web3-v2/test-cases/integer-overflow-or-underflow), [reentrancy](https://github.com/CoinFabrik/scout/tree/web3-v2/test-cases/reentrancy) and [unused-return-enum](https://github.com/CoinFabrik/scout/tree/web3-v2/test-cases/unused-return-enum). | +| 2.a | Development | https://github.com/CoinFabrik/scout/tree/web3-v2 | We built a prototype that improves over the [development of the previous project of ScoutCoinFabrik PoC](https://github.com/w3f/Grants-Program/blob/master/applications/ScoutCoinFabrik.md#milestone-1-proof-of-concept), detecting more [classes of vulnerabilities](https://coinfabrik.github.io/scout/docs/vulnerabilities#vulnerability-classes) and improving in precision on existing detectors. This prototype can analyze Rust code to detect vulnerabilities in ink! smart contracts and possibly in pallets and other pieces of code. This builds over [this proof-of-concept tool](https://github.com/CoinFabrik/web3-grant) we've built and [delivered as part of a grant for the web3 foundation](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/deliveries/ScoutCoinFabrik-1.md) by:
a) Moving from a proof-of-concept (PoC) tool to a robust tool that integrates with a popular IDE (VSCode), includes a CLI, etc,
b) We improved on the precision of the detectors we included in the PoC reducing the rate of false positives, and
c) We [added more detectors](https://github.com/CoinFabrik/scout/tree/web3-v2/detectors) in order to have a reasonable coverage of the relevant security vulnerabilities that happen in smart contracts. | +| 2.b | Development | https://github.com/CoinFabrik/scout/tree/web3-v2/apps/cargo-scout-audit | We built a command line interface for the prototype. We developed a simple command line interface like the one used in other static analyzers from other blockchains (eg: [Slither](https://github.com/crytic/slither), [Rustle](https://github.com/blocksecteam/rustle)).
In particular, we developed the possibility to run the prototype on smart contract files or directories.
The base command is: `cargo scout-audit`
We also [included options](https://coinfabrik.github.io/scout/docs/intro#usage) for running subsets of detectors. | | +| 2.c | Development | https://marketplace.visualstudio.com/items?itemName=CoinFabrik.scout-audit | We provide VSCode integration for the prototype. Our VSCode development lists security issues, highlights issues with squiggles and hover-over descriptions. This development is compatible with other relevant ink! extensions such as [Ink! Analyzer](https://w3f.github.io/Grants-Program/applications/ink-analyzer#future-plans). | +| 3 | Evaluation | https://github.com/CoinFabrik/scout/blob/web3-v2/assets/false-positives-report.md | We performed prototype validation against a selection of projects deployed on testnet or mainnet in order to evaluate detector precision. We provide an evaluation report and detector improvement. | + + +**Additional Information** + +Our original plan was to apply for a 3 milestones grant, to reach a public release of the tool. But we were advised to apply for a shorter objective. After completing the PoC in our first stage, we have now completed this second stage to reach a tool prototype. We envison a third stage together with a public release. Our mission is to continue to work on improving automated and assisted tools for finding security vulnerabilities and writing more secure code. Our objective is to help the Polkadot / Kusama community produce better and more secure code with these tools. + +Richard Casey from Parity brought this program to our attention. Our inquiries were addressed by David Hawig and Bhargav Bhatt, who also kindly advised us on this presentation. + +Find our project's repo at: https://github.com/CoinFabrik/scout diff --git a/deliveries/Solang-developer-experience-improvements-2.md b/deliveries/Solang-developer-experience-improvements-2.md new file mode 100644 index 000000000..c27e9be70 --- /dev/null +++ b/deliveries/Solang-developer-experience-improvements-2.md @@ -0,0 +1,30 @@ +# Milestone Delivery :mailbox: + + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Solang_developer_experience_improvements.md +* **Milestone Number:** 2 + +**Context** +This milestone improves Solidity development experience on Substrate based chains, by providing a way to read compiler configurations from a `solang.toml` file, as well as providing a command `solang new` responsible for creating a solang project directory with an example contract as well as an example configuration file. + + +**Deliverables** + + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/hyperledger/solang/blob/main/LICENSE | Apache-2.0 | +| 0b. | Documentation | https://solang.readthedocs.io/en/latest/running.html#compiler-usage https://solang.readthedocs.io/en/latest/running.html#starting-a-new-project| In Solang's documentation, one can find the flags `contract-authors`, `version` and `config-file`. `solang new` can be found at the second link.| +| 0c. | Testing |https://github.com/hyperledger/solang/blob/main/src/bin/cli/test.rs https://github.com/hyperledger/solang/blob/main/tests/cli.rs| The provided tests cover the newly added functionalities: `solang new` as well as unit tests for reading the configurations from `solang.toml` | +| **0d.** | Docker | There will be no independent DockerFiler for this milestone, because Solang has its own DockerFile, which can be used to test the mentioned functionalities.| +| 0e. | Article |https://forum.polkadot.network/t/introducing-solang-improvements/3361 | +| 1. | Implement [Solang projects](https://github.com/hyperledger/solang/milestone/6) | https://github.com/hyperledger/solang/pull/1316 https://github.com/hyperledger/solang/pull/1347 https://github.com/hyperledger/solang/pull/1392 | Regarding the substrate target configuration, I added a comment on the milestone describing why it should be left as is. I took a week of researching this issue, then spoke with the maintainers and agreed that this was the best option for the users. | + + +**Repositories** +(Apache-2.0) +| Component | Repo | Language | +| -----: | ----------- | ------- | +| All components | https://github.com/hyperledger/solang | Rust/Solidity | \ No newline at end of file diff --git a/deliveries/SubRelay-milestone-2.md b/deliveries/SubRelay-milestone-2.md new file mode 100644 index 000000000..f5e419bff --- /dev/null +++ b/deliveries/SubRelay-milestone-2.md @@ -0,0 +1,22 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/subrelay.md +* **Milestone Number:** 2 + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/subrelay/subrelay-api/blob/main/LICENSE https://github.com/subrelay/interface/blob/main/LICENSE | | +| 0b. | Documentation | https://docs.subrelay.com/ || +| 0c. | Testing and Testing Guide | https://github.com/subrelay/interface/tree/main/cypress https://github.com/subrelay/subrelay-api/tree/main/test | | +| 0d. | Docker file | https://docs.subrelay.com/self-hosted/getting-started | Guide to run self hosted version | +| 0e. | Article | https://docs.subrelay.com | An introduction about the Subrelay concept and key features | +| 1. | Feature: Email integration | https://docs.subrelay.com/user-guide/email | Try it on https://app.subrelay.com/| +| 2. | Feature: Telegram integration| https://docs.subrelay.com/user-guide/telegram | Try it on https://app.subrelay.com/| +| 3. | Feature: Discord integration | https://docs.subrelay.com/user-guide/discord | Try it on https://app.subrelay.com/ | +| 4. | Feature: Workflow execution detail | https://app.subrelay.com/logs | | +| 5. | API | https://github.com/subrelay/subrelay-api | See the API reference at: https://docs.subrelay.com/api-documentation/overview | +| 6. | Integration | https://github.com/subrelay/interface | Try it on https://app.subrelay.com/ | diff --git a/deliveries/calamar-milestone_2.md b/deliveries/calamar-milestone_2.md new file mode 100644 index 000000000..be9284156 --- /dev/null +++ b/deliveries/calamar-milestone_2.md @@ -0,0 +1,38 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Calamar.md +* **Milestone Number:** 2 + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [LICENSE](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/LICENSE.txt) | | +| 0b. | Documentation | [README](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/README.md), [Calamar docs](https://docs.calamar.app/) | | +| 0c. | Testing Guide | [README#Test](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/README.md#test), [E2E tests](https://github.com/topmonks/calamar/tree/fc791d5ddc433cea71b3587dc0718c50a017c9ee/test/e2e), [GitHub workflow](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/.github/workflows/test-and-deploy.yml#L27), [Test reports](https://github.com/topmonks/calamar/deployments?environment=test-report#activity-log), [Screenshots](https://app.argos-ci.com/topmonks/calamar) | | +| 0d. | Docker | [Dockerfile](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/Dockerfile), [README#Docker](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/README.md#docker) | | +| 0e. | Article | [Article](https://medium.com/topmonks/calamar-block-explorer-milestone-2-finished-ca581f95301a) | | +| 1. | Account / Balance overview | [PR#142](https://github.com/topmonks/calamar/pull/142), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 2. | Account / Balance charts | [PR#143](https://github.com/topmonks/calamar/pull/143), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 3. | Account / Transfers list | [PR#134](https://github.com/topmonks/calamar/pull/134), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 4. | Account / Calls list | [PR#125](https://github.com/topmonks/calamar/pull/125), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 5. | Account / Identity info | [PR#150](https://github.com/topmonks/calamar/pull/150), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/EMRpBNnfAqRb62b14cxmnCdihtUjEeyh6tfyhGwnGwxjY8F) | | +| 6. | Chain dashboard / Stats | [PR#149](https://github.com/topmonks/calamar/pull/149), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 7. | Chain dashboard / Asset value chart | [PR#149](https://github.com/topmonks/calamar/pull/149), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 8. | Chain dashboard / Latest blocks | [PR#136](https://github.com/topmonks/calamar/pull/136), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 9. | Chain dashboard / Latest transfers | [PR#135](https://github.com/topmonks/calamar/pull/135), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 10. | Chain dashboard / Top holders | [PR#137](https://github.com/topmonks/calamar/pull/137), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | + +**Additional Information** + +> One more notable PR which is not among deliverables - Redesigned homepage: [PR#146](https://github.com/topmonks/calamar/pull/146), [Example](https://c5a84f4a.calamar.pages.dev) + +> Not all features are available to all the networks at this time. It is depended on the squids provided by Subsquid. It is prepared though, when the squids are ready it will work either immediately or with a little change in the code. + +The code in the time of delivery: https://github.com/topmonks/calamar/tree/fc791d5ddc433cea71b3587dc0718c50a017c9ee + +The deployed build in the time of delivery: https://c5a84f4a.calamar.pages.dev + +Production app: https://calamar.app diff --git a/deliveries/centrifuge-gsrpc-v2-milestone-2.md b/deliveries/centrifuge-gsrpc-v2-milestone-2.md new file mode 100644 index 000000000..c3577500e --- /dev/null +++ b/deliveries/centrifuge-gsrpc-v2-milestone-2.md @@ -0,0 +1,25 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/centrifuge-gsrpc-v2.md +* **Milestone Number:** 2 + +**Context** (optional) + +As per the [original grant application](https://github.com/w3f/Grants-Program/pull/1281/files), the work required for `Milestone 2 - New generic type registry encoder/decoder` includes +all the changes required for parsing substrate metadata information into a Go registry that keeps track of all the types contained by a pallet's events & calls. +In addition to using this registry to encode and decode events and extrinsic data. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +|--------|----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------| +| 1. | License | https://github.com/centrifuge/go-substrate-rpc-client/blob/event-parsing-v2/LICENSE | Apache License v2 | +| 2. | Documentation | https://github.com/centrifuge/go-substrate-rpc-client/blob/event-parsing-v2/registry/REGISTRY.md | - | +| 3. | PR with changes | https://github.com/centrifuge/go-substrate-rpc-client/pull/338 | - | +| 4a. | Registry Unit Tests | https://github.com/centrifuge/go-substrate-rpc-client/blob/7e3e5ad5225bfa7afd342f3fe8932dc44702c472/registry/registry_test.go | Tested using metadata information from - Centrifuge, Acala, Moonbeam, Polkadot and Statemint | +| 4b. | Registry (Events) Live Tests | https://github.com/centrifuge/go-substrate-rpc-client/blob/7e3e5ad5225bfa7afd342f3fe8932dc44702c472/registry/retriever/event_retriever_live_test.go | Live test against public endpoints - Centrifuge, Acala, Moonbeam, Polkadot and Statemint | +| 4c. | Registry (Extrinsics) Live Tests | https://github.com/centrifuge/go-substrate-rpc-client/blob/7e3e5ad5225bfa7afd342f3fe8932dc44702c472/registry/retriever/extrinsic_retriever_live_test.go | Live test against public endpoints - Centrifuge, Acala, Moonbeam, Polkadot and Statemint | +| 4d. | Test execution | https://github.com/centrifuge/go-substrate-rpc-client/blob/7e3e5ad5225bfa7afd342f3fe8932dc44702c472/Makefile#L49-L53 | Done in Docker image. | + diff --git a/deliveries/dotflow-1.md b/deliveries/dotflow-1.md new file mode 100644 index 000000000..8f8d819b4 --- /dev/null +++ b/deliveries/dotflow-1.md @@ -0,0 +1,27 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Application](https://github.com/w3f/Grants-Program/blob/master/applications/Dotflow.md) +* **Milestone Number:** 1 + +**Context** + +We are submitting the delivery of all the functionality specified in the grant application for the first milestone. +The list of things we implemented in this milestone: +- Identity contract with all the functionality we promised to do in the grant application. +- Tests for identity contract. We covered every part of the contract code with ink! integration tests to ensure everything works as supposed. +- Contract documentation. We have added a lot of comments in the code, as well as in the test to make sure everything is easy to understand. +- My Identity UI with all the functionality we promised to do in the grant application. +- Address encryption. As promised in the grant application we encrypt addresses before storing them in the identity contract to ensure privacy. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [Contract](https://github.com/TheDotflow/dotflow-ink/blob/main/LICENSE) [Frontend](https://github.com/TheDotflow/dotflow-ui/blob/main/LICENSE) | MIT license | +| 0b. | Documentation | [Link](https://github.com/TheDotflow/dotflow-ink/blob/main/README.md) | | +| 0c. | Testing and Testing Guide | [Contract](https://github.com/TheDotflow/dotflow-ink/blob/main/contracts/identity/tests.rs) [Guide](https://github.com/TheDotflow/dotflow-ink#build--test-locally) [Identity Key](https://github.com/TheDotflow/dotflow-ui/blob/main/__tests__/identityKey.test.ts) [Guide](https://github.com/TheDotflow/dotflow-ui#set-up-development-environment) | Tests for the identity contract and the Identity Key | +| 0d. | Docker | [Contract](https://github.com/TheDotflow/dotflow-ink#docker) [Frontend](https://github.com/TheDotflow/dotflow-ui#run-with-docker) | | +| 1. | Identity Contract | [Link](https://github.com/TheDotflow/dotflow-ink/blob/main/contracts/identity/lib.rs) | The Identity contract code | +| 2. | My Identity page | [Frontend code](https://github.com/TheDotflow/dotflow-ui/tree/main/src) [Identity Key](https://github.com/TheDotflow/dotflow-ui/pull/15) [Address Encryption](https://github.com/TheDotflow/dotflow-ui/pull/21) | The frontend code | diff --git a/deliveries/galaxy-1.md b/deliveries/galaxy-1.md new file mode 100644 index 000000000..fff62b807 --- /dev/null +++ b/deliveries/galaxy-1.md @@ -0,0 +1,17 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/galaxy.md +* **Milestone Number:** 1 + +**Context** (optional) + +**Deliverables** + +| Number | Deliverable | Link | Notes | +|-----|-----------|-------------|-----| +| 1. | Frontend: Galaxy Web App | https://github.com/7flash/galaxy-polkadot/tree/master | includes docs and tests | + +**Additional Information** +Demo Video: https://youtu.be/WOQvxZCiU0Q diff --git a/deliveries/hybrid-2.md b/deliveries/hybrid-2.md new file mode 100644 index 000000000..f6332ec0e --- /dev/null +++ b/deliveries/hybrid-2.md @@ -0,0 +1,25 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/hybrid.md +* **Milestone Number:** 2 + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| -------| ----------- | ---- | ----- | +| 0a. :heavy_check_mark: | License | [LICENSE](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/LICENSE) | Apache 2.0 | +| 0b. :heavy_check_mark: | Documentation | [README.md](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/README.md) | | +| 0c. :heavy_check_mark: | Testing and Testing Guide | [README.md](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/README.md#testing-guide) | | +| 0d. :heavy_check_mark: | Docker | [README.md](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/README.md#docker) | | +| 1. :heavy_check_mark: | Event subscription API | [websockets.rs](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/websockets.rs#L415) | | +| 2. :heavy_check_mark: | Live dapp | [IndexerClient.ts](https://github.com/hybrid-explorer/hybrid-dapp/blob/milestone-2/src/lib/IndexerClient.ts#L112)| | +| 3. :heavy_check_mark: | Full Polkadot event indexing | [substrate.rs](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/substrate.rs#L377) | | +| 4. :heavy_check_mark: | Variant index | [substrate.rs](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/substrate.rs#L235) | | +| 5. :heavy_check_mark: | Increased decentralization | [IndexerClient.ts](https://github.com/hybrid-explorer/hybrid-dapp/blob/milestone-2/src/lib/IndexerClient.ts#L12) | | +| 6. :heavy_check_mark: | Asynchrous block downloading | [substrate.rs](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/substrate.rs#L536) | | + +**Additional Information** + +This milestone still primarily focuses on the indexer. The Dapp in this milestone exists solely to demonstrate the functionality of the indexer. It will be further developed in milestones 3. diff --git a/deliveries/ink-analyzer-milestone-2.md b/deliveries/ink-analyzer-milestone-2.md new file mode 100644 index 000000000..926de8615 --- /dev/null +++ b/deliveries/ink-analyzer-milestone-2.md @@ -0,0 +1,30 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [ink! Analyzer](https://github.com/w3f/Grants-Program/blob/master/applications/ink-analyzer.md) +* **Milestone Number:** 2 + +**Context** (optional) + +This delivery is for [completions](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/completions.rs), [code/intent actions](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/actions.rs) and [hover content](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/hover.rs). + +[Diagnostics](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/diagnostics.rs) were [delivered](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/deliveries/ink-analyzer-milestone-1.md) and [evaluated](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/ink_analyzer_1_dsm-w3f.md) in milestone 1. + +Please see the [README](https://github.com/ink-analyzer/ink-analyzer#readme) for additional architectural details. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +|---------|-------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **0a.** | License | [MIT](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-MIT) or [Apache 2.0](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-APACHE). | Dual-licensed under either of MIT or Apache 2.0 licenses at the downstream user's option. | +| **0b.** | Documentation | [Project README](https://github.com/ink-analyzer/ink-analyzer#readme) and [semantic analyzer (ink-analyzer) crate README](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer#readme) on GitHub, [semantic analyzer crate (ink-analyzer) rustdoc](https://docs.rs/ink-analyzer/latest/ink_analyzer/) documentation on docs.rs and extensive inline source documentation. | The semantic analyzer crate's README is published on both [GitHub](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer#readme) and [crates.io](https://crates.io/crates/ink-analyzer). It contains instructions for installation and usage, and links to crate specific documentation on docs.rs. | +| **0c.** | Testing and Testing Guide | [Testing guide](https://github.com/ink-analyzer/ink-analyzer#testing). | Each feature is implemented as a module (i.e [completions](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/completions.rs), [code/intent actions](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/actions.rs) and [hover content module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/hover.rs)), with unit tests for each feature implemented in its corresponding module. Integration tests for each feature can be found in the [tests directory of the semantic analyzer crate](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/tests) (i.e [completions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/tests/completions.rs), [code/intent actions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/tests/actions.rs) and [hover content module](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/tests/hover.rs)). Checking out the [parse_offset_at](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/test_utils/src/lib.rs#L14-L45) utility may be useful as it is extensively used in both the unit and integration tests for all 3 features. | +| **0d.** | Docker | [Dockerfile](https://github.com/ink-analyzer/ink-analyzer/blob/master/Dockerfile). | | +| 1. | Semantic Analyzer: Rust crate update: Code completion suggestions | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [completions public interface](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L42-L45) and [completions module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/completions.rs). | The public interface is an [associated method](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L42-L45) of the [Analysis](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L17-L22) entry point whose [constructor](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L25-L30) accepts a string representation (`&str`) of ink! smart contract code as input, while the [completions associated method](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L42-L45) accepts an offset-based "cursor" position as input and returns completion suggestions for ink! attribute macros and arguments (if any) at the given position. | +| 2. | Semantic Analyzer: Rust crate update: Code/intent actions | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [code/intent actions public interface](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L47-L50) and [code/intent actions module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/actions.rs). | The public interface is an [associated method](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L47-L50) of the [Analysis](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L17-L22) entry point whose [constructor](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L25-L30) accepts a string representation (`&str`) of ink! smart contract code as input, while the [actions associated method](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L47-L50) accepts an offset-based "cursor" position as input and returns contextual assists for adding relevant ink! attribute macros and arguments (if any) to the item at the given position. | +| 3. | Semantic Analyzer: Rust crate update: Hover content | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [hover content public interface](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L52-L55) and [hover content module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/hover.rs). | The public interface is an [associated method](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L52-L55) of the [Analysis](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L17-L22) entry point whose [constructor](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L25-L30) accepts a string representation (`&str`) of ink! smart contract code as input, while the [hover associated method](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L52-L55) accepts an offset-based text range as input and returns descriptive/informational text for the ink! attribute macro or argument that covers the given text range. References to the source of the hover content can be found in the doc comments for each item in the [macros](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/hover/content/macros.rs) and [args](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis/hover/content/args.rs) submodules. | + +**Additional Information** + +Please use the [master branch](https://github.com/ink-analyzer/ink-analyzer/tree/master) for testing, another branch will be used for continued work until the completion of the review. diff --git a/deliveries/ink-analyzer-milestone-3.md b/deliveries/ink-analyzer-milestone-3.md new file mode 100644 index 000000000..3e570716c --- /dev/null +++ b/deliveries/ink-analyzer-milestone-3.md @@ -0,0 +1,27 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [ink! Analyzer](https://github.com/w3f/Grants-Program/blob/master/applications/ink-analyzer.md) +* **Milestone Number:** 3 + +**Context** (optional) + +This delivery is for the [LSP (Language Server Protocol) implementation](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/lsp-server) of [semantic analyzer](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer) features that were delivered and evaluated in milestones 1 ([PR](https://github.com/w3f/Grant-Milestone-Delivery/pull/848), [delivery](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/deliveries/ink-analyzer-milestone-1.md) and [evaluation](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/ink_analyzer_1_dsm-w3f.md)) and 2 ([PR](https://github.com/w3f/Grant-Milestone-Delivery/pull/873), [delivery](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/deliveries/ink-analyzer-milestone-2.md) and [evaluation](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/ink_analyzer_2_dsm-w3f.md)) - i.e. diagnostics, completions, code/intent actions and hover content. + +Please see the [README](https://github.com/ink-analyzer/ink-analyzer#readme) for additional architectural details. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +|---------|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **0a.** | License | [MIT](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-MIT) or [Apache 2.0](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-APACHE). | Dual-licensed under either of MIT or Apache 2.0 licenses at the downstream user's option. | +| **0b.** | Documentation | [Project README](https://github.com/ink-analyzer/ink-analyzer#readme), [language server (ink-lsp-server) crate README](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/lsp-server#readme) on GitHub (and [crates.io](https://crates.io/crates/ink-lsp-server)), [language server (ink-lsp-server) crate rustdoc](https://docs.rs/ink-lsp-server/latest/ink_lsp_server/) library documentation on docs.rs and extensive inline source documentation. | The language server's README is published on both [GitHub](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/lsp-server#readme) and [crates.io](https://crates.io/crates/ink-lsp-server). It contains instructions for installation and usage, and links to crate's associated library documentation on docs.rs. | +| **0c.** | Testing and Testing Guide | [Testing guide](https://github.com/ink-analyzer/ink-analyzer#testing). | Extensive unit tests and integration tests are implemented for the crate. Unit tests for each feature are implemented it's parent submodule under the dispatch module (i.e [dispatch/actions.rs](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/lsp-server/src/dispatch/actions.rs) for diagnostics and [dispatch/handlers/request.rs](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/lsp-server/src/dispatch/handlers/request.rs) for completions, code/intent actions and hover content). Integration tests for each feature can be found in the [tests directory of the language analyzer crate](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/lsp-server/tests) (i.e [diagnostics](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/lsp-server/tests/diagnostics.rs), [completions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/lsp-server/tests/completions.rs), [code/intent actions](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/lsp-server/tests/actions.rs) and [hover content](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/lsp-server/tests/hover.rs)). | +| **0d.** | Docker | [Dockerfile](https://github.com/ink-analyzer/ink-analyzer/blob/master/Dockerfile). | | +| 1. | Language Server: Rust binary crate: ink! Language Server Protocol implementation | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [Language server crate (ink-lsp-server)](https://crates.io/crates/ink-lsp-server). | | + + +**Additional Information** + +Please use the [master branch](https://github.com/ink-analyzer/ink-analyzer/tree/master) for testing, another branch will be used for continued work until the completion of the review. diff --git a/deliveries/ismp-milestone-delivery.md b/deliveries/ismp-milestone-delivery.md new file mode 100644 index 000000000..0d52c1cb8 --- /dev/null +++ b/deliveries/ismp-milestone-delivery.md @@ -0,0 +1,60 @@ +# Milestone Delivery :mailbox: + +> ⚡ Only the GitHub account that submitted the application is allowed to submit milestones. +> +> Don't remove any of the mandatory parts presented in bold letters or as headlines! Lines starting with `>`, such as this one, can be removed. + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [https://github.com/w3f/Grants-Program/blob/master/applications/ismp.md](https://github.com/w3f/Grants-Program/blob/master/applications/ismp.md) +* **Milestone Number:** 1 & 2 + +**Context** +> This presents the completion of ISMP. Trustless state machine based messaging protocol. + +**Deliverables** + +### **`ismp-rs`** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License |[https://github.com/polytope-labs/ismp-rs/blob/main/LICENSE](https://github.com/polytope-labs/ismp-rs/blob/main/LICENSE)| | +| 0b. | Documentation |[https://github.com/polytope-labs/ismp-rs/blob/main/README.md](https://github.com/polytope-labs/ismp-rs/blob/main/README.md)| | +| 0c. | Testing and Testing Guide |[https://github.com/polytope-labs/ismp-rs/tree/main/ismp-testsuite](https://github.com/polytope-labs/ismp-rs/tree/main/ismp-testsuite)| Presents a testsuite that can be verified from the latest [CI checks](https://github.com/polytope-labs/ismp-rs/actions/runs/5111348956) and workflow file.| +| 0d. | Docker |[https://github.com/polytope-labs/ismp-rs#run-test-in-docker](https://github.com/polytope-labs/ismp-rs#run-test-in-docker)| | +| 0e. | Article | TBA | | +| 0f. | ISMP Specification |[https://github.com/polytope-labs/ismp](https://github.com/polytope-labs/ismp)| | +| 1 | `ismp-rs` |[https://github.com/polytope-labs/ismp-rs](https://github.com/polytope-labs/ismp-rs)| | +| 1a. | `ISMPHOST` |[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/host.rs#L37](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/host.rs#L37)| | +| 1b. | `ISMPRouter` |[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/router.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/router.rs)| | +| 1c. | `ISMPModule` |[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/module.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/module.rs)| | +| 1d. | `ConsensusClient` |[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L91](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L91)| | +| | Request/Response proof verification |[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L123](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L123)| | +| | Request Timeout verification |[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/messaging.rs#L160](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/messaging.rs#L160)| | +| 1e. | Handlers |[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers.rs)| | +| | `CreateConsensusClient` |[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L91](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L91)| | +| | `ConsensusMessage` |[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L28](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L28)| | +| | `RequestMessage` |[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/request.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/request.rs)| | +| | `ResponseMessage` |[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/response.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/response.rs)| | +| | `TimeoutMessage` |[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/timeout.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/timeout.rs)| | + + +### **`pallet-ismp`** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License |[https://github.com/polytope-labs/substrate-ismp/blob/main/LICENSE](https://github.com/polytope-labs/substrate-ismp/blob/main/LICENSE)| | +| 0b. | Documentation |[https://github.com/polytope-labs/substrate-ismp/blob/main/README.md](https://github.com/polytope-labs/substrate-ismp/blob/main/README.md)| | +| 0c. | Testing and Testing Guide |[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/tests.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/tests.rs)| Presents unit tests that can be verified from the latest [CI checks](https://github.com/polytope-labs/substrate-ismp/actions/runs/5123249573) and workflow file.| +| 0d. | Docker |[https://github.com/polytope-labs/substrate-ismp#run-test-in-docker](https://github.com/polytope-labs/substrate-ismp#run-test-in-docker)| | +| 0e. | Article| TBA | | +| 1. | pallet-ismp |[https://github.com/polytope-labs/substrate-ismp](https://github.com/polytope-labs/substrate-ismp)| | +| 1a. | Host |[https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/host.rs#L48](https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/host.rs#L48)| | +| 1b. | Router |[https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/dispatcher.rs#L48](https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/dispatcher.rs#L48)| | +| 1c. | `ParachainConsensusClient` |[https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/parachain/src/consensus.rs#L115](https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/parachain/src/consensus.rs#L115)| | +| 1d. | RPC |[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/rpc/src/lib.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/rpc/src/lib.rs)| | +| 1e. | Runtime-APIs |[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/runtime-api/src/lib.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/runtime-api/src/lib.rs)| | +| 1f. | Bechmarks |[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/benchmarking.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/benchmarking.rs)| | + +**Additional Information** +This delivery contains both milestones for the ISMP proposal as `pallet-ismp` is dependent on `ismp-rs`. diff --git a/deliveries/kuma-wallet_milestone_2.md b/deliveries/kuma-wallet_milestone_2.md new file mode 100644 index 000000000..ee94a48af --- /dev/null +++ b/deliveries/kuma-wallet_milestone_2.md @@ -0,0 +1,23 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Kuma Wallet Grant](https://github.com/w3f/Grants-Program/blob/master/applications/cross-chain-wallet.md) +* **Milestone Number:** 2 + +**Context** (optional) + +Kuma Wallet is the first of its kind, a cross-chain wallet that offers seamless management and transfer of assets between EVM and WASM chains. This wallet has been designed to make the experience of handling cross-chain assets as smooth and intuitive as possible. With Kuma Wallet, users can easily import and create accounts on both EVM and WASM chains and transfer their assets with ease, thanks to the integration of XCM. The sleek and user-friendly design of Kuma Wallet has been inspired by the highly successful Astar UI. We are committed to providing ongoing support to Kuma Wallet, including the establishment of Telegram and Discord channels, to ensure that users have a platform for feedback and to address any issues that may arise. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/blockcoders/kuma-wallet/blob/main/LICENSE | MIT | +| 0b. | Documentation | https://github.com/blockcoders/kuma-wallet/blob/main/README.md, https://github.com/blockcoders/kuma-wallet/blob/main/README-es.md | **english** and **spanish** versions of the documentation | +| 0c. | Testing Guide | https://github.com/blockcoders/kuma-wallet#running-locally | Unit test and end to end tests will cover the core functions to ensure everything works as expected | +| 1. | Custom tokens | https://github.com/blockcoders/kuma-wallet/blob/main/src/pages/manageAssets/ManageAssets.tsx | Enable users to add custom tokens and networks/chains to the wallet. | +| 2. | Mesasges EVM - WASM | https://github.com/blockcoders/kuma-wallet/blob/main/src/pages/signMessage/SignMessage.tsx | Provide the ability to sign messages for EVM and WASM accounts. | +| 3. | Transfer EVM - WASM | https://github.com/blockcoders/kuma-wallet/blob/main/src/pages/send/Send.tsx | Allow users to transfer assets between their own EVM and WASM accounts on the same chain. | +| 4. | Transaction history | https://github.com/blockcoders/kuma-wallet/blob/main/src/entries/background/index.ts | Show users their transaction history for both EVM and WASM accounts. | +| 5. | Explorer link | https://github.com/blockcoders/kuma-wallet/blob/main/src/constants/chains.ts | Provide links to explorer pages for enhanced transparency and accountability. | \ No newline at end of file diff --git a/deliveries/kuma-wallet_milestone_3.md b/deliveries/kuma-wallet_milestone_3.md new file mode 100644 index 000000000..33ff58ba5 --- /dev/null +++ b/deliveries/kuma-wallet_milestone_3.md @@ -0,0 +1,22 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Kuma Wallet Grant](https://github.com/w3f/Grants-Program/blob/master/applications/cross-chain-wallet.md) +* **Milestone Number:** 3 + +**Context** (optional) + +Kuma Wallet is the first of its kind, a cross-chain wallet that offers seamless management and transfer of assets between EVM and WASM chains. This wallet has been designed to make the experience of handling cross-chain assets as smooth and intuitive as possible. With Kuma Wallet, users can easily import and create accounts on both EVM and WASM chains and transfer their assets with ease, thanks to the integration of XCM. The sleek and user-friendly design of Kuma Wallet has been inspired by the highly successful Astar UI. We are committed to providing ongoing support to Kuma Wallet, including the establishment of Telegram and Discord channels, to ensure that users have a platform for feedback and to address any issues that may arise. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/blockcoders/kuma-wallet/blob/main/LICENSE | MIT | +| 0b. | Documentation | https://github.com/blockcoders/kuma-wallet/blob/main/README.md, https://github.com/blockcoders/kuma-wallet/blob/main/README-es.md | **english** and **spanish** versions of the documentation | +| 0c. | Testing Guide | https://github.com/blockcoders/kuma-wallet#running-locally | Unit test and end to end tests will cover the core functions to ensure everything works as expected | +| 1. | XCM/XVM standard for transfers | https://github.com/kumawallet/extension/blob/main/src/constants/xcm.ts | Implement the XCM/XVM standard to enable the transfer of assets between EVM and WASM accounts on different chains. | +| 2. | Call to custom smart contracts | https://github.com/kumawallet/extension/blob/main/src/pages/callContract/CallContract.tsx | Provide the ability to call custom smart contracts for both EVM and WASM accounts. | +| 3. | Transactions to custom smart contracts | https://github.com/kumawallet/extension/blob/main/src/providers/txProvider/TxProvider.tsx | Enable users to execute transactions on custom smart contracts for both EVM and WASM. | +| 4. | Open Beta | https://kumawallet.io/, https://chrome.google.com/webstore/detail/kuma-wallet/hbinmkhlebcnghpikoekkbeljbealbje, https://addons.mozilla.org/en-US/firefox/addon/kuma-wallet/, https://twitter.com/getkuma/status/1678075363165888513 | Create an open Beta of the wallet for Moonbeam and Astar users to test it (with both mainnets and testnets available). Telegram and Discord channels will be created for the beta that will be announced on Twitter. | \ No newline at end of file diff --git a/deliveries/liberland-2.md b/deliveries/liberland-2.md new file mode 100644 index 000000000..94940467e --- /dev/null +++ b/deliveries/liberland-2.md @@ -0,0 +1,71 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Liberland grant application](https://github.com/w3f/Grants-Program/blob/master/applications/liberland.md) +* **Milestone Number:** 2 + +**Context** (optional) +> Liberland has implemented on chain registries for companies, land and assets. This, in combination with the upcoming judiciary, allows the full running of traditional businesses, as well as smart and dumb contracts completely on-chain. + +**Deliverables** +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [LICENSE-MIT](https://github.com/liberland/liberland_substrate/blob/main/LICENSE-MIT) | All contributed code is MIT | +| 0b. | Documentation | [liberland/liberland.github.io](https://liberland-1.gitbook.io/wiki/v/public-documents/blockchain/for-developers-and-testers) | Inline code documentation can be found in our main [node repo](https://github.com/liberland/liberland_substrate) , Other documentation and guides can be found on [gitbook](https://liberland-1.gitbook.io/wiki/v/public-documents/blockchain/for-developers-and-testers) | +| 0c. | Testing Guide | [Testing guide](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#) | ... | +| 0d. | Docker |[Docker](https://hub.docker.com/r/liberland/blockchain-node)| Uses testnet chainspec | +| 0e. | Article |[Draft](https://docs.google.com/document/d/1IiOEka3eZOOyM7GuT5aVJYihdSz3qYbWqwcTNS_Pvqg)| Article draft| +| 1. | Land owner Pallet |[Modified NFTs pallet](https://github.com/liberland/liberland_substrate/tree/main/frame/nfts), [Office pallet](https://github.com/liberland/liberland_substrate/tree/develop/frame/office), [Geo Checks](https://github.com/liberland/liberland_substrate/pull/291/files#diff-2126ae6766e9fabbb2462c7c1d2b0494c27b7c6e518f4672b1cc3a9d335afb3cR323), [Instructions](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.98cfecawie0o)| Uses office pallet, see additional info and testing guide| +| 2. | Metaverse integration pallet |Similar to Land owner pallet + [Test metaverse build](https://liberverse.net), [Chain-metaverse middleware API](http://api.liberverse.net/v1/plots), [Middleware code open sourced](https://github.com/DorianSternVukotic/liberland-middleware-api)| Land owner instance + middleware | +| 3. | Company registration pallet |[Registry](https://github.com/liberland/liberland_substrate/tree/main/frame/registry)| Uses office pallet| + +**Additional Information** +> Any further comments on the milestone that you would like to share with us. +#### Main repo: https://github.com/liberland/liberland_substrate/ +#### A live testnet can be accessed here: +[Testnet](https://polkadot.js.org/apps/?rpc=wss%253A%252F%252Ftestchain.liberland.org%252F#) + +[Frontend](https://testnet.liberland.org/signin) +#### Mainnet (may not be up to date with features mentioned in the grant) +Dont test delivery with ~~[Mainnet](https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fmainnet.liberland.org#/explorer)~~ + +Dont test delivery with ~~[Mainnet Frontend](https://blockchain.liberland.org/signin)~~ + +For the last few months we have been focusing on getting all features ready to launch the mainnet. +This includes grant related tasks and others. We expanded the political system, adding a separation of power between +Congress, Senate, LLM tokens and headcount citizens. There is now support for underage citizens, legislation vetoes, new vote delegation system, +the offices pallet, KYC for validators. + +For grant related tasks, we added the office pallet, registries and metaverse integration. + +The offices pallet are meant to mimic real world government offices on-chain. It allows clerks to execute permissioned calls on behalf of the office. +For example, an identity registrar is a wallet address of the Ministry of Interior office, and any Ministry of Interior clerk can +dispatch provideJudgement calls as the Ministry of Interior. Clerks have sets of permissions - which calls they can or cannot dispatch. +Clerks can be hired or fired by the office Admin, and office admins are appointed through the political system. +All of our registries have a corresponding instance of the office pallet. + +Liberland registry pallets allow companies and assets to be registered on-chain. In combination with the upcoming judiciary system, this +will allow running of traditional businesses, smart and dumb contracts on chain. For example, an insurance company could operate entirely +on-chain, with disputes handled via a traditional-like court system that has the limited power to enforce wordy contracts, allowing for +much greater confidence in and adoption of on-chain businesses. + +Company registry pallet and companyRegistryOffice are custom pallets that handle the requirements of business registration, explained +more in depth in the [testing guide](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.jdlftz66hx0s). +A missing upcoming WIP feature is selective encryption of data - for example, not all company shareholders may want to be public, +but they still need to be known to the Registry and be able to prove their data in a ZK way. + +Land, Metaverse Land and Asset registries are office-managed collections of the nfts pallet. We have a LandRegistryOffice, +MetaverseLandRegistryOffice and AssetRegistryOffice that all behave more or less in the same way. +See [testing guide](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.jdlftz66hx0s) for details. + +Since nfts pallet provided most functionality that was required, we did not have to create a whole new metaverse integration pallet from +scratch, Instead we modified it to provide metadata validation of geocoordinates and created integration middleware in the form of a public API that reads +metaverse plots of lands from the blockchain and is connected to the metaverse. The flow of data is Blockchain nfts -> middleware API -> metaverse. Some of the geo checks include making sure a land nft is within configurable coordinates, format of geocoordinates is correct, land plot is a closed loop, land plot doesnt self intersect etc... + +- [Register, Manage and run on-chain companies](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.la6hgf9tw9qp) +- [Register virtual land, where the land in the metaverse is managed by a pallet](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.98cfecawie0o) +- [Trade with on-chain assets, NFT's and LLM](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.r11hvyl51i4a) +- [e-citizenship, you can apply for an e-citizenship](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.pph4a9bhmlev) + + diff --git a/deliveries/openrollup-mvp-phase-1-milestone-1.md b/deliveries/openrollup-mvp-phase-1-milestone-1.md new file mode 100644 index 000000000..5cf832196 --- /dev/null +++ b/deliveries/openrollup-mvp-phase-1-milestone-1.md @@ -0,0 +1,34 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Open rollup - MVP - Phase 1](https://github.com/w3f/Grants-Program/blob/master/applications/openrollup-mvp-phase-1.md) +* **Milestone Number:** 1 + +**Context** + +Open rollup pallet provides a general zk-rollup framework for all substrate-based blockchains. The milestone completes the Pallet of the Substrate. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [LICENSE] | Apache 2.0 | +| 0b. | Documentation | [README] | The README introduces the repository and its functionality. The source code is documented. | +| 0c. | Testing Guide | [README] | The README describes how to test the game client. | +| 0d. | Docker | [Node:Dockerfile] | The Dockerfile can be used to run test. | +| 0e. | Article | [Node:pallet-publish.md] | The article explains what was done. | +| 1. | Open rollup Pallet | [Node:Github] | We have implemented the core data types and the functions of Open rollup pallet. | +| 2. | Miden verifier in Open rollup Pallet | [Node:VerifierMod] [Node:VerifierMiden]| We have implemented the verifier trait, and a miden verifier. | + +[License]: https://github.com/open-rollup/pallet-open-rollup/blob/w3f-grant-phase-1-milestone-1/LICENSE +[README]: https://github.com/open-rollup/pallet-open-rollup/blob/w3f-grant-phase-1-milestone-1/README.md +[Node:Dockerfile]: https://github.com/open-rollup/pallet-open-rollup/blob/w3f-grant-phase-1-milestone-1/Dockerfile +[Node:pallet-publish.md]: https://github.com/open-rollup/blog/blob/main/pallet-publish.md +[Node:Github]: https://github.com/open-rollup/pallet-open-rollup/tree/w3f-grant-phase-1-milestone-1 +[Node:VerifierMod]: https://github.com/open-rollup/pallet-open-rollup/blob/w3f-grant-phase-1-milestone-1/src/verifier/mod.rs +[Node:VerifierMiden]: https://github.com/open-rollup/pallet-open-rollup/blob/w3f-grant-phase-1-milestone-1/src/verifier/miden_verifier.rs + +**Additional Information** + +It is still very difficult to develop a practical [Miden-vm](https://github.com/0xPolygonMiden/miden-vm) program, and we will continue to study the development of zkvm in the future. diff --git a/deliveries/patron-milestone-1.md b/deliveries/patron-milestone-1.md new file mode 100644 index 000000000..93aff8367 --- /dev/null +++ b/deliveries/patron-milestone-1.md @@ -0,0 +1,167 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/patron.md +* **Milestone Number:** 1 + +**Deliverables** + +| Number | Deliverable | Link | Notes | +|--------|-------------------------------|----------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------| +| 0a. | License | https://github.com/Brushfam/patron-backend/blob/master/LICENSE | | +| 0b. | Documentation | https://github.com/Brushfam/patron-backend/tree/master/docs | | +| 0c. | Testing guidelines | | The server is covered by unit tests | +| 0d. | Docker | https://github.com/Brushfam/patron-backend/blob/master/crates/builder/src/process/container.rs | Containers are instantiated for each contract verification individually | +| 0e. | Article | https://medium.com/brushfam/patron-is-your-one-stop-smart-contract-manager-for-polkadot-ecosystem-b1f89a48ba40 | | +| 1a. | Backend storage | https://github.com/Brushfam/patron-backend/tree/master/crates/db | PostgreSQL, S3-compatible storage | +| 1b. | Sync server | https://github.com/Brushfam/patron-backend/tree/master/crates/server | | +| 1c. | Smart contract builder | https://github.com/Brushfam/patron-backend/tree/master/crates/builder/src | | +| 2a. | Web UI | https://patron.works/ | can be used for authentication, searching contracts details, review user build sessions | +| 2b. | Detailed contract information | https://github.com/Brushfam/patron-frontend/blob/master/src/pages/CodeHashWindow.tsx | provided fields such as code hash, timestamp, session build logs, contract addresses etc. | +| 2c. | User authentication | https://github.com/Brushfam/patron-backend/blob/master/crates/patron/src/commands/auth.rs | Patron uses SubConnect integration | +| 3a. | Developer CLI utility | https://github.com/Brushfam/patron-backend/tree/master/crates/patron | developer-oriented CLI utility | + +Testing this delivery: +- Deliverable 0b.: + - The documentation for usage is available in the [main project repository](https://github.com/Brushfam/patron-backend): + - CLI documentation: https://github.com/Brushfam/patron-backend/blob/master/docs/cli.md + - Self-hosting documentation: https://github.com/Brushfam/patron-backend/blob/master/docs/self-hosted.md +- Deliverable 0c.: + - Ensure that you have a Rust toolchain available (if you don't, you can use the Nix development shell to acquire one, `nix develop`) + - We provide unit tests for API server, which can be launched with the following command: + ```sh + cargo test + ``` +- Deliverable 0d.: + - We provide Docker images for the contract builder process and API server. Contract builder process image + is used to provide an environment for the contract build itself, and is a necessary component that has to be used with a container engine such as Docker. + The API server is provided as a Docker image too, but can also be built and deployed without Docker. + - API server Docker image can be downloaded from [main project repository](https://github.com/Brushfam/patron-backend) releases + or built with Nix tooling: + ```sh + nix build .#docker.server + ``` + - Contract builder process Docker image can be built with Nix tooling + (it's necessary to provide a way to modify self-hosted domain): + ```sh + nix build .#docker.ink-builder + ``` +- Deliverable 0e.: + - [Article](https://medium.com/brushfam/patron-is-your-one-stop-smart-contract-manager-for-polkadot-ecosystem-b1f89a48ba40) +- Deliverable 1a.: + - To test this deliverable, you need to prepare a working instance of a PostgreSQL database and configure your local project + with instructions available in the [self-hosting documentation](https://github.com/Brushfam/patron-backend/blob/master/docs/self-hosted.md). + - Build the project with `cargo` or `nix`: + ```sh + cargo build --release + ``` + or + ```sh + nix build .# + ``` + - Run database migrations: + ```sh + ./target/release/migration + ``` +- Deliverable 1b.: + - Ensure that you have the database prepared with instructions from the deliverable 1a. + - Initialize the database with the following command: + ```sh + ./target/release/event_client initialize [name] [url] [schema] + ``` + For example, to initialize an Astar node: + ```sh + ./target/release/event_client initialize astar wss://1rpc.io:443/astr astar + ``` + - Start watching for new events from this node using the following command: + ```sh + ./target/release/event_client watch astar + ``` + - See [self-hosting documentation](https://github.com/Brushfam/patron-backend/blob/master/docs/self-hosted.md) for more + details on how to use the event client (also known as sync server). +- Deliverable 1c.: + - Ensure that you have the database prepared with instructions from the deliverable 1a. + - For testing this deliverable, you can either use hosted or self-hosted versions of smart contract builder. + - For testing the hosted version, refer to deliverable 3a testing instructions. + - For testing self-hosted version, you'll need a Linux server with Docker, `udisks2`, `fallocate` and `mkfs.ext4` available. + - More information on why these components are required is available [here](https://github.com/Brushfam/patron-backend/blob/master/docs/self-hosted.md#smart-contract-builder) + - Build the smart contract builder Docker image with Nix, while changing the preferred domain to a custom one in a + [flake.nix file](https://github.com/Brushfam/patron-backend/blob/202c60325a51af0b7762e1b72e4d609adbbdd56e/flake.nix#L61): + ```sh + nix build .#docker.ink-builder + ``` + - Load the resulting image with `docker` CLI: + ```sh + docker load < result + ``` + - Configure the smart contract builder according to the [self-hosting documentation](https://github.com/Brushfam/patron-backend/blob/master/docs/self-hosted.md). + - Start the smart contract builder with the following command: + ```sh + ./target/release/builder serve + ``` +- Deliverable 2a.: + - You can use [our website](https://patron.works) to test the hosted version of the web UI. You can use data from Astar + network to test the hosted version. + - [Self-hosted version](https://github.com/Brushfam/patron-frontend) can be built with the following command: + ```sh + npm i + REACT_APP_SERVER_URL=https://api.example.com npm run build + ``` + Replace `https://api.example.com` with the URL of your API server. + + To test non-production builds with built-in HTTP server you can use the following command: + ```sh + npm i + REACT_APP_SERVER_URL=https://api.example.com npm start + ``` +- Deliverable 2b.: + - You can search contract addresses and verified code hashes using the main page search bar. + - Contract address info will provide you with information on the contract's code hash, events, + source code and build log (if available). + - Verified code hashes will provide you with the source code and build log. +- Deliverable 2c.: + - There are two separate authentication flows available - website and CLI flow. + - For CLI flow refer to deliverable 3a. + - For website flow, open either [hosted](https://patron.works) or self-hosted versions of a website. + - Click on the "Log in" button in the top-right corner of a screen. + - Choose a wallet that you would like to use for authentication purposes. + - Sign a message with the provided wallet (there are no fees associated with any wallet interactions). +- Deliverable 3a.: + - Ensure that you have a Rust toolchain available + (`cargo-contract` installation is optional, as the CLI will attempt to download it automatically) + - Your project needs to have a `Deploy.toml` file, which describes the tooling versions with which + it has to be built. Consult the [CLI documentation](https://github.com/Brushfam/patron-backend/blob/master/docs/cli.md#deploy) + for more information on that. + - CLI provides developers with two commands - `auth` and `deploy`. + - `auth` + - `auth` command allows users to authenticate themselves to the API server. + - To use `auth` in a self-hosted environment you need to pass additional `-s` and `-w` flags: + ```sh + patron auth -s https://api.example.com -w https://example.com + ``` + Where `https://api.example.com` is the URL of your API server, and `https://example.com` + is the URL of your web UI. + - Omit `-s` and `-w` flags to use the hosted version of an API server and web UI. + - After running the `auth` command, the CLI will automatically try to open the browser + for authentication purposes. If your platform does not support that functionality, + you can always open the URL manually, as it's in the same terminal. + - Use the same authentication instructions as were provided in the deliverable 2c. + - `deploy` + - `deploy` command is your entrypoint for smart contract deployment purposes. + - The interface is similar to that of a `cargo-contract`, and many flags that + are available to upload and instantiate a contract are available here. + - For testing, we can deploy to local `substrate-contracts-node` instance, which can be built using these commands: + ```sh + git clone https://github.com/paritytech/substrate-contracts-node + cd substrate-contracts-node + cargo run + ``` + - To deploy your smart contract, write the following command, replacing placeholders with the correct values for your contract: + ```sh + patron deploy [constructor] --suri [suri] + ``` + `[constructor]` placeholder is the constructor method name, that will be called during instantiation phase. + `[suri]` is your secret URI string, which is passed verbatim to `cargo-contract`. For testing purposes we can use `//Alice`. + - The build process will start as soon as there are available smart contract builder instances. In this case, + you should see build logs appearing on your screen, allowing you to trace the build itself. \ No newline at end of file diff --git a/deliveries/project_aurras_mvp_phase_2_milestone-1.md b/deliveries/project_aurras_mvp_phase_2_milestone-1.md new file mode 100644 index 000000000..080fb0936 --- /dev/null +++ b/deliveries/project_aurras_mvp_phase_2_milestone-1.md @@ -0,0 +1,25 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/project_aurras_mvp_phase_2.md +* **Milestone Number:** 1 + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/HugoByte/aurras/blob/master/LICENSE | | +| 0b. | Documentation | https://github.com/HugoByte/openwhisk-client-rust#usage
https://github.com/HugoByte/aurras/tree/next/workflow/composer#usage | | +| 0c. | Testing Guide | https://github.com/HugoByte/openwhisk-client-rust#test
https://github.com/HugoByte/aurras/tree/next/workflow/composer#test
+https://github.com/HugoByte/aurras/tree/next/workflow#testing | | +| 1a. | Workflow Composer: Rust OpenWhisk Client Library | https://github.com/HugoByte/openwhisk-client-rust | | +| 1b. | Workflow Composer: Composer | https://github.com/HugoByte/aurras/tree/next/workflow/composer | | +| 1c. | Workflow Composer: Pipe | https://github.com/HugoByte/aurras/blob/next/workflow/workflow_macro/src/lib.rs#L85 | | +| 1d. | Workflow Composer: structured YAML file | https://github.com/HugoByte/aurras/blob/next/workflow/examples/STRUCTURED_YAML.yaml | | +| 1e. | Workflow Composer: Concat Operator | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/functions.py#L362 | | +| 1f. | Workflow Composer: Map Operator | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/functions.py#L538 | | +| 2. | Predefined boiler plate | https://github.com/HugoByte/aurras/tree/next/workflow/boilerplate | | +| 3a. | Flow Provider | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/flow.py | | +| 3b. | Task Provider | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/task.py | | +| 3c. | Workflow Provider | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/workflow.py | | diff --git a/deliveries/project_aurras_mvp_phase_2_milestone-2.md b/deliveries/project_aurras_mvp_phase_2_milestone-2.md new file mode 100644 index 000000000..fb7aee6f5 --- /dev/null +++ b/deliveries/project_aurras_mvp_phase_2_milestone-2.md @@ -0,0 +1,17 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/project_aurras_mvp_phase_2.md +* **Milestone Number:** 2 + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/HugoByte/aurras/blob/master/LICENSE | | +| 0b. | Documentation | https://github.com/HugoByte/aurras/tree/next/workflow/workflow_macro | | +| 0c. | Testing Guide | https://github.com/HugoByte/aurras/tree/next/workflow/workflow_macro#testing | | +| 0d. | Docker File | https://github.com/HugoByte/aurras/blob/next/workflow/Dockerfile | | +| 1a. | Workflow Composer: Flow Macro | https://github.com/HugoByte/aurras/blob/next/workflow/workflow_macro/src/lib.rs | | +| 1b. | staking and payout features for scs/substrate-api-client | https://github.com/scs/substrate-api-client/pull/294 | This deliverable is introduced as a work around for a blocker for the action timeout, This has also significantly increased the performance. [Source](https://github.com/w3f/Grants-Program/blob/master/applications/project_aurras_mvp_phase_2.md#update--amendments)
cargo test --features staking-xt | \ No newline at end of file diff --git a/deliveries/qrucial_dao_milestone_2.md b/deliveries/qrucial_dao_milestone_2.md new file mode 100644 index 000000000..7991bb8b2 --- /dev/null +++ b/deliveries/qrucial_dao_milestone_2.md @@ -0,0 +1,28 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Contract](https://github.com/w3f/Grants-Program/blob/master/applications/QRUCIAL_DAO.md) +* **Milestone Number:** 2 + +**Context** +We have developed the frontend of QRUCIAL DAO, extended the system, fixed bugs and wrote the full how-to article. We started the live testnet. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [Link](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/LICENSE) | - | +| 0b. | Documentation | [Wiki](https://github.com/Qrucial/QRUCIAL-DAO/wiki) | - | +| 0c. | Testing Guide | [Development and testing guide](https://github.com/Qrucial/QRUCIAL-DAO/wiki/Development-and-testing-guide) | - | +| 0d. | Docker | [Docker](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/docker/files/dockerfile) and [node-setup.sh](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/node-setup.sh) | The node-setup.sh prepares the system as a native node, while we also have the Docker image which starts the full system inside a container. Additionally ExoTools can be run as separate docker images. | +| 0e. | Article | [QDAO M2 article](https://cryptoctf.org/2023/06/08/delivery-of-qdao-milestone-2/)| - | +| 1. | ExoSys Deamon | [Source code](https://github.com/Qrucial/QRUCIAL-DAO/tree/milestone2/exosysd) | - | +| 2. | QRUCIAL DAO Frontend | [Frontend code](https://github.com/Qrucial/QRUCIAL-DAO/tree/milestone2/frontend/substrate-front-end-template) | - | +| 3. | ExoTool - CCA | [Added to audit script](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/exotools/docker/docker_files/scripts/audit_script.sh) | - | +| 4. | ExoTool - Octopus | [Added to audit script](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/exotools/docker/docker_files/scripts/audit_script.sh) | - | + +**Additional Information** +- You can use our live testnet to test the system: https://qrucial.io/ +- We keep the live testnet up to date to the main branch. If Alice key is depleted, contact us on Matrix. +- QDAO as a project is under development, changes are ongoing in the code. diff --git a/deliveries/rv_kmir-milestone_2.md b/deliveries/rv_kmir-milestone_2.md new file mode 100644 index 000000000..54f5cd58b --- /dev/null +++ b/deliveries/rv_kmir-milestone_2.md @@ -0,0 +1,25 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [RV KMIR](https://github.com/w3f/Grants-Program/blob/master/applications/rv-kmir.md) + +* **Milestone Number:** 2 + +**Deliverables** +Specify the syntax of MIR programs in K. + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| **0a.** | License | [BSD-3](https://github.com/runtimeverification/mir-semantics/blob/master/LICENSE) | +| **0b.** | Documentation | [kmir CLI instructions](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/kmir/README.md) | +| **0c.** | Testing and Testing Guide | [Testing Instructions with Docker](https://github.com/runtimeverification/mir-semantics/tree/milestone2-deliverable#running-integration-tests-with-docker) | +| **0d.** | Docker | [Dockerfile](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/Dockerfile) | +| 1. | KMIR syntax | [mir-syntax.k](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/kmir/k-src/mir-syntax.k) | +| 2. | **kmir** executable extension | [**kmir parse** implementation](https://github.com/runtimeverification/mir-semantics/blob/bd09e9d1716904afbbab2c0e27735202689d788e/kmir/src/kmir/__main__.py#L23), [**kmir parse** examples](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/kmir/README.md#examples) | + +**Additional Information** + +So far, we are able to pass ~3000 test cases in the conformance test cases, leaving 85 test cases not passes successfully. The unsuccessful test cases are due to tricky syntax rules or the lack of support in our K tool. + +We consider these tricky cases lower priority for the moment and will tackle it later while/ after we developping the execution semantics. \ No newline at end of file diff --git a/deliveries/sarp-basic-functionality-milestone-1.md b/deliveries/sarp-basic-functionality-milestone-1.md new file mode 100644 index 000000000..bdfd943f7 --- /dev/null +++ b/deliveries/sarp-basic-functionality-milestone-1.md @@ -0,0 +1,22 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [SARP - A Static Analysis Tool for Runtime Pallets](https://github.com/w3f/Grants-Program/blob/master/applications/sarp-basic-functionality.md) +* **Milestone Number:** 1 + + +**Deliverables** + + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| 0a. | License | [MIT](https://github.com/scs/MIRAI/blob/Milestone1_Research/LICENSE) | MIT | +| 0b. | User Documentation | | In the documentation we show how our examples can be run. Since we used official substrate examples, this can also be used by users who want to apply MIRAI to their own code base. A more elaborate user documentation will be added in future work packages. | +| 0c. | Testing and Testing Guide | See 0b. | The deliverables from 0b. serve as documented manual tests. | +| 1. | Prototype Code | See 0b. | +| 2. | Documentation | [Tag Analysis on Substrate Pallets](https://github.com/scs/MIRAI/blob/Milestone1_Research/substrate-examples/README.md) | | +| 3. | Engagement | [Github comment](https://github.com/w3f/Grants-Program/pull/1706#issuecomment-1564312572) | There was not much engagement needed for this first project, but we informed half-way through the project about our progress and got a positive feedback. | + + + diff --git a/deliveries/silent_data-milestone_1.md b/deliveries/silent_data-milestone_1.md new file mode 100644 index 000000000..a4286e00c --- /dev/null +++ b/deliveries/silent_data-milestone_1.md @@ -0,0 +1,25 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Silent Data Polkadot Integration ](https://github.com/annazambon/Grants-Program/blob/master/project_silentdata.md) +* **Milestone Number:** 1 + +**Context** + +Silent Data is a platform for proving properties of private off-chain data in blockchain smart contract applications. This milestone extends Silent Data to support Substrate based blockchains, with Polkadot being the main focus. The Silent Data web application now includes an integration with the polkadot{.js} wallet. Support for Sr25519 and Secp256k1 signatures has been added to allow signature verification in either ink! smart contracts or Substrate pallets. + +In order to improve the developer experience a Node.js library for interacting with the Silent Data API has been developed. We have also created both an example ink! smart contract and Substrate pallet to demonstrate how Silent Data can be used to securely provide off-chain data to blockchain applications. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License |[Node.js library](https://github.com/appliedblockchain/silentdata-node-public/blob/main/LICENSE)
[Smart contract](https://github.com/appliedblockchain/silentdata-polkadot-public/blob/main/LICENSE) | ...| +| 0b. | Documentation |[Silent Data whitepaper](https://www.linkedin.com/smart-links/AQEE0cyaT_nw0g)
[Node.js library](https://github.com/appliedblockchain/silentdata-node/blob/main/README.md)
[Smart contract](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/README.md) | ...| +| 0c. | Testing Guide |[Guide](https://docs.google.com/document/d/1B5woRIl_ZNuahx007V6nXmjW3_Ne4aQ4kVFB-I_Bu0M/edit?usp=sharing) | ...| +| 0d. | Docker |[Node.js library usage example](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/examples/Dockerfile)
[Silent Data pallet](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/docker/Dockerfile.node) | ...| +| 0e. | Article |[Polkadot Foundation Partnership Silent Data](https://www.linkedin.com/pulse/polkadot-foundation-partnership-silent-data-silentdata)| ...| +| 1. | Library |[silentdata-node](https://github.com/appliedblockchain/silentdata-node) | ...| +| 2. | Smart Contract |[silentdata-polkadot](https://github.com/appliedblockchain/silentdata-polkadot) | ...| +| 3. | Extension| ...| ...| diff --git a/deliveries/sirato-substrate-explorer-phase3-milestone1.md b/deliveries/sirato-substrate-explorer-phase3-milestone1.md new file mode 100644 index 000000000..22044c409 --- /dev/null +++ b/deliveries/sirato-substrate-explorer-phase3-milestone1.md @@ -0,0 +1,20 @@ +# Milestone Delivery + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/sirato_substrate_phase3.md +* **Milestone Number:** 1 + +**Context** + +In this milestone we are delivering the functionality to view blocks, extrinsics and events information. + +To test out the feature, please follow the simple steps in this [tutorial](https://github.com/web3labs/epirus-substrate/blob/main/explorer-ui/docs/blocks-exploration.md). + +**Deliverables** +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/web3labs/epirus-substrate/blob/main/LICENSE | Apache 2.0 | +| 0b. | Documentation | Project README: https://github.com/web3labs/epirus-substrate/tree/main/explorer-ui#readme
Video demo: https://www.loom.com/share/85fb7a8cbe6e40ba9bcadd804b7e6bc5 | | +| 0c. | Testing Guide | UI unit tests: https://github.com/web3labs/epirus-substrate/blob/main/explorer-ui/README.md#testing | | +| 0d. | Docker | UI Docker image: [ghcr.io/web3labs/epirus-substrate-ui:latest](https://github.com/web3labs/epirus-substrate/pkgs/container/epirus-substrate-ui)
Docker compose for running all explorer components locally: https://github.com/web3labs/epirus-substrate/tree/main/local-testnet | | +| 1. | Updated Explorer UI | https://github.com/web3labs/epirus-substrate/tree/main/explorer-ui | Source code for the blocks, extrinsics data display can be found in the `./src/components/blocks/` and `./src/components/extrinsics/` folders.| +| 2. | Public explorer instance | https://substrate.sirato.xyz | Public explorer instance for Rococo-Contracts. A new menu item `Blocks` has been added to the side navbar | diff --git a/deliveries/slothunter-milestone_1.md b/deliveries/slothunter-milestone_1.md new file mode 100644 index 000000000..24b861db8 --- /dev/null +++ b/deliveries/slothunter-milestone_1.md @@ -0,0 +1,21 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Slothunter](https://github.com/w3f/Grants-Program/blob/master/applications/slothunter.md) +* **Milestone Number:** 1 + +**Deliverables** +| Number | Deliverable | Specification | +| -----: | ----------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0a. | License | GPLv3 | +| 0b. | Documentation | There will be a guide to tell people how to use this. | +| 0c. | Testing guide | There will be a docker file and a guide to tell the auditor how to run the tests. It will guide you how to setup an auction and do the tests. | +| 1. | Auction winner calculator | Based on the 0c., run the binary, you should see the current winner from the terminal log. | +| 2. | Notification component | Based on the 0c., run the binary, you should receive these notification correctly. | +| 3. | Auto bidding/contributing component | Based on the 0c., run the binary, you should see you are bidding/contributing your parathread from the Polkadot Apps. | +| 4. | Slothunter configuration component | Based on the 3., you can customize your bidding/contributing strategy in a toml file, you should see your bidding/contributing behavior works the same as the strategy defined. | +| 5. | Releases | Linux, macOS, Windows prebuilt binaries, and crates.io release. | + +**Additional Information** +Please follow the [guide](https://github.com/hack-ink/slothunter/blob/main/test/guide.md) to test Slothunter. diff --git a/deliveries/societal-grant-3-milestone-1.md b/deliveries/societal-grant-3-milestone-1.md new file mode 100644 index 000000000..c9ecd5dea --- /dev/null +++ b/deliveries/societal-grant-3-milestone-1.md @@ -0,0 +1,22 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + + + +* **Application Document:** [Societal SaaS Application](https://github.com/w3f/Grants-Program/blob/master/applications/societal_saas_pricing.md) +* **Milestone Number:** 1 + + + +## Deliverables + + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License |[GitHub repo link](https://github.com/sctllabs/societal-node/blob/grant3_m1/LICENSE)| Apache 2.0 license included. | +| 0b. | Documentation |[GitHub repo link](https://github.com/sctllabs/societal-node/blob/grant3_m1/README.md) | Readme document contains instructions on how to run the node. All unit test have been included in the submission and can be run using: `cargo test` . Link to test command in [docs](https://github.com/sctllabs/societal-node/blob/grant3_m1#unit-test). You may also use the Testing Guide below for instructions to run the node. | +| 0c. | Testing Guide |[GitHub repo link](https://github.com/sctllabs/societal-node/blob/grant3_m1/docs/SubscriptionTestingGuide.md)| Guide on how to test DAO Subscription Pallet using Polkadot-JS front-end. | +| 0d. | Docker |[Docker Image](https://hub.docker.com/layers/societal/societal-node/grant3_m1-latest/images/sha256-21719afd8ec6237ffa4b12303da79b67ed078d7d5b160ef0a19ba9e20a061516?context=explore)| Dockerfile found at Societal's docker hub. The tag information is as follows: **docker pull societal/societal-node:grant3_m1-latest**. Please refer to the [Run in Docker](https://github.com/sctllabs/societal-node/blob/grant3_m1#run-in-docker) section of the README to run with the **grant3_m1-latest** tag specified. | +| 1. | Substrate Module: DAO Subscription Pallet |[GitHub repo link](https://github.com/sctllabs/societal-node/tree/grant3_m1/pallets/dao-subscription) | The custom substrate subscription pallet will require a DAO to pay a monthly subscription. This will allow the organizations members to interact on-chain without paying gas fees. | +| 2. | Client Modules | [Polkadot-JS](https://cloudflare-ipfs.com/ipns/dotapps.io/?rpc=ws://localhost:9944) | You can use Polkadot-JS to interact with the DAO pallets and follow the [Testing Article](https://github.com/sctllabs/societal-node/blob/grant3_m1/docs/SubscriptionTestingGuide.md) on how to work with the custom traits of the Subscription Pallet. | diff --git a/deliveries/solidity-verifier-for-accountable-light-client_milestone-1.md b/deliveries/solidity-verifier-for-accountable-light-client_milestone-1.md new file mode 100644 index 000000000..1da3caa3c --- /dev/null +++ b/deliveries/solidity-verifier-for-accountable-light-client_milestone-1.md @@ -0,0 +1,28 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/solidity-verifier-for-accountable-light-client.md +- **Milestone Number:** 1 + +**Context** + +This milestone contains two EIP compatibale elliptic curve precompile implementations. They have been merged into [paritytech/frontier](https://github.com/paritytech/frontier) through this [PR](https://github.com/paritytech/frontier/pull/1049/). + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------ | +| **0a.** | License | Apache-2.0 | follow [paritytech/frontier](https://github.com/paritytech/frontier)'s license | +| **0b.** | Documentation | [BLS12-377](https://paritytech.github.io/frontier/rustdocs/pallet_evm_precompile_bls12377/index.html), [BW6-761](https://paritytech.github.io/frontier/rustdocs/pallet_evm_precompile_bw6761/index.html) | | +| **0c.** | Testing and Testing Guide | [BLS12-377](https://github.com/paritytech/frontier/blob/master/frame/evm/precompile/bls12377/src/tests.rs), [BW6-761](https://github.com/paritytech/frontier/blob/master/frame/evm/precompile/bw6761/src/tests.rs) | | +| 1. | BLS12-377 precompile | [code](https://github.com/paritytech/frontier/blob/master/frame/evm/precompile/bls12377/src/lib.rs) | | +| 2. | BW6-761 precompile | [code](https://github.com/paritytech/frontier/blob/master/frame/evm/precompile/bw6761/src/lib.rs) | | + +**Additional Information** + +1. Update EIP-3026: Gas meter + https://github.com/ethereum/EIPs/pull/7006 + +2. Celo's EIP-2539 implmentation has a problem about Multiexponentiation. + https://github.com/celo-org/celo-blockchain/issues/2059 diff --git a/deliveries/substrate-tutorials-milestone_2.md b/deliveries/substrate-tutorials-milestone_2.md new file mode 100644 index 000000000..8c800d3c3 --- /dev/null +++ b/deliveries/substrate-tutorials-milestone_2.md @@ -0,0 +1,27 @@ + +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/substrate-tutorials.md +* **Milestone Number:** 2 + +**Context** + +This milestone deliverable consist into 6 exercises to learn substrate, put together in a proper and suitable format. + +**Deliverables** + +| Number | Deliverable | Specification | +| -----: | ----------- | ------------- | +| 0a. | License | Apache 2.0 | +| 0b. | Documentation | https://github.com/rusty-crewmates/substrate-tutorials | | +| 0c. | Testing Guide | https://github.com/rusty-crewmates/substrate-tutorials | There is not really a way to test it other than doing the tutorials yourself. The whole interset of the thing is in the pedagogy we deployed. You have to live it ;)| +| 0d. | Docker | After a few iteration used by students, we found out that our docker image used to run the tests was not usefull. So nothing here | +| 0e. | Article | We will tweet to anounce the finalization of milestone 2 | +| 1. | Exercise `genesis_config` | https://github.com/rusty-crewmates/substrate-tutorials/tree/main/exercises/ex08-genesis-config | +| 2. | Exercise `mocks` | https://github.com/rusty-crewmates/substrate-tutorials/tree/main/exercises/ex09-mock | +| 3. | Exercise `weight` | https://github.com/rusty-crewmates/substrate-tutorials/tree/main/exercises/ex06-weights | +| 4. | Exercise `hooks` | https://github.com/rusty-crewmates/substrate-tutorials/tree/main/exercises/ex05-hooks | +| 5. | Exercise `imbalances` | https://github.com/rusty-crewmates/substrate-tutorials/tree/main/exercises/ex07-imbalances | +| 6. | Exercise `external_workers` | https://github.com/rusty-crewmates/substrate-tutorials/tree/main/exercises/ex10-offchain-worker | diff --git a/deliveries/supersig_fellowship_m2.md b/deliveries/supersig_fellowship_m2.md new file mode 100644 index 000000000..dbd256299 --- /dev/null +++ b/deliveries/supersig_fellowship_m2.md @@ -0,0 +1,45 @@ +# Milestone Delivery :mailbox: + +> ⚡ Only the GitHub account that submitted the application is allowed to submit milestones. +> +> Don't remove any of the mandatory parts presented in bold letters or as headlines! Lines starting with `>`, such as this one, can be removed. + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/supersig_fellowship.md +* **Milestone Number:** 2 + +**Context** + +"A Supersig is a Multisig with superpowers" + +A new pallet, RPC and UI that enables organisations to benefit from much more flexibility than multisig, where users can add and remove members, as well as optionally add "Master" users that have more power than "Standard" users. + +Supersig is like multisig but with superpowers. This means that you have some added features such as: + +- you can add and remove members from the supersig. +- you get simpleMajority, instead of fixed thresholds. +- you get a master superuser feature. A master user always has 50% of the voting power. This means that if a master user is involved in a transaction, only one other person needs to sign in order to approve the transaction for execution. (*More than one person can be a master user). + +**This milestone is about creating a UI for chains that contain supersig pallet and rpc module.** + + +**Deliverables** +> Please provide a list of all deliverables of the milestone extracted from the initial application and a link to the deliverable itself. Ideally all links inside the below table should include a commit hash, which will be used for testing. If you don't provide a commit hash, we will work off the default branch of your repository. Thus, if you plan on continuing work after delivery, we suggest you create a separate branch for either the delivery or your continuing work. +> +> If there is anything particular about any of the deliverables we or a future reader should know, use the respective `Notes` column. + +| Number | Deliverable | Link | Notes | +| -----: | ----------- | ------------- | ---------- | +| 0a. | License | Apache 2.0 | | | +| 0b. | Documentation | https://github.com/decentration/supersig-ui#supersig-ui, https://decentration.medium.com/supersig-ui-simply-manage-your-orgs-250769f5367 | Run through the Readme docs or the article to learn how to set up the project. | +| 0c. | e2e workflow tester | https://github.com/decentration/supersig-ui | launch this on local machine, then go to Settings, where you can run through the workflow tester | +| 0d. | Docker | https://github.com/decentration/supersig-ui#docker | run this command to run supersig ui from your local machine in one click. `docker run --rm -it --name supersig-ui -p 3000:3000 decentration/supersig-ui:latest` | +| 0e. | Article and Video | https://decentration.medium.com/supersig-ui-simply-manage-your-orgs-250769f53679, https://www.loom.com/share/6c96b98b437e439ca1bd251ec0c2b937?sid=5854ef8b-a579-45a0-9702-6cf60f5277f8 | Medium Article and Video for reviewal. If you are the reviewer watch this so you can navigate this milestone with ease. | +| 1. | **Supersig UI** | https://github.com/decentration/supersig-ui | **This is the main event of the milestone...** simply clone, yarn and then yarn start | +| 2. | Substrate Chain | https://github.com/decentration/substrate-supersig-template/tree/v0.9.37-fix-unbounded | Follow the article how-to to get an exact step by step here | +| 3. | Polkadot JS Apps UI Fork | https://github.com/decentration/apps/tree/main-fellowship-1 | We are not current going to make a PR to the main repo because Jaco is not accepting outside teams. After talking to him, he said that he would only consider it if it is being used by many people, that probably means if supersig gets added not just insto statemine, but statemint, and other chains. However, that is no problem because we have a fork of polkadot js running here: https://apps.decentration.org | + + +**Additional Information** +> Any further comments on the milestone that you would like to share with us. diff --git a/deliveries/tokeneconomics-survey-2022-milestone_2.md b/deliveries/tokeneconomics-survey-2022-milestone_2.md new file mode 100644 index 000000000..aed76dfa8 --- /dev/null +++ b/deliveries/tokeneconomics-survey-2022-milestone_2.md @@ -0,0 +1,32 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) Pending setup of required corporate entities.** + +* **Application Document:** [Tokeneconomics Survey 2022](https://github.com/w3f/Grants-Program/blob/master/applications/tokenomics-survey-2022.md). + +* **Milestone Number:** 2 + +**Context** (optional) +This project uses Overleaf to simplify the setup. +Let me know if the reviewer prefers to be able to edit. + +Otherwise, [the Overleaf project can be viewed here](https://www.overleaf.com/read/wpwkmcztmytd). + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| -----: | ----------- | ------------- | ------------- | +| **0a.** | Copyright and Licenses | [Github (2cbf15a)](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a/LICENSE) | Creative Commons Attribution 4.0 International License (article), Dual Apache 2 or MIT License (code) | +| **0b.** | Documentation/Tutorial | [Github (2cbf15a)](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a/README.md) | We will update both **artifacts documentation** of the deliverables and a basic **tutorial** that explains how a user can (for example) execute the code included or can visualize data or use any artifacts included. | +| **0c.** | Methodology | [Github (2cbf15a)](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a/main.tex#L675) | Update the detailed explanation of how the results were achieved and how to reproduce/verify the results. | +| **0d.** | Infrastructure | [Github (2cbf15a)](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a/README.md#build-pdf) | We will update the list of all infrastructure requirements (text editors with proper versions, software packages, data packages, etc) that can be used to verify the deliveries with this milestone. LaTeX for article production and Docker files for software execution. | +| **0e.** | Article | [Github (2cbf15a)](https://raw.githubusercontent.com/taqtiqa-mark/tokenomics-survey-2022/main/milestones/milestone_2.pdf) | We will send a **draft article** (with source code), in the English language. There will be an acknowledgement "This work was supported by a research grant from the Web3 Foundation. The analysis and opinions expressed are the authors and do not reflect the opinions of the Web3 Foundation."| +| **0e.1** | Article | [As above](https://raw.githubusercontent.com/taqtiqa-mark/tokenomics-survey-2022/main/milestones/milestone_2.pdf) | We will publish an **working paper** as indicated above. | +| **0e.2** | - Section: Published models | [Github (2cbf15a)](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a/annotated_bibliography.bib) | Initial annotated bibliography | +| **0e.3** | - Section: Polkadot Parachain Economies | [Github (2cbf15a)](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a/main.tex#L278) | Parachain summary updated with references to published models | + +**Additional Information** + +Setup is simplified considerably by using Overleaf. +I expect to be able to devote more time to this in the coming weeks. +Hence, I hope the final milestone will be completed within a month. diff --git a/deliveries/tuxedo_milestone-3.md b/deliveries/tuxedo_milestone-3.md new file mode 100644 index 000000000..7a41a29d5 --- /dev/null +++ b/deliveries/tuxedo_milestone-3.md @@ -0,0 +1,31 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/tuxedo.md +* **Milestone Number:** 3 + +**Context** +Tuxedo is a runtime framework for writing Substrate runtimes in the UTXO model. +It is analogous (and an alternative) to FRAME which uses the accounts model. +This is the last of three milestones in the grant. + +In this milestone we focused on making Tuxedo approachable to new developers who want to use it in their Substrate runtimes. +The primary deliverables are in 0b and 0e for this milestone, so don't miss them. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [LICENSE file](https://github.com/Off-Narrative-Labs/Tuxedo/blob/milestone-3/LICENSE) | Apache 2.0, as recommended | +| 0b. | Documentation | [Hosted Rustdocs](https://off-narrative-labs.github.io/Tuxedo) | We have detailed rustdocs throughout the project; they are also hosted. These docs serve as a technical and architectural reference. | +| 0c. | Testing | [Readme Section](https://github.com/Off-Narrative-Labs/Tuxedo/blob/milestone-3#testing-and-code-quality) | Tests are run in CI and instructions for running them locally are in the readme. | +| 0d. | Docker | [Readme Section](https://github.com/Off-Narrative-Labs/Tuxedo/blob/milestone-3#docker), [Published Images](https://github.com/orgs/Off-Narrative-Labs/packages) | We provide docker images for both the template node and the PoC wallet as well as instructions for how to test the node with them. | +| 0e. | Full Tutorial | [Starter Code](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial/), [Complete Solutions](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial/tree/dex-solutions), [Walkthrough Video](https://www.youtube.com/watch?v=bWA2ksTmNBU) | Instead of the simple tutorial about passing around tokens from the original spec, we expanded this into a complete tutorial about adding an additional token to your runtime and designing a decentralized exchange between the two tokens. This tutorial contains written instructions, starter code, complete unit tests so you know when you have solved each part, and a complete solution example. We also worked through most of this tutorial live on Substrate Seminar. +| 1. | Template Piece | [Readme Section](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial#use-as-a-template), [Dex Template](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial/blob/dex-tutorial/dex/src/lib.rs) | We've decided to use the same starting point for our tutorial and for a general-purpose template. As explained in the readme, this makes it easier for learners to complete the tutorial and continue naturally on to their project. It also makes it easier for downstream projects to get updates to tuxedo core. + +**Additional Information** + +While The Order Book Dex tutorial linked above is the primary deliverable product, we also worked to make Tuxedo more accessible and visible to developers by appearing twice on Substrate Seminar. +* 1. Conceptual and Architectural Overview - https://www.youtube.com/watch?v=6AY5VqXIAcM +* 2. Live coding on the beta Dex Tutorial - https://www.youtube.com/watch?v=bWA2ksTmNBU diff --git a/deliveries/validated_streams-milestone_2.md b/deliveries/validated_streams-milestone_2.md new file mode 100644 index 000000000..1f63a9bea --- /dev/null +++ b/deliveries/validated_streams-milestone_2.md @@ -0,0 +1,31 @@ +# Milestone Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this milestone and the delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).** + +* **Application Document:** [Validated Streams](https://github.com/w3f/Grants-Program/blob/master/applications/validated-streams.md) +* **Milestone Number:** 2 + +**Context** + +We are delighted to announce the completion of the second and last milestone, marking the availability of the beta version of our project. This achievement includes a range of deliverables aimed at bringing all features to completion, enhancing functionality, testing, and documentation, and providing valuable insights through benchmarking. + +In addition to refining the code from the previous milestone, we have also developed a .NET Client IRC usage sample, with validators that witnessing and validating events happening in an IRC chat room, giving users a way to interact with the projects. Additionally, a network resilience example was been developed to examine the recovery mechanism employed by our custom block import for nodes that face networking failures, with a particular focus on handling unwitnessed events. Finally, we are about to run a benchmark on real hardware, testing our network's overall performance and will document the results in [the respective folder of the repository](https://github.com/comrade-coop/validated-streams/tree/main/samples/tps-benchmark/README.md). + +Plenty of integration and unit testing has been conducted, ensuring that core functions are thoroughly tested and robust under a variety of conditions. Furthermore, we have included Dockerfiles and a convenient test script, enabling the testing of all delivered functionalities. + +With this first beta version of our project, we think it is ready to be integrated into other projects. + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| **0a.** | License | [LICENSE](https://github.com/comrade-coop/validated-streams/blob/main/LICENSE) | MIT License | +| **0b.** | Documentation | [README](https://github.com/comrade-coop/validated-streams/blob/main/README.md) | Made sure inline documentation covers all the code delivered. Also, created and documented a few additional samples (all linked from the root README). | +| **0c.** | Testing and Testing Guide | [Running tests](https://github.com/comrade-coop/validated-streams/blob/main/README.md#testing)
[proofs/](https://github.com/comrade-coop/validated-streams/blob/main/consensus/src/proofs/tests.rs)
[events/](https://github.com/comrade-coop/validated-streams/blob/main/consensus/src/events/tests.rs)
[pallet/](https://github.com/comrade-coop/validated-streams/blob/main/pallet/src/tests.rs) | Core functions are fully covered by unit tests to ensure functionality and robustness. The guide describes how to run these tests. | +| **0d.** | Docker | [Main](https://github.com/comrade-coop/validated-streams/blob/main/Dockerfile)
[IRC](https://github.com/comrade-coop/validated-streams/blob/main/samples/irc/Dockerfile)
[Test script](https://github.com/comrade-coop/validated-streams/blob/main/samples/basic/run-example.sh)
[Benchmark](https://github.com/comrade-coop/validated-streams/blob/main/samples/tps-benchmark/Dockerfile) | Docker files and shell scripts can be used to test all the functionality delivered with this milestone. That includes scripts for simulating poor network conditions to facilitate an examination of the recovery mechanisms, specifically focusing on the handling of unwitnessed events | +| **0e.** | Article | [Google Docs link](https://docs.google.com/document/u/1/d/12EsVUDydsDWfngQP6-zYRiC-dFbn696Evr3VSxgcpjU/edit) | An article was drafted up and submitted to the grants/grantsPR email for review, as per the announcement guidelines. | +| 1. | Substrate module: Witnessed events block import |[Old](https://github.com/comrade-coop/validated-streams/blob/fa7e20c5f0bf34cd8b89f975eceb6e29955202ab/node/src/streams/services/witness_block_import.rs)

[New](https://github.com/comrade-coop/validated-streams/blob/main/consensus/src/block_import.rs) | A major question was how to allow syncing blocks when gossip delays/drops signatures. At first, we tried using DHT to provide event proofs for blocks. However, we realized that this approach would impose a substantial bandwidth consumption, and all we need is to enable faster syncing to the current finalized tip. We ended up deciding to make nodes experiencing networking failures invoke grandpa block import directly whenever they fall behind (is_major_syncing). As a result of this we have **departed** from the original solution of deferring events that was described in the grant proposal, hence the "old" and "new" links on the left. | +| 2. | Real-life testing | [TPS benchmark](https://github.com/comrade-coop/validated-streams/tree/main/samples/tps-benchmark) | *Work-in-progress.* While all the real-life benchmark code is there, we are still in the process of running it on real hardware, and will report the results once it's done. | +| 3. | .NET client sample | [IRC sample](https://github.com/comrade-coop/validated-streams/tree/main/samples/irc) | In this example we created trusted client IRC bots running alongside the validators to witnesses events happening in an IRC chat room and forward messages for validation to the validated streams chain. | + +**Additional Information** diff --git a/deliveries/zeropool-2-snjax.md b/deliveries/zeropool-2-snjax.md new file mode 100644 index 000000000..a2bb61048 --- /dev/null +++ b/deliveries/zeropool-2-snjax.md @@ -0,0 +1,31 @@ +# Milestone Delivery :mailbox: + + +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ZeroPool.md +- **Milestone Number:** 1 + + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------ | ----------- | ---- |----------------- | +| 0a. | License |[LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-APACHE), [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-MIT), [LICENSE](https://github.com/zeropoolnetwork/libzeropool/blob/beae8527536bd03a22e4d110de10079d096f9b55/LICENSE-APACHE), [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-MIT)| fawkes-crypto and libzeropool are published with MIT and APACHE 2.0 licenses| +| 0b. | Documentation | [docs.rs](https://docs.rs/libzeropool/0.5.2/libzeropool/), [docs.rs](https://docs.rs/fawkes-crypto/4.3.0/fawkes_crypto/), [README](https://github.com/zeropoolnetwork/libzeropool/blob/beae8527536bd03a22e4d110de10079d096f9b55/README.md) [README](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/README.md) | the documentation is partially WIP, partially available | +| 0c. | Testing Guide |[fawkes-crypto](https://github.com/zeropoolnetwork/fawkes-crypto), [libzeropool](https://github.com/zeropoolnetwork/libzeropool)| we have implemented cargo tests for our crates | +| 0d. | Article/Tutorial | | In progress | +| 1. | zkSNARK circuit and cryptography library | [fawkes-crypto](https://github.com/zeropoolnetwork/fawkes-crypto), [libzeropool](https://github.com/zeropoolnetwork/libzeropool) | Implemented | + +- **Milestone Number:** 2 + + +| Number | Deliverable | Link | Notes | +| ------ | ----------- | ---- |----------------- | +| 0a. | License |[LICENSE](https://github.com/zeropoolnetwork/zeropool-substrate/blob/main/LICENSE-APACHE), [LICENSE](https://github.com/zeropoolnetwork/zeropool-substrate/blob/main/LICENSE-MIT)| zeropool-substrate is published with MIT and APACHE 2.0 licenses| +| 0b. | Documentation | [README](https://github.com/zeropoolnetwork/zeropool-substrate/blob/main/README.md) [README](https://github.com/zeropoolnetwork/zeropool-substrate/blob/main/pallets/pallet-zeropool/README.md) | the documentation is partially WIP, partially available | +| 0c. | Testing Guide |[zeropool-substrate](https://github.com/zeropoolnetwork/zeropool-substrate)| we have implemented cargo tests for our crates | +| 0d. | Article/Tutorial | | In progress | +| 1. | Substrate module private transactions | [zeropool-substrate](https://github.com/zeropoolnetwork/zeropool-substrate) | Implemented | +| 2. | Wallet library | [zeropool-client-js](https://github.com/zeropoolnetwork/zeropool-client-js) [zeropool-support-js](https://github.com/zeropoolnetwork/zeropool-support-js) | Implemented | +| 3. | Docker | [zeropool-relayer-polkadot](https://hub.docker.com/r/voidxnull/zeropool-relayer-polkadot), [zeropool-substrate-node](https://hub.docker.com/r/voidxnull/zeropool-substrate-node) | Implemented | + +Also, we deployed the testnet at https://substrate.testnet.console.v2.zeropool.network/ and published the screencast https://www.youtube.com/watch?v=DQ8gbNTOP-g diff --git a/evaluations/FIAT-on-off-ramp_3_dsm-w3f.md b/evaluations/FIAT-on-off-ramp_3_dsm-w3f.md index 51088b941..eb5bd4b50 100644 --- a/evaluations/FIAT-on-off-ramp_3_dsm-w3f.md +++ b/evaluations/FIAT-on-off-ramp_3_dsm-w3f.md @@ -1,6 +1,6 @@ # Evaluation -- **Status:** In Progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Open-Grants-Program/blob/master/applications/FIAT-on-off-ramp.md - **Milestone:** 3 - **Kusama Identity:** Address @@ -10,9 +10,19 @@ | ------ | ----------- | -------- | ---- |----------------- | | 0a. | License | | Unlicense | | 0b. | Tutorial | | Tutorial is provided in the [`/ebics-demo/DEMO.md`](https://github.com/element36-io/ocw-ebics/blob/main/ebics-demo/DEMO.md) file. | -| 1. | Buy me a coffee dApp | | A decentralized [application](https://github.com/element36-io/ocw-ebics/tree/main/ebics-demo) is provided, which allows users to buy someone a coffee or simply donate to support their cause. Users can donate by either sending stablecoins or fiat to the recipient's on-chain account or bank account (IBAN). The recipient can then withdraw the funds to their bank account or send them to someone else. | Some problems during the tests +| 1. | Buy me a coffee dApp | | A decentralized [application](https://github.com/element36-io/ocw-ebics/tree/main/ebics-demo) is provided, which allows users to buy someone a coffee or simply donate to support their cause. Users can donate by either sending stablecoins or fiat to the recipient's on-chain account or bank account (IBAN). The recipient can then withdraw the funds to their bank account or send them to someone else. | | 2. | Docker-Compose: node & Dapp | | Instead of `docker-compose` a [Makefile](https://github.com/element36-io/ocw-ebics/blob/main/Makefile) is provided with the commands that launch the chain and the demo app | +## Evaluation V2 + +### Manual Testing + +I tested again, and the donations from Alice and Bob have increased the total donations. In this way, the application is working fine. + +I found a small problem in the application that could be fixed. It's still possible to set a negative value to total donations. This negative value occurs because the substrate node has an initial balance for Jack, and the application doesn't check this balance at the start considering it as zero. In this way, it is possible to withdraw more than the balance that is shown in the frontend. It would be nice to fix this problem. + +The application uses an external EBICS service which was validated in Milestone 1. So no problem to use this external service for the test. + ## Evaluation V1 ### Automated Testing diff --git a/evaluations/MOBR-Knowledge-Oriented-Framework_2_dsm-w3f.md b/evaluations/MOBR-Knowledge-Oriented-Framework_2_dsm-w3f.md new file mode 100644 index 000000000..1477171ea --- /dev/null +++ b/evaluations/MOBR-Knowledge-Oriented-Framework_2_dsm-w3f.md @@ -0,0 +1,57 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Knowledge-Oriented-Framework.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License ||[License](https://creativecommons.org/licenses/by-sa/4.0/)| | +| 0b. | Documentation/Tutorial ||[TR1](https://github.com/mobr-ai/POnto/raw/main/deliverables/milestone2/TR%20-%20Use%20case.pdf)| | +| 0c. | Methodology ||[Article Section 3](https://github.com/mobr-ai/POnto/raw/main/deliverables/milestone2/Article.pdf)| | +| 0d. | Infrastructure ||[TR2](https://github.com/mobr-ai/POnto/raw/main/deliverables/milestone2/TR%20-%20Infrastructure%20requirements.pdf)|| +| 0e. | Article ||[Article](https://github.com/mobr-ai/POnto/raw/main/deliverables/milestone2/Article.pdf)| | +| 1. | Case Study ||[TR3](https://github.com/mobr-ai/POnto/raw/main/deliverables/milestone2/TR%20-%20Case%20study.pdf)| | + +## Evaluation V2 + +The references requested were added in the methodology section. + +The grantees explained that the current instruments of the research [are in draft version](https://github.com/w3f/Grant-Milestone-Delivery/pull/863#issuecomment-1568419705) and could be adjusted. As the intention declared in the deliverable definition 0c. Methodology of M2 "... the requirements for the query engine will be grounded in real-world experience needs", and the case study is about Polkadot ecosystem, I still think that would be better to adjust the instruments to be more specific to our ecosystem thus helping to achieve this goal. As M3 is based on gathering experts' opinions, this requirement could be fulfilled later in M3 and doesn't prevent the approval of M2. + +## Evaluation V1 + +### Methodology + +The definition of the case study concept needs citations (Section 2, paragraph 1). + +The proposed methodology looks more to be a [Survey](https://en.wikipedia.org/wiki/Survey_(human_research)) than a [Case Study](https://en.wikipedia.org/wiki/Case_study). You can find informal references for what those primary research methods mean in the links provided. Please review the concepts involved in the text or provide the references that embase that your study is a case study and not a survey. + +### Case Study (or Survey) + +The questionnaire asks some questions about trading tokens and other ecosystems. Why these questions would be relevant regarding the perspective to research Polkadot/Kusama ecosystem? + +"Which of these tokens have you traded before? Check all that apply." + +"Which Web3 networks have you accessed information and ledger data from before? Check all that apply." + + +In the question "Which of the following queries do you think would be useful to make in a query service?" I think it limits a lot the possibilities of queries that the user would make. The questions are all generic and don't have a specific connection with Polkadot/Kusama ecosystem. I think would be better to ask about the entities involved in queries than give examples of queries that the user may find relevant. For example, Polkadot/Kusama ecosystem has many specific concepts that would be possible to ask if the user wanted to query about that entity and had problems finding the relevant information about it, or how easy is to find information about those entities. Examples: Parachains, XCM, collators, validators, nominators, etc. The model for this idea is: Demand for the info + Info is difficult to find -> Willing to use a better tool to find it. I saw the open question made but I think the examples of queries provided are limited regarding the scope of queries that the user can have and don't help the user to think about the possible queries they would like to have regarding Polkadot/Kusama ecosystem. + +"Any other queries you would use to gather information from Web3 networks?" Is this questionnaire about Polkadot/Kusama ecosystem or is a generic one? + +I feel the perspective of the questionnaire with a focus on trader users. Would be better to have more of an investment perspective and to know what questions are relevant for investors to know about the health or growth of an ecosystem. You may want to take a look at [Mesari reports](https://messari.io/research) to find relevant information about these possible questions that investors may have or want to know to invest in a web3 project. + +Another relevant perspective for the questionaries is the users of the ecosystem. People that use the projects, stake, validators, developers, etc. Traders are not the only users of this service. You may want to take a look at [Polkadot Forum](https://forum.polkadot.network/) to see what people want to know there. It is also a good venue to talk with Polkadot/Kusama ecosystem users. + +### Off-topic + +Considering this aim definition: "The main goal of the proposed case study methodology is to assess the potential of a query engine service for accessing and analyzing data from distributed ledgers. Specifically, the relevance of having an ontology and a controlled natural language supporting this service.". + +Are you aware of [this RFP](https://github.com/w3f/Grants-Program/blob/master/docs/RFPs/Open/data_analysis_tools.md)? We have a demand to answer complex questions from the perspective of user support. Can you take a look and see if your approach would be able to fit this RFP? Furthermore, consider taking a look at [this grant application](https://github.com/w3f/Grants-Program/pull/1764) and if possible provide some comparison with your approach. This is more to direct you to a path where we already have a demand since you are looking for it in your research. Another question is if the proposed tool would be able to index and query TBs of data. What would be the cost of maintaining this index and tool available for users? Would you be able to afford this cost for yourself or from a sustainable business model? + + + + diff --git a/evaluations/ScoutCoinFabrik_2_dastansam.md b/evaluations/ScoutCoinFabrik_2_dastansam.md new file mode 100644 index 000000000..db810c34f --- /dev/null +++ b/evaluations/ScoutCoinFabrik_2_dastansam.md @@ -0,0 +1,196 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Application](https://github.com/w3f/Grants-Program/pull/1666) +- **Milestone:** 2 +- **Kusama Identity:** [Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP](https://sub.id/Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP) +- **Previously successfully merged evaluation:** [Milestone 1](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/ScoutCoinFabrik_1_keeganquigley.md) + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------ | ----------- | ---- | ----- | +| 0a. | License | https://github.com/CoinFabrik/scout/blob/web3-v2/LICENSE | Correct license | +| 0b. | Documentation | https://coinfabrik.github.io/scout/docs/intro | Extensive documentation | +| 0c. | Testing | https://github.com/CoinFabrik/scout/tree/web3-v2/apps/cargo-scout-audit/tests | Test cases are passing, but only after I fixed a small typo. Details below. | +| 0d. | Docker | - | Does not apply at this stage. | +| 0e. | Article | https://blog.coinfabrik.com/bigger-better-and-faster-vulnerability-detection-in-ink | Article is posted, explains well what the project does and why there is a need for it. | +| 1.a | Research and Development | https://coinfabrik.github.io/scout/docs/vulnerabilities | More vulnerability examples are provided, as per the application milestone delivery checklist. | +| 1.b | Research and Development | https://github.com/CoinFabrik/scout/tree/web3-v2/test-cases | `integer-overflow-underflow` and `unused-return-enum` example vulnerabilities are added to the test cases and documentation. | +| 2.a | Development | https://github.com/CoinFabrik/scout/tree/web3-v2 | More detectors are added, tool is improved from the previous milestone. | +| 2.b | Development | https://github.com/CoinFabrik/scout/tree/web3-v2/apps/cargo-scout-audit | CLI tool is deployed and works as expected. Integration tests are run using this CLI tool. Logs attached below. | +| 2.c | Development | https://marketplace.visualstudio.com/items?itemName=CoinFabrik.scout-audit | VSCode extension is deployed and can be installed. However, using it wasn't possible for me, maybe due to the `rust-analyzer` issue described below? | +| 3 | Evaluation | https://github.com/CoinFabrik/scout/blob/web3-v2/assets/false-positives-report.md | Prototype validation was performed and evaluation report is provided. | + + +## General Notes + +In general, I think the project is well documented and the code is well written. I tried to run the integration tests, but I had to fix a small typo in the code for it to pass. I think the tool is already very helpful, but there are a few things that can be improved. + +### `rust-analyzer` error + +As far as I understand, `rust-analyzer` is an integral part of `scout-audit`, however, when I open the `scout` repository, `rust-analyzer` extension fails to load with this log: + +```log +rust-analyzer failed to load workspace: Failed to read Cargo metadata from Cargo.toml file ~/scout/detectors/Cargo.toml, cargo 1.67.0 (8ecd4f20a 2023-01-10): Failed to run `"cargo" "metadata" "--format-version" "1" "--manifest-path" "~/scout/detectors/Cargo.toml" "--filter-platform" "aarch64-apple-darwin"`: `cargo metadata` exited with an error: error: manifest path `~/scout/detectors/Cargo.toml` does not exist +``` + +I wanted to see how the extension behaves when opening vulnerable code examples in `test-cases`, but it wasn't possible. I think this might be the reason why. + +### Typos in integration tests + +In the `integration_test.rs` file, there are two typos that prevent the tests from passing. First one is in [line 32](https://github.com/CoinFabrik/scout/blob/3dcde6d88ddbb551e4a11c64842c0beae09a968a/apps/cargo-scout-audit/tests/integration_test.rs#L32-L33), second one is in [line 124](https://github.com/CoinFabrik/scout/blob/3dcde6d88ddbb551e4a11c64842c0beae09a968a/apps/cargo-scout-audit/tests/integration_test.rs#L124). In both of them, `scout` should be renamed to `scout-audit`, since this is the name of the CLI tool. + +### `unused-return-enum` + +In the documentation of the [`unused-return-enum`](https://coinfabrik.github.io/scout/docs/detectors/unused-return-enum) vulnerability, the following pieces of code are provided as `example` and `remediated` vulnerable code, respectively: + +```rust +// --- snip --- +// vulnerable code +let sum = value1 + value2; +let percentage_difference = match 100u128.checked_mul(absolute_difference / sum) { + Some(result) => result, + None => Err(TradingPairErrors::Overflow), +} +// --- snip --- +// remediation +let sum = value1 + value2; +let percentage_difference = match 100u128.checked_mul(absolute_difference / sum) { + Some(result) => Ok(result), + None => panic!("overflow!"), +}; + +return Err(TradingPairErrors::Overflow); +// --- snip --- +``` +I think this directly contradicts to [`panic-error`](https://coinfabrik.github.io/scout/docs/detectors/panic-error) and [`arithmetic-overflow-underflow`](https://coinfabrik.github.io/scout/docs/detectors/integer-overflow-or-underflow) vulnerabilities, since usage of `panic!` and unsafe arithmetic operations should be discouraged in any production environment. I think the remediation should be something like this: + +```rust +// --- snip --- +let sum = value1.checked_add(value2).ok_or(TradingPairErrors::Overflow)?; +let coeff = absolute_difference.checked_div(sum).ok_or(TradingPairErrors::DivisionByZero)?; +let percentage_difference = 100_u128.checked_mul().ok_or(TradingPairErrors::Overflow)?; + +Ok(percentage_difference) +``` + +## Logs + +
+ +Run on custom pseudo code + +```rust +let test = 2 + 2; +let stuff = { + if test == 3 { + Some(1) + } else { + None + } +}; + +let unsafe_unwrap = stuff.unwrap(); +let unsafe_expect = stuff.expect("stuff is none"); + +self.env().terminate_contract(self.env().caller()); +``` + +Result: + +```log +warning: Unsafe usage of `expect` + --> lib.rs:33:33 + | +33 | let unsafe_expect = stuff.expect("stuff is none"); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: Please, use a custom error instead of `expect` + = note: `#[warn(unsafe_expect)]` on by default + +warning: Unsafe usage of `unwrap` + --> lib.rs:32:33 + | +32 | let unsafe_unwrap = stuff.unwrap(); + | ^^^^^^^^^^^^^^ + | + = help: Please, use a custom error instead of `unwrap` + = note: `#[warn(unsafe_unwrap)]` on by default + +warning: Potential for integer arithmetic overflow/underflow in operation '+'. Consider checked, wrapping or saturating arithmetic. + --> lib.rs:23:24 + | +23 | let test = 2 + 2; + | ^^^^^ + | + = note: `#[warn(integer_overflow_underflow)]` on by default +``` +
+ + +
+ +Integration tests + +This is also a bit slow, is there any specific reason for that? + +```log +Running detector: dos-unbounded-operation +Running example: ../../test-cases/dos-unbounded-operation/dos-unbounded-operation-1/vulnerable-example/Cargo.toml - Elapsed time: 40.562 secs. +Running example: ../../test-cases/dos-unbounded-operation/dos-unbounded-operation-1/remediated-example/Cargo.tomltest test has been running for over 60 seconds + - Elapsed time: 39.727 secs. + +Running detector: unsafe-expect +Running example: ../../test-cases/unsafe-expect/unsafe-expect-1/vulnerable-example/Cargo.toml - Elapsed time: 38.375 secs. +Running example: ../../test-cases/unsafe-expect/unsafe-expect-1/remediated-example/Cargo.toml - Elapsed time: 38.742 secs. + +Running detector: panic-error +Running example: ../../test-cases/panic-error/panic-error-1/vulnerable-example/Cargo.toml - Elapsed time: 38.372 secs. +Running example: ../../test-cases/panic-error/panic-error-1/remediated-example/Cargo.toml - Elapsed time: 38.342 secs. + +Running detector: integer-overflow-or-underflow +Running example: ../../test-cases/integer-overflow-or-underflow/integer-overflow-or-underflow-1/vulnerable-example/Cargo.toml - Elapsed time: 38.514 secs. +Running example: ../../test-cases/integer-overflow-or-underflow/integer-overflow-or-underflow-1/remediated-example/Cargo.toml - Elapsed time: 39.103 secs. + +Running detector: dos-unexpected-revert-with-vector +Running example: ../../test-cases/dos-unexpected-revert-with-vector/dos-unexpected-revert-with-vector-1/vulnerable-example/Cargo.toml - Elapsed time: 39.92 secs. +Running example: ../../test-cases/dos-unexpected-revert-with-vector/dos-unexpected-revert-with-vector-1/remediated-example/Cargo.toml - Elapsed time: 39.965 secs. + +Running detector: divide-before-multiply +Running example: ../../test-cases/divide-before-multiply/divide-before-multiply-1/vulnerable-example/Cargo.toml - Elapsed time: 38.366 secs. +Running example: ../../test-cases/divide-before-multiply/divide-before-multiply-1/remediated-example/Cargo.toml - Elapsed time: 39.306 secs. + +Running detector: zero-or-test-address +Running example: ../../test-cases/zero-or-test-address/zero-or-test-address-1/vulnerable-example/Cargo.toml - Elapsed time: 39.709 secs. +Running example: ../../test-cases/zero-or-test-address/zero-or-test-address-1/remediated-example/Cargo.toml - Elapsed time: 38.618 secs. + +Running detector: reentrancy +Running example: ../../test-cases/reentrancy/reentrancy-1/vulnerable-example/vault/Cargo.toml - Elapsed time: 38.8 secs. +Running example: ../../test-cases/reentrancy/reentrancy-1/remediated-example/vault/Cargo.toml - Elapsed time: 38.883 secs. +Running example: ../../test-cases/reentrancy/reentrancy-2/vulnerable-example/vault/Cargo.toml - Elapsed time: 40.892 secs. +Running example: ../../test-cases/reentrancy/reentrancy-2/remediated-example/vault/Cargo.toml - Elapsed time: 4.492 secs. + +Running detector: unsafe-unwrap +Running example: ../../test-cases/unsafe-unwrap/unsafe-unwrap-1/vulnerable-example/Cargo.toml - Elapsed time: 38.258 secs. +Running example: ../../test-cases/unsafe-unwrap/unsafe-unwrap-1/remediated-example/Cargo.toml - Elapsed time: 40.645 secs. + +Running detector: set-contract-storage +Running example: ../../test-cases/set-contract-storage/set-contract-storage-1/vulnerable-example/Cargo.toml - Elapsed time: 41.287 secs. +Running example: ../../test-cases/set-contract-storage/set-contract-storage-1/remediated-example/Cargo.toml - Elapsed time: 39.901 secs. + +Running detector: delegate-call +Running example: ../../test-cases/delegate-call/delegate-call-1/vulnerable-example/Cargo.toml - Elapsed time: 38.415 secs. +Running example: ../../test-cases/delegate-call/delegate-call-1/remediated-example/Cargo.toml - Elapsed time: 39.308 secs. + +Running detector: unused-return-enum +Running example: ../../test-cases/unused-return-enum/unused-return-enum-1/vulnerable-example/Cargo.toml - Elapsed time: 40.63 secs. +Running example: ../../test-cases/unused-return-enum/unused-return-enum-1/remediated-example/Cargo.toml - Elapsed time: 40.311 secs. +Running example: ../../test-cases/unused-return-enum/unused-return-enum-2/vulnerable-example/Cargo.toml - Elapsed time: 43.796 secs. +Running example: ../../test-cases/unused-return-enum/unused-return-enum-2/remediated-example/Cargo.toml - Elapsed time: 37.999 secs. +test test ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1071.30s +``` + +
diff --git a/evaluations/aurras_phase_2_1_dsm-w3f.md b/evaluations/aurras_phase_2_1_dsm-w3f.md index 55d640573..2f36454c2 100644 --- a/evaluations/aurras_phase_2_1_dsm-w3f.md +++ b/evaluations/aurras_phase_2_1_dsm-w3f.md @@ -1,6 +1,6 @@ -# Evaluation + Evaluation -- **Status:** In Progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/project_aurras_mvp_phase_2.md - **Milestone:** 1 - **Kusama Identity:** Address @@ -9,18 +9,22 @@ | Number | Deliverable | Accepted | Link | Evaluation Notes | | ------ | ----------- | -------- | ---- |----------------- | | 0a. | License | | https://github.com/HugoByte/aurras/blob/master/LICENSE | | -| 0b. | Documentation | | https://github.com/HugoByte/openwhisk-client-rust#usage
https://github.com/HugoByte/aurras/tree/next/workflow/composer#usage | Not fully evaluated yet | -| 0c. | Testing Guide | | https://github.com/HugoByte/openwhisk-client-rust#test
https://github.com/HugoByte/aurras/tree/next/workflow/composer#test | Not fully evaluated yet | -| 1a. | Workflow Composer: Rust OpenWhisk Client Library | | https://github.com/HugoByte/openwhisk-client-rust | Not fully evaluated yet | -| 1b. | Workflow Composer: Composer | | https://github.com/HugoByte/aurras/tree/next/workflow/composer | Not fully evaluated yet | -| 1c. | Workflow Composer: Pipe | | https://github.com/HugoByte/aurras/blob/next/workflow/workflow_macro/src/lib.rs#L85 | Not fully evaluated yet | -| 1d. | Workflow Composer: structured YAML file | | https://github.com/HugoByte/aurras/blob/next/workflow/examples/STRUCTURED_YAML.yaml | Not fully evaluated yet | -| 1e. | Workflow Composer: Concat Operator | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/functions.py#L362 | Not fully evaluated yet | -| 1f. | Workflow Composer: Map Operator | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/functions.py#L538 | Not fully evaluated yet | -| 2. | Predefined boiler plate | | https://github.com/HugoByte/aurras/tree/next/workflow/boilerplate | Not fully evaluated yet | -| 3a. | Flow Provider | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/flow.py | Not fully evaluated yet | -| 3b. | Task Provider | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/task.py | Not fully evaluated yet | -| 3c. | Workflow Provider | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/workflow.py | Not fully evaluated yet | +| 0b. | Documentation | | https://github.com/HugoByte/openwhisk-client-rust#usage
https://github.com/HugoByte/aurras/tree/next/workflow/composer#usage | | +| 0c. | Testing Guide | | https://github.com/HugoByte/openwhisk-client-rust#test
https://github.com/HugoByte/aurras/tree/next/workflow/composer#test | | +| 1a. | Workflow Composer: Rust OpenWhisk Client Library | | https://github.com/HugoByte/openwhisk-client-rust | | +| 1b. | Workflow Composer: Composer | | https://github.com/HugoByte/aurras/tree/next/workflow/composer | | +| 1c. | Workflow Composer: Pipe | | https://github.com/HugoByte/aurras/blob/next/workflow/workflow_macro/src/lib.rs#L85 | | +| 1d. | Workflow Composer: structured YAML file | | https://github.com/HugoByte/aurras/blob/next/workflow/examples/STRUCTURED_YAML.yaml | | +| 1e. | Workflow Composer: Concat Operator | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/functions.py#L362 | | +| 1f. | Workflow Composer: Map Operator | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/functions.py#L538 | | +| 2. | Predefined boiler plate | | https://github.com/HugoByte/aurras/tree/next/workflow/boilerplate | | +| 3a. | Flow Provider | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/flow.py | | +| 3b. | Task Provider | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/task.py | | +| 3c. | Workflow Provider | | https://github.com/HugoByte/aurras/blob/next/workflow/providers/hooks/workflow.py | | + +## Evaluation V6 + +Thanks for providing the video tutorial. I was able to check the push notification this time, as in the video, and the application works fine. ## Evaluation V5 diff --git a/evaluations/aurras_phase_2_2_dsm-w3f.md b/evaluations/aurras_phase_2_2_dsm-w3f.md index 389af88fa..f7e7fb6c4 100644 --- a/evaluations/aurras_phase_2_2_dsm-w3f.md +++ b/evaluations/aurras_phase_2_2_dsm-w3f.md @@ -1,6 +1,6 @@ # Evaluation -- **Status:** In Progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/project_aurras_mvp_phase_2.md - **Milestone:** 2 - **Kusama Identity:** Address @@ -9,14 +9,496 @@ | Number | Deliverable | Accepted | Link | Evaluation Notes | | ------ | ----------- | -------- | ---- |----------------- | | 0a. | License || https://github.com/HugoByte/aurras/blob/master/LICENSE | | -| 0b. | Documentation || https://github.com/HugoByte/aurras/tree/next/workflow/workflow_macro | Need better instructions how to run and how to test. | -| 0c. | Testing Guide || https://github.com/HugoByte/aurras/tree/next/workflow/workflow_macro#testing | Need better instructions how to run and how to test. | -| 0d. | Docker File || https://github.com/HugoByte/aurras/blob/next/workflow/Dockerfile | Need better instructions how to run and how to test. | -| 1a. | Workflow Composer: Flow Macro || https://github.com/HugoByte/aurras/blob/next/workflow/workflow_macro/src/lib.rs | Not fully evaluated yet | -| 1b. | staking and payout features for scs/substrate-api-client || https://github.com/scs/substrate-api-client/pull/294 | Not fully evaluated yet | +| 0b. | Documentation || https://github.com/HugoByte/aurras/tree/next/workflow/workflow_macro | | +| 0c. | Testing Guide || https://github.com/HugoByte/aurras/tree/next/workflow/workflow_macro#testing | | +| 0d. | Docker File || https://github.com/HugoByte/aurras/blob/next/workflow/Dockerfile | | +| 1a. | Workflow Composer: Flow Macro || https://github.com/HugoByte/aurras/blob/next/workflow/workflow_macro/src/lib.rs | | +| 1b. | staking and payout features for scs/substrate-api-client || https://github.com/scs/substrate-api-client/pull/294 | | + +## Evaluation V5 + +All Tests passed: + +``` +running 4 tests +test tests::invoke_trigger_fail - should panic ... ok +test tests::filter_address_pass ... ok +test tests::invoke_trigger_pass - should panic ... ok +test tests::filter_topics_pass ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.97s + + Running unittests src/lib.rs (target/debug/deps/action_balance_notification_registration-717f95e234253623) + +running 5 tests +test tests::get_event_sources_pass - should panic ... ok +test tests::get_event_sources_fail_getaddress - should panic ... ok +test tests::get_event_sources_invalid_method - should panic ... ok +test tests::add_address_pass ... ok +test tests::get_event_sources_fail ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.50s + + Running unittests src/lib.rs (target/debug/deps/action_event_receiver-89cca91ba018fa92) + +running 2 tests +test tests::parse_event_pass ... ok +test tests::parse_event_fail - should panic ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/action_event_registration-5be9e8ae1b8f8cec) + +running 1 test +test tests::register_source_pass ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.67s + + Running unittests src/lib.rs (target/debug/deps/action_push_notification-c0f8885b8c948840) + +running 3 tests +test tests::send_notification_pass_main ... ok +test tests::send_notification_pass ... ok +test tests::send_notification_fail_main - should panic ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s + + Running unittests src/lib.rs (target/debug/deps/action_substrate_event_processor-860a7d9001f2b178) + +running 5 tests +test tests::parse_staking_event_data_pass ... ok +test tests::parse_event_data_pass ... ok +test tests::parse_staking_event_data_method_exception - should panic ... ok +test tests::parse_staking_event_data_fail_invalid_category - should panic ... ok +test tests::parse_event_data_fail - should panic ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/actions_common-5e4714479145d33b) + +running 6 tests +test types::context::tests::invoke_trigger_pass ... ok +test types::context::tests::invoke_action_pass ... ok +test types::context::tests::create_rule_pass ... ok +test types::context::tests::get_list_pass ... ok +test types::context::tests::create_trigger_pass ... ok +test types::context::tests::update_document_pass ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.85s + + Running unittests src/main.rs (target/debug/deps/test_util-af63a880229f6cc9) + +running 6 tests +test tests::flow_macro_tests::test_flow_macro_add_node ... ok +test tests::flow_macro_tests::test_macro ... ok +test wasi_http::test_allowed_domains ... ok +test tests::test_car_market_place ... ok +test tests::test_map_operator ... ok +test tests::test_employee_salary_with_concat_operator ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.77s + + +Jun 19 07:48:16.693 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| actions/balance-filter/src/lib.rs: 32/41 +|| actions/balance-filter/src/types/message.rs: 2/2 +|| actions/balance-notification-registration/src/lib.rs: 42/47 +|| actions/common/src/mock/couchdb_test_container.rs: 18/18 +|| actions/common/src/types/context.rs: 74/103 +|| actions/common/src/types/trigger.rs: 1/1 +|| actions/event-receiver/src/lib.rs: 16/23 +|| actions/event-registration/src/lib.rs: 20/39 +|| actions/event-registration/src/types/source.rs: 1/1 +|| actions/push-notification/src/lib.rs: 12/12 +|| actions/substrate-event-processor/src/lib.rs: 26/35 +|| workflow/boilerplate/src/common.rs: 0/6 +|| workflow/test_util/src/helper.rs: 66/66 +|| workflow/test_util/src/main.rs: 0/1 +|| workflow/workflow_apis/src/errors/mod.rs: 0/1 +|| +78.28% coverage, 310/396 lines covered +``` + + +## Evaluation V4 + +### Test + +I tried again doing all the configuration, like in Milestone 1, to register the push notification token, but the test failed. + +``` +running 3 tests +test tests::send_notification_pass ... FAILED +test tests::send_notification_pass_main ... FAILED +test tests::send_notification_fail_main - should panic ... ok + +failures: + +---- tests::send_notification_pass stdout ---- +thread 'tests::send_notification_pass' panicked at 'called Result::unwrap() on an Err value: NotPresent', actions/push-notification/src/lib.rs:75:51 +note: run with RUST_BACKTRACE=1 environment variable to display a backtrace + +---- tests::send_notification_pass_main stdout ---- +thread 'tests::send_notification_pass_main' panicked at 'called Result::unwrap() on an Err value: NotPresent', actions/push-notification/src/lib.rs:102:53 + + +failures: + tests::send_notification_pass + tests::send_notification_pass_main + +test result: FAILED. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.54s +``` + + +## Evaluation V3 + +### Docker + +This time, I got no errors creating the .wasm using Docker. + +``` +user@localhost:~/Documents/aurras/aurras/workflow/composer$ cat ../examples/PolkadotPayout.yaml | docker run -i --rm hugobyte/workflow-composer generate > output.wasm +go: downloading github.com/spf13/cobra v1.6.1 +go: downloading github.com/spf13/pflag v1.0.5 +info: component 'rust-std' for target 'wasm32-wasi' is up to date +user@localhost:~/Documents/aurras/aurras/workflow/composer$ +``` + +### Flow Macro + +I ran `cargo test --not-fail-fast`, and two tests failed. I noticed the tests for Workflow Macro are passing. + +``` +user@localhost:~/Documents/aurras/aurras/workflow$ cargo test --no-fail-fast + Finished test [unoptimized + debuginfo] target(s) in 0.28s + Running unittests src/lib.rs (/home/user/Documents/aurras/aurras/target/debug/deps/action_balance_filter-358e79f9f11d1f75) + +running 4 tests +test tests::invoke_trigger_fail - should panic ... ok +test tests::filter_topics_pass ... ok +test tests::invoke_trigger_pass - should panic ... ok +test tests::filter_address_pass ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.72s + + Running unittests src/lib.rs (/home/user/Documents/aurras/aurras/target/debug/deps/action_balance_notification_registration-b6db6ee18c9dcd21) + +running 5 tests +test tests::get_event_sources_invalid_method - should panic ... ok +test tests::get_event_sources_fail_getaddress - should panic ... ok +test tests::get_event_sources_pass - should panic ... ok +test tests::get_event_sources_fail ... ok +test tests::add_address_pass ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.32s + + Running unittests src/lib.rs (/home/user/Documents/aurras/aurras/target/debug/deps/action_event_receiver-c06d10c7016d288b) + +running 2 tests +test tests::parse_event_fail - should panic ... ok +test tests::parse_event_pass ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (/home/user/Documents/aurras/aurras/target/debug/deps/action_event_registration-8c5ff9b017dc1b01) + +running 1 test +test tests::register_source_pass ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.48s + + Running unittests src/lib.rs (/home/user/Documents/aurras/aurras/target/debug/deps/action_push_notification-e704de5e5db4d7ff) + +running 3 tests +test tests::send_notification_pass_main ... FAILED +test tests::send_notification_pass ... FAILED +test tests::send_notification_fail_main - should panic ... ok + +failures: + +---- tests::send_notification_pass_main stdout ---- +thread 'tests::send_notification_pass_main' panicked at 'called `Result::unwrap()` on an `Err` value: NotPresent', actions/push-notification/src/lib.rs:102:53 + +---- tests::send_notification_pass stdout ---- +thread 'tests::send_notification_pass' panicked at 'called `Result::unwrap()` on an `Err` value: NotPresent', actions/push-notification/src/lib.rs:75:51 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + + +failures: + tests::send_notification_pass + tests::send_notification_pass_main + +test result: FAILED. 1 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.46s + +error: test failed, to rerun pass `-p action-push-notification --lib` + Running unittests src/lib.rs (/home/user/Documents/aurras/aurras/target/debug/deps/action_substrate_event_processor-ffb9dc955e8c208b) + +running 5 tests +test tests::parse_event_data_pass ... ok +test tests::parse_staking_event_data_pass ... ok +test tests::parse_staking_event_data_fail_invalid_category - should panic ... ok +test tests::parse_staking_event_data_method_exception - should panic ... ok +test tests::parse_event_data_fail - should panic ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (/home/user/Documents/aurras/aurras/target/debug/deps/test_util-da42c0ad9c2836a3) + +running 6 tests +test tests::flow_macro_tests::test_macro ... ok +test tests::flow_macro_tests::test_flow_macro_add_node ... ok +test wasi_http::test_allowed_domains ... ok +test tests::test_car_market_place ... ok +test tests::test_map_operator ... ok +test tests::test_employee_salary_with_concat_operator ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.16s + +error: 1 target failed: + `-p action-push-notification --lib` +``` + +Could you provide a way for using the Workflow Macro that doesn't need any programming skill, with instructions on how to run it to check the functionality of the Workflow Macro? + +### Staking and Payout Features for scs/substrate-api-client + +I noticed you added a note explaining this Derivable and saying to run `cargo test --features staking-xt`, and all tests passed. + +``` +user@localhost:~/Documents/substrate-api-client$ cargo test --features staking-xt + Finished test [unoptimized + debuginfo] target(s) in 0.54s + Running unittests src/lib.rs (target/debug/deps/substrate_api_client-d6ec907760ee1c09) + +running 12 tests +test api::tests::test_xt_status_as_u8 ... ok +test api::tests::test_reached_xt_status_for_broadcast ... ok +test api::rpc_api::events::tests::filter_extrinsic_events_works ... ok +test api::rpc_api::events::tests::fetch_events_from_block_works ... ok +test api::tests::test_reached_xt_status_for_finalized ... ok +test api::tests::test_reached_xt_status_for_in_block ... ok +test api::tests::test_transaction_status_is_expected ... ok +test api::tests::test_transaction_status_as_u8 ... ok +test api::tests::test_reached_xt_status_for_ready ... ok +test api::rpc_api::events::tests::retrieve_extrinsic_index_from_block_works ... ok +test api::api_client::tests::api_extrinsic_params_works ... ok +test api::api_client::tests::api_runtime_update_works ... ok + +test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s + + Doc-tests substrate-api-client + +running 1 test +test src/api/api_client.rs - api::api_client::Api (line 35) - compile ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s +``` ## Evaluation V2 +### Documentation + +It is missing the testing instructions to test the flow macro. + +### Docker + +The command to generate the .wasm file got an error but the command for testing the .yaml file worked fine. I remember testing the .wasm generator before and it was working. +``` +user@localhost:~/Documents/aurras/aurras/workflow/composer$ cat ../examples/PolkadotPayout.yaml | docker run -i --rm hugobyte/workflow-composer generate > output.wasm +go: downloading github.com/spf13/cobra v1.6.1 +go: downloading github.com/spf13/pflag v1.0.5 +info: component 'rust-std' for target 'wasm32-wasi' is up to date +warning: calls to `std::mem::forget` with a value that implements `Copy` does nothing + --> src/lib.rs:63:5 + | +63 | std::mem::forget(ptr); + | ^^^^^^^^^^^^^^^^^---^ + | | + | argument has type `*const u8` + | + = note: use `let _ = ...` to ignore the expression or result + = note: `#[warn(forget_copy)]` on by default + +user@localhost:~/Documents/aurras/aurras/workflow/composer$ cat ../examples/CarMarketPlace.yaml | docker run -i --rm hugobyte/workflow-composer test +go: downloading github.com/spf13/cobra v1.6.1 +go: downloading github.com/spf13/pflag v1.0.5 +Running Test ... +........ +---------------------------------------------------------------------- +Ran 8 tests in 2.815s + +OK +Test Completed +``` + +### Flow Macro + +The instructions to test the flow macro are missing. I assumed the way to test is using `cargo test`. So I ran `cargo test` and got some warnings. All tests passed except one what is skipped. + + +``` +user@localhost:~/Documents/aurras/aurras$ cargo test +warning: variable does not need to be mutable + --> actions/balance-notification-registration/src/lib.rs:119:9 + | +119 | let mut action = Action::new(input); + | ----^^^^^^ + | | + | help: remove this `mut` + | + = note: `#[warn(unused_mut)]` on by default + +warning: method `init` is never used + --> actions/event-registration/src/lib.rs:36:12 + | +36 | pub fn init(&mut self, config: &Config) { + | ^^^^ + | + = note: `#[warn(dead_code)]` on by default + +warning: method `connect_db` is never used + --> actions/event-registration/src/lib.rs:47:8 + | +47 | fn connect_db(&self, db_url: &str, db_name: &str) -> Database { + | ^^^^^^^^^^ + +warning: unused imports: `Address`, `Deposit`, `Topic` + --> actions/balance-filter/src/lib.rs:15:13 + | +15 | use types::{Address, Deposit, Topic}; + | ^^^^^^^ ^^^^^^^ ^^^^^ + | + = note: `#[warn(unused_imports)]` on by default + +warning: method `init` is never used + --> actions/balance-filter/src/lib.rs:38:12 + | +38 | pub fn init(&mut self, config: &Config) { + | ^^^^ + | + = note: `#[warn(dead_code)]` on by default + +warning: method `connect_db` is never used + --> actions/balance-filter/src/lib.rs:49:8 + | +49 | fn connect_db(&self, db_url: &str, db_name: &str) -> Database { + | ^^^^^^^^^^ + +warning: unused import: `std::env` + --> actions/push-notification/src/lib.rs:10:5 + | +10 | use std::env; + | ^^^^^^^^ + | + = note: `#[warn(unused_imports)]` on by default + +warning: `action-balance-notification-registration` (lib test) generated 1 warning (run `cargo fix --lib -p action-balance-notification-registration --tests` to apply 1 suggestion) +warning: `action-event-registration` (lib test) generated 2 warnings +warning: `action-balance-filter` (lib test) generated 3 warnings (run `cargo fix --lib -p action-balance-filter --tests` to apply 1 suggestion) +warning: `action-push-notification` (lib test) generated 1 warning (run `cargo fix --lib -p action-push-notification --tests` to apply 1 suggestion) + Finished test [unoptimized + debuginfo] target(s) in 0.27s +warning: the following packages contain code that will be rejected by a future version of Rust: nom v5.1.2 +note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` + + +Running unittests src/lib.rs (target/debug/deps/action_balance_notification_registration-cb24471f806560f9) + +running 1 test +test tests::get_event_sources_pass ... ignored + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + +Running unittests src/lib.rs (target/debug/deps/action_event_receiver-67704f28cb380417) + +running 1 test +test tests::parse_event_pass ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + +Running unittests src/lib.rs (target/debug/deps/action_substrate_event_processor-033dc21c082cd002) + +running 2 tests +test tests::parse_staking_event_data_pass ... ok +test tests::parse_event_data_pass ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + +Running unittests src/main.rs (target/debug/deps/test_util-fdeb7217560eb665) + +running 6 tests +test flow_macro_tests::test_flow_macro_add_node ... ok +test flow_macro_tests::test_macro ... ok +test wasi_http::test_allowed_domains ... ok +test test_car_market_place ... ok +test test_map_operator ... ok +test test_employee_salary_with_concat_operator ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.87s + + Running unittests src/main.rs (target/debug/deps/workflow_apis-69cfa2c8692de21f) + +running 14 tests +test tests::handler_test::test_index_get ... ok +test tests::handler_test::test_index_post ... ok +test tests::openwhisk_test::delete_rule_test_fail ... ok +test tests::openwhisk_test::unatharsed_delete_action_test ... ok +test tests::openwhisk_test::create_rule_test ... ok +test tests::openwhisk_test::unauthorised_delete_rule_test ... ok +test tests::openwhisk_test::get_rule_list_test_fail ... ok +test tests::openwhisk_test::delete_trigger_test ... ok +test tests::openwhisk_test::trigger_test ... ok +test tests::openwhisk_test::delete_action_test ... ok +test tests::openwhisk_test::get_rule_list_test ... ok +test tests::openwhisk_test::get_trigger_list_test ... ok +test tests::openwhisk_test::delete_rule_test ... ok +test tests::openwhisk_test::get_action_list_test ... ok + +test result: ok. 14 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s +``` + +I tried to check the test coverage with `cargo tarpaulin` and got this error. + +``` +Compiling action-substrate-event-processor v0.1.0 (/home/user/Documents/aurras/aurras/actions/substrate-event-processor) +error: could not compile `workflow_apis` due to 2 previous errors +warning: build failed, waiting for other jobs to finish... +May 22 08:27:02.456 ERROR cargo_tarpaulin: Failed to compile tests! +error: linking with `cc` failed: exit status: 1 + | +. +. +. += note: /usr/bin/ld: /home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::req': + /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:180: undefined reference to `req' + /usr/bin/ld: /home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::header_get': + /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:237: undefined reference to `header_get' + /usr/bin/ld: /home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::headers_get_all': + /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:267: undefined reference to `headers_get_all' + /usr/bin/ld: /home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::body_read': + /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:295: undefined reference to `body_read' + collect2: error: ld returned 1 exit status + + = note: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified + = note: use the `-l` flag to specify native libraries to link + = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname) + +Error: "Failed to compile tests!\nerror: linking with `cc` failed: exit status: 1\n |\n = note: LC_ALL=\"C\" +. +. +. +/home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::req':\n /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:180: undefined reference to `req'\n /usr/bin/ld: /home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::header_get':\n /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:237: undefined reference to `header_get'\n /usr/bin/ld: /home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::headers_get_all':\n /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:267: undefined reference to `headers_get_all'\n /usr/bin/ld: /home/user/Documents/aurras/aurras/target/debug/deps/libwasi_experimental_http-38895d6571b1fc77.rlib(wasi_experimental_http-38895d6571b1fc77.wasi_experimental_http.2f4a9342-cgu.9.rcgu.o): in function `wasi_experimental_http::raw::body_read':\n /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/wasi-experimental-http-0.9.0/src/raw.rs:295: undefined reference to `body_read'\n collect2: error: ld returned 1 exit status\n \n = note: some `extern` functions couldn't be found; some native libraries may need to be installed or have their path specified\n = note: use the `-l` flag to specify native libraries to link\n = note: use the `cargo:rustc-link-lib` directive to specify the native libraries to link with Cargo (see https://doc.rust-lang.org/cargo/reference/build-scripts.html#cargorustc-link-libkindname)\n\n" +``` + + + +### Substrate-API-Client + +Could you explain bette this derivable and how to test it? + +## Evaluation V1 + ### Documentation, Testing Guide and Docker File Need better instructions how to run and how to test. diff --git a/evaluations/awesome-polka_1_keeganquigley.md b/evaluations/awesome-polka_1_keeganquigley.md index dfc7f52ea..16b1bccc3 100644 --- a/evaluations/awesome-polka_1_keeganquigley.md +++ b/evaluations/awesome-polka_1_keeganquigley.md @@ -1,6 +1,6 @@ # Evaluation -- **Status:** In progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Awesome-Polka.md - **Milestone:** 1 - **Previously successfully merged evaluation:** All by keeganquigley @@ -9,14 +9,31 @@ | Number | Deliverable | Accepted | Link | Notes | | ------------- | ------------- | ------------- | ------------- | ------------- | | **0a.** | License | | [MIT](https://github.com/tolgayayci/awesome-polka/blob/dev/LICENSE) | | -| **0b.** | Documentation | | [Awesome Polka Docs](https://docs.awesomepolka.org/docs/awesome-polka/getting-started) | | -| **0c.** | Testing and Testing Guide | | [Guide](https://docs.awesomepolka.org/docs/technical-details/testing) | | -| **0e.** | Article | | [Documentation Includes](https://docs.awesomepolka.org/docs/awesome-polka/getting-started) | | -| **1.** | UI & UX Development | | **Home Page:** [Link](https://awesomepolka.org)

**Projects Page:** [Link](https://awesomepolka.org/projects)

**Project Detail Page:** [Link](https://awesomepolka.org/projects/awesome-polka)

**Articles Page:** [Link](https://awesomepolka.org/articles)

**Article Detail Page:** [Link](https://awesomepolka.org/articles/09885b15-3a16-478f-aa2f-d6929d2f05c8)

**Ranking Page:** [Link](https://awesomepolka.org/ranking)

**Learn Page:** [Link](https://awesomepolka.org/learn)

**UX Improvements & Testing:** [Link](https://docs.awesomepolka.org/docs/technical-details/testing)| -| *2.* | Project Owner Dashboard | | [Dashboard Link](https://awesomepolka.org/dashboard/project) | | +| **0b.** | Documentation | | [Awesome Polka Docs](https://docs.awesomepolka.org/docs/awesome-polka/getting-started) | Ok. | +| **0c.** | Testing and Testing Guide | | [Guide](https://docs.awesomepolka.org/docs/technical-details/testing) | Ok. | +| **0e.** | Article | | [Documentation Includes](https://docs.awesomepolka.org/docs/awesome-polka/getting-started) | Ok. | +| **1.** | UI & UX Development | | **Home Page:** [Link](https://awesomepolka.org)

**Projects Page:** [Link](https://awesomepolka.org/projects)

**Project Detail Page:** [Link](https://awesomepolka.org/projects/awesome-polka)

**Articles Page:** [Link](https://awesomepolka.org/articles)

**Article Detail Page:** [Link](https://awesomepolka.org/articles/09885b15-3a16-478f-aa2f-d6929d2f05c8)

**Ranking Page:** [Link](https://awesomepolka.org/ranking)

**Learn Page:** [Link](https://awesomepolka.org/learn)

**UX Improvements & Testing:** [Link](https://docs.awesomepolka.org/docs/technical-details/testing)| See below. +| *2.* | Project Owner Dashboard | | [Dashboard Link](https://awesomepolka.org/dashboard/project) | See below. | # General Notes +Site is built with Vercel and pretty straight forward to navigate. It is a good proof of concept but right now links to just our blogs and wiki pages. Not much information in any of the categories. I hope to see a lot more information added in the future. Hopefully this will change as people sign up to contribute posts. + +Please address issues below: + +1. As far as I can tell, Awesome Polka is not available on the iOS app store or the Google Play store. The icons just point back to the domain. Is there a reason these are included when the mobile versions haven't been created yet? + +2. I'm able to log into the dashboard to modify the contents, however these categories don't exist on the site even though they say "published". Therefore I can't see my changes reflected. Shouldn't I be able to see these categories on the site? (i.e. FAQ, Team, Jobs, etc.) + +dash + +3. When trying to create an article, selecting "Cancel changes" and "Update" does nothing. I am also unable to upload a cover photo. Are these buttons supposed to work? + +![article](https://github.com/w3f/Grant-Milestone-Delivery/assets/35080151/33aebf00-7be6-4517-8df2-8acb098e47bc) + + +## Tests + 8 unit tests pass (validation using Yup) ```js yarn run v1.22.15 @@ -38,3 +55,103 @@ Time: 1.782 s Ran all test suites. ✨ Done in 2.92s. ``` +## General Notes V2 + +**UPDATE:** Above issues have been resolved. I can now create article posts and the app store icons have been removed. + +**UPDATE:** Unit tests were added for hooks: +```js +yarn test +yarn run v1.22.15 +warning ../package.json: No license field +$ jest + PASS src/utils/validation/tests/faqValidation.test.ts + validateFaq + ✓ valid faq object passes validation (2 ms) + ✓ faq object with missing required field fails validation (4 ms) + ✓ faq object with invalid question length fails validation (1 ms) + ✓ faq object with invalid answer length fails validation (1 ms) + ✓ faq object with too few questions fails validation + + PASS src/utils/validation/tests/jobsValidation.test.ts + validateJobs + ✓ valid jobs object passes validation (6 ms) + ✓ jobs object with missing required field fails validation (18 ms) + ✓ jobs object with invalid title length fails validation (3 ms) + ✓ jobs object with invalid link fails validation (2 ms) + ✓ jobs object with too few job postings fails validation + + PASS src/utils/validation/tests/teamValidation.test.ts + validateTeam + ✓ valid team object passes validation (2 ms) + ✓ team object with missing required field fails validation (7 ms) + ✓ team object with invalid LinkedIn URL fails validation + ✓ team object with too few members fails validation (1 ms) + + PASS src/utils/validation/tests/descriptionValidation.test.ts + Description validation + ✓ should require bio (5 ms) + ✓ should require bio to be at least 12 characters (1 ms) + ✓ should require bio to be no longer than 50 characters (1 ms) + ✓ should allow description to be empty (1 ms) + ✓ should allow description to be most 1500 characters (3 ms) + + PASS src/utils/validation/tests/profileValidation.test.ts + validateProfile + ✓ should validate a correct profile object (5 ms) + ✓ should throw an error when bio is missing (12 ms) + ✓ should throw an error when bio is too short (3 ms) + ✓ should throw an error when bio is too long (1 ms) + ✓ should throw an error when image is missing (1 ms) + ✓ should throw an error when image URL is too short (1 ms) + + PASS src/utils/validation/tests/githubRepoValidation.test.ts + validateGithubRepo + ✓ should validate a correct GitHub repository URL (4 ms) + ✓ should not validate an incorrect GitHub repository URL (3 ms) + ✓ should not validate a URL without a repository + ✓ should not validate an empty URL + ✓ should not validate a missing URL (1 ms) + ✓ should return specific error messages + + PASS src/utils/validation/tests/articleValidation.test.ts + validateArticle + ✓ should validate a correct article object (7 ms) + ✓ should throw an error when title is missing (10 ms) + + PASS src/utils/validation/tests/coingeckoTokenValidation.test.ts + ✓ validates a valid CoinGecko URL (8 ms) + ✓ does not validate an invalid CoinGecko URL (7 ms) + ✓ requires a CoinGecko URL (1 ms) + + PASS src/hooks/tests/useCheckProject.test.ts + useCheckProject + ✓ should set isLoading to false and not update project when there is no project (7 ms) + ✓ should not call readProjectAttribute when project is already in the store (2 ms) + ✓ should handle errors and set isLoading to false (1 ms) + + PASS src/hooks/tests/useCheckUser.test.ts + useCheckUser + ✓ should set isLoading to false and not update user when there is no user (7 ms) + + console.log + useCheckProject error + + at log (src/hooks/useCheckArticle.ts:17:15) + + console.log + useCheckProject error + + at log (src/hooks/useCheckArticle.ts:17:15) + + PASS src/hooks/tests/useCheckArticle.test.ts + useCheckArticle + ✓ should set isLoading to false and not update article when the article is not found (10 ms) + ✓ should handle errors and set isLoading to false (14 ms) + +Test Suites: 11 passed, 11 total +Tests: 42 passed, 42 total +Snapshots: 0 total +Time: 3.469 s +``` + diff --git a/evaluations/bridgestate_1_keeganquigley.md b/evaluations/bridgestate_1_keeganquigley.md new file mode 100644 index 000000000..e051b9499 --- /dev/null +++ b/evaluations/bridgestate_1_keeganquigley.md @@ -0,0 +1,152 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/DIA_Bridge_Attestation_Oracle.md +- **Milestone:** 1 +- **Previously successfully merged evaluation:** All by keeganquigley + +| Number | Deliverable | Accepted | Link | Notes +| -----: | ----------- | ------------- | ------------- | ------------- | +| **0a.** | License | | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/LICENSE) | Apache 2.0 license | +| **0b.** | Documentation | | [Link](https://github.com/diadata-org/bridgestate-ocw#readme) | Ok. | +| **0c.** | Testing and Testing Guide | | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/src/tests.rs) | Ok. | +| **0d.** | Docker | | [Link](https://github.com/diadata-org/bridgestate-ocw#using-docker) | | +| 0e. | Article | | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/Article.md) | Ok. | +| 1. | Attestation oracle core: Off-chain worker | | | Ok. | +| 2. | Attestation oracle core: Pallet | | [Link](https://github.com/diadata-org/bridgestate-ocw/tree/main#add-the-collateral-reader-pallet-to-your-runtime) | Ok. | +| 3. | Attestation oracle core: RPCs | | [Link](https://github.com/diadata-org/bridgestate-ocw/blob/main/src/impls.rs) | Ok. | +| 4. | Attestation oracle core: Collateral ratio calculation | | [Link](https://github.com/diadata-org/bridgestate-ocw/tree/main#about-the-collateral-reader-pallet) | Ok. | + +# General Notes + +When trying to compile and run the node I get the following: + +```rust +error: linking with `cc` failed: exit status: 1 + | + = note: LC_ALL="C" PATH="/home/ubuntu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/x86_64-unknown-linux-gnu/bin:/home/ubuntu/.nvm/versions/node/v18.13.0/bin:/home/ubuntu/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" VSLANG="1033" "cc" "-m64" "/tmp/rustcmlVVmV/symbols.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.106ynm17pgxcmi50.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.12784fs9hcon45ow.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.1kqejazt585xn42r.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.1yv6nwvxww7h97zp.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.218h7vafws7v7h7d.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.26mqtk4b6jgeh3un.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.28j15a6tkxwymlqc.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.2fg5zrsz70ae0k90.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.2pawq2utohb9bxdm.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.35pcqi7b5vh2z074.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.3atpb6avwn5vx1e1.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.3wq5rkjngfnks6kc.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.44d62mtspvfy4xxa.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.49x7shyjqqnt56ff.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.4rpps648edmcubdt.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.5am2rn332to1iw9c.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.5c57v5c6gvcji9is.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.5f5m179vbnefo777.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_script_build-6276b39b01213466.dqhd3q29xgel6sp.rcgu.o" "/home/ubuntu/substrate-node/target/debug/build/node-cli-6276b39b01213466/build_sc +``` +This is supposedly a Mac problem but it happens on Linux too. + +Switched toolchains but still getting this: +```rust +error: failed to run custom build command for `node-template-runtime v4.0.0-dev (/Users/keeganquigley/substrate-node/bin/node-template/runtime)` + +Caused by: + process didn't exit successfully: `/Users/keeganquigley/substrate-node/target/release/build/node-template-runtime-4236d63b597cd1e1/build-script-build` (exit status: 1) + --- stderr + Rust WASM toolchain not installed, please install it! + + Further error information: + ------------------------------------------------------------ + Compiling wasm-test v1.0.0 (/var/folders/6_/b7tdvp0d6h779ktj0h92w5km0000gn/T/.tmpjZAv2N) + error[E0463]: can't find crate for `std` + | + = note: the `wasm32-unknown-unknown` target may not be installed + = help: consider downloading the target with `rustup target add wasm32-unknown-unknown` + = help: consider building the standard library from source with `cargo build -Zbuild-std` + + error: cannot find macro `println` in this scope + --> src/main.rs:3:5 + | + 3 | println!("{}", env!("RUSTC_VERSION")); + | ^^^^^^^ + + error: requires `sized` lang_item + + For more information about this error, try `rustc --explain E0463`. + error: could not compile `wasm-test` (bin "wasm-test") due to 3 previous errors + ------------------------------------------------------------ + ``` +**UPDATE:** This error is happening on regular `substrate-node-template` and is not the fault of the team. + +Some pallet functions don't have comments. Consider improving them for next milestone. + +## Tests + +Docker fails with the following: +```rust +sh ./docker/build.sh +~/substrate-node ~/substrate-node +Building parity/substrate:latest docker image, hang on! +[+] Building 245.4s (10/15) + => [internal] load .dockerignore 0.0s + => => transferring context: 99B 0.0s + => [internal] load build definition from substrate_builder.Dockerfile 0.0s + => => transferring dockerfile: 1.82kB 0.0s + => [internal] load metadata for docker.io/paritytech/ci-linux:production 1.5s + => [internal] load metadata for docker.io/library/ubuntu:20.04 1.5s + => [builder 1/4] FROM docker.io/paritytech/ci-linux:production@sha256:555bea4b712590ee08bf5ad2d9c4aa76fd5663291c7 174.6s + => => resolve docker.io/paritytech/ci-linux:production@sha256:555bea4b712590ee08bf5ad2d9c4aa76fd5663291c71d5180722b 0.0s + => => sha256:555bea4b712590ee08bf5ad2d9c4aa76fd5663291c71d5180722b98b1d6a7e0b 761B / 761B 0.0s + => => sha256:7e12b5224551127862490c6ef3d1b8bb7684fff8ddd2994737200f8053e0c4cb 9.91kB / 9.91kB 0.0s + => => sha256:9e3ea8720c6de96cc9ad544dddc695a3ab73f5581c5d954e0504cc4f80fb5e5c 31.40MB / 31.40MB 8.9s + => => sha256:3b4d18f7247ab0517742ad602f79deae16533e766e110ee5ebd8978620033443 570.02MB / 570.02MB 160.5s + => => sha256:5d2ff4126beaf07b2eca0c5df928087cac191766af27ba554fd928c7c67e5cad 361.19MB / 361.19MB 120.2s + => => extracting sha256:9e3ea8720c6de96cc9ad544dddc695a3ab73f5581c5d954e0504cc4f80fb5e5c 0.5s + => => extracting sha256:3b4d18f7247ab0517742ad602f79deae16533e766e110ee5ebd8978620033443 7.7s + => => extracting sha256:5d2ff4126beaf07b2eca0c5df928087cac191766af27ba554fd928c7c67e5cad 4.8s + => [internal] load build context 0.5s + => => transferring context: 41.15MB 0.4s + => CACHED [stage-1 1/6] FROM docker.io/library/ubuntu:20.04@sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d 0.0s + => [builder 2/4] WORKDIR /substrate 1.0s + => [builder 3/4] COPY . /substrate 0.3s + => ERROR [builder 4/4] RUN cargo build --locked --release 68.0s +------ + > [builder 4/4] RUN cargo build --locked --release: +#10 2.177 Updating crates.io index +#10 67.94 Killed +------ +process "/bin/sh -c cargo build --locked --release" did not complete successfully: exit code: 137 +``` +Disk space doesn't seem to be an issue, please fix this for the next milestone. + +Unit tests all pass, however there are some warnings about unused variables: + +```rust +warning: unused variable: `expected_token` + --> frame/collateral-reader/src/tests.rs:41:7 + | +41 | let expected_token = token.clone(); + | ^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_expected_token` + | + = note: `#[warn(unused_variables)]` on by default + +warning: unused `Result` that must be used + --> frame/collateral-reader/src/tests.rs:38:3 + | +38 | TemplateModule::save_asset_stats(origin.into(), token_clone); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: this `Result` may be an `Err` variant, which should be handled + = note: `#[warn(unused_must_use)]` on by default + +warning: unused `Result` that must be used + --> frame/collateral-reader/src/tests.rs:60:4 + | +60 | TemplateModule::save_asset_stats(origin.into(), token.clone()); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: this `Result` may be an `Err` variant, which should be handled + +warning: `pallet-collateral-reader` (lib test) generated 3 warnings (run `cargo fix --lib -p pallet-collateral-reader --tests` to apply 1 suggestion) + Finished test [unoptimized + debuginfo] target(s) in 7m 33s + Running unittests src/lib.rs (/home/ubuntu/substrate-node/target/debug/deps/pallet_collateral_reader-dcda7472ee4c65a4) + +running 4 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::save_asset_stats_works ... ok +test tests::test_save_asset_event ... ok +test tests::signed_transaction_on_chain ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.41s + + Doc-tests pallet-collateral-reader + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` +## Cargo Clippy + +Comes back clean. diff --git a/evaluations/calamar_2_dsm-w3f.md b/evaluations/calamar_2_dsm-w3f.md new file mode 100644 index 000000000..6f9238972 --- /dev/null +++ b/evaluations/calamar_2_dsm-w3f.md @@ -0,0 +1,317 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Calamar.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License | | [LICENSE](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/LICENSE.txt) | | +| 0b. | Documentation | | [README](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/README.md), [Calamar docs](https://docs.calamar.app/) | | +| 0c. | Testing Guide | | [README#Test](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/README.md#test), [E2E tests](https://github.com/topmonks/calamar/tree/fc791d5ddc433cea71b3587dc0718c50a017c9ee/test/e2e), [GitHub workflow](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/.github/workflows/test-and-deploy.yml#L27), [Test reports](https://github.com/topmonks/calamar/deployments?environment=test-report#activity-log), [Screenshots](https://app.argos-ci.com/topmonks/calamar) | | +| 0d. | Docker | | [Dockerfile](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/Dockerfile), [README#Docker](https://github.com/topmonks/calamar/blob/fc791d5ddc433cea71b3587dc0718c50a017c9ee/README.md#docker) | | +| 0e. | Article | | [Article](https://medium.com/topmonks/calamar-block-explorer-milestone-2-finished-ca581f95301a) | | +| 1. | Account / Balance overview | | [PR#142](https://github.com/topmonks/calamar/pull/142), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 2. | Account / Balance charts | | [PR#143](https://github.com/topmonks/calamar/pull/143), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 3. | Account / Transfers list | | [PR#134](https://github.com/topmonks/calamar/pull/134), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 4. | Account / Calls list | | [PR#125](https://github.com/topmonks/calamar/pull/125), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/GLjawuGpmgzma4JkR4A56esGofJVKXWdDAuGeF6o5D66wGE) | | +| 5. | Account / Identity info | | [PR#150](https://github.com/topmonks/calamar/pull/150), [Example](https://c5a84f4a.calamar.pages.dev/kusama/account/EMRpBNnfAqRb62b14cxmnCdihtUjEeyh6tfyhGwnGwxjY8F) | | +| 6. | Chain dashboard / Stats | | [PR#149](https://github.com/topmonks/calamar/pull/149), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 7. | Chain dashboard / Asset value chart | | [PR#149](https://github.com/topmonks/calamar/pull/149), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 8. | Chain dashboard / Latest blocks | | [PR#136](https://github.com/topmonks/calamar/pull/136), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 9. | Chain dashboard / Latest transfers | | [PR#135](https://github.com/topmonks/calamar/pull/135), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | +| 10. | Chain dashboard / Top holders | | [PR#137](https://github.com/topmonks/calamar/pull/137), [Example](https://c5a84f4a.calamar.pages.dev/polkadot) | | + +## Evaluation V2 + +### Automatic Test + +All tests passed this time. + +``` +user@localhost:~/Documents/calamar/calamar$ npm run test + +> calamar@0.1.0 test +> playwright test + + +Running 128 tests using 1 worker + + 128 passed (18.8m) + +To open last HTML report run: + + npx playwright show-report test/report +``` + +### Code quality + +Some lint warnings were fixed but other warnings remain, for example: + +``` +/home/user/Documents/calamar/calamar/src/utils/addRuntimeSpec.ts + 16:16 warning Forbidden non-null assertion @typescript-eslint/no-non-null-assertion + 28:16 warning Forbidden non-null assertion @typescript-eslint/no-non-null-assertion + +/home/user/Documents/calamar/calamar/src/utils/assert.ts + 3:31 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 3:47 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/compare.ts + 23:12 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 23:25 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 25:19 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 25:32 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 32:70 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/extractConnectionItems.ts + 5:44 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 5:53 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 5:68 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 5:76 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/fetchGraphql.ts + 3:40 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/filterToWhere.ts + 1:39 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/number.ts + 25:32 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 56:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/tryJsonParse.ts + 1:37 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/uniq.ts + 5:62 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +✖ 104 problems (0 errors, 104 warnings) + +``` + +## Evaluation V1 + +### Automatic Test + +I ran the E2E tests, and some tests failed with timeout, for example, the failed tests 1, 13, and 14: + +``` +user@localhost:~/Documents/calamar/calamar$ npm run test + +> calamar@0.1.0 test +> playwright test + + +Running 128 tests using 8 workers + 1) [desktop] › e2e/chainDashboard.spec.ts:14:6 › Chain dashboard page › shows latest extrinsics tab + + Test timeout of 60000ms exceeded. + + page.evaluate: Target closed + + at utils/events.ts:26 + + 24 | }; + 25 | + > 26 | return page.evaluate(([eventName, serializedCondition, timeout]) => { + | ^ + 27 | const condition = new Function(`return ${serializedCondition}`)(); + 28 | + 29 | return new Promise((resolve, reject) => { + + at waitForPageEvent (/home/user/Documents/calamar/calamar/test/utils/events.ts:26:14) + at navigate (/home/user/Documents/calamar/calamar/test/utils/navigate.ts:26:25) + at /home/user/Documents/calamar/calamar/test/e2e/chainDashboard.spec.ts:15:3 + + Pending operations: + - page.evaluate at test/utils/events.ts:26:14 + - page.evaluate at test/utils/screenshot.ts:32:7 + + + attachment #2: video (video/webm) -------------------------------------------------------------- + test/results/e2e-chainDashboard-Chain-dashboard-page-shows-latest-extrinsics-tab-desktop/video.webm + ------------------------------------------------------------------------------------------------ + + attachment #3: trace (application/zip) --------------------------------------------------------- + test/results/e2e-chainDashboard-Chain-dashboard-page-shows-latest-extrinsics-tab-desktop/trace.zip + Usage: + + npx playwright show-trace test/results/e2e-chainDashboard-Chain-dashboard-page-shows-latest-extrinsics-tab-desktop/trace.zip + + ------------------------------------------------------------------------------------------------ + + 13) [mobile] › e2e/chainDashboard.spec.ts:100:6 › Chain dashboard page › show error message when transfers items fetch fails + + Test timeout of 60000ms exceeded. + + page.evaluate: Target closed + + at utils/events.ts:26 + + 24 | }; + 25 | + > 26 | return page.evaluate(([eventName, serializedCondition, timeout]) => { + | ^ + 27 | const condition = new Function(`return ${serializedCondition}`)(); + 28 | + 29 | return new Promise((resolve, reject) => { + + at waitForPageEvent (/home/user/Documents/calamar/calamar/test/utils/events.ts:26:14) + at navigate (/home/user/Documents/calamar/calamar/test/utils/navigate.ts:26:25) + at /home/user/Documents/calamar/calamar/test/e2e/chainDashboard.spec.ts:114:3 + + Pending operations: + - page.evaluate at test/utils/events.ts:26:14 + - page.evaluate at test/utils/screenshot.ts:32:7 + + + attachment #2: video (video/webm) -------------------------------------------------------------- + test/results/e2e-chainDashboard-Chain-dashboard-page-show-error-message-when-transfers-items-fetch-fails-mobile/video.webm + ------------------------------------------------------------------------------------------------ + + attachment #3: trace (application/zip) --------------------------------------------------------- + test/results/e2e-chainDashboard-Chain-dashboard-page-show-error-message-when-transfers-items-fetch-fails-mobile/trace.zip + Usage: + + npx playwright show-trace test/results/e2e-chainDashboard-Chain-dashboard-page-show-error-message-when-transfers-items-fetch-fails-mobile/trace.zip + + ------------------------------------------------------------------------------------------------ + + 14) [mobile] › e2e/chainDashboard.spec.ts:50:6 › Chain dashboard page › show error message when extrinsics items fetch fails + + Test timeout of 60000ms exceeded. + + page.evaluate: Target closed + + at utils/events.ts:26 + + 24 | }; + 25 | + > 26 | return page.evaluate(([eventName, serializedCondition, timeout]) => { + | ^ + 27 | const condition = new Function(`return ${serializedCondition}`)(); + 28 | + 29 | return new Promise((resolve, reject) => { + + at waitForPageEvent (/home/user/Documents/calamar/calamar/test/utils/events.ts:26:14) + at navigate (/home/user/Documents/calamar/calamar/test/utils/navigate.ts:26:25) + at /home/user/Documents/calamar/calamar/test/e2e/chainDashboard.spec.ts:64:3 + + Pending operations: + - page.evaluate at test/utils/events.ts:26:14 + - page.evaluate at test/utils/screenshot.ts:32:7 + + + attachment #2: video (video/webm) -------------------------------------------------------------- + test/results/e2e-chainDashboard-Chain-dashboard-page-show-error-message-when-extrinsics-items-fetch-fails-mobile/video.webm + ------------------------------------------------------------------------------------------------ + + attachment #3: trace (application/zip) --------------------------------------------------------- + test/results/e2e-chainDashboard-Chain-dashboard-page-show-error-message-when-extrinsics-items-fetch-fails-mobile/trace.zip + Usage: + + npx playwright show-trace test/results/e2e-chainDashboard-Chain-dashboard-page-show-error-message-when-extrinsics-items-fetch-fails-mobile/trace.zip + + ------------------------------------------------------------------------------------------------ + + + 14 failed + [desktop] › e2e/chainDashboard.spec.ts:14:6 › Chain dashboard page › shows latest extrinsics tab + [desktop] › e2e/chainDashboard.spec.ts:23:6 › Chain dashboard page › shows latest blocks tab === + [desktop] › e2e/chainDashboard.spec.ts:32:6 › Chain dashboard page › shows latest transfers tab + [desktop] › e2e/chainDashboard.spec.ts:41:6 › Chain dashboard page › shows top holders tab ===== + [desktop] › e2e/chainDashboard.spec.ts:50:6 › Chain dashboard page › show error message when extrinsics items fetch fails + [desktop] › e2e/chainDashboard.spec.ts:74:6 › Chain dashboard page › show error message when blocks items fetch fails + [desktop] › e2e/chainDashboard.spec.ts:100:6 › Chain dashboard page › show error message when transfers items fetch fails + [mobile] › e2e/chainDashboard.spec.ts:14:6 › Chain dashboard page › shows latest extrinsics tab + [mobile] › e2e/chainDashboard.spec.ts:23:6 › Chain dashboard page › shows latest blocks tab ==== + [mobile] › e2e/chainDashboard.spec.ts:32:6 › Chain dashboard page › shows latest transfers tab = + [mobile] › e2e/chainDashboard.spec.ts:41:6 › Chain dashboard page › shows top holders tab ====== + [mobile] › e2e/chainDashboard.spec.ts:50:6 › Chain dashboard page › show error message when extrinsics items fetch fails + [mobile] › e2e/chainDashboard.spec.ts:74:6 › Chain dashboard page › show error message when blocks items fetch fails + [mobile] › e2e/chainDashboard.spec.ts:100:6 › Chain dashboard page › show error message when transfers items fetch fails + 114 passed (4.7m) + +``` + +Do these tests need some configuration to avoid this? + +### Manual Test + +I ran the front end and was able to check the change in the homepage and the improvements for the account and chain dashboard pages. The application seems to be working fine but I need some explanation about the tests failing. + +### Code quality + +I ran `npm run lint` and received some warnings, for example: + +``` +user@localhost:~/Documents/calamar/calamar$ npm run lint + +> calamar@0.1.0 lint +> eslint ./src +. +. +. +/home/user/Documents/calamar/calamar/src/services/fetchService.ts + 4:40 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 14:40 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 24:40 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 34:36 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 44:46 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 54:37 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/services/runtimeService.ts + 48:15 warning Forbidden non-null assertion @typescript-eslint/no-non-null-assertion + +/home/user/Documents/calamar/calamar/src/services/statsService.ts + 6:27 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 51:18 warning Forbidden non-null assertion @typescript-eslint/no-non-null-assertion + +/home/user/Documents/calamar/calamar/src/services/transfersService.ts + 134:26 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/services/usdRatesService.ts + 27:14 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/addRuntimeSpec.ts + 16:16 warning Forbidden non-null assertion @typescript-eslint/no-non-null-assertion + 28:16 warning Forbidden non-null assertion @typescript-eslint/no-non-null-assertion + +/home/user/Documents/calamar/calamar/src/utils/assert.ts + 3:31 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 3:47 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/compare.ts + 23:12 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 23:25 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 25:19 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 25:32 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 32:70 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/extractConnectionItems.ts + 5:44 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 5:53 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 5:68 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 5:76 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/fetchGraphql.ts + 3:40 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/filterToWhere.ts + 1:39 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/number.ts + 25:32 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 56:33 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/tryJsonParse.ts + 1:37 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/home/user/Documents/calamar/calamar/src/utils/uniq.ts + 5:62 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +✖ 121 problems (0 errors, 121 warnings) +``` diff --git a/evaluations/centrifuge-gsrpc-v2_2_niklabh.md b/evaluations/centrifuge-gsrpc-v2_2_niklabh.md new file mode 100644 index 000000000..973ed77e9 --- /dev/null +++ b/evaluations/centrifuge-gsrpc-v2_2_niklabh.md @@ -0,0 +1,580 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [centrifuge-gsrpc-v2](https://github.com/w3f/Grants-Program/blob/master/applications/centrifuge-gsrpc-v2.md) +- **Milestone:** 2 +- **Kusama Identity:** [CwYBnfoxb1B6fibdMN4js21DQeqgbqHgwLwacfKFdC7vsyZ](https://kusama.subscan.io/account/CwYBnfoxb1B6fibdMN4js21DQeqgbqHgwLwacfKFdC7vsyZ) +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evalulation Notes | +|--------|----------------------------------|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------| +| 1. | License |
  • [x]
| [License](https://github.com/centrifuge/go-substrate-rpc-client/blob/event-parsing-v2/LICENSE) | Apache License v2 | +| 2. | Documentation |
  • [x]
| [Documentation](https://github.com/centrifuge/go-substrate-rpc-client/blob/event-parsing-v2/registry/REGISTRY.md) | Documentation updated on request | +| 3. | PR with changes |
  • [x]
| [centrifuge/go-substrate-rpc-client#338](https://github.com/centrifuge/go-substrate-rpc-client/pull/338) | PR looks good | +| 4a. | Registry Unit Tests |
  • [x]
| [UnitTest](https://github.com/centrifuge/go-substrate-rpc-client/blob/20047b8b15d046d0fa137cc716cb489395a0081a/registry/registry_test.go) | Unit Test coverage is good | +| 4b. | Registry (Events) Live Tests |
  • [x]
| [Events Live Tests](https://github.com/centrifuge/go-substrate-rpc-client/blob/20047b8b15d046d0fa137cc716cb489395a0081a/registry/retriever/event_retriever_live_test.go) | Tests are running fine | +| 4c. | Registry (Extrinsics) Live Tests |
  • [x]
| [Extrinsics Live Tests](https://github.com/centrifuge/go-substrate-rpc-client/blob/20047b8b15d046d0fa137cc716cb489395a0081a/registry/retriever/extrinsic_retriever_live_test.go) | Live test against public endpoints. | +| 4d. | Test execution |
  • [x]
| [Test execution](https://github.com/centrifuge/go-substrate-rpc-client/blob/20047b8b15d046d0fa137cc716cb489395a0081a/Makefile#L49-L53) | | +| 5. | Dockerfile |
  • [x]
| [Dockerfile](https://github.com/centrifuge/go-substrate-rpc-client/blob/b9da36ebf177cbb3ee41c2ef2b9a1fb08e5f8522/Dockerfile_milestone2) | Dockerfile is provided | +| 6. | In-Memory Registry |
  • [x]
| [centrifuge/go-substrate-rpc-client#338](https://github.com/centrifuge/go-substrate-rpc-client/pull/338) | In-Memory Registry is implemented | + + +## General Notes v2 - June 29, 2023 + +- Tutorial on how to parse events is added [PR](https://github.com/centrifuge/go-substrate-rpc-client/commit/7e3e5ad5225bfa7afd342f3fe8932dc44702c472) +- Live tests count is controlled by env var. + +## General Notes v1 - June 26, 2023 + +- Documentation needs to be improved. Basic tutorial on how to parse any substrate event and type using the new version of the library is missing. +- Unit test coverage is good. +- There is an error in running tests in Makefile. I have submitted a [PR](https://github.com/centrifuge/go-substrate-rpc-client/pull/353) to fix the same. +- Live tests are running for too long. No need to check for 1000 events. 50 are fine. +- Dockerfile to run milestone2 tests is provided. +- In-Memory Registry is implemented. + +### Run unit test + +```bash +make test-milestone2 +Sending build context to Docker daemon 11.94MB +Step 1/4 : FROM golang:1.18 + ---> c37a56a6d654 +Step 2/4 : COPY . /go-substrate-rpc-client/events-parsing-v2/milestone-2 + ---> Using cache + ---> 330446577dfa +Step 3/4 : WORKDIR /go-substrate-rpc-client/events-parsing-v2/milestone-2 + ---> Using cache + ---> a35718b940dc +Step 4/4 : CMD go test -v ./registry/... --cover + ---> Running in ca1e535bbbba +Removing intermediate container ca1e535bbbba + ---> 5aaa87d8f46c +Successfully built 5aaa87d8f46c +Successfully tagged gsrpc-m2:latest +go: downloading github.com/stretchr/testify v1.7.0 +go: downloading github.com/gorilla/websocket v1.5.0 +go: downloading github.com/ethereum/go-ethereum v1.10.17 +go: downloading github.com/deckarep/golang-set v1.8.0 +go: downloading github.com/rs/cors v1.8.2 +go: downloading golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 +go: downloading github.com/vedhavyas/go-subkey v1.0.3 +go: downloading github.com/pierrec/xxHash v0.1.5 +go: downloading github.com/stretchr/objx v0.1.1 +go: downloading github.com/pmezard/go-difflib v1.0.0 +go: downloading github.com/davecgh/go-spew v1.1.1 +go: downloading gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b +go: downloading github.com/gtank/merlin v0.1.1 +go: downloading github.com/ChainSafe/go-schnorrkel v1.0.0 +go: downloading github.com/decred/base58 v1.0.3 +go: downloading github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 +go: downloading github.com/cosmos/go-bip39 v1.0.0 +go: downloading github.com/gtank/ristretto255 v0.1.2 +go: downloading golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 +go: downloading github.com/decred/dcrd/crypto/blake256 v1.0.0 +go: downloading github.com/go-stack/stack v1.8.1 +=== RUN TestFactory_CreateErrorRegistryWithLiveMetadata +=== RUN TestFactory_CreateErrorRegistryWithLiveMetadata/centrifuge + registry_test.go:47: Metadata was decoded successfully + registry_test.go:54: Error registry was created successfully +=== RUN TestFactory_CreateErrorRegistryWithLiveMetadata/polkadot + registry_test.go:47: Metadata was decoded successfully + registry_test.go:54: Error registry was created successfully +=== RUN TestFactory_CreateErrorRegistryWithLiveMetadata/acala + registry_test.go:47: Metadata was decoded successfully + registry_test.go:54: Error registry was created successfully +=== RUN TestFactory_CreateErrorRegistryWithLiveMetadata/statemint + registry_test.go:47: Metadata was decoded successfully + registry_test.go:54: Error registry was created successfully +=== RUN TestFactory_CreateErrorRegistryWithLiveMetadata/moonbeam + registry_test.go:47: Metadata was decoded successfully + registry_test.go:54: Error registry was created successfully +--- PASS: TestFactory_CreateErrorRegistryWithLiveMetadata (0.16s) + --- PASS: TestFactory_CreateErrorRegistryWithLiveMetadata/centrifuge (0.03s) + --- PASS: TestFactory_CreateErrorRegistryWithLiveMetadata/polkadot (0.06s) + --- PASS: TestFactory_CreateErrorRegistryWithLiveMetadata/acala (0.02s) + --- PASS: TestFactory_CreateErrorRegistryWithLiveMetadata/statemint (0.02s) + --- PASS: TestFactory_CreateErrorRegistryWithLiveMetadata/moonbeam (0.03s) +=== RUN TestFactory_CreateErrorRegistry_NoPalletWithErrors +--- PASS: TestFactory_CreateErrorRegistry_NoPalletWithErrors (0.00s) +=== RUN TestFactory_CreateErrorRegistry_ErrorsTypeNotFound +--- PASS: TestFactory_CreateErrorRegistry_ErrorsTypeNotFound (0.00s) +=== RUN TestFactory_CreateErrorRegistry_ErrorsTypeNotAVariant +--- PASS: TestFactory_CreateErrorRegistry_ErrorsTypeNotAVariant (0.00s) +=== RUN TestFactory_CreateErrorRegistry_GetTypeFieldsError +--- PASS: TestFactory_CreateErrorRegistry_GetTypeFieldsError (0.00s) +=== RUN TestFactory_CreateCallRegistryWithLiveMetadata +=== RUN TestFactory_CreateCallRegistryWithLiveMetadata/centrifuge + registry_test.go:246: Metadata was decoded successfully + registry_test.go:253: Call registry was created successfully +=== RUN TestFactory_CreateCallRegistryWithLiveMetadata/polkadot + registry_test.go:246: Metadata was decoded successfully + registry_test.go:253: Call registry was created successfully +=== RUN TestFactory_CreateCallRegistryWithLiveMetadata/acala + registry_test.go:246: Metadata was decoded successfully + registry_test.go:253: Call registry was created successfully +=== RUN TestFactory_CreateCallRegistryWithLiveMetadata/statemint + registry_test.go:246: Metadata was decoded successfully + registry_test.go:253: Call registry was created successfully +=== RUN TestFactory_CreateCallRegistryWithLiveMetadata/moonbeam + registry_test.go:246: Metadata was decoded successfully + registry_test.go:253: Call registry was created successfully +--- PASS: TestFactory_CreateCallRegistryWithLiveMetadata (0.99s) + --- PASS: TestFactory_CreateCallRegistryWithLiveMetadata/centrifuge (0.24s) + --- PASS: TestFactory_CreateCallRegistryWithLiveMetadata/polkadot (0.20s) + --- PASS: TestFactory_CreateCallRegistryWithLiveMetadata/acala (0.25s) + --- PASS: TestFactory_CreateCallRegistryWithLiveMetadata/statemint (0.12s) + --- PASS: TestFactory_CreateCallRegistryWithLiveMetadata/moonbeam (0.18s) +=== RUN TestFactory_CreateCallRegistry_NoPalletWithCalls +--- PASS: TestFactory_CreateCallRegistry_NoPalletWithCalls (0.00s) +=== RUN TestFactory_CreateCallRegistry_CallsTypeNotFound +--- PASS: TestFactory_CreateCallRegistry_CallsTypeNotFound (0.00s) +=== RUN TestFactory_CreateCallRegistry_CallTypeNotAVariant +--- PASS: TestFactory_CreateCallRegistry_CallTypeNotAVariant (0.00s) +=== RUN TestFactory_CreateCallRegistry_GetTypeFieldsError +--- PASS: TestFactory_CreateCallRegistry_GetTypeFieldsError (0.00s) +=== RUN TestFactory_CreateEventRegistryWithLiveMetadata +=== RUN TestFactory_CreateEventRegistryWithLiveMetadata/centrifuge + registry_test.go:450: Metadata was decoded successfully + registry_test.go:457: Event registry was created successfully +=== RUN TestFactory_CreateEventRegistryWithLiveMetadata/polkadot + registry_test.go:450: Metadata was decoded successfully + registry_test.go:457: Event registry was created successfully +=== RUN TestFactory_CreateEventRegistryWithLiveMetadata/acala + registry_test.go:450: Metadata was decoded successfully + registry_test.go:457: Event registry was created successfully +=== RUN TestFactory_CreateEventRegistryWithLiveMetadata/statemint + registry_test.go:450: Metadata was decoded successfully + registry_test.go:457: Event registry was created successfully +=== RUN TestFactory_CreateEventRegistryWithLiveMetadata/moonbeam + registry_test.go:450: Metadata was decoded successfully + registry_test.go:457: Event registry was created successfully +--- PASS: TestFactory_CreateEventRegistryWithLiveMetadata (0.25s) + --- PASS: TestFactory_CreateEventRegistryWithLiveMetadata/centrifuge (0.05s) + --- PASS: TestFactory_CreateEventRegistryWithLiveMetadata/polkadot (0.06s) + --- PASS: TestFactory_CreateEventRegistryWithLiveMetadata/acala (0.04s) + --- PASS: TestFactory_CreateEventRegistryWithLiveMetadata/statemint (0.04s) + --- PASS: TestFactory_CreateEventRegistryWithLiveMetadata/moonbeam (0.06s) +=== RUN TestFactory_CreateEventRegistry_NoPalletWithEvents +--- PASS: TestFactory_CreateEventRegistry_NoPalletWithEvents (0.00s) +=== RUN TestFactory_CreateEventRegistry_EventsTypeNotFound +--- PASS: TestFactory_CreateEventRegistry_EventsTypeNotFound (0.00s) +=== RUN TestFactory_CreateEventRegistry_EventTypeNotAVariant +--- PASS: TestFactory_CreateEventRegistry_EventTypeNotAVariant (0.00s) +=== RUN TestFactory_CreateEventRegistry_GetTypeFieldError +--- PASS: TestFactory_CreateEventRegistry_GetTypeFieldError (0.00s) +=== RUN TestFactory_getTypeFields +--- PASS: TestFactory_getTypeFields (0.00s) +=== RUN TestFactory_getTypeFields_FieldDecoderRetrievalError +--- PASS: TestFactory_getTypeFields_FieldDecoderRetrievalError (0.00s) +=== RUN TestFactory_getTypeFields_FieldTypeNotFoundError +--- PASS: TestFactory_getTypeFields_FieldTypeNotFoundError (0.00s) +=== RUN TestFactory_getFieldDecoder_UnsupportedTypeError +--- PASS: TestFactory_getFieldDecoder_UnsupportedTypeError (0.00s) +=== RUN TestFactory_getFieldDecoder_Compact +--- PASS: TestFactory_getFieldDecoder_Compact (0.00s) +=== RUN TestFactory_getFieldDecoder_Compact_TypeNotFoundError +--- PASS: TestFactory_getFieldDecoder_Compact_TypeNotFoundError (0.00s) +=== RUN TestFactory_getFieldDecoder_Composite +--- PASS: TestFactory_getFieldDecoder_Composite (0.00s) +=== RUN TestFactory_getFieldDecoder_Composite_FieldError +--- PASS: TestFactory_getFieldDecoder_Composite_FieldError (0.00s) +=== RUN TestFactory_getFieldDecoder_Variant +--- PASS: TestFactory_getFieldDecoder_Variant (0.00s) +=== RUN TestFactory_getFieldDecoder_Primitive +--- PASS: TestFactory_getFieldDecoder_Primitive (0.00s) +=== RUN TestFactory_getFieldDecoder_Array +--- PASS: TestFactory_getFieldDecoder_Array (0.00s) +=== RUN TestFactory_getFieldDecoder_Array_TypeNotFoundError +--- PASS: TestFactory_getFieldDecoder_Array_TypeNotFoundError (0.00s) +=== RUN TestFactory_getFieldDecoder_Slice +--- PASS: TestFactory_getFieldDecoder_Slice (0.00s) +=== RUN TestFactory_getFieldDecoder_Slice_TypeNotFoundError +--- PASS: TestFactory_getFieldDecoder_Slice_TypeNotFoundError (0.00s) +=== RUN TestFactory_getFieldDecoder_Tuple +--- PASS: TestFactory_getFieldDecoder_Tuple (0.00s) +=== RUN TestFactory_getFieldDecoder_Tuple_NilTuple +--- PASS: TestFactory_getFieldDecoder_Tuple_NilTuple (0.00s) +=== RUN TestFactory_getFieldDecoder_BitSequence +--- PASS: TestFactory_getFieldDecoder_BitSequence (0.00s) +=== RUN TestFactory_getFieldDecoder_BitSequence_BitStoreTypeNotFound +--- PASS: TestFactory_getFieldDecoder_BitSequence_BitStoreTypeNotFound (0.00s) +=== RUN TestFactory_getFieldDecoder_BitSequence_BitStoreFieldTypeError +--- PASS: TestFactory_getFieldDecoder_BitSequence_BitStoreFieldTypeError (0.00s) +=== RUN TestFactory_getFieldDecoder_BitSequence_BitOrderTypeNotFound +--- PASS: TestFactory_getFieldDecoder_BitSequence_BitOrderTypeNotFound (0.00s) +=== RUN TestFactory_getFieldDecoder_BitSequence_BitOrderCreationError +--- PASS: TestFactory_getFieldDecoder_BitSequence_BitOrderCreationError (0.00s) +=== RUN TestFactory_getVariantFieldType_CompositeVariantTypeFieldError +--- PASS: TestFactory_getVariantFieldType_CompositeVariantTypeFieldError (0.00s) +=== RUN TestFactory_getCompactFieldType_CompactTuple +--- PASS: TestFactory_getCompactFieldType_CompactTuple (0.00s) +=== RUN TestFactory_getCompactFieldType_CompactComposite +--- PASS: TestFactory_getCompactFieldType_CompactComposite (0.00s) +=== RUN TestFactory_getArrayFieldType +--- PASS: TestFactory_getArrayFieldType (0.00s) +=== RUN TestFactory_getArrayFieldType_ItemFieldTypeError +--- PASS: TestFactory_getArrayFieldType_ItemFieldTypeError (0.00s) +=== RUN TestFactory_getSliceFieldType +--- PASS: TestFactory_getSliceFieldType (0.00s) +=== RUN TestFactory_getSliceFieldType_ItemFieldTypeError +--- PASS: TestFactory_getSliceFieldType_ItemFieldTypeError (0.00s) +=== RUN TestFactory_getTupleType +--- PASS: TestFactory_getTupleType (0.00s) +=== RUN TestFactory_getTupleType_TupleItemNotFound +--- PASS: TestFactory_getTupleType_TupleItemNotFound (0.00s) +=== RUN TestFactory_getTupleType_TupleItemFieldDecoderError +--- PASS: TestFactory_getTupleType_TupleItemFieldDecoderError (0.00s) +=== RUN Test_getPrimitiveType_UnsupportedTypeError +--- PASS: Test_getPrimitiveType_UnsupportedTypeError (0.00s) +PASS +coverage: 66.6% of statements +ok github.com/centrifuge/go-substrate-rpc-client/v4/registry 1.406s coverage: 66.6% of statements +=== RUN TestRetryableExecutor_ExecWithFallback +--- PASS: TestRetryableExecutor_ExecWithFallback (0.00s) +=== RUN TestRetryableExecutor_ExecWithFallback_RetrySuccess +--- PASS: TestRetryableExecutor_ExecWithFallback_RetrySuccess (0.00s) +=== RUN TestRetryableExecutor_ExecWithFallback_NilFns +--- PASS: TestRetryableExecutor_ExecWithFallback_NilFns (0.00s) +=== RUN TestRetryableExecutor_ExecWithFallback_ExecFnError +--- PASS: TestRetryableExecutor_ExecWithFallback_ExecFnError (0.50s) +=== RUN TestRetryableExecutor_ExecWithFallback_FallBackFnError +--- PASS: TestRetryableExecutor_ExecWithFallback_FallBackFnError (0.00s) +=== RUN TestRetryableExecutor_ExecWithFallback_FallBackFnError_NoRetry +--- PASS: TestRetryableExecutor_ExecWithFallback_FallBackFnError_NoRetry (0.00s) +PASS +coverage: 60.8% of statements +ok github.com/centrifuge/go-substrate-rpc-client/v4/registry/exec 0.504s coverage: 60.8% of statements +=== RUN TestEventParserFn_ParseEvents +--- PASS: TestEventParserFn_ParseEvents (0.00s) +=== RUN TestEventParserFn_ParseEvents_EventCountDecodeError +--- PASS: TestEventParserFn_ParseEvents_EventCountDecodeError (0.00s) +=== RUN TestEventParserFn_ParseEvents_PhaseDecodeError +--- PASS: TestEventParserFn_ParseEvents_PhaseDecodeError (0.00s) +=== RUN TestEventParserFn_ParseEvents_EventIDDecodeError +--- PASS: TestEventParserFn_ParseEvents_EventIDDecodeError (0.00s) +=== RUN TestEventParserFn_ParseEvents_EventFieldsDecodeError +--- PASS: TestEventParserFn_ParseEvents_EventFieldsDecodeError (0.00s) +=== RUN TestEventParserFn_ParseEvents_MissingEventDecoder +--- PASS: TestEventParserFn_ParseEvents_MissingEventDecoder (0.00s) +=== RUN TestEventParserFn_ParseEvents_TopicsDecodeError +--- PASS: TestEventParserFn_ParseEvents_TopicsDecodeError (0.00s) +=== RUN TestExtrinsicParserFn_ParseExtrinsics +--- PASS: TestExtrinsicParserFn_ParseExtrinsics (0.00s) +=== RUN TestExtrinsicParserFn_ParseExtrinsics_MissingCallDecoder +--- PASS: TestExtrinsicParserFn_ParseExtrinsics_MissingCallDecoder (0.00s) +=== RUN TestExtrinsicParserFn_ParseExtrinsics_DecodeError +--- PASS: TestExtrinsicParserFn_ParseExtrinsics_DecodeError (0.00s) +PASS +coverage: 55.4% of statements +ok github.com/centrifuge/go-substrate-rpc-client/v4/registry/parser 0.004s coverage: 55.4% of statements +=== RUN TestEventRetriever_New + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_New (0.00s) +=== RUN TestEventRetriever_New_InternalStateUpdateError + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_New_InternalStateUpdateError (0.00s) +=== RUN TestEventRetriever_NewDefault + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_NewDefault (0.00s) +=== RUN TestEventRetriever_GetEvents + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + event_provider_mock.go:48: PASS: GetStorageEvents(*types.Metadata,types.Hash) + event_parser_mock.go:49: PASS: ParseEvents(registry.EventRegistry,*types.StorageDataRaw) +--- PASS: TestEventRetriever_GetEvents (0.00s) +=== RUN TestEventRetriever_GetEvents_StorageRetrievalError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + event_provider_mock.go:48: PASS: GetStorageEvents(*types.Metadata,types.Hash) +--- PASS: TestEventRetriever_GetEvents_StorageRetrievalError (0.00s) +=== RUN TestEventRetriever_GetEvents_EventParsingError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + event_provider_mock.go:48: PASS: GetStorageEvents(*types.Metadata,types.Hash) + event_parser_mock.go:49: PASS: ParseEvents(registry.EventRegistry,*types.StorageDataRaw) +--- PASS: TestEventRetriever_GetEvents_EventParsingError (0.00s) +=== RUN TestEventRetriever_updateInternalState + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_updateInternalState (0.00s) +=== RUN TestEventRetriever_updateInternalState_MetadataRetrievalError + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_updateInternalState_MetadataRetrievalError (0.00s) +=== RUN TestEventRetriever_updateInternalState_RegistryFactoryError + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_updateInternalState_RegistryFactoryError (0.00s) +=== RUN TestExtrinsicRetriever_New + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_New (0.00s) +=== RUN TestExtrinsicRetriever_New_InternalStateUpdateError + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_New_InternalStateUpdateError (0.00s) +=== RUN TestExtrinsicRetriever_NewDefault + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_NewDefault (0.00s) +=== RUN TestExtrinsicRetriever_GetExtrinsics + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + chain_mock.go:67: PASS: GetBlock(types.Hash) + extrinsic_parser_mock.go:50: PASS: ParseExtrinsics(registry.CallRegistry,*generic.SignedBlock[github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiAddress,github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiSignature,github.com/centrifuge/go-substrate-rpc-client/v4/rpc/chain/generic.DefaultPaymentFields]) +--- PASS: TestExtrinsicRetriever_GetExtrinsics (0.00s) +=== RUN TestExtrinsicRetriever_GetExtrinsics_BlockRetrievalError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + chain_mock.go:67: PASS: GetBlock(types.Hash) +--- PASS: TestExtrinsicRetriever_GetExtrinsics_BlockRetrievalError (0.00s) +=== RUN TestExtrinsicRetriever_GetExtrinsics_ExtrinsicParsingError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + chain_mock.go:67: PASS: GetBlock(types.Hash) + extrinsic_parser_mock.go:50: PASS: ParseExtrinsics(registry.CallRegistry,*generic.SignedBlock[github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiAddress,github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiSignature,github.com/centrifuge/go-substrate-rpc-client/v4/rpc/chain/generic.DefaultPaymentFields]) +--- PASS: TestExtrinsicRetriever_GetExtrinsics_ExtrinsicParsingError (0.00s) +=== RUN TestExtrinsicRetriever_updateInternalState + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_updateInternalState (0.00s) +=== RUN TestExtrinsicRetriever_updateInternalState_MetadataRetrievalError + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_updateInternalState_MetadataRetrievalError (0.00s) +=== RUN TestExtrinsicRetriever_updateInternalState_RegistryFactoryError + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_updateInternalState_RegistryFactoryError (0.00s) +PASS +coverage: 65.2% of statements +ok github.com/centrifuge/go-substrate-rpc-client/v4/registry/retriever 0.006s coverage: 65.2% of statements +=== RUN TestProvider_GetStorageEvents + state.go:700: PASS: GetStorageRaw(types.StorageKey,types.Hash) + state.go:700: PASS: GetStorageRaw(types.StorageKey,types.Hash) +--- PASS: TestProvider_GetStorageEvents (0.07s) +PASS +coverage: 33.3% of statements +ok github.com/centrifuge/go-substrate-rpc-client/v4/registry/state 0.069s coverage: 33.3% of statements +? github.com/centrifuge/go-substrate-rpc-client/v4/registry/test [no test files] + +``` + +### Run live tests + +```bash +make test-milestone2-live +Sending build context to Docker daemon 11.94MB +Step 1/4 : FROM golang:1.18 + ---> c37a56a6d654 +Step 2/4 : COPY . /go-substrate-rpc-client/events-parsing-v2/milestone-2 + ---> Using cache + ---> 330446577dfa +Step 3/4 : WORKDIR /go-substrate-rpc-client/events-parsing-v2/milestone-2 + ---> Using cache + ---> a35718b940dc +Step 4/4 : CMD go test -v -tags=live ./registry/retriever/... + ---> Using cache + ---> 8ef25a5f7bbb +Successfully built 8ef25a5f7bbb +Successfully tagged gsrpc-m2-live:latest +go: downloading github.com/stretchr/testify v1.7.0 +go: downloading github.com/deckarep/golang-set v1.8.0 +go: downloading github.com/ethereum/go-ethereum v1.10.17 +go: downloading github.com/gorilla/websocket v1.5.0 +go: downloading github.com/rs/cors v1.8.2 +go: downloading golang.org/x/crypto v0.0.0-20211117183948-ae814b36b871 +go: downloading github.com/vedhavyas/go-subkey v1.0.3 +go: downloading github.com/pierrec/xxHash v0.1.5 +go: downloading github.com/gtank/merlin v0.1.1 +go: downloading github.com/ChainSafe/go-schnorrkel v1.0.0 +go: downloading github.com/decred/base58 v1.0.3 +go: downloading github.com/stretchr/objx v0.1.1 +go: downloading github.com/davecgh/go-spew v1.1.1 +go: downloading github.com/pmezard/go-difflib v1.0.0 +go: downloading gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b +go: downloading github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 +go: downloading github.com/decred/dcrd/crypto/blake256 v1.0.0 +go: downloading github.com/cosmos/go-bip39 v1.0.0 +go: downloading github.com/gtank/ristretto255 v0.1.2 +go: downloading golang.org/x/sys v0.0.0-20211124211545-fe61309f8881 +go: downloading github.com/go-stack/stack v1.8.1 +=== RUN TestLive_EventRetriever_GetEvents +=== PAUSE TestLive_EventRetriever_GetEvents +=== RUN TestEventRetriever_New + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_New (0.00s) +=== RUN TestEventRetriever_New_InternalStateUpdateError + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_New_InternalStateUpdateError (0.00s) +=== RUN TestEventRetriever_NewDefault + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_NewDefault (0.00s) +=== RUN TestEventRetriever_GetEvents + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + event_provider_mock.go:48: PASS: GetStorageEvents(*types.Metadata,types.Hash) + event_parser_mock.go:49: PASS: ParseEvents(registry.EventRegistry,*types.StorageDataRaw) +--- PASS: TestEventRetriever_GetEvents (0.00s) +=== RUN TestEventRetriever_GetEvents_StorageRetrievalError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + event_provider_mock.go:48: PASS: GetStorageEvents(*types.Metadata,types.Hash) +--- PASS: TestEventRetriever_GetEvents_StorageRetrievalError (0.00s) +=== RUN TestEventRetriever_GetEvents_EventParsingError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + event_provider_mock.go:48: PASS: GetStorageEvents(*types.Metadata,types.Hash) + event_parser_mock.go:49: PASS: ParseEvents(registry.EventRegistry,*types.StorageDataRaw) +--- PASS: TestEventRetriever_GetEvents_EventParsingError (0.00s) +=== RUN TestEventRetriever_updateInternalState + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_updateInternalState (0.00s) +=== RUN TestEventRetriever_updateInternalState_MetadataRetrievalError + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_updateInternalState_MetadataRetrievalError (0.00s) +=== RUN TestEventRetriever_updateInternalState_RegistryFactoryError + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateEventRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestEventRetriever_updateInternalState_RegistryFactoryError (0.00s) +=== RUN TestLive_ExtrinsicRetriever_GetExtrinsics +=== PAUSE TestLive_ExtrinsicRetriever_GetExtrinsics +=== RUN TestExtrinsicRetriever_New + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_New (0.00s) +=== RUN TestExtrinsicRetriever_New_InternalStateUpdateError + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_New_InternalStateUpdateError (0.00s) +=== RUN TestExtrinsicRetriever_NewDefault + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_NewDefault (0.00s) +=== RUN TestExtrinsicRetriever_GetExtrinsics + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + chain_mock.go:67: PASS: GetBlock(types.Hash) + extrinsic_parser_mock.go:50: PASS: ParseExtrinsics(registry.CallRegistry,*generic.SignedBlock[github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiAddress,github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiSignature,github.com/centrifuge/go-substrate-rpc-client/v4/rpc/chain/generic.DefaultPaymentFields]) +--- PASS: TestExtrinsicRetriever_GetExtrinsics (0.00s) +=== RUN TestExtrinsicRetriever_GetExtrinsics_BlockRetrievalError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + chain_mock.go:67: PASS: GetBlock(types.Hash) +--- PASS: TestExtrinsicRetriever_GetExtrinsics_BlockRetrievalError (0.00s) +=== RUN TestExtrinsicRetriever_GetExtrinsics_ExtrinsicParsingError + exec_mock.go:43: PASS: ExecWithFallback(string,string) + exec_mock.go:43: PASS: ExecWithFallback(string,string) + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + chain_mock.go:67: PASS: GetBlock(types.Hash) + extrinsic_parser_mock.go:50: PASS: ParseExtrinsics(registry.CallRegistry,*generic.SignedBlock[github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiAddress,github.com/centrifuge/go-substrate-rpc-client/v4/types.MultiSignature,github.com/centrifuge/go-substrate-rpc-client/v4/rpc/chain/generic.DefaultPaymentFields]) +--- PASS: TestExtrinsicRetriever_GetExtrinsics_ExtrinsicParsingError (0.00s) +=== RUN TestExtrinsicRetriever_updateInternalState + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_updateInternalState (0.00s) +=== RUN TestExtrinsicRetriever_updateInternalState_MetadataRetrievalError + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_updateInternalState_MetadataRetrievalError (0.00s) +=== RUN TestExtrinsicRetriever_updateInternalState_RegistryFactoryError + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + factory_mock.go:94: PASS: CreateCallRegistry(*types.Metadata) + state.go:700: PASS: GetMetadata(types.Hash) + state.go:700: PASS: GetMetadataLatest() +--- PASS: TestExtrinsicRetriever_updateInternalState_RegistryFactoryError (0.00s) +=== CONT TestLive_EventRetriever_GetEvents +=== CONT TestLive_ExtrinsicRetriever_GetExtrinsics +2023/06/26 10:32:20 Connecting to wss://wss.api.moonbeam.network... +2023/06/26 10:32:20 Connecting to wss://wss.api.moonbeam.network... +2023/06/26 10:32:20 Connecting to wss://fullnode.parachain.centrifuge.io... +2023/06/26 10:32:20 Connecting to wss://rpc.polkadot.io... +2023/06/26 10:32:20 Connecting to wss://statemint-rpc.polkadot.io... +2023/06/26 10:32:20 Connecting to wss://acala-rpc-0.aca-api.network... +2023/06/26 10:32:20 Connecting to wss://statemint-rpc.polkadot.io... +2023/06/26 10:32:20 Connecting to wss://rpc.polkadot.io... +2023/06/26 10:32:20 Connecting to wss://acala-rpc-0.aca-api.network... +2023/06/26 10:32:20 Connecting to wss://fullnode.parachain.centrifuge.io... +2023/06/26 10:32:20 Found 2 events for 'wss://acala-rpc-0.aca-api.network', at block number 3880189. +2023/06/26 10:32:20 Found 2 extrinsics for 'wss://acala-rpc-0.aca-api.network', at block number 3880189. +2023/06/26 10:32:20 Found 14 events for 'wss://acala-rpc-0.aca-api.network', at block number 3880188. +2023/06/26 10:32:20 Retrieved a total of 16 events for 'wss://acala-rpc-0.aca-api.network', last block number 3880188. Stopping now. +2023/06/26 10:32:20 Found 4 extrinsics for 'wss://acala-rpc-0.aca-api.network', at block number 3880188. +2023/06/26 10:32:20 Found 2 extrinsics for 'wss://statemint-rpc.polkadot.io', at block number 4027274. +2023/06/26 10:32:20 Found 2 extrinsics for 'wss://acala-rpc-0.aca-api.network', at block number 3880187. +2023/06/26 10:32:20 Found 32 events for 'wss://wss.api.moonbeam.network', at block number 3863157. +2023/06/26 10:32:20 Retrieved a total of 32 events for 'wss://wss.api.moonbeam.network', last block number 3863157. Stopping now. +2023/06/26 10:32:20 Found 2 extrinsics for 'wss://fullnode.parachain.centrifuge.io', at block number 3256578. +2023/06/26 10:32:21 Found 2 events for 'wss://fullnode.parachain.centrifuge.io', at block number 3256578. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://acala-rpc-0.aca-api.network', at block number 3880186. +2023/06/26 10:32:21 Retrieved a total of 10 extrinsics for 'wss://acala-rpc-0.aca-api.network', last block number 3880186. Stopping now. +2023/06/26 10:32:21 Found 3 extrinsics for 'wss://rpc.polkadot.io', at block number 16135396. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://statemint-rpc.polkadot.io', at block number 4027273. +2023/06/26 10:32:21 Found 7 extrinsics for 'wss://wss.api.moonbeam.network', at block number 3863157. +2023/06/26 10:32:21 Found 47 events for 'wss://rpc.polkadot.io', at block number 16135396. +2023/06/26 10:32:21 Retrieved a total of 47 events for 'wss://rpc.polkadot.io', last block number 16135396. Stopping now. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://fullnode.parachain.centrifuge.io', at block number 3256577. +2023/06/26 10:32:21 Found 2 events for 'wss://fullnode.parachain.centrifuge.io', at block number 3256577. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://statemint-rpc.polkadot.io', at block number 4027272. +2023/06/26 10:32:21 Found 4 extrinsics for 'wss://rpc.polkadot.io', at block number 16135395. +2023/06/26 10:32:21 Found 2 events for 'wss://statemint-rpc.polkadot.io', at block number 4027274. +2023/06/26 10:32:21 Found 7 extrinsics for 'wss://wss.api.moonbeam.network', at block number 3863156. +2023/06/26 10:32:21 Retrieved a total of 14 extrinsics for 'wss://wss.api.moonbeam.network', last block number 3863156. Stopping now. +2023/06/26 10:32:21 Found 2 events for 'wss://fullnode.parachain.centrifuge.io', at block number 3256576. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://fullnode.parachain.centrifuge.io', at block number 3256576. +2023/06/26 10:32:21 Found 2 events for 'wss://statemint-rpc.polkadot.io', at block number 4027273. +2023/06/26 10:32:21 Found 2 events for 'wss://fullnode.parachain.centrifuge.io', at block number 3256575. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://rpc.polkadot.io', at block number 16135394. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://fullnode.parachain.centrifuge.io', at block number 3256575. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://statemint-rpc.polkadot.io', at block number 4027271. +2023/06/26 10:32:21 Found 2 events for 'wss://statemint-rpc.polkadot.io', at block number 4027272. +2023/06/26 10:32:21 Found 2 events for 'wss://fullnode.parachain.centrifuge.io', at block number 3256574. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://fullnode.parachain.centrifuge.io', at block number 3256574. +2023/06/26 10:32:21 Retrieved a total of 10 extrinsics for 'wss://fullnode.parachain.centrifuge.io', last block number 3256574. Stopping now. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://rpc.polkadot.io', at block number 16135393. +2023/06/26 10:32:21 Retrieved a total of 11 extrinsics for 'wss://rpc.polkadot.io', last block number 16135393. Stopping now. +2023/06/26 10:32:21 Found 2 events for 'wss://statemint-rpc.polkadot.io', at block number 4027271. +2023/06/26 10:32:21 Found 2 extrinsics for 'wss://statemint-rpc.polkadot.io', at block number 4027270. +2023/06/26 10:32:21 Retrieved a total of 10 extrinsics for 'wss://statemint-rpc.polkadot.io', last block number 4027270. Stopping now. +--- PASS: TestLive_ExtrinsicRetriever_GetExtrinsics (1.41s) +2023/06/26 10:32:21 Found 2 events for 'wss://fullnode.parachain.centrifuge.io', at block number 3256573. +2023/06/26 10:32:21 Retrieved a total of 12 events for 'wss://fullnode.parachain.centrifuge.io', last block number 3256573. Stopping now. +2023/06/26 10:32:21 Found 2 events for 'wss://statemint-rpc.polkadot.io', at block number 4027270. +2023/06/26 10:32:21 Found 2 events for 'wss://statemint-rpc.polkadot.io', at block number 4027269. +2023/06/26 10:32:21 Retrieved a total of 12 events for 'wss://statemint-rpc.polkadot.io', last block number 4027269. Stopping now. +--- PASS: TestLive_EventRetriever_GetEvents (1.59s) +PASS +ok github.com/centrifuge/go-substrate-rpc-client/v4/registry/retriever 1.599s +``` diff --git a/evaluations/coong_wallet_2_si.md b/evaluations/coong_wallet_2_si.md new file mode 100644 index 000000000..8baeec6e3 --- /dev/null +++ b/evaluations/coong_wallet_2_si.md @@ -0,0 +1,96 @@ +# Evaluation Coong Wallet + + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/coong_wallet.md +- **Milestone:** 2 +- **Kusama Identity:** Ha27MB4gKH36ieRPa1T1ASqhUz4sVxMoVmK7o5CS6tXDqjW +- **Previously successfully merged evaluation:** + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
|[Link](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/LICENSE)| License is Ok. Please add year and owner on line 189. | +| 0b. | Documentation |
  • [x]
|[Link](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/README.md)|Documentation is extensive. | +| 0c. | Testing Guide |
  • [x]
|[Link](https://github.com/CoongCrafts/coong-wallet/tree/w3f-milestone-2#how-to-run-tests)| Test run successfully. There are plenty of tests so coverage is fairly high.| +| 0d. | Docker |
  • [x]
|[Link](https://github.com/CoongCrafts/coong-wallet/blob/w3f-milestone-2/Dockerfile)| Good. Perhaps an improvement could be to add your images to DockerHub. | +| 0e. | Article |
  • [ ]
| [Link](https://docs.google.com/document/d/1nZUzetDZvLReof3easrRvR5HQSpjags-XShYj55gJEo/edit?usp=sharing)| Your google docs requires persmission to be accessed. Publish your article on Medium or other open platforms. | +| 1. | Wallet App |
  • [x]
|[Link](https://dapp.coongwallet.io/)| App implements the required features. | +| 2 | Demo App |
  • [x]
|[Link](https://www.youtube.com/watch?v=9fIcAlpx_UI)| Good demo videos that showcase implemented functionality. | + + + +## General Notes + +1. There are some warnings given by Yarn that are usually related to incompatible versions. + +``` +➤ YN0000: ┌ Resolution step +➤ YN0002: │ @coong/base@workspace:packages/base doesn't provide @polkadot/api (p65e43), requested by @polkadot/extension-inject +➤ YN0002: │ @coong/ui@workspace:packages/ui doesn't provide @testing-library/dom (pdd159), requested by @testing-library/user-event +➤ YN0060: │ @coong/ui@workspace:packages/ui provides react (pa7263) with version 18.2.0, which doesn't satisfy what react-qr-reader requests +➤ YN0060: │ @coong/ui@workspace:packages/ui provides react-dom (p8ec15) with version 18.2.0, which doesn't satisfy what react-qr-reader requests +➤ YN0002: │ @coong/ui@workspace:packages/ui doesn't provide react-is (p15b34), requested by @polkadot/react-identicon +➤ YN0002: │ @coong/ui@workspace:packages/ui doesn't provide redux (pd0ab5), requested by redux-persist +➤ YN0002: │ @coong/ui@workspace:packages/ui doesn't provide vite (p55931), requested by @vitejs/plugin-react +➤ YN0002: │ @nrwl/devkit@npm:15.7.0 [efc3e] doesn't provide typescript (p6bdc1), requested by @phenomnomnominal/tsquery +➤ YN0000: │ Some peer dependencies are incorrectly met; run yarn explain peer-requirements for details, where is the six-letter p-prefixed code +➤ YN0000: └ Completed +➤ YN0000: ┌ Fetch step +➤ YN0000: └ Completed in 0s 280ms +➤ YN0000: ┌ Link step +➤ YN0000: └ Completed +``` + +2. Test are passing successfully. There are some warnings that might require attention. + +``` + Test Files 20 passed (20) + Tests 182 passed (182) + Start at 18:28:51 + Duration 29.18s (transform 642ms, setup 3.17s, collect 65.35s, tests 91.66s) +``` +3. Docker image build and run works correctly: + +``` +[+] Building 162.6s (12/12) FINISHED + => [internal] load build definition from Dockerfile 0.0s + => => transferring dockerfile: 168B 0.0s + => [internal] load .dockerignore 0.0s + => => transferring context: 199B 0.0s + => [internal] load metadata for docker.io/library/node:18 1.9s + => [auth] library/node:pull token for registry-1.docker.io 0.0s + => [internal] load build context 0.6s + => => transferring context: 3.17MB 0.1s + => [1/6] FROM docker.io/library/node:18@sha256:4a55308cc855cba1a925d19ae4e45838741dad2fd7bb8949a93b2a0f2ae339e3 65.2s + => => resolve docker.io/library/node:18@sha256:4a55308cc855cba1a925d19ae4e45838741dad2fd7bb8949a93b2a0f2ae339e3 0.0s + => => sha256:a31111d070044ed920abddebc16bfa67a69fb0e0e782b703073c93ec10dedf67 49.57MB / 49.57MB 32.3s + => => sha256:dd13397d6ccd754586b475131a51ebeb69394eb49de84b647f4fb6a38703da89 63.98MB / 63.98MB 52.7s + => => sha256:4a55308cc855cba1a925d19ae4e45838741dad2fd7bb8949a93b2a0f2ae339e3 1.21kB / 1.21kB 0.0s + => => sha256:5fea051bde96adaec8680ea3fcaff1168c955cc214609f3335c3c15fb21cafbf 2.00kB / 2.00kB 0.0s + => => sha256:1551e40cd9c28a1ba7a54fdcb22fae37696d2ed74d333bb433c5184f2c9971b4 7.26kB / 7.26kB 0.0s + => => sha256:2455b35210792787557bbd2b0b976aa27a8bd5931191be95c7291b93b9e38f6c 23.57MB / 23.57MB 4.0s + => => sha256:344a74fed6660540130e12445bb29d7201f3d591b13bfd5021d2517c2a5ed7bf 202.40MB / 202.40MB 58.3s + => => sha256:60b2c1a2936fca6d8e26d37e3399e436ddd9fd3d8cc845bfef21d16703cffb98 3.36kB / 3.36kB 33.3s + => => extracting sha256:a31111d070044ed920abddebc16bfa67a69fb0e0e782b703073c93ec10dedf67 1.4s + => => sha256:f3cb0cf1697ab893b4c718bf907613fade5463af153b7a257d0facf0024a0432 45.58MB / 45.58MB 49.7s + => => extracting sha256:2455b35210792787557bbd2b0b976aa27a8bd5931191be95c7291b93b9e38f6c 0.5s + => => sha256:88c3aa907dd4912b984c9d80421e4aa382ef592643430ab067e83c4d87250d13 2.28MB / 2.28MB 51.8s + => => sha256:6c7a1e104b90daed6eb2165584d1a8228b19baced180ae3023237d4fd6787a50 450B / 450B 52.0s + => => extracting sha256:dd13397d6ccd754586b475131a51ebeb69394eb49de84b647f4fb6a38703da89 1.9s + => => extracting sha256:344a74fed6660540130e12445bb29d7201f3d591b13bfd5021d2517c2a5ed7bf 5.0s + => => extracting sha256:60b2c1a2936fca6d8e26d37e3399e436ddd9fd3d8cc845bfef21d16703cffb98 0.0s + => => extracting sha256:f3cb0cf1697ab893b4c718bf907613fade5463af153b7a257d0facf0024a0432 1.3s + => => extracting sha256:88c3aa907dd4912b984c9d80421e4aa382ef592643430ab067e83c4d87250d13 0.1s + => => extracting sha256:6c7a1e104b90daed6eb2165584d1a8228b19baced180ae3023237d4fd6787a50 0.0s + => [2/6] WORKDIR /app 0.0s + => [3/6] COPY package.json . 0.0s + => [4/6] COPY yarn.lock . 0.0s + => [5/6] COPY . . 0.0s + => [6/6] RUN yarn install 83.0s + => exporting to image 12.4s + => => exporting layers 12.4s + => => writing image sha256:33964388f842d35758ec61ddf2f6b08e6a3992cb855a30cc7ddc330d566ae844 0.0s + => => naming to docker.io/library/coong-wallet +``` + +4. Creating a separate git branch for the delivery was a good idea to ensure that the functionality can be tested. Nice job! \ No newline at end of file diff --git a/evaluations/diffy_chat_1_dsm-w3f.md b/evaluations/diffy_chat_1_dsm-w3f.md index fa261bc91..201753bdb 100644 --- a/evaluations/diffy_chat_1_dsm-w3f.md +++ b/evaluations/diffy_chat_1_dsm-w3f.md @@ -1,6 +1,6 @@ # Evaluation -- **Status:** In Progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Diffy_chat.md - **Milestone:** 1 - **Kusama Identity:** Address @@ -8,15 +8,74 @@ | Number | Deliverable | Accepted | Link | Evaluation Notes | | ------ | ----------- | -------- | ---- |----------------- | -| 0a.| License |
  • [ ]
| [LICENSE](https://github.com/Belsoft-rs/diffychat-pallet/blob/main/LICENSE) | DOTRTC Library license is missing | -| 0b.| Documentation |
  • [ ]
| [Readme.md](https://github.com/Belsoft-rs/diffychat-pallet#readme) | Not fully evaluated yet. | -| 0c.| Testing Guide |
  • [ ]
| [DOTRTC usage](https://github.com/Belsoft-rs/diffychat-dotrtc#usage); [Substrate pallet](https://github.com/Belsoft-rs/diffychat-pallet#getting-started) | Need instructions how to run unit tests of DOTRTC. | +| 0a.| License |
  • [x]
| [LICENSE](https://github.com/Belsoft-rs/diffychat-pallet/blob/main/LICENSE) | | +| 0b.| Documentation |
  • [x]
| [Readme.md](https://github.com/Belsoft-rs/diffychat-pallet#readme) | | +| 0c.| Testing Guide |
  • [x]
| [DOTRTC usage](https://github.com/Belsoft-rs/diffychat-dotrtc#usage); [Substrate pallet](https://github.com/Belsoft-rs/diffychat-pallet#getting-started) | | | 1.| Diffy chat pallet |
  • [x]
| [See here](https://github.com/Belsoft-rs/diffychat-pallet) | | -| 2.| DOTRTC library |
  • [ ]
| [See here](https://github.com/Belsoft-rs/diffychat-dotrtc) | Not fully evaluated yet. | -| 3.| HTML test page |
  • [ ]
| [See here](https://belsoft-rs.github.io/diffychat/index.html) | Only works in Chrome | +| 2.| DOTRTC library |
  • [x]
| [See here](https://github.com/Belsoft-rs/diffychat-dotrtc) | | +| 3.| HTML test page |
  • [x]
| [See here](https://belsoft-rs.github.io/diffychat/index.html) | | -## Evaluation V2 +## Evaluation V3 + +### License and Documentation + +DOTRTC Library now has a License. The documentation has instructions to run the unit test in the DOTRTC Library but doesn't mention `cargo test` in the Diffy Chat Pallet. Please update the documentation. + +### Manual Testing + +I tested again and the application now runs fine in Firefox. + +### Unit Test + +I ran `npm test` and got an error. I tested the application and it's working fine. Please fix this error. + +``` +user@localhost:~/Documents/diffychat/diffychat-dotrtc$ npm test + +> test +> jest + + FAIL __tests__/tests.js + ● Test suite failed to run + Jest encountered an unexpected token + + Jest failed to parse a file. This happens e.g. when your code or its dependencies use non-standard JavaScript syntax, or when Jest is not configured to support such syntax. + + Out of the box Jest supports Babel, which will be used to transform your files into valid JS based on your Babel configuration. + + By default "node_modules" folder is ignored by transformers. + + Here's what you can do: + • If you are trying to use ECMAScript Modules, see https://jestjs.io/docs/ecmascript-modules for how to enable it. + • If you are trying to use TypeScript, see https://jestjs.io/docs/getting-started#using-typescript + • To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config. + • If you need a custom transformation specify a "transform" option in your config. + • If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with the "moduleNameMapper" config option. + + You'll find more details and examples of these config options in the docs: + https://jestjs.io/docs/configuration + For information about custom transformations, see: + https://jestjs.io/docs/code-transformation + + Details: + + /home/user/Documents/diffychat/diffychat-dotrtc/__tests__/tests.js:1 + ({"Object.":function(module,exports,require,__dirname,__filename,jest){import BinData from "../src/BinData.js"; + ^^^^^^ + + SyntaxError: Cannot use import statement outside a module + + at Runtime.createScriptFromCode (node_modules/jest-runtime/build/index.js:1495:14) + +Test Suites: 1 failed, 1 total +Tests: 0 total +Snapshots: 0 total +Time: 0.204 s +Ran all test suites. +``` + +## Evaluation V2 ### License and Documentation diff --git a/evaluations/diffy_chat_2_dastansam.md b/evaluations/diffy_chat_2_dastansam.md new file mode 100644 index 000000000..6ae1d95e4 --- /dev/null +++ b/evaluations/diffy_chat_2_dastansam.md @@ -0,0 +1,56 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Application](https://github.com/w3f/Grants-Program/blob/master/applications/Diffy_chat.md) +- **Milestone:** 2 +- **Kusama Identity:** [Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP](https://sub.id/Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP) +- **Previously successfully merged evaluation:** [Milestone 1](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/diffy_chat_1_dsm-w3f.md) + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [LICENSE](https://github.com/Belsoft-rs/diffychat-pallet/blob/main/LICENSE) | Correct license | +| 0b. | Documentation | [Readme.md](https://github.com/Belsoft-rs/diffychat-client/blob/master/README.md) | Well-covered documentation | +| 0c. | Testing Guide | [Diffy chat pallet](https://github.com/Belsoft-rs/diffychat-pallet#getting-started) | Tests are passing, logs below. | +| 0d. | Article | [BelSoft Dev on Medium](https://medium.com/@belsoft/diffy-chat-a-secured-decentralized-messenger-194ad74d6669) | Article is posted, it explains well the need for this messenger and has an extensive coverage. | +| 1. | Contacts list feature | [See here](https://github.com/Belsoft-rs/diffychat-client/blob/master/src/components/messenger/contacts/contacts.js) | Feature is delivered completely, and is deployed [here](https://belsoft-rs.github.io/diffychat/). Users are able to add others into their contact list. | +| 2. | Web messenger dapp MVP | [See here](https://belsoft-rs.github.io/diffychat/index.html) | I wasn't able to complete instructions for testing the web messenger. I followed the tutorial video that was provided but it just hangs and lags for me. I attached some screenshots of the failure. | + +# Evaluation v1 +## General Notes + +Contact list feature works both locally and on production. However, main web messenger has different behaviour than expected. I followed the tutorial [video](https://media.belsoft.rs/diffychat/diffychat.mp4) that was provided but chat windows just hang and lag for me. I attached screenshot of the failure. + +I also thought you would use `Polkadot.js` wallet when you mentioned that `web messenger will use Polkadot.js for authorization`, but it seems that you are using `polkadot.js` library. It seemed strange to me that user inserts their `mnemonic` phrase into the form and not use their wallet directly. I think it would be nice if you could provide some context on that. + +## Logs and screenshots + +Hanging screenshot + +
+ +Tests + +``` +running 7 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::test_register ... ok +test tests::test_upsert_contact ... ok +test tests::test_register_nickname_is_already_registered ... ok +test tests::offer_chat_with_static_values ... ok +test tests::test_register_account_id_is_already_registered ... ok +test tests::answer_chat_with_static_values ... ok + +test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` + +
+ +# Evaluation v2 + +Issues were addressed and demo app works as demonstrated in the video. Screenshots below: + +Bob window + +Alice window diff --git a/evaluations/dotflow_1_dastansam.md b/evaluations/dotflow_1_dastansam.md new file mode 100644 index 000000000..3c44be851 --- /dev/null +++ b/evaluations/dotflow_1_dastansam.md @@ -0,0 +1,132 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Application](https://github.com/Szegoo/Grants-Program/blob/42b031052c16670685c65a409d91779d0069903a/applications/Dotflow.md) +- **Milestone:** 1 +- **Kusama Identity:** [Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP](https://sub.id/Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP) +- **Previously successfully merged evaluation:** N/A + +**Deliverables** + +| Number | Deliverable | Link | Evaluation Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | [Contract](https://github.com/TheDotflow/dotflow-ink/blob/main/LICENSE) [Frontend](https://github.com/TheDotflow/dotflow-ui/blob/main/LICENSE) | Correct licenses | +| 0b. | Documentation | [Link](https://github.com/TheDotflow/dotflow-ink/blob/main/README.md) | Well documented and easy to follow. There are only some minor improvements that I suggest below | +| 0c. | Testing and Testing Guide | [Contract](https://github.com/TheDotflow/dotflow-ink/blob/main/contracts/identity/tests.rs) [Guide](https://github.com/TheDotflow/dotflow-ink#build--test-locally) [Identity Key](https://github.com/TheDotflow/dotflow-ui/blob/main/__tests__/identityKey.test.ts) [Guide](https://github.com/TheDotflow/dotflow-ui#set-up-development-environment) | All unit tests are passing and there is a minor issue with `e2e-tests`. Output and additional notes below | +| 0d. | Docker | [Contract]() [Frontend](https://github.com/TheDotflow/dotflow-ui#run-with-docker) | Was able to build the image and run it successfully. Output attached below | +| 1. | Identity Contract | [Link](https://github.com/TheDotflow/dotflow-ink/blob/main/contracts/identity/lib.rs) | Well structured code. Contract compiles fine. I only have some non-critical code suggestions below. | +| 2. | My Identity page | [Frontend code](https://github.com/TheDotflow/dotflow-ui/tree/main/src) [Identity Key](https://github.com/TheDotflow/dotflow-ui/pull/15) [Address Encryption](https://github.com/TheDotflow/dotflow-ui/pull/21) | Was able to build and run both Docker and native version of the frontend. Everything looks smooth, intuitive and user-friendly. | + +## General Notes + +In general, it's very well done. I haven't found any critical issues and was able to complete all the instructions successfully. Code coverage reports `93.37%` and all tests are passing. I only have some minor improvements I can suggest, which are listed below. + +### Missing documentation for contract deployment + +I see that you have deployed the contract to `Astar Shibuya` at this address `Yib3XD3rkKWstaCB6P3FYCuWu2gZ4nwLoi6x9w8e9UoLNjh`, which is great. Maybe you can also highlight this somewhere in your documentation and mention that someone can test the DotFlow UI provided that they have `Astar Shibuya` testnet funds? + +I think it would also be nice to have the process of deploying the contract on the local testnet documented in your main README file. Or at least leave a link to some other resource that explains it. Especially, since we need `CONTRACT_IDENTITY` env variable for frontend. This will ease testing it since local testnet has development accounts. + +### No `e2e-tests` + +There is a [section](https://github.com/TheDotflow/dotflow-ink/blob/3ec6be1712b8074352277ee2f23e0d3c6faa0196/README.md#L47-L48) in documentation about running `e2e-tests` but there are [no](https://github.com/TheDotflow/dotflow-ink/blob/3ec6be1712b8074352277ee2f23e0d3c6faa0196/contracts/identity/lib.rs#L518-L519) tests defined under `e2e-tests` feature, so it simply runs the same tests as `cargo test`. + +I assume, you are going to be adding end-to-end tests when you complete the second milestone, and when you have all the pieces of the project together, so this is not a critical issue. + +### Code suggestions + +#### Avoid `unwrap` and `assert`: + +Try to avoid using `unwrap` and `assert` in the non-test environment, although it is not that critical in the contract execution environment, it still makes it easier to debug and find out more about the error when the contract execution panics. + +Opt for using `unwrap_err`, `unwrap_or_default`, `map_err`, etc. methods which softly handle the case when `unwrap` panics. You can define `Error` variants for each possible panic case and propogate it from the top level (you already have most of them covered). And in a similar fashion, use `ensure!` instead of `assert!` when validating something in the non-test environment. You are already using it in most of the places, so it just needs to be consistent. + +Here are some examples of using `unwrap` and `assert` in your contract code: [1](https://github.com/TheDotflow/dotflow-ink/blob/3ec6be1712b8074352277ee2f23e0d3c6faa0196/contracts/identity/lib.rs#L203-L204), [2](https://github.com/TheDotflow/dotflow-ink/blob/3ec6be1712b8074352277ee2f23e0d3c6faa0196/contracts/identity/lib.rs#L256-L257), [3](https://github.com/TheDotflow/dotflow-ink/blob/3ec6be1712b8074352277ee2f23e0d3c6faa0196/contracts/identity/lib.rs#L328) + +#### Clippy + +Running `cargo clippy --no-deps --all-targets --workspace` on the project suggests some fixes, mostly related to unnecessary usage of `clone()`: + +```sh +warning: using `clone` on type `u32` which implements the `Copy` trait + --> contracts/identity/tests.rs:637:35 + | +637 | IdentityInfo { addresses: vec![(polkadot_id.clone(), encoded_address.clone())] } + | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `polkadot_id` +``` + +### Outputs + +
+ + Docker outputs + + ```sh + => [2/3] WORKDIR /app 0.3s + => [3/3] COPY . . 12.6s + => exporting to image 9.8s + => => exporting layers 9.8s + => => writing image sha256:af791be5603993712f6d271193d4124e150d121b6528f1f53fa56374200810fc 0.0s + => => naming to docker.io/library/dotflow-ink + ``` +
+ +
+ + Docker frontend outputs + ```sh + => exporting to image 4.1s + => => exporting layers 4.1s + => => writing image sha256:e511287bc4938167e369582af397819c6ac8d954e615f1c3a5fca53a17625a2f 0.0s + => => naming to docker.io/library/dotflow-ui +``` +
+ +
+ + Test outputs + +```sh +running 17 tests +test tests::add_network_works ... ok +test tests::address_size_limit_works ... ok +test tests::constructor_works ... ok +test tests::add_address_to_identity_works ... ok +test tests::create_identity_works ... ok +test tests::create_identity_already_exist ... ok +test tests::init_with_networks_fail - should panic ... ok +test tests::getting_transaction_destination_works ... ok +test tests::init_with_networks_works ... ok +test tests::remove_address_works ... ok +test tests::remove_network_works ... ok +test tests::set_recovery_account_works ... ok +test tests::transfer_ownership_fails_when_new_owner_has_an_identity ... ok +test tests::remove_identity_works ... ok +test tests::update_network_works ... ok +test tests::transfer_ownership_works ... ok +test tests::update_address_works ... ok + +test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + Doc-tests identity + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` +
+ +
+ + Code coverage + + ```sh +|| Uncovered Lines: +|| lib.rs: 175-176, 223-225, 384, 411, 415, 422, 425, 444, 488-489 +|| Tested/Total Lines: +|| lib.rs: 162/175 +|| types.rs: 21/21 +|| +93.37% coverage, 183/196 lines covered +``` +
diff --git a/evaluations/evaluation-template.md b/evaluations/evaluation-template.md index f1e6d3f5e..7d832ca8f 100644 --- a/evaluations/evaluation-template.md +++ b/evaluations/evaluation-template.md @@ -1,7 +1,7 @@ # Evaluation > Don't remove any of the mandatory parts presented in bold letters or as headlines! -> When evaluating the last milestone of a grant, check if the finished grant refers to an [RFP](https://github.com/w3f/Grants-Program/blob/master/rfps/README.md) and move the corresponding RFP to [implemented](https://github.com/w3f/Grants-Program/tree/master/rfps/implemented). +> When evaluating the last milestone of a grant, check if the finished grant refers to an [RFP](https://github.com/w3f/Grants-Program/blob/master/rfps/README.md) and move the corresponding RFP to [Closed](https://github.com/w3f/Grants-Program/tree/master/docs/RFPs/Closed). > Lines starting with `>`, such as this one, can be removed. - **Status:** In Progress/Accepted/Rejected diff --git a/evaluations/galaxy_1_ali-usama.md b/evaluations/galaxy_1_ali-usama.md new file mode 100644 index 000000000..c9a3e5641 --- /dev/null +++ b/evaluations/galaxy_1_ali-usama.md @@ -0,0 +1,41 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Galaxy](https://github.com/w3f/Grants-Program/blob/master/applications/galaxy.md) +- **Milestone:** 1 +- **Kusama Identity:** Eexv1mKLiCidz2gGh6vfowtXgSSc7mvD4xEb2ji998W4DPs +- **Previously successfully merged evaluation:** [NFT Infra](https://github.com/w3f/Grant-Milestone-Delivery/pull/840) + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +|--------|--------------------------|------------------------|-----------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------| +| 0a. | Licence |
  • [x]
| [MIT](https://github.com/7flash/galaxy-polkadot/blob/d29439b081e9d71d9915b68d2ea1edfb6dd6ab7d/LICENSE) | Correct Licence | +| 0b. | Documentation |
  • [x]
| [Video Tutorial](https://youtu.be/WOQvxZCiU0Q) [ReadMe](https://github.com/7flash/galaxy-polkadot/blob/d29439b081e9d71d9915b68d2ea1edfb6dd6ab7d/README.md) | Documentation is satisfactory plus the video tutorial is also helpful | +| 0c. | Testing & Testing Guide |
  • [x]
| [Tests](https://github.com/7flash/galaxy-polkadot/tree/master#running-the-tests) | Test cases passed. Output attached below | +| 0d. | Docker |
  • [x]
| [Dockerfile](https://github.com/7flash/galaxy-polkadot/blob/d29439b081e9d71d9915b68d2ea1edfb6dd6ab7d/Dockerfile) | Fixed in the recent commit. | +| 1. | Frontend: Galaxy Web App |
  • [x]
| [Src](https://github.com/7flash/galaxy-polkadot/tree/d29439b081e9d71d9915b68d2ea1edfb6dd6ab7d/src) | Features listed in the application are working fine | + + +## General Notes + +## Update 17th May 2023 +Added unit tests. + +## Update 4th May 2023 +Licence file is added in the recent commits and the previous mentioned issues are fixed too, so the delivery status is changed to `Accepted`. + +## 3rd May 2023 +The repo is well-structured and well-documented, and the features listed in the application are working fine. However, there is no Licence file in the repo and it'll also be better if there is some helpful documentation regarding docker. +## `yarn test` output + +```console +$ yarn test + PASS tests/integration.test.js + GalaxyUI + ✓ renders the UI correctly (1969 ms) + +Test Suites: 1 passed, 1 total +Tests: 1 passed, 1 total +Snapshots: 0 total +Time: 2.542 s, estimated 6 s +Ran all test suites. +``` \ No newline at end of file diff --git a/evaluations/genesisdao_3_dsm-w3f.md b/evaluations/genesisdao_3_dsm-w3f.md new file mode 100644 index 000000000..c7de7e9ce --- /dev/null +++ b/evaluations/genesisdao_3_dsm-w3f.md @@ -0,0 +1,272 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/GenesisDAO.md +- **Milestone:** 3 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | Licence |
  • [x]
| n/a | | +| 0b. | Documentation |
  • [x]
| n/a | | +| 0c. | Testing and Testing Guide |
  • [x]
| | +| 0d. | Docker |
  • [x]
| [node Dockerfile](https://github.com/deep-ink-ventures/genesis-dao-node/blob/main/Dockerfile), [frontend Dockerfile](https://github.com/deep-ink-ventures/genesis-dao-frontend/blob/main/Dockerfile), [backend Dockerfile](https://github.com/deep-ink-ventures/genesis-dao-service/blob/main/Dockerfile) | | +| 0e. | Article |
  • [x]
| [Link](https://docs.google.com/document/d/1c3B9iyoHE7cP5a5qYwa-A_0Vy5zo1uAo-S1vcZ5h_B4/edit#heading=h.obore8uev3ox) | | +| 1. | Substrate module: pallet_dao_vote |
  • [x]
| [Link](https://github.com/deep-ink-ventures/genesis-dao-node/tree/main/pallets/dao-votes) | | +| 2. | Frontend Implementation |
  • [x]
| [Website](https://genesis-dao.org). [Repo](https://github.com/deep-ink-ventures/genesis-dao-frontend) | | +| 3. | Product Touches |
  • [x]
| n/a | | + +## Evaluation V6 + +The problem reported in Evaluation V5 was fixed. But I have a similar problem from Evaluation V4. Probably is a small problem in the frontend of the application, and this do not prevent the acceptions of the milestone since it is mostly working. I recorded the problem to help to fix it. + +In this video, I show the creation of the DAO with 1,000,000 tokens, the pop-up error, and the frontend didn't update the voting count, but the voting is registered in the pokadot.js. + +https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/266c7475-801d-451d-9ccc-f72b83fd4c84 + +In this other video, I show the application working fine when I created the DAO with 100,000 tokens. + + +https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/67d1a362-9f9a-4665-8c77-30b46ef06f2f + + + +## Evaluation V5 + +I ran the docker to set up all components. I was creating the DAO like before, and after the governance configuration, I received this screen. + +![pasted image 0 (5)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/4fd6b17a-d1ce-4b21-955f-49d44d195f0c) + + +I checked the console and viewed this error. + +![pasted image 0 (6)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/38a1eeb1-a8f7-4a4e-8043-93ced6786878) + + +I checked this using Firefox and Chrome. This error prevented me to continue the evaluation. + +## Evaluation V4 + +### Testing + +I created a DAO with 1,000,000 tokens and received some pop-ups after the creation and when updating the page. + +![pasted image 0 (3)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/8d17c635-419e-4258-b36a-0656e3ca62ee) + +I created a proposal but when I voted the vote count didn't update with the vote. Besides that, the vote was registered in the blockchain. + +![pasted image 0 (4)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/95feb06b-9638-4582-86d1-ec35a8da1c26) + +When I reloaded the page no proposal was listed. I tried to create another one but the interface didn't list the new proposal. + +![image (21)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/14166868-c8dd-4e61-a8f2-18715f792486) + + +I created another DAO with 100,000 tokens the application worked fine. I was able to approve the proposal and mark it as implemented but the interface didn't appear with any information saying the proposal was implemented. Would be nice if the frontend have this information. + +## Evaluation V3 + +### Testing + +I created some proposals. These proposals were rejected because the total token I distributed was under 10% of the token supply. The test guide is leading to this case. I created another DAO and proposals to verify the approved and implemented case, but I need to wait again the 24 hours. + +## Evaluation V2 + +### Integration Test + +This time the Integration Test passed. + +``` + Running unittests src/lib.rs (/home/user/Documents/genesisdao/genesis-dao-node/target/debug/deps/integration_wrapper-aae9373ea162552d) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_dao_lifecycle.rs (/home/user/Documents/genesisdao/genesis-dao-node/target/debug/deps/test_dao_lifecycle-0db8c4fb21eb2a62) + +running 1 test +test dao_lifecycle has been running for over 60 seconds +test dao_lifecycle ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 266.81s +``` + +### Manual Test + +Thanks for providing the testing guide. I didn't fully evaluate it yet, because I need to wait 24 hours to finalize the proposal but I was able to check the other features in the testing guide, like marking a proposal as faulty and acting as a council. + +## Evaluation V1 + +### Unit Test + +All unit tests passed. + +``` +running 7 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::can_change_owner ... ok +test tests::it_sets_metadata ... ok +test tests::issues_a_token ... ok +test tests::it_creates_a_dao ... ok +test tests::it_destroys_a_dao ... ok +test tests::dao_id_valid_chars ... ok + +test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s + + Doc-tests pallet-dao-core + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Finished test [unoptimized + debuginfo] target(s) in 0.32s + Running unittests src/lib.rs (/home/user/Documents/genesisdao/genesis-dao-node/target/debug/deps/pallet_dao_assets-4e10fb2310ffc300) + +running 29 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::burning_asset_balance_with_positive_balance_should_work ... ok +test tests::finish_destroy_asset_destroys_asset ... ok +test tests::imbalances_should_work ... ok +test tests::origin_guards_should_work ... ok +test tests::basic_minting_should_work ... ok +test tests::burning_asset_balance_with_zero_balance_does_nothing ... ok +test tests::approval_lifecycle_works ... ok +test tests::cannot_transfer_more_than_exists ... ok +test tests::cannot_transfer_more_than_approved ... ok +test tests::destroy_should_refund_approvals ... ok +test tests::lifecycle_should_work ... ok +test tests::assets_from_genesis_should_exist ... ok +test tests::approval_deposits_work ... ok +test tests::cancel_approval_works ... ok +test tests::reserving_and_unreserving_should_work ... ok +test tests::transfer_large_asset ... ok +test tests::transferring_amount_below_available_balance_should_work ... ok +test tests::set_metadata_should_work ... ok +test tests::querying_allowance_should_work ... ok +test tests::min_balance_should_work ... ok +test tests::querying_total_supply_should_work ... ok +test tests::transferring_less_than_one_unit_is_fine ... ok +test tests::transferring_more_units_than_total_supply_should_not_work ... ok +test tests::transferring_enough_to_kill_source_when_keep_alive_should_fail ... ok +test tests::partial_destroy_should_work ... ok +test tests::transfer_approved_all_funds ... ok +test tests::query_historic_blocks_should_work ... ok +test tests::transferring_amount_more_than_available_balance_should_not_work ... ok + +test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s + + Doc-tests pallet-dao-assets + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Finished test [unoptimized + debuginfo] target(s) in 0.31s + Running unittests src/lib.rs (/home/user/Documents/genesisdao/genesis-dao-node/target/debug/deps/pallet_dao_votes-897497c511b34cd4) + +running 8 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::voting_outcome_unsuccessful_proposal ... ok +test tests::can_cast_and_remove_a_vote ... ok +test tests::can_create_a_proposal ... ok +test tests::can_set_metadata ... ok +test tests::can_finalize_a_proposal ... ok +test tests::voting_outcome_successful_proposal_and_mark_implemented ... ok +test tests::can_fault_a_proposal ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Doc-tests pallet-dao-votes +``` + +### Integration Test + +The integration test failed. + +``` + Running unittests src/lib.rs (/home/user/Documents/genesisdao/genesis-dao-node/target/debug/deps/integration_wrapper-b4742002a4438968) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/test_dao_lifecycle.rs (/home/user/Documents/genesisdao/genesis-dao-node/target/debug/deps/test_dao_lifecycle-d59a45746e8b198b) + +running 1 test +test dao_lifecycle has been running for over 60 seconds +test dao_lifecycle ... FAILED + +failures: + +---- dao_lifecycle stdout ---- +thread 'dao_lifecycle' panicked at 'Error creating proposal: Metadata: Pallet Votes Call Votes has incompatible metadata', integration-wrapper/tests/test_dao_lifecycle.rs:94:23 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + + +failures: + dao_lifecycle + +test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 69.60s + +error: test failed, to rerun pass `--test test_dao_lifecycle` +``` + +### Manual Testing + +Could you provide a manual testing guide that shows the usage of the new features? + +I tested the software even without this manual. I could create a DAO, a proposal and vote for this proposal. Do I need to wait until the end of the timer to close the proposal? How do I report the proposal using the frontend? Can I change the proposal duration and cust using the frontend? When I tried to use some commands, for example, `faultProposal` from votes in substrate using the account that created the DAO, I received the "vote.SenderIsNotDaoOwner" error. + +### Code Quality + +I ran `yarn lint` and didn't receive warnings. + +``` +user@localhost:~/Documents/genesisdao/genesis-dao-frontend$ yarn lint +yarn run v1.22.19 +$ next lint +info - Loaded env from /home/user/Documents/genesisdao/genesis-dao-frontend/.env +✔ No ESLint warnings or errors +Done in 2.42s. +``` + +I ran `cargo tarpaulin` to check the coverage of the pallet dao-votes, the coverage could be improved, but it isn't mandatory. + +``` +running 8 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::can_create_a_proposal ... ok +test tests::can_set_metadata ... ok +test tests::can_fault_a_proposal ... ok +test tests::can_finalize_a_proposal ... ok +test tests::can_cast_and_remove_a_vote ... ok +test tests::voting_outcome_unsuccessful_proposal ... ok +test tests::voting_outcome_successful_proposal_and_mark_implemented ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s + +May 26 10:47:29.638 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| node/src/chain_spec.rs: 0/2 +|| node/src/rpc.rs: 0/5 +|| pallets/dao-assets/src/benchmarking.rs: 0/32 +|| pallets/dao-assets/src/functions.rs: 158/355 +|| pallets/dao-assets/src/impl_fungibles.rs: 4/61 +|| pallets/dao-assets/src/lib.rs: 11/102 +|| pallets/dao-assets/src/types.rs: 2/2 +|| pallets/dao-assets/src/weights.rs: 0/226 +|| pallets/dao-core/src/benchmarking.rs: 0/14 +|| pallets/dao-core/src/functions.rs: 3/6 +|| pallets/dao-core/src/lib.rs: 44/96 +|| pallets/dao-core/src/weights.rs: 0/32 +|| pallets/dao-votes/src/benchmarking.rs: 0/20 +|| pallets/dao-votes/src/lib.rs: 126/164 +|| pallets/dao-votes/src/test_utils.rs: 36/44 +|| pallets/dao-votes/src/weights.rs: 0/40 +|| +31.97% coverage, 384/1201 lines covered +``` + +This coverage is only for the tests in the pallets/dao-votes. diff --git a/evaluations/high-availability-validator-setup_3_ali-usama.md b/evaluations/high-availability-validator-setup_3_ali-usama.md new file mode 100644 index 000000000..d79b9d010 --- /dev/null +++ b/evaluations/high-availability-validator-setup_3_ali-usama.md @@ -0,0 +1,102 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [High Availability Validator Setup](https://github.com/w3f/Grants-Program/blob/master/applications/High_availability_validator_setup.md) +- **Milestone:** 3 +- **Kusama Identity:** Eexv1mKLiCidz2gGh6vfowtXgSSc7mvD4xEb2ji998W4DPs +- **Previously successfully merged evaluation:** All evaluations by ali-usama + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +|--------|---------------------------------|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------| +| 0a. | Licence |
  • [x]
| [Unlicense](https://github.com/bright/substrate-raft-setup/blob/milestone-3/LICENSE) | Correct Licence | +| 0b. | Documentation |
  • [x]
| [ReadMe](https://github.com/bright/substrate-raft-setup/blob/milestone-3/README.md) | Minimal inline docs and documentation | +| 0c. | Testing Guide |
  • [x]
| `cargo test` | -- | +| 0d. | Docker |
  • [x]
| [Running locally](https://github.com/bright/substrate-raft-setup/blob/milestone-3/README.md#running-locally-1) | Builds and runs successfully. | +| 1. | Run necessary Raft services |
  • [x]
| [Running docker-compose](https://github.com/bright/substrate-raft-setup/blob/milestone-3/README.md#running-docker-compose-1) | Working as per the application | +| 2. | Integrate Raft client into Node |
  • [x]
| [Running docker-compose](https://github.com/bright/substrate-raft-setup/blob/milestone-3/README.md#running-docker-compose-1) | Working as per the application | +| 3. | Integration test |
  • [x]
| `docker-compose up` | Builds and runs successfully. | + + +## General Notes + +### Jul 11, 2023 + +Tests work as expected. + +### Jul 10, 2023 + +The delivery is well-structured and well-documented, however, the only issue I found is tha failing `cargo test` command in the root directory of the terminal. I tried with updated and older rustc versions too, but both failed with the same error mentioned below. + +### `cargo test` output + +``` +CMake Warning: + Manually-specified variables were not used by the project: + + CMAKE_ASM_COMPILER + CMAKE_ASM_FLAGS + + + gmake: warning: -j8 forced in submake: resetting jobserver mode. + /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.8.1/grpc/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc: In member function ‘void absl::lts_2020_09_23::synchronization_internal::GraphCycles::RemoveNode(void*)’: + /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.8.1/grpc/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc:451:26: error: ‘numeric_limits’ is not a member of ‘std’ + 451 | if (x->version == std::numeric_limits::max()) { + | ^~~~~~~~~~~~~~ + /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.8.1/grpc/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc:451:49: error: expected primary-expression before ‘>’ token + 451 | if (x->version == std::numeric_limits::max()) { + | ^ + /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.8.1/grpc/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc:451:52: error: ‘::max’ has not been declared; did you mean ‘std::max’? + 451 | if (x->version == std::numeric_limits::max()) { + | ^~~ + | std::max + In file included from /usr/include/c++/11/algorithm:62, + from /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/grpcio-sys-0.8.1/grpc/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc:38: + /usr/include/c++/11/bits/stl_algo.h:3467:5: note: ‘std::max’ declared here + 3467 | max(initializer_list<_Tp> __l, _Compare __comp) + | ^~~ + gmake[3]: *** [third_party/abseil-cpp/absl/synchronization/CMakeFiles/absl_graphcycles_internal.dir/build.make:76: third_party/abseil-cpp/absl/synchronization/CMakeFiles/absl_graphcycles_internal.dir/internal/graphcycles.cc.o] Error 1 + gmake[2]: *** [CMakeFiles/Makefile2:3153: third_party/abseil-cpp/absl/synchronization/CMakeFiles/absl_graphcycles_internal.dir/all] Error 2 + gmake[2]: *** Waiting for unfinished jobs.... + gmake[1]: *** [CMakeFiles/Makefile2:848: CMakeFiles/grpc.dir/rule] Error 2 + gmake: *** [Makefile:247: grpc] Error 2 + thread 'main' panicked at ' + command did not execute successfully, got: exit status: 2 + + build script failed, must exit now', /home/user/.cargo/registry/src/index.crates.io-6f17d22bba15001f/cmake-0.1.48/src/lib.rs:975:5 + note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace +``` + +### `bash docker/build.sh` output + +``` +Building bright/substrate-raft-setup:latest docker image, hang on! +[+] Building 2676.3s (15/15) FINISHED + => [internal] load .dockerignore 0.0s + => => transferring context: 2B 0.0s + => [internal] load build definition from Dockerfile 0.0s + => => transferring dockerfile: 1.52kB 0.0s + => [internal] load metadata for docker.io/library/ubuntu:20.04 15.2s + => [internal] load metadata for docker.io/paritytech/ci-linux:1c0fde6a-20220811 16.0s + => [builder 1/4] FROM docker.io/paritytech/ci-linux:1c0fde6a-20220811@sha256:4e8c072ea12bc17d99cb531adb58dea5a4c7d4880a8a86525052d24d1454e89e 0.0s + => [stage-1 1/5] FROM docker.io/library/ubuntu:20.04@sha256:c9820a44b950956a790c354700c1166a7ec648bc0d215fa438d3a339812f1d01 0.0s + => [internal] load build context 168.8s + => => transferring context: 9.24GB 167.7s + => CACHED [builder 2/4] WORKDIR /node-template 0.0s + => [builder 3/4] COPY . . 35.0s + => [builder 4/4] RUN cargo build --locked --release 2454.9s + => CACHED [stage-1 2/5] RUN apt-get update 0.0s + => CACHED [stage-1 3/5] RUN apt-get install -y openssl 0.0s + => [stage-1 4/5] COPY --from=builder /node-template/target/release/node-template /usr/local/bin 0.2s + => [stage-1 5/5] RUN useradd -m -u 1000 -U -s /bin/sh -d /node-dev node-dev && mkdir -p /chain-data /node-dev/.local/share && chown -R node-dev:node-dev /chain-data && 0.4s + => exporting to image 0.4s + => => exporting layers 0.4s + => => writing image sha256:2e766c6e9b34a20c4f749762e5bbe9befda7ca6afa96f0ea05cf510448ab24ac 0.0s + => => naming to docker.io/bright/substrate-raft-setup:latest 0.0s + +real 44m37.150s +user 1m5.707s +sys 0m29.217s +Image is ready +bright/substrate-raft-setup latest 2e766c6e9b34 1 second ago 202MB +bright/substrate-raft-setup v4.0.0 2e766c6e9b34 1 second ago 202MB +``` diff --git a/evaluations/high_availability_validator_setup_2_keeganquigley.md b/evaluations/high_availability_validator_setup_2_keeganquigley.md new file mode 100644 index 000000000..a32012d4c --- /dev/null +++ b/evaluations/high_availability_validator_setup_2_keeganquigley.md @@ -0,0 +1,339 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/High_availability_validator_setup.md +- **Milestone:** 2 +- **Previously successfully merged evaluation:** All by keeganquigley + +| Number | Deliverable | Accepted | Link | Notes | +| ------------- | ------------- | ------------- | ------------- |------------- | +| 0a. | License |
  • [x]
| https://github.com/bright/substrate-raft/blob/milestone-1/LICENSE-GPL3 | GPLv3, Unlicense | +| 0b. | Documentation |
  • [x]
| Inline | Looks good. | +| 0c. | Testing and Testing Guide |
  • [x]
| - | Looks good. | +| 0d. | Docker |
  • [x]
| https://github.com/bright/substrate-raft/tree/milestone-1/docker | Looks good. | +| **1** | Basic Service |
  • [x]
| [Authority-service](https://github.com/bright/substrate-raft-setup/blob/milestone-2/bin/authority-service) code | Looks good. | +| **2** | Getting permission from microservice |
  • [x]
| [Repository](https://github.com/bright/substrate-raft-setup/blob/milestone-2) for the custom node, and the [implementation](https://github.com/bright/substrate-raft-setup/blob/milestone-2/permission_resolver/src/lib.rs) for the PermissionResolver | Looks good. | +| **3** | Allow as optional |
  • [x]
| Code for the [cli](https://github.com/bright/substrate-raft-setup/blob/milestone-2/node/src/cli.rs) | Looks good. | +| **4** | Clean up substrate code |
  • [x]
| Changes in [code](https://github.com/bright/substrate-raft/commit/f4bab8f2a461271ab52ec6343934f6b84623b6c8) | Looks good. | +| **5** | Integration test |
  • [x]
| | Looks good. | + +# General Notes + +## Tests + +6 tests pass successfully in `authority-service`: +```rust +running 6 tests +test config::test::next_test ... ok +test config::test::load_test ... ok +test handler::test::test_authorize_round ... ok +test handler::test::test_authorize ... ok +test handler::test::test_authorize_fix_order ... ok +test handler::test::test_authorize_session ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s +``` + +Running on Ubuntu 20.04 + +Running `cargo test` in `substrate-raft-setup` fails with: +```rust +error: failed to run custom build command for `openssl-sys v0.9.80` + +Caused by: + process didn't exit successfully: `/home/ubuntu/substrate-raft-setup/target/debug/build/openssl-sys-d554517e5179ead6/build-script-main` (exit status: 101) + --- stdout + cargo:rustc-cfg=const_fn + cargo:rustc-cfg=openssl + cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR + X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR unset + cargo:rerun-if-env-changed=OPENSSL_LIB_DIR + OPENSSL_LIB_DIR unset + cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR + X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR unset + cargo:rerun-if-env-changed=OPENSSL_INCLUDE_DIR + OPENSSL_INCLUDE_DIR unset + cargo:rerun-if-env-changed=X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR + X86_64_UNKNOWN_LINUX_GNU_OPENSSL_DIR unset + cargo:rerun-if-env-changed=OPENSSL_DIR + OPENSSL_DIR unset + cargo:rerun-if-env-changed=OPENSSL_NO_PKG_CONFIG + cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu + cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu + cargo:rerun-if-env-changed=HOST_PKG_CONFIG + cargo:rerun-if-env-changed=PKG_CONFIG + cargo:rerun-if-env-changed=OPENSSL_STATIC + cargo:rerun-if-env-changed=OPENSSL_DYNAMIC + cargo:rerun-if-env-changed=PKG_CONFIG_ALL_STATIC + cargo:rerun-if-env-changed=PKG_CONFIG_ALL_DYNAMIC + cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu + cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu + cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH + cargo:rerun-if-env-changed=PKG_CONFIG_PATH + cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu + cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu + cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR + cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR + cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu + cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu + cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR + cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR + run pkg_config fail: "Could not run `PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=\"1\" \"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"`\nThe pkg-config command could not be found.\n\nMost likely, you need to install a pkg-config package for your OS.\nTry `apt install pkg-config`, or `yum install pkg-config`,\nor `pkg install pkg-config` depending on your distribution.\n\nIf you've already installed it, ensure the pkg-config command is one of the\ndirectories in the PATH environment variable.\n\nIf you did not expect this build to link to a pre-installed system library,\nthen check documentation of the openssl-sys crate for an option to\nbuild the library from source, or disable features or dependencies\nthat require pkg-config." + + --- stderr + thread 'main' panicked at ' + + Could not find directory of OpenSSL installation, and this `-sys` crate cannot + proceed without this knowledge. If OpenSSL is installed and this crate had + trouble finding it, you can set the `OPENSSL_DIR` environment variable for the + compilation process. + + Make sure you also have the development packages of openssl installed. + For example, `libssl-dev` on Ubuntu or `openssl-devel` on Fedora. + + If you're in a situation where you think the directory *should* be found + automatically, please open a bug at https://github.com/sfackler/rust-openssl + and include information about your system as well as this message. + + $HOST = x86_64-unknown-linux-gnu + $TARGET = x86_64-unknown-linux-gnu + openssl-sys = 0.9.80 + + + It looks like you're compiling on Linux and also targeting Linux. Currently this + requires the `pkg-config` utility to find OpenSSL but unfortunately `pkg-config` + could not be found. If you have OpenSSL installed you can likely fix this by + installing `pkg-config`. + + ', /home/ubuntu/.cargo/registry/src/index.crates.io-6f17d22bba15001f/openssl-sys-0.9.80/build/find_normal.rs:191:5 + note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + ``` + I tried installing OpenSSL tools with `sudo apt-get install libssl-dev` to no avail. Also tried `sudo apt install pkg-config`. That works to fix pkg-config error but then it displays an old Rust issue that has been fixed since this toolchain was released: +```rust +error: `sp_trie::recorder::Recorder::as_trie_recorder::{opaque#0}<'_>` does not live long enough + --> /home/ubuntu/.cargo/git/checkouts/substrate-raft-e8c7ccdd76a0db97/f4bab8f/primitives/state-machine/src/trie_backend_essence.rs:181:44 + | +181 | let recorder = recorder.as_mut().map(|r| r as _); + | ^ + +error: `sp_trie::recorder::Recorder::as_trie_recorder::{opaque#0}<'_>` does not live long enough + --> /home/ubuntu/.cargo/git/checkouts/substrate-raft-e8c7ccdd76a0db97/f4bab8f/primitives/state-machine/src/trie_backend_essence.rs:219:44 + | +219 | let recorder = recorder.as_mut().map(|r| r as _); + | ^ + +error: could not compile `sp-state-machine` due to 2 previous errors +``` + +Docker also fails to run: + ```rust + ~/substrate-raft-setup ~/substrate-raft-setup +Building bright/substrate-raft-setup:latest docker image, hang on! +[+] Building 3.7s (9/14) + => [internal] load build definition from Dockerfile 0.0s + => => transferring dockerfile: 1.53kB 0.0s + => [internal] load .dockerignore 0.0s + => => transferring context: 2B 0.0s + => [internal] load metadata for docker.io/paritytech/ci-linux:1c0fde6a-20220811 1.5s + => [internal] load metadata for docker.io/library/ubuntu:20.04 1.3s + => CANCELED [builder 1/4] FROM docker.io/paritytech/ci-linux:1c0fde6a-20220811@sha256:4e8c072ea12bc17d99cb531adb58d 2.2s + => => resolve docker.io/paritytech/ci-linux:1c0fde6a-20220811@sha256:4e8c072ea12bc17d99cb531adb58dea5a4c7d4880a8a86 0.0s + => => sha256:a4115f36e7e5073366d03bde65ca2cb5e4c8e443c1b1f316b6aa4179fab42000 1.05MB / 527.84MB 2.2s + => => sha256:660ac983e23e1bd2d0e97d5d2e468994e007da287a2e395ca13e53b8571e5283 2.10MB / 337.09MB 2.2s + => => sha256:4e8c072ea12bc17d99cb531adb58dea5a4c7d4880a8a86525052d24d1454e89e 761B / 761B 0.0s + => => sha256:a63a944a77f9ebe6cbf1d5100a7c9c07bb3fd3181d298bb166c8a1ce75b81aec 9.38kB / 9.38kB 0.0s + => => sha256:751ef25978b2971e15496369695ba51ed5b1b9aaca7e37b18a173d754d1ca820 8.39MB / 27.14MB 2.2s + => [internal] load build context 0.6s + => => transferring context: 50.35MB 0.5s + => [stage-1 1/5] FROM docker.io/library/ubuntu:20.04@sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d4c203e5 0.0s + => CACHED [stage-1 2/5] RUN apt-get update 0.0s + => ERROR [stage-1 3/5] RUN apt-get install -y openssl 2.2s +------ + > [stage-1 3/5] RUN apt-get install -y openssl: +#7 0.363 Reading package lists... +#7 0.953 Building dependency tree... +#7 1.035 Reading state information... +#7 1.119 The following additional packages will be installed: +#7 1.119 libssl1.1 +#7 1.119 Suggested packages: +#7 1.119 ca-certificates +#7 1.153 The following NEW packages will be installed: +#7 1.153 libssl1.1 openssl +#7 1.635 0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded. +#7 1.635 Need to get 1757 kB of archives. +#7 1.635 After this operation, 4950 kB of additional disk space will be used. +#7 1.635 Ign:1 http://ports.ubuntu.com/ubuntu-ports focal-updates/main arm64 libssl1.1 arm64 1.1.1f-1ubuntu2.17 +#7 1.781 Ign:2 http://ports.ubuntu.com/ubuntu-ports focal-updates/main arm64 openssl arm64 1.1.1f-1ubuntu2.17 +#7 1.946 Err:1 http://ports.ubuntu.com/ubuntu-ports focal-updates/main arm64 libssl1.1 arm64 1.1.1f-1ubuntu2.17 +#7 1.946 404 Not Found [IP: 185.125.190.39 80] +#7 2.106 Err:2 http://ports.ubuntu.com/ubuntu-ports focal-updates/main arm64 openssl arm64 1.1.1f-1ubuntu2.17 +#7 2.106 404 Not Found [IP: 185.125.190.39 80] +#7 2.117 E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2.17_arm64.deb 404 Not Found [IP: 185.125.190.39 80] +#7 2.117 E: Failed to fetch http://ports.ubuntu.com/ubuntu-ports/pool/main/o/openssl/openssl_1.1.1f-1ubuntu2.17_arm64.deb 404 Not Found [IP: 185.125.190.39 80] +#7 2.117 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing? +------ +process "/bin/sh -c apt-get install -y openssl" did not complete successfully: exit code: 100 +``` +## Update 2 + +Tried Docker on Ubuntu and fails with this: +```rust +error: failed to run custom build command for `node-template-runtime v4.0.0-dev (/node-template/runtime)` +#0 563.4 +#0 563.4 Caused by: +#0 563.4 process didn't exit successfully: `/node-template/target/release/build/node-template-runtime-37c0b72b2eac5a32/build-script-build` (exit status: 1) +#0 563.4 --- stderr +#0 563.4 Rust WASM toolchain not installed, please install it! +#0 563.4 +#0 563.4 Further error information: +#0 563.4 ------------------------------------------------------------ +#0 563.4 Compiling wasm-test v1.0.0 (/tmp/.tmpyZyoTz) +#0 563.4 error[E0463]: can't find crate for `std` +#0 563.4 | +#0 563.4 = note: the `wasm32-unknown-unknown` target may not be installed +#0 563.4 = help: consider downloading the target with `rustup target add wasm32-unknown-unknown` +#0 563.4 = help: consider building the standard library from source with `cargo build -Zbuild-std` +#0 563.4 +#0 563.4 error: requires `sized` lang_item +#0 563.4 +#0 563.4 For more information about this error, try `rustc --explain E0463`. +#0 563.4 error: could not compile `wasm-test` due to 2 previous errors +#0 563.4 ------------------------------------------------------------ +#0 563.4 +#0 563.4 warning: build failed, waiting for other jobs to finish... +------ +Dockerfile:9 +-------------------- + 7 | WORKDIR /node-template + 8 | COPY . . + 9 | >>> RUN cargo build --locked --release + 10 | + 11 | # This is the 2nd stage: a very small image where we copy the binary." +-------------------- +ERROR: failed to solve: process "/bin/sh -c cargo build --locked --release" did not complete successfully: exit code: 101 +``` +## Update 3 + +Docker runs successfully in Codespaces: +```js +@keeganquigley ➜ /workspaces/substrate-raft (milestone-2) $ bash docker/build.sh +/workspaces/substrate-raft /workspaces/substrate-raft +Building parity/substrate:latest docker image, hang on! +[+] Building 5510.4s (20/20) FINISHED + => [internal] load .dockerignore 0.3s + => => transferring context: 99B 0.0s + => [internal] load build definition from substrate_builder.Dockerfile 0.5s + => => transferring dockerfile: 1.60kB 0.0s + => [internal] load metadata for docker.io/library/ubuntu:20.04 0.9s + => [internal] load metadata for docker.io/paritytech/ci-linux:production 0.7s + => [auth] paritytech/ci-linux:pull token for registry-1.docker.io 0.0s + => [auth] library/ubuntu:pull token for registry-1.docker.io 0.0s + => [stage-1 1/8] FROM docker.io/library/ubuntu:20.04@sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d4c203e58387dc6b3 13.2s + => => resolve docker.io/library/ubuntu:20.04@sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d4c203e58387dc6b3 0.3s + => => sha256:db8bf6f4fb351aa7a26e27ba2686cf35a6a409f65603e59d4c203e58387dc6b3 1.13kB / 1.13kB 0.0s + => => sha256:b795f8e0caaaacad9859a9a38fe1c78154f8301fdaf0872eaf1520d66d9c0b98 424B / 424B 0.0s + => => sha256:88bd6891718934e63638d9ca0ecee018e69b638270fe04990a310e5c78ab4a92 2.30kB / 2.30kB 0.0s + => => sha256:ca1778b6935686ad781c27472c4668fc61ec3aeb85494f72deb1921892b9d39e 27.50MB / 27.50MB 3.2s + => => extracting sha256:ca1778b6935686ad781c27472c4668fc61ec3aeb85494f72deb1921892b9d39e 8.6s + => [internal] load build context 12.9s + => => transferring context: 185.99MB 12.3s + => [builder 1/4] FROM docker.io/paritytech/ci-linux:production@sha256:7bc94ccc966e0e998eec5dcbc514d2e6886b6c4d4b3e1e3c8e5378fdb583e06b 68.2s + => => resolve docker.io/paritytech/ci-linux:production@sha256:7bc94ccc966e0e998eec5dcbc514d2e6886b6c4d4b3e1e3c8e5378fdb583e06b 0.2s + => => sha256:7bc94ccc966e0e998eec5dcbc514d2e6886b6c4d4b3e1e3c8e5378fdb583e06b 762B / 762B 0.0s + => => sha256:c9e6004a6b7abc733befd4c97cf9f307fabe8ce90d1ac292c46fc8f0e1a78786 10.01kB / 10.01kB 0.0s + => => sha256:f03b40093957615593f2ed142961afb6b540507e0b47e3f7626ba5e02efbbbf1 31.40MB / 31.40MB 0.7s + => => sha256:a1188d3531963af14d12a749ea904f2c144d4085ff80590d6e0279263007c748 406.31MB / 406.31MB 11.2s + => => sha256:f4fff1446f7a40d17230f286942b0b1ee3ee84bc63de77562f72763ea4e3bafc 571.73MB / 571.73MB 13.6s + => => extracting sha256:f03b40093957615593f2ed142961afb6b540507e0b47e3f7626ba5e02efbbbf1 8.9s + => => extracting sha256:f4fff1446f7a40d17230f286942b0b1ee3ee84bc63de77562f72763ea4e3bafc 33.0s + => => extracting sha256:a1188d3531963af14d12a749ea904f2c144d4085ff80590d6e0279263007c748 17.1s + => [stage-1 2/8] RUN apt-get update 8.3s + => [stage-1 3/8] RUN apt-get install -y openssl 8.9s + => [builder 2/4] WORKDIR /substrate 0.3s + => [builder 3/4] COPY . /substrate 4.2s + => [builder 4/4] RUN cargo build --locked --release 5391.6s + => [stage-1 4/8] COPY --from=builder /substrate/target/release/substrate /usr/local/bin 1.3s + => [stage-1 5/8] COPY --from=builder /substrate/target/release/subkey /usr/local/bin 0.4s + => [stage-1 6/8] COPY --from=builder /substrate/target/release/node-template /usr/local/bin 0.6s + => [stage-1 7/8] COPY --from=builder /substrate/target/release/chain-spec-builder /usr/local/bin 0.4s + => [stage-1 8/8] RUN useradd -m -u 1000 -U -s /bin/sh -d /substrate substrate && mkdir -p /data /substrate/.local/share/substrate && chown -R substrate:substrate /data && ln -s /data /substrate/.local/share/ 3.6s + => exporting to image 3.0s + => => exporting layers 2.9s + => => writing image sha256:6db86cc74546a784e8426c5df410eedaf97bc32281f550535706c228da65166c 0.0s + => => naming to docker.io/parity/substrate:latest 0.0s + +real 91m51.717s +user 0m10.582s +sys 0m9.266s +Image is ready +parity/substrate latest 6db86cc74546 31 seconds ago 319MB +parity/substrate v3.0.0 6db86cc74546 31 seconds ago 319MB +/workspaces/substrate-raft +``` +Had a call with the team and they gave demo of the tech. Essentially the issues were on my end as I wasn't running good enough hardware specs. They were able to show the basic boolean logic working, and see the `permissionResolver` trait in action. `Authority-Service` code could use more inline comments. + +`cargo test` successful but with some warnings: +```rust +warning: using `.borrow()` on a double reference, which returns `&KArg1` instead of borrowing the inner type + --> frame/support/src/storage/generator/double_map.rs:81:22 + | +81 | let key_hashed = k1.borrow().using_encoded(Self::Hasher1::hash); + | ^^^^^^^^^ + | + = note: `#[warn(suspicious_double_ref_op)]` on by default + +warning: using `.borrow()` on a double reference, which returns `&KArg1` instead of borrowing the inner type + --> frame/support/src/storage/generator/double_map.rs:98:23 + | +98 | let key1_hashed = k1.borrow().using_encoded(Self::Hasher1::hash); + | ^^^^^^^^^ + +warning: using `.borrow()` on a double reference, which returns `&KArg2` instead of borrowing the inner type + --> frame/support/src/storage/generator/double_map.rs:99:23 + | +99 | let key2_hashed = k2.borrow().using_encoded(Self::Hasher2::hash); + | ^^^^^^^^^ + +warning: using `.borrow()` on a double reference, which returns `&VArg` instead of borrowing the inner type + --> frame/support/src/storage/generator/double_map.rs:201:66 + | +201 | unhashed::put(&Self::storage_double_map_final_key(k1, k2), &val.borrow()) + | ^^^^^^^^^ + +warning: using `.borrow()` on a double reference, which returns `&KeyArg1` instead of borrowing the inner type + --> frame/support/src/storage/generator/double_map.rs:332:26 + | +332 | let key1_hashed = key1.borrow().using_encoded(OldHasher1::hash); + | ^^^^^^^^^ + +warning: using `.borrow()` on a double reference, which returns `&KeyArg2` instead of borrowing the inner type + --> frame/support/src/storage/generator/double_map.rs:333:26 + | +333 | let key2_hashed = key2.borrow().using_encoded(OldHasher2::hash); + | ^^^^^^^^^ + +warning: using `.borrow()` on a double reference, which returns `&KeyArg` instead of borrowing the inner type + --> frame/support/src/storage/generator/map.rs:71:23 + | +71 | let key_hashed = key.borrow().using_encoded(Self::Hasher::hash); + | ^^^^^^^^^ + +warning: using `.borrow()` on a double reference, which returns `&KeyArg` instead of borrowing the inner type + --> frame/support/src/storage/generator/map.rs:330:24 + | +330 | let key_hashed = key.borrow().using_encoded(OldHasher::hash); + | ^^^^^^^^^ +``` + + **Linting:**: Cargo clippy produces the following warnings for `substrate-raft`. Consider fixing for next milestone. +```rust +warning: associated function `project_ref` is never used + --> client/telemetry/src/transport.rs:80:1 + | +80 | #[pin_project::pin_project] + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: `#[warn(dead_code)]` on by default + +warning: `sc-telemetry` (lib) generated 1 warning +``` diff --git a/evaluations/hybrid_2_ali-usama.md b/evaluations/hybrid_2_ali-usama.md new file mode 100644 index 000000000..9b909b6ec --- /dev/null +++ b/evaluations/hybrid_2_ali-usama.md @@ -0,0 +1,117 @@ +# Evaluation + + +- **Status:** Accepted +- **Application Document:** [hybrid](https://github.com/w3f/Grants-Program/blob/master/applications/hybrid.md). +- **Milestone:** 2 +- **Kusama Identity:** Eexv1mKLiCidz2gGh6vfowtXgSSc7mvD4xEb2ji998W4DPs +- **Previously successfully merged evaluation:** All evaluations by `ali-usama` + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +|--------|--------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------|---------------------------------------------------------| +| 0a. | LICENCE |
  • [x]
| [Apache 2.0](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/LICENSE) | Correct Licence | +| 0b. | Documentation |
  • [x]
| [READMe](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/README.md) | Well-structured & Well-explained docs | +| 0c. | Testing & Testing Guide |
  • [x]
| [Testing Guide](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/README.md#testing-guide) | All tests passed. Output attached below | +| 0d. | Docker |
  • [x]
| [Docker](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/README.md#docker) | Image built and ran successfully. Output attached below | +| 1. | Event subscription API |
  • [x]
| [WebSocket](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/websockets.rs#L415) | Working as expected | +| 2. | Live DApp |
  • [x]
| [IndexerClient](https://github.com/hybrid-explorer/hybrid-dapp/blob/milestone-2/src/lib/IndexerClient.ts#L112) | | +| 3. | Full polkadot Event Indexing |
  • [x]
| [substrate](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/substrate.rs#L377) | | +| 4. | Variant index |
  • [x]
| [substrate](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/substrate.rs#L235) | | +| 5. | Increased Decentralization |
  • [x]
| [IndexerClient](https://github.com/hybrid-explorer/hybrid-dapp/blob/milestone-2/src/lib/IndexerClient.ts#L12) | | +| 6. | Asynchronous block downloading |
  • [x]
| [substrate](https://github.com/hybrid-explorer/hybrid-indexer/blob/milestone-2/src/substrate.rs#L536) | | + + +## General Notes + +The repository is well-structured and well-documented. The functionalities mentioned in the milestone are working fine, however, the only point that needs some attention is the code duplication in the `websocket.rs`. +The test cases are also well-written and cover most of the features delivered in the milestone. +## `cargo test` output +``` +running 45 tests +test tests::test_candidate_hash_key ... ok +test tests::test_account_id_key ... ok +test tests::test_index_event_message_id ... ok +test tests::test_index_event_auction_index ... ok +test tests::test_index_event_candidate_hash ... ok +test tests::test_index_event_era_index ... ok +test tests::test_index_event_account_index ... ok +test tests::test_index_event_para_id ... ok +test tests::test_index_event_account_id ... ok +test tests::test_index_event_bounty_index ... ok +test tests::test_index_event_pool_id ... ok +test tests::test_index_event_ref_index ... ok +test tests::test_index_event_session_index ... ok +test tests::test_index_event_preimage_hash ... ok +test tests::test_index_event_proposal_hash ... ok +test tests::test_index_event_registrar_index ... ok +test tests::test_index_event_proposal_index ... ok +test tests::test_message_id_key ... ok +test tests::test_preimage_hash_key ... ok +test tests::test_index_event_tip_hash ... ok +test tests::test_process_msg_account_id ... ok +test tests::test_index_event_variant ... ok +test tests::test_process_msg_auction_index ... ok +test tests::test_process_msg_account_index ... ok +test tests::test_process_msg_candidate_hash ... ok +test tests::test_process_msg_bounty_index ... ok +test tests::test_process_msg_message_id ... ok +test tests::test_process_msg_pool_id ... ok +test tests::test_process_msg_proposal_hash ... ok +test tests::test_process_msg_preimage_hash ... ok +test tests::test_process_msg_ref_index ... ok +test tests::test_process_msg_proposal_index ... ok +test tests::test_proposal_hash_key ... ok +test tests::test_tip_hash_key ... ok +test tests::test_u32_key ... ok +test tests::test_process_msg_era_index ... ok +test tests::test_process_msg_registrar_index ... ok +test tests::test_variant_key ... ok +test tests::test_process_msg_para_id ... ok +test tests::test_vector_as_u8_32_array ... ok +test tests::test_vector_as_u8_4_array ... ok +test tests::test_process_msg_variant ... ok +test tests::test_process_msg_session_index ... ok +test tests::test_process_msg_tip_hash ... ok +test tests::test_process_msg_status ... ok + +test result: ok. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s +``` + +## `docker run` output +``` +$ docker run --rm -p 8172:8172 f022848a4bc322252fa95bfe6e0f02d0cd2c06f295838a7ff51ff55e7d1cb1e3 + Finished release [optimized] target(s) in 0.28s + Running `target/release/hybrid-indexer --block-height 15870000` +Opened database. +Connected to Substrate node. +Listening on: 0.0.0.0:8172 +Downloading metadata for spec version 9180 + ✨ #15920452 +Downloading metadata for spec version 9370 +Downloading metadata for spec version 9370 + ✨ #15920453 + ✨ #15920454 + ✨ #15920455 + ✨ #15920456 + ✨ #15920457 + 📚 #15870100, 8 blocks/sec + ✨ #15920458 + ✨ #15920459 + 📚 #15870200, 13 blocks/sec + ✨ #15920460 + 📚 #15870300, 10 blocks/sec + 📚 #15870400, 12 blocks/sec + ✨ #15920461 + 📚 #15870500, 19 blocks/sec + ✨ #15920462 + 📚 #15870600, 22 blocks/sec + ✨ #15920463 + 📚 #15870700, 21 blocks/sec + ✨ #15920464 + 📚 #15870800, 22 blocks/sec + ✨ #15920465 + 📚 #15870900, 30 blocks/sec + 📚 #15871000, 22 blocks/sec + ✨ #15920466 + +``` \ No newline at end of file diff --git a/evaluations/ink-pallet-benchmarking_3_dsm-w3f.md b/evaluations/ink-pallet-benchmarking_3_dsm-w3f.md new file mode 100644 index 000000000..6ecb5f57f --- /dev/null +++ b/evaluations/ink-pallet-benchmarking_3_dsm-w3f.md @@ -0,0 +1,203 @@ +# Evaluation + +- **Status:** In Progress +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ink-pallet-benchmarking-phase-2.md +- **Milestone:** 3 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| **0a.** | License |
  • [x]
| Apache 2.0 / GPLv3 / MIT / Unlicense | | +| **0b.** | Documentation |
  • [ ]
| [README](https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/README.md) | | +| **0c.** | Testing and Testing Guide |
  • [ ]
| N/A | Not provided | +| **0d.** | Docker |
  • [x]
| Not Applicable. | | +| 0e. | Article |
  • [ ]
| https://talenticaall-my.sharepoint.com/:w:/g/personal/nikhil_desai_talentica_com/ESEnZ3pFvdhHi4_8VLlQLWYBKEhAuUz5_ee5gSPnKYMSkw?e=zZmrMS | Not fully evaluated yet. | +| 1. | Pallet CPU-intensive extrinsic |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/pallets/template/src/lib.rs | Not fully evaluated yet. | +| 2. | Ink! CPU-intensive function |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/test/lib.rs | Not fully evaluated yet. | +| 3. | Solidity-WASM and Solidity-Native CPU-intensive function |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/solidity-sample-contract/sample.sol | Not fully evaluated yet. | +| 4. | CPU-intensive benchmarks |
  • [ ]
| https://talenticaall-my.sharepoint.com/:w:/g/personal/nikhil_desai_talentica_com/ESEnZ3pFvdhHi4_8VLlQLWYBKEhAuUz5_ee5gSPnKYMSkw?e=zZmrMS | Not fully evaluated yet. | +| 5. | Pallet cross-contract call |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/pallets/callee/src/lib.rs | Not fully evaluated yet. | +| 6. | Ink! cross-contract call |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/inner/lib.rs | Not fully evaluated yet. | +| 7. | cross-contract benchmarks |
  • [ ]
| https://talenticaall-my.sharepoint.com/:w:/g/personal/nikhil_desai_talentica_com/ESEnZ3pFvdhHi4_8VLlQLWYBKEhAuUz5_ee5gSPnKYMSkw?e=zZmrMS | Not fully evaluated yet. | +| 8. | Solidity-WASM and Solidity-Native cross-contract call |
  • [ ]
| Add another Solidity contract and invoke it from the sample Solidity contract. (Note: There are [unresolved issues](https://github.com/hyperledger/solang/issues/666) questioning the feasibility of cross-contract calls in Solidity-WASM and Solidity-Native. Nevertheless, an attempt will be made to see if it's possible. | | +| 9. | Pallet events |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/pallets/template/src/lib.rs | Not fully evaluated yet. | +| 10. | Ink! events |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/test/lib.rs | Not fully evaluated yet. | +| 11. | Solidity-WASM and Solidity-Native events |
  • [ ]
| https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking/blob/contracts-benchmarking/solidity-sample-contract/sample.sol | Not fully evaluated yet. | +| 12. | Benchmark events across implementations |
  • [ ]
| https://talenticaall-my.sharepoint.com/:w:/g/personal/nikhil_desai_talentica_com/ESEnZ3pFvdhHi4_8VLlQLWYBKEhAuUz5_ee5gSPnKYMSkw?e=zZmrMS | Not fully evaluated yet. | + +## Evaluation V1 + +### Testing + +It wasn't provided a testing Guide, so I followed the [demo video](https://talenticaall-my.sharepoint.com/:v:/g/personal/nikhil_desai_talentica_com/Ea_GbRhTgKBAr1bdCRsT1ZwBvIwtZZrm5Fhkom49lYTMUQ?e=kfU4b4), considering this as a testing guide. + +When I ran the command `./target/release/node-template benchmark extrinsic --list` in the branch contracts-benchmarking, I received this error: + +``` +user@localhost:~/Documents/ink-pallet-benchmarking/substrate-node-template-benchmarking$ ./target/release/node-template benchmark extrinsic --list +2023-07-12 08:59:50 🔨 Initializing Genesis block/state (state: 0x322d…79dd, header-hash: 0x9e7c…0f64) +2023-07-12 08:59:50 👴 Loading GRANDPA authority set from genesis on what appears to be first startup. + +==================== + +Version: 4.0.0-dev-4ada90b4ae0 + + 0: sp_panic_handler::set::{{closure}} + 1: as core::ops::function::Fn>::call + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/alloc/src/boxed.rs:2002:9 + std::panicking::rust_panic_with_hook + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:692:13 + 2: std::panicking::begin_panic_handler::{{closure}} + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:579:13 + 3: std::sys_common::backtrace::__rust_end_short_backtrace + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/sys_common/backtrace.rs:137:18 + 4: rust_begin_unwind + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:575:5 + 5: core::panicking::panic_fmt + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/panicking.rs:64:14 + 6: core::result::unwrap_failed + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/result.rs:1790:5 + 7: node_template::command::read_callee_contract_address + 8: node_template::command::run::{{closure}} + 9: node_template::command::run + 10: node_template::main + 11: std::sys_common::backtrace::__rust_begin_short_backtrace + 12: std::rt::lang_start::{{closure}} + 13: core::ops::function::impls:: for &F>::call_once + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/core/src/ops/function.rs:287:13 + std::panicking::try::do_call + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:483:40 + std::panicking::try + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:447:19 + std::panic::catch_unwind + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panic.rs:140:14 + std::rt::lang_start_internal::{{closure}} + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/rt.rs:148:48 + std::panicking::try::do_call + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:483:40 + std::panicking::try + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panicking.rs:447:19 + std::panic::catch_unwind + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/panic.rs:140:14 + std::rt::lang_start_internal + at /rustc/574b64a97f52162f965bc201e47f0af8279ca65d/library/std/src/rt.rs:148:20 + 14: main + 15: __libc_start_main + 16: _start + + +Thread 'main' panicked at 'failed to read 'callee_contract_address.txt': Os { code: 2, kind: NotFound, message: "No such file or directory" }', node/src/command.rs:21 + +This is a bug. Please report it at: + + support.anonymous.an +``` + +This problem prevented me to continue this part. + +I tested the branch solidity-native, and it worked without problems. + +``` +user@localhost:~/Documents/ink-pallet-benchmarking/asd/substrate-node-template-benchmarking$ ./target/release/frontier-template-node benchmark extrinsic --pallet native_solidity --extrinsic generic_call +2023-07-12 12:06:21 🔨 Initializing Genesis block/state (state: 0x52cf…b3cd, header-hash: 0x70e3…3ab1) +2023-07-12 12:06:21 👴 Loading GRANDPA authority set from genesis on what appears to be first startup. +2023-07-12 12:06:21 Essential task `basic-block-import-worker` failed. Shutting down service. +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +d43593c715fdd31c61141abd04a99fd6822c8558 +8a50db1e0f9452cfd91be8dc004ceb11cb08832f +9ac1762f00000000000000000000000000000000000000000000000000000000000003e8 +2023-07-12 12:06:21 Running 10 warmups... +2023-07-12 12:06:21 Executing block 100 times +2023-07-12 12:06:21 Building block, this takes some time... +2023-07-12 12:06:22 Extrinsics per block: 174 +2023-07-12 12:06:22 Running 10 warmups... +2023-07-12 12:06:22 Executing block 100 times +2023-07-12 12:06:24 Executing a native_solidity::generic_call extrinsic takes[ns]: +Total: 13875562 +Min: 133445, Max: 197207 +Average: 138755, Median: 136566, Stddev: 7439.89 +Percentiles 99th, 95th, 75th: 152960, 149610, 139231 +``` + +It was added some unit tests in this application? If it was, let me know how to run them properly. + +### Code Quality + +I ran `cargo clippy` in both repositories and received some warnings, for example, in contracts-benchmarking. It isn't mandatory to fix. + +``` +user@localhost:~/Documents/ink-pallet-benchmarking/substrate-node-template-benchmarking$ cargo clippy +warning: redundant field names in struct initialization + --> pallets/callee/src/lib.rs:53:44 + | +53 | Self::deposit_event(Event::NumChanged { old: old, new: value }); + | ^^^^^^^^ help: replace it with: `old` + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names + = note: `#[warn(clippy::redundant_field_names)]` on by default + +warning: unused import: `frame_support::inherent` + --> pallets/callee/src/lib.rs:12:6 + | +12 | use frame_support::inherent::*; + | ^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: `#[warn(unused_imports)]` on by default + +warning: `pallet-callee` (lib) generated 2 warnings (run `cargo clippy --fix --lib -p pallet-callee` to apply 1 suggestion) +warning: redundant field names in struct initialization + --> pallets/template/src/lib.rs:98:44 + | +98 | Self::deposit_event(Event::NumChanged { old: old, new: value }); + | ^^^^^^^^ help: replace it with: `old` + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names + = note: `#[warn(clippy::redundant_field_names)]` on by default + +warning: unused variable: `fib_n` + --> pallets/template/src/lib.rs:151:8 + | +151 | let fib_n = fib(n); + | ^^^^^ help: if this is intentional, prefix it with an underscore: `_fib_n` + | + = note: `#[warn(unused_variables)]` on by default + +warning: unused variable: `odd_product_n` + --> pallets/template/src/lib.rs:161:8 + | +161 | let odd_product_n = odd_prod(n); + | ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_odd_product_n` + +warning: unused variable: `triangle_number_n` + --> pallets/template/src/lib.rs:171:8 + | +171 | let triangle_number_n = triangle_num(n); + | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_triangle_number_n` + +warning: unused `std::result::Result` that must be used + --> pallets/template/src/lib.rs:189:4 + | +189 | pallet_callee::Pallet::::store_num(origin, value); + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: this `Result` may be an `Err` variant, which should be handled + = note: `#[warn(unused_must_use)]` on by default + +warning: `pallet-template` (lib) generated 5 warnings (run `cargo clippy --fix --lib -p pallet-template` to apply 4 suggestions) +``` diff --git a/evaluations/ink_analyzer_2_dsm-w3f.md b/evaluations/ink_analyzer_2_dsm-w3f.md new file mode 100644 index 000000000..89f50dfde --- /dev/null +++ b/evaluations/ink_analyzer_2_dsm-w3f.md @@ -0,0 +1,221 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ink-analyzer.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| **0a.** | License |
  • [x]
| [MIT](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-MIT) or [Apache 2.0](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-APACHE).| | +| **0b.** | Documentation |
  • [x]
| [Project README](https://github.com/ink-analyzer/ink-analyzer#readme) and [semantic analyzer (ink-analyzer) crate README](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer#readme) on GitHub, [semantic analyzer crate (ink-analyzer) rustdoc](https://docs.rs/ink-analyzer/latest/ink_analyzer/) documentation on docs.rs and extensive inline source documentation. | Not fully evaluated yet | +| **0c.** | Testing and Testing Guide |
  • [x]
| [Testing guide](https://github.com/ink-analyzer/ink-analyzer#testing).| | +| **0d.** | Docker |
  • [x]
| [Dockerfile](https://github.com/ink-analyzer/ink-analyzer/blob/master/Dockerfile).| +| 1. | Semantic Analyzer: Rust crate update: Code completion suggestions |
  • [x]
| [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [completions public interface](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L42-L45) and [completions module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/completions.rs). | | +| 2. | Semantic Analyzer: Rust crate update: Code/intent actions |
  • [x]
| [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [code/intent actions public interface](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L47-L50) and [code/intent actions module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/actions.rs). | | +| 3. | Semantic Analyzer: Rust crate update: Hover content |
  • [x]
| [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [hover content public interface](https://github.com/ink-analyzer/ink-analyzer/blob/master/crates/analyzer/src/analysis.rs#L52-L55) and [hover content module](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/analyzer/src/analysis/hover.rs).| +## Evaluation V2 + +The grantee provided more [explanations about the integration/system tests](https://github.com/w3f/Grant-Milestone-Delivery/pull/873#issuecomment-1569335266). They are adequate to check the current milestone delivery since are using complete contracts, performing some modifications on it and checking the expected results of the features. + +## Evaluation V1 + +### Unit Test + +All tests passed. + +``` +user@localhost:~/Documents/ink/ink-analyzer$ cargo test + Finished test [unoptimized + debuginfo] target(s) in 0.03s + Running unittests src/lib.rs (target/debug/deps/ink_analyzer-08b9db526fc0fcba) + +running 132 tests +test analysis::diagnostics::chain_extension::tests::missing_error_code_type_fails ... ok +test analysis::diagnostics::chain_extension::tests::invalid_quasi_direct_descendant_fails ... ok +... +test analysis::diagnostics::contract::tests::valid_quasi_direct_descendant_works ... ok +test analysis::diagnostics::contract::tests::root_items_in_root_works ... ok +test analysis::diagnostics::contract::tests::compound_diagnostic_works ... ok + +test result: ok. 132 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.39s + + Running tests/actions.rs (target/debug/deps/actions-87ccbb830e983b66) + +running 1 test +test actions_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.18s + + Running tests/completions.rs (target/debug/deps/completions-4364246353800349) + +running 1 test +test completions_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.11s + + Running tests/diagnostics.rs (target/debug/deps/diagnostics-3f082fd47f67edbc) + +running 1 test +test diagnostics_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.31s + + Running tests/hover.rs (target/debug/deps/hover-5dfddcd762c09d02) + +running 1 test +test hover_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.28s + + Running unittests src/lib.rs (target/debug/deps/ink_analyzer_ir-4b77cbb2b4bfe1e6) + +running 36 tests +test attrs::meta::separator::tests::cast_works ... ok +test attrs::meta::name::tests::cast_works ... ok +test ink_test::tests::cast_works ... ok +... +test ink_impl::tests::cast_works ... ok +test utils::tests::ink_impl_closest_descendants_works ... ok +test utils::tests::ink_callable_closest_descendants_works ... ok +test tree::item_at_offset::tests::parent_variants_works ... ok +test contract::tests::cast_works ... ok + +test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s + + Running unittests src/lib.rs (target/debug/deps/ink_analyzer_macro-5c2121d194ffa54f) + +running 13 tests +test from_ink_attribute::tests::struct_without_ink_attr_field_fails ... ok +test from_syntax::tests::struct_with_none_of_expected_fields_fails ... ok +test utils::tests::find_attribute_by_path_works ... ok +test utils::tests::parse_struct_fields_works ... ok +test utils::tests::contains_field_works ... ok +test from_ast::tests::struct_without_ast_field_fails ... ok +test utils::tests::find_field_works ... ok +test from_syntax::tests::struct_with_ink_attr_field_works ... ok +test from_syntax::tests::struct_with_ast_field_works ... ok +test from_syntax::tests::struct_with_syntax_field_works ... ok +test from_ast::tests::struct_with_ast_field_works ... ok +test from_ink_attribute::tests::struct_with_ink_attr_field_works ... ok +test from_ink_attribute::tests::optional_fields_works ... ok + +test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/test_utils-78a2957b71c23099) + +running 1 test +test tests::offset_at_variants_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests ink-analyzer + +running 1 test +test src/lib.rs - (line 7) ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s + + Doc-tests ink-analyzer-ir + +running 1 test +test src/lib.rs - (line 7) ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s + + Doc-tests ink-analyzer-macro + +running 4 tests +test src/lib.rs - from_syntax_derive (line 100) ... ok +test src/lib.rs - from_ast_derive (line 35) ... ok +test src/lib.rs - (line 6) ... ok +test src/lib.rs - from_ink_attribute_derive (line 70) ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s + + Doc-tests test_utils + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` + +I checked the coverage of these tests using `cargo tarpaulin`. It has good coverage. + +``` +May 30 07:48:26.316 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| crates/analyzer/src/analysis/actions.rs: 125/132 +|| crates/analyzer/src/analysis/completions.rs: 121/121 +|| crates/analyzer/src/analysis/diagnostics/chain_extension.rs: 66/69 +|| crates/analyzer/src/analysis/diagnostics/constructor.rs: 15/18 +|| crates/analyzer/src/analysis/diagnostics/contract.rs: 106/111 +|| crates/analyzer/src/analysis/diagnostics/event.rs: 30/33 +|| crates/analyzer/src/analysis/diagnostics/extension.rs: 8/9 +|| crates/analyzer/src/analysis/diagnostics/file.rs: 19/19 +|| crates/analyzer/src/analysis/diagnostics/ink_impl.rs: 83/90 +|| crates/analyzer/src/analysis/diagnostics/ink_test.rs: 4/5 +|| crates/analyzer/src/analysis/diagnostics/message.rs: 29/31 +|| crates/analyzer/src/analysis/diagnostics/storage.rs: 5/7 +|| crates/analyzer/src/analysis/diagnostics/storage_item.rs: 9/10 +|| crates/analyzer/src/analysis/diagnostics/topic.rs: 10/11 +|| crates/analyzer/src/analysis/diagnostics/trait_definition.rs: 38/39 +|| crates/analyzer/src/analysis/diagnostics/utils.rs: 330/375 +|| crates/analyzer/src/analysis/diagnostics.rs: 3/3 +|| crates/analyzer/src/analysis/hover/content.rs: 23/27 +|| crates/analyzer/src/analysis/hover.rs: 32/32 +|| crates/analyzer/src/analysis/utils.rs: 94/108 +|| crates/analyzer/src/analysis.rs: 10/11 +|| crates/analyzer/tests/test_data/contracts/erc20.rs: 0/4 +|| crates/analyzer/tests/test_data/trait_definitions/erc20_trait.rs: 0/4 +|| crates/analyzer/tests/utils/mod.rs: 2/2 +|| crates/ir/src/attrs/arg.rs: 57/58 +|| crates/ir/src/attrs/meta/name.rs: 7/7 +|| crates/ir/src/attrs/meta/option.rs: 12/34 +|| crates/ir/src/attrs/meta/separator.rs: 5/5 +|| crates/ir/src/attrs/meta/value.rs: 53/59 +|| crates/ir/src/attrs/meta.rs: 30/37 +|| crates/ir/src/attrs/utils.rs: 64/66 +|| crates/ir/src/attrs.rs: 59/63 +|| crates/ir/src/chain_extension.rs: 12/13 +|| crates/ir/src/constructor.rs: 2/2 +|| crates/ir/src/contract.rs: 18/18 +|| crates/ir/src/event.rs: 6/6 +|| crates/ir/src/extension.rs: 8/8 +|| crates/ir/src/file.rs: 18/18 +|| crates/ir/src/ink_impl.rs: 24/24 +|| crates/ir/src/ink_test.rs: 2/2 +|| crates/ir/src/iter.rs: 10/10 +|| crates/ir/src/message.rs: 2/2 +|| crates/ir/src/selector.rs: 54/65 +|| crates/ir/src/storage.rs: 2/2 +|| crates/ir/src/storage_item.rs: 4/4 +|| crates/ir/src/topic.rs: 2/2 +|| crates/ir/src/trait_definition.rs: 8/8 +|| crates/ir/src/traits/ast.rs: 4/4 +|| crates/ir/src/traits/ast_ext.rs: 6/6 +|| crates/ir/src/traits/callable.rs: 8/8 +|| crates/ir/src/traits/entity.rs: 4/4 +|| crates/ir/src/traits/from.rs: 2/2 +|| crates/ir/src/tree/ink_tree.rs: 11/19 +|| crates/ir/src/tree/item_at_offset.rs: 96/101 +|| crates/ir/src/utils.rs: 106/117 +|| crates/macro/src/from_ast.rs: 11/12 +|| crates/macro/src/from_ink_attribute.rs: 53/58 +|| crates/macro/src/from_syntax.rs: 20/20 +|| crates/macro/src/lib.rs: 0/5 +|| crates/macro/src/utils.rs: 15/21 +|| crates/test_utils/src/lib.rs: 24/24 +|| +90.66% coverage, 1981/2185 lines covered +``` + +Could you explain the public interface mentioned in the deliverables in this milestone? Could you provide system/integration tests for those interfaces? Could be a guide or automated tests with a contract example, expected inputs, and outputs to test these interfaces. + +### Code Quality + +I ran `cargo clippy` and received no warnings. +``` +user@localhost:~/Documents/ink/ink-analyzer$ cargo clippy + Finished dev [unoptimized + debuginfo] target(s) in 0.02s +``` diff --git a/evaluations/ink_analyzer_3_dastansam.md b/evaluations/ink_analyzer_3_dastansam.md new file mode 100644 index 000000000..06b1db0b8 --- /dev/null +++ b/evaluations/ink_analyzer_3_dastansam.md @@ -0,0 +1,533 @@ +- **Status:** Accepted +- **Application Document:** [ink! Analyzer](https://github.com/w3f/Grants-Program/blob/master/applications/ink-analyzer.md) +- **Milestone:** 3 +- **Kusama Identity:** [Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP](https://sub.id/Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP) +- **Previously successfully merged evaluation:** [Milestone 2](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/ink_analyzer_2_dsm-w3f.md) + +**Deliverables** + +| Number | Deliverable | Link | Notes | +|---------|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **0a.** | License | [MIT](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-MIT) or [Apache 2.0](https://github.com/ink-analyzer/ink-analyzer/blob/master/LICENSE-APACHE). | Correct licenses | +| **0b.** | Documentation | [Project README](https://github.com/ink-analyzer/ink-analyzer#readme), [language server (ink-lsp-server) crate README](https://github.com/ink-analyzer/ink-analyzer/tree/master/crates/lsp-server#readme) on GitHub (and [crates.io](https://crates.io/crates/ink-lsp-server)), [language server (ink-lsp-server) crate rustdoc](https://docs.rs/ink-lsp-server/latest/ink_lsp_server/) library documentation on docs.rs and extensive inline source documentation. | Extensive documentation. | +| **0c.** | Testing and Testing Guide | [Testing guide](https://github.com/ink-analyzer/ink-analyzer#testing). | Extensive unit tests and integration are provided. All tests are passing by running it with both native Rust and Docker image. | +| **0d.** | Docker | [Dockerfile](https://github.com/ink-analyzer/ink-analyzer/blob/master/Dockerfile). | Dockerfile builds and all tests are passing. | +| 1. | Language Server: Rust binary crate: ink! Language Server Protocol implementation | [GitHub repository](https://github.com/ink-analyzer/ink-analyzer), [Language server crate (ink-lsp-server)](https://crates.io/crates/ink-lsp-server). | Very well-written code, every piece code is commented and code coverage is high. The only non-critical issue is some warnings that clippy produces (logs attached below) | + +## General Notes + +The project is well documented and the code is almost flawless. Can't wait to see it in action after VSCode integration in the next milestone! + +### Outputs + +
+ Clippy + +```bash +warning: variables can be used directly in the `format!` string + --> crates/test-utils/src/lib.rs:28:36 + | +28 | lsp_types::Url::from_file_path(format!("/test_data/{}.rs", location)).unwrap() + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args + = note: `#[warn(clippy::uninlined_format_args)]` on by default +help: change this to + | +28 - lsp_types::Url::from_file_path(format!("/test_data/{}.rs", location)).unwrap() +28 + lsp_types::Url::from_file_path(format!("/test_data/{location}.rs")).unwrap() + | + +warning: `test-utils` (lib) generated 1 warning + Checking ink-analyzer-ir v0.7.0 (/Users/dastan@enjin.io/Documents/dastan/evaluations/ink-analyzer/crates/ir) + Checking ink-analyzer v0.6.1 (/Users/dastan@enjin.io/Documents/dastan/evaluations/ink-analyzer/crates/analyzer) +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/completions.rs:141:50 + | +141 | ... .retain(|macro_kind| format!("{}", macro_kind).starts_with(prefix)); + | ^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args + = note: `#[warn(clippy::uninlined_format_args)]` on by default +help: change this to + | +141 - .retain(|macro_kind| format!("{}", macro_kind).starts_with(prefix)); +141 + .retain(|macro_kind| format!("{macro_kind}").starts_with(prefix)); + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/completions.rs:311:48 + | +311 | ... .retain(|arg_kind| format!("{}", arg_kind).starts_with(prefix)); + | ^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +help: change this to + | +311 - .retain(|arg_kind| format!("{}", arg_kind).starts_with(prefix)); +311 + .retain(|arg_kind| format!("{arg_kind}").starts_with(prefix)); + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:131:25 + | +131 | format!("Unknown ink! attribute argument: '{}'.", arg_name_text) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +help: change this to + | +131 - format!("Unknown ink! attribute argument: '{}'.", arg_name_text) +131 + format!("Unknown ink! attribute argument: '{arg_name_text}'.") + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:148:42 + | +148 | ... message: format!("`{}` argument shouldn't have a value.", arg_name_text), + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +help: change this to + | +148 - message: format!("`{}` argument shouldn't have a value.", arg_name_text), +148 + message: format!("`{arg_name_text}` argument shouldn't have a value."), + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:220:42 + | +220 | ... message: format!( + | ________________________________^ +221 | | ... "`{}` argument should have a `boolean` (`bool`) value.", +222 | | ... arg_name_text +223 | | ... ), + | |_______________________^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:238:42 + | +238 | ... message: format!( + | ________________________________^ +239 | | ... "`{}` argument should have a `path` (e.g `my::env::Types`) value.", +240 | | ... arg_name_text +241 | | ... ), + | |_______________________^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:467:41 + | +467 | ... format!("`ink! {}`", arg_kind) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +help: change this to + | +467 - format!("`ink! {}`", arg_kind) +467 + format!("`ink! {arg_kind}`") + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:470:41 + | +470 | ... format!("`ink! {}`", macro_kind) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +help: change this to + | +470 - format!("`ink! {}`", macro_kind) +470 + format!("`ink! {macro_kind}`") + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:543:45 + | +543 | ... format!("argument `{}`", arg_kind,) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +help: change this to + | +543 - format!("argument `{}`", arg_kind,) +543 + format!("argument `{arg_kind}`",) + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/utils.rs:546:45 + | +546 | ... format!("macro `{}`", macro_kind) + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +help: change this to + | +546 - format!("macro `{}`", macro_kind) +546 + format!("macro `{macro_kind}`") + | + +warning: variables can be used directly in the `format!` string + --> crates/analyzer/src/analysis/diagnostics/event.rs:95:42 + | +95 | ... message: format!( + | ________________________________^ +96 | | ... "`{}` attributes on event fields are not supported.", +97 | | ... attr +98 | | ... ), + | |_______________________^ + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#uninlined_format_args +``` + +
+ +
+ + Unit and integration tests + +```bash +running 132 tests +test analysis::diagnostics::chain_extension::tests::invalid_quasi_direct_descendant_fails ... ok +test analysis::actions::tests::ast_item_actions_works ... ok +test analysis::diagnostics::chain_extension::tests::invalid_trait_properties_fails ... ok +test analysis::diagnostics::chain_extension::tests::missing_error_code_type_fails ... ok +test analysis::completions::tests::macro_completions_works ... ok +test analysis::diagnostics::chain_extension::tests::multiple_error_code_types_fails ... ok +test analysis::diagnostics::chain_extension::tests::overlapping_ids_fails ... ok +test analysis::completions::tests::argument_completions_works ... ok +test analysis::actions::tests::ink_attribute_actions_works ... ok +test analysis::diagnostics::chain_extension::tests::one_error_code_type_works ... ok +test analysis::diagnostics::constructor::tests::ink_descendants_fails ... ok +test analysis::diagnostics::constructor::tests::missing_return_type_fails ... ok +test analysis::diagnostics::chain_extension::tests::valid_trait_properties_works ... ok +test analysis::diagnostics::constructor::tests::invalid_callable_fails ... ok +test analysis::diagnostics::chain_extension::tests::valid_quasi_direct_descendant_works ... ok +test analysis::diagnostics::chain_extension::tests::invalid_trait_items_fails ... ok +test analysis::diagnostics::chain_extension::tests::non_overlapping_ids_works ... ok +test analysis::diagnostics::contract::tests::attribute_in_mod_body_fails ... ok +test analysis::diagnostics::constructor::tests::self_receiver_fails ... ok +test analysis::diagnostics::chain_extension::tests::valid_trait_items_works ... ok +test analysis::diagnostics::chain_extension::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::contract::tests::invalid_quasi_direct_descendant_fails ... ok +test analysis::diagnostics::contract::tests::missing_constructor_fails ... ok +test analysis::diagnostics::contract::tests::missing_message_fails ... ok +test analysis::diagnostics::contract::tests::missing_storage_fails ... ok +test analysis::diagnostics::contract::tests::multiple_storage_items_fails ... ok +test analysis::diagnostics::contract::tests::multiple_wildcard_selectors_fails ... ok +test analysis::diagnostics::contract::tests::non_impl_parent_for_callables_fails ... ok +test analysis::diagnostics::contract::tests::non_mod_fails ... ok +test analysis::diagnostics::constructor::tests::valid_callable_works ... ok +test analysis::diagnostics::constructor::tests::no_self_receiver_works ... ok +test analysis::diagnostics::constructor::tests::no_ink_descendants_works ... ok +test analysis::diagnostics::constructor::tests::return_type_works ... ok +test analysis::actions::tests::is_focused_on_ast_item_declaration_works ... ok +test analysis::diagnostics::contract::tests::out_of_line_mod_fails ... ok +test analysis::diagnostics::constructor::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::contract::tests::overlapping_selectors_fails ... ok +test analysis::diagnostics::contract::tests::root_items_not_in_root_fails ... ok +test analysis::diagnostics::contract::tests::one_or_multiple_constructors_works ... ok +test analysis::diagnostics::event::tests::cfg_field_fails ... ok +test analysis::diagnostics::contract::tests::impl_parent_for_callables_works ... ok +test analysis::diagnostics::event::tests::contract_parent_works ... ok +test analysis::diagnostics::event::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::event::tests::ink_topic_field_works ... ok +test analysis::diagnostics::event::tests::non_contract_parent_fails ... ok +test analysis::diagnostics::event::tests::non_cfg_field_works ... ok +test analysis::diagnostics::event::tests::non_pub_struct_fails ... ok +test analysis::diagnostics::event::tests::non_topic_ink_field_fails ... ok +test analysis::diagnostics::event::tests::struct_with_generics_fails ... ok +test analysis::diagnostics::event::tests::pub_struct_works ... ok +test analysis::diagnostics::event::tests::struct_with_no_generics_works ... ok +test analysis::diagnostics::extension::tests::ink_descendants_fails ... ok +test analysis::diagnostics::extension::tests::invalid_method_fails ... ok +test analysis::diagnostics::contract::tests::one_or_no_wildcard_selectors_works ... ok +test analysis::diagnostics::extension::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::extension::tests::no_ink_descendants_works ... ok +test analysis::diagnostics::extension::tests::self_receiver_fails ... ok +test analysis::diagnostics::file::tests::invalid_quasi_direct_descendant_fails ... ok +test analysis::diagnostics::file::tests::multiple_contract_definitions_fails ... ok +test analysis::diagnostics::file::tests::no_contract_definitions_works ... ok +test analysis::diagnostics::file::tests::one_contract_definition_works ... ok +test analysis::diagnostics::file::tests::valid_quasi_direct_descendant_works ... ok +test analysis::diagnostics::extension::tests::no_self_receiver_works ... ok +test analysis::diagnostics::extension::tests::valid_method_works ... ok +test analysis::diagnostics::contract::tests::non_overlapping_selectors_works ... ok +test analysis::diagnostics::contract::tests::inline_mod_works ... ok +test analysis::diagnostics::contract::tests::one_or_multiple_messages_works ... ok +test analysis::diagnostics::ink_impl::tests::invalid_quasi_direct_descendant_fails ... ok +test analysis::diagnostics::ink_impl::tests::missing_annotation_and_no_callables_fails ... ok +test analysis::diagnostics::ink_impl::tests::invalid_impl_properties_fails ... ok +test analysis::diagnostics::ink_impl::tests::non_impl_fails ... ok +test analysis::diagnostics::ink_impl::tests::non_impl_parent_for_callables_fails ... ok +test analysis::diagnostics::contract::tests::valid_quasi_direct_descendant_works ... ok +test analysis::diagnostics::ink_test::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::ink_test::tests::fn_works ... ok +test analysis::diagnostics::ink_test::tests::ink_descendants_fails ... ok +test analysis::diagnostics::ink_test::tests::no_ink_descendants_works ... ok +test analysis::diagnostics::ink_test::tests::non_fn_fails ... ok +test analysis::diagnostics::contract::tests::one_storage_item_works ... ok +test analysis::diagnostics::message::tests::ink_descendants_fails ... ok +test analysis::diagnostics::ink_impl::tests::annotated_or_contains_callables_works ... ok +test analysis::diagnostics::message::tests::invalid_callable_fails ... ok +test analysis::diagnostics::message::tests::non_self_ref_receiver_fails ... ok +test analysis::diagnostics::ink_impl::tests::impl_works ... ok +test analysis::diagnostics::ink_impl::tests::impl_parent_for_callables_works ... ok +test analysis::diagnostics::message::tests::self_return_type_fails ... ok +test analysis::diagnostics::ink_impl::tests::valid_impl_properties_works ... ok +test analysis::diagnostics::storage::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::storage::tests::contract_parent_works ... ok +test analysis::diagnostics::storage::tests::ink_descendants_fails ... ok +test analysis::diagnostics::storage::tests::no_ink_descendants_works ... ok +test analysis::diagnostics::storage::tests::non_contract_parent_fails ... ok +test analysis::diagnostics::storage::tests::non_pub_struct_fails ... ok +test analysis::diagnostics::storage::tests::pub_struct_works ... ok +test analysis::diagnostics::storage_item::tests::adt_works ... ok +test analysis::diagnostics::storage_item::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::storage_item::tests::ink_descendants_fails ... ok +test analysis::diagnostics::storage_item::tests::no_ink_descendants_works ... ok +test analysis::diagnostics::storage_item::tests::non_adt_fails ... ok +test analysis::diagnostics::topic::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::topic::tests::non_struct_field_fails ... ok +test analysis::diagnostics::topic::tests::struct_field_works ... ok +test analysis::diagnostics::ink_impl::tests::valid_quasi_direct_descendant_works ... ok +test analysis::diagnostics::trait_definition::tests::invalid_quasi_direct_descendant_fails ... ok +test analysis::diagnostics::trait_definition::tests::invalid_trait_items_fails ... ok +test analysis::diagnostics::trait_definition::tests::invalid_trait_properties_fails ... ok +test analysis::diagnostics::trait_definition::tests::missing_message_fails ... ok +test analysis::diagnostics::trait_definition::tests::multiple_messages_works ... ok +test analysis::diagnostics::trait_definition::tests::one_message_works ... ok +test analysis::diagnostics::message::tests::non_self_return_type_works ... ok +test analysis::diagnostics::trait_definition::tests::valid_quasi_direct_descendant_works ... ok +test analysis::diagnostics::message::tests::valid_callable_works ... ok +test analysis::diagnostics::message::tests::self_ref_receiver_works ... ok +test analysis::diagnostics::trait_definition::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::utils::tests::duplicate_attributes_and_arguments_fails ... ok +test analysis::diagnostics::utils::tests::identifiers_not_prefixed_with_ink_works ... ok +test analysis::diagnostics::utils::tests::identifiers_prefixed_with_ink_fails ... ok +test analysis::diagnostics::utils::tests::conflicting_attributes_and_arguments_fails ... ok +test analysis::diagnostics::utils::tests::invalid_attribute_argument_format_and_value_type_fails ... ok +test analysis::diagnostics::utils::tests::known_ink_attributes_works ... ok +test analysis::diagnostics::utils::tests::unknown_ink_attributes_fails ... ok +test analysis::diagnostics::utils::tests::no_conflicting_attributes_and_arguments_works ... ok +test analysis::diagnostics::message::tests::no_ink_descendants_works ... ok +test analysis::diagnostics::utils::tests::no_duplicate_attributes_and_arguments_works ... ok +test analysis::diagnostics::utils::tests::valid_attribute_argument_format_and_value_type_works ... ok +test analysis::hover::tests::hover_works ... ok +test analysis::diagnostics::trait_definition::tests::valid_trait_properties_works ... ok +test analysis::diagnostics::message::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::trait_definition::tests::valid_trait_items_works ... ok +test analysis::diagnostics::ink_impl::tests::compound_diagnostic_works ... ok +test analysis::diagnostics::contract::tests::root_items_in_root_works ... ok +test analysis::diagnostics::contract::tests::compound_diagnostic_works ... ok + +test result: ok. 132 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.54s + + Running tests/actions.rs (target/debug/deps/actions-9b69adca190e239e) + +running 1 test +test actions_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.30s + + Running tests/completions.rs (target/debug/deps/completions-2fb385d575cb34b0) + +running 1 test +test completions_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.19s + + Running tests/diagnostics.rs (target/debug/deps/diagnostics-35a69d5da649290e) + +running 1 test +test diagnostics_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.56s + + Running tests/hover.rs (target/debug/deps/hover-78b56127e91559bc) + +running 1 test +test hover_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.42s + + Running unittests src/lib.rs (target/debug/deps/ink_analyzer_ir-8d6ce456156f44e8) + +running 36 tests +test attrs::meta::separator::tests::cast_works ... ok +test attrs::meta::name::tests::cast_works ... ok +test chain_extension::tests::cast_works ... ok +test event::tests::cast_works ... ok +test attrs::utils::tests::parse_ink_args_works ... ok +test attrs::meta::value::tests::cast_works ... ok +test attrs::utils::tests::sort_ink_args_works ... ok +test ink_test::tests::cast_works ... ok +test extension::tests::cast_works ... ok +test file::tests::parse_works ... ok +test constructor::tests::cast_works ... ok +test selector::tests::cast_arg_works ... ok +test storage::tests::cast_works ... ok +test attrs::tests::cast_ink_attribute_works ... ok +test topic::tests::cast_works ... ok +test storage_item::tests::cast_works ... ok +test trait_definition::tests::cast_works ... ok +test tree::ast_ext::tests::parent_ast_item_works ... ok +test message::tests::cast_works ... ok +test tree::item_at_offset::tests::probable_and_normalized_parent_variants_works ... ok +test tree::utils::tests::ink_args_works ... ok +test tree::utils::tests::ink_attrs_ancestors_works ... ok +test tree::utils::tests::ink_arg_by_kind_works ... ok +test ink_impl::tests::cast_works ... ok +test tree::utils::tests::ink_attrs_closest_ancestors_works ... ok +test tree::utils::tests::ink_attrs_closest_descendants_works ... ok +test tree::utils::tests::ink_attrs_in_scope_works ... ok +test tree::utils::tests::ink_attrs_descendants_works ... ok +test tree::item_at_offset::tests::prev_and_next_token_variants_works ... ok +test tree::item_at_offset::tests::focused_token_and_affixes_works ... ok +test tree::utils::tests::ink_attrs_works ... ok +test selector::tests::compose_works ... ok +test tree::item_at_offset::tests::parent_variants_works ... ok +test tree::utils::tests::ink_impl_closest_descendants_works ... ok +test tree::utils::tests::ink_callable_closest_descendants_works ... ok +test contract::tests::cast_works ... ok + +test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s + + Running unittests src/lib.rs (target/debug/deps/ink_analyzer_macro-fb4c468f082713c0) + +running 13 tests +test from_ink_attribute::tests::struct_without_ink_attr_field_fails ... ok +test from_syntax::tests::struct_with_none_of_expected_fields_fails ... ok +test from_ast::tests::struct_without_ast_field_fails ... ok +test utils::tests::contains_field_works ... ok +test utils::tests::find_attribute_by_path_works ... ok +test from_syntax::tests::struct_with_syntax_field_works ... ok +test from_syntax::tests::struct_with_ast_field_works ... ok +test utils::tests::find_field_works ... ok +test from_ast::tests::struct_with_ast_field_works ... ok +test utils::tests::parse_struct_fields_works ... ok +test from_syntax::tests::struct_with_ink_attr_field_works ... ok +test from_ink_attribute::tests::struct_with_ink_attr_field_works ... ok +test from_ink_attribute::tests::optional_fields_works ... ok + +test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/lib.rs (target/debug/deps/ink_lsp_server-24199617d9fb7881) + +running 17 tests +test dispatch::handlers::notification::tests::handle_did_change_text_document_works ... ok +test dispatch::handlers::notification::tests::handle_did_close_text_document_works ... ok +test dispatch::handlers::notification::tests::handle_did_open_text_document_works ... ok +test initialize::tests::server_capabilities_works ... ok +test memory::tests::memory_works ... ok +test initialize::tests::initialize_works ... ok +test dispatch::routers::notification::tests::request_router_works ... ok +test dispatch::routers::request::tests::request_router_works ... ok +test dispatch::handlers::request::tests::handle_completion_works ... ok +test translator::from_lsp::tests::offset_works ... ok +test translator::to_lsp::tests::position_works ... ok +test dispatch::actions::tests::publish_diagnostics_works ... ok +test dispatch::handlers::request::tests::handle_hover_works ... ok +test dispatch::handlers::request::tests::handle_code_action_works ... ok +test utils::tests::code_actions_kinds_works ... ok +test utils::tests::position_encoding_works ... ok +test dispatch::tests::main_loop_and_dispatcher_works ... ok + +test result: ok. 17 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/main.rs (target/debug/deps/ink_lsp_server-9baae7124d812d8b) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running tests/actions.rs (target/debug/deps/actions-a68334fdf55e473c) + +running 1 test +test actions_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.47s + + Running tests/completions.rs (target/debug/deps/completions-7a5efa8c88c2963e) + +running 1 test +test completions_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 6.81s + + Running tests/diagnostics.rs (target/debug/deps/diagnostics-76f62205e26b96d8) + +running 1 test +test diagnostics_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.55s + + Running tests/hover.rs (target/debug/deps/hover-ce02a6d2c267a066) + +running 1 test +test hover_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.72s + + Running unittests src/lib.rs (target/debug/deps/test_utils-fc1fbe74d610e4ef) + +running 1 test +test tests::offset_at_variants_works ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests ink-analyzer + +running 1 test +test src/lib.rs - (line 7) ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.33s + + Doc-tests ink-analyzer-ir + +running 1 test +test src/lib.rs - (line 7) ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s + + Doc-tests ink-analyzer-macro + +running 4 tests +test src/lib.rs - from_ink_attribute_derive (line 70) ... ok +test src/lib.rs - from_ast_derive (line 35) ... ok +test src/lib.rs - (line 6) ... ok +test src/lib.rs - from_syntax_derive (line 100) ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.91s + + Doc-tests ink-lsp-server + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests test-utils + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` +
+ +
+ +Docker + +```bash +> docker build -t ink-analyzer . + + => exporting to image 0.0s + => => exporting layers 0.0s + => => writing image sha256:f64cf8672748a96a6258864e5f85fb6d27b0c0c131fd1ae6c601934028801c6a 0.0s + => => naming to docker.io/library/ink-analyzer +``` + +
\ No newline at end of file diff --git a/evaluations/ismp_1_dsm-w3f.md b/evaluations/ismp_1_dsm-w3f.md new file mode 100644 index 000000000..5cd068002 --- /dev/null +++ b/evaluations/ismp_1_dsm-w3f.md @@ -0,0 +1,143 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ismp.md +- **Milestone:** 1 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/LICENSE](https://github.com/polytope-labs/ismp-rs/blob/main/LICENSE)| | +| 0b. | Documentation |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/README.md](https://github.com/polytope-labs/ismp-rs/blob/main/README.md)| | +| 0c. | Testing and Testing Guide |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/tree/main/ismp-testsuite](https://github.com/polytope-labs/ismp-rs/tree/main/ismp-testsuite)| | +| 0d. | Docker |
  • [x]
|[https://github.com/polytope-labs/ismp-rs#run-test-in-docker](https://github.com/polytope-labs/ismp-rs#run-test-in-docker)| | +| 0e. | Article |
  • [x]
| TBA | Shared and evaluated in private | +| 0f. | ISMP Specification |
  • [x]
|[https://github.com/polytope-labs/ismp](https://github.com/polytope-labs/ismp)| | +| 1 | `ismp-rs` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs](https://github.com/polytope-labs/ismp-rs)| | +| 1a. | `ISMPHOST` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/host.rs#L37](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/host.rs#L37)| | +| 1b. | `ISMPRouter` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/router.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/router.rs)| | +| 1c. | `ISMPModule` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/module.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/module.rs)| | +| 1d. | `ConsensusClient` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L91](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L91)| | +| | Request/Response proof verification |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L123](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/consensus.rs#L123)| | +| | Request Timeout verification |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/messaging.rs#L160](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/messaging.rs#L160)| | +| 1e. | Handlers |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers.rs)| | +| | `CreateConsensusClient` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L91](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L91)| | +| | `ConsensusMessage` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L28](https://github.com/polytope-labs/ismp-rs/blob/1932c2c45f7c6ff104dd27b87aa06769739697fb/ismp/src/handlers/consensus.rs#L28)| | +| | `RequestMessage` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/request.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/request.rs)| | +| | `ResponseMessage` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/response.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/response.rs)| | +| | `TimeoutMessage` |
  • [x]
|[https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/timeout.rs](https://github.com/polytope-labs/ismp-rs/blob/main/ismp/src/handlers/timeout.rs)| | + +## Evaluation V3 + +I finished the evaluation of this milestone by using the software provided with the pallets and infrastructure delivered in M2. + +## Evaluation V2 + +### Documentation + +It was add the instructions to run without docker. + +### Testing + +The tests returned better coverage. It is possible to improve even more but it isn't mandatory. + +``` +running 5 tests +test tests::should_reject_expired_check_clients ... ok +test tests::should_reject_updates_within_challenge_period ... ok +test tests::should_reject_messages_for_frozen_state_machines ... ok +test tests::dispatcher_should_write_receipts_for_outgoing_requests_and_responses ... ok +test tests::should_process_timeouts_correctly ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + +Jun 13 07:15:27.209 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| ismp/src/consensus.rs: 2/2 +|| ismp/src/handlers/consensus.rs: 12/51 +|| ismp/src/handlers/request.rs: 3/30 +|| ismp/src/handlers/response.rs: 3/61 +|| ismp/src/handlers/timeout.rs: 27/73 +|| ismp/src/handlers.rs: 21/23 +|| ismp/src/host.rs: 10/32 +|| ismp/src/messaging.rs: 3/25 +|| ismp/src/router.rs: 19/65 +|| ismp/src/util.rs: 33/49 +|| ismp-testsuite/src/lib.rs: 128/134 +|| ismp-testsuite/src/mocks.rs: 87/132 +|| +51.40% coverage, 348/677 lines covered +``` + +I will use Milestone 2 deliverables to verify the proper behavior of the Milestone 1 deliverables. + +## Evaluation V1 + +### Documentation + +Please create a new branch for the evaluation of the milestone to prevent new commits during the evaluation. + +It would be nice if the documentation have the prerequisites and instructions to run without docker. + +### Testing + +All tests passed, using docker or without. + +``` +user@localhost:~/Documents/ismp/ismp-rs$ cargo test --release --manifest-path=./ismp-testsuite/Cargo.toml + Finished release [optimized] target(s) in 0.13s + Running unittests src/lib.rs (target/release/deps/ismp_testsuite-1a79e0ff70273bfb) + +running 5 tests +test tests::dispatcher_should_write_receipts_for_outgoing_requests_and_responses ... ok +test tests::should_reject_expired_check_clients ... ok +test tests::should_process_timeouts_correctly ... ok +test tests::should_reject_updates_within_challenge_period ... ok +test tests::should_reject_messages_for_frozen_state_machines ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests ismp-testsuite + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` + +I ran `cargo tarpaulin` to check the test coverage. + +``` +Jun 06 08:23:55.976 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| ismp/src/consensus.rs: 0/2 +|| ismp/src/handlers/consensus.rs: 6/51 +|| ismp/src/handlers/request.rs: 2/17 +|| ismp/src/handlers/response.rs: 2/39 +|| ismp/src/handlers/timeout.rs: 18/51 +|| ismp/src/handlers.rs: 16/23 +|| ismp/src/host.rs: 6/25 +|| ismp/src/messaging.rs: 0/16 +|| ismp/src/router.rs: 2/31 +|| ismp/src/util.rs: 12/49 +|| ismp-testsuite/src/lib.rs: 83/118 +|| ismp-testsuite/src/mocks.rs: 68/128 +|| +39.09% coverage, 215/550 lines covered +``` + +The tests coverage isn't good and can be improved. + +### Article + +The article was not provided. + +### Code Quality + +I ran `cargo clippy` and received no warnings. + +``` +user@localhost:~/Documents/ismp/ismp-rs$ cargo clippy + Finished dev [unoptimized + debuginfo] target(s) in 0.13s +``` diff --git a/evaluations/ismp_2_dsm-w3f.md b/evaluations/ismp_2_dsm-w3f.md new file mode 100644 index 000000000..53a49c999 --- /dev/null +++ b/evaluations/ismp_2_dsm-w3f.md @@ -0,0 +1,404 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ismp.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/main/LICENSE](https://github.com/polytope-labs/substrate-ismp/blob/main/LICENSE)| | +| 0b. | Documentation |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/main/README.md](https://github.com/polytope-labs/substrate-ismp/blob/main/README.md)| | +| 0c. | Testing and Testing Guide |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/tests.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/tests.rs)| | +| 0d. | Docker |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp#run-test-in-docker](https://github.com/polytope-labs/substrate-ismp#run-test-in-docker)| | +| 0e. | Article|
  • [x]
| TBA | Shared and evaluated in private | +| 1. | pallet-ismp |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp](https://github.com/polytope-labs/substrate-ismp)| | +| 1a. | Host |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/host.rs#L48](https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/host.rs#L48)| | +| 1b. | Router |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/dispatcher.rs#L48](https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/pallet-ismp/src/dispatcher.rs#L48)| | +| 1c. | `ParachainConsensusClient` |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/parachain/src/consensus.rs#L115](https://github.com/polytope-labs/substrate-ismp/blob/88c262e3d10c6d74ce0ae29bc2d50b000ab0f7be/parachain/src/consensus.rs#L115)| | +| 1d. | RPC |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/rpc/src/lib.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/rpc/src/lib.rs)| | +| 1e. | Runtime-APIs |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/runtime-api/src/lib.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/runtime-api/src/lib.rs)| | +| 1f. | Bechmarks |
  • [x]
|[https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/benchmarking.rs](https://github.com/polytope-labs/substrate-ismp/blob/main/pallet-ismp/src/benchmarking.rs)| | + +## Evaluation V5 + +### Article + +It was shared in private. + +### Test + +I set up the parachains and relay chain with the polkadot-launch and tried to run the tests with `RUSTFLAGS="-C link-args=-Wl,--allow-multiple-definition" cargo test`, it ignored two tests, and two tests passed. + +``` +running 1 test +test config::tests::serialize ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + +running 2 tests +test test_messaging_relay ... ignored +[2023-07-11T12:27:52Z INFO tesseract] 🛰 Starting messaging relay +[2023-07-11T12:28:18Z INFO tesseract] Events from KUSAMA-2000 [Request { dest_chain: Kusama(2001), source_chain: Kusama(2000), request_nonce: 2 }] +[2023-07-11T12:28:18Z INFO tesseract] 🛰Submitting ismp messages from KUSAMA-2000 to KUSAMA-2001 +test test_parachain_parachain_messaging_relay has been running for over 60 seconds +[2023-07-11T12:29:18Z INFO tesseract] Events from KUSAMA-2001 [Request { dest_chain: Kusama(2000), source_chain: Kusama(2001), request_nonce: 1 }] +[2023-07-11T12:29:18Z INFO tesseract] Latest update StateMachineUpdated { state_machine_id: StateMachineId { state_id: Kusama(2001), consensus_client: [80, 65, 82, 65] }, latest_height: 158 } +[2023-07-11T12:29:18Z INFO tesseract] 🛰Submitting ismp messages from KUSAMA-2001 to KUSAMA-2000 +[2023-07-11T12:30:06Z INFO tesseract] Events from KUSAMA-2000 [Request { dest_chain: Kusama(2001), source_chain: Kusama(2000), request_nonce: 3 }] +[2023-07-11T12:30:06Z INFO tesseract] 🛰Submitting GET response messages to KUSAMA-2000 +test test_parachain_parachain_messaging_relay ... ok + +test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 146.41s + + Running unittests src/lib.rs (target/debug/deps/tesseract_messaging-c326ab0f1e5ce648) +running 1 test +test parachain/src/codegen/relay_chain.rs - codegen::relay_chain::api::transaction_payment::constants::ConstantsApi::operational_fee_multiplier (line 5282) ... ignored + +test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` + +## Evaluation V4 + +### Test + +To configure the system, I ran the polkadot-lauch, after that, I ran the docker provided. I was able to use the ismpDemo pallet to transfer some balance from Parachain 2001 to 2000 and request the timestamp. The docker registered these actions in the log. + +I also tried, without success, to run the tests from tesserac inside the docker container, using the tesserac-blake2b and the tesserac-main. + +Using `docker exec -it container_id /bin/bash` and running the tests: +``` += note: ld: error: duplicate symbol: memory32_grow + >>> defined at wasmtime_runtime.f727c6301590d743-cgu.12 + >>> wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.f727c6301590d743-cgu.12.rcgu.o:(memory32_grow) in archive /builds/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib + >>> defined at wasmtime_runtime.cbb1d63ff2563d91-cgu.3 + >>> wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.cbb1d63ff2563d91-cgu.3.rcgu.o:(.text+0x0) in archive /builds/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib + + ld: error: duplicate symbol: table_copy + >>> defined at wasmtime_runtime.f727c6301590d743-cgu.12 + >>> wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.f727c6301590d743-cgu.12.rcgu.o:(table_copy) in archive /builds/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib + >>> defined at wasmtime_runtime.cbb1d63ff2563d91-cgu.3 + >>> wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.cbb1d63ff2563d91-cgu.3.rcgu.o:(.text+0x20) in archive /builds/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib + . + . + . + ld: error: duplicate symbol: externref_global_set + >>> defined at wasmtime_runtime.f727c6301590d743-cgu.12 + >>> wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.f727c6301590d743-cgu.12.rcgu.o:(externref_global_set) in archive /builds/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib + >>> defined at wasmtime_runtime.cbb1d63ff2563d91-cgu.3 + >>> wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.cbb1d63ff2563d91-cgu.3.rcgu.o:(.text+0x220) in archive /builds/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib + + ld: error: duplicate symbol: memory_atomic_notify + >>> defined at wasmtime_runtime.f727c6301590d743-cgu.12 + >>> wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.f727c6301590d743-cgu.12.rcgu.o:(memory_atomic_notify) in archive /builds/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib + >>> defined at wasmtime_runtime.cbb1d63ff2563d91-cgu.3 + >>> wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.cbb1d63ff2563d91-cgu.3.rcgu.o:(.text+0x240) in archive /builds/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib + + ld: error: duplicate symbol: memory_atomic_wait32 + >>> defined at wasmtime_runtime.f727c6301590d743-cgu.12 + >>> wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.f727c6301590d743-cgu.12.rcgu.o:(memory_atomic_wait32) in archive /builds/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib + >>> defined at wasmtime_runtime.cbb1d63ff2563d91-cgu.3 + >>> wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.cbb1d63ff2563d91-cgu.3.rcgu.o:(.text+0x260) in archive /builds/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib + + ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) + clang: error: linker command failed with exit code 1 (use -v to see invocation) + + +error: could not compile `tesseract-integration-tests` (lib test) due to previous error +``` + +Running the test in tesseract-main and tesseract-blake2b: +``` + . + . + . + /usr/bin/ld: /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib(wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.ad68ba448d2d484b-cgu.4.rcgu.o): in function `out_of_gas': + wasmtime_runtime.ad68ba448d2d484b-cgu.4:(.text+0x2a0): multiple definition of `out_of_gas'; /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib(wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.782be41ea348b988-cgu.15.rcgu.o):wasmtime_runtime.782be41ea348b988-cgu.15:(.text+0x2a0): first defined here + /usr/bin/ld: /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib(wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.ad68ba448d2d484b-cgu.4.rcgu.o): in function `new_epoch': + wasmtime_runtime.ad68ba448d2d484b-cgu.4:(.text+0x2c0): multiple definition of `new_epoch'; /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib(wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.782be41ea348b988-cgu.15.rcgu.o):wasmtime_runtime.782be41ea348b988-cgu.15:(.text+0x2c0): first defined here + /usr/bin/ld: /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib(wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.ad68ba448d2d484b-cgu.7.rcgu.o): in function `wasm_to_host_trampoline': + wasmtime_runtime.ad68ba448d2d484b-cgu.7:(.text+0x0): multiple definition of `wasm_to_host_trampoline'; /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib(wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.782be41ea348b988-cgu.3.rcgu.o):wasmtime_runtime.782be41ea348b988-cgu.3:(.text+0x0): first defined here + /usr/bin/ld: /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-02e91c626dd0510d.rlib(wasmtime_runtime-02e91c626dd0510d.wasmtime_runtime.ad68ba448d2d484b-cgu.7.rcgu.o): in function `host_to_wasm_trampoline': + wasmtime_runtime.ad68ba448d2d484b-cgu.7:(.text+0x20): multiple definition of `host_to_wasm_trampoline'; /home/user/Documents/ismp/tesseract-main/target/debug/deps/libwasmtime_runtime-2ecb720b7671101e.rlib(wasmtime_runtime-2ecb720b7671101e.wasmtime_runtime.782be41ea348b988-cgu.3.rcgu.o):wasmtime_runtime.782be41ea348b988-cgu.3:(.text+0x20): first defined here + collect2: error: ld returned 1 exit status + +error: could not compile `tesseract-integration-tests` (lib test) due to previous error +``` + +## Evaluation V3 + +While running [these instructions for integration test](https://github.com/polytope-labs/tesseract/tree/blake2b#integration-test-guide) (private repo) I had some problems: + +In Step 3, to spin-up the network, I used the polkadot-lauch specification from [here](https://github.com/polytope-labs/hyperbridge/tree/blake2b/scripts/polkadot-launch) to spin-up the parachains, but the script was not able to run the relaychain. I tried first starting manually Polkadot version 0.9.43 but this caused a problem with the metadata version in the step 4 of the tutorial, see the error below. + +``` +subxt codegen --url=ws://localhost:9944 | rustfmt --edition=2018 --emit=stdout > /home/user/workspace/tesseract-blake2b/parachain/src/codegen/relay_chain.rs +error: unknown start of token: \u{1b} + --> :1:1 + | +1 | Could not decode metadata, only V14 metadata is supported: Cannot try_into() to Metadata: unsupported metadata version + | ^ + +error: unknown start of token: \u{1b} + --> :1:124 + | +1 | Could not decode metadata, only V14 metadata is supported: Cannot try_into() to Metadata: unsupported metadata version + | ^ + +error: this file contains an unclosed delimiter + --> :1:130 + | +1 | Could not decode metadata, only V14 metadata is supported: Cannot try_into() to Metadata: unsupported metadata version + | - - ^ + | | | + | unclosed delimiter unclosed delimiter +``` + +Then I changed to version 0.9.42 and the metadata problem was solved, being able to run `subxt codegen`. However, in step 5, there are some compilation errors in the code generated in step 4. See below: + +``` +error[E0405]: cannot find trait `StaticExtrinsic` in module `subxt::blocks` + --> parachain/src/codegen/relay_chain.rs:21013:39 + | +21013 | impl ::subxt::blocks::StaticExtrinsic for ForceSubscribeVersionNotify { + | ^^^^^^^^^^^^^^^ not found in `subxt::blocks` + +error[E0405]: cannot find trait `StaticExtrinsic` in module `subxt::blocks` + --> parachain/src/codegen/relay_chain.rs:21030:39 + | +21030 | impl ::subxt::blocks::StaticExtrinsic for ForceUnsubscribeVersionNotify { + | ^^^^^^^^^^^^^^^ not found in `subxt::blocks` + +error[E0405]: cannot find trait `StaticExtrinsic` in module `subxt::blocks` + --> parachain/src/codegen/relay_chain.rs:21051:39 + | +21051 | impl ::subxt::blocks::StaticExtrinsic for LimitedReserveTransferAssets { + | ^^^^^^^^^^^^^^^ not found in `subxt::blocks` + +error[E0405]: cannot find trait `StaticExtrinsic` in module `subxt::blocks` + --> parachain/src/codegen/relay_chain.rs:21072:39 + | +21072 | impl ::subxt::blocks::StaticExtrinsic for LimitedTeleportAssets { + | ^^^^^^^^^^^^^^^ not found in `subxt::blocks` + +For more information about this error, try `rustc --explain E0405`. +``` + +I changed back the code generated for the parachain and relaychain to the ones available in the repository. However, using this way the test runs but stay stuck and don't complete. + +``` +cargo +nightly test -p tesseract-integration-tests test_messaging_relay -- --nocapture +⚡ Found 3 strongly connected components which includes at least one cycle each +cycle(001) ∈ α: ApprovalVoting ~~{"DisputeCoordinatorMessage"}~~> DisputeCoordinator ~~{"ApprovalVotingMessage"}~~> * +cycle(002) ∈ β: CandidateBacking ~~{"StatementDistributionMessage"}~~> StatementDistribution ~~{"CandidateBackingMessage"}~~> * +cycle(003) ∈ γ: NetworkBridgeRx ~~{"GossipSupportMessage"}~~> GossipSupport ~~{"NetworkBridgeRxMessage"}~~> * + Compiling tesseract-parachain v0.1.0 (/home/diogo/workspace/w3f/tesseract-blake2b/parachain) + Compiling tesseract-integration-tests v0.1.0 (/home/diogo/workspace/w3f/tesseract-blake2b/integration-tests) + Finished test [unoptimized + debuginfo] target(s) in 3m 30s + Running unittests src/lib.rs (target/debug/deps/tesseract_integration_tests-452855ab9d4ed01a) + +running 1 test +test test_messaging_relay has been running for over 60 seconds +``` + +I think we could have a problem with the version of the relaychain. What is the exact version you are using? Any other configuration that I need to perform to run these tests? + + +## Evaluation V2 + +### Documentation + +It was add the instructions to run without docker and also a demo. However, it is missing the instructions to run the demo. Please, provide instructions to run the demo with examples including inputs and expected outputs to demonstrate the behavior of the software. + +### Testing + +The tests returned better coverage. It is possible to improve even more but it isn't mandatory. + +``` +running 12 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::should_reject_expired_check_clients ... ok +test tests::should_reject_updates_within_challenge_period ... ok +test tests::should_reject_messages_for_frozen_state_machines ... ok +test tests::should_handle_post_request_timeouts_correctly ... ok +test tests::should_handle_get_request_timeouts_correctly ... ok +test tests::dispatcher_should_write_receipts_for_outgoing_requests_and_responses ... ok +test tests::should_handle_get_request_responses_correctly ... ok +test tests::should_generate_and_verify_batch_proof_correctly ... ok +test tests::should_generate_proofs_correctly_for_single_leaf_mmr ... ok +test tests::should_generate_and_verify_batch_proof_for_leaves_inserted_across_multiple_blocks_correctly ... ok +test benchmarking::benchmarks::benchmark_tests::test_benchmarks ... ok + +test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s + +Jun 13 09:36:17.846 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| ismp-demo/src/lib.rs: 0/80 +|| pallet-ismp/primitives/src/mmr.rs: 12/18 +|| pallet-ismp/rpc/src/lib.rs: 0/88 +|| pallet-ismp/src/benchmarking.rs: 78/99 +|| pallet-ismp/src/dispatcher.rs: 38/49 +|| pallet-ismp/src/errors.rs: 0/29 +|| pallet-ismp/src/events.rs: 0/11 +|| pallet-ismp/src/handlers.rs: 0/28 +|| pallet-ismp/src/host.rs: 80/89 +|| pallet-ismp/src/lib.rs: 85/166 +|| pallet-ismp/src/mmr/mmr.rs: 26/28 +|| pallet-ismp/src/mmr/storage.rs: 46/57 +|| pallet-ismp/src/mmr/utils.rs: 7/7 +|| pallet-ismp/src/weight_info.rs: 0/135 +|| parachain/inherent/src/lib.rs: 0/17 +|| parachain/src/consensus.rs: 0/140 +|| parachain/src/lib.rs: 0/50 +|| +34.10% coverage, 372/1091 lines covered +``` + +## Evaluation V1 + +### Documentation + +Please create a new branch for the evaluation of the milestone to prevent new commits during the evaluation. + +It would be nice if the documentation have the prerequisites and instructions to run without docker. It is missing instructions to start the substrate with the pallet and the instructions to use. + +### Testing + +All tests passed, but I got some warnings: + +``` +user@localhost:~/Documents/ismp/substrate-ismp$ cargo test +⚡ Found 3 strongly connected components which includes at least one cycle each +cycle(001) ∈ α: ApprovalVoting ~~{"ApprovalDistributionMessage"}~~> ApprovalDistribution ~~{"ApprovalVotingMessage"}~~> * +cycle(002) ∈ β: CandidateBacking ~~{"CollatorProtocolMessage"}~~> CollatorProtocol ~~{"CandidateBackingMessage"}~~> * +cycle(003) ∈ γ: NetworkBridgeRx ~~{"GossipSupportMessage"}~~> GossipSupport ~~{"NetworkBridgeRxMessage"}~~> * +warning: use of deprecated constant `pallet::warnings::ConstantWeight_0::_w`: + It is deprecated to use hard-coded constant as call weight. + Please instead benchmark all calls or put the pallet into `dev` mode. + + For more info see: + + --> parachain/src/lib.rs:107:26 + | +107 | #[pallet::weight(0)] + | ^ + | + = note: `#[warn(deprecated)]` on by default + +warning: use of deprecated constant `pallet::warnings::ConstantWeight_1::_w`: + It is deprecated to use hard-coded constant as call weight. + Please instead benchmark all calls or put the pallet into `dev` mode. + + For more info see: + + --> parachain/src/lib.rs:119:26 + | +119 | #[pallet::weight(0)] + | ^ + +warning: `ismp-parachain` (lib) generated 2 warnings +warning: `ismp-parachain` (lib test) generated 2 warnings (2 duplicates) + Finished test [unoptimized + debuginfo] target(s) in 0.59s + Running unittests src/lib.rs (target/debug/deps/ismp_assets-9309e30e3c82eb88) + +running 11 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::should_generate_proofs_correctly_for_single_leaf_mmr ... ok +test tests::should_reject_expired_check_clients ... ok +test tests::should_handle_get_request_timeouts_correctly ... ok +test tests::should_handle_get_request_responses_correctly ... ok +test tests::dispatcher_should_write_receipts_for_outgoing_requests_and_responses ... ok +test tests::should_reject_updates_within_challenge_period ... ok +test tests::should_handle_post_request_timeouts_correctly ... ok +test tests::should_generate_and_verify_batch_proof_for_leaves_inserted_across_multiple_blocks_correctly ... ok +test tests::should_reject_messages_for_frozen_state_machines ... ok +test tests::should_generate_and_verify_batch_proof_correctly ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Doc-tests ismp-assets +``` + +I tested with docker and without. I ran `cargo tarpaulin` to check the test coverage. The coverage isn't good and can be improved. + +``` +Jun 06 09:17:47.663 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| ismp-assets/src/lib.rs: 0/82 +|| pallet-ismp/primitives/src/mmr.rs: 7/18 +|| pallet-ismp/rpc/src/lib.rs: 0/88 +|| pallet-ismp/src/benchmarking.rs: 0/15 +|| pallet-ismp/src/dispatcher.rs: 22/59 +|| pallet-ismp/src/errors.rs: 2/43 +|| pallet-ismp/src/events.rs: 0/11 +|| pallet-ismp/src/handlers.rs: 0/42 +|| pallet-ismp/src/host.rs: 27/89 +|| pallet-ismp/src/lib.rs: 35/153 +|| pallet-ismp/src/mmr/mmr.rs: 19/28 +|| pallet-ismp/src/mmr/storage.rs: 27/54 +|| pallet-ismp/src/mmr/utils.rs: 1/3 +|| pallet-ismp/src/weight_info.rs: 0/98 +|| parachain/inherent/src/lib.rs: 0/11 +|| parachain/src/consensus.rs: 0/139 +|| parachain/src/lib.rs: 0/45 +|| +14.31% coverage, 140/978 lines covered +``` + +Please, provide me a guide to start the substrate and use the pallet, with expected inputs and outputs. + +### Article + +The article isn't a deliverable of this milestone. + +### Code Quality + +I ran `cargo clippy` and got some warnings, for example: + +``` +warning: this `match` can be collapsed into the outer `match` + --> pallet-ismp/src/lib.rs:518:43 + | +518 | DataOrHash::Data(leaf) => match leaf { + | ___________________________________________^ +519 | | Leaf::Request(req) => Some(req), +520 | | _ => None, +521 | | }, + | |_________________^ + | +help: the outer pattern can be modified to include the inner pattern + --> pallet-ismp/src/lib.rs:518:34 + | +518 | DataOrHash::Data(leaf) => match leaf { + | ^^^^ replace this binding +519 | Leaf::Request(req) => Some(req), + | ^^^^^^^^^^^^^^^^^^ with this pattern + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match + = note: `#[warn(clippy::collapsible_match)]` on by default + +warning: this `match` can be collapsed into the outer `match` + --> pallet-ismp/src/lib.rs:534:43 + | +534 | DataOrHash::Data(leaf) => match leaf { + | ___________________________________________^ +535 | | Leaf::Response(res) => Some(res), +536 | | _ => None, +537 | | }, + | |_________________^ + | +help: the outer pattern can be modified to include the inner pattern + --> pallet-ismp/src/lib.rs:534:34 + | +534 | DataOrHash::Data(leaf) => match leaf { + | ^^^^ replace this binding +535 | Leaf::Response(res) => Some(res), + | ^^^^^^^^^^^^^^^^^^^ with this pattern + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match + +⚡ Found 3 strongly connected components which includes at least one cycle each +cycle(001) ∈ α: ApprovalVoting ~~{"ApprovalDistributionMessage"}~~> ApprovalDistribution ~~{"ApprovalVotingMessage"}~~> * +cycle(002) ∈ β: CandidateBacking ~~{"CollatorProtocolMessage"}~~> CollatorProtocol ~~{"CandidateBackingMessage"}~~> * +cycle(003) ∈ γ: NetworkBridgeRx ~~{"GossipSupportMessage"}~~> GossipSupport ~~{"NetworkBridgeRxMessage"}~~> * +warning: `pallet-ismp` (lib) generated 29 warnings (run `cargo fix --lib -p pallet-ismp` to apply 14 suggestions) +``` diff --git a/evaluations/kuma-cross-chain-wallet_2_keeganquigley.md b/evaluations/kuma-cross-chain-wallet_2_keeganquigley.md new file mode 100644 index 000000000..79afa63b6 --- /dev/null +++ b/evaluations/kuma-cross-chain-wallet_2_keeganquigley.md @@ -0,0 +1,181 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/cross-chain-wallet.md +- **Milestone:** 2 +- **Previously successfully merged evaluation:** All by keeganquigley + +| Number | Deliverable | Accepted | Link | Notes | +| ------------- | ------------- | ------------- |------------- | ------------- | +| 0a. | License |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/LICENSE | MIT | +| 0b. | Documentation |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/README.md, https://github.com/blockcoders/kuma-wallet/blob/main/README-es.md | Looks good. | +| 0c. | Testing Guide |
  • [x]
| https://github.com/blockcoders/kuma-wallet#running-locally | Looks good. | +| 1. | Custom tokens |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/src/pages/manageAssets/ManageAssets.tsx | Looks good. | +| 2. | Mesasges EVM - WASM |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/src/pages/signMessage/SignMessage.tsx | Looks good. | +| 3. | Transfer EVM - WASM |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/src/pages/send/Send.tsx | Looks good. | +| 4. | Transaction history |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/src/entries/background/index.ts | Looks good. | +| 5. | Explorer link |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/src/constants/chains.ts | Looks good. | + +# General + +Very well built wallet! It is sleek and I like it's simplicity, has a similar feel to using MetaMask. I was able to create and import test wallets and the UI is great, I didn't encounter any issues. I would love to see the addition of QR code functionality. I am also excited to try the XCM functionality in the next milestone. + + +## Tests + +Well documented code and tests. All GH action CI is successful. + +All 411 unit tests pass: +```js + Test Files 56 passed (56) + Tests 411 passed (411) + Start at 16:35:02 + Duration 10.59s (transform 1.12s, setup 5.28s, collect 11.92s, tests 3.88s, environment 10.89s, prepare 2.42s) +``` + +Good coverage: +```js + % Coverage report from c8 +-------------------------------|---------|----------|---------|---------|-------------------------------------------------- +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +-------------------------------|---------|----------|---------|---------|-------------------------------------------------- +All files | 92.81 | 78.31 | 85.07 | 92.81 | + src | 100 | 95.69 | 100 | 100 | + Extension.ts | 100 | 95.69 | 100 | 100 | 63,83,245,289 + src/accounts | 98.11 | 66 | 93.33 | 98.11 | + AccountManager.ts | 98 | 65.3 | 93.33 | 98 | 104,129,143-144 + types.ts | 100 | 100 | 100 | 100 | + src/hooks | 100 | 100 | 100 | 100 | + index.ts | 100 | 100 | 100 | 100 | + src/hooks/common | 98.91 | 90.9 | 100 | 98.91 | + useCopyToClipboard.tsx | 98.03 | 80 | 100 | 98.03 | 20 + useLoading.tsx | 100 | 100 | 100 | 100 | + useToast.tsx | 100 | 100 | 100 | 100 | + src/i18n | 100 | 100 | 100 | 100 | + index.ts | 100 | 100 | 100 | 100 | + src/pages/accountForm | 81.38 | 51.16 | 15.38 | 81.38 | + AccountForm.tsx | 81.38 | 51.16 | 15.38 | 81.38 | ...3-250,281-282,309,340-341,347,376-377,390-402 + src/pages/addAccount | 100 | 100 | 100 | 100 | + AddAccount.tsx | 100 | 100 | 100 | 100 | + OptionButton.tsx | 100 | 100 | 100 | 100 | + src/pages/balance/components | 93.13 | 53.48 | 65.62 | 93.13 | + AccountList.tsx | 91.05 | 62.5 | 33.33 | 91.05 | 27-28,47,93,96-98,101-104 + AccountSelected.tsx | 100 | 50 | 100 | 100 | 13 + Activity.tsx | 94.03 | 56.66 | 100 | 94.03 | 62-63,76-77,88,91,101,115,117,119,157-159 + Assets.tsx | 96.15 | 42.85 | 25 | 96.15 | 43-45,52-53 + ChainSelector.tsx | 94.76 | 73.68 | 87.5 | 94.76 | 68-70,73,93-94,164-166,185 + ConfirmChainChangeModal.tsx | 84.05 | 11.11 | 50 | 84.05 | 72,80,89-91,112-128 + TotalBalance.tsx | 100 | 50 | 33.33 | 100 | 28-35 + src/pages/manageAssets | 96.75 | 46.15 | 50 | 96.75 | + ManageAssets.tsx | 96.75 | 46.15 | 50 | 96.75 | 52,54-55,87-88 + src/pages/receive | 100 | 33.33 | 50 | 100 | + Receive.tsx | 100 | 33.33 | 50 | 100 | 20-41 + src/pages/send/components | 91.2 | 72.89 | 70.58 | 91.2 | + ConfirmTx.tsx | 100 | 33.33 | 50 | 100 | 36-82 + Destination.tsx | 83.9 | 77.41 | 57.14 | 83.9 | 33-39,46-52,58-63,138-146,160-163 + EvmForm.tsx | 81.73 | 59.09 | 100 | 81.73 | 81,125-155,157,181,193-200 + Fees.tsx | 100 | 100 | 100 | 100 | + SelectableAsset.tsx | 100 | 87.5 | 100 | 100 | 27 + SelectableChain.tsx | 100 | 100 | 100 | 100 | + WasmForm.tsx | 93.18 | 69.69 | 66.66 | 93.18 | 97-99,160-165,170-171,217-218,234-238 + src/pages/settings | 90.97 | 71.79 | 40.54 | 90.97 | + Contacts.tsx | 92.39 | 70.37 | 44.44 | 92.39 | 42-48,83-84,99,107-113,124,221-222 + General.tsx | 93.04 | 81.48 | 66.66 | 93.04 | 48-49,68-76,93-94 + Security.tsx | 88.91 | 62.5 | 26.31 | 88.91 | ...,95-96,99-102,110-111,118-124,166-167,190-192 + src/pages/signIn | 90.21 | 66.66 | 57.14 | 90.21 | + SignIn.tsx | 90.21 | 66.66 | 57.14 | 90.21 | 26-27,37-39,42-43,70-71 + src/pages/signMessage | 98.31 | 57.14 | 100 | 98.31 | + SignMessage.tsx | 98.31 | 57.14 | 100 | 98.31 | 76-77 + src/pages/welcome | 100 | 100 | 100 | 100 | + Welcome.tsx | 100 | 100 | 100 | 100 | + src/providers | 100 | 100 | 100 | 100 | + index.ts | 100 | 100 | 100 | 100 | + src/providers/accountProvider | 76.69 | 72.72 | 83.33 | 76.69 | + AccountProvider.tsx | 76.58 | 72.72 | 83.33 | 76.58 | 50-62,64,97-99,112-116,136-137,141-162,184-185 + index.ts | 100 | 100 | 100 | 100 | + src/providers/assetProvider | 87 | 65.62 | 100 | 87 | + AssetProvider.tsx | 86.98 | 65.62 | 100 | 86.98 | ...6,288-289,312-313,337-362,386-387,441-442,511 + index.ts | 100 | 100 | 100 | 100 | + src/providers/authProvider | 100 | 95.23 | 100 | 100 | + AuthProvider.tsx | 100 | 95.23 | 100 | 100 | 79 + index.ts | 100 | 100 | 100 | 100 | + src/providers/networkProvider | 93.19 | 81.39 | 87.5 | 93.19 | + NetworkProvider.tsx | 93.16 | 81.39 | 87.5 | 93.16 | 132-133,177-178,188-189,193-202 + index.ts | 100 | 100 | 100 | 100 | + src/providers/txProvider | 92.85 | 75 | 87.5 | 92.85 | + TxProvider.tsx | 92.79 | 75 | 87.5 | 92.79 | 52,102,113-114,138-139,177-186 + index.ts | 100 | 100 | 100 | 100 | + src/storage | 100 | 97.5 | 100 | 100 | + Auth.ts | 100 | 100 | 100 | 100 | + Storage.ts | 100 | 92.3 | 100 | 100 | 22 + src/storage/entities | 96.15 | 92.85 | 96.39 | 96.15 | + Account.ts | 100 | 100 | 100 | 100 | + Accounts.ts | 90.9 | 95.65 | 87.5 | 90.9 | 43-46,49-52 + Assets.ts | 90.74 | 91.66 | 85.71 | 90.74 | 28-32 + BackUp.ts | 100 | 100 | 100 | 100 | + BaseEntity.ts | 100 | 100 | 100 | 100 | + CacheAuth.ts | 87.91 | 84.21 | 90.9 | 87.91 | 27-28,45-46,59-62,71-73 + Chains.ts | 98.26 | 93.54 | 100 | 98.26 | 111-112 + Keyring.ts | 100 | 88.88 | 100 | 100 | 21-22 + Network.ts | 100 | 90.9 | 100 | 100 | 33 + SelectedAccount.ts | 100 | 66.66 | 100 | 100 | 26-28 + TrustedSites.ts | 100 | 100 | 100 | 100 | + Vault.ts | 98.11 | 96.77 | 100 | 98.11 | 35-36 + src/storage/entities/activity | 97.5 | 79.31 | 87.5 | 97.5 | + Activity.ts | 95.71 | 77.77 | 87.5 | 95.71 | 17-18,36 + types.ts | 100 | 100 | 100 | 100 | + src/storage/entities/registry | 96.15 | 77.14 | 100 | 96.15 | + Contact.ts | 100 | 100 | 100 | 100 | + Register.ts | 100 | 100 | 100 | 100 | + Registry.ts | 95.57 | 74.19 | 100 | 95.57 | 91-93,96-97 + src/storage/entities/settings | 100 | 96.42 | 100 | 100 | + LanguageSetting.ts | 100 | 100 | 100 | 100 | + Setting.ts | 100 | 100 | 100 | 100 | + Settings.ts | 100 | 93.75 | 100 | 100 | 66 + types.ts | 100 | 100 | 100 | 100 | + src/utils | 98.13 | 89.58 | 100 | 98.13 | + account-utils.ts | 100 | 100 | 100 | 100 | + assets.ts | 97.61 | 86.95 | 100 | 97.61 | 72-73 + constants.ts | 100 | 100 | 100 | 100 | + env.ts | 100 | 50 | 100 | 100 | 5 + i18n.ts | 100 | 100 | 100 | 100 | + utils.ts | 95.55 | 88.88 | 100 | 95.55 | 39-40 +-------------------------------|---------|----------|---------|---------|-------------------------------------------------- + +=============================== Coverage summary =============================== +Statements : 92.81% ( 6670/7186 ) +Branches : 78.31% ( 816/1042 ) +Functions : 85.07% ( 359/422 ) +Lines : 92.81% ( 6670/7186 ) +================================================================================ +``` +## Linting + +Consider fixing this warning about rules for next milestone: +```js +/Users/keeganquigley/kuma-wallet/src/Extension.ts + 227:73 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 311:47 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/Users/keeganquigley/kuma-wallet/src/entries/background/index.ts + 204:20 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/Users/keeganquigley/kuma-wallet/src/entries/scripts/contentScript.ts + 6:12 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/Users/keeganquigley/kuma-wallet/src/storage/entities/BaseEntity.ts + 12:45 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + 15:18 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/Users/keeganquigley/kuma-wallet/src/storage/entities/CacheAuth.ts + 33:18 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/Users/keeganquigley/kuma-wallet/src/utils/assets.ts + 16:23 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +/Users/keeganquigley/kuma-wallet/src/utils/utils.ts + 19:32 warning Unexpected any. Specify a different type @typescript-eslint/no-explicit-any + +✖ 9 problems (0 errors, 9 warnings) +``` +Please note: No security audits were performed as a part of this evaluation. diff --git a/evaluations/kuma-cross-chain-wallet_3_keeganquigley.md b/evaluations/kuma-cross-chain-wallet_3_keeganquigley.md new file mode 100644 index 000000000..6e9d228bc --- /dev/null +++ b/evaluations/kuma-cross-chain-wallet_3_keeganquigley.md @@ -0,0 +1,670 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/cross-chain-wallet.md +- **Milestone:** 3 +- **Previously successfully merged evaluation:** All by keeganquigley + +| Number | Deliverable | Accepted | Link | Notes | +| ------------- | ------------- | ------------- |------------- | ------------- | +| 0a. | License |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/LICENSE | MIT | +| 0b. | Documentation |
  • [x]
| https://github.com/blockcoders/kuma-wallet/blob/main/README.md, https://github.com/blockcoders/kuma-wallet/blob/main/README-es.md | Ok. | +| 0c. | Testing Guide |
  • [x]
| https://github.com/blockcoders/kuma-wallet#running-locally | Ok. | +| 1. | XCM/XVM standard for transfers |
  • [x]
| [Link](https://github.com/kumawallet/extension/blob/main/src/constants/xcm.ts) | Ok. | +| 2. | Call to custom smart contracts |
  • [x]
| [Link](https://github.com/kumawallet/extension/blob/main/src/pages/callContract/CallContract.tsx) | Ok. | +| 3. | Transactions to custom smart contracts |
  • [x]
| [Link](https://github.com/kumawallet/extension/blob/main/src/providers/txProvider/TxProvider.tsx) | Ok. | +| 4. | Open Beta |
  • [x]
| [Link1](https://kumawallet.io/), [Link2](https://chrome.google.com/webstore/detail/kuma-wallet/hbinmkhlebcnghpikoekkbeljbealbje), [Link3](https://addons.mozilla.org/en-US/firefox/addon/kuma-wallet/), [Link4](https://twitter.com/getkuma/status/1678075363165888513) | Ok. | + +# General Notes + +In general the wallet has a very MetaMask like feel and is easy to use. I'm unable to test out XCM functionality due to not being able to transfer between testnets (Rococo, Westend). Would be nice if this could be implemented. + +Right now the main display only shows the dollar conversion amount. Just a suggestion for an added feature might be the ability to switch it to show the underlying currency instead. + +The wallet works great for both SS58 and EVM accounts, and all features have been delivered. I can easily perform all actions in the guide and the wallet is more robust than many I've seen. Great work! + +## Tests +```js + ✓ src/accounts/AccountManager.test.ts (20) + ✓ AccountManager (20) + ✓ formatAddress (2) + ✓ should format evm account + ✓ should return the same address + ✓ should get valid name + ✓ should create account + ✓ addAccount (1) + ✓ should return created account + ✓ importAccount (1) + ✓ should add imported evm account + ✓ derive (2) + ✓ should return derived account + ✓ should throw error + ✓ getAccount (2) + ✓ should return account by key + ✓ should show error + ✓ changeName (2) + ✓ should change name + ✓ should return error + ✓ getAll (2) + ✓ shoudl return all wasm accounts + ✓ shoudl return undefined + ✓ areAccountsInitialized (1) + ✓ should return true + ✓ saveBackup (3) + ✓ should save backup + ✓ should throw recovery_phrase_required error + ✓ should throw invalid_recovery_phrase error + ✓ restorePassword (2) + ✓ should restore password + ✓ should throw backup_not_found error + ✓ src/Extension.test.ts (66) + ✓ Extension (66) + ✓ validatePasswordFormat (3) + ✓ should be valid + ✓ should return password_required error + ✓ should return password_invalid error + ✓ validatePrivateKeyOrSeedFormat (3) + ✓ should be valid + ✓ should return private_key_or_seed_required error + ✓ should return private_key_or_seed_invalid error + ✓ signUp (2) + ✓ should signUp + ✓ should throw error + ✓ should be authorized + ✓ createAccounts (2) + ✓ should create accounts + ✓ should create accounts with isSignUp in false + ✓ importAccount (2) + ✓ should import account + ✓ should import account with isSignUp in false + ✓ should restore password + ✓ should remove key + ✓ should change name + ✓ resetWallet (2) + ✓ should reset wallet + ✓ should throw error + ✓ signIn + ✓ should be signed up + ✓ areAccountsInitialized (3) + ✓ should true + ✓ should return false + ✓ should return with catch error false + ✓ should sign out + ✓ should session be active + ✓ showKey (2) + ✓ should return key + ✓ should return undefined + ✓ get account + ✓ getAllAccounts (2) + ✓ should return all accounts + ✓ should return empty array + ✓ should derive account + ✓ should set network + ✓ should return selected account + ✓ should return selected network + ✓ should get network + ✓ getGeneralSettings (2) + ✓ should return general settings + ✓ should return error + ✓ getAdvancedSettings (2) + ✓ should return general settings + ✓ should return error + ✓ getSetting (2) + ✓ should return general settings + ✓ should return error + ✓ updateSetting (2) + ✓ should return settings + ✓ should return error + ✓ getContacts (2) + ✓ should return contacts + ✓ should return error + ✓ getRegistryAddresses (4) + ✓ should return registry addresses + ✓ should return registry error + ✓ should return network error + ✓ should return network error + ✓ save contact (1) + ✓ should save contact + ✓ removeContact + ✓ getActivity + ✓ getAllChains (2) + ✓ should return all chains + ✓ should return error + ✓ saveCustomChain + ✓ removeCustomChain + ✓ getXCMChains (3) + ✓ should return xcm chains + ✓ should return chain error + ✓ should return chains error + ✓ addActivity + ✓ updateActivity + ✓ addAsset + ✓ getAssetsByChain + ✓ getTrustedSites + ✓ addTrustedSite + ✓ removeTrustedSite + ✓ src/providers/assetProvider/AssetProvider.test.tsx (7) + ✓ AssetProvider (7) + ✓ reducer (6) + ✓ should loading assets + ✓ should end loading + ✓ should set assets + ✓ should update assets + ✓ should update one assets + ✓ shoudn't update one assets + ✓ wasm assets (1) + ✓ should load assests + ✓ src/providers/networkProvider/NetworkProvider.test.tsx (18) + ✓ NetworkProvider (18) + ✓ reducer (8) + ✓ init + ✓ select-network (3) + ✓ with rpc and type + ✓ without rpc + ✓ without type + ✓ set-api (3) + ✓ with rpc + ✓ without rpc + ✓ default + ✓ refresh-networks (1) + ✓ should refresh networks + ✓ useEffect (2) + ✓ should init + ✓ should show error + ✓ setSelectedNetwork (2) + ✓ should set new evm chain + ✓ should show error + ✓ getSelectedNetwork (2) + ✓ should getSelectedNetwork + ✓ should show error + ✓ setNewRpc (2) + ✓ should keep the current rpc + ✓ should set new rpc if chain support WASM and EVM + ✓ refreshNetworks (2) + ✓ should refresh networks + ✓ should show error + ✓ src/storage/entities/activity/Activity.test.ts (14) + ✓ Activity (14) + ✓ shoud instance + ✓ should init + ✓ addRecord (3) + ✓ should add record + ✓ should throw Activity.get error + ✓ should throw SelectedAccount.get error + ✓ getRecords (3) + ✓ should throw SelectedAccount.get error + ✓ should throw Activity.get error + ✓ should throw Activity.get error + ✓ update record status (4) + ✓ should update record status + ✓ should throw SelectedAccount.get error + ✓ should throw Activity.get error + ✓ should throw activity.data error + ✓ add record + ✓ get records + ✓ src/storage/entities/Vault.test.ts (15) + ✓ Vault (15) + ✓ init (3) + ✓ should init keyrings + ✓ should throw vault_not_found error by Storage error + ✓ should throw vault_not_found error by Auth error + ✓ alreadySignedUp (2) + ✓ should return true + ✓ should return undefined + ✓ getEncryptedVault (2) + ✓ should return stored + ✓ should return undefined + ✓ set + ✓ should save keyring + ✓ getKeyring (3) + ✓ should return keyring + ✓ should call addHDKeyring + ✓ should throw error + ✓ addHDKeyring (2) + ✓ should add WASM hd keyring + ✓ should add EVM hd keyring + ✓ is invalid + ✓ src/pages/send/components/WasmForm.test.tsx (3) 3101ms + ✓ WasmForm (3) 3101ms + ✓ should call confirmTx 1064ms + ✓ should call confirmTx with created asset 1016ms + ✓ should call confirmTx with xcm 1018ms + ✓ src/storage/entities/registry/Registry.test.ts (21) + ✓ Registry (21) + ✓ should instance + ✓ shoud get default value + ✓ should init + ✓ add contact (2) + ✓ should add contact + ✓ should throw error + ✓ get contact (2) + ✓ should get contact + ✓ should throw error + ✓ change contact name (3) + ✓ should change contact name + ✓ should throw registry error + ✓ should throw contract error + ✓ remove contact (2) + ✓ should remove contact + ✓ should throw registry error + ✓ add recent (2) + ✓ should add recent + ✓ should throw registry error + ✓ get recent (2) + ✓ should get recent + ✓ should throw registry error + ✓ should add contact + ✓ get contact + ✓ add recent + ✓ get recent + ✓ get all contacts + ✓ src/providers/authProvider/AuthProvider.test.tsx (12) + ✓ AuthProvider (12) + ✓ reducer + ✓ createAccount (2) + ✓ should return true + ✓ should return seed_required error + ✓ importAccount (4) + ✓ should return true + ✓ should return password_required error + ✓ should return private_key_or_seed_required error + ✓ should return account_type_required error + ✓ deriveAccount (2) + ✓ should return true + ✓ should return account_type_required error + ✓ restoreAccount (3) + ✓ should return true + ✓ should return recovery_phrase_required error + ✓ should return password_required error + ✓ src/providers/txProvider/TxProvider.test.tsx (2) + ✓ TxProvider (2) + ✓ should load wasm activity + ✓ should load evm activity + ✓ src/storage/Auth.test.ts (19) + ✓ Auth (19) + ✓ should instance + ✓ should return isUnlocked + ✓ should return password + ✓ should return isSessionActive + ✓ should return isSessionActive + ✓ should return false if there is no password + ✓ should return true if there is a password + ✓ loadAuthFromCache (2) + ✓ should set isUnlocked from cache + ✓ should signOut + ✓ decryptVault + ✓ encryptVault + ✓ signIn (2) + ✓ should signIn + ✓ should throw decrypt error + ✓ encryptBackup (2) + ✓ should return encrypted backup + ✓ should return error + ✓ decryptBackup (2) + ✓ should return encrypted backup + ✓ should return error + ✓ restorePassword (2) + ✓ should return password + ✓ should throw error + ✓ src/storage/entities/Chains.test.ts (19) + ✓ Chains (19) + ✓ should instance + ✓ get instance (2) + ✓ should return instance + ✓ should return same instance + ✓ shoud init + ✓ should return default value + ✓ load chains (2) + ✓ should load chains + ✓ should throw error + ✓ save custom chain (3) + ✓ should chain_already_added throw error + ✓ should throw failed_to_save_custom_chain error + ✓ should chain_already_added throw error + ✓ remove custom chain (2) + ✓ remove custom chain + ✓ should throw error + ✓ get by chain (5) + ✓ should return in mainnets + ✓ should return in testnets + ✓ should return in custom + ✓ should return undefined + ✓ should throw failed_to_get_chain_by_name + ✓ should get all + ✓ should already addes + ✓ src/providers/accountProvider/AccountProvider.test.tsx (9) + ✓ AccountProvider (9) + ✓ reducer (2) + ✓ should set accounts + ✓ should update account name + ✓ should create account + ✓ should import account + ✓ should derive account + ✓ should call get selected account + ✓ should call get all accounts + ✓ should change account name + ✓ should set selected account + ✓ src/storage/entities/Accounts.test.ts (18) + ✓ Account (18) + ✓ should instance + ✓ should init + ✓ should update + ✓ removeAccout (2) + ✓ should remove account + ✓ should return error + ✓ add (3) + ✓ should add account + ✓ should return failed_to_add_account error + ✓ should return failed_to_add_account error + ✓ should return isEmpty as true + ✓ should add account + ✓ should remove account + ✓ get (2) + ✓ should return account value by key + ✓ should return undefined + ✓ should getAll + ✓ should update + ✓ should return false alreadyExists + ✓ first (2) + ✓ should return first account + ✓ should return undefined + ✓ src/tests/utils/assets.test.ts (15) + ✓ assets (15) + ✓ getNatitveAssetBalance (5) + ✓ should use polkadot api + ✓ should use ethereum api + ✓ should return same amount + ✓ should return same amount + ✓ should throw error + ✓ should format amount with decimals + ✓ should return 0 + ✓ should format bn + ✓ should format bn, returning 0 + ✓ should format usd amount + ✓ get asset USD price (3) + ✓ should return eth price + ✓ should return 0 + ✓ should throw error + ✓ getWasmAssets (2) + ✓ get assets + ✓ get assets Astar case + ✓ src/storage/entities/TrustedSites.test.ts (13) + ✓ Trusted Sites (13) + ✓ should instance + ✓ should get default value + ✓ should init + ✓ get all (2) + ✓ should get all + ✓ should throw error + ✓ add site (2) + ✓ should add site + ✓ should throw error + ✓ remove site (2) + ✓ should remove site + ✓ should throw error + ✓ add site (2) + ✓ should add site + ✓ should throw error + ✓ remove site (2) + ✓ should remove site + ✓ should throw error + ✓ src/pages/send/components/EvmForm.test.tsx (2) + ✓ EvmForm (2) + ✓ should call confirmTx with native asset + ✓ should call confirmTx with erc20 asset + ✓ src/pages/accountForm/AccountForm.test.tsx (5) + ✓ AccountForm (5) + ✓ import account (1) + ✓ should render + ✓ create account (2) + ✓ should render + ✓ should submit + ✓ restore password (1) + ✓ should render + ✓ derive account (1) + ✓ should render + ✓ src/storage/entities/settings/Settings.test.ts (13) + ✓ Settings (13) + ✓ should instance + ✓ should init + ✓ should be empty + ✓ should add to general + ✓ should add to advanced + ✓ should add to security + ✓ should get from general + ✓ should get from advanced + ✓ should get from security + ✓ get + ✓ get all + ✓ update + ✓ allready exists + ✓ src/storage/Storage.test.ts (4) + ✓ Storage (4) + ✓ should instance + ✓ init (2) + ✓ should init + ✓ should throw already_signed_up error + ✓ reset wallet + ✓ src/pages/signMessage/SignMessage.test.tsx (2) + ✓ SignMessage (2) + ✓ should sign evm message + ✓ should sign wasm message + ✓ src/pages/manageAssets/ManageAssets.test.tsx (3) + ✓ ManageAssets (3) + ✓ should render evm + ✓ should fill the form and submit + ✓ should show error on submit + ✓ src/storage/entities/Assets.test.ts (8) + ✓ Assets (8) + ✓ should instance + ✓ should return default value + ✓ should init + ✓ getByChain (2) + ✓ should get by chain + ✓ should show error + ✓ addAsset (3) + ✓ should add asset + ✓ should add new asset in existing chain + ✓ should throw error when asset already added + ✓ src/pages/balance/components/ChainSelector.test.tsx (2) + ✓ ChainSelector (2) + ✓ should render + ✓ should change account + ✓ src/storage/entities/BaseEntity.test.ts (7) + ✓ BaseEntity (7) + ✓ should init + ✓ getDefaultValue + ✓ fromData + ✓ get (2) + ✓ should return stored data + ✓ should return undefined + ✓ set + ✓ remove + ✓ src/pages/balance/components/AccountList.test.tsx (1) + ✓ AccountList (1) + ✓ should render accounts + ✓ src/pages/send/components/ConfirmTx.test.tsx (2) + ✓ ConfirmTx (2) + ✓ should render correctly + ✓ should call onConfirm when confirm button is clicked + ✓ src/storage/entities/keyrings/hd/EVMKeyring.test.ts (8) + ✓ EVMKeyring (8) + ✓ should return next account path + ✓ should return address + ✓ get key (2) + ✓ should return key + ✓ should throw error if key pair not found + ✓ should return json object + ✓ should throw error if mnemonic is invalid + ✓ should derive key pair + ✓ should return json object + ✓ src/tests/utils/accounts-utils.test.ts (9) + ✓ account-utils (9) + ✓ cropAccount (2) + ✓ should return cropAccount + ✓ should return empty + ✓ formatAccount (2) + ✓ should format EVM account + ✓ should format WASM account + ✓ formatAddress (3) + ✓ format ROCOCO format to x format + ✓ should return the same EVM Account + ✓ should return empty + ✓ getAccountType (2) + ✓ should format imported account type + ✓ should return the same account type + ✓ src/pages/send/components/Destination.test.tsx (2) + ✓ Destination (2) + ✓ should render options + ✓ should filter + ✓ src/storage/entities/CacheAuth.test.ts (5) + ✓ CacheAuth (5) + ✓ should instance + ✓ shoud filled entity + ✓ hasExpired (2) + ✓ should return hasExpired as false + ✓ should return hasExpired as true + ✓ unlock (1) + ✓ should unlock + ✓ src/pages/settings/Contacts.test.tsx (3) + ✓ Contacts (3) + ✓ should render + ✓ should show no contacts + ✓ should create contact + ✓ src/pages/balance/components/TotalBalance.test.tsx (4) + ✓ TotalBalance (4) + ✓ should render + ✓ should render total balance + ✓ should hide balance + ✓ should update account name + ✓ src/pages/settings/General.test.tsx (3) + ✓ General (3) + ✓ should render + ✓ should call showTestnets + ✓ should call "manage networks" + ✓ src/pages/balance/components/Activity.test.tsx (2) + ✓ Actvity (2) + ✓ should render + ✓ should filter by network + ✓ src/pages/send/components/SelectableAsset.test.tsx (3) + ✓ SelectableAsset (3) + ✓ should render + ✓ should render all assets + ✓ should call change asset + ✓ src/storage/entities/keyrings/imported/ImportedEVMKeyring.test.ts (4) + ✓ ImportedEVMKeyring (4) + ✓ getImportedData + ✓ fromJSON + ✓ getKey (2) + ✓ should return key + ✓ should throw error + ✓ src/storage/entities/Network.test.ts (5) + ✓ Network (5) + ✓ should instance + ✓ should init + ✓ should return default value + ✓ should set new chain + ✓ should set new chain without static methods + ✓ src/storage/entities/keyrings/hd/WASMKeyring.test.ts (5) + ✓ WASMKeyring (5) + ✓ should return next account path + ✓ should return address + ✓ get key (2) + ✓ should return key + ✓ should throw error if key pair not found + ✓ should return json object + ✓ src/pages/settings/Security.test.tsx (2) + ✓ Security (2) + ✓ should render + ✓ should show sites + ✓ src/pages/send/components/Fees.test.tsx (2) + ✓ Fees (2) + ✓ should render native assets fees + ✓ should render no native assets fees + ✓ src/storage/entities/keyrings/imported/ImportedWASMKeyring.test.ts (2) + ✓ ImportedWASMKeyring (2) + ✓ getImportedData + ✓ fromJSON + ✓ src/storage/entities/SelectedAccount.test.ts (2) + ✓ SelectedAccount (2) + ✓ fromAccount + ✓ getDefaultValue + ✓ src/pages/signIn/SignIn.test.tsx (3) + ✓ SignIn (3) + ✓ should render + ✓ should sign in + ✓ should go to forgot password + ✓ src/pages/balance/components/AccountSelected.test.tsx (2) + ✓ AccountSelected (2) + ✓ should render selectedAccount + ✓ should copy account + ✓ src/pages/receive/Receive.test.tsx (2) + ✓ Receive (2) + ✓ should render + ✓ should copy to clipboard + ✓ src/storage/entities/settings/Setting.test.ts (7) + ✓ Setting (7) + ✓ should instance + ✓ should format name + ✓ should return string true + ✓ should return number + ✓ should return boolean + ✓ should return object + ✓ should return language array + ✓ src/pages/balance/components/Assets.test.tsx (1) + ✓ Assets (1) + ✓ should render assets + ✓ src/pages/send/components/SelectableChain.test.tsx (2) + ✓ SelectableChain (2) + ✓ should render + ✓ should render null + ✓ src/tests/utils/utils.test.ts (3) + ✓ utils (3) + ✓ should return formatted date + ✓ should parse query + ✓ should make querys + ✓ src/pages/addAccount/AddAccount.test.tsx (2) + ✓ AddAccount (2) + ✓ should render + ✓ should open new tab + ✓ src/hooks/common/useToast.test.tsx (2) + ✓ useToast (2) + ✓ showErrorToast + ✓ showSuccessToast + ✓ src/hooks/common/useLoading.test.tsx (2) + ✓ useLoading (2) + ✓ should set isLoading to true + ✓ should set isLoading to false + ✓ src/pages/settings/BugReport.test.tsx (1) + ✓ BugReport (1) + ✓ should render + ✓ src/pages/welcome/Welcome.test.tsx (2) + ✓ Welcome (2) + ✓ should render + ✓ should call goToAccount function + ✓ src/storage/entities/settings/LangaugeSetting.test.ts (2) + ✓ LanguageSettings (2) + ✓ should get default language + ✓ should get all languages + ✓ src/pages/settings/AboutUs.test.tsx (1) + ✓ AboutUs (1) + ✓ should render + ✓ src/storage/entities/Backup.test.ts (2) + ✓ Backup (2) + ✓ should instance + ✓ should init + ✓ src/storage/entities/Account.test.ts (1) + ✓ Account (1) + ✓ sholuld instance + ✓ src/storage/entities/registry/Register.test.ts (1) + ✓ Register (1) + ✓ should create register + ✓ src/storage/entities/registry/Contact.test.ts (1) + ✓ Contact (1) + ✓ should create contact + + Test Files 61 passed (61) + Tests 418 passed (418) + Start at 17:35:18 + Duration 16.79s (transform 1.14s, setup 10.07s, collect 22.82s, tests 5.96s, environment 16.37s, prepare 3.55s) +``` diff --git a/evaluations/larch_1_takahser.md b/evaluations/larch_1_takahser.md new file mode 100644 index 000000000..b44d2240d --- /dev/null +++ b/evaluations/larch_1_takahser.md @@ -0,0 +1,332 @@ +# Evaluation + +- **Status:** In Progress +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Zeeve_Parachain_deployment_zoombienet_testing_automation.md +- **Milestone:** 1 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** All by takahser + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
| [GPLv3](https://github.com/Zeeve-App/larch/blob/5a7d8f1ef13b4ddd49d3137e775a048d9a0c2c33/license) | - | +| 0b. | Documentation |
  • [x]
| [README](https://github.com/Zeeve-App/larch/blob/5a7d8f1ef13b4ddd49d3137e775a048d9a0c2c33/readme.md), [docs](https://github.com/Zeeve-App/larch/tree/5a7d8f1ef13b4ddd49d3137e775a048d9a0c2c33/docs), [web docs instructions](https://github.com/Zeeve-App/larch/blob/main/docs/development/index.md), [about page](https://github.com/Zeeve-App/larch/blob/5a7d8f1ef13b4ddd49d3137e775a048d9a0c2c33/packages/ui/src/pages/documentation/page.tsx), [tutorial](https://github.com/Zeeve-App/larch/blob/1220dc56b235f60b150741d1b394dad5791e0db6/docs/user/tutorial.md) | See [documentation feedback](#documentation-feedback). | +| 0c. | Testing Guide |
  • [x]
| [v1.0.0 release](https://github.com/Zeeve-App/larch/releases/tag/v1.0.0) | See [Testing Guide Feedback](#testing-guide-feedback) | +| 0d. | Standalone Executable |
  • [x]
| [v1.0.0 release binaries](https://github.com/Zeeve-App/larch/releases/tag/v1.0.0) | Binary for linux x64 platform and source code archives. | +| 1. | Initial Automation |
  • [ ]
| (currently being tested, will give more feedback soon) | Spec: We will build the core GUI driven automation to create and deploy the substrate based Zombie-net configurations including relaychain and parachain configurations. | +| 2. | Configuration |
  • [ ]
| (currently being tested, will give more feedback soon) | Spec: Parachain configuration is critical and complicated, we will provide the GUI based pick and choose for genesis parameters and chain configs to start with parachain setup for the desired Zombie-net | +| 3. | Node type support |
  • [ ]
| (currently being tested, will give more feedback soon) | Spec: Implement setup of all node types including Full node, Validator node and Collator node for the respective relay chain and parachain within the configured Zombie-net. | +| 4. | Cloud agnostic setup |
  • [ ]
| (currently being tested, will give more feedback soon) | Spec: The larch setup will be cloud agnostic and it can be installed on the choice of cloud, instructions and documentation will be provided for the same. | +| 5. | Network Management |
  • [ ]
| (currently being tested, will give more feedback soon) | Spec: Implement the larch tool with a user-friendly interface, features for execution info, network deletion, template cloning, and management, along with robust error handling, for seamless setup of networks and templates. | + +Ideally all links inside the above table should include the commit hash, +which was used for testing the delivery. It should also be checked if the software is published under the correct open-source license. + +## General Notes + +Summarizes the overall performance plus additional feedback/comments + +### Documentation feedback + +- [x] ~~It would be nice if there was a way to navigate the docs more easily. For example, you could add an *index.md* file to each directory and add links (and some useful content) to each of them.~~ => fixed + +- [x] ~~Some basic info about the project can be found on the web ui when running the code after buildiug it. However, they're not very well written.~~ => improved + +- [x] ~~I didn't identify any npm task called `prepare` as indicated in your [development index.md docs](https://github.com/Zeeve-App/larch/blob/5a7d8f1ef13b4ddd49d3137e775a048d9a0c2c33/docs/development/index.md).~~ => seems like that task is not needed anymore - it has been removed from the doc + +- [x] ~~I didn't identify any "basic tutorial that explains how a user can (for example) create a new Substrate based Zombie-net nodes and initiate testing" as promised in the [spec](https://github.com/w3f/Grants-Program/blob/42b3fef6b2f60890ef8ee42215c267b11681e613/applications/Zeeve_Parachain_deployment_zoombienet_testing_automation.md#L170):~~ => fixed, see [here](https://github.com/Zeeve-App/larch/blob/1220dc56b235f60b150741d1b394dad5791e0db6/docs/user/tutorial.md) + + > ~~We will provide both inline documentation of the code and a basic tutorial that explains how a user can (for example) create a new Substrate based Zombie-net nodes and initiate testing, which will show how the new functionality works.~~ + + +- [x] ~~There is currently 1 critical npm vulnerability:~~ => fixed although there are warnings, but I'm willing to accept it as long as there are no critical vulnerabilities. See updated excerpt: + + ```bash + larch % npm i + + added 1258 packages, and audited 1262 packages in 25s + + 204 packages are looking for funding + run `npm fund` for details + + 7 moderate severity vulnerabilities + + To address all issues, run: + npm audit fix + + Run `npm audit` for details. + ``` + +- [x] build passes: + + ```bash + larch % npm run build + + + > build + > ASSET_URL='/ui' lerna run build && cp -r packages/ui/dist packages/backend/dist/ui + + lerna notice cli v6.6.1 + + ✔ larch-backend:build (2s) + ✔ larch-cli:build (1s) + ✔ larch-ui:build (7s) + + ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— + + > Lerna (powered by Nx) Successfully ran target build for 3 projects (7s) + ``` + +- [x] built code can be run successfully: + + ```bash + % npm run start + + + > start + > cd packages/cli && npm run start + + + > larch-cli@1.0.0 start + > node dist/index.js + + sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs https://knexjs.org/guide/query-builder.html#insert). + Welcome to Larch + Executing DB migrations + Done executing DB migrations + ui enabled + api enabled + app is listening on port 9000 + ``` + +### Testing Guide Feedback + +- [x] ~~I didn't identify any testing guide. See [spec](https://github.com/w3f/Grants-Program/blob/42b3fef6b2f60890ef8ee42215c267b11681e613/applications/Zeeve_Parachain_deployment_zoombienet_testing_automation.md#L171):~~ => a guide has been [added](https://github.com/Zeeve-App/larch/blob/1220dc56b235f60b150741d1b394dad5791e0db6/docs/development/test_coverage.md) + + > ~~Core functions will be fully covered by unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests.~~ + +- [x] backend tests ~~pass~~ ~~fail now (even if I change the `larchVersion` to `1.0.1` in the [tests](https://github.com/Zeeve-App/larch/blob/1220dc56b235f60b150741d1b394dad5791e0db6/packages/backend/__tests__/routes.test.ts#L85))~~ pass again, after installing podman: + + ```bash + larch % npm run test + + > test + > lerna run test + + lerna notice cli v7.1.0 + + > larch-backend:build [existing outputs match the cache, left as is] + + + > larch-backend@1.0.1 build + > node scripts/version.mjs && rm -rf dist && tsc + + /Users/xxx/repos/larch/packages/backend/scripts + + > larch-backend:test + + > larch-backend@1.0.1 test + > vitest run + RUN v0.32.2 /Users/xxx/repos/larch/packages/backend + stdout | unknown test + sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs https://knexjs.org/guide/query-builder.html#insert). + stdout | unknown test + sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs https://knexjs.org/guide/query-builder.html#insert). + ✓ __tests__/zombienet.test.ts (1 test) 2ms + stdout | __tests__/module.providers.test.ts > Podman > should get Podman cleanup + podman pod ps -f label=zombie-ns=zombie-6b302120 --format {{.Name}} + stdout | unknown test + sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs https://knexjs.org/guide/query-builder.html#insert). + stdout | unknown test + ui enabled + api enabled + GET / + GET /ui/* + GET /api/larch/network + POST /api/larch/network/list + POST /api/larch/network/create + POST /api/larch/network/create + POST /api/larch/network/update + POST /api/larch/network/update + GET /api/larch/network/delete + POST /api/larch/network/test + POST /api/larch/network/test + GET /api/larch/network/run + POST /api/larch/network/run-list + GET /api/larch/network/status + POST /api/larch/template/create + POST /api/larch/template/create + GET /api/larch/template + POST /api/larch/template/update + POST /api/larch/template/update + GET /api/larch/template/delete + POST /api/larch/template/list + POST /api/larch/template/clone + GET /api/larch/user_operation + GET /api/larch/user_operation/purge + POST /api/larch/user_operation/list + GET /api/larch/version + app is listening on port 9000 + ✓ __tests__/routes.test.ts (22 tests) 58ms + stdout | __tests__/module.providers.test.ts > Podman > should get Podman cleanup + { + id: '0b4a3864-3da8-439d-b8ab-ea70452df428', + intention: 'NETWORK_CLEANUP', + relatedId: 'zombie-6b302120', + command: 'podman pod ps -f label=zombie-ns=zombie-6b302120 --format {{.Name}}', + stdError: 'Q2Fubm90IGNvbm5lY3QgdG8gUG9kbWFuLiBQbGVhc2UgdmVyaWZ5IHlvdXIgY29ubmVjdGlvbiB0byB0aGUgTGludXggc3lzdGVtIHVzaW5nIGBwb2RtYW4gc3lzdGVtIGNvbm5lY3Rpb24gbGlzdGAsIG9yIHRyeSBgcG9kbWFuIG1hY2hpbmUgaW5pdGAgYW5kIGBwb2RtYW4gbWFjaGluZSBzdGFydGAgdG8gbWFuYWdlIGEgbmV3IExpbnV4IFZNCkVycm9yOiB1bmFibGUgdG8gY29ubmVjdCB0byBQb2RtYW4gc29ja2V0OiBHZXQgImh0dHA6Ly9kL3Y0LjUuMS9saWJwb2QvX3BpbmciOiBkaWFsIHVuaXggLy8vdmFyL2ZvbGRlcnMvZnAvYzluc2JjMWQ2X3FndmsyNHdmZGY5eWMwMDAwMGduL1QvcG9kbWFuLXJ1bi0tMS9wb2RtYW4vcG9kbWFuLnNvY2s6IGNvbm5lY3Q6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkK', + stdOutput: '', + statusCode: 125, + createdAt: '2023-07-12 12:15:53' + } + ✓ __tests__/module.providers.test.ts (3 tests) 637ms + stdout | __tests__/utils.test.ts > file download > should download file + Total file size: 187351204, Current file size: 277679, Percent downloaded: 0.15 + stdout | __tests__/utils.test.ts > file download > should download file + Total file size: 187351204, Current file size: 187351204, Percent downloaded: 100.00 + Test Files 4 passed (4) + Tests 30 passed (30) + Start at 14:15:53 + Duration 10.47s (transform 122ms, setup 1ms, collect 487ms, tests 11.05s, environment 0ms, prepare 149ms) + + ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— + + > Lerna (powered by Nx) Successfully ran target test for project larch-backend and 1 task it depends on (11s) + + Nx read the output from the cache instead of running the command for 1 out of 2 tasks. + ``` + +- [x] coverage ~~also fails~~ passes as well after installing podman, shows test coverage >50% in almost all of the files: + + ```bash + larch % npm run coverage + + > coverage + > lerna run coverage + + lerna notice cli v7.1.0 + + > larch-backend:coverage + + > larch-backend@1.0.1 coverage + > vitest run --coverage + RUN v0.32.2 /Users/seraya/repos/larch/packages/backend + Coverage enabled with v8 + stdout | unknown test + sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs https://knexjs.org/guide/query-builder.html#insert). + stdout | unknown test + sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs https://knexjs.org/guide/query-builder.html#insert). + stdout | __tests__/module.providers.test.ts > Podman > should get Podman cleanup + podman pod ps -f label=zombie-ns=zombie-6b302120 --format {{.Name}} + ✓ __tests__/zombienet.test.ts (1 test) 2ms + stdout | unknown test + sqlite does not support inserting default values. Set the `useNullAsDefault` flag to hide this warning. (see docs https://knexjs.org/guide/query-builder.html#insert). + stdout | unknown test + ui enabled + api enabled + GET / + GET /ui/* + GET /api/larch/network + POST /api/larch/network/list + POST /api/larch/network/create + POST /api/larch/network/create + POST /api/larch/network/update + POST /api/larch/network/update + GET /api/larch/network/delete + POST /api/larch/network/test + POST /api/larch/network/test + GET /api/larch/network/run + POST /api/larch/network/run-list + GET /api/larch/network/status + POST /api/larch/template/create + POST /api/larch/template/create + GET /api/larch/template + POST /api/larch/template/update + POST /api/larch/template/update + GET /api/larch/template/delete + POST /api/larch/template/list + POST /api/larch/template/clone + GET /api/larch/user_operation + GET /api/larch/user_operation/purge + POST /api/larch/user_operation/list + GET /api/larch/version + app is listening on port 9000 + ✓ __tests__/routes.test.ts (22 tests) 52ms + stdout | __tests__/module.providers.test.ts > Podman > should get Podman cleanup + { + id: '08a5d876-1df3-43ba-a980-683e13acec76', + intention: 'NETWORK_CLEANUP', + relatedId: 'zombie-6b302120', + command: 'podman pod ps -f label=zombie-ns=zombie-6b302120 --format {{.Name}}', + stdError: 'Q2Fubm90IGNvbm5lY3QgdG8gUG9kbWFuLiBQbGVhc2UgdmVyaWZ5IHlvdXIgY29ubmVjdGlvbiB0byB0aGUgTGludXggc3lzdGVtIHVzaW5nIGBwb2RtYW4gc3lzdGVtIGNvbm5lY3Rpb24gbGlzdGAsIG9yIHRyeSBgcG9kbWFuIG1hY2hpbmUgaW5pdGAgYW5kIGBwb2RtYW4gbWFjaGluZSBzdGFydGAgdG8gbWFuYWdlIGEgbmV3IExpbnV4IFZNCkVycm9yOiB1bmFibGUgdG8gY29ubmVjdCB0byBQb2RtYW4gc29ja2V0OiBHZXQgImh0dHA6Ly9kL3Y0LjUuMS9saWJwb2QvX3BpbmciOiBkaWFsIHVuaXggLy8vdmFyL2ZvbGRlcnMvZnAvYzluc2JjMWQ2X3FndmsyNHdmZGY5eWMwMDAwMGduL1QvcG9kbWFuLXJ1bi0tMS9wb2RtYW4vcG9kbWFuLnNvY2s6IGNvbm5lY3Q6IG5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkK', + stdOutput: '', + statusCode: 125, + createdAt: '2023-07-12 12:18:35' + } + ✓ __tests__/module.providers.test.ts (3 tests) 642ms + stdout | __tests__/utils.test.ts > file download > should download file + Total file size: 187351204, Current file size: 260565, Percent downloaded: 0.14 + stdout | __tests__/utils.test.ts > file download > should download file + Total file size: 187351204, Current file size: 187351204, Percent downloaded: 100.00 + ✓ __tests__/utils.test.ts (4 tests) 10153ms + Test Files 4 passed (4) + Tests 30 passed (30) + Start at 14:18:34 + Duration 10.34s (transform 114ms, setup 0ms, collect 508ms, tests 10.85s, environment 0ms, prepare 175ms) + % Coverage report from v8 + -------------------|---------|----------|---------|---------|------------------- + File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s + -------------------|---------|----------|---------|---------|------------------- + All files | 80.45 | 62.23 | 72.56 | 80.45 | + src | 91.4 | 80 | 100 | 91.4 | + config.ts | 100 | 100 | 100 | 100 | + server.ts | 86.9 | 80 | 100 | 86.9 | 43,66-75 + version.ts | 100 | 100 | 100 | 100 | + src/api | 100 | 100 | 100 | 100 | + index.ts | 100 | 100 | 100 | 100 | + src/api/larch | 100 | 100 | 100 | 100 | + index.ts | 100 | 100 | 100 | 100 | + .../larch/network | 78.35 | 48.14 | 81.81 | 78.35 | + controllers.ts | 68.53 | 36.36 | 77.77 | 68.53 | ...97-200,215-216 + routes.ts | 100 | 100 | 100 | 100 | + schemas.ts | 100 | 100 | 100 | 100 | + validations.ts | 100 | 100 | 100 | 100 | + ...larch/template | 80.2 | 41.17 | 87.5 | 80.2 | + controllers.ts | 75.3 | 38.46 | 83.33 | 75.3 | ...20-126,154-166 + routes.ts | 100 | 100 | 100 | 100 | + schemas.ts | 100 | 100 | 100 | 100 | + validations.ts | 67.34 | 50 | 100 | 67.34 | 25-32,40-47 + ...user_operation | 93.33 | 42.85 | 100 | 93.33 | + controllers.ts | 90.78 | 42.85 | 100 | 90.78 | 36-42 + routes.ts | 100 | 100 | 100 | 100 | + .../larch/version | 96.36 | 50 | 100 | 96.36 | + controllers.ts | 93.75 | 50 | 100 | 93.75 | 30-31 + routes.ts | 100 | 100 | 100 | 100 | + src/modules | 58.56 | 52.17 | 41.17 | 58.56 | + exec_run.ts | 82.29 | 58.33 | 66.66 | 82.29 | ...63,81-82,93-96 + network.ts | 45.06 | 37.5 | 50 | 45.06 | ...43-154,157-162 + ..._operation.ts | 100 | 100 | 100 | 100 | + zombienet.ts | 45.04 | 50 | 14.28 | 45.04 | ...,76-98,101-111 + src/modules/db | 100 | 100 | 100 | 100 | + sqlite.ts | 100 | 100 | 100 | 100 | + ...modules/models | 81.83 | 63.49 | 70.21 | 81.83 | + exec_run.ts | 82.58 | 76.47 | 73.33 | 82.58 | ...56-159,162-178 + network.ts | 69.59 | 53.33 | 53.84 | 69.59 | ...19-126,167-171 + template.ts | 90.55 | 56.25 | 77.77 | 90.55 | 71-78,88-91 + ..._operation.ts | 89.38 | 66.66 | 80 | 89.38 | 59-66,76-79 + ...ules/providers | 63.79 | 57.14 | 66.66 | 63.79 | + common.ts | 65.21 | 50 | 50 | 65.21 | 21-36 + podman.ts | 62.85 | 60 | 75 | 62.85 | 37-58,61-64 + src/utils | 96.15 | 87.87 | 88.88 | 96.15 | + declaration.ts | 91.3 | 100 | 75 | 91.3 | 59-64 + download.ts | 92.3 | 71.42 | 100 | 92.3 | 36-38,62-63 + fs_helper.ts | 100 | 100 | 80 | 100 | + misc.ts | 100 | 100 | 100 | 100 | + pagination.ts | 96.82 | 71.42 | 100 | 96.82 | 51-52 + time.ts | 100 | 100 | 100 | 100 | + validation.ts | 100 | 100 | 100 | 100 | + -------------------|---------|----------|---------|---------|------------------- + + ———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————— + + > Lerna (powered by Nx) Successfully ran target coverage for project larch-backend (11s) + ``` \ No newline at end of file diff --git a/evaluations/liberland_2_jkl.md b/evaluations/liberland_2_jkl.md new file mode 100644 index 000000000..4fa1ecd52 --- /dev/null +++ b/evaluations/liberland_2_jkl.md @@ -0,0 +1,445 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/liberland.md +- **Milestone:** 2 +- **Kusama Identity:** Ha27MB4gKH36ieRPa1T1ASqhUz4sVxMoVmK7o5CS6tXDqjW +- **Previously successfully merged evaluation:** https://github.com/UniversalDot/Grant-Milestone-Delivery/blob/master/evaluations/crossbow_1_jkl.md + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
| [Link](https://github.com/liberland/liberland_substrate/blob/main/LICENSE-MIT)| License is Ok. The MIT license is also referenced in their pallets.| +| 0b. | Documentation |
  • [x]
| [Link](https://liberland-1.gitbook.io/wiki/v/public-documents/blockchain/for-developers-and-testers)| Good inline documentation in pallets. It contains dispatchable functions, configs, etc. The Gitbook is also good, but can be further imrproved. See 1. in General Notes.| +| 0c. | Testing Guide |
  • [x]
| [Testing Guide](https://docs.google.com/document/d/1ntrT6bafTD2LfXUG9QLxOieogXELn9icN1y__EGfZ98/edit#heading=h.yfda4shb4ggs) | ~~I can see you have created tests for your pallets. Please include a short guide on how to run these tests. Incude this guide in your README document.~~ See [Testing Guide Feedback](#testing-guide-feedback) | +| 0d. | Docker |
  • [x]
| [Link](https://hub.docker.com/layers/liberland/blockchain-node/latest/images/sha256-e59f697c8df37b6c8c509e1c949cb23c052b4e95463f087abb044d4873a791b5?context=explore) | Docker Image works. See 3. In General notes. | +| 0e. | Article |
  • [x]
| [Link](https://docs.google.com/document/d/1IiOEka3eZOOyM7GuT5aVJYihdSz3qYbWqwcTNS_Pvqg/edit#heading=h.gvgdsh4wfciv)| Draft is ok.| +| 1. | Land owner Pallet |
  • [x]
| [Modified NFT Pallet](https://github.com/liberland/liberland_substrate/tree/bc60180005a17a3953c95b96fb06b95fe539f6cb/frame/nfts), [Office Pallet](https://github.com/liberland/liberland_substrate/tree/d2f9692e7137d830b6ea681b22e44d91b4255b97/frame/office), [PR for on-chain Geo validation](https://github.com/liberland/liberland_substrate/pull/291/files#diff-2126ae6766e9fabbb2462c7c1d2b0494c27b7c6e518f4672b1cc3a9d335afb3cR323) | See [Land owner Pallet Feedback](#landowner-pallet-feedback) | +| 2 | Metaverse integration Pallet |
  • [x]
| [Deployed Metaverse](https://liberverse.net/), [Live API](http://api.liberverse.net/v1/plots), [api repo](https://github.com/DorianSternVukotic/liberland-middleware-api/tree/3c71577108b1035fb8e7c1cd35ad224e53ea6a61) | See [Metaverse Integration Pallet Feedback](#metaverse-integration-pallet-feedback) | +| 3 | Company Registration Pallet |
  • [x]
| [Link](https://github.com/liberland/liberland_substrate/blob/main/frame/registry/src/lib.rs)| Good. But it seems to be inspired from the original substrate [Registry pallet](https://github.com/liberland/liberland_substrate/blob/main/frame/registry/src/lib.rs)| + + + +## General Notes + +1. In your documentation [here](https://liberland-1.gitbook.io/wiki/v/public-documents/blockchain/for-developers-and-testers/testing_guide), you are including link to google doc, instead of having the information available on the wiki. Consolidate your documentation in one place so you have one source of truth. + +2. In your Testing Guide, you are including some keys together with the mnemonics used to derive the keys. Make sure you keep all key information interally and preferably private, even if you are using for testing accounts. + +3. Docker image works. It seems we can run your node in --dev mode and from chain-spec. Maybe you can include this in your documentation. + +``` +2023-04-14 13:26:06 Substrate Node +2023-04-14 13:26:06 ✌️ version 3.0.0-dev-unknown +2023-04-14 13:26:06 ❤️ by Parity Technologies , 2017-2023 +2023-04-14 13:26:06 📋 Chain specification: Development +2023-04-14 13:26:06 🏷 Node name: spotted-wool-7161 +2023-04-14 13:26:06 👤 Role: AUTHORITY +2023-04-14 13:26:06 💾 Database: RocksDb at /tmp/substrateAV9b9f/chains/dev/db/full +2023-04-14 13:26:06 ⛓ Native runtime: Liberland-8 (liberland-node-0.tx1.au10) +2023-04-14 13:26:09 [0] 💸 generated 1 npos voters, 1 from validators and 0 nominators +2023-04-14 13:26:09 [0] 💸 generated 1 npos targets +2023-04-14 13:26:10 You're running on a system with a broken `madvise(MADV_DONTNEED)` implementation. This will result in lower performance. +2023-04-14 13:26:27 🔨 Initializing Genesis block/state (state: 0x12f5…4c6f, header-hash: 0x9f82…9441) +2023-04-14 13:26:27 👴 Loading GRANDPA authority set from genesis on what appears to be first startup. +``` + +### Concluding Remarks + +#### Remarks by @JosephKnecht-lab + + +Based on my evaluation, you have not provided all the deliverables as described in you application. Thus I have to reject this delivery. My advise is to update your initial application with the exact deliverables that you are delivering for this milestone, before it can be accepted. + +Furthermore, a lot of your pallets are derivative work from already existing pallets (such as registry, nfts) and I would expect more original work for grant submission. + +Note that this evaluation is not binding since I do not work of Web3 Foundation, so the Web3 team can accept your delivery in its current state. + +#### Remarks by @takahser + +I've added my remarks below in separate chapters: + +- [Testing Guide Feedback](#testing-guide-feedback) +- [Landowner Pallet Feedback](#landowner-pallet-feedback) +- [Metaverse Integration Pallet Feedback](#metaverse-integration-pallet-feedback) + +## Testing Guide Feedback + +- testing instructions can found in the [gitbook](https://liberland-1.gitbook.io/wiki/v/public-documents/blockchain/for-developers-and-testers/dev#run-automated-tests) +- ~~however, running the node failed with an "cannot deserialize module: UnknownOpcode(192)" error on my machine~~ the node can be run successfully: + + ```bash + liberland_substrate % cargo run --release -- --dev + (...) + Compiling sc-basic-authorship v0.10.0-dev (https://github.com/paritytech/substrate?branch=polkadot-v0.9.37#f38bd667) + Finished release [optimized] target(s) in 1m 19s + Running `target/release/substrate --dev` + 2023-05-08 23:53:04 Substrate Node + 2023-05-08 23:53:04 ✌️ version 3.0.0-dev-bc60180005a + 2023-05-08 23:53:04 ❤️ by Parity Technologies , 2017-2023 + 2023-05-08 23:53:04 📋 Chain specification: Development + 2023-05-08 23:53:04 🏷 Node name: jaded-ticket-2873 + 2023-05-08 23:53:04 👤 Role: AUTHORITY + 2023-05-08 23:53:04 💾 Database: RocksDb at /var/folders/9y/ny58jn152dzcqf036v5cb4nh0000gn/T/substratexgcdzb/chains/dev/db/full + 2023-05-08 23:53:04 ⛓ Native runtime: Liberland-8 (liberland-node-0.tx1.au10) + 2023-05-08 23:53:05 [0] 💸 generated 1 npos voters, 1 from validators and 0 nominators + 2023-05-08 23:53:05 [0] 💸 generated 1 npos targets + 2023-05-08 23:53:06 🔨 Initializing Genesis block/state (state: 0x724a…1821, header-hash: 0xd235…2507) + 2023-05-08 23:53:06 👴 Loading GRANDPA authority set from genesis on what appears to be first startup. + 2023-05-08 23:53:07 👶 Creating empty BABE epoch changes on what appears to be first startup. + 2023-05-08 23:53:07 Using default protocol ID "sup" because none is configured in the chain specs + 2023-05-08 23:53:07 🏷 Local node identity is: 12D3KooWLq8fs6WMwp783ETG4Ck4Wsu7SKECqcWARkvR7Et6QpdA + 2023-05-08 23:53:07 💻 Operating system: macos + 2023-05-08 23:53:07 💻 CPU architecture: aarch64 + 2023-05-08 23:53:07 📦 Highest known block at #0 + 2023-05-08 23:53:07 〽️ Prometheus exporter started at 127.0.0.1:9615 + 2023-05-08 23:53:07 Running JSON-RPC HTTP server: addr=127.0.0.1:9933, allowed origins=["*"] + 2023-05-08 23:53:07 Running JSON-RPC WS server: addr=127.0.0.1:9944, allowed origins=["*"] + 2023-05-08 23:53:07 🏁 CPU score: 718.16 MiBs + 2023-05-08 23:53:07 🏁 Memory score: 41.01 GiBs + 2023-05-08 23:53:07 🏁 Disk score (seq. writes): 3.05 GiBs + 2023-05-08 23:53:07 🏁 Disk score (rand. writes): 442.05 MiBs + 2023-05-08 23:53:07 👶 Starting BABE Authorship worker + 2023-05-08 23:53:12 🙌 Starting consensus session on top of parent 0xd2352ca73715ed46b279cd3a3e6dbc3f11ed17f710a200d954777405c9842507 + 2023-05-08 23:53:12 🎁 Prepared block for proposing at 1 (1 ms) [hash: 0xbe8f75bc8fa31df6cebf7a73556205eff75ce20902a19667d6b1190dd484c832; parent_hash: 0xd235…2507; extrinsics (1): [0x0cc8…b01e]] + 2023-05-08 23:53:12 🔖 Pre-sealed block for proposal at 1. Hash now 0xe325a2316b5f622f5b7ae76bcc1143af3b8a3ded12e6962098a4b86293950c3f, previously 0xbe8f75bc8fa31df6cebf7a73556205eff75ce20902a19667d6b1190dd484c832. + 2023-05-08 23:53:12 👶 New epoch 0 launching at block 0xe325…0c3f (block slot 280597132 >= start slot 280597132). + 2023-05-08 23:53:12 👶 Next epoch starts at slot 280597732 + 2023-05-08 23:53:12 ✨ Imported #1 (0xe325…0c3f) + ``` + +- when running the tests, ~~most pass but the ~~"benchmark_block_works"~~ "temp_base_path_works" test fails~~ they all pass: + +```bash + liberland_substrate % cargo test --release --features runtime-benchmarks + running 17 tests + test impls::multiplier_tests::congested_chain_simulation ... ignored + test __pallet_staking_reward_curve_test_module::reward_curve_piece_count ... ok + test tests::call_size ... ok + test tests::perbill_as_onchain_accuracy ... ok + test tests::check_whitelist ... ok + test tests::validate_transaction_submitter_bounds ... ok + test impls::multiplier_tests::multiplier_can_grow_from_zero ... ok + test impls::multiplier_tests::weight_mul_decrease_on_small_block ... ok + test impls::multiplier_tests::multiplier_cannot_go_below_limit ... ok + test __construct_runtime_integrity_test::runtime_integrity_tests ... ok + test impls::multiplier_tests::stateless_weight_mul ... ok + test impls::multiplier_tests::truth_value_update_poc_works ... ok + test impls::multiplier_tests::weight_to_fee_should_not_overflow_on_large_weights ... ok + test impls::multiplier_tests::weight_mul_grow_on_big_block ... ok + test __pallet_staking_reward_curve_test_module::reward_curve_precision ... ok + test impls::multiplier_tests::min_change_per_day ... ok + test impls::multiplier_tests::time_to_reach_zero ... ok + + test result: ok. 16 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 5.20s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 8 tests + test chain_spec::tests::test_connectivity ... ignored + test service::tests::test_consensus ... ignored + test service::tests::test_sync ... ignored + test chain_spec::tests::test_mainnet_chain_spec ... ok + test chain_spec::tests::test_bastiat_test_net_chain_spec ... ok + test chain_spec::tests::test_staging_test_net_chain_spec ... ok + test chain_spec::tests::test_create_development_chain_spec ... ok + test chain_spec::tests::test_create_local_testnet_chain_spec ... ok + + test result: ok. 5 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.05s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 1 test + test benchmark_block_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 35.41s + + + running 1 test + test benchmark_extrinsic_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.32s + + + running 1 test + test benchmark_machine_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.21s + + + running 1 test + test benchmark_overhead_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.64s + + + running 1 test + test benchmark_pallet_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.70s + + + running 1 test + test benchmark_storage_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.27s + + + running 1 test + test build_spec_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s + + + running 1 test + Completed in 200 ms. + test check_block_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 35.89s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 1 test + test export_import_revert ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 51.61s + + + running 1 test + Header: + Header { parent_hash: 0xa43cf5a71ecedbfb937170779b80cf98a92eb3cc2951d24a39d66525f4612cd4, number: 1, state_root: 0x2d4dc5655d08817923bb91df275a0fd237473988a308925becea23459e34a787, extrinsics_root: 0x6b9b2af53b4a2ccf00ffe5698b8760af862f767a200b4e4d88d3cf63b7938899, digest: Digest { logs: [DigestItem::PreRuntime([66, 65, 66, 69], [2, 0, 0, 0, 0, 130, 79, 190, 16, 0, 0, 0, 0]), DigestItem::Consensus([66, 65, 66, 69], [1, 4, 212, 53, 147, 199, 21, 253, 211, 28, 97, 20, 26, 189, 4, 169, 159, 214, 130, 44, 133, 88, 133, 76, 205, 227, 154, 86, 132, 231, 165, 109, 162, 125, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), DigestItem::Seal([66, 65, 66, 69], [230, 81, 33, 33, 189, 143, 33, 123, 46, 13, 211, 142, 60, 38, 4, 196, 161, 121, 27, 43, 53, 247, 76, 77, 183, 205, 180, 146, 180, 219, 85, 123, 144, 184, 106, 250, 116, 26, 201, 205, 5, 84, 63, 124, 106, 147, 230, 143, 182, 180, 26, 78, 249, 118, 60, 241, 22, 108, 34, 254, 214, 115, 72, 130])] } } + Block bytes: a43cf5a71ecedbfb937170779b80cf98a92eb3cc2951d24a39d66525f4612cd4042d4dc5655d08817923bb91df275a0fd237473988a308925becea23459e34a7876b9b2af53b4a2ccf00ffe5698b8760af862f767a200b4e4d88d3cf63b79388990c0642414245340200000000824fbe1000000000044241424529010104d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0100000000000000000000000000000000000000000000000000000000000000000000000000000005424142450101e6512121bd8f217b2e0dd38e3c2604c4a1791b2b35f74c4db7cdb492b4db557b90b86afa741ac9cd05543f7c6a93e68fb6b41a4ef9763cf1166c22fed673488204280403000be176676c8801 + Extrinsics (1) + - 0: + 0403000be176676c8801 + Bytes: 280403000be176676c8801 + + test inspect_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 31.91s + + + running 1 test + "/tmp/.tmpUAYxR5/chains/dev/db/full" removed. + test purge_chain_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 33.60s + + + running 1 test + test remember_state_pruning_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 49.35s + + + running 2 tests + test running_two_nodes_with_the_same_ws_port_should_work ... ok + test running_the_node_works_and_can_be_interrupted has been running for over 60 seconds + test running_the_node_works_and_can_be_interrupted ... ok + + test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 66.06s + + + running 1 test + test telemetry_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.93s + + + running 1 test + test temp_base_path_works ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 33.65s + + + running 2 tests + test test_regex_matches_properly ... ok + test version_is_full ... ok + + test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 80 tests + test benchmarking::bench_external_propose ... ok + (...) + test benchmarking::bench_second ... ok + + test result: ok. 80 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s + + + running 82 tests + test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok + (...) + test benchmarking::bench_election_phragmen ... ok + + test result: ok. 82 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.66s + + + running 36 tests + test benchmarking::bench_remove_sub ... ok + (...) + test benchmarking::bench_kill_identity ... ok + + test result: ok. 36 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 22 tests + test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok + (...) + test benchmarking::benchmark_tests::test_benchmarks ... ok + + test result: ok. 22 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s + + + running 29 tests + test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok + (...) + test tests::treasury_llm_transfer_to_politipool_locks_funds ... ok + + test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + + running 81 tests + test benchmarking::bench_burn ... ok + (...) + test benchmarking::bench_destroy ... ok + + test result: ok. 81 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.04s + + + running 16 tests + test tests::remove_clerk_deposits_event ... ok + (...) + test tests::set_clerk_verifies_origin ... ok + + test result: ok. 16 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 46 tests + test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok + (...) + test tests::request_registration_frees_reserves_if_possible ... ok + + test result: ok. 46 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + + running 161 tests + test benchmarking::bench_force_no_eras ... ok + (...) + test benchmarking::bench_get_npos_voters ... ok + + test result: ok. 161 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.44s + + + running 2 tests + test src/lib.rs - benches::add_benchmarks (line 1717) ... ignored + test src/lib.rs - benches::list_benchmarks (line 1717) ... ignored + + test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 3 tests + test src/lib.rs - (line 14) ... ignored + test src/lib.rs - (line 20) ... ignored + test src/lib.rs - (line 34) ... ignored + + test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.01s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 1 test + test src/lib.rs - (line 41) ... ignored + + test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s + + + running 1 test + test src/lib.rs - (line 159) ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s +``` + +## Landowner Pallet Feedback + +Previous comment by @JosephKnecht-lab: + +> Your pallet is almost exact fork from pallet-nfts. You have made small modificaiton to add citizenship information. In the original application you state you will use geo coordination but I don't see this reflected in code. Can you make the requirements for this pallet more explicit? + +Final assessment by @takahser: + +While there is no Landowner pallet, the functionality described in the grant proposal is covered by the NFT and Office pallets. In the previous version that @JosephKnecht-lab assessed, there was no on-chain validation logic for creating plots but this was fixed by a [follow-up PR](https://github.com/liberland/liberland_substrate/pull/291/files#diff-2126ae6766e9fabbb2462c7c1d2b0494c27b7c6e518f4672b1cc3a9d335afb3cR323). The validation takes care that plots are stored only if they're not self-intersecting, contain a minimum number of points (3), are correctly structured and are located within the allowed coordinates as configured (for the sake of this use case, the allowed coordinates equal the coordinates of Liberland). Personally, I agree with the approach to re-use the existing NFTs pallet rather than recreating the logic and adding the missing bits on top of it. This has been smoke-tested successfully. + +## Metaverse Integration Pallet Feedback + +Previous comment by @JosephKnecht-lab: + +> Based on the submitted requirements in your application [document](https://github.com/w3f/Grants-Program/blob/master/applications/liberland.md), you have not provided a pallet implementation. I understand that requirements can change during development, but these changes have to be reflected back in the original requirements document. + +Final assessment by @takahser: + +Similarly to the Landowner Pallet, while there is no pallet called "Metaverse Integration Pallet", the functionality the grantee promised in their proposal has actually been implemented. While the plotdata for the metaverse is stored on-chain in an efficient, encoded format, their centrally hosted middleware allows for easy decoding into a format that can be interpreted more easily by the metaverse. They also implemented an [on-chain role-based access model](https://github.com/liberland/liberland_substrate/blob/bc60180005a17a3953c95b96fb06b95fe539f6cb/bin/node/runtime/src/lib.rs#L300-L331). This has been smoke-tested successfully. diff --git a/evaluations/omniversedlt_2_dsm-w3f.md b/evaluations/omniversedlt_2_dsm-w3f.md new file mode 100644 index 000000000..cdc39df9b --- /dev/null +++ b/evaluations/omniversedlt_2_dsm-w3f.md @@ -0,0 +1,302 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Omniverse%20DLT.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
| - [Omniverse Swap](https://github.com/Omniverse-Web3-Labs/omniverse-swap/blob/milestone-2/LICENSE)
-[Omniverse Ink!](https://github.com/Omniverse-Web3-Labs/omniverse-ink/blob/main/LICENSE) | | +| 0b. | Documentation |
  • [x]
| - [A high-level Priciple of the Omniverse Swap](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/High-Level%20Principle%20of%20Omniverse%20Swap.md)
- [How to dev with `Ink!`](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/dev-for-Ink!.md)
- [Tutorial of how to auto-deploy](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/Auto-Deployment.md)
- [Tutorial of how to operate](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/Auto-Tutorial.md) | | +| 0c. | Testing Guide |
  • [x]
| [The test guide for milestone 2](https://github.com/Omniverse-Web3-Labs/Omniverse-DLT-Introduction/blob/main/docs/test-guide/m2-test-guide.md) | | +| 0d. | Docker |
  • [x]
| [Synchronizer docker](https://github.com/Omniverse-Web3-Labs/omniverse-synchronizer/tree/milestone-2/docker)| | +| 0e. | Article |
  • [x]
| [link](https://medium.com/@xiyuzheng1984/the-ink-tech-stack-along-with-a-swap-for-o-dlt-tokens-be128bb955e6) | | +| 1. | Substrate module: swap |
  • [x]
| - [Pallet for Omniverse Swap](https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/milestone-2/pallets/omni-swap)
-[the simulation of the o-amm](https://github.com/Omniverse-Web3-Labs/o-amm)
- [off-chain calc and on-chain verify](https://github.com/Omniverse-Web3-Labs/O-AMM-ParaSim/tree/main) | | +| 2. | Substrate chain |
  • [x]
| [Parachain itself](https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/milestone-2) | | +| 3. | Ink! smart contract implementation |
  • [x]
| [Ink! tech stacks](https://github.com/Omniverse-Web3-Labs/omniverse-ink) | | +| 4. | Off-Chain Synchronizer |
  • [x]
| [link](https://github.com/Omniverse-Web3-Labs/omniverse-synchronizer/tree/milestone-2) | | + +## Evaluation V2 + +All pending problems and doubts were solved and are explained [here in this comment](https://github.com/w3f/Grant-Milestone-Delivery/pull/889#issuecomment-1614276659). + +## Evaluation V1 + +### License + +The repository [omniverse-ink](https://github.com/Omniverse-Web3-Labs/omniverse-ink/blob/main/LICENSE) shows the "GPL v3.0" LICENSE as expected. + +The repository [omniverse-swap](https://github.com/Omniverse-Web3-Labs/omniverse-swap/blob/milestone-2/LICENSE) shows "The Unlicense" as LICENSE. + +### Auto testing + +I followed the auto-testing documentation and achieved the expected results. However, when I attempted to execute the swap test once more using the command `node src/index.js -t swap`, it triggered a balance error within the "Test Workflow", the specific error log is provided below. Subsequently, I ran the test a few times again and it worked properly. + +```sh +UnhanledRejection AssertionError [ERR_ASSERTION]: Balance error + at Test.getAllBalance (/home/user/User/w3f/omniverse-system-test/src/tests/ft.js:434:7) + at Test.doSwapTest (/home/user/User/w3f/omniverse-system-test/src/tests/ft.js:411:12) + at runNextTicks (node:internal/process/task_queues:60:5) + at listOnTimeout (node:internal/timers:538:9) + at process.processTimers (node:internal/timers:512:7) + at async Test.testFlow (/home/user/User/w3f/omniverse-system-test/src/tests/ft.js:256:7) + at async Test.runTest (/home/user/User/w3f/omniverse-system-test/src/tests/ft.js:459:5) + at async test (/home/user/User/w3f/omniverse-system-test/src/index.js:108:3) + at async /home/user/User/w3f/omniverse-system-test/src/index.js:129:5 { + generatedMessage: false, + code: 'ERR_ASSERTION', + actual: false, + expected: true, + operator: '==' +} +``` + +### Auto Deployment + +The deployment worked as expected following the auto-deployment video, the docker containers worked as expected as well. + +### Auto Tutorial + +After making the deployment, the tutorial worked as expected following the auto tutorial operation video steps. The log below shows the result after following the tutorial steps to get the omniverse token balance: + +```sh +node index.js --omniBalance CHAIN2,SKYWALKER,0x8bb25caae0a466afde04833610cf0c998050693974188853bdb982ed60e5e08ee71b3c9c0f900f8191512787e47908277272f71f991cb15fa364bad8018ef40b +secp256k1 unavailable, reverting to browser version +amount 4,009,900 +``` + +Through the tutorial, I received some `secp256k1 unavailable, reverting to browser version` logs as in the above shell block, is it expected? + +### Documentation + +- "A high-level Priciple of the Omniverse Swap" and "How to dev with Ink!" docs are ok. + +### Article + +- medium article “The Ink! Tech Stack along with a Swap for O-DLT Tokens” is ok + +### Off-Chain Synchronizer + +- omniverse-synchronizer tested with Docker ok + +### off-chain calc and on-chain verify + +The tutorial produced the expected result after building and starting a node locally, following the [off-chain-calc](https://github.com/Omniverse-Web3-Labs/O-AMM-ParaSim/tree/main/off-chain-calc) : + +Make a swap calculation: + +```sh +node index.mjs -s 100,10000,282842712,200000000,x,y,kitty +--------------The input token information---------------- +Current amount of the input token is: 10000 +The real input Δamount of the input token is 100. The parameter for on-chain call needs to be 1000000 +--------------The output token information---------------- +The calculated output Δamount of the token to be swapped out is 110.36116839525494. The parameter for on-chain call needs to be 1103611.6839525495 +The virtual amount of the output token is: 18392.66996696474. The parameter for on-chain call needs to be 183926699.6696474 +--------------Full parameters for on-chain call---------------- +{ + poolName: 'kitty', + 'dIn.t_name': 'x', + 'dIn.t_value': 1000000, + 'dOut.t_name': 'y', + 'dOut.t_value': 1103611, + virtualOut: 183926699 +} +``` + +The On-Chain verification worked as expected. + +### omniverse protocol + +Running the tests worked as expected, below are the tests and the tests coverage. + +```sh +running 21 tests +test omniverse_protocol::tests::check_compressed_pubkey_to_account ... ok +test omniverse_protocol::tests::new_works ... ok +test omniverse_protocol::tests::get_chain_id_works ... ok +test omniverse_protocol::tests::omniverse_mint_works ... ok +test omniverse_protocol::tests::only_owner_works ... ok +test omniverse_protocol::tests::check_omniverse_transfer_works ... ok +test omniverse_protocol::tests::check_omniverse_burn_works ... ok +test omniverse_protocol::tests::omniverse_burn_works ... ok +test omniverse_protocol::tests::get_cached_transaction_works ... ok +test omniverse_protocol::tests::check_owner_works ... ok +test omniverse_protocol::tests::omniverse_transfer_works ... ok +test omniverse_protocol::tests::get_transaction_count_works ... ok +test omniverse_protocol::tests::get_transaction_data_works ... ok +test omniverse_protocol::tests::check_execution_works ... ok +test omniverse_protocol::tests::send_omniverse_transaction_works ... ok +test omniverse_protocol::tests::send_omniverse_transaction_internal_works ... ok +test omniverse_protocol::tests::verify_signature_works ... ok +test omniverse_protocol::tests::set_members_works ... ok +test omniverse_protocol::tests::verify_transaction_works ... ok +test omniverse_protocol::tests::trigger_execution_internal_works ... ok +test omniverse_protocol::tests::trigger_execution_works ... ok + +test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s + +Jun 28 12:12:53.224 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| functions.rs: 10/10 +|| lib.rs: 154/179 +|| traits.rs: 0/2 +|| types.rs: 29/29 +|| +87.73% coverage, 193/220 lines covered +``` + +### Substrate chain + +- Substrate Node + +The command to build the node `cargo build --release` worked as expected. + +### Tests + +- all omniverse-swap tests passed + +```sh +Finished test [unoptimized + debuginfo] target(s) in 7m 43s +warning: the following packages contain code that will be rejected by a future version of Rust: fs_extra v1.2.0, nalgebra v0.27.1 +note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1` + Running unittests src/lib.rs (target/debug/deps/node_template-3ed45e64c9440d9e) + +running 2 tests +test __construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::check_whitelist ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_assets-2d82ac6157487a2e) + +running 35 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::freezing_asset_should_fail ... ok +test tests::destroying_should_fail ... ok +test tests::canceling_approval_should_fail ... ok +test tests::force_asset_status_should_fail ... ok +test tests::approving_transfer_should_fail ... ok +test tests::it_fails_for_factory_handler_mint_with_signer_not_owner ... ok +test tests::freezing_should_fail ... ok +test tests::burning_should_fail ... ok +test tests::force_setting_team_should_fail ... ok +test tests::force_transferring_should_fail ... ok +test tests::creating_should_fail ... ok +test tests::it_fails_for_factory_handler_with_signature_error ... ok +test tests::force_creating_should_fail ... ok +test tests::it_fails_for_create_token_with_token_already_exist ... ok +test tests::it_fails_for_factory_handler_transfer_with_balance_overflow ... ok +test tests::force_metadata_should_work ... ok +test tests::it_works_for_create_token ... ok +test tests::it_fails_for_set_members_with_not_owner ... ok +test types::ensure_bool_decodes_to_consumer_or_sufficient ... ok +test tests::transferring_ownership_should_fail ... ok +test tests::it_fails_for_factory_handler_with_token_not_exist ... ok +test tests::setting_team_should_fail ... ok +test tests::refunding_should_fail ... ok +test tests::it_fails_for_set_members_with_token_not_exist ... ok +test tests::transferring_approved_should_fail ... ok +test tests::transferring_should_fail ... ok +test tests::thawing_should_fail ... ok +test tests::touching_should_fail ... ok +test tests::thawing_asset_should_fail ... ok +test tests::transferring_keep_alive_should_fail ... ok +test tests::minting_should_fail ... ok +test tests::it_works_for_factory_handler_mint ... ok +test tests::it_works_for_factory_handler_transfer ... ok +test tests::set_metadata_should_work ... ok + +test result: ok. 35 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s + + Running unittests src/lib.rs (target/debug/deps/pallet_omniverse_protocol-2032bb49dfa0e27d) + +running 8 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::it_works_for_ethereum_signature ... ok +test tests::it_fails_for_nonce_error ... ok +test tests::it_fails_for_signature_error ... ok +test tests::it_works_for_verify_transaction ... ok +test tests::it_fails_for_signer_not_caller_error ... ok +test tests::it_works_for_malicious_transaction ... ok +test tests::it_works_for_duplicated_transaction ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/lib.rs (target/debug/deps/pallet_omniverse_swap-f6157a311a9882d2) + +running 5 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::it_works_for_add_liquidity ... ok +test tests::it_works_for_swap_y2x ... ok +test tests::it_works_for_swap_x2y ... ok +test tests::it_works_for_remove_liquidity ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/lib.rs (target/debug/deps/pallet_template-02ddf5628fb4912c) + +running 3 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::it_works_for_default_value ... ok +test tests::correct_error_for_none_value ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_uniques-4dd2dd5c6dcb4914) + +running 11 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::transfer_item_not_exist_not_work ... ok +test tests::set_members_with_token_not_exist_not_work ... ok +test tests::create_token_should_work ... ok +test tests::create_token_with_token_already_exist_not_work ... ok +test tests::basic_setup_works ... ok +test tests::not_owner_mint_item_with_not_work ... ok +test tests::not_item_owner_transfer_should_not_work ... ok +test tests::mint_item_should_work ... ok +test tests::mint_item_with_wrong_signature_not_work ... ok +test tests::transfer_item_should_work ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + Doc-tests node-template +``` + +### Code Quality + +Running `cargo clippy` in the omniverse-swap repository showed warnings in the result, see the log example below: + +```sh +warning: redundant clone + --> node/src/benchmarking.rs:167:8 + | +167 | extra.clone(), + | ^^^^^^^^ help: remove this + | +note: this value is dropped without further use + --> node/src/benchmarking.rs:167:3 + | +167 | extra.clone(), + | ^^^^^ + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone + +warning: redundant clone + --> node/src/rpc.rs:48:47 + | +48 | module.merge(System::new(client.clone(), pool.clone(), deny_unsafe).into_rpc())?; + | ^^^^^^^^ help: remove this + | +note: this value is dropped without further use + --> node/src/rpc.rs:48:43 + | +48 | module.merge(System::new(client.clone(), pool.clone(), deny_unsafe).into_rpc())?; + | ^^^^ + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_clone + +warning: `node-template` (bin "node-template") generated 7 warnings (2 duplicates) (run `cargo clippy --fix --bin "node-template"` to apply 5 suggestions) + Finished dev [unoptimized + debuginfo] target(s) in 4m 25s +``` + +- result of `cargo +nightly clippy` in the omniverse-ink repository logged 23 warnings diff --git a/evaluations/open-rollup_1_semuelle.md b/evaluations/open-rollup_1_semuelle.md new file mode 100755 index 000000000..2e32a203b --- /dev/null +++ b/evaluations/open-rollup_1_semuelle.md @@ -0,0 +1,22 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/openrollup-mvp-phase-1.md +- **Milestone:** 1 +- **Kusama Identity:** [ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA](https://polkascan.io/pre/kusama/account/ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA) +- **Previously successfully merged evaluation:** All by semuelle + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | :------: | ---- |----------------- | +| 0a. | License |
  • [x]
| [LICENSE](https://github.com/open-rollup/pallet-open-rollup/blob/f59ae4b0e78e23098e792c609a6d3c4e127b4c9c/LICENSE) | Apache 2.0 | +| 0b. | Documentation |
  • [x]
| [README](https://github.com/open-rollup/pallet-open-rollup/blob/f59ae4b0e78e23098e792c609a6d3c4e127b4c9c/README.md), [example](https://github.com/open-rollup/fib-miden-example/tree/72528632f1cf45ccfcd6843fb59ff04dde9786e7) | — | +| 0c. | Testing Guide |
  • [x]
| [miden example](https://github.com/open-rollup/fib-miden-example/tree/72528632f1cf45ccfcd6843fb59ff04dde9786e7), [pallet readme](https://github.com/open-rollup/pallet-open-rollup/blob/f59ae4b0e78e23098e792c609a6d3c4e127b4c9c/README.md) | Nearly complete coverage on pallet. Miden example provided on request | +| 0d. | Docker |
  • [x]
| [Dockerfile](https://github.com/open-rollup/pallet-open-rollup/blob/f59ae4b0e78e23098e792c609a6d3c4e127b4c9c/Dockerfile) | — | +| 0e. | Article |
  • [x]
| [open-rollup/blog](https://github.com/open-rollup/blog/blob/592c8628a6b6850248046827da976f4c7729f233/pallet-publish.md) | Very short, basic description only published on Github | +| 1. | Open rollup Pallet |
  • [x]
| [open-rollup/pallet-open-rollup](https://github.com/open-rollup/pallet-open-rollup/tree/f59ae4b0e78e23098e792c609a6d3c4e127b4c9c) | — +| 2. | Miden verifier in Open rollup Pallet |
  • [x]
| [src/verifier](https://github.com/open-rollup/pallet-open-rollup/tree/f59ae4b0e78e23098e792c609a6d3c4e127b4c9c/src/verifier) | — | + + +## General Notes + +Functionality can be tested easily with [example provided](https://github.com/open-rollup/fib-miden-example). Minor issues were fixed quickly. diff --git a/evaluations/patron_1_takahser.md b/evaluations/patron_1_takahser.md new file mode 100644 index 000000000..78b428077 --- /dev/null +++ b/evaluations/patron_1_takahser.md @@ -0,0 +1,256 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/patron.md +- **Milestone:** 1 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** All by takahser + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
| [MIT](https://github.com/Brushfam/patron-backend/blob/fcaefc0df32a58a58aa056ef5952223829f19ee7/LICENSE) | - | +| 0b. | Documentation |
  • [x]
| [CLI docs](https://github.com/Brushfam/patron-backend/blob/fcaefc0df32a58a58aa056ef5952223829f19ee7/docs/cli.md), [self-hosting instructions](https://github.com/Brushfam/patron-backend/blob/fcaefc0df32a58a58aa056ef5952223829f19ee7/docs/self-hosted.md), [API docs](https://api.patron.works/docs) | See [documentation feedback](#documentation-feedback). | +| 0c. | Testing guidelines |
  • [x]
| [Instructions in Delivery](https://github.com/w3f/Grant-Milestone-Delivery/pull/871/files#diff-c6776ce4032fba925481b56ba22f31870e3afd145b38a80d8854ab970066986bR25-R167) | See [testing guidelines feedback](#testing-guidelines-feedback). | +| 0d. | Docker |
  • [x]
| [containers.rs](https://github.com/Brushfam/patron-backend/blob/fcaefc0df32a58a58aa056ef5952223829f19ee7/crates/builder/src/process/container.rs) | See [Docker Feedback](#docker-feedback) | +| 0e. | Article |
  • [x]
| [Medium Article](https://medium.com/brushfam/patron-is-your-one-stop-smart-contract-manager-for-polkadot-ecosystem-b1f89a48ba40) | ~~Rather poorly written. I assume there hasn't been any proof-reading process. Given the price tag of this grant I think it'd be fair to expect a higher quality here.~~ Still not perfect, but drastically improved from the earlier version. I'm willing to accept it at this stage, however, feel free to further improve it. | +| 1a. | Backend storage |
  • [x]
| [db crate](https://github.com/Brushfam/patron-backend/tree/fcaefc0df32a58a58aa056ef5952223829f19ee7/crates/db) | See [backend storage feedback](#backend-storage-feedback). | +| 1b. | Sync server |
  • [x]
| [server crate](https://github.com/Brushfam/patron-backend/tree/d6bb21b010d4b9abf13c7ee7bce4b3898c3a1fc0/crates/server) | - | +| 1c. | Smart contract builder |
  • [x]
| [builder crate](https://github.com/Brushfam/patron-backend/tree/d6bb21b010d4b9abf13c7ee7bce4b3898c3a1fc0/crates/builder/src) | - | +| 2a. | Web UI |
  • [x]
| [patron frontend repo](https://github.com/Brushfam/patron-frontend/tree/master) | See [Web UI Feedback](#web-ui-feedback) | +| 2b. | Detailed contract information |
  • [x]
| [CodeHashWindow.tsx](https://github.com/Brushfam/patron-frontend/blob/f0a32db6ba72da3a4dc65034ec64e7ec7ce2f0b0/src/pages/CodeHashWindow.tsx) | - | +| 2c. | User authentication |
  • [x]
| [auth command](https://github.com/Brushfam/patron-backend/blob/d6bb21b010d4b9abf13c7ee7bce4b3898c3a1fc0/crates/patron/src/commands/auth.rs) | - | +| 3a. | Developer CLI utility |
  • [x]
| [patron crate](https://github.com/Brushfam/patron-backend/tree/d6bb21b010d4b9abf13c7ee7bce4b3898c3a1fc0/crates/patron) | - | + + +Ideally all links inside the above table should include the commit hash, +which was used for testing the delivery. It should also be checked if the software is published under the correct open-source license. + +## General Notes + +### Documentation Feedback + +The spec in the proposal reads: + +> We will provide API documentation for contributors to get along with the codebase, as well as a detailed self-hosting instructions for users to create their own nodes. + +~~However, I couldn't find an "API documentation for contributors". +Also, the code has almost no inline comments, which makes it harder for contributers to understand the code. For reference you can have a look at some of parity pallets, e.g. the [assets pallet](https://github.com/paritytech/substrate/blob/e434882d5dbf3f3f6085cb7f1d017dbc4ac11f0a/frame/assets/src/lib.rs) for some inspiration on inline-comments. In a second step, you could use `rustdoc` to generate the documentation based on the inline comments you provided.~~ + +Update: inline-comments and [API docs](https://api.patron.works/docs) have been added + +### Testing Guidelines Feedback + +- [x] tests ~~currently fail~~ have been fixed: + + ``` + patron-backend % cargo test + Compiling event_client v0.1.0 (/Users/xxx/repos/patron-backend/crates/event_client) + Finished test [unoptimized + debuginfo] target(s) in 2m 52s + Running unittests src/main.rs (target/debug/deps/builder-761d50c22f6d842b) + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/common-e50cefc8408d0d31) + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/db-5a50e7f8e8a774ec) + + running 1 test + test tests::exists ... ok + + test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/main.rs (target/debug/deps/event_client-39f93758411ef1f8) + + running 2 tests + test utils::tests::extract_code_hash ... ok + test utils::tests::extract_twox_account_id ... ok + + test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/migration-32a0379cff62aa67) + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (target/debug/deps/migration-a6d13c5c9ea0a0e1) + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (target/debug/deps/patron-d1f0e973f6accda7) + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (target/debug/deps/server-a8daf5b4743e4bfd) + + running 37 tests + test handlers::auth::login::tests::unmatching_signature ... ok + test handlers::build_sessions::create::tests::create ... ok + test handlers::auth::register::tests::register ... ok + test handlers::auth::login::tests::invalid_signature ... ok + test handlers::build_sessions::create::tests::invalid_source_code_id ... ok + test handlers::auth::login::tests::invalid_account ... ok + test handlers::auth::login::tests::missing_account ... ok + test handlers::build_sessions::create::tests::invalid_version ... ok + test handlers::build_sessions::details::tests::successful ... ok + test handlers::auth::login::tests::cli_token_repetition ... ok + test handlers::auth::login::tests::exchange ... ok + test handlers::auth::login::tests::successful ... ok + test handlers::build_sessions::metadata::tests::unknown ... ok + test handlers::build_sessions::details::tests::unknown ... ok + test handlers::build_sessions::list::tests::successful ... ok + test handlers::build_sessions::logs::tests::successful_by_code_hash ... ok + test handlers::build_sessions::status::tests::unknown ... ok + test handlers::build_sessions::logs::tests::unknown ... ok + test handlers::build_sessions::latest::tests::successful ... ok + test handlers::build_sessions::logs::tests::position ... ok + test handlers::build_sessions::metadata::tests::successful ... ok + test handlers::build_sessions::latest::tests::source_code_without_build_sessions ... ok + test handlers::build_sessions::status::tests::successful ... ok + test handlers::build_sessions::logs::tests::successful_by_id ... ok + test handlers::files::details::tests::file_list ... ok + test handlers::contracts::events::tests::successful ... ok + test handlers::files::upload::tests::upload_and_seal ... ok + test handlers::keys::delete::tests::list_and_delete ... ok + test handlers::files::details::tests::unknown_file ... ok + test handlers::contracts::details::tests::unknown ... ok + test handlers::build_sessions::wasm::tests::unknown ... ok + test handlers::files::details::tests::single_file ... ok + test handlers::files::upload::tests::empty_request ... ok + test handlers::build_sessions::wasm::tests::successful ... ok + test handlers::contracts::details::tests::successful ... ok + test handlers::contracts::events::tests::unknown ... ok + test handlers::keys::verify::tests::list_and_verify ... ok + + test result: ok. 37 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.50s + + Doc-tests common + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests db + + running 3 tests + test src/lib.rs - SelectExt::exists (line 107) ... ignored + test src/token.rs - token::generate_token (line 63) ... ok + test src/lib.rs - TransactionErrorExt::into_raw_result (line 40) ... ok + + test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.45s + + Doc-tests migration + + running 0 tests + + test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + ``` + +### Docker Feedback + +- linux install instructions for NIX have been [added](https://github.com/Brushfam/patron-backend/blob/master/docs/self-hosted.md#nix-installation) +- I followed the MacOS instructions on the [NIX webpage](https://nixos.org/download.html#nix-install-macos) but the install script tried to add at least 7 users to my local machine so I decided to not use it: + + ```bash + ~~> Setting up the build user _nixbld7 + + ---- sudo execution ------------------------------------------------------------ + I am executing: + + $ sudo /usr/bin/dscl . create /Users/_nixbld7 UniqueID 307 + + Creating the Nix build user (#7), _nixbld7 + ``` + +- ~~there are no instructions for using docker without NIX, feel free to add those as well~~ => apparently there is no good way to use it on MacOS (although it's officially supported) since its usage relies heaviliy on linux-specific components that are not present on MacOS. +- ~~also, I didn't find any docker or docker-compose files except for the [containers.rs](https://github.com/Brushfam/patron-backend/blob/d6bb21b010d4b9abf13c7ee7bce4b3898c3a1fc0/crates/builder/src/process/container.rs) of which I'm not sure what exactly it does, feel free to add some more info there as well~~ +- The docker containers are built dynamically and rely on linux-specific components such as `udisks2` which is why no hardcoded docker files have been added. While the CLI doesn't rely on linux-specific components it's still not possible to dockerize it for technical reasons. +- The instructions have been successfully tested on a Linux Ubuntu machine. This involved: + - setting up the db + - initialize the db using a remote (astar) node + - query data on the local db, such as contracts and contract owner addresses + - listen to incoming ink! smartcontract events + - CLI, incl. authentication + - upload and verification of a smart contract using the web ui + +### Backend Storage Feedback + +- regarding running the DB, ~~please add instructions on how to install and configure it so it matches your example *Config.toml* file mentioned in the [CLI docs](https://github.com/Brushfam/patron-backend/blob/fcaefc0df32a58a58aa056ef5952223829f19ee7/docs/self-hosted.md#configuration)~~ the [install instructions](https://github.com/Brushfam/patron-backend/blob/d6bb21b010d4b9abf13c7ee7bce4b3898c3a1fc0/docs/self-hosted.md#postgresql) and [an example config file](https://github.com/Brushfam/patron-backend/blob/d6bb21b010d4b9abf13c7ee7bce4b3898c3a1fc0/docs/self-hosted.md#configuration) have been added + +- the build passes: + + ```bash + % cargo build --release + + Compiling proc-macro2 v1.0.59 + Compiling quote v1.0.28 + + (...) + + Compiling tar v0.4.38 + Compiling migration v0.1.0 (/Users/xxx/repos/patron-backend/crates/migration) + Compiling validator v0.16.0 + Compiling ink_metadata v4.2.0 + Compiling serde_plain v1.0.1 + Compiling which v4.4.0 + Compiling zip v0.6.6 + Compiling axum-derive-error v0.1.0 + Compiling home v0.5.5 + Compiling patron v0.1.0 (/Users/xxx/repos/patron-backend/crates/patron) + Compiling event_client v0.1.0 (/Users/xxx/repos/patron-backend/crates/event_client) + Compiling server v0.1.0 (/Users/xxx/repos/patron-backend/crates/server) + Compiling builder v0.1.0 (/Users/xxx/repos/patron-backend/crates/builder) + Finished release [optimized] target(s) in 5m 15s + ``` + +### Web UI Feedback + +- [x] ~~there are currently a couple of npm vulnerabilities present. Please fix them or explain why they shouldn't or can't be fixed (if applicable)~~ The vulnerabilities have been fixed, except for the [known open issue in the create-react-app repo](https://github.com/facebook/create-react-app/issues/11174): + + ```bash + patron-frontend % npm audit --omit=dev + found 0 vulnerabilities + ``` + +- [x] ~~The UI can be started successfully, but there are some warnings. Some can easily be fixed, for example this code in [AddressElements.tsx](https://github.com/Brushfam/patron-frontend/blob/f0a32db6ba72da3a4dc65034ec64e7ec7ce2f0b0/src/components/ContractComponents/AddressElements.tsx#L56): `{"user`. Full excerpt:~~ => fixed + + + ```bash + patron-frontend % npm run start + + (...) + + Compiled successfully! + + You can now view patron-ui in the browser. + + Local: http://localhost:3000 + On Your Network: http://192.168.0.101:3000 + + Note that the development build is not optimized. + To create a production build, use npm run build. + + webpack compiled successfully + No issues found. + One of your dependencies, babel-preset-react-app, is importing the + "@babel/plugin-proposal-private-property-in-object" package without + declaring it in its dependencies. This is currently working because + "@babel/plugin-proposal-private-property-in-object" is already in your + node_modules folder for unrelated reasons, but it may break at any time. + + babel-preset-react-app is part of the create-react-app project, which + is not maintianed anymore. It is thus unlikely that this bug will + ever be fixed. Add "@babel/plugin-proposal-private-property-in-object" to + your devDependencies to work around this error. This will make this message + go away. + ``` diff --git a/evaluations/plus-social-recovery-wallet_1_takahser.md b/evaluations/plus-social-recovery-wallet_1_takahser.md index 075113f91..8e0ad6977 100644 --- a/evaluations/plus-social-recovery-wallet_1_takahser.md +++ b/evaluations/plus-social-recovery-wallet_1_takahser.md @@ -1,6 +1,6 @@ # Evaluation -- **Status:** In Progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Plus-social-recovery-wallet.md - **Milestone:** 1 - **Kusama Identity:** Address diff --git a/evaluations/polkaflow_1_dsm-w3f.md b/evaluations/polkaflow_1_dsm-w3f.md index ca75d75e9..9ed4fbb9a 100644 --- a/evaluations/polkaflow_1_dsm-w3f.md +++ b/evaluations/polkaflow_1_dsm-w3f.md @@ -1,6 +1,6 @@ # Evaluation -- **Status:** In Progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/polkaflow.md - **Milestone:** 1 - **Kusama Identity:** Address @@ -9,30 +9,80 @@ | Number | Deliverable | Accepted | Link | Evaluation Notes | | ------ | ----------- | -------- | ---- |----------------- | | 0a. | License |
  • [x]
|[Frontend License](https://github.com/justmert/eco-flow-frontend/blob/master/LICENSE)
[Backend License](https://github.com/justmert/eco-flow-backend/blob/master/LICENSE)| | -| 0b. | Documentation |
  • [ ]
|[Frontend Documentation](https://github.com/justmert/eco-flow-frontend/blob/master/README.md)
[Backend Documentation](https://github.com/justmert/eco-flow-backend/blob/master/README.md)| Not fully evaluated yet | -| 0c. | Testing and Testing Guide |
  • [ ]
| [Backend Repo - Testing](https://github.com/justmert/eco-flow-backend#test-the-app) | Not fully evaluated yet | -| 0d. | Docker |
  • [ ]
| | Not fully evaluated yet | -| 1. | Database |
  • [ ]
|[PolkaFlow Firebase Database Integration ](https://github.com/justmert/eco-flow-frontend/blob/master/src/App.js)| Not fully evaluated yet | -| 2. | Python Backend |
  • [ ]
|[Backend Repo](https://github.com/justmert/eco-flow-backend)| Need .env example | -| 3. | Frontend: Dashboard Page
Backend: Data Process - (Star Count) |
  • [ ]
|[PolkaFlow Website Dashboard Page](https://polkaflow.xyz/dashboard/substrate) | Not fully evaluated yet | -| 4. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Commit History) |
  • [ ]
|[PolkaFlow Website Example Project](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 5. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Code Frequency) |
  • [ ]
|[PolkaFlow Website Example Project](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 6. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Top Contributors) |
  • [ ]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 7. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Issue Activity) |
  • [ ]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | Not fully evaluated yet | -| 8. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Issue Count) |
  • [ ]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 9. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Recent Issues) |
  • [ ]
| [PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 10. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Recent Commits) |
  • [ ]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | Not fully evaluated yet | -| 11. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Pull Request Count) |
  • [ ]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 12. | Frontend: Project Page
Backend: Data Process - (Pull Request Activity) |
  • [ ]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 13. | Frontend: Project Page
Backend: Data Process - (Project Info Card) |
  • [ ]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| Not fully evaluated yet | -| 14. | Frontend: Project Page
Backend: Data Process - (Recent Stargazing) |
  • [ ]
| [PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | Not fully evaluated yet | -| 15. | Frontend: Project List Page |
  • [ ]
| [PolkaFlow Website Projects Page](https://polkaflow.xyz/projects)| Not fully evaluated yet | -| 16. | Integrate: Algolia |
  • [ ]
| [Frontend Repo - Algolia Search Integration ](https://github.com/justmert/eco-flow-frontend/blob/master/src/components/Layouts/Search/search.js) | Not fully evaluated yet | -| 17. | Frontend: Categorization |
  • [ ]
|[Frontend Repo - Typeform Integration Line ](https://github.com/justmert/eco-flow-frontend/blob/170707defb2e00fbb475a7e338593fd80c343636/src/components/Layouts/Navbar/navbar.js#L96) | Not fully evaluated yet | -| 18. | Integrate: Typeform |
  • [ ]
| [Frontend Repo - Analytics Integration](https://github.com/justmert/eco-flow-frontend/blob/master/public/index.html) | Not fully evaluated yet | -| 19. | Integrate: Google Analytics |
  • [ ]
| [Frontend Repo - Analytics Integration](https://github.com/justmert/eco-flow-frontend/blob/master/public/index.html) | Not fully evaluated yet | -| 20. | Backend: Schedule |
  • [ ]
| [Backend Repo - Schedule](https://github.com/justmert/eco-flow-backend/blob/master/main.py) | Not fully evaluated yet | -| 21. | Frontend: UX & UI |
  • [ ]
| [PolkaFlow Website](https://polkaflow.xyz/)| Not fully evaluated yet | +| 0b. | Documentation |
  • [x]
|[Frontend Documentation](https://github.com/justmert/eco-flow-frontend/blob/master/README.md)
[Backend Documentation](https://github.com/justmert/eco-flow-backend/blob/master/README.md)| | +| 0c. | Testing and Testing Guide |
  • [x]
| [Backend Repo - Testing](https://github.com/justmert/eco-flow-backend#test-the-app) | | +| 0d. | Docker |
  • [x]
| | | +| 1. | Database |
  • [x]
|[PolkaFlow Firebase Database Integration ](https://github.com/justmert/eco-flow-frontend/blob/master/src/App.js)| | +| 2. | Python Backend |
  • [x]
|[Backend Repo](https://github.com/justmert/eco-flow-backend)| | +| 3. | Frontend: Dashboard Page
Backend: Data Process - (Star Count) |
  • [x]
|[PolkaFlow Website Dashboard Page](https://polkaflow.xyz/dashboard/substrate) | | +| 4. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Commit History) |
  • [x]
|[PolkaFlow Website Example Project](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 5. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Code Frequency) |
  • [x]
|[PolkaFlow Website Example Project](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 6. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Top Contributors) |
  • [x]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 7. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Issue Activity) |
  • [x]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | | +| 8. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Issue Count) |
  • [x]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 9. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Recent Issues) |
  • [x]
| [PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 10. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Recent Commits) |
  • [x]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | | +| 11. | Frontend: Dashboard/Project Pages
Backend: Data Process - (Pull Request Count) |
  • [x]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 12. | Frontend: Project Page
Backend: Data Process - (Pull Request Activity) |
  • [x]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 13. | Frontend: Project Page
Backend: Data Process - (Project Info Card) |
  • [x]
|[PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate)| | +| 14. | Frontend: Project Page
Backend: Data Process - (Recent Stargazing) |
  • [x]
| [PolkaFlow Website Example Project Page](https://polkaflow.xyz/projects/paritytech/substrate) | | +| 15. | Frontend: Project List Page |
  • [x]
| [PolkaFlow Website Projects Page](https://polkaflow.xyz/projects)| | +| 16. | Integrate: Algolia |
  • [x]
| [Frontend Repo - Algolia Search Integration ](https://github.com/justmert/eco-flow-frontend/blob/master/src/components/Layouts/Search/search.js) | | +| 17. | Frontend: Categorization |
  • [x]
|[Frontend Repo - Typeform Integration Line ](https://github.com/justmert/eco-flow-frontend/blob/170707defb2e00fbb475a7e338593fd80c343636/src/components/Layouts/Navbar/navbar.js#L96) | | +| 18. | Integrate: Typeform |
  • [x]
| [Frontend Repo - Analytics Integration](https://github.com/justmert/eco-flow-frontend/blob/master/public/index.html) | | +| 19. | Integrate: Google Analytics |
  • [x]
| [Frontend Repo - Analytics Integration](https://github.com/justmert/eco-flow-frontend/blob/master/public/index.html) | | +| 20. | Backend: Schedule |
  • [x]
| [Backend Repo - Schedule](https://github.com/justmert/eco-flow-backend/blob/master/main.py) | | +| 21. | Frontend: UX & UI |
  • [x]
| [PolkaFlow Website](https://polkaflow.xyz/)| | + +## Evaluation V3 + +### Backend + +I tried to run the backend and got this error: + +``` +user@localhost:~/Documents/polkaflow/eco-flow-backend$ python3 seed.py --ecosystem polka +Traceback (most recent call last): + File "/home/user/Documents/polkaflow/eco-flow-backend/seed.py", line 6, in + from projects import projects +ModuleNotFoundError: No module named 'projects' +``` + +The last commit excluded the file `projects.py`. I fixed this problem by adding this file again to the folder. Whould be nice to provide some explanations about this to the user be able to configure and run the application with their projects. + +### Frontend + +I was able to check the integration of Typeform in the frontend and view the data being stored. + +After configuring the Search attributes in Algolia, I was able to search without problems. Would be nice if the documentation gives an explanation about this. + +## Evaluation V2 + +### Backend + +To successfully run the command `python3 seed.py --ecosystem `, I needed to put "polka-" in the name of the collections in Firebase, for example, "polka-repositories-data". + +After that, I was able to successfully run the backend and the Firebase has been updated with the information on paritytech/substrate, paritytech/polkadot, and paritytech/ink. + +Please explain in the documentation what `` means and how to setup a value for it. + + +### Frontend + +I was able to view the dashboard and the project page but when I tried to view the projects list I got a blank page. That occurred because the `polka-repositories-info` in the Firebase had a document to permit the collection creation. After excluding this document on Firebase, the page worked fine. I could check all the information on these pages. + +I tried to search "substrate" or other repository names but the search didn't returned anything. Algolia has information about the substrate and polkadot but not about ink. I also received no error in the developer tools that helped me to solve this problem. + +![image (19)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/310b909e-53e0-4ed6-be8e-c9cd45d3df0f) + + +I checked the submit using the typeform and got this page: + + +![image (20)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/87298546-3be1-4111-93b9-a171b5f0a961) + + +I would like to know if Typeform and Algolia integration need more configuration and if it is possible to test the Typeform locally. ## Evaluation V1 diff --git a/evaluations/qrucial-dao_2_ali-usama.md b/evaluations/qrucial-dao_2_ali-usama.md new file mode 100644 index 000000000..f18276a0f --- /dev/null +++ b/evaluations/qrucial-dao_2_ali-usama.md @@ -0,0 +1,73 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Qrucial-dao](https://github.com/w3f/Grants-Program/blob/master/applications/QRUCIAL_DAO.md) +- **Milestone:** 2 +- **Kusama Identity:** Eexv1mKLiCidz2gGh6vfowtXgSSc7mvD4xEb2ji998W4DPs +- **Previously successfully merged evaluation:** All evaluations by ali-usama + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +|--------|----------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------| +| 0a. | Licence |
  • [x]
| [Apache](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/LICENSE) | Correct Licence | +| 0b. | Documentation |
  • [x]
| [Wiki](https://github.com/Qrucial/QRUCIAL-DAO/wiki) | Well-Structured and Well-explained docs | +| 0c. | Testing Guide |
  • [x]
| [Development & Testing Guide](https://github.com/Qrucial/QRUCIAL-DAO/wiki/Development-and-testing-guide) | Very well-written test guide explaining all steps, and works as expected | +| 0d. | Docker |
  • [x]
| [Dockerfile](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/docker/files/dockerfile)
[Docker Setup](https://github.com/Qrucial/QRUCIAL-DAO/wiki/How-to-run-your-own-node#option-1-running-node-using-docker-limited-performance) | Builds & works fine | +| 0e. | Article |
  • [x]
| [Article](https://cryptoctf.org/2023/06/08/delivery-of-qdao-milestone-2/) | Well-written article | +| 1. | ExoSys Daemon |
  • [x]
| [Source code](https://github.com/Qrucial/QRUCIAL-DAO/tree/milestone2/exosysd) | Works as per application | +| 2. | QRUCIAL DAO Frontend |
  • [x]
| [Frontend code](https://github.com/Qrucial/QRUCIAL-DAO/tree/milestone2/frontend/substrate-front-end-template) | Works aa per application | +| 3. | ExoTool-CCA |
  • [x]
| [Audit Script](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/exotools/docker/docker_files/scripts/audit_script.sh) | Works as per application | +| 4. | ExoTool-Octopus |
  • [x]
| [Audit Script](https://github.com/Qrucial/QRUCIAL-DAO/blob/milestone2/exotools/docker/docker_files/scripts/audit_script.sh) | Works as per application | + + +## General Notes + +The delivery is well-structured and well-documented and it works according to the application as well. However, the size of the docker image is quite large and if it could be optimized that would be great. +Also there are some steps missing [here](https://github.com/Qrucial/QRUCIAL-DAO/wiki/How-to-run-your-own-node#option-1-running-node-using-docker-limited-performance) as there's no dockerfile in the root directory. +So `cd docker/files` should be added before `docker build . -t "qdao:V0.3"`. + +### docker output +``` +$ docker build . -t "qdao:V0.3" +[+] Building 3866.2s (25/25) FINISHED + => [internal] load build definition from dockerfile 0.0s + => => transferring dockerfile: 1.71kB 0.0s + => [internal] load .dockerignore 0.0s + => => transferring context: 2B 0.0s + => [internal] load metadata for docker.io/paritytech/ci-linux:production 4.6s + => [ 1/20] FROM docker.io/paritytech/ci-linux:production@sha256:cbfcd99ba4f43366edadc2dc2276ad81b306c4968077eeb7a496595ac081129a 1436.1s + => => resolve docker.io/paritytech/ci-linux:production@sha256:cbfcd99ba4f43366edadc2dc2276ad81b306c4968077eeb7a496595ac081129a 0.0s + => => sha256:cbfcd99ba4f43366edadc2dc2276ad81b306c4968077eeb7a496595ac081129a 762B / 762B 0.0s + => => sha256:8ee2ebf1b7d7aba267e7abc3670e059f30f22d20a706ec5cb5628942990c661b 10.01kB / 10.01kB 0.0s + => => sha256:759700526b7894aa9c150feb2ebfcd00cf06d2890df739e71555edcfd13669e3 31.42MB / 31.42MB 49.6s + => => sha256:c753b89dba9b2a88d31f9703ef9e4c54dc000ac65476c45d00d666a5d655c9aa 588.49MB / 588.49MB 1405.5s + => => sha256:479a59d03583b860b31a3bf5a6034434b0ad61e7d7bcd6bb5b4e1f7639b46ca3 403.78MB / 403.78MB 776.0s + => => extracting sha256:759700526b7894aa9c150feb2ebfcd00cf06d2890df739e71555edcfd13669e3 1.7s + => => extracting sha256:c753b89dba9b2a88d31f9703ef9e4c54dc000ac65476c45d00d666a5d655c9aa 19.4s + => => extracting sha256:479a59d03583b860b31a3bf5a6034434b0ad61e7d7bcd6bb5b4e1f7639b46ca3 10.2s + => [internal] load build context 0.0s + => => transferring context: 73B 0.0s + => [ 2/20] RUN apt update 14.6s + => [ 3/20] RUN apt-get install -y supervisor tmux curl wget python3 python3-setuptools 6.8s + => [ 4/20] RUN python3 -m pip install --upgrade pip setuptools wheel 9.6s + => [ 5/20] RUN pip3 install Flask substrate-interface 30.1s + => [ 6/20] RUN cargo install keccak256-cli 30.6s + => [ 7/20] ADD scripts/qdao_services.sh /bin/qdao_services.sh 0.0s + => [ 8/20] RUN mkdir /opt/data 0.2s + => [ 9/20] RUN echo "Downloading git repo..." 0.3s + => [10/20] RUN if [ -d "/opt/data/QRUCIAL-DAO" ]; then echo "QRUCIAL-DAO exists"; ( cd /opt/data/QRUCIAL-DAO && git pull https://github.com/Qrucial/Q 12.9s + => [11/20] RUN echo "Compiling exosys..." 0.2s + => [12/20] RUN if [ ! -f "/opt/data/QRUCIAL-DAO/exosysd/target/release/qdao-exosysd" ]; then ( cd /opt/data/QRUCIAL-DAO/exosysd && cargo build --relea 198.9s + => [13/20] RUN echo "Compiling qdao-node..." 0.2s + => [14/20] RUN if [ ! -f "/opt/data/QRUCIAL-DAO/qdao-node/target/release/qdao-node" ]; then ( cd /opt/data/QRUCIAL-DAO/qdao-node && cargo build --rel 2069.6s + => [15/20] RUN mkdir -p ~/QRUCIAL-DAO/exotools/ 0.3s + => [16/20] RUN cp /opt/data/QRUCIAL-DAO/exotools/exotool.sh ~/QRUCIAL-DAO/exotools/ 0.3s + => [17/20] RUN chmod +x ~/QRUCIAL-DAO/exotools/exotool.sh 0.2s + => [18/20] RUN chmod +x /opt/data/QRUCIAL-DAO/qdao-node/target/release/qdao-node 0.4s + => [19/20] RUN chmod +x /opt/data/QRUCIAL-DAO/exosysd/target/release/qdao-exosysd 0.2s + => [20/20] RUN chmod +x /bin/qdao_services.sh 0.2s + => exporting to image 49.5s + => => exporting layers 49.5s + => => writing image sha256:32da4b934206643b46f1af26763b82e553d41913b5a9fbeed9ecb05f5d651cc2 0.0s + => => naming to docker.io/library/qdao:V0.3 +``` + diff --git a/evaluations/rv-kmir_2_dsm-w3f.md b/evaluations/rv-kmir_2_dsm-w3f.md new file mode 100644 index 000000000..037eb1f1d --- /dev/null +++ b/evaluations/rv-kmir_2_dsm-w3f.md @@ -0,0 +1,267 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/rv-kmir.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| **0a.** | License |
  • [x]
| [BSD-3](https://github.com/runtimeverification/mir-semantics/blob/master/LICENSE) | | +| **0b.** | Documentation |
  • [x]
|[kmir CLI instructions](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/kmir/README.md) | | +| **0c.** | Testing and Testing Guide |
  • [x]
| [Testing Instructions with Docker](https://github.com/runtimeverification/mir-semantics/tree/milestone2-deliverable#running-integration-tests-with-docker) | | +| **0d.** | Docker |
  • [x]
| [Dockerfile](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/Dockerfile) | +| 1. | KMIR syntax |
  • [x]
| [mir-syntax.k](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/kmir/k-src/mir-syntax.k) | | +| 2. | **kmir** executable extension |
  • [x]
| [**kmir parse** implementation](https://github.com/runtimeverification/mir-semantics/blob/bd09e9d1716904afbbab2c0e27735202689d788e/kmir/src/kmir/__main__.py#L23), [**kmir parse** examples](https://github.com/runtimeverification/mir-semantics/blob/milestone2-deliverable/kmir/README.md#examples) | | + +## Evaluation V3 + +### Docker + +The steps you sent me are missing the `make build` command, resulting in the path problem. The `kmir parse` doesn't result in this problem if I run `make build` before `poetry shell`. + + +kmir parse + +``` +(kmir-py3.10) user@7034ba919a44:~/kmir$ kmir parse --definition-dir $(kbuild which llvm) src/tests/integration/test-data/handwritten-mir/execution/assert-true.mir +Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'Mir'Unds'MirComponent'Unds'Mir{}(inj{SortFunction{}, SortMirComponent{}}(Lbl'UndsLBraUndsRBraUnds'MIR-SYNTAX'Unds'Function'Unds'FunctionSignature'Unds'FunctionBody{}(Lblfn'UndsLParUndsRPar'-'-GT-UndsUnds'MIR-SYNTAX'Unds'FunctionSignature'Unds'FunctionPath'Unds'ParameterList'Unds'Type{}(Lbl'UndsColnColnUndsUnds'MIR-SYNTAX'Unds'FunctionPath'Unds'FunctionPathComponent'Unds'FunctionPath{}(inj{SortIdentifierToken{}, SortFunctionPathComponent{}}(\dv{SortIdentifierToken{}}("main")),Lbl'Stop'List'LBraQuotUndsColnColnUndsUnds'MIR-SYNTAX'Unds'FunctionPath'Unds'FunctionPathComponent'Unds'FunctionPath'QuotRBraUnds'FunctionPath{}()),Lbl'Stop'List'LBraQuotUndsCommUndsUnds'MIR-SYNTAX'Unds'ParameterList'Unds'Parameter'Unds'ParameterList'QuotRBraUnds'ParameterList{}(),inj{SortTupleType{}, SortType{}}(Lbl'LParRParUnds'MIR-SYNTAX'Unds'TupleType{}())),Lbl'UndsUndsUndsUndsUnds'MIR-SYNTAX'Unds'FunctionBody'Unds'DebugList'Unds'BindingList'Unds'ScopeList'Unds'BasicBlockList{}(Lbl'Stop'List'LBraQuotUndsUndsUnds'MIR-SYNTAX'Unds'DebugList'Unds'Debug'Unds'DebugList'QuotRBraUnds'DebugList{}(),Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'BindingList'Unds'Binding'Unds'BindingList{}(Lbllet'UndsUndsColnUndsSClnUnds'MIR-SYNTAX'Unds'Binding'Unds'OptMut'Unds'Local'Unds'Type{}(Lblmut'Unds'MIR-SYNTAX'Unds'OptMut{}(),inj{SortLocalToken{}, SortLocal{}}(\dv{SortLocalToken{}}("_0")),inj{SortTupleType{}, SortType{}}(Lbl'LParRParUnds'MIR-SYNTAX'Unds'TupleType{}())),Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'BindingList'Unds'Binding'Unds'BindingList{}(Lbllet'UndsUndsColnUndsSClnUnds'MIR-SYNTAX'Unds'Binding'Unds'OptMut'Unds'Local'Unds'Type{}(Lblmut'Unds'MIR-SYNTAX'Unds'OptMut{}(),inj{SortLocalToken{}, SortLocal{}}(\dv{SortLocalToken{}}("_1")),inj{SortTypePathEndSegment{}, SortType{}}(Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'TypePathEndSegment'Unds'PathIdentSegment'Unds'PathIdentSegmentEndSuffix{}(inj{SortIdentifierToken{}, SortPathIdentSegment{}}(\dv{SortIdentifierToken{}}("bool")),inj{SortPathIdentSegmentSuffix{}, SortPathIdentSegmentEndSuffix{}}(Lbl'Unds'MIR-SYNTAX'Unds'PathIdentSegmentSuffix{}())))),Lbl'Stop'List'LBraQuotUndsUndsUnds'MIR-SYNTAX'Unds'BindingList'Unds'Binding'Unds'BindingList'QuotRBraUnds'BindingList{}())),Lbl'Stop'List'LBraQuotUndsUndsUnds'MIR-SYNTAX'Unds'ScopeList'Unds'Scope'Unds'ScopeList'QuotRBraUnds'ScopeList{}(),Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'BasicBlockList'Unds'BasicBlock'Unds'BasicBlockList{}(Lbl'UndsColnUndsUnds'MIR-SYNTAX'Unds'BasicBlock'Unds'BB'Unds'BasicBlockBody{}(Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'BB'Unds'BBName'Unds'MaybeBBCleanup{}(inj{SortBBToken{}, SortBBName{}}(\dv{SortBBToken{}}("bb0")),Lbl'Unds'MIR-SYNTAX'Unds'MaybeBBCleanup{}()),Lbl'LBraUndsUndsSClnRBraUnds'MIR-SYNTAX'Unds'BasicBlockBody'Unds'StatementList'Unds'Terminator{}(Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'StatementList'Unds'TerminatedStatement'Unds'StatementList{}(Lbl'UndsSClnUnds'MIR-SYNTAX'Unds'TerminatedStatement'Unds'Statement{}(Lbl'UndsEqlsUndsUnds'MIR-SYNTAX'Unds'Statement'Unds'Place'Unds'RValue{}(inj{SortLocalToken{}, SortPlace{}}(\dv{SortLocalToken{}}("_1")),inj{SortConstant{}, SortRValue{}}(Lblconst'UndsUnds'MIR-SYNTAX'Unds'Constant'Unds'ConstantValue{}(inj{SortBool{}, SortConstantValue{}}(\dv{SortBool{}}("true")))))),Lbl'Stop'List'LBraQuotUndsUndsUnds'MIR-SYNTAX'Unds'StatementList'Unds'TerminatedStatement'Unds'StatementList'QuotRBraUnds'StatementList{}()),Lbl'Unds'-'-GT-UndsUnds'MIR-SYNTAX'Unds'Terminator'Unds'CallLike'Unds'TerminatorDestination{}(inj{SortAssertCall{}, SortCallLike{}}(Lblassert'LParUndsRParUnds'MIR-SYNTAX'Unds'AssertCall'Unds'AssertArgumentList{}(Lbl'UndsCommUndsUnds'MIR-SYNTAX'Unds'AssertArgumentList'Unds'AssertArgument'Unds'AssertArgumentList{}(inj{SortLocalToken{}, SortAssertArgument{}}(\dv{SortLocalToken{}}("_1")),Lbl'Stop'List'LBraQuotUndsCommUndsUnds'MIR-SYNTAX'Unds'AssertArgumentList'Unds'AssertArgument'Unds'AssertArgumentList'QuotRBraUnds'AssertArgumentList{}()))),inj{SortBB{}, SortTerminatorDestination{}}(Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'BB'Unds'BBName'Unds'MaybeBBCleanup{}(inj{SortBBToken{}, SortBBName{}}(\dv{SortBBToken{}}("bb1")),Lbl'Unds'MIR-SYNTAX'Unds'MaybeBBCleanup{}()))))),Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'BasicBlockList'Unds'BasicBlock'Unds'BasicBlockList{}(Lbl'UndsColnUndsUnds'MIR-SYNTAX'Unds'BasicBlock'Unds'BB'Unds'BasicBlockBody{}(Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'BB'Unds'BBName'Unds'MaybeBBCleanup{}(inj{SortBBToken{}, SortBBName{}}(\dv{SortBBToken{}}("bb1")),Lbl'Unds'MIR-SYNTAX'Unds'MaybeBBCleanup{}()),Lbl'LBraUndsUndsSClnRBraUnds'MIR-SYNTAX'Unds'BasicBlockBody'Unds'StatementList'Unds'Terminator{}(Lbl'UndsUndsUnds'MIR-SYNTAX'Unds'StatementList'Unds'TerminatedStatement'Unds'StatementList{}(Lbl'UndsSClnUnds'MIR-SYNTAX'Unds'TerminatedStatement'Unds'Statement{}(Lbl'UndsEqlsUndsUnds'MIR-SYNTAX'Unds'Statement'Unds'Place'Unds'RValue{}(inj{SortLocalToken{}, SortPlace{}}(\dv{SortLocalToken{}}("_0")),inj{SortConstant{}, SortRValue{}}(Lblconst'UndsUnds'MIR-SYNTAX'Unds'Constant'Unds'ConstantValue{}(inj{SortTupleConstant{}, SortConstantValue{}}(Lbl'LParRParUnds'MIR-SYNTAX'Unds'TupleConstant{}()))))),Lbl'Stop'List'LBraQuotUndsUndsUnds'MIR-SYNTAX'Unds'StatementList'Unds'TerminatedStatement'Unds'StatementList'QuotRBraUnds'StatementList{}()),Lblreturn'Unds'MIR-SYNTAX'Unds'Terminator{}())),Lbl'Stop'List'LBraQuotUndsUndsUnds'MIR-SYNTAX'Unds'BasicBlockList'Unds'BasicBlock'Unds'BasicBlockList'QuotRBraUnds'BasicBlockList{}()))))),Lbl'Stop'List'LBraQuotUndsUndsUnds'MIR-SYNTAX'Unds'Mir'Unds'MirComponent'Unds'Mir'QuotRBraUnds'Mir{}()) +``` + +kmir parse --output pretty + +``` +(kmir-py3.10) user@7034ba919a44:~/kmir$ kmir parse --definition-dir $(kbuild which llvm) src/tests/integration/test-data/handwritten-mir/execution/assert-true.mir --output pretty +fn main :: .FunctionPath ( .ParameterList ) -> ( ) { .DebugList let mut _0 : ( ) ; let mut _1 : bool ; .BindingList .ScopeList bb0 : { _1 = const true ; .StatementList assert ( _1 , .AssertArgumentList ) -> bb1 ; } bb1 : { _0 = const ( ) ; .StatementList return ; } .BasicBlockList } .Mir +``` + +I got the same results without Docker. + +Please, adjust the documentation, adding the `make build` to the instructions. + +## Evaluation V2 + +### Testing + +I ran the tests and noticed most of the tests was removed, keeping only the `test_handwritten`. This was to only run tests related to the KMIR syntax and Kmir parse? + +``` +[gw0] [ 98%] PASSED src/tests/integration/test_parse.py::test_handwritten_syntax[statement-storage-live.mir] +src/tests/integration/test_parse.py::test_handwritten_syntax[builtins-deref_copy.mir] +[gw0] [ 99%] PASSED src/tests/integration/test_parse.py::test_handwritten_syntax[builtins-deref_copy.mir] +src/tests/integration/test_parse.py::test_handwritten_syntax[type-array-identifier-len.mir] +[gw0] [100%] PASSED src/tests/integration/test_parse.py::test_handwritten_syntax[type-array-identifier-len.mir] + +================================================================================================ slowest durations ================================================================================================ +63.03s setup src/tests/integration/test_parse.py::test_handwritten_syntax[terminator-call-generic-args.mir] +62.30s setup src/tests/integration/test_parse.py::test_handwritten_syntax[type-async.mir] +62.12s setup src/tests/integration/test_parse.py::test_handwritten_syntax[rvalue-variable.mir] +61.39s setup src/tests/integration/test_parse.py::test_handwritten_syntax[statement-const-eval-counter.mir] +0.03s teardown src/tests/integration/test_parse.py::test_compiletest[test_id0-input_path0] +0.02s call src/tests/integration/test_parse.py::test_handwritten_syntax[type-impl-reference-sum.mir] +0.01s call src/tests/integration/test_parse.py::test_handwritten_syntax[rust-expression-precedence.mir] + +(430 durations < 0.005s hidden. Use -vv to show these durations.) +==================================================================================== 145 passed, 1 skipped in 63.57s (0:01:03) ==================================================================================== +``` + +### Kmir parse + +I had the same problems again. + +Here is the list of versions: + +``` +user@localhost:~/Documents/kmir/k/mir-semantics$ kup list +┌───────────┬──────────────────────────────────────────┬──────────────┐ +│ Package │ Installed version │ Status │ +├───────────┼──────────────────────────────────────────┼──────────────┤ +│ kup │ f6363845418afc73d13c6b940d8e987c3fce5c67 │ 🟢 installed │ +│ k │ f2f25ce7986f0c783f6ceeda428d561a42b87f13 │ 🟢 installed │ +│ pyk │ ce5421ac331f0e191d32b54697294f54a7b38baf │ 🟢 installed │ +│ kavm │ │ 🔵 available │ +│ kevm │ │ 🔵 available │ +│ kplutus │ │ 🔵 available │ +│ kore-exec │ │ 🔵 available │ +│ kore-rpc │ │ 🔵 available │ +└───────────┴──────────────────────────────────────────┴──────────────┘ +user@localhost:~/Documents/kmir/mir-semantics/kmir$ poetry --version +Poetry (version 1.5.0) +user@localhost:~/Documents/kmir/mir-semantics/kmir$ pip --version +pip 22.2.2 from /home/user/.pyenv/versions/3.10.8/lib/python3.10/site-packages/pip (python 3.10) +user@localhost:~/Documents/kmir/mir-semantics/kmir$ python -V +Python 3.10.8 +``` + +Is the Python version in the prerequisites correct? Could you provide the versions that you are using? Usually, when we have problems reproducing the steps to install the software under evaluation we ask for a demo video to help in this task. Can you provide a demo video showing how to install and use the application? Otherwise, we will wait for the docker ticket to be solved to try again with docker, which is a more controlled environment. + + + +## Evaluation V1 + +### Testing + +When I ran the docker run command, I got this error: + +``` +user@localhost:~/Documents/kmir/mir-semantics$ docker run --name mir-semantics --rm -it -u user --workdir /home/user mir-semantics:$(cat ./deps/k_release) make -C kmir test-integration +make: Entering directory '/home/user/kmir' +poetry install +Creating virtualenv kmir-3fIw2bCi-py3.10 in /home/user/.cache/pypoetry/virtualenvs +Installing dependencies from lock file + +Unable to read the lock file (Invalid statement (at line 477, column 1)). +make: *** [Makefile:21: poetry-install] Error 1 +make: Leaving directory '/home/user/kmir' +``` + +This problem is because poetry.lock has some conflicts. I fixed this by keeping the more recent versions of the packages. Please fix this problem in the repository in the branch used for this delivery. + +The result of the test_parse.py was 3113 passed and 84 skipped. Could you explain better why these tests were skipped? Here is the list of the skipped tests: + +``` +compiletest-rs/ui/ufcs-polymorphic-paths.mir +compiletest-rs/ui/utf8_idents.mir +compiletest-rs/ui/weird-exprs.mir +compiletest-rs/ui/async-await/issue-105501.mir +compiletest-rs/ui/autoref-autoderef/autoderef-method-twice-but-not-thrice.mir +compiletest-rs/ui/cast/cast-rfc0401.mir +compiletest-rs/ui/const-generics/issue-70408.mir +compiletest-rs/ui/const-generics/generic_const_exprs/issue-100360.mir +compiletest-rs/ui/const-generics/issues/issue-87076.mir +compiletest-rs/ui/const-generics/min_const_generics/macro.mir +compiletest-rs/ui/consts/const-block-item-macro-codegen.mir +compiletest-rs/ui/consts/const-block-item.mir +compiletest-rs/ui/consts/const-block.mir +compiletest-rs/ui/consts/const-cast.mir +compiletest-rs/ui/consts/const-extern-function.mir +compiletest-rs/ui/consts/const-float-classify.mir +compiletest-rs/ui/consts/const-fn-val.mir +compiletest-rs/ui/consts/const-typeid-of-rpass.mir +compiletest-rs/ui/consts/const-vec-of-fns.mir +compiletest-rs/ui/consts/const_cmp_type_id.mir +compiletest-rs/ui/consts/ice-zst-static-access.mir +compiletest-rs/ui/consts/issue-104396.mir +compiletest-rs/ui/consts/issue-27890.mir +compiletest-rs/ui/consts/issue-58435-ice-with-assoc-const.mir +compiletest-rs/ui/consts/issue-73976-monomorphic.mir +compiletest-rs/ui/consts/unwind-abort.mir +compiletest-rs/ui/consts/const_constructor/const-construct-call.mir +compiletest-rs/ui/consts/const_in_pattern/issue-44333.mir +compiletest-rs/ui/deriving/issue-58319.mir +compiletest-rs/ui/destructuring-assignment/drop-order.mir +compiletest-rs/ui/drop/dynamic-drop.mir +compiletest-rs/ui/dyn-keyword/dyn-2015-no-warnings-without-lints.mir +compiletest-rs/ui/dyn-star/box.mir +compiletest-rs/ui/dyn-star/check-size-at-cast-polymorphic.mir +compiletest-rs/ui/dyn-star/const.mir +compiletest-rs/ui/dyn-star/dont-unsize-coerce-dyn-star.mir +compiletest-rs/ui/dyn-star/drop.mir +compiletest-rs/ui/dyn-star/dyn-star-to-dyn.mir +compiletest-rs/ui/dyn-star/issue-102430.mir +compiletest-rs/ui/dyn-star/make-dyn-star.mir +compiletest-rs/ui/dyn-star/method.mir +compiletest-rs/ui/dyn-star/return.mir +compiletest-rs/ui/dyn-star/syntax.mir +compiletest-rs/ui/errors/issue-89280-emitter-overflow-splice-lines.mir +compiletest-rs/ui/extern/issue-64655-allow-unwind-when-calling-panic-directly.mir +compiletest-rs/ui/extern/issue-64655-extern-rust-must-allow-unwind.mir +compiletest-rs/ui/fmt/format-args-capture.mir +compiletest-rs/ui/function-pointer/sized-ret-with-binder.mir +compiletest-rs/ui/functions-closures/closure-to-fn-coercion.mir +compiletest-rs/ui/generator/issue-53548-1.mir +compiletest-rs/ui/generic-associated-types/generic-associated-type-bounds.mir +compiletest-rs/ui/generic-associated-types/issue-80433-reduced.mir +compiletest-rs/ui/higher-rank-trait-bounds/issue-90177.mir +compiletest-rs/ui/hygiene/thread-local-not-in-prelude.mir +compiletest-rs/ui/impl-trait/closure-in-impl-trait-arg.mir +compiletest-rs/ui/impl-trait/closure-in-impl-trait.mir +compiletest-rs/ui/impl-trait/lifetimes.mir +compiletest-rs/ui/impl-trait/nesting.mir +compiletest-rs/ui/inference/type-infer-generalize-ty-var.mir +compiletest-rs/ui/iterators/issue-58952-filter-type-length.mir +compiletest-rs/ui/iterators/iter-map-fold-type-length.mir +compiletest-rs/ui/lifetimes/bare-trait-object-borrowck.mir +compiletest-rs/ui/lifetimes/bare-trait-object.mir +compiletest-rs/ui/macros/issue-95533.mir +compiletest-rs/ui/methods/method-trait-object-with-hrtb.mir +compiletest-rs/ui/mir/issue-29227.mir +compiletest-rs/ui/mir/issue-66930.mir +compiletest-rs/ui/mir/mir_coercions.mir +compiletest-rs/ui/mir/mir_raw_fat_ptr.mir +compiletest-rs/ui/mir/validate/needs-reveal-all.mir +compiletest-rs/ui/numbers-arithmetic/float-nan.mir +compiletest-rs/ui/numbers-arithmetic/u128-as-f32.mir +compiletest-rs/ui/pattern/usefulness/issue-88747.mir +compiletest-rs/ui/recursion/issue-86784.mir +compiletest-rs/ui/rfcs/rfc1623.mir +compiletest-rs/ui/rfcs/rfc-2151-raw-identifiers/basic.mir +compiletest-rs/ui/rfcs/rfc-2151-raw-identifiers/items.mir +compiletest-rs/ui/statics/static-function-pointer.mir +compiletest-rs/ui/traits/normalize-supertrait.mir +compiletest-rs/ui/traits/parameterized-with-bounds.mir +compiletest-rs/ui/traits/privacy.mir +compiletest-rs/ui/traits/alias/object.mir +compiletest-rs/ui/traits/associated_type_bound/check-trait-object-bounds-2-ok.mir +compiletest-rs/ui/union/union-transmute.mir +``` + +I tried to test the Derivable 2 using Docker, but I got this error: + +``` +(kmir-py3.10) user@d382aa3469fa:~/kmir$ kmir parse --definition-dir $(kbuild which llvm) src/tests/integration/test-data/handwritten-mir/execution/assert-true.mir +Directory does not exist: /home/user/.kbuild/mir-semantics/7afaf5d/target/v5.5.147/llvm +usage: kmir parse [-h] [--definition-dir DEFINITION_DIR] [--input {program,binary,json,kast,kore}] [--output {pretty,program,json,kore,kast,none}] input_file +kmir parse: error: argument --definition-dir: invalid dir_path value: 'src/tests/integration/test-data/handwritten-mir/execution/assert-true.mir' +``` + +I tried with a local installation using python 3.10.8 without Docker and got the same problem. + +``` +(kmir-py3.10) user@localhost:~/Documents/kmir/mir-semantics/kmir$ kmir parse --definition-dir $(kbuild which llvm) src/tests/integration/test-data/handwritten-mir/execution/assert-true.mir +Directory does not exist: /home/user/.kbuild/mir-semantics/672f79c/target/v5.6.100/llvm +usage: kmir parse [-h] [--definition-dir DEFINITION_DIR] [--input {program,binary,json,kast,kore}] [--output {pretty,program,json,kore,kast,none}] input_file +kmir parse: error: argument --definition-dir: invalid dir_path value: 'src/tests/integration/test-data/handwritten-mir/execution/assert-true.mir' +``` + +Could you explain to me how do I get this Directory? I also tried using python 3.8.10 and 3.9 but got some errors for kmir commands. Is the python version in prerequisites correct? Because Docker also uses python 3.10.8 + +python 3.9 +``` +(kmir-py3.9) user@localhost:~/Documents/kmir/mir-semantics/kmir$ kmir --help +Traceback (most recent call last): + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.9/bin/kmir", line 3, in + from kmir.__main__ import main + File "/home/user/Documents/kmir/mir-semantics/kmir/src/kmir/__init__.py", line 1, in + from .kmir import KMIR + File "/home/user/Documents/kmir/mir-semantics/kmir/src/kmir/kmir.py", line 13, in + from pyk.ktool.kprint import KAstInput, KAstOutput, _kast, gen_glr_parser + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.9/lib/python3.9/site-packages/pyk/ktool/kprint.py", line 37, in + from ..konvert import kast_to_kore, kore_to_kast + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.9/lib/python3.9/site-packages/pyk/konvert.py", line 10, in + from .kore.prelude import BYTES as KORE_BYTES + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.9/lib/python3.9/site-packages/pyk/kore/prelude.py", line 215 + match data: + ^ +SyntaxError: invalid syntax +``` + +python 3.8 +``` +(kmir-py3.8) user@localhost:~/Documents/kmir/mir-semantics/kmir$ kmir --help +Traceback (most recent call last): + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.8/bin/kmir", line 3, in + from kmir.__main__ import main + File "/home/user/Documents/kmir/mir-semantics/kmir/src/kmir/__init__.py", line 1, in + from .kmir import KMIR + File "/home/user/Documents/kmir/mir-semantics/kmir/src/kmir/kmir.py", line 12, in + from pyk.kast.inner import KInner + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.8/lib/python3.8/site-packages/pyk/kast/__init__.py", line 1, in + from .inner import KInner + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.8/lib/python3.8/site-packages/pyk/kast/inner.py", line 11, in + from ..utils import EMPTY_FROZEN_DICT, FrozenDict, some + File "/home/user/.cache/pypoetry/virtualenvs/kmir-h-L5_2TT-py3.8/lib/python3.8/site-packages/pyk/utils.py", line 33, in + class FrozenDict(Mapping[K, V]): +TypeError: 'ABCMeta' object is not subscriptable +``` diff --git a/evaluations/saas3_2_dsm-w3f.md b/evaluations/saas3_2_dsm-w3f.md new file mode 100644 index 000000000..83d66b163 --- /dev/null +++ b/evaluations/saas3_2_dsm-w3f.md @@ -0,0 +1,508 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/SaaS3.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
| Apache 2.0 | +| 0b. | Documentation |
  • [x]
|https://github.com/SaaS3-Foundation/saas3-dao| | +| 0c. | Testing Guide |
  • [x]
|https://github.com/SaaS3-Foundation/saas3-dao| | +| 0d. | Docker |
  • [x]
| We are not able to provide a Dockerfile | I was able to test it locally without docker | +| oe. | Article/Tutorial |
  • [x]
| https://github.com/SaaS3-Foundation/saas3-dao/blob/main/Tutorial.md | | +| 1. | pallet-court |
  • [x]
| https://github.com/SaaS3-Foundation/saas3-dao/tree/main/pallets/court | | +| | Functions |
  • [x]
| https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L233
https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L262
https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L286| | +| | Structs | | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#LL68C1-L79C2 | | +| | Storage | | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#LL115C2-L121C4 | | +| | Events | |https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/court/src/lib.rs#L160 | +| 2. | pallet-treasury |
  • [x]
| https://github.com/SaaS3-Foundation/saas3-dao/blob/main/pallets/treasury/src/lib.rs| | +| | Storage | | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/treasury/src/lib.rs#L117 | +| | Events | | https://github.com/SaaS3-Foundation/saas3-dao/blob/ce2447ab1d54b2723f9ab72d8aabe5d65fff34d5/pallets/treasury/src/lib.rs#L169| | +| 3. | UI & Frontend |
  • [x]
| https://github.com/SaaS3-Foundation/SaaS3-DAO-Pallets| | + +## Evaluation V6 + +The licenses were added and now the tests are passing. As declared [here](https://github.com/w3f/Grant-Milestone-Delivery/pull/872#issuecomment-1616628303), the `removeSue` is out of the scope of the grant. + +## Evaluation V5 + +### License + +Still missing the Apache License in both repositories. + +### Automated Test + +I ran `cargo +nightly test` again to check, but this time some tests failed. + +``` +issamu@localhost:~/Documents/saas3/saas3-dao$ cargo +nightly test +⚡ Found 3 strongly connected components which includes at least one cycle each +cycle(001) ∈ α: DisputeCoordinator ~~{"DisputeDistributionMessage"}~~> DisputeDistribution ~~{"DisputeCoordinatorMessage"}~~> * +cycle(002) ∈ β: CandidateBacking ~~{"CollatorProtocolMessage"}~~> CollatorProtocol ~~{"CandidateBackingMessage"}~~> * +cycle(003) ∈ γ: NetworkBridgeRx ~~{"GossipSupportMessage"}~~> GossipSupport ~~{"NetworkBridgeRxMessage"}~~> * + Finished test [unoptimized + debuginfo] target(s) in 0.78s + Running unittests src/lib.rs (target/debug/deps/pallet_court-5de9314ef157f9e7) + +running 9 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::vote_against_works ... FAILED +test tests::vote_sue_works ... ok +test tests::contribution_works ... FAILED +test tests::process_sue_before_vote ... FAILED +test tests::remove_approved_sue ... FAILED +test tests::process_sue_works ... FAILED +test tests::submite_sue_works ... ok +test tests::remove_unapproved_sue ... ok + +failures: + +---- tests::vote_against_works stdout ---- +thread 'tests::vote_against_works' panicked at 'Expected Ok(_). Got Err( + BadOrigin, +)', pallets/court/src/tests.rs:156:9 +note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + +---- tests::contribution_works stdout ---- +thread 'tests::contribution_works' panicked at 'Expected Ok(_). Got Err( + BadOrigin, +)', pallets/court/src/tests.rs:211:9 + +---- tests::process_sue_before_vote stdout ---- +thread 'tests::process_sue_before_vote' panicked at 'assertion failed: `(left == right)` + left: `Err(BadOrigin)`, + right: `Err(Module(ModuleError { index: 2, error: [10, 0, 0, 0], message: Some("VoterCountTooLow") }))`', pallets/court/src/tests.rs:167:9 + +---- tests::remove_approved_sue stdout ---- +thread 'tests::remove_approved_sue' panicked at 'Expected Ok(_). Got Err( + BadOrigin, +)', pallets/court/src/tests.rs:197:9 + +---- tests::process_sue_works stdout ---- +thread 'tests::process_sue_works' panicked at 'Expected Ok(_). Got Err( + BadOrigin, +)', pallets/court/src/tests.rs:141:9 + + +failures: + tests::contribution_works + tests::process_sue_before_vote + tests::process_sue_works + tests::remove_approved_sue + tests::vote_against_works + +test result: FAILED. 4 passed; 5 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + +error: test failed, to rerun pass `-p pallet-court --lib` +``` + +### Manual Testing + +I tried again, and this time, I could successfully process a lawsuit using polkadot.js and the front end. I also could claim the rewards in polkadot.js. Could you explain how `court.removeSue(lawsuitId)` should work? I think it isn't part of the deliverables, but I tested this and only noticed in the chain state the id remove from the `court.approvals()`, but the `court.proposals(u32)`, still returning `approved: true` and didn't change the frontend. + +## Evaluation V4 + +I tried to use the frontend in the Evaluation V3, but I tested again to provide some prints. I created a lawsuit and voted with four different accounts. + +![Screenshot 2023-06-22 at 08-00-49 SaaS3 DAO Pallets](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/8e023ec3-7947-499e-ba0c-5e84e224bc1c) + +With any of the jury accounts, I tried to approve the lawsuit. The frontend showed a success message but wasn't added new events in the polkadot.js. + +![image (22)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/bfa1e372-047e-4140-bbb0-c883b034d07d) + +![Screenshot 2023-06-22 at 08-49-23 Polkadot_Substrate Portal](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/919e448e-ee37-4b80-a019-a4780a2c14dc) + +I found another problem. I created another lawsuit, but when I voted in the second lawsuit, the frontend has sent the transaction with id 0, seeding the vote to the first lawsuit. + +![Screenshot 2023-06-22 at 08-55-02 SaaS3 DAO Pallets](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/75d37c52-9673-4545-b272-1c970518078c) + +![image (23)](https://github.com/w3f/Grant-Milestone-Delivery/assets/112647953/925e0e2e-25ee-475a-b3d7-ef6f8c92b331) + +The last vote was trying to vote on the first lawsuit, but it seeded to the second one. The order of the list seems to be inverted, showing the second lawsuit on top of the list, but on top of the list, the id is 0. + + +## Evaluation V3 + +### Manual Test + +I tried again to use these pallets, I followed the [guide](https://github.com/SaaS3-Foundation/saas3-dao/blob/main/Tutorial.md), and I could vote using the Charlie, Eve, Ferdie, and Dave address. + +``` +court.proposals: Option +{ + plaintiff: 5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty + value: 50 + defendent: 5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY + statement: I demand compensation for damages. + voters: [ + 5FLSigC9HGRKVhB9FiEo4Y3koPsNmBmLJbpXg2mp1hXcS59Y + 5DAAnrj7VHTznn2AWBemMuyBwZWs6FNFjdyVXUeYum3PTXFy + 5HGjWAeFDfFCWPsjFQdVV2Msvz2XtMktvgocEZcCj68kUMaw + 5CiPPseXPECbkjWCa6MnjNokrgYjMqmKndv2rSnekmSK2DjL + ] + votes: [ + true + true + true + true + ] + approved: false +} +``` + +I got the same error, BadOrigin, when trying to Process a Lawsuit using any of the jury member's addresses. + +I changed the unit test code to check if the pallet works with a signature from the jury. + +Original Test +``` +#[test] +fn process_sue_works() { + new_test_ext().execute_with(|| { + Balances::make_free_balance_be(&0, 101); + assert_ok!(Court::submit_sue(RuntimeOrigin::signed(1), 100, 0, vec![])); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(2), 0, true)); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(3), 0, true)); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(4), 0, true)); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(5), 0, true)); + assert_ok!(Court::process_sue(RuntimeOrigin::root(), 0)); + assert_eq!(Court::approvals().len(), 1); + assert_eq!(Court::proposal_count(), 1); + }); +} +``` + +Modified Test +``` +#[test] +fn process_sue_works() { + new_test_ext().execute_with(|| { + Balances::make_free_balance_be(&0, 101); + assert_ok!(Court::submit_sue(RuntimeOrigin::signed(1), 100, 0, vec![])); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(2), 0, true)); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(3), 0, true)); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(4), 0, true)); + assert_ok!(Court::vote_sue(RuntimeOrigin::signed(5), 0, true)); + assert_ok!(Court::process_sue(RuntimeOrigin::signed(2), 0)); + assert_eq!(Court::approvals().len(), 1); + assert_eq!(Court::proposal_count(), 1); + }); +} +``` + +This test passed, so I don't know why this isn't working using polkadot.js. It is working for you? Did you tried it using polkadot.js? + +## Evaluation V2 + +### Automated Test + +I ran `cargo +nightly test`, and all tests passed without warnings, with better coverage. + +``` +running 9 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::submite_sue_works ... ok +test tests::vote_sue_works ... ok +test tests::contribution_works ... ok +test tests::vote_against_works ... ok +test tests::process_sue_before_vote ... ok +test tests::remove_approved_sue ... ok +test tests::process_sue_works ... ok +test tests::remove_unapproved_sue ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/lib.rs (target/debug/deps/pallet_template-e0640ccd8bc222e0) + +running 3 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::it_works_for_default_value ... ok +test tests::correct_error_for_none_value ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_treasury-fa4c5da44e70add7) + +running 6 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::genesis_config_works ... ok +test tests::receive_from_zero_balance_should_fail ... ok +test tests::receive_should_works ... ok +test tests::claim_rewards_exceed_claim ... ok +test tests::claim_rewards_ok ... ok + +test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/main.rs (target/debug/deps/saas3_dao_node-a29cbf50b04bb799) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/saas3_dao_runtime-912420306e0771b8) + +running 5 tests +test weights::block_weights::constants::test_weights::sane ... ok +test weights::rocksdb_weights::constants::test_db_weights::sane ... ok +test weights::paritydb_weights::constants::test_db_weights::sane ... ok +test weights::extrinsic_weights::constants::test_weights::sane ... ok +test __construct_runtime_integrity_test::runtime_integrity_tests ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-court +``` + +``` +Jun 12 10:49:44.439 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| node/src/chain_spec.rs: 0/90 +|| node/src/cli.rs: 0/5 +|| node/src/command.rs: 0/187 +|| node/src/main.rs: 0/2 +|| node/src/rpc.rs: 0/6 +|| node/src/service.rs: 0/155 +|| pallets/court/src/lib.rs: 58/71 +|| pallets/template/src/lib.rs: 9/17 +|| pallets/treasury/src/lib.rs: 45/52 +|| runtime/src/lib.rs: 11/97 +|| runtime/src/weights/block_weights.rs: 1/1 +|| runtime/src/weights/extrinsic_weights.rs: 1/1 +|| runtime/src/weights/paritydb_weights.rs: 0/3 +|| runtime/src/weights/rocksdb_weights.rs: 0/3 +|| runtime/src/xcm_config.rs: 0/31 +|| +17.34% coverage, 125/721 lines covered +``` + +### Manual Testing + +I didn't understand what the `root user` is in this application. Is it to use `sudo` to use the command `court.processSue`? Please explain. Do I need to use the root user to approve in the frontend? +The lack of access to the root user prevented me to complete the manual testing of the application. + +### Code Quality + +The EsLint warnings were fixed. + +## Evaluation V1 + +### Documentation + +During the execution of the installation steps I had one doubt. Is the [Prepare parachain node](https://github.com/SaaS3-Foundation/saas3-dao#prepare-parachain-node) step needed since the `para-2000-genesis-state` and `para-2000-wasm` files are in the repository? + +In [Register with the local relay chain](https://github.com/SaaS3-Foundation/saas3-dao#register-with-the-local-relay-chain) and in the Prepare parachain node needs to specify that the user needs to access the substrate with port 9977 to do the configuration. + +The testing guide needs to have examples of inputs and expected outputs. The frontend also needs a testing guide. + +### Automated Test + +I ran `cargo test`. All tests passed but returned some warnings. + +``` +user@localhost:~/Documents/saas3/saas3-dao$ cargo +nightly test +⚡ Found 3 strongly connected components which includes at least one cycle each +cycle(001) ∈ α: DisputeCoordinator ~~{"DisputeDistributionMessage"}~~> DisputeDistribution ~~{"DisputeCoordinatorMessage"}~~> * +cycle(002) ∈ β: CandidateBacking ~~{"CollatorProtocolMessage"}~~> CollatorProtocol ~~{"CandidateBackingMessage"}~~> * +cycle(003) ∈ γ: NetworkBridgeRx ~~{"GossipSupportMessage"}~~> GossipSupport ~~{"NetworkBridgeRxMessage"}~~> * +warning: unused imports: `BadOrigin`, `Dispatchable` + --> pallets/treasury/src/tests.rs:23:11 + | +23 | traits::{BadOrigin, BlakeTwo256, Dispatchable, IdentityLookup}, + | ^^^^^^^^^ ^^^^^^^^^^^^ + | + = note: `#[warn(unused_imports)]` on by default + +warning: unused imports: `OnInitialize`, `assert_err_ignore_postinfo` + --> pallets/treasury/src/tests.rs:27:2 + | +27 | assert_err_ignore_postinfo, assert_noop, assert_ok, + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ +... +30 | traits::{ConstU32, ConstU64, OnInitialize}, + | ^^^^^^^^^^^^ + +warning: type alias `UtilityCall` is never used + --> pallets/treasury/src/tests.rs:40:6 + | +40 | type UtilityCall = pallet_utility::Call; + | ^^^^^^^^^^^ + | + = note: `#[warn(dead_code)]` on by default + +warning: type alias `TreasuryCall` is never used + --> pallets/treasury/src/tests.rs:41:6 + | +41 | type TreasuryCall = crate::Call; + | ^^^^^^^^^^^^ + +warning: `pallet-treasury` (lib test) generated 4 warnings (run `cargo fix --lib -p pallet-treasury --tests` to apply 2 suggestions) + Finished test [unoptimized + debuginfo] target(s) in 2.13s + Running unittests src/lib.rs (target/debug/deps/pallet_court-5de9314ef157f9e7) + +running 4 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::process_sue_works ... ok +test tests::submite_sue_works ... ok +test tests::vote_sue_works ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/lib.rs (target/debug/deps/pallet_template-e0640ccd8bc222e0) + +running 3 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::correct_error_for_none_value ... ok +test tests::it_works_for_default_value ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_treasury-cd031383763d0549) + +running 4 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::genesis_config_works ... ok +test tests::receive_should_works ... ok +test tests::claim_rewards_exceed_claim ... ok + +test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (target/debug/deps/saas3_dao_node-c357a8e56ae9f39a) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/saas3_dao_runtime-26912060f765f2a3) + +running 5 tests +test weights::block_weights::constants::test_weights::sane ... ok +test weights::rocksdb_weights::constants::test_db_weights::sane ... ok +test weights::extrinsic_weights::constants::test_weights::sane ... ok +test weights::paritydb_weights::constants::test_db_weights::sane ... ok +test __construct_runtime_integrity_test::runtime_integrity_tests ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-court + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-template + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-treasury + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests saas3-dao-runtime + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` + +I ran `cargo tarpaulin` to check the coverage of the tests in the pallets. The coverage can be improved. + +``` +Jun 01 09:06:34.358 INFO cargo_tarpaulin::report: Coverage Results: +|| Tested/Total Lines: +|| node/src/chain_spec.rs: 0/90 +|| node/src/cli.rs: 0/5 +|| node/src/command.rs: 0/187 +|| node/src/main.rs: 0/2 +|| node/src/rpc.rs: 0/6 +|| node/src/service.rs: 0/155 +|| pallets/court/src/lib.rs: 47/70 +|| pallets/template/src/lib.rs: 9/17 +|| pallets/treasury/src/lib.rs: 35/51 +|| runtime/src/lib.rs: 11/97 +|| runtime/src/weights/block_weights.rs: 1/1 +|| runtime/src/weights/extrinsic_weights.rs: 1/1 +|| runtime/src/weights/paritydb_weights.rs: 0/3 +|| runtime/src/weights/rocksdb_weights.rs: 0/3 +|| runtime/src/xcm_config.rs: 0/31 +|| +14.46% coverage, 104/719 lines covered +``` + +### Manual testing + +Despite the testing guide doesn't have examples of inputs and expected outputs, I tried to check the pallets and the frontend. + +I couldn't figure out what to put in the `category_type` of `Treasury.receive`. So I have done the donations using the frontend and could check the transfer to the Treasury in the substrate. I could submit a lawsuit and vote using the frontend and the substrate, but when I tried to process the lawsuit, in the frontend, nothing occurred. In the substrate, I received a BadOrigin message. So I couldn't try to claim the rewards. + +### Code Quality + +I ran `cargo clippy` and received some warnings, for example: + +``` +warning: the borrowed expression implements the required traits + --> node/src/command.rs:271:39 + | +271 | let _ = std::fs::create_dir_all(&database_path); + | ^^^^^^^^^^^^^^ help: change this to: `database_path` + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow + = note: `#[warn(clippy::needless_borrow)]` on by default + +warning: unnecessary closure used to substitute value for `Option::None` + --> node/src/command.rs:275:19 + | +275 | let para_id = chain_spec::Extensions::try_get(&*config.chain_spec) + | _______________________________^ +276 | | .map(|e| e.para_id) +277 | | .ok_or_else(|| "Could not find parachain ID in chain-spec.")?; + | |______________________----------------------------------------------------------^ + | | + | help: use `ok_or(..)` instead: `ok_or("Could not find parachain ID in chain-spec.")` + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations + = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default + +warning: length comparison to zero + --> node/src/command.rs:304:61 + | +304 | if !collator_options.relay_chain_rpc_urls.is_empty() && cli.relay_chain_args.len() > 0 { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!cli.relay_chain_args.is_empty()` + | + = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero + = note: `#[warn(clippy::len_zero)]` on by default + +warning: `saas3-dao-node` (bin "saas3-dao-node") generated 8 warnings (run `cargo clippy --fix --bin "saas3-dao-node"` to apply 5 suggestions) + Finished dev [unoptimized + debuginfo] target(s) in 0.61s +``` + +I ran `yarn lint` and received some warnings: + +``` +user@localhost:~/Documents/saas3/saas3-dSaaS3-DAO-Pallets$ yarn lint +yarn run v1.22.19 +$ eslint src --ext js,jsx --fix src/ --report-unused-disable-directives --max-warnings 0 + +/home/user/Documents/saas3/saas3-dao/SaaS3-DAO-Pallets/src/pages/components/LawsuitList.jsx + 147:5 warning Unexpected console statement no-console + +/home/user/Documents/saas3/saas3-dao/SaaS3-DAO-Pallets/src/pages/components/UserDonationsForm.jsx + 20:7 warning Unexpected console statement no-console + +/home/user/Documents/saas3/saas3-dao/SaaS3-DAO-Pallets/src/pages/components/UserVoteForm.jsx + 22:13 warning '_defendent' is assigned a value but never used no-unused-vars + +/home/user/Documents/saas3/saas3-dao/SaaS3-DAO-Pallets/src/provider/PolkadotWallet.jsx + 96:7 warning Unexpected console statement no-console + +✖ 4 problems (0 errors, 4 warnings) + +ESLint found too many warnings (maximum: 0). +error Command failed with exit code 1. +info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command. +``` diff --git a/evaluations/sarp_1_niklasp.md b/evaluations/sarp_1_niklasp.md new file mode 100644 index 000000000..9a49f48e7 --- /dev/null +++ b/evaluations/sarp_1_niklasp.md @@ -0,0 +1,185 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** + https://github.com/w3f/Grants-Program/blob/master/applications/sarp-basic-functionality.md +- **Milestone:** + [1](https://github.com/w3f/Grant-Milestone-Delivery/blob/70250f0f8d90c3143294e1ec7a25c0c89133a481/deliveries/sarp-basic-functionality-milestone-1.md) +- **Kusama Identity:** + [DT7kRjGFvRKxGSx5CPUCA1pazj6gzJ6Db11xmkX4yYSNK7m](https://sub.id/5CwW67PPdZQQCcdWJVaRJCepSQSrtKUumDAGa7UZbBKwd9R2) +- **Previously successfully merged evaluation:** None yet + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ------------------------- | ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 0a. | License |
  • [x]
| [MIRAI MIT License](https://github.com/scs/MIRAI/blob/8afab5db34fb7330789e3765c3adf460ed72ed05/LICENSE) | MIT license file for the MIRAI package is provided in a forked repo. | +| 0b. | User Documentation |
  • [ ]
| [Proof of Concept: Tag Analysis on Origin](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/pallet_template/README.md) -- [Proof of Concept: Tag Analysis for validation of unsigned transactions](https://github.com/scs/MIRAI/tree/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/offchain-worker) | See [User Documentation Feedback](#user-documentation-feedback). | +| 0c. | Testing and Testing Guide |
  • [ ]
| see 0b. | Issues with guides fixed on request. | +| 1. | Prototype Code |
  • [ ]
| [origin](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/pallet_template/), [unsigned transaction](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/offchain-worker/) | Prototype code was submitted, that approaches the two stated vulnerabilty classes. | +| 2. | Documentation |
  • [ ]
| [Tag Analysis on Substrate Pallets](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/README.md) | See [Documentation Feedback](#documentation-feedback). | +| 3. | Engagement |
  • [ ]
| [Github Comment](https://github.com/w3f/Grants-Program/pull/1706#issuecomment-1564312572) | See [Engagement Feedback](#engagement-feedback). | + +## General Notes + +### July 5, 2023 + +All feedback was addressed: + +- Sections on feasibility and next steps added +- Documentation improved +- Various questions addressed in [evaluation PR](https://github.com/w3f/Grant-Milestone-Delivery/pull/885) + + + +### June 22, 2023 + +Two code prototype examples alongside its documentation were submitted by the +grantee that address the two vulnerability classes: _Incorrect Origin_ and +_Unsigned Transaction_. Also a brief research documentation was submitted. + +Based on my evaluation, you can improve the submitted documentation and +engagement (see below). I would like to see more progress in solving the major +issues with MIRAI as stated in your +[Findings](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/README.md#findings) +and Open Issues +[1](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/pallet_template/README.md#open-issues), +[2](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/offchain-worker/README.md#open-issues) +before accepting the deliverable. As I understand your granted application, the +overall idea was to find if MIRAI is a suitable tool for statically analysing +substrate code. By providing more details (with code examples and error outputs) +it would be easier to evualuate your findings. + +Thus I have to reject this delivery at its current state but will continue the +evaluation / accept the delivery when the points stated below are resolved / +commented on. + +_Note that this evaluation is not binding since I do not currently work for the +Web3Foundation. The w3f grants team can still accept your delivery in its +current state._ + +## Prototype Code Feedback + +The applicants [forked the MIRIA repository](https://github.com/scs/MIRAI). I am +evaluating the `Milestone1_Research` branch. The code has relevant comments and +is easy to understand. For existing comments / questions, see below. + +### Running the Prototype Code + +1. Install MIRAI as per + [Instructions](https://github.com/facebookexperimental/MIRAI/blob/main/documentation/InstallationGuide.md) - + _this is documented_ +1. clone the forked repo (where the substrate-examples folder contains the + pallet template) `git clone https://github.com/scs/MIRAI.git` - _not + documented_ +1. Checkout the correct branch (linked from the documentation) + `git checkout Milestone1_Research` - _this step is not documented. At the + time of evaluation there is an + [open PR to `main`](https://github.com/scs/MIRAI/pull/1) that would merge the + `pallet_template`/ Tag Analysis part of the example._ +1. Then I tested both supplied static analysis examples: + +### Origin Check + +- `cd substrate-examples/pallet_template` and then run `cargo mirai` +- Altering the two lines of code works as described in the documentation and + outputs a warning when the `ensure_signed` is used instead of the + `sarp_ensure_signed`. + +➡️ The supplied example is adding the tags in a correct way, as far as I can +tell, but differs from the vulnarability class raised in the RFP. The provided +code is testing +[`ensure_signed`](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/pallet_template/src/lib.rs#L135) +instead of additionally testing +[`ensure_origin`](https://github.com/bhargavbh/MIRAI/blob/5646e7e2775f1b59bed74285ab1c0a8397218fc5/substrate_examples/incorrect-origin/wrong-origin.rs#L49) +is called correctly. I understand, that tag analysis is also verified to work in +the code submitted, but is there a reason why you are testing `ensure_signed` is +called instead? Does it have to do with your Finding #1 that states: "Certain +pieces of substrate code lead to crashes of MIRAI." + +➡️ The output from running `cargo mirai` is not very descriptive, +[a descriptive message can be added to the `precondition!` macro](https://github.com/facebookexperimental/MIRAI/blob/957af25ce6cc109093cec369c70fe90a1e2544f9/annotations/src/lib.rs#L625). + +### Offchain Worker / Unsigned Transaction Validation + +- `cd substrate-examples/offchain_worker` and then run `cargo mirai` +- Running the above results in the same warning as + [shown in the documentation](https://github.com/scs/MIRAI/raw/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/offchain-worker/mirai-warning.png). +- [Uncommenting the lines in `lib.rs` as stated](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/offchain-worker/src/lib.rs#L355) + omits the warning +- In `substrate-examples/offchain-worker/src/lib.rs` you have the following + lines. + + ```rust + // For some reason MIRAI crashes with this code + /*let avg_price = Self::average_price() + .map(|price| if &price > new_price { price - new_price } else { new_price - price }) + .unwrap_or(0);*/ + let avg_price = 0; + ``` + + I tried uncommenting the commented `avg_price` definition and `cargo mirai` + did not "crash" but did not output the expected warning. Before moving on it + would be fundamental to understand why that happens and I would not + [postpone it to the next grant](https://github.com/scs/MIRAI/tree/Milestone1_Research/substrate-examples#next-steps). + You picked two vulnerability classes to demonstrate the possibilities to move + on with MIRAI. I would then expect that the research goes as deep as needed to + answer the above (at least for the classes you picked). + +### Repository Structure + +- It would be more clear for me if the work was in its own repository to follow + the development easier and separate concerns of the testing tool from the + development of MIRAI (at least at the current stage until maintainers give + their go to merge to MIRAI). + +- In MIRAI as well as + [@bhargavbh fork](https://github.com/bhargavbh/MIRAI/tree/main/substrate_examples), + example folders are named by functionality / vulnarability class. In the + milestone 1 fork, your naming convention differs. It would be clearer to stick + the the former in my opinion. + +## User Documentation Feedback + +- The instructions on running the code are missing some parts, see + [Running the Prototype Code](#running-the-prototype-code) + +- The documentation is repetitve in both files in the Beginning ('##Running') + submitted as "User Documentation". An ideal solution would have a + documentation in one file, stating how to run the examples step by step. + +## Documentation Feedback + +The documentation is short of detail but covers the aspects stated in the +application. + +### Research / Findings + +- [@bhargavbh mentioned](https://github.com/w3f/Grants-Program/pull/1706#issuecomment-1535936716) + that it would be relevant to "document interesting vulnarability classes + (which you may find in research phase)". The Documentation Delivery + specification is: "b) with (interesting) examples of the vulnerability + classes." I cannot find that in the M1 delivery, where the focus is only on + the "incorrect origin" and "unsigned transaction" vulnerability classes. The + [RFP](https://github.com/w3f/Grants-Program/blob/master/docs/RFPs/Open/Static-Analysis-for-Runtime-Pallets.md#project-description-page_facing_up) + mentions 3 more classes, the RFP repo has a + [description and example for the "arithmetic-overflow" vulnarability class](https://github.com/bhargavbh/MIRAI/tree/main/substrate_examples/arithmetic-overflow) + and I assume more could be found in engaging with pallet developers. + +- You + [identified several **major** issues with MIRAI + substrate](https://github.com/scs/MIRAI/tree/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples#findings)): + + 1. crashes and timeouts + 2. invasiveness on code (=> adoption is hard) + 3. [problem with nesting `precondition!` and `verify!`](https://github.com/scs/MIRAI/blob/db8104d6bba5224ad445502ec46166288349e60c/substrate-examples/pallet_template/README.md#open-issues) + + To me, those issues sound severe. Are you confident that you will be able to + fix them in a next step? What is your approach? + +In general, I would welcome a more detailed description of the errors / crashes +you got with MIRAI, so others can evaluate on their systems and build upon your +work and findings with MIRAI. + +## Engagement Feedback + +The linked github comment is hidden inside the w3f grants repository. I would +consider a post in the polkadot forum or some other way to reach pallet +developers directly in order to find priorities / new vulnerability classes. diff --git a/evaluations/silentdata_1_keeganquigley.md b/evaluations/silentdata_1_keeganquigley.md index 7b183bb62..1bf89f7ca 100644 --- a/evaluations/silentdata_1_keeganquigley.md +++ b/evaluations/silentdata_1_keeganquigley.md @@ -1,20 +1,20 @@ # Evaluation -- **Status:** In progress +- **Status:** Accepted - **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/project_silentdata.md - **Milestone:** 1 - **Previously successfully merged evaluation:** All by keeganquigley | Number | Deliverable | Accepted | Link | Notes | | ------------- | ------------- | ------------- | ------------- |------------- | -| 0a. | License |
  • [x]
| [Node.js library](https://github.com/appliedblockchain/silentdata-node-public/blob/main/LICENSE)
[Smart contract](https://github.com/appliedblockchain/silentdata-polkadot-public/blob/main/LICENSE) | ...| -| 0b. | Documentation |
  • [x]
| [Silent Data whitepaper](https://www.linkedin.com/smart-links/AQEE0cyaT_nw0g)
[Node.js library](https://github.com/appliedblockchain/silentdata-node/blob/main/README.md)
[Smart contract](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/README.md) | ...| -| 0c. | Testing Guide |
  • [x]
|[Guide](https://docs.google.com/document/d/1B5woRIl_ZNuahx007V6nXmjW3_Ne4aQ4kVFB-I_Bu0M/edit?usp=sharing) | ...| -| 0d. | Docker |
  • [x]
|[Node.js library usage example](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/examples/Dockerfile)
[Silent Data pallet](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/docker/Dockerfile.node) | ...| -| 0e. | Article |
  • [x]
|[Polkadot Foundation Partnership Silent Data](https://www.linkedin.com/pulse/polkadot-foundation-partnership-silent-data-silentdata)| ...| -| 1. | Library |
  • [x]
|[silentdata-node](https://github.com/appliedblockchain/silentdata-node) | ...| -| 2. | Smart Contract |
  • [x]
|[silentdata-polkadot](https://github.com/appliedblockchain/silentdata-polkadot) | ...| -| 3. | Extension |
  • [x]
|[Secure enclave](https://github.com/appliedblockchain/silentdata-defi-core/compare/v0.4.0...v0.5.0-rc1)
[Web application](https://github.com/appliedblockchain/silentdata-defi-app/compare/v0.4.0...v0.5.0-rc1) | Will these private repos be published? | +| 0a. | License |
  • [x]
| [Node.js library](https://github.com/appliedblockchain/silentdata-node-public/blob/main/LICENSE)
[Smart contract](https://github.com/appliedblockchain/silentdata-polkadot-public/blob/main/LICENSE) | Ok. | +| 0b. | Documentation |
  • [x]
| [Silent Data whitepaper](https://www.linkedin.com/smart-links/AQEE0cyaT_nw0g)
[Node.js library](https://github.com/appliedblockchain/silentdata-node/blob/main/README.md)
[Smart contract](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/README.md) | Ok. | +| 0c. | Testing Guide |
  • [x]
|[Guide](https://docs.google.com/document/d/1B5woRIl_ZNuahx007V6nXmjW3_Ne4aQ4kVFB-I_Bu0M/edit?usp=sharing) | Ok. | +| 0d. | Docker |
  • [x]
|[Node.js library usage example](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/examples/Dockerfile)
[Silent Data pallet](https://github.com/appliedblockchain/silentdata-polkadot/blob/main/docker/Dockerfile.node) | Ok. | +| 0e. | Article |
  • [x]
|[Polkadot Foundation Partnership Silent Data](https://www.linkedin.com/pulse/polkadot-foundation-partnership-silent-data-silentdata)| Ok. | +| 1. | Library |
  • [x]
|[silentdata-node](https://github.com/appliedblockchain/silentdata-node) | Ok. | +| 2. | Smart Contract |
  • [x]
|[silentdata-polkadot](https://github.com/appliedblockchain/silentdata-polkadot) | Ok. | +| 3. | Extension |
  • [x]
| | Ok. | # General Notes @@ -85,9 +85,9 @@ docker build -t silentdata-example . => => writing image sha256:166414d1cac1dc8c830fa4e2cd3f65cbb25aa749f67882a2fc6537af75cb7b5c 0.0s => => naming to docker.io/library/silentdata-example ``` - Docker image successfully builds and runs for the pallet as well. I'm also able to manually build the pallet into the node. +Docker image successfully builds and runs for the pallet as well. I'm also able to manually build the pallet into the node. I'm able to deploy and instantiate the contract on the node and call it. - Instagram checks work in Docker but `npm run build` fails with the following errors: +Instagram checks work in Docker but `npm run build` fails with the following errors: ``` npm run build @@ -201,6 +201,8 @@ Errors Files 2 src/lib.ts:1 14 src/util.ts:1 ``` +**UPDATE:** Build issues were resolved. + In the `silentdata-node` repo, yarn is unsuccessful in installing the dependancies: ``` ubuntu@ip-172-31-3-233:~$ yarn add @appliedblockchain/silentdata-node @@ -237,6 +239,8 @@ Done in 5.18s. info There appears to be trouble with the npm registry (returned undefined). Retrying... info There appears to be trouble with the npm registry (returned undefined). Retrying... ``` + **UPDATE:** Repo doesn't apply. + ## Guide I'm able to get through the guide and register and create an API key. Building the Docker file works, but then for some reason the command fails: @@ -248,3 +252,4 @@ docker run silentdata-example \ --walletAddress={WALLET_ADDRESS} An error occurred: Client ID or API key incorrect ``` +Instagram check works. diff --git a/evaluations/sirato_1_dastansam.md b/evaluations/sirato_1_dastansam.md new file mode 100644 index 000000000..f998b77fe --- /dev/null +++ b/evaluations/sirato_1_dastansam.md @@ -0,0 +1,281 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/pull/1608 +- **Milestone:** 1 +- **Kusama Identity:** [Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP](https://sub.id/Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP) +- **Previously successfully merged evaluation:** N/A + +**Deliverables** +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/web3labs/epirus-substrate/blob/main/LICENSE | Correct license | +| 0b. | Documentation | Project README: https://github.com/web3labs/epirus-substrate/tree/main/explorer-ui#readme
Video demo: https://www.loom.com/share/85fb7a8cbe6e40ba9bcadd804b7e6bc5 | Well documented | +| 0c. | Testing Guide | UI unit tests: https://github.com/web3labs/epirus-substrate/blob/main/explorer-ui/README.md#testing | UI, coverage, analysis tests and linting are passing. Logs attached below. | +| 0d. | Docker | UI Docker image: [ghcr.io/web3labs/epirus-substrate-ui:latest](https://github.com/web3labs/epirus-substrate/pkgs/container/epirus-substrate-ui)
Docker compose for running all explorer components locally: https://github.com/web3labs/epirus-substrate/tree/main/local-testnet | Was able to compile and run the docker image. When running the local testnet with docker compose, UI is not running (logs below) | +| 1. | Updated Explorer UI | https://github.com/web3labs/epirus-substrate/tree/main/explorer-ui | Can confirm the new folders (`./src/components/blocks/` and `./src/components/extrinsics/`) are present and changes have been made acoording to the application. Explorer compiles and runs successfully. | +| 2. | Public explorer instance | https://substrate.sirato.xyz | A new menu item `Blocks` has been added to the side navbar. New navbar is present and the explorer is running | + +## General Notes + +In general, it's documented well and majority of the instructions are clear. Code is well written and structured. The only issue I had was with running the local testnet with docker compose. The UI container is not running, I attached the logs related to `explorer-ui` container [below](#logs). + +When installing the dependencies, I couldn't do it with simple `npm install` command, I had to force install the dependencies with `npm install --force`. I am not completely sure if it's because of some upstream issues with npm or dependencies, but I think it should either be fixed to work with `npm install` or documented that it should be installed with `npm install --force`. + +### Explorer running locally + +Explorer local run + +### Code suggestions + +I noticed that `.env` file is not gitignored. It's not a big deal, but it's better to keep it out of the repository. You can set the environment variables in the `.env` file in `.env.example` and use it as a fallback file to `.env`. `.env` should be used for production variables, I think. + +### Logs + +
+ + Test outputs + +```sh +npm test + +Test Suites: 68 passed, 68 total +Tests: 187 passed, 187 total +Snapshots: 0 total +Time: 6.56 s +Ran all test suites. +``` + +
+ +
+ + Test coverage + +```sh +File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s +---------------------------------|---------|----------|---------|---------|--------------------------------- +All files | 86.67 | 77.41 | 84.22 | 86.74 | + src | 100 | 66.66 | 100 | 100 | + App.tsx | 100 | 66.66 | 100 | 100 | 28-34 + src/components | 50 | 100 | 50 | 50 | + BlocksHomePage.tsx | 0 | 100 | 0 | 0 | 8 + HomePage.tsx | 100 | 100 | 100 | 100 | + src/components/accounts | 94.44 | 92.5 | 90 | 94.44 | + AccountAddress.tsx | 100 | 100 | 100 | 100 | + AccountLink.tsx | 100 | 100 | 100 | 100 | + AccountList.tsx | 100 | 100 | 100 | 100 | + AccountPage.tsx | 93.33 | 70 | 100 | 93.33 | 93 + AccountRow.tsx | 100 | 100 | 100 | 100 | + AccountsPage.tsx | 50 | 100 | 50 | 50 | 29 + src/components/activities | 81.39 | 74.28 | 75 | 81.39 | + ActivitiesPage.tsx | 75 | 83.33 | 50 | 75 | 25,50-60 + ActivityList.tsx | 100 | 100 | 100 | 100 | + ActivityRow.tsx | 76.19 | 65.21 | 66.66 | 76.19 | 27-34,71 + ActivityTab.tsx | 100 | 100 | 100 | 100 | + src/components/badges | 100 | 100 | 100 | 100 | + BlockBadge.tsx | 100 | 100 | 100 | 100 | + CheckBadge.tsx | 100 | 100 | 100 | 100 | + CodeBadge.tsx | 100 | 100 | 100 | 100 | + CrossBadge.tsx | 100 | 100 | 100 | 100 | + src/components/blocks | 93.54 | 66.66 | 100 | 93.54 | + BlockId.tsx | 66.66 | 62.5 | 100 | 66.66 | 49 + BlockLink.tsx | 100 | 83.33 | 100 | 100 | 24 + BlockList.tsx | 100 | 66.66 | 100 | 100 | 82-88 + BlockPage.tsx | 92.85 | 75 | 100 | 92.85 | 78 + BlockRow.tsx | 100 | 40 | 100 | 100 | 13-38 + BlocksPage.tsx | 100 | 100 | 100 | 100 | + src/components/blocks/events | 100 | 83.33 | 100 | 100 | + EventList.tsx | 100 | 83.33 | 100 | 100 | 72 + EventRow.tsx | 100 | 100 | 100 | 100 | + EventsTab.tsx | 100 | 100 | 100 | 100 | + src/components/codes | 90.62 | 77.77 | 80.95 | 91.8 | + BinaryTab.tsx | 88.88 | 75 | 100 | 100 | 24 + CodeHash.tsx | 100 | 100 | 100 | 100 | + CodeLink.tsx | 100 | 100 | 100 | 100 | + CodeList.tsx | 100 | 50 | 100 | 100 | 57,71-77 + CodePage.tsx | 95.23 | 73.33 | 100 | 95.23 | 106 + CodeRow.tsx | 100 | 100 | 100 | 100 | + CodeTab.tsx | 33.33 | 100 | 33.33 | 33.33 | 16-30 + CodesPage.tsx | 33.33 | 100 | 33.33 | 33.33 | 29-37 + HexView.tsx | 100 | 100 | 100 | 100 | + src/components/codes/sources | 88.18 | 84.5 | 87.14 | 89.03 | + ErrorView.tsx | 100 | 100 | 100 | 100 | + FileBox.tsx | 100 | 100 | 100 | 100 | + FileList.tsx | 81.81 | 75 | 66.66 | 90 | 40 + FileView.tsx | 95.45 | 91.66 | 100 | 95.45 | 53 + FilesNavigation.tsx | 87.8 | 91.3 | 86.66 | 86.84 | 33,44,109,118,123 + MetadataView.tsx | 86.36 | 80 | 100 | 86.36 | 80-83,95 + ProcessingView.tsx | 100 | 85.71 | 100 | 100 | 24-30 + SourceCode.tsx | 100 | 100 | 100 | 100 | + SourceTab.tsx | 96.55 | 86.2 | 100 | 96.55 | 45 + UnverifiedView.tsx | 76.47 | 77.5 | 72.22 | 78.46 | 39-40,44-47,111-112,163-169,284 + VerifiedView.tsx | 100 | 100 | 100 | 100 | + src/components/commons | 82.35 | 75.24 | 86.11 | 82.35 | + Alert.tsx | 100 | 100 | 100 | 100 | + Box.tsx | 100 | 100 | 100 | 100 | + Copy.tsx | 83.33 | 100 | 66.66 | 83.33 | 14 + Definitions.tsx | 75 | 80 | 100 | 75 | 14 + ExtrinsicSummary.tsx | 100 | 61.53 | 100 | 100 | 11,47-49 + Label.tsx | 100 | 100 | 100 | 100 | + Lane.tsx | 100 | 100 | 100 | 100 | + List.tsx | 83.33 | 80 | 80 | 83.33 | 37 + Segment.tsx | 100 | 92.3 | 100 | 100 | 37 + Select.tsx | 85.71 | 69.23 | 75 | 85.71 | 122-129 + Tag.tsx | 100 | 100 | 100 | 100 | + Text.tsx | 58.82 | 57.14 | 75 | 58.82 | 10,26-33,51 + Toast.tsx | 100 | 100 | 100 | 100 | + Tooltip.tsx | 100 | 100 | 100 | 100 | + src/components/contracts | 89.39 | 71.92 | 84 | 89.39 | + ContractList.tsx | 100 | 66.66 | 100 | 100 | 79-85 + ContractPage.tsx | 94.44 | 61.9 | 100 | 94.44 | 137 + ContractRow.tsx | 100 | 0 | 100 | 100 | 13 + ContractTab.tsx | 75 | 100 | 75 | 75 | 38 + ContractTermination.tsx | 100 | 100 | 100 | 100 | + ContractUpgrade.tsx | 100 | 100 | 100 | 100 | + ContractsPage.tsx | 33.33 | 100 | 33.33 | 33.33 | 28-36 + DataView.tsx | 88 | 80 | 87.5 | 88 | 44,116,121 + src/components/contracts/events | 84.61 | 50 | 71.42 | 84.61 | + EventList.tsx | 100 | 50 | 100 | 100 | 63,77-83 + EventRow.tsx | 100 | 100 | 100 | 100 | + EventTab.tsx | 33.33 | 100 | 33.33 | 33.33 | 24-27 + src/components/extrinsics | 93.02 | 61.11 | 100 | 93.02 | + EventList.tsx | 100 | 66.66 | 100 | 100 | 60-66 + EventRow.tsx | 100 | 100 | 100 | 100 | + EventsTab.tsx | 100 | 100 | 100 | 100 | + ExtrinsicId.tsx | 66.66 | 50 | 100 | 66.66 | 36 + ExtrinsicLink.tsx | 75 | 66.66 | 100 | 75 | 22 + ExtrinsicPage.tsx | 92.85 | 64.28 | 100 | 92.85 | 86 + ExtrinsicRow.tsx | 100 | 33.33 | 100 | 100 | 13-29 + ExtrinsicsList.tsx | 100 | 66.66 | 100 | 100 | 49-55 + ExtrinsicsTab.tsx | 100 | 100 | 100 | 100 | + src/components/loading | 93.33 | 100 | 88.88 | 93.33 | + Loading.tsx | 93.33 | 100 | 88.88 | 93.33 | 29 + src/components/navigation | 70 | 55.55 | 55 | 69.23 | + Breadcrumbs.tsx | 100 | 100 | 100 | 100 | + MainNav.tsx | 36.36 | 18.18 | 14.28 | 36.36 | 71-118,268-282 + Pagination.tsx | 58.33 | 60 | 25 | 58.33 | 9,17-18,31-47 + SideBar.tsx | 100 | 87.5 | 100 | 100 | 22 + Tabs.tsx | 100 | 100 | 100 | 100 | + src/components/query | 89.55 | 75.67 | 86.95 | 89.39 | + Filters.tsx | 86.84 | 58.33 | 92.85 | 86.48 | 31,127-131 + ListQuery.tsx | 96.15 | 83.33 | 83.33 | 96.15 | 56 + SortBy.tsx | 66.66 | 100 | 66.66 | 66.66 | 22 + src/components/query/filters | 63.04 | 66.66 | 72.22 | 63.04 | + Chip.tsx | 100 | 100 | 100 | 100 | + DateRangeFilter.tsx | 17.64 | 22.22 | 25 | 17.64 | 9-15,35-59 + EnumTypeFilter.tsx | 92.3 | 90.9 | 100 | 92.3 | 58 + TextFilter.tsx | 86.66 | 85.71 | 66.66 | 86.66 | 10-13 + src/components/query/search | 72.61 | 61.53 | 61.9 | 72.28 | + SearchBox.tsx | 72.36 | 60.6 | 61.11 | 72 | 66-67,79-80,114,131-153,229-238 + SearchResults.tsx | 75 | 66.66 | 66.66 | 75 | 32,57 + src/components/responsive | 100 | 87.5 | 100 | 100 | + Media.tsx | 100 | 87.5 | 100 | 100 | 10 + src/contexts | 100 | 100 | 100 | 100 | + ChainContext.tsx | 100 | 100 | 100 | 100 | + chainNames.ts | 100 | 100 | 100 | 100 | + src/formats | 100 | 100 | 100 | 100 | + bytes.ts | 100 | 100 | 100 | 100 | + text.ts | 100 | 100 | 100 | 100 | + time.ts | 100 | 100 | 100 | 100 | + units.ts | 100 | 100 | 100 | 100 | + src/highlight | 100 | 100 | 100 | 100 | + index.ts | 100 | 100 | 100 | 100 | + src/hooks | 72.22 | 75 | 80 | 68.75 | + useSquid.ts | 72.22 | 75 | 80 | 68.75 | 41-44,51-52,61 + src/utils | 100 | 100 | 100 | 100 | + args.ts | 100 | 100 | 100 | 100 | + errors.ts | 100 | 100 | 100 | 100 | + hashcode.ts | 100 | 100 | 100 | 100 | + hex.ts | 100 | 100 | 100 | 100 | + strings.ts | 100 | 100 | 100 | 100 | +---------------------------------|---------|----------|---------|---------|--------------------------------- + +Test Suites: 68 passed, 68 total +Tests: 187 passed, 187 total +Snapshots: 0 total +Time: 6.152 s +Ran all test suites. +``` + +
+ +
+ +Linting + +```sh + +> explorer-ui@0.1.0 lint:fix +> eslint --fix 'src/**/*.{js,jsx,ts,tsx}' + + +/Users/dastan@enjin.io/Documents/dastan/evaluations/epirus-substrate/explorer-ui/src/components/blocks/BlockList.test.tsx + 6:10 error 'contractByDeployer' is defined but never used no-unused-vars + +/Users/dastan@enjin.io/Documents/dastan/evaluations/epirus-substrate/explorer-ui/src/components/blocks/BlocksPage.test.tsx + 8:10 error 'Edge' is defined but never used no-unused-vars + 9:10 error 'LightBlock' is defined but never used no-unused-vars + +/Users/dastan@enjin.io/Documents/dastan/evaluations/epirus-substrate/explorer-ui/src/components/blocks/events/EventRow.test.tsx + 6:10 error 'LightExtrinsic' is defined but never used no-unused-vars + +/Users/dastan@enjin.io/Documents/dastan/evaluations/epirus-substrate/explorer-ui/src/components/extrinsics/EventRow.test.tsx + 6:10 error 'LightExtrinsic' is defined but never used no-unused-vars + +✖ 5 problems (5 errors, 0 warnings) +``` + +
+ +
+ +Docker + +```sh +> docker build -t epirus-substrate-ui:develop . + + => exporting to image 0.1s + => => exporting layers 0.1s + => => writing image sha256:ca85d4c333e5bd81318c475e69a740e0ce3d59df4707f1cdd1282a39ce053320 0.0s + => => naming to docker.io/library/epirus-substrate-ui:develop +``` + +
+ +
+ +Local testnet docker compose + +```sh +explorer-ui | +explorer-ui | Provided flags: +explorer-ui | --config-name = ./runtime-env.js +explorer-ui | --env-file = ./.env +explorer-ui | +explorer-ui | Your environment variables will be available on 'window.__RUNTIME_CONFIG__' +explorer-ui | +explorer-ui | Successfully generated your runtime-env config! +explorer-ui | Result: window.__RUNTIME_CONFIG__ = {"REACT_APP_SQUID_ENDPOINT":"http://localhost:4000/graphql","REACT_APP_SQUID_ARCHIVE_ENDPOINT":"http://localhost:4444/graphql","REACT_APP_SOURCE_CODE_ENABLED":"true","REACT_APP_VERIFIER_ENDPOINT":"http://127.0.0.1:3001","REACT_APP_VERIFIER_WS_ENDPOINT":"ws://127.0.0.1:3001"}; +explorer-ui | +explorer-ui | Thank you for using runtime-env-cra! +explorer-ui | +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: using the "epoll" event method +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: nginx/1.24.0 +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: built by gcc 12.2.1 20220924 (Alpine 12.2.1_git20220924-r4) +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: OS: Linux 5.15.49-linuxkit +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: start worker processes +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: start worker process 24 +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: start worker process 25 +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: start worker process 26 +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: start worker process 27 +explorer-ui | 2023/06/25 20:24:49 [notice] 1#1: start worker process 30 +explorer-ui | 2023/06/25 20:24:49 [emerg] 26#26: io_setup() failed (38: Function not implemented) +explorer-ui | 2023/06/25 20:24:49 [emerg] 25#25: io_setup() failed (38: Function not implemented) +explorer-ui | 2023/06/25 20:24:49 [emerg] 27#27: io_setup() failed (38: Function not implemented) +explorer-ui | 2023/06/25 20:24:49 [emerg] 30#30: io_setup() failed (38: Function not implemented) +explorer-ui | 2023/06/25 20:24:49 [emerg] 24#24: io_setup() failed (38: Function not implemented) +``` + +
diff --git a/evaluations/slothunter_1_ali-usama.md b/evaluations/slothunter_1_ali-usama.md new file mode 100644 index 000000000..468240be3 --- /dev/null +++ b/evaluations/slothunter_1_ali-usama.md @@ -0,0 +1,60 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [slothunter](https://github.com/w3f/Grants-Program/blob/master/applications/slothunter.md) +- **Milestone:** 1 +- **Kusama Identity:** Eexv1mKLiCidz2gGh6vfowtXgSSc7mvD4xEb2ji998W4DPs +- **Previously successfully merged evaluation:** All evaluations by ali-usama + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +|--------|-------------------------------------|------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------| +| 0a. | Licence |
  • [x]
| [GPLv3](https://github.com/hack-ink/slothunter/blob/main/LICENSE) | Correct Licence | +| 0b. | Documentation |
  • [x]
| [Guide](https://github.com/hack-ink/slothunter/blob/main/test/guide.md),
[ReadMe](https://github.com/hack-ink/slothunter/tree/main#readme) | Well-structured docs | +| 0c. | Testing guide |
  • [x]
| [Test guide](https://github.com/hack-ink/slothunter/blob/main/test/guide.md#test-guide) | All test cases passing successfully. Outputs are attached. | +| 1. | Auction winner calculator |
  • [x]
| [result](https://github.com/hack-ink/slothunter/blob/main/src/primitive.rs#L104) | Working as per application | +| 2. | Notification component |
  • [x]
| [notifications](https://github.com/hack-ink/slothunter/blob/main/src/hunter.rs#L162) | Working as per application | +| 3. | Auto bidding/contributing component |
  • [x]
| | Working as per application | +| 4. | Slothunter configuration component |
  • [x]
| [config file](https://github.com/hack-ink/slothunter/blob/main/test/integration/rococo.toml) | Working as per application | +| 5. | Releases |
  • [x]
| [build](https://github.com/hack-ink/slothunter/blob/main/build.rs) | Working as per application | + + +## General Notes + +The delivery repo is well-structured and well-documented. The test cases most of the edge-cases and are passing successfully, without showing any issues with the docker files as well. + +The [Advance testing](https://github.com/hack-ink/slothunter/blob/main/test/guide.md#advance-test), mentioned in the testing guide, was also performed and all the features mentioned in the delivery found to be working great. +### `cargo test` +``` +running 10 tests +test hunter::util::blocks2time_should_work ... ok +test hunter::graphql::query_string_should_work ... ok +test hunter::util::crowdloan_id_of_should_work ... ok +test hunter::util::combinations_should_work ... ok +test hunter::util::position_in_ranges_should_work ... ok +test hunter::util::ranges_are_intersecting_should_work ... ok +test hunter::util::winning_offset_of_should_work ... ok +test primitive::winning_result_should_work ... ok +test primitive::minimum_bid_to_win_should_work ... ok +test hunter::util::check_uri_should_work ... ok + +test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s +``` + +### `cargo test --features node-test` +``` +running 11 tests +test hunter::util::blocks2time_should_work ... ok +test hunter::graphql::query_string_should_work ... ok +test hunter::util::combinations_should_work ... ok +test hunter::util::crowdloan_id_of_should_work ... ok +test hunter::util::position_in_ranges_should_work ... ok +test hunter::util::ranges_are_intersecting_should_work ... ok +test hunter::util::winning_offset_of_should_work ... ok +test primitive::winning_result_should_work ... ok +test primitive::minimum_bid_to_win_should_work ... ok +test hunter::util::check_uri_should_work ... ok +test hunter::tx::tx_should_work ... ok + +test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 18.82s + +``` \ No newline at end of file diff --git a/evaluations/societal-grant-3_1_ali-usama.md b/evaluations/societal-grant-3_1_ali-usama.md new file mode 100644 index 000000000..6b9bdca47 --- /dev/null +++ b/evaluations/societal-grant-3_1_ali-usama.md @@ -0,0 +1,485 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Societal SaaS Application](https://github.com/w3f/Grants-Program/blob/master/applications/societal_saas_pricing.md) +- **Milestone:** 1 +- **Kusama Identity:** Eexv1mKLiCidz2gGh6vfowtXgSSc7mvD4xEb2ji998W4DPs +- **Previously successfully merged evaluation:** All evaluations by ali-usama + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +|--------|-------------------------------------------|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------| +| 0a. | Licence |
  • [x]
| [Apache 2.0](https://github.com/sctllabs/societal-node/blob/grant3_m1/LICENSE) | Correct Licence | +| 0b. | Documentation |
  • [x]
| [ReadMe](https://github.com/sctllabs/societal-node/blob/grant3_m1/README.md) | Well-explained Readme | +| 0c. | Testing Guide |
  • [x]
| [TestingGuide](https://github.com/sctllabs/societal-node/blob/grant3_m1/docs/SubscriptionTestingGuide.md) | Working as per the application | +| 0d. | Docker |
  • [x]
| [Run in Docker](https://github.com/sctllabs/societal-node/tree/grant3_m1#run-in-docker)
[Docker image](https://hub.docker.com/layers/societal/societal-node/grant3_m1-latest/images/sha256-21719afd8ec6237ffa4b12303da79b67ed078d7d5b160ef0a19ba9e20a061516?context=explore) | Builds and runs successfully | +| 1. | Substrate Module: DAO Subscription pallet |
  • [x]
| [DAO subscription](https://github.com/sctllabs/societal-node/tree/grant3_m1/pallets/dao-subscription) | Working as per the application | +| 2. | Client Modules |
  • [x]
| [Pallets](https://github.com/sctllabs/societal-node/tree/grant3_m1/pallets) | Working as per the application | + + +## General Notes + +The repository is well-structured and well-documented, and all the features mentioned in the milestone are working as expected. The Subsciption testing has been done using the Polkadot JS UI, and the details of unit tests are attached below: + +### `cargo test` output +``` +Running unittests src/lib.rs (target/debug/deps/dao_primitives-5304105fe2657841) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/eth_primitives-e44444abe577bac1) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao-92a9cf4d3aa685a2) + +running 5 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::create_dao_invalid_input ... ok +test tests::create_dao_fails_on_string_limits ... ok +test tests::create_dao_token_failure ... ok +test tests::create_dao_works ... ok + +test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_assets-cacdcb0554414926) + +running 61 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::balance_conversion_should_work ... ok +test tests::assets_from_genesis_should_exist ... ok +test tests::basic_minting_should_work ... ok +test tests::approval_lifecycle_works ... ok +test tests::asset_transfer_when_on_hold_should_not_work ... ok +test tests::approve_transfer_frozen_asset_should_not_work ... ok +test tests::burning_asset_balance_with_positive_balance_should_work ... ok +test tests::approval_deposits_work ... ok +test tests::burning_asset_balance_with_zero_balance_does_nothing ... ok +test tests::deducting_asset_balance_should_work ... ok +test tests::destroy_accounts_calls_died_hooks ... ok +test tests::finish_destroy_asset_destroys_asset ... ok +test tests::cannot_transfer_more_than_approved ... ok +test tests::cannot_transfer_more_than_exists ... ok +test tests::cancel_approval_works ... ok +test tests::holding_asset_account_balance_should_work ... ok +test tests::destroy_should_refund_approvals ... ok +test tests::imbalances_should_work ... ok +test tests::force_metadata_should_work ... ok +test tests::force_asset_status_should_work ... ok +test tests::force_cancel_approval_works ... ok +test tests::minting_insufficient_assets_with_deposit_without_consumer_should_work ... ok +test tests::lifecycle_should_work ... ok +Jul 07 18:08:55.849 ERROR runtime::system: Logic error: Unexpected underflow in reducing consumer +test tests::minting_insufficient_asset_with_deposit_should_work_when_consumers_exhausted ... ok +test tests::freezer_should_work ... ok +test tests::normal_asset_create_and_destroy_callbacks_should_work ... ok +test tests::minting_too_many_insufficient_assets_fails ... ok +test tests::querying_roles_should_work ... ok +test tests::querying_name_symbol_and_decimals_should_work ... ok +test tests::min_balance_should_work ... ok +test tests::non_providing_should_work ... ok +test tests::querying_total_supply_should_work ... ok +test tests::querying_allowance_should_work ... ok +test tests::refunding_asset_deposit_with_burn_should_work ... ok +test tests::partial_destroy_should_work ... ok +test tests::root_asset_create_should_work ... ok +test tests::origin_guards_should_work ... ok +test tests::refunding_calls_died_hook ... ok +test tests::refunding_asset_deposit_without_burn_should_work ... ok +test tests::slashing_asset_balance_should_work ... ok +test tests::refunding_asset_deposit_with_burn_disallowed_should_fail ... ok +test tests::slashing_reserved_asset_balance_should_work ... ok +test tests::set_team_should_work ... ok +test tests::transferring_amount_below_available_balance_should_work ... ok +test tests::transfer_approved_all_funds ... ok +test tests::transfer_large_asset ... ok +test tests::transfer_owner_should_work ... ok +test tests::transferring_less_than_one_unit_is_fine ... ok +test tests::transferring_enough_to_kill_source_when_keep_alive_should_fail ... ok +test tests::set_metadata_should_work ... ok +test tests::transferring_more_units_than_total_supply_should_not_work ... ok +test tests::transferring_reserved_asset_balance_to_nonexistent_should_fail ... ok +test types::ensure_bool_decodes_to_consumer_or_sufficient ... ok +test tests::transferring_frozen_asset_should_not_work ... ok +test tests::transferring_frozen_user_should_not_work ... ok +test tests::transferring_amount_more_than_available_balance_should_not_work ... ok +test tests::transferring_reserved_balance_should_work ... ok +test tests::unreserving_higher_with_best_effort_asset_balance_should_work ... ok +test tests::transferring_to_frozen_account_should_work ... ok +test tests::unreserving_asset_balance_should_work ... ok + +test result: ok. 61 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_bounties-9d09c312b514bca5) + +running 21 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::accepted_spend_proposal_enacted_on_spend_period ... ok +test tests::accepted_spend_proposal_ignored_outside_spend_period ... ok +test tests::accept_curator_handles_different_deposit_calculations ... ok +test tests::cancel_and_refund ... ok +test tests::award_and_cancel ... ok +test tests::claim_handles_high_fee ... ok +test tests::close_bounty_works ... ok +test tests::genesis_config_works ... ok +test tests::award_and_claim_bounty_works ... ok +test tests::assign_curator_works ... ok +test tests::expire_and_unassign ... ok +test tests::create_bounty_works ... ok +test tests::genesis_funding_works ... ok +test tests::pot_underflow_should_not_diminish ... ok +test tests::inexistent_account_works ... ok +test tests::unused_pot_should_diminish ... ok +test tests::extend_expiry ... ok +test tests::unassign_curator_self ... ok +test tests::treasury_account_doesnt_get_deleted ... ok +test tests::unassign_curator_works ... ok + +test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_bounties_precompile-9196153ddafff614) + +running 1 test +test __DaoBountiesPrecompile_test_solidity_signatures ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_collective-18b44a063002b1f5) + +running 21 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::correct_validate_and_get_proposal ... ok +test tests::close_with_no_prime_but_majority_works ... ok +test tests::close_disapprove_does_not_care_about_weight_or_len ... ok +test tests::motions_approval_with_enough_votes_and_lower_voting_threshold_works ... ok +test tests::motions_approval_works ... ok +test tests::motions_basic_environment_works ... ok +test tests::motion_with_no_votes_closes_with_disapproval ... ok +test tests::close_works ... ok +test tests::motions_disapproval_works ... ok +test tests::motions_ignoring_non_collective_proposals_works ... ok +test tests::proposal_weight_limit_ignored_on_disapprove ... ok +test tests::motions_ignoring_bad_index_collective_vote_works ... ok +test tests::motions_reproposing_disapproved_works ... ok +test tests::proposal_weight_limit_works_on_approve ... ok +test tests::propose_works ... ok +test tests::removal_of_old_voters_votes_works_with_set_members ... ok +test tests::motions_ignoring_non_collective_votes_works ... ok +test tests::removal_of_old_voters_votes_works ... ok +test tests::motions_vote_after_works ... ok +test tests::limit_active_proposals ... ok + +test result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_collective_precompile-24225f095b5de66b) + +running 1 test +test __DaoCollectivePrecompile_test_solidity_signatures ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_democracy-4d7b069fff576a17) + +running 55 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::decoders::test_decode_compact_u32_at ... ok +test tests::delegation::self_delegation_not_allowed ... ok +test tests::delegation::conviction_should_be_honored_in_delegation ... ok +test tests::delegation::cyclic_delegation_should_unwind ... ok +test tests::delegation::single_proposal_should_work_with_delegation ... ok +test tests::delegation::single_proposal_should_work_with_delegation_and_vote ... ok +test tests::cancellation::emergency_cancel_should_work ... ok +test tests::delegation::single_proposal_should_work_with_undelegation ... ok +test tests::delegation::single_proposal_should_work_with_vote_and_delegation ... ok +test tests::delegation::split_vote_delegation_should_be_ignored ... ok +test tests::external_proposing::external_blacklisting_should_work ... ok +test tests::external_proposing::external_majority_referendum_works ... ok +test tests::external_proposing::external_default_referendum_works ... ok +test tests::external_proposing::external_and_public_interleaving_works ... ok +test tests::delegation::redelegation_keeps_lock ... ok +test tests::external_proposing::veto_external_works ... ok +test tests::fast_tracking::fast_track_referendum_fails_when_no_simple_majority ... ok +test tests::fast_tracking::instant_next_block_referendum_backed ... ok +test tests::external_proposing::external_referendum_works ... ok +test tests::fast_tracking::fast_track_referendum_works ... ok +test tests::lock_voting::lock_voting_should_work_with_delegation ... ok +test tests::fast_tracking::instant_referendum_works ... ok +test tests::lock_voting::no_locks_without_conviction_should_work ... ok +test tests::lock_voting::locks_should_persist_from_voting_to_delegation ... ok +test tests::params_should_work ... ok +test tests::lock_voting::multi_consolidation_of_lockvotes_should_be_conservative ... ok +test tests::lock_voting::lock_voting_should_work ... ok +test tests::lock_voting::locks_should_persist_from_delegation_to_voting ... ok +test tests::public_proposals::backing_for_should_work ... ok +test tests::lock_voting::single_consolidation_of_lockvotes_should_work_as_before ... ok +test tests::public_proposals::cancel_proposal_should_work ... ok +test tests::public_proposals::deposit_for_proposals_should_be_taken ... ok +test tests::public_proposals::deposit_for_proposals_should_be_returned ... ok +test tests::public_proposals::blacklisting_should_work ... ok +test tests::public_proposals::poor_proposer_should_not_work ... ok +test tests::public_proposals::runners_up_should_come_after ... ok +test tests::public_proposals::poor_seconder_should_not_work ... ok +test tests::public_proposals::proposal_with_deposit_below_minimum_should_not_work ... ok +test tests::set_balance_proposal_is_correctly_filtered_out ... ok +test tests::scheduling::lowest_unbaked_should_be_sensible ... ok +test tests::lock_voting::prior_lockvotes_should_be_enforced ... ok +test tests::scheduling::delayed_enactment_should_work ... ok +test tests::scheduling::ooo_inject_referendums_should_work ... ok +test tests::scheduling::simple_failing_should_work ... ok +test tests::scheduling::simple_passing_should_work ... ok +test tests::voting::controversial_low_turnout_voting_should_work ... ok +test tests::voting::controversial_voting_should_work ... ok +test vote_threshold::tests::should_work ... ok +test tests::voting::passing_low_turnout_voting_should_work ... ok +test tests::voting::overvoting_should_fail ... ok +test tests::voting::split_vote_cancellation_should_work ... ok +test tests::voting::single_proposal_should_work ... ok +test tests::voting::split_voting_should_work ... ok +test tests::decoders::len_of_deposit_of ... ok + +test result: ok. 55 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.53s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_democracy_precompile-d8ea90ac57e322fd) + +running 1 test +test __DaoDemocracyPrecompile_test_solidity_signatures ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_eth_governance-ef888b5302257d3e) + +running 8 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::propose_pending_works ... ok +test tests::propose_approve_works ... ok +test tests::vote_approve_works ... ok +test tests::vote_pending_works ... ok +test tests::close_works ... ok +test tests::propose_account_not_signer ... ok +test tests::propose_account_invalid ... ok + +test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_eth_governance_precompile-ac076c5186089e0d) + +running 1 test +test __DaoEthGovernancePrecompile_test_solidity_signatures ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_membership-efd84dc9eee88c46) + +running 9 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::query_membership_works ... ok +test tests::change_key_works_that_does_not_change_order ... ok +test tests::reset_members_works ... ok +test tests::change_key_works ... ok +test tests::add_member_works ... ok +test tests::swap_member_works ... ok +test tests::swap_member_works_that_does_not_change_order ... ok +test tests::remove_member_works ... ok + +test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_membership_precompile-2fadcc9ac282db18) + +running 1 test +test __DaoMembershipPrecompile_test_solidity_signatures ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_nft_governance-a520c456bca91fad) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_precompile-cd6c5b4843b89685) + +running 1 test +test __DaoPrecompile_test_solidity_signatures ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_subscription-58c85d136a55d06a) + +running 10 tests +test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::ensure_active_not_exists ... ok +test tests::ensure_active_works ... ok +test tests::fails_already_subscribed ... ok +test tests::subscribe_not_enough_balance ... ok +test tests::subscribe_works ... ok +test tests::ensure_active_fn_limit_exceeded ... ok +test tests::ensure_active_expired ... ok +test tests::extend_subscription_works ... ok +test tests::extend_subscription_balance_low ... ok + +test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 4.29s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_treasury-a1b8217018655fba) + +running 13 tests +test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok +test tests::genesis_funding_works ... ok +test tests::genesis_config_works ... ok +test tests::minting_works ... ok +test tests::accepted_spend_proposal_ignored_outside_spend_period ... ok +test tests::accepted_spend_proposal_enacted_on_spend_period ... ok +test tests::inexistent_account_works ... ok +test tests::spend_origin_permissioning_works ... ok +test tests::pot_underflow_should_not_diminish ... ok +test tests::unused_pot_should_diminish ... ok +test tests::treasury_account_doesnt_get_deleted ... ok +test tests::spend_origin_works ... ok +test tests::max_approvals_limited ... ok + +test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s + + Running unittests src/lib.rs (target/debug/deps/pallet_dao_treasury_precompile-ea7722ab71b3140c) + +running 1 test +test __DaoTreasuryPrecompile_test_solidity_signatures ... ok + +test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (target/debug/deps/societal_node-89d25a73ed72cdbe) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/societal_node_runtime-bc392bd1c986b722) + +running 3 tests +test __pallet_staking_reward_curve_test_module::reward_curve_piece_count ... ok +test __construct_runtime_integrity_test::runtime_integrity_tests ... ok +test __pallet_staking_reward_curve_test_module::reward_curve_precision ... ok + +test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.38s + + Doc-tests dao-primitives + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests eth-primitives + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-assets + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-bounties + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-bounties-precompile + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-collective + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-collective-precompile + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-democracy + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-democracy-precompile + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-eth-governance + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-eth-governance-precompile + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-membership + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-membership-precompile + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-nft-governance + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-precompile + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-subscription + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-treasury + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests pallet-dao-treasury-precompile + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests societal-node-runtime + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + +``` \ No newline at end of file diff --git a/evaluations/solang_2_si.md b/evaluations/solang_2_si.md new file mode 100644 index 000000000..c5d4d1628 --- /dev/null +++ b/evaluations/solang_2_si.md @@ -0,0 +1,74 @@ +# Evaluation Solang + + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/pull/1334 +- **Milestone:** 2 +- **Kusama Identity:** Ha27MB4gKH36ieRPa1T1ASqhUz4sVxMoVmK7o5CS6tXDqjW +- **Previously successfully merged evaluation:** https://github.com/w3f/Grant-Milestone-Delivery/pull/883 + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | -------- | ---- |----------------- | +| 0a. | License |
  • [x]
|[Link](https://github.com/hyperledger/solang/blob/main/LICENSE)| License is Acceptable. Please write year and owner of cpyright on line 189 of the license. | +| 0b. | Documentation |
  • [x]
|[Link](https://solang.readthedocs.io/en/latest/running.html#starting-a-new-project)|Good | +| 0c. | Testing and Testing Guide |
  • [x]
|[Link](https://github.com/hyperledger/solang/blob/main/src/bin/cli/test.rs)|Refer to Item 1 in General Notes regarding Testing Guide.| +| 0d. | Docker |
  • []
|| No docker image provided. Refer to item 2 in General Notes. | +| 0e. | Article |
  • [x]
|[Link](https://forum.polkadot.network/t/introducing-solang-improvements/3361)| Link provided.| +| 1. | Implement Solang projects |
  • [x]
|[Link](https://github.com/hyperledger/solang/pull/1392)| See Item 4 in General Notes. | + + + +## General Notes + +1. You have not provided a testing guide for running the tests. See the existing documentation about how tests are run: https://github.com/hyperledger/solang/blob/main/docs/testing.rst + +2. There is an existing docker image for hyperledger already. The implemented soltution exists within that container. + +``` +docker run --rm -it -v $(pwd):/sources ghcr.io/hyperledger/solang compile -v -o /sources --target polkadot /sources/flipper.sol + +``` + +3. Installation was successful. + +``` +You have 26 outdated formulae installed. +==> Downloading https://formulae.brew.sh/api/cask_tap_migrations.jws.json +################################################################################################################################# 100.0% + +==> Tapping hyperledger/solang +Cloning into '/opt/homebrew/Library/Taps/hyperledger/homebrew-solang'... +remote: Enumerating objects: 56, done. +remote: Counting objects: 100% (56/56), done. +remote: Compressing objects: 100% (28/28), done. +remote: Total 56 (delta 19), reused 49 (delta 17), pack-reused 0 +Receiving objects: 100% (56/56), 14.14 KiB | 7.07 MiB/s, done. +Resolving deltas: 100% (19/19), done. +Tapped 1 cask (17 files, 33.4KB). +==> Downloading https://github.com/hyperledger/solang/releases/download/v0.3.1/solang-mac-arm +==> Downloading from https://objects.githubusercontent.com/github-production-release-asset-2e65be/163517929/021a1e14-702f-4cce-9d18-5da3 +################################################################################################################################# 100.0% +==> Installing Cask solang +==> Linking Binary 'solang-mac-arm' to '/opt/homebrew/bin/solang' +🍺 solang was successfully installed! +``` +Some of the documentaiton seems to be outdated. For example, the following command fails: + +``` +solang compile --target polkadot examples/polkadot/flipper.sol +``` + +because there is no ***polkadot*** target, but rather ***substrate***. + +``` +error: invalid value 'polkadot' for '--target ' + [possible values: solana, substrate, evm] + +For more information, try '--help'. +``` + +4. Tested the solang new command and it runs successfully locally. + +``` +solang new --target substrate +``` \ No newline at end of file diff --git a/evaluations/solang_developer_experience_improvments_2_dsm-w3f.md b/evaluations/solang_developer_experience_improvments_2_dsm-w3f.md new file mode 100644 index 000000000..05d92872d --- /dev/null +++ b/evaluations/solang_developer_experience_improvments_2_dsm-w3f.md @@ -0,0 +1,149 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Solang_developer_experience_improvements.md +- **Milestone:** 2 +- **Kusama Identity:** Address +- **Previously successfully merged evaluation:** N/A + +| Number | Deliverable | Accepted | Link | Notes | +| ------------- | ------------- | ------------- | ------------- |------------- | +| 0a. | License |
  • [x]
| https://github.com/hyperledger/solang/blob/main/LICENSE | Apache-2.0 | +| 0b. | Documentation |
  • [x]
| https://solang.readthedocs.io/en/latest/running.html#compiler-usage https://solang.readthedocs.io/en/latest/running.html#starting-a-new-project| | +| 0c. | Testing |
  • [x]
| https://github.com/hyperledger/solang/blob/main/src/bin/cli/test.rs https://github.com/hyperledger/solang/blob/main/tests/cli.rs| | +| **0d.** | Docker |
  • [x]
| There will be no independent DockerFiler for this milestone, because Solang has its own DockerFile, which can be used to test the mentioned functionalities.| +| 0e. | Article |
  • [x]
| https://forum.polkadot.network/t/introducing-solang-improvements/3361 | +| 1. | Implement [Solang projects](https://github.com/hyperledger/solang/milestone/6) |
  • [x]
| https://github.com/hyperledger/solang/pull/1316 https://github.com/hyperledger/solang/pull/1347 https://github.com/hyperledger/solang/pull/1392 | | + +## Evaluation V2 + +### Configuration file + +The PR fixed the `verbose` flag issue in the `solang.toml` file. + +## Testing + +All tests are passing during the `cargo test` execution. Testing is ok. + +## Evaluation V1 + +## License + +Apache License 2.0 ok + +## Documentation + +### Installation and compiler usage + +I followed the installation and compiler usage documentation, I achieved the expected results installing through "Download from a Docker container" as well as "Build using Dockerfile" docs. In the usage section running Solang using a container also worked as expected. + +In the Solang README.md, maybe the compile command for docker should include the "/examples/polkadot" path as follows: + +```sh +docker run --rm -it --volume $(pwd)/examples/polkadot:/sources ghcr.io/hyperledger/solang compile -v -o /sources --target polkadot /sources/flipper.sol +``` + +After installing the LLVM pre-built libraries, build Solang using `cargo build --release` worked as expected. Then, running `target/release/solang compile -v --target solana examples/solana/flipper.sol` also worked. For the other possible values (`[possible values: solana, polkadot, evm]`) it was ok as well. + +I've also tried to install it by Downloading the binaries, after downloading the Linux x86-64 release and adding it to `$PATH`, when executing `solang-linux-x86-64` I get the following error: + +```sh +chmod +x solang-linux-x86-64 +solang-linux-x86-64 + +solang-linux-x86-64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.30' not found (required by solang-linux-x86-64) +solang-linux-x86-64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by solang-linux-x86-64) +solang-linux-x86-64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.13' not found (required by solang-linux-x86-64) +solang-linux-x86-64: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by solang-linux-x86-64) +solang-linux-x86-64: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by solang-linux-x86-64) +solang-linux-x86-64: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.33' not found (required by solang-linux-x86-64) +``` + +I've executed `sudo apt install libstdc++6 libc6 -y` but it didn't solve the issue. Since I could build Solang from source, it wasn't a big concern and just continued using the built CLI. That error using the `solang-linux-x86-64` binary may be just some local issue. The installation, compiler usage, and starting a new project with `solang.toml` configuration are ok. + +### Starting a new project + +Executing `target/release/solang new --target solana my_project` creates the solang project as expected, by creating a `solang.toml` configuration file correctly and `flipper.sol` contract in my_project directory. After that, running `target/release/solang compile` works and uses the `solang.toml` configuration as expected, it logs "info: reading default config from toml file" in the console. Passing `polkadot` as the target it's also creating a project and compiling it correctly. Changing `verbose = true` under `[compiler-output]` seems not to be taking any effect, it is compiling as if it was configured as false. + +## Testing + +- Running `cargo test` showed that one test case failed in the ethereum_solidity_tests test. All the remaining tests have passed ok, including the `cli.rs` tests. See the test result: + + ```sh + ... + test basic_compilation_from_toml ... ok + test create_output_dir ... ok + ... + test polkadot_specific ... ok + test polkadot_general ... ok + + test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.09s + + Running tests/evm.rs (target/debug/deps/evm-fcd79123e1e1cf77) + + running 5 tests + test eth_builtins ... ok + test selfdestruct ... ok + test try_catch ... ok + test address ... ok + test ethereum_solidity_tests ... FAILED + + failures: + + ---- ethereum_solidity_tests stdout ---- + thread '' panicked at 'called `Result::unwrap()` on an `Err` value: Error { depth: 0, inner: Io { path: Some("/home/user/w3f/solang/testdata/solidity/test/libsolidity/semanticTests"), err: Os { code: 2, kind: NotFound, message: "No such file or directory" } } }', tests/evm.rs:193:27 + note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace + thread '' panicked at 'called `Result::unwrap()` on an `Err` value: Error { depth: 0, inner: Io { path: Some("/home/user/w3f/solang/testdata/solidity/test/libsolidity/syntaxTests"), err: Os { code: 2, kind: NotFound, message: "No such file or directory" } } }', tests/evm.rs:193:27 + + + failures: + ethereum_solidity_tests + + test result: FAILED. 4 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s + + error: test failed, to rerun pass `--test evm` + ``` + +- Got an error running `cargo tarpaulin` to get tests coverage: + + ```sh + ... + Compiling secp256k1 v0.27.0 + Compiling ink_engine v4.2.1 + Compiling ink_env v4.2.1 + Compiling wasm-opt v0.112.0 + error: Broken pipe (os error 32) + warning: build failed, waiting for other jobs to finish... + error: could not compile `solang` (test "builtins") due to 2 previous errors + error: could not compile `solang` (test "undefined_variable_detection") due to 2 previous errors + error: could not compile `solang` (lib test) due to 2 previous errors + error: could not compile `solang` (test "solana") due to 2 previous errors + Jul 12 12:20:37.706 ERROR cargo_tarpaulin: Failed to compile tests! + error: linking with `cc` failed: exit status: 1 + ``` + +## Docker + +Ok, both either using ghcr.io/hyperledger/solang:latest or building Solang using Dockerfile is working as expected. + +## Article + +The article "Introducing Solang Improvements" describes the CLI usability improvements with the `solang.toml` ok, the CLI it's working with the configuration as expected. + +## Implement Solang projects + +Ok, the substrate target configuration issue solved at https://github.com/hyperledger/solang/issues/1084 + +## Code quality + +Running `cargo clippy` showed a result without any suggestions or warnings, result ok: + +```sh +... +Checking ink_storage_traits v4.2.1 +Checking ink_engine v4.2.1 +Checking ink_env v4.2.1 +Checking tower-lsp v0.19.0 +Checking wasm-opt v0.112.0 +Finished dev [unoptimized + debuginfo] target(s) in 2m 41s +``` diff --git a/evaluations/solidity-light-client-verifier_1_semuelle.md b/evaluations/solidity-light-client-verifier_1_semuelle.md new file mode 100755 index 000000000..b0a819f57 --- /dev/null +++ b/evaluations/solidity-light-client-verifier_1_semuelle.md @@ -0,0 +1,21 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/solidity-verifier-for-accountable-light-client.md +- **Milestone:** 1 +- **Kusama Identity:** [ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA](https://polkascan.io/pre/kusama/account/ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA) +- **Previously successfully merged evaluation:** All by semuelle + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | :------: | ---- |----------------- | +| **0a.** | License |
  • [x]
| [paritytech/frontier](https://github.com/paritytech/frontier/blob/fba84577bf6507d76d40af891d2db38f4e385c11/LICENSE-APACHE2) | Apache 2.0, as dictated by `paritytech/frontier` | +| **0b.** | Documentation |
  • [x]
| [rustdocs1](https://paritytech.github.io/frontier/rustdocs/pallet_evm_precompile_bls12377/index.html), [rustdocs2](https://paritytech.github.io/frontier/rustdocs/pallet_evm_precompile_bw6761/index.html) | Good inline documentation. | +| **0c.** | Testing and Testing Guide |
  • [x]
| [bls12377](https://github.com/paritytech/frontier/blob/fba84577bf6507d76d40af891d2db38f4e385c11/frame/evm/precompile/bls12377/src/tests.rs), [bw6761](https://github.com/paritytech/frontier/blob/master/frame/evm/precompile/bw6761/src/tests.rs) | — | +| 1. | BLS12-377 precompile |
  • [x]
| [frame/evm/precompile/bls12377](https://github.com/paritytech/frontier/tree/fba84577bf6507d76d40af891d2db38f4e385c11/frame/evm/precompile/bls12377) | — | +| 2. | BW6-761 precompile |
  • [x]
| [frame/evm/precompile/bw6761](https://github.com/paritytech/frontier/tree/fba84577bf6507d76d40af891d2db38f4e385c11/frame/evm/precompile/bw6761) | — | + + +## General Notes + +- Merged into [paritytech/frontier](https://github.com/paritytech/frontier/pull/1049/) on May 8, 2023. +- Docker default deliverable removed as unnecessary. diff --git a/evaluations/subrelay_2_dastansam.md b/evaluations/subrelay_2_dastansam.md new file mode 100644 index 000000000..c53c2beb3 --- /dev/null +++ b/evaluations/subrelay_2_dastansam.md @@ -0,0 +1,167 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Subrelay](https://github.com/w3f/Grants-Program/pull/1252) +- **Milestone:** 2 +- **Kusama Identity:** [Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP](https://sub.id/Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP) +- **Previously successfully merged evaluation:** [Milestone 1](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/subrelay_1_dsm-w3f.md) + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 0a. | License | https://github.com/subrelay/subrelay-api/blob/main/LICENSE https://github.com/subrelay/interface/blob/main/LICENSE | Correct licenses. | +| 0b. | Documentation | https://docs.subrelay.com/ | Extensive documentation. In some places invalid url is present https://app.subrelay.xyz (forgot to rename?) | +| 0c. | Testing and Testing Guide | https://github.com/subrelay/interface/tree/main/cypress https://github.com/subrelay/subrelay-api/tree/main/test | Couldn't run integration tests, more on this below. | +| 0d. | Docker file | https://docs.subrelay.com/self-hosted/getting-started | Working as expected. | +| 0e. | Article | https://docs.subrelay.com | Documentation page is working as expected. | +| 1. | Feature: Email integration | https://docs.subrelay.com/user-guide/email | Working as expected (screenshots attached below) | +| 2. | Feature: Telegram integration| https://docs.subrelay.com/user-guide/telegram | Working as expected (screenshots attached below) | +| 3. | Feature: Discord integration | https://docs.subrelay.com/user-guide/discord | Working as expected (screenshots attached below) | +| 4. | Feature: Workflow execution detail | https://app.subrelay.com/logs | Working as expected (screenshots attached below) | +| 5. | API | https://github.com/subrelay/subrelay-api | Runs locally, tests are provided and well documented | +| 6. | Integration | https://github.com/subrelay/interface | Looks smooth, every page works as expected. | + +## General Notes + +In general, all the features are delivered, I was able to test them on production and everything works as expected. + +The only thing that I couldn't test locally was the integration tests. Initially the errors were related to Postgres DB, I resolved them and even run the `migration` script that you run in the CI `yarn run typeorm migration:run`. But I still get several errors and all tests are failing. Maybe this is related to my local environment, regardless, I think this part of the code is missing some documentation. I see that errors are related to DB and missing tokens for Discord and Telegram bots. Would be great if you could clearly indicate pre-requisites for running the integration tests locally in the README. + +### Outputs + +
+ +Integration tests + +```bash +yarn run v1.22.19 +$ jest --config ./test/jest-e2e.json + FAIL test/user.e2e-spec.ts + User + GET /user/info + ✕ Get user info + GET user/connections/discord + ✕ Update nonexistence discord connection + ✕ Update discord connection + GET user/connections/telegram + ✕ Update nonexistence telegram connection + ✕ Update telegram connection + DELETE user/connections/discord + ✕ Delete discord connection + DELETE user/connections/telegram + ✕ Delete telegram connection + +● User › GET /user/info › Get user info + + QueryFailedError: relation "user" does not exist + + at PostgresQueryRunner.query (../src/driver/postgres/PostgresQueryRunner.ts:299:19) + at SelectQueryBuilder.loadRawResults (../src/query-builder/SelectQueryBuilder.ts:3789:25) + at SelectQueryBuilder.executeEntitiesAndRawResults (../src/query-builder/SelectQueryBuilder.ts:3541:26) + at SelectQueryBuilder.getRawAndEntities (../src/query-builder/SelectQueryBuilder.ts:1670:29) + at SelectQueryBuilder.getMany (../src/query-builder/SelectQueryBuilder.ts:1760:25) + at ../src/persistence/SubjectDatabaseEntityLoader.ts:118:32 + at async Promise.all (index 0) + at SubjectDatabaseEntityLoader.load (../src/persistence/SubjectDatabaseEntityLoader.ts:150:9) + at ../src/persistence/EntityPersistExecutor.ts:116:21 + + +● Chain › GET /chains › Get all chains + +QueryFailedError: relation "chain" does not exist + + at PostgresQueryRunner.query (../src/driver/postgres/PostgresQueryRunner.ts:299:19) + at SelectQueryBuilder.loadRawResults (../src/query-builder/SelectQueryBuilder.ts:3789:25) + at SelectQueryBuilder.getRawMany (../src/query-builder/SelectQueryBuilder.ts:1626:29) + at ChainService.onModuleInit (../src/chain/chain.service.ts:33:20) + at async Promise.all (index 0) + at callModuleInitHook (../node_modules/@nestjs/core/hooks/on-module-init.hook.js:43:5) + at Proxy.callInitHook (../node_modules/@nestjs/core/nest-application-context.js:224:13) + at Proxy.init (../node_modules/@nestjs/core/nest-application.js:98:9) + at Object. (chain.e2e-spec.ts:34:5) + + +[Nest] 67837 - 07/02/2023, 11:33:12 PM ERROR [ClientService] Failed to connect to Discord API +[Nest] 67837 - 07/02/2023, 11:33:12 PM ERROR [ClientService] Error [TokenInvalid]: An invalid token was provided. + FAIL test/task.e2e-spec.ts (5.445 s) +● Task › GET /tasks/filter/operators › Get operators for filter task + +Error [TokenInvalid]: An invalid token was provided. + + at Client.login (../node_modules/discord.js/src/client/Client.js:214:52) + at ClientService.onApplicationBootstrap (../node_modules/@discord-nestjs/core/src/services/client.service.ts:55:25) + at MapIterator.iteratee (../node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:22:43) + at MapIterator.next (../node_modules/iterare/src/map.ts:9:39) + at IteratorWithOperators.next (../node_modules/iterare/src/iterate.ts:19:28) + at Function.from () + at IteratorWithOperators.toArray (../node_modules/iterare/src/iterate.ts:227:22) + at callOperator (../node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:23:10) + at callModuleBootstrapHook (../node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:43:23) + at Proxy.callBootstrapHook (../node_modules/@nestjs/core/nest-application-context.js:244:55) + +● Task › POST /tasks/run › Telegram task › Failed with nonexistence event ID + +Error [TokenInvalid]: An invalid token was provided. + + at Client.login (../node_modules/discord.js/src/client/Client.js:214:52) + at ClientService.onApplicationBootstrap (../node_modules/@discord-nestjs/core/src/services/client.service.ts:55:25) + at MapIterator.iteratee (../node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:22:43) + at MapIterator.next (../node_modules/iterare/src/map.ts:9:39) + at IteratorWithOperators.next (../node_modules/iterare/src/iterate.ts:19:28) + at Function.from () + at IteratorWithOperators.toArray (../node_modules/iterare/src/iterate.ts:227:22) + at callOperator (../node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:23:10) + at callModuleBootstrapHook (../node_modules/@nestjs/core/hooks/on-app-bootstrap.hook.js:43:23) + at Proxy.callBootstrapHook (../node_modules/@nestjs/core/nest-application-context.js:244:55) + +● Task › DELETE /workflow/{workflow_id} › Delete a nonexistence workflow + +QueryFailedError: relation "chain" does not exist + + at PostgresQueryRunner.query (../src/driver/postgres/PostgresQueryRunner.ts:299:19) + at SelectQueryBuilder.loadRawResults (../src/query-builder/SelectQueryBuilder.ts:3789:25) + at SelectQueryBuilder.getRawMany (../src/query-builder/SelectQueryBuilder.ts:1626:29) + at ChainService.onModuleInit (../src/chain/chain.service.ts:33:20) + at async Promise.all (index 0) + at callModuleInitHook (../node_modules/@nestjs/core/hooks/on-module-init.hook.js:43:5) + at Proxy.callInitHook (../node_modules/@nestjs/core/nest-application-context.js:224:13) + at Proxy.init (../node_modules/@nestjs/core/nest-application.js:98:9) + +A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper teardown. Try running with --detectOpenHandles to find leaks. Active timers can also cause this, ensure that .unref() was called on them. +Test Suites: 4 failed, 4 total +Tests: 49 failed, 49 total +Snapshots: 0 total +Time: 6.232 s, estimated 7 s +Ran all test suites. +error Command failed with exit code 1. +``` + +
+ +### Screenshots + +Workflow dashboard: + +Workflow dashboard + +#### Email + +Email notifs + +#### Webhook + +Webhook notifs + + +#### Discord + +Discord notifs + +#### Telegram + +![image](https://github.com/dastansam/Grant-Milestone-Delivery/assets/88332432/e08c3701-f5d9-46c1-9d98-b0c06e50cb85) + +### Logs + +Logs diff --git a/evaluations/substrate-tutorials_2_semuelle.md b/evaluations/substrate-tutorials_2_semuelle.md new file mode 100755 index 000000000..9f75e832d --- /dev/null +++ b/evaluations/substrate-tutorials_2_semuelle.md @@ -0,0 +1,26 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/substrate-tutorials.md +- **Milestone:** 2 +- **Kusama Identity:** [ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA](https://polkascan.io/pre/kusama/account/ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA) +- **Previously successfully merged evaluation:** All by semuelle + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | :------: | ---- |----------------- | +| 0a. | License |
  • [x]
| [LICENSE](https://github.com/rusty-crewmates/substrate-tutorials/blob/ab1a16c78dea616c9081d246288088fb6a9583ae/LICENSE) | Apache 2.0 | +| 0b. | Documentation |
  • [x]
| [READMEs](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises) | README and inline instructions for each exercise. | +| 0c. | Testing Guide |
  • [x]
| [READMEs](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises), [solutions](https://github.com/rusty-crewmates/substrate-tutorials/tree/b8da46c6e4ddb57750c6b77759e6e52655950500/exercises) | Solutions provided in a separate branch. | +| 0d. | Docker |
  • [x]
| — | Skipped, unnecessary | +| 0e. | Article |
  • [x]
| [medium.com](https://medium.com/@timothedelabrouille/learn-substrate-hands-on-5126069d1334) | — | +| 1. | Exercise `genesis_config` |
  • [x]
| [exercises/ex08-genesis-config](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises/ex08-genesis-config) | — | +| 2. | Exercise `mocks` |
  • [x]
| [exercises/ex09-mock](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises/ex09-mock) | — | +| 3. | Exercise `weight` |
  • [x]
| [exercises/ex06-weights](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises/ex06-weights) | — | +| 4. | Exercise `hooks` |
  • [x]
| [exercises/ex05-hooks](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises/ex05-hooks) | — | +| 5. | Exercise `imbalances` |
  • [x]
| [exercises/ex07-imbalances](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises/ex07-imbalances) | — | +| 6. | Exercise `external_workers` |
  • [x]
| [exercises/ex10-offchain-worker](https://github.com/rusty-crewmates/substrate-tutorials/tree/ab1a16c78dea616c9081d246288088fb6a9583ae/exercises/ex10-offchain-worker) | — | + + +## General Notes + +- — diff --git a/evaluations/supersig_2_dastansam.md b/evaluations/supersig_2_dastansam.md new file mode 100644 index 000000000..c64f3701f --- /dev/null +++ b/evaluations/supersig_2_dastansam.md @@ -0,0 +1,53 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [Application](https://github.com/w3f/Grants-Program/blob/master/applications/supersig_fellowship.md) +- **Milestone:** 2 +- **Kusama Identity:** [Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP](https://sub.id/Fd1SvYZnE3dZ3mEaq5QG1HEWhzNrDyMPJ41C4fQqiMirtTP) +- **Previously successfully merged evaluation:** [Milestone 1](https://github.com/w3f/Grant-Milestone-Delivery/blob/master/evaluations/supersig_1_dsm-w3f.md) + +**Deliverables** + +| Number | Deliverable | Link | Notes | +| -----: | ----------- | ------------- | ---------- | +| 0a. | License | Apache 2.0 | | Correct license. | +| 0b. | Documentation | https://github.com/decentration/supersig-ui#supersig-ui, https://decentration.medium.com/supersig-ui-simply-manage-your-orgs-250769f5367 | Article link returns 404 error. README files are present and provide good coverage of the repositories. | +| 0c. | e2e workflow tester | https://github.com/decentration/supersig-ui | Tests are provided and they pass on remote chain. Screenshot attached below. | +| 0d. | Docker | https://github.com/decentration/supersig-ui#docker | Docker image is provided and it runs successfully. | +| 0e. | Article and Video | https://decentration.medium.com/supersig-ui-simply-manage-your-orgs-250769f53679, https://www.loom.com/share/6c96b98b437e439ca1bd251ec0c2b937?sid=5854ef8b-a579-45a0-9702-6cf60f5277f8 | Article and video is provided. It helps a lot to review the deliverables. | +| 1. | **Supersig UI** | https://github.com/decentration/supersig-ui | UI looks smooth and easy to navigate. I was able to run it both natively and with Docker image. Screenshots attached below. | +| 2. | Substrate Chain | https://github.com/decentration/substrate-supersig-template/tree/v0.9.37-fix-unbounded | Node compiles and runs. However, e2e workflow tests are not passing when connected to the local node. | +| 3. | Polkadot JS Apps UI Fork | https://github.com/decentration/apps/tree/main-fellowship-1 | Explorer app is forked and deployed at https://apps.decentration.org | + +## Evaluation v1 + +In general, it's well documented, easy to follow and UI looks smooth. One minor issue is the invalid link in the documentation, but the valid one is provided below, so it's not a big deal. The only thing to address is the failing e2e workflow tests when connected to the local node. It fails with the following error: +```bash +⚪️ ProposalCreated +Proposal was not successfully created)api.tx.supersig.submitCall is not a function +``` + +I suspect this might be because I didn't add chain definitions to the `apps`, but it's marked as `optional` in the README, so I thought it should work without it. + +## Screenshots + +### Supersig UI + +Connection to remote node + +### Supersig UI with local node + + Connection to local node + + +### e2e workflow tester remote chain + +Remote chain tests + +### e2e workflow tester local chain + +Local chain tests + +## Evaluation v2 + +Running `cargo update` before compiling the node fixes failing tests on a local chain. diff --git a/evaluations/tokenomics-survey-2022_2_semuelle.md b/evaluations/tokenomics-survey-2022_2_semuelle.md new file mode 100755 index 000000000..a7cc41a8e --- /dev/null +++ b/evaluations/tokenomics-survey-2022_2_semuelle.md @@ -0,0 +1,28 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/tokenomics-survey-2022.md +- **Milestone:** 2 +- **Kusama Identity:** [ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA](https://polkascan.io/pre/kusama/account/ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA) +- **Previously successfully merged evaluation:** All by semuelle + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | :------: | ---- |----------------- | +| **0a.** | Copyright and Licenses |
  • [x]
| [taqtiqa-mark/tokenomics-survey-2022](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a3444a73122d3d1bf25fe3cd5c8ababa64/LICENSE) | Creative Commons Attribution 4.0 International License (article) (no code) | +| **0b.** | Documentation/Tutorial |
  • [x]
| [README](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a3444a73122d3d1bf25fe3cd5c8ababa64/README.md) | — | +| **0c.** | Methodology |
  • [x]
| [main.tex](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a3444a73122d3d1bf25fe3cd5c8ababa64/main.tex#L675) | — | +| **0d.** | Infrastructure |
  • [x]
| [README](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a3444a73122d3d1bf25fe3cd5c8ababa64/README.md#build-pdf) | No infrastructure/setup instructions due to using Overleaf | +| **0e.1** | Article |
  • [x]
| [milestones/milestone_2.pdf](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a3444a73122d3d1bf25fe3cd5c8ababa64/milestones/milestone_2.pdf) | — | +| **0e.2** | - Section: Published models |
  • [x]
| [annotated_bibliography.bib](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a3444a73122d3d1bf25fe3cd5c8ababa64/annotated_bibliography.bib) | — | +| **0e.3** | - Section: Polkadot Parachain Economies |
  • [x]
| [main.tex](https://github.com/taqtiqa-mark/tokenomics-survey-2022/blob/2cbf15a3444a73122d3d1bf25fe3cd5c8ababa64/main.tex#L278) | Summaries in the form of one flowchart per section | + + +## General Notes + +### Jul 11 2023 + +All issues addressed in pull request comment and Overleaf project. + +### Jul 10 2023 + +Asked for minor clarifications in the text. Article is still very much in draft shape. Summary and conclusions are scheduled for M3. diff --git a/evaluations/tuxedo_3_keeganquigley.md b/evaluations/tuxedo_3_keeganquigley.md new file mode 100644 index 000000000..f1e8afe18 --- /dev/null +++ b/evaluations/tuxedo_3_keeganquigley.md @@ -0,0 +1,286 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/tuxedo.md +- **Milestone:** 1 +- **Previously successfully merged evaluation:** All by keeganquigley + +| Number | Deliverable | Accepted | Link | Notes | +| ------------- | ------------- | ------------- | ------------- | ------------- | +| 0a. | License |
  • [x]
| [LICENSE file](https://github.com/Off-Narrative-Labs/Tuxedo/blob/milestone-3/LICENSE) | Apache 2.0 | +| 0b. | Documentation |
  • [x]
| [Hosted Rustdocs](https://off-narrative-labs.github.io/Tuxedo) | Great docs and guide. | +| 0c. | Testing |
  • [x]
| [Readme Section](https://github.com/Off-Narrative-Labs/Tuxedo/blob/milestone-3#testing-and-code-quality) | All tests pass. | +| 0d. | Docker |
  • [x]
| [Readme Section](https://github.com/Off-Narrative-Labs/Tuxedo/blob/milestone-3#docker), [Published Images](https://github.com/orgs/Off-Narrative-Labs/packages) | Node and CLI both run successfully. | +| 0e. | Full Tutorial |
  • [x]
| [Starter Code](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial/), [Complete Solutions](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial/tree/dex-solutions), [Walkthrough Video](https://www.youtube.com/watch?v=bWA2ksTmNBU) | Ok. +| 1. | Template Piece |
  • [x]
| [Readme Section](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial#use-as-a-template), [Dex Template](https://github.com/Off-Narrative-Labs/Tuxedo-Order-Book-Dex-Tutorial/blob/dex-tutorial/dex/src/lib.rs) | Ok. +# General Notes + +Excellent work! Amazing docs and guides, and the tutorial is very helpful to see UTXO in action. Very cool to see it working in Substrate. + +I was able to run the node and CLI locally as well as with Docker. I was able to play with the CLI to create UXTO transactions: +```rust +docker run --network host ghcr.io/off-narrative-labs/tuxedo-wallet show-balance +WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested +[2023-05-15T22:40:04Z INFO tuxedo_template_wallet::sync] Initializing fresh sync from genesis 0xf9799acb9cd2371e4f2d986fd923999d985533909e459ea2bcda200a0577fd68 +[2023-05-15T22:40:04Z INFO tuxedo_template_wallet] Number of blocks in the db: 0 +[2023-05-15T22:40:04Z INFO tuxedo_template_wallet] Wallet database synchronized with node to height 35 +Balance Summary +0xd2bf…df67: 100 +-------------------- +total : 100 +``` +```rust +docker run --network host ghcr.io/off-narrative-labs/tuxedo-wallet show-all-outputs +WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested +[2023-05-15T23:23:47Z INFO tuxedo_template_wallet::sync] Initializing fresh sync from genesis 0xf9799acb9cd2371e4f2d986fd923999d985533909e459ea2bcda200a0577fd68 +[2023-05-15T23:23:47Z INFO tuxedo_template_wallet] Number of blocks in the db: 0 +[2023-05-15T23:23:48Z INFO tuxedo_template_wallet] Wallet database synchronized with node to height 910 +###### Unspent outputs ########### +000000000000000000000000000000000000000000000000000000000000000000000000: owner 0xd2bf4b844dfefd6772a8843e669f943408966a977e3ae2af1dd78e0f55f4df67, amount 100 +``` +```rust +docker run --network host ghcr.io/off-narrative-labs/tuxedo-wallet spend-coins -o 50 -o 40 -o 5 +WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested +[2023-05-15T23:25:16Z INFO tuxedo_template_wallet::sync] Initializing fresh sync from genesis 0xf9799acb9cd2371e4f2d986fd923999d985533909e459ea2bcda200a0577fd68 +[2023-05-15T23:25:16Z INFO tuxedo_template_wallet] Number of blocks in the db: 0 +[2023-05-15T23:25:17Z INFO tuxedo_template_wallet] Wallet database synchronized with node to height 939 +[2023-05-15T23:25:17Z INFO tuxedo_template_wallet::money] Node's response to spend transaction: Ok("0xd1de5722d3190c86990aea4e61d821c74932035f57d3a190d74b3cf91c73a169") +Created "dc867b7132dbb7951c30569f7d1f3bfd92bdf497a22720728cfe886d9777aef300000000" worth 50. owned by 0xd2bf…df67 +Created "dc867b7132dbb7951c30569f7d1f3bfd92bdf497a22720728cfe886d9777aef301000000" worth 40. owned by 0xd2bf…df67 +Created "dc867b7132dbb7951c30569f7d1f3bfd92bdf497a22720728cfe886d9777aef302000000" worth 5. owned by 0xd2bf…df67 +``` + +## Tests + +Unit tests all pass for the Crypto Kitties game, the CLI, Tuxedo Core, Money, and the runtime template: +```rust +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/amoeba-84e8bf0328439f3b) + +running 18 tests +test tests::creation_multiple_fails ... ok +test tests::creation_invalid_generation_fails ... ok +test tests::creation_valid_transaction_works ... ok +test tests::creation_with_badly_typed_output_fails ... ok +test tests::creation_with_inputs_fails ... ok +test tests::creation_with_no_output_fails ... ok +test tests::death_multiple_inputs ... ok +test tests::death_badly_typed_input ... ok +test tests::death_no_input ... ok +test tests::death_valid_transaction_works ... ok +test tests::death_with_output ... ok +test tests::mitosis_badly_typed_input ... ok +test tests::mitosis_badly_typed_output ... ok +test tests::mitosis_no_input ... ok +test tests::mitosis_too_many_outputs ... ok +test tests::mitosis_only_one_output ... ok +test tests::mitosis_valid_transaction_works ... ok +test tests::mitosis_wrong_generation ... ok + +test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/derive_no_bound-dbb3c33a916b13d8) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/kitties-7d7cd77f1b1d1170) + +running 26 tests +test tests::breed_dad_when_he_is_tired_fails ... ok +test tests::breed_two_dads_fails ... ok +test tests::breed_two_moms_fails ... ok +test tests::breed_mom_when_she_gave_birth_recently_fails ... ok +test tests::breed_wrong_input_type_fails ... ok +test tests::breed_wrong_output_type_fails ... ok +test tests::breed_happy_path_works ... ok +test tests::check_child_dad_parent_tired_fails ... ok +test tests::check_child_dna_incorrect_fails ... ok +test tests::check_child_free_breedings_incorrect_fails ... ok +test tests::check_dad_breedings_overflow_fails ... ok +test tests::check_dad_free_breedings_zero_fails ... ok +test tests::check_child_mom_parent_recently_gave_birth_fails ... ok +test tests::check_mom_breedings_overflow_fails ... ok +test tests::check_child_num_breedings_non_zero_fails ... ok +test tests::check_mom_free_breedings_zero_fails ... ok +test tests::check_new_dad_dna_doesnt_match_old_fails ... ok +test tests::check_new_dad_free_breedings_incorrect_fails ... ok +test tests::check_new_dad_num_breedings_incorrect_fails ... ok +test tests::check_new_mom_free_breedings_incorrect_fails ... ok +test tests::check_new_mom_dna_doesnt_match_old_fails ... ok +test tests::first_input_not_mom_fails ... ok +test tests::inputs_dont_contain_two_parents_fails ... ok +test tests::outputs_dont_contain_all_family_members_fails ... ok +test tests::first_output_not_mom_fails ... ok +test tests::check_new_mom_num_breedings_incorrect_fails ... ok + +test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/money-72ad746590f7c4eb) + +running 12 tests +test tests::mint_valid_transaction_works ... ok +test tests::mint_with_inputs_fails ... ok +test tests::mint_with_no_outputs_fails ... ok +test tests::mint_with_zero_value_output_fails ... ok +test tests::mint_wrong_output_type_fails ... ok +test tests::spend_no_inputs_fails ... ok +test tests::spend_no_outputs_is_a_burn ... ok +test tests::spend_valid_transaction_work ... ok +test tests::spend_wrong_input_type_fails ... ok +test tests::spend_wrong_output_type_fails ... ok +test tests::spend_with_zero_value_output_fails ... ok +test tests::spend_output_value_exceeds_input_value_fails ... ok + +test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/node_template-081cc689551156f4) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/main.rs (target/debug/deps/node_template-3acc397e363f5ad9) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/poe-049bc1541e21e0c3) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/runtime_upgrade-e74911ac3b122840) + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Running unittests src/lib.rs (target/debug/deps/tuxedo_core-3ab8267e7a21e02f) + +running 41 tests +test constraint_checker::testing::test_checker_fails ... ok +test constraint_checker::testing::test_checker_passes ... ok +test dynamic_typing::tests::display_wrong_type_error ... ok +test dynamic_typing::tests::display_decoding_failed_error ... ok +test dynamic_typing::tests::extract_wrong_type ... ok +test dynamic_typing::tests::extract_works ... ok +test dynamic_typing::tests::extract_decode_fails ... ok +test executive::tests::apply_empty_works ... ok +test executive::tests::apply_valid_extrinsic_work ... ok +test executive::tests::apply_invalid_extrinsic_rejects ... ok +test executive::tests::apply_with_missing_input_fails ... ok +test executive::tests::execute_block_invalid_transaction - should panic ... ok +test executive::tests::execute_block_extrinsic_root_mismatch - should panic ... ok +test executive::tests::execute_block_state_root_mismatch - should panic ... ok +test executive::tests::close_block_works ... ok +test executive::tests::execute_block_with_transaction_works ... ok +test executive::tests::open_block_works ... ok +test executive::tests::update_storage_adds_output ... ok +test executive::tests::execute_empty_block_works ... ok +test executive::tests::update_storage_consumes_input ... ok +test executive::tests::validate_empty_works ... ok +test executive::tests::validate_with_constraint_error_fails ... ok +test executive::tests::validate_with_duplicate_input_fails ... ok +test executive::tests::validate_with_output_works ... ok +test executive::tests::validate_with_input_works ... ok +test executive::tests::validate_with_missing_input_works ... ok +test types::tests::extrinsic_no_signed_payload ... ok +test types::tests::extrinsic_is_signed_works ... ok +test verifier::test::sig_check_with_bad_sig ... ok +test executive::tests::validate_with_pre_existing_output_fails ... ok +test verifier::test::test_verifier_fails ... ok +test verifier::test::test_verifier_passes ... ok +test executive::tests::validate_with_unsatisfied_redeemer_fails ... ok +test verifier::test::threshold_multisig_bogus_redeemer_encoding_fails ... ok +test verifier::test::sig_check_with_good_sig ... ok +test verifier::test::threshold_multisig_has_duplicate_signatories_fails ... ok +test verifier::test::threshold_multisig_replay_sig_attack_fails ... ok +test verifier::test::threshold_multisig_not_enough_sigs_fails ... ok +test verifier::test::up_for_grabs_always_verifies ... ok +test verifier::test::threshold_multisig_extra_sigs_still_passes ... ok +test verifier::test::threshold_multisig_with_enough_sigs_passes ... ok + +test result: ok. 41 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s + + Running unittests src/lib.rs (target/debug/deps/tuxedo_template_runtime-bd5b9c6273e52f6b) + +running 2 tests +test tests::utxo_money_test_genesis ... ok +test tests::utxo_money_multi_sig_genesis_test ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s + + Running unittests src/main.rs (target/debug/deps/tuxedo_template_wallet-e663e5727350b4e6) + +running 2 tests +test output_filter::tests::filter_prints ... ok +test output_filter::tests::filter_sig_check_works ... ok + +test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests aggregator + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests amoeba + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests derive-no-bound + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests kitties + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests money + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests node-template + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests poe + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests runtime-upgrade + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests tuxedo-core + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s + + Doc-tests tuxedo-template-runtime + +running 0 tests + +test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s +``` +Cargo Clippy comes back clean. diff --git a/evaluations/validated-streams_2_arahangua.md b/evaluations/validated-streams_2_arahangua.md new file mode 100755 index 000000000..fcc90c374 --- /dev/null +++ b/evaluations/validated-streams_2_arahangua.md @@ -0,0 +1,34 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/validated-streams.md +- **Milestone:** 2 +- **Kusama Identity:** [HZrUkonEQc9tReQNndBTML5NbYWBaj8KGaHUGGxwq3jP9PY](https://explorer.polkascan.io/kusama/account/HZrUkonEQc9tReQNndBTML5NbYWBaj8KGaHUGGxwq3jP9PY) +- **Previously successfully merged evaluation:** none + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | :------: | ---- |----------------- | +| **0a.** | License |
  • [x]
| [LICENSE](https://github.com/comrade-coop/validated-streams/blob/6f9478b84ea5730fceaae50c04b62e1ecee88fed/LICENSE) | MIT | +| **0b.** | Documentation |
  • [x]
| [README](https://github.com/comrade-coop/validated-streams/blob/6f9478b84ea5730fceaae50c04b62e1ecee88fed/README.md) | easy to follow description with a schematic. | +| **0c.** | Testing and Testing Guide |
  • [x]
| [Running tests](https://github.com/comrade-coop/validated-streams/blob/6f9478b84ea5730fceaae50c04b62e1ecee88fed/README.md#testing)
[proofs](https://github.com/comrade-coop/validated-streams/blob/6f9478b84ea5730fceaae50c04b62e1ecee88fed/consensus/src/proofs/tests.rs)
[events](https://github.com/comrade-coop/validated-streams/blob/b5a9437b2e59881a64c63596ded9144f72a39ad5/consensus/src/events/tests.rs)
[pallet](https://github.com/comrade-coop/validated-streams/blob/a8a55ab7f2f16401c8aefefccdcdfa4638ddb39a/pallet/src/tests.rs) |
  • with 'on-chain proofs' : `cargo tarpaulin` reports ~60% test coverage for 'consensus' crate with 19 tests and ~70% coverage for 'pallet' crate with 8 tests.
  • Without 'on-chain proofs': `cargo tarpaulin` reports ~60% test coverage for the 'consensus' crate with 19 tests and ~50% coverage for the 'pallet' with 3 tests. | +| **0d.** | Docker |
    • [x]
    | [Main](https://github.com/comrade-coop/validated-streams/blob/64db1c20f561115f807f41c5da58bca7b3325d5a/Dockerfile)
    [IRC](https://github.com/comrade-coop/validated-streams/blob/beb99456091f33f1f1b3cf6a555ff656c107e9cf/samples/irc/Dockerfile)
    [Test script](https://github.com/comrade-coop/validated-streams/blob/f0acdceb66846ab001e652a14a38a71a7ec6b05c/samples/basic/run-example.sh)
    [Benchmark](https://github.com/comrade-coop/validated-streams/blob/64db1c20f561115f807f41c5da58bca7b3325d5a/samples/tps-benchmark/Dockerfile) | Docker examples are working as intended. | +| **0e.** | Article |
    • [x]
    |[Google Docs link](https://docs.google.com/document/u/1/d/12EsVUDydsDWfngQP6-zYRiC-dFbn696Evr3VSxgcpjU/edit) | -- +| 1. | Substrate module: Witnessed events block import |
    • [x]
    |[Old](https://github.com/comrade-coop/validated-streams/blob/fa7e20c5f0bf34cd8b89f975eceb6e29955202ab/node/src/streams/services/witness_block_import.rs)

    [New](https://github.com/comrade-coop/validated-streams/blob/9d1dd933395f9cca69834ccb43b3330922d531c4/consensus/src/block_import.rs) | The new implementation matches the description in the delivery documentation. | +| 2. | Real-life testing |
    • [x]
    | [TPS benchmark](https://github.com/comrade-coop/validated-streams/tree/c083a83ad497dcb338501c66691680b1acfc29f0/samples/tps-benchmark) | With the use of Docker, the benchmark runs smoothly. However, I was unable to test the benchmark that didn't use Docker. (I didn't have access to multiple hardwares to test it.) | +| 3. | .NET client sample |
    • [x]
    | [IRC sample](https://github.com/comrade-coop/validated-streams/tree/5dc862fc2fe3cab7e8b6e2272b89ff21607a4038/samples/irc) | IRC sample worked nicely + + +
    + +## General Notes +- **26.06.23** : + + - The main delta of M2 compared to M1 seemed to be 1) implementation of a substrate module for importing witnessed events and 2) devising a practical benchmark/application sample. + - As stated by the grantee, quantitative reporting of the TPS benchmark is still pending. However, considering that the assessment of performance is context-dependent and there are no specific hard requirements for evaluation, I consider the current contribution acceptable. + +
    + +## Outstanding Issues +- **26.06.23** : + + - All outstanding issues were resolved. Please check the previous evaluation in case of need: [link](https://github.com/w3f/Grant-Milestone-Delivery/blob/0ff27610f39a30dfe7e27bdbc18a70ced73b546e/evaluations/validated-streams_2_arahangua.md) \ No newline at end of file diff --git a/evaluations/wasm-opt-rust_7_semuelle.md b/evaluations/wasm-opt-rust_7_semuelle.md new file mode 100755 index 000000000..c54607169 --- /dev/null +++ b/evaluations/wasm-opt-rust_7_semuelle.md @@ -0,0 +1,17 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/maintenance/wasm-opt-for-rust.md +- **Milestone:** 5 +- **Kusama Identity:** [ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA](https://polkascan.io/pre/kusama/account/ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA) +- **Previously successfully merged evaluation:** All by semuelle + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | :------: | ---- |----------------- | +| 1. | Binaryen 113 upgrade |
    • [x]
    | [brson/wasm-opt-rs](https://github.com/brson/wasm-opt-rs/pull/145) | — | +| 2. | Upgrade cargo-contract to wasm-opt 0.113.0 |
    • [x]
    | [paritytech/cargo-contract](https://github.com/paritytech/cargo-contract/pull/1188) | — | +| 3. | Upgrade substrate to wasm-opt 0.113.0 |
    • [x]
    | [paritytech/substrate](https://github.com/paritytech/substrate/pull/14485) | — | + +## General Notes + +- — diff --git a/evaluations/zeropool_1_mmagician-semuelle.md b/evaluations/zeropool_1_mmagician-semuelle.md new file mode 100644 index 000000000..f45cb0c18 --- /dev/null +++ b/evaluations/zeropool_1_mmagician-semuelle.md @@ -0,0 +1,33 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ZeroPool.md +- **Milestone:** 1 +- **Kusama Identity:** [ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA](https://polkascan.io/pre/kusama/account/ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA) +- **Previously successfully merged evaluation:** All by mmagician + +| Number | Deliverable | Accepted | Link | Notes | +| ------ | ----------- | ---- |----------------- | --------- | +| 0a. | License |
    • [x]
    | [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-APACHE), [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-MIT), [LICENSE](https://github.com/zeropoolnetwork/libzeropool/blob/beae8527536bd03a22e4d110de10079d096f9b55/LICENSE-APACHE), [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-MIT) | - | +| 0b. | Documentation |
    • [x]
    | [docs.rs](https://docs.rs/libzeropool/0.5.6/libzeropool/index.html), [docs.rs](https://docs.rs/fawkes-crypto/4.4.0/fawkes_crypto/index.html), [README](https://github.com/zeropoolnetwork/libzeropool/blob/0f406f4947bbd1abd3bfd0731c0128d3ac015ab1/README.md) [README](https://github.com/zeropoolnetwork/fawkes-crypto/blob/5149f041ab7fa9b037cf104c8360360da66db427/README.md), [zeropool.network](https://zeropool.network/docs/implementation/contracts-and-circuits/substrate/) | Some docs added on request. | +| 0c. | Testing Guide |
    • [x]
    | [zeropoolnetwork/zeropool-substrate](https://github.com/zeropoolnetwork/zeropool-substrate/blob/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/README.md#run-the-full-test-environment), [zeropoolnetwork/fawkes-crypto](https://github.com/zeropoolnetwork/fawkes-crypto/tree/5149f041ab7fa9b037cf104c8360360da66db427/fawkes-crypto/tests), [zeropoolnetwork/libzeropool](https://github.com/zeropoolnetwork/libzeropool/tree/0f406f4947bbd1abd3bfd0731c0128d3ac015ab1/tests)| | +| 0d. | Article/Tutorial |
    • [x]
    | [medium.com](https://medium.com/zeropool/zeropool-implementing-privacy-preserving-transactions-with-zksnarks-and-substrate-1bd060505166) | Overview of project, developments and future plans | +| 1. | zkSNARK circuit and cryptography library |
    • [x]
    | [fawkes-crypto](https://github.com/zeropoolnetwork/fawkes-crypto/tree/5149f041ab7fa9b037cf104c8360360da66db427), [libzeropool](https://github.com/zeropoolnetwork/libzeropool/tree/0f406f4947bbd1abd3bfd0731c0128d3ac015ab1) | — | + +## General notes + +### Evaluation 22.06.2023 + +Article provided, milestone accepted. + +### Evaluation 14.06.2023 + +Tests are working. Some documentation added, article still missing. + +### Evaluation 04.07.2022 + +The documentation published to docs.rs have almost no doc comments, and thus are difficult to navigate. READMEs contain some selective information only but are equally unhelpful in understanding the project structure. + +The substrate node containing the zeropool functionality also does not have good documentation. For such complex methods as ones that zeropool is introducing, it is necessary to create extensive documentation if one has any hopes of it being used within the community. For inspiration, and an idea of the level of documentation that is recommended, the team could look at Parity's frame pallets, e.g. [democracy](https://github.com/paritytech/substrate/tree/master/frame/democracy). + +The assessment of the code quality is deferred until receiving documentation meeting the minimum delivery standards. diff --git a/evaluations/zeropool_1_mmagician.md b/evaluations/zeropool_1_mmagician.md deleted file mode 100644 index 9338fe348..000000000 --- a/evaluations/zeropool_1_mmagician.md +++ /dev/null @@ -1,23 +0,0 @@ -# Evaluation - -* **Status:** In progress -* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ZeroPool.md -* **Milestone:** 1 -* **Kusama Identity:** [H9M22FTqs1kKRAUiEk1BCVNQfWdMzVV3HbHuMwkirirxk85](https://polkascan.io/pre/kusama/account/H9M22FTqs1kKRAUiEk1BCVNQfWdMzVV3HbHuMwkirirxk85) -* **Previously successfully merged evaluation:** All by mmagician - -| Number | Deliverable | Accepted | Link | Notes | -| ------ | ----------- | ---- |----------------- | --------- | -| 0a. | License |
    • [x]
    | [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-APACHE), [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-MIT), [LICENSE](https://github.com/zeropoolnetwork/libzeropool/blob/beae8527536bd03a22e4d110de10079d096f9b55/LICENSE-APACHE), [LICENSE](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/LICENSE-MIT) | - | -| 0b. | Documentation |
    • [ ]
    | [docs.rs](https://docs.rs/libzeropool/0.5.2/libzeropool/), [docs.rs](https://docs.rs/fawkes-crypto/4.3.0/fawkes_crypto/), [README](https://github.com/zeropoolnetwork/libzeropool/blob/beae8527536bd03a22e4d110de10079d096f9b55/README.md) [README](https://github.com/zeropoolnetwork/fawkes-crypto/blob/190c1541de416ca4b634a54b555cd3f23f3a20e5/README.md) | Documentation is incomplete. | -| 0c. | Testing Guide |
    • [ ]
    |[fawkes-crypto](https://github.com/zeropoolnetwork/fawkes-crypto), [libzeropool](https://github.com/zeropoolnetwork/libzeropool)| | -| 0d. | Article/Tutorial |
    • [ ]
    | | No tutorial | -| 1. | zkSNARK circuit and cryptography library |
    • [ ]
    | [fawkes-crypto](https://github.com/zeropoolnetwork/fawkes-crypto), [libzeropool](https://github.com/zeropoolnetwork/libzeropool) | Difficult to evaluate without any docs explaining what is what. | - -### General notes - -The documentation published to docs.rs have almost no doc comments, and thus are difficult to navigate. READMEs contain some selective information only but are equally unhelpful in understanding the project structure. - -The substrate node containing the zeropool functionality also does not have good documentation. For such complex methods as ones that zeropool is introducing, it is necessary to create extensive documentation if one has any hopes of it being used within the community. For inspiration, and an idea of the level of documentation that is recommended, the team could look at Parity's frame pallets, e.g. [democracy](https://github.com/paritytech/substrate/tree/master/frame/democracy). - -The assessment of the code quality is deferred until receiving documentation meeting the minimum delivery standards. diff --git a/evaluations/zeropool_2_semuelle.md b/evaluations/zeropool_2_semuelle.md new file mode 100755 index 000000000..8ba590a7c --- /dev/null +++ b/evaluations/zeropool_2_semuelle.md @@ -0,0 +1,22 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ZeroPool.md +- **Milestone:** 2 +- **Kusama Identity:** [ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA](https://polkascan.io/pre/kusama/account/ESxS4A7GHMLzve4Mbc9t27RpXtVTnV3LtcMTtcnD26jcUHA) +- **Previously successfully merged evaluation:** All by semuelle + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +| ------ | ----------- | :------: | ---- |----------------- | +| 0a. | License |
    • [x]
    | [Apache](https://github.com/zeropoolnetwork/zeropool-substrate/blob/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/LICENSE-APACHE), [MIT](https://github.com/zeropoolnetwork/zeropool-substrate/blob/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/LICENSE-MIT) | zeropool-substrate under Apache 2.0 and MIT | +| 0b. | Documentation |
    • [x]
    | [README](https://github.com/zeropoolnetwork/zeropool-substrate/blob/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/README.md), [pallets/pallet-zeropool](https://github.com/zeropoolnetwork/zeropool-substrate/blob/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/pallets/pallet-zeropool/README.md) | Pallet docs minimal | +| 0c. | Testing Guide |
    • [x]
    | [zeropoolnetwork/zeropool-substrate](https://github.com/zeropoolnetwork/zeropool-substrate/blob/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/README.md#run-the-full-test-environment) | — | +| 0d. | Article/Tutorial |
    • [x]
    | [medium.com](https://medium.com/zeropool/zeropool-implementing-privacy-preserving-transactions-with-zksnarks-and-substrate-1bd060505166) | Same as M1 +| 1. | Substrate module: private transactions |
    • [x]
    | [pallets/pallet-zeropool](https://github.com/zeropoolnetwork/zeropool-substrate/tree/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/pallets/pallet-zeropool) | — | +| 2. | Wallet library: |
    • [x]
    | [zeropoolnetwork/zeropool-client-js](https://github.com/zeropoolnetwork/zeropool-client-js/tree/6ad5c9df144af5c2280aa4ab3e25fcd8ae4bbf73), [zeropoolnetwork/zeropool-support-js](https://github.com/zeropoolnetwork/zeropool-support-js/tree/f6b8a92e9ce9ea065caeb83186a1b3afdbcb731e) | — | +| 3. | Docker |
    • [x]
    | [zeropoolnetwork/zeropool-substrate](https://github.com/zeropoolnetwork/zeropool-substrate/blob/f13adb61ae2720f8703311f1ae5a6c2d85c8b4ca/docker-compose.full.yml) | Also on DockerHub [here](https://hub.docker.com/r/voidxnull/zeropool-relayer-polkadot) and [here](https://hub.docker.com/r/voidxnull/zeropool-substrate-node) | + + +## General Notes + +Demo video [here](https://www.youtube.com/watch?v=DQ8gbNTOP-g). diff --git a/maintenance_deliveries/wasm-opt-for-rust-maintenance-6.md b/maintenance_deliveries/wasm-opt-for-rust-maintenance-6.md new file mode 100644 index 000000000..f8b026240 --- /dev/null +++ b/maintenance_deliveries/wasm-opt-for-rust-maintenance-6.md @@ -0,0 +1,27 @@ +# Maintenance Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this delivery** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/maintenance/wasm-opt-for-rust.md +* **Delivery Number:** 6 +* **Delivery Date:** 2023/06/01 + + +**Context** + +We began work on the binaryen 113 upgrade, +investigated a report of build errors with GCC 13, +and discussed adding in-memory APIs with the binaryen authors. + +**Deliverables** + +Note: a full hourly accounting of work performed is included with the invoice. + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 1. | GCC 13 bug report | https://github.com/brson/wasm-opt-rs/issues/143#issuecomment-1535377565 | | +| 2. | Discussion about in-memory module read/write in binaryen | https://github.com/WebAssembly/binaryen/issues/5736 | | + +**Additional Information** + +N/A diff --git a/maintenance_deliveries/wasm-opt-for-rust-maintenance-7.md b/maintenance_deliveries/wasm-opt-for-rust-maintenance-7.md new file mode 100644 index 000000000..d161660bb --- /dev/null +++ b/maintenance_deliveries/wasm-opt-for-rust-maintenance-7.md @@ -0,0 +1,29 @@ +# Maintenance Delivery :mailbox: + +**The [invoice form :pencil:](https://docs.google.com/forms/d/e/1FAIpQLSfmNYaoCgrxyhzgoKQ0ynQvnNRoTmgApz9NrMp-hd8mhIiO0A/viewform) has been filled out correctly for this delivery** + +* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/maintenance/wasm-opt-for-rust.md +* **Delivery Number:** 7 +* **Delivery Date:** 2023/07/05 + + +**Context** + +We upgraded wasm-opt-rs to binaryen 113, +published wasm-opt 0.113.0, +and upgraded cargo-contract and substrate-wasm-builder. + + +**Deliverables** + +Note: a full hourly accounting of work performed is included with the invoice. + +| Number | Deliverable | Link | Notes | +| ------------- | ------------- | ------------- |------------- | +| 1. | Binaryen 113 upgrade | https://github.com/brson/wasm-opt-rs/pull/145 | | +| 2. | Upgrade cargo-contract to wasm-opt 0.113.0 | https://github.com/paritytech/cargo-contract/pull/1188 | | +| 3. | Upgrade substrate to wasm-opt 0.113.0 | https://github.com/paritytech/substrate/pull/14485 | | + +**Additional Information** + +N/A diff --git a/maintenance_evaluations/wasm-opt-for-rust-maintenance_6_ali-usama.md b/maintenance_evaluations/wasm-opt-for-rust-maintenance_6_ali-usama.md new file mode 100644 index 000000000..7c6eb4b90 --- /dev/null +++ b/maintenance_evaluations/wasm-opt-for-rust-maintenance_6_ali-usama.md @@ -0,0 +1,15 @@ +# Evaluation + +- **Status:** Accepted +- **Application Document:** [wasm-opt-for-rust](https://github.com/w3f/Grants-Program/blob/master/applications/maintenance/wasm-opt-for-rust.md) +- **Milestone:** 6 +- **Kusama Identity:** Eexv1mKLiCidz2gGh6vfowtXgSSc7mvD4xEb2ji998W4DPs +- **Previously successfully merged evaluation:** [Galaxy-Eval](https://github.com/w3f/Grant-Milestone-Delivery/pull/851) + +| Number | Deliverable | Accepted | Link | Evaluation Notes | +|--------|----------------------------------------------------------|------------------------|------------------------------------------------------------------------------------------------------------|--------------------------------------------------| +| 1. | GCC 13 Bug Report |
    • [x]
    | [brson/wasm-opt-rs#143 (comment)](https://github.com/brson/wasm-opt-rs/issues/143#issuecomment-1535377565) | Bug report related to `wasm-opt` version 0.111.0 | +| 2. | Discussion about in-memory module read/write in binaryen |
    • [x]
    | [WebAssembly/binaryen#5736](https://github.com/WebAssembly/binaryen/issues/5736) | | + +## General Notes +As there was not a lot of maintenance required, the delivery includes Bug Report Fix and a detailed discussion of in-memory module read/write. The progress is as per the application and the milestone is accepted.