diff --git a/deliveries/Plutonication_milestone_4.md b/deliveries/Plutonication_milestone_4.md
new file mode 100644
index 000000000..2c794a674
--- /dev/null
+++ b/deliveries/Plutonication_milestone_4.md
@@ -0,0 +1,32 @@
+# Milestone Delivery :mailbox:
+
+**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/Plutonication.md
+* **Milestone Number:** 4
+
+**Context** Plutonication Extension
+
+Chrome extension that injects the Plutonication code into any dApp that is compatible with polkadot.js-extension.
+
+**Deliverables**
+
+| Number | Deliverable | Link | Notes |
+| ------------- | ------------- | ------------- |------------- |
+| 0a. | Licence | [Plutonication](https://github.com/RostislavLitovkin/Plutonication/blob/Grant-delivery-4/packages/extension/LICENSE) | MIT |
+| 0b. | Documentation | Documentation for building the Plutonication is in [Readme](https://github.com/RostislavLitovkin/Plutonication/blob/Grant-delivery-4/README.md). Inline documentation is also provided. | |
+| 0c. | Testing and Testing Guide | E2E testing: Download [Plutonication Extension from the Chrome web store](https://chromewebstore.google.com/detail/plutonication-extension-p/lndgpmicmhdhbmaebmghjjhaoglnaakl) and [PlutoWallet from Google Play](https://play.google.com/store/apps/details?id=com.rostislavlitovkin.plutowallet). Then, you can try to go to any dApp, for example https://polkadot.js.org/apps/ and you should see the Plutonication modal. Just scan the QR code by your phone and connect your wallet. | |
+| 0d. | Docker | Not provided | |
+| 0e. | Article | [Medium article](https://medium.com/@rostislavlitovkin/plutonication-cross-platform-connection-for-polkadot-wallets-a237c342d616) | |
+| 1. | Plutonication Extension | https://github.com/RostislavLitovkin/Plutonication/tree/Grant-delivery-4/packages/extension | |
+| 1a. | inject(..) | [inject](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/extension/src/page.ts#L10) | |
+| 1b. | onReceivePublicKey | [onReceivePublicKey](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L46) | |
+| 1c. | signPayloadAsync | [signPayload](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L78) | |
+| 1d. | payload_signature | [payload_signature](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L83) | |
+| 1e. | signRawAsync | [signRaw](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L91) | |
+| 1f. | raw_signature | [raw_signature](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L96) | |
+| 2. | Chrome browser extension | Published to [Chrome web store](https://chromewebstore.google.com/detail/plutonication-extension-p/lndgpmicmhdhbmaebmghjjhaoglnaakl) | |
+
+
+**Additional Information**
+To reduce code duplication and to increase code sustainability, we put the PlutonicationExtension project inside of the Plutonication repository.
diff --git a/deliveries/Solang_Playground-milestone_3.md b/deliveries/Solang_Playground-milestone_3.md
new file mode 100644
index 000000000..2c49458fd
--- /dev/null
+++ b/deliveries/Solang_Playground-milestone_3.md
@@ -0,0 +1,18 @@
+# Milestone Delivery :mailbox:
+
+**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_Playground.md
+- **Milestone Number:** 3
+
+**Context**
+This milestone involves adding an `interact` functionality to the web editor. A developer can now interact with the deployed contract on Polkadot via a redirection to `contracts ui`.
+
+**Deliverables**
+| Number | Deliverable | Link | Notes |
+| ------ | ----------- | ---- |----------------- |
+| _0a._ | License | https://github.com/hyperledger-labs/solang-playground/blob/main/LICENSE |
+| _0b._ | Documentation | https://github.com/hyperledger-labs/solang-playground/blob/main/docs/interact_with_contracts_on_chain.md |
+| _0c._ | Testing and Testing Guide | https://github.com/hyperledger-labs/solang-playground/blob/main/README.md#testing |
+| _0d._ | Docker | https://github.com/hyperledger-labs/solang-playground/blob/main/README.md#docker |
+| 1. | Solang Playground with `interact` functionality | -Repo: https://github.com/hyperledger-labs/solang-playground
-Demo: https://drive.google.com/file/d/1LL6LuPbAvg8r_hCWeWop2Gl_tvgy_KpI/view?usp=sharing
-amd64 docker image: https://hub.docker.com/repository/docker/salaheldin18/solang-playground-amd64 .
You can find a link to the hosted editor in the repo's readme |
diff --git a/deliveries/Threshold_Signature-milestone_1.md b/deliveries/Threshold_Signature-milestone_1.md
new file mode 100644
index 000000000..dfc7f39f8
--- /dev/null
+++ b/deliveries/Threshold_Signature-milestone_1.md
@@ -0,0 +1,23 @@
+# Milestone Delivery :mailbox:
+
+**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/pull/2250](https://github.com/w3f/Grants-Program/blob/master/applications/ThresholdSignature.md)
+* **Milestone Number:** 1
+
+**Context** (optional)
+
+**Deliverables**
+
+| Number | Deliverable | Link | Notes |
+| ------------- | ------------- | ------------- |------------- |
+| **0a.** | License | [License file](https://github.com/w3f/schnorrkel?tab=BSD-3-Clause-1-ov-file#readme) | The license is BSD-3-Clause instead of GPLv3 |
+| **0b.** | Documentation | The code is documented | The tutorial is not applicable to this milestone and will be done in milestone 2 |
+| **0c.** | Testing and Testing Guide | The code can be tested with the command `cargo test` | |
+| **0d.** | Docker | | This deliverable is not applicable to this milestone and will be done in milestone 2 |
+| **1.a** | Pull Request of a FROST implementation merged into Schnorrkel repository | [Pull Request](https://github.com/w3f/schnorrkel/pull/107) | Olaf = SimplPedPoP + FROST |
+| **1.b** | Pull Request of a SimplPedPop implementation merged into Schnorrkel repository | [Pull Request](https://github.com/w3f/schnorrkel/pull/106) | |
+
+**Additional Information**
+
+The pull requests of deliverables **1.a** and **1.b** will be merged in [this](https://github.com/w3f/schnorrkel/pull/110) as stated [here](https://github.com/w3f/Grants-Program/pull/2250#issuecomment-2258694872).
diff --git a/deliveries/TuxedoDApp_Milestone_1.md b/deliveries/TuxedoDApp_Milestone_1.md
new file mode 100644
index 000000000..7b4f4f917
--- /dev/null
+++ b/deliveries/TuxedoDApp_Milestone_1.md
@@ -0,0 +1,33 @@
+# 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:**
+* **Milestone Number:** 1
+
+**Context**
+
+Unlike traditional account-based systems, UTXO-based systems treat each transaction output as a distinct entity, introducing advantages in parallel processing and state transition simplicity. The Tuxedo project endeavours to demonstrate the flexibility and interoperability of Polkadot by implementing UTXO as one of its paradigms. MLabs, with expertise in the Cardano ecosystem utilizing UTXO as its core model, sees an opportunity to contribute to Tuxedo's success, address identified issues, and engage in future collaborative activities.
+
+Our goal is to showcase the potential of Polkadot using the UTXO paradigm for the end user, leveraging Tuxedo.
+
+**Deliverables**
+
+| Number | Deliverable | Link | Notes |
+| -----: | ----------- | ------------- | ------------- |
+| **0a.** | License | [License file](https://github.com/mlabs-haskell/TuxedoDapp?tab=Apache-2.0-1-ov-file#readme) | Apache 2.0, as recommended |
+| **0b.** | Documentation | [README](https://github.com/mlabs-haskell/TuxedoDapp/blob/master/README.md), [Demo wallet integration](https://www.loom.com/share/e1270ecea79a4689aff5732e8acfae14), [CLI-wallet - Demo part 1/3](https://youtu.be/Mom3BV_HozY), [CLI-wallet - Demo part 2/3](https://youtu.be/GfyiBW1XFW0), [CLI-wallet - Demo part 3/3](https://youtu.be/1T2oE0bfaCQ), [APIs spreadsheet](https://github.com/mlabs-haskell/TuxedoDapp/wiki/APIs-spreadsheet), [Build and run the project](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Build-and-run-the-project), [Frontend development libs](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Frontend-development-libs), [Game design](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Game-design), [Wireframes](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Wireframes), [GitHub project management tool](https://github.com/orgs/mlabs-haskell/projects/57/views/1) | Overall project description. Video to showcase the Talisman integration. Info about APIs spreadsheet, Build and run the project, DApp specification, Frontend development libs, Game Design, Wireframes. The GitHub PM tool tracked the amount of work done across different developers |
+| **0c.** | Testing and Testing Guide | [CLI-Wallet test](https://github.com/mlabs-haskell/Tuxedo/blob/webservice-redeemer-gen-debug-with-lks/wardrobe/kitties/src/tests.rs) , [Tuxedo Template Wallet](https://github.com/mlabs-haskell/Tuxedo/blob/webservice-redeemer-gen-debug-with-lks/wallet/README.md) | We included our tests done for the CLI-Wallet, they can be executed using the Tuxedo documentation in the README |
+| **0d.** | Article | [Tuxedo DApp specification](https://docs.google.com/document/d/1dHsb_k3Xo5f4yFx802sMe22z6NYq3FeZc9l4bB0exMk/edit), [Talisman integration design](https://docs.google.com/presentation/d/1vsfJ5TYPXcvF4vmY7fHfM25lcNmZdjh6YfUyyoOzVAw/edit) | DApp specification with description of the components. A brief design of the talisman integration. |
+| **0e.** | Docker | [webservice-wallet](https://github.com/mlabs-haskell/Tuxedo/blob/webservice-redeemer-gen-debug-with-lks/webservice-wallet/Dockerfile) | For the Talisman integration, docker is not needed. However, we included the docked used for the webservice |
+| **0f.** | Frontend, CLI wallet and core | [main DApp repo](https://github.com/mlabs-haskell/TuxedoDapp), [CLI Wallet and core repo](https://github.com/mlabs-haskell/Tuxedo) | In these repos we have the DApp including the integrated Talisman and the CLI-Wallet together with the core |
+
+
+##
+
+**Additional Information**
+
+Following the suggestion of Joshua Orndorff, author of Tuxedo, we focused on integrating an existing wallet instead of building a redundant solution from scratch. The effort was not trivial because Talisman doesn't support UTXO. However, to be sure how the front end of the Dapp was supposed to work, we had to build extra features on the Tuxedo CLI wallet. That effort was not foreseen during the original budget definition of the grant. Still, we preferred to invest the extra time and resources in this direction, to understand and test the Tuxedo code deeply. Other than the CLI-wallet we also worked on extra areas outside of the granted budget:
+
+1. Mint_coin:
+2. Metadata analysis and design/experiments:
diff --git a/deliveries/cyborg-milestone-1.md b/deliveries/cyborg-milestone-1.md
new file mode 100644
index 000000000..f4ff67e3a
--- /dev/null
+++ b/deliveries/cyborg-milestone-1.md
@@ -0,0 +1,27 @@
+# Milestone Delivery :mailbox:
+
+**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/Cyborg.md
+* **Milestone Number:** 1
+
+**Context**
+
+## Task Verification System
+
+A task verification system that verifies off-chain compute task results on-chain using parallel execution and hash equations. This forms the base infrastructure for our enterprise-ready product for machine learning training.
+
+**Deliverables**
+
+| Number | Deliverable | Specification |
+| -----: | ----------- | ------------- |
+| **0a.** | [License](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/LICENSE) | GPLv3 |
+| **0b.** | [Documentation](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/INSTRUCTIONS.md#cyborg-network---milestone-1-delivery) | We will provide both **inline documentation** of the code and a basic **tutorial** that explains how users can (for example) deploy docker images using our interface. |
+| **0c.** | [Testing and Testing Guide](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/INSTRUCTIONS.md#testing-guide) | Core functions will be fully covered by comprehensive unit tests to ensure functionality and robustness. In the guide, we will describe how to run these tests. |
+| **0d.** | [Docker](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6) | We will provide a Dockerfile that can be used to deploy a local substrate chain for testing. |
+| 1. | [Working Demo](https://drive.google.com/file/d/1URMopsQZBgGCsZYqiznWOxwmg9wDIdfH/view?usp=sharing) | We will provide video documentation to help developers understand the process of deploying containered tasks.|
+| 2. | [Task Examples](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/README.md#task-examples) | We will provide example containers and data sets to help programmers understand and execute batch processes. Currently we provide Examples for Docker, Bash, Terraform etc.. |
+| 3. | [Substrate Module: Task Management](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6/pallets/task-management) | This pallet will be responsible for assign the task to a secondary cluster for result verification. Once verifed the accepted result will be added to the block. |
+| 4. | [Substrate Module: Edge Connect](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6/pallets/edge-connect)| This pallet will posses the logic for schedluing tasks to a specific cluster that matches the required specifications|
+| 5. | [Worker K3S Operator](https://github.com/Cyborg-Network/Worker) | The k3s worker acts as a trusted controller. It securely stores deployment states, including manifests and defined secrets. Based on the manifests, the Worker uses remote attestation to authenticate the task exceution process.. |
+| 6. | [Worker logs](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/INSTRUCTIONS.md#worker-logs) | The execution logs of the deployed container to serve as a proof of work. |
diff --git a/deliveries/iso20022-ecosystem-research-and-technical-strategy.md b/deliveries/iso20022-ecosystem-research-and-technical-strategy.md
new file mode 100644
index 000000000..ecbadd63a
--- /dev/null
+++ b/deliveries/iso20022-ecosystem-research-and-technical-strategy.md
@@ -0,0 +1,14 @@
+# Milestone Delivery :mailbox:
+
+**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/ISO20022-Implementation-POC.md
+* **Milestone Number:** 1
+
+
+
+| Number | Deliverable | Specification |
+| -----: | ----------- | ------------- |
+| **0c.** | Methodology | Description of how the information was sourced. |
+| **0e.** | Bibliography | List of sources |
+| 1. | Article | The article can be found [here](https://hackmd.io/@pifragile/BkQKiNJqA)|
\ No newline at end of file
diff --git a/deliveries/kodadot_atomic_swap_indexer_1.md b/deliveries/kodadot_atomic_swap_indexer_1.md
new file mode 100644
index 000000000..ae8b76a8a
--- /dev/null
+++ b/deliveries/kodadot_atomic_swap_indexer_1.md
@@ -0,0 +1,79 @@
+# Milestone Delivery :mailbox:
+
+**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:** [kodadot_assethub_nft_m2.md](https://github.com/w3f/Grants-Program/tree/master/applications/kodadot_assethub_nft_m2.md)
+- **Milestone Number:** 1
+
+**Context** (optional)
+
+The milestone 1 of KodaDot's Atomic swap indexer for non-fungible tokens on AssetHub contains
+and delivers the following:
+
+- Schema for all the entities that are going to be indexed by the indexer.
+- The indexer is able to index the following entities:
+ - Collections
+ - NFTs
+ - Tokens
+ - Attributes
+ - Metadata
+ - Fungible Assets
+ - Offers
+ - Atomic Swaps
+- The indexer is able to index the following pallets:
+ - Uniques
+ - NFTs
+ - Assets
+
+**Deliverables**
+
+
+| Number | Deliverable | Link | Notes |
+| ------ | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------------ |
+| 0a. | Licensing | [LICENSE](https://github.com/kodadot/stick/blob/main/LICENSE) | MIT |
+| 0b. | Documentation | [an explicit README file to guide the project setup and execution](https://github.com/kodadot/stick/blob/feat/swap-it-up/README.md) | - |
+| 0c. | Test Guidelines | [Testing](https://github.com/kodadot/stick/tree/feat/swap-it-up/tests) | - |
+| 0d. | Docker Integration | [Docker Compose](https://github.com/kodadot/stick/blob/feat/swap-it-up/docker-compose.yml) | needs to run as docker compose |
+| 1a. | Atomic Swaps Schema Development | [GraphQL schema swap.](https://github.com/kodadot/stick/blob/feat/swap-it-up/schema.graphql#L198) | Used `Swap` instead of `SwapEntity` |
+| 1b. | Atomic Swaps CREATE Handler | [Create Handler](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/createSwap.ts) | - |
+| 1c. | Atomic Swaps CANCEL Event | [Cancel Handler](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/cancelSwap.ts) | - |
+| 1d. | Atomic Swaps CLAIM Event | [Claim Handler](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/claim.ts) | - |
+| 1e. | Atomic Swaps with Surcharge Handler | [Create Handler](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/createSwap.ts#L48) | - |
+| 2a. | Offers Schema Development | [GraphQL schema offer.](https://github.com/kodadot/stick/blob/feat/swap-it-up/schema.graphql#L173) | Used `Offer` instead of `OfferEntity` |
+| 2b. | Offers CREATE Handler | [Create Handler](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/createSwap.ts#L25) | - |
+| 2c. | Offers CANCEL Event | [Cancel Handler](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/cancelSwap.ts#L23) | - |
+| 3a. | Token Schema Development | [GraphQL schema token.](https://github.com/kodadot/stick/blob/feat/swap-it-up/schema.graphql#L40) | - |
+| 3b. | Token CRUD Handler | [Handling Token](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/shared/token/tokenAPI.ts) | - |
+| 4a. | API Implementation: collectionById | [collectionById](https://github.com/vikiival/kodaquery/blob/main/main.ts#L36) | - |
+| 4b. | API Implementation: collectionListByIssuer | [collectionListByIssuer](https://github.com/vikiival/kodaquery/blob/main/main.ts#L44) | - |
+| 4c. | API Implementation: collectionListByName | [collectionListByName](https://github.com/vikiival/kodaquery/blob/main/main.ts#L53) | - |
+| 4d. | API Implementation: collectionListByOwner | [collectionListByOwner](https://github.com/vikiival/kodaquery/blob/main/main.ts#L62) | - |
+| 4e. | API Implementation: eventList | [eventList](https://github.com/vikiival/kodaquery/blob/main/main.ts#L72) | - |
+| 4f. | API Implementation: eventListByAddress | [eventListByAddress](https://github.com/vikiival/kodaquery/blob/main/main.ts#L80) | - |
+| 4g. | API Implementation: eventListByCollectionId | [eventListByCollectionId](https://github.com/vikiival/kodaquery/blob/main/main.ts#L89) | - |
+| 4h. | API Implementation: eventListByInteraction | [eventListByInteraction](https://github.com/vikiival/kodaquery/blob/main/main.ts#L98) | - |
+| 4i. | API Implementation: eventListByItemId | [eventListByItemId](https://github.com/vikiival/kodaquery/blob/main/main.ts#L107) | - |
+| 4j. | API Implementation: itemById | [itemById](https://github.com/vikiival/kodaquery/blob/main/main.ts#L117) | - |
+| 4k. | API Implementation: itemListByCollectionId | [itemListByCollectionId](https://github.com/vikiival/kodaquery/blob/main/main.ts#L125) | - |
+| 4l. | API Implement: itemListByCollectionIdAndOwner | [itemListByCollectionIdAndOwner](https://github.com/vikiival/kodaquery/blob/main/main.ts#L134) | - |
+| 4m. | API Implement: itemListByCollectionIdList | [itemListByCollectionIdList](https://github.com/vikiival/kodaquery/blob/main/main.ts#L144) | - |
+| 4n. | API Implementation: itemListByIssuer | [itemListByIssuer](https://github.com/vikiival/kodaquery/blob/main/main.ts#L153) | - |
+| 4o. | API Implementation: itemListByName | [itemListByName](https://github.com/vikiival/kodaquery/blob/main/main.ts#L162) | - |
+| 4p. | API Implementation: itemListByMetadataId | [itemListByMetadataId](https://github.com/vikiival/kodaquery/blob/main/main.ts#L171) | - |
+| 4r. | API Implement: itemListByMetadataIdMatch | [itemListByMetadataIdMatch](https://github.com/vikiival/kodaquery/blob/main/main.ts#L190) | - |
+| 4s. | API Implementation: itemListByOwner | [itemListByOwner](https://github.com/vikiival/kodaquery/blob/main/main.ts#L189) | - |
+
+**Additional Information**
+> Any further comments on the milestone that you would like to share with us.
+The API has been written using the most common stack: Hono and Typescript. Additionally, we have added validations using Valibot. Unit tests were written to ensure the correctness of the code.
+
+The [Squid Integrity checker that we wrote](https://github.com/vikiival/squidtegrity) has checked the validity of the delivery. The delivery is valid.
+We have found deviations from the ["original" FireSquid that we wrote](https://github.com/kodadot/stick/pull/194).
+Known deviations are:
+- `BUY` has been treated by both buy and transfer handler - [this is now skipped as it emits a transfer that is not there](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/transfer.ts#L30)
+- `CLAIM SWAP` has been treated as transfer - [this is now treated as swap](https://github.com/kodadot/stick/blob/feat/swap-it-up/src/mappings/nfts/transfer.ts#L33)
+
+Additionally, we have written queries to provide samples for the API - https://github.com/kodadot/stick/discussions/295
+
+As a runner setup, we highly recommend using [casey/just](https://github.com/casey/just) to run the indexer.
diff --git a/deliveries/subcoin-milestone-2.md b/deliveries/subcoin-milestone-2.md
new file mode 100644
index 000000000..e5d38e2b5
--- /dev/null
+++ b/deliveries/subcoin-milestone-2.md
@@ -0,0 +1,22 @@
+# Milestone Delivery :mailbox:
+
+**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/Subcoin.md
+* **Milestone Number:** 2
+
+**Deliverables**
+
+| Number | Deliverable | Link | Notes |
+| --- | --- | --- | --- |
+| 0a. | License | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/LICENSE | |
+| 0b. | Documentation | Each module has its own docs. The rendered inline rustdoc is deployed at https://subcoin-project.github.io/subcoin/. | |
+| 0c. | Testing and Testing Guide | Install rust on your system and use this command to run tests: https://github.com/subcoin-project/subcoin/tree/subcoin-milestone-2?tab=readme-ov-file#run-tests | |
+| 0d. | Docker | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/Dockerfile The docker image is available at https://github.com/subcoin-project/subcoin/pkgs/container/subcoin/249545041?tag=v0.2.0 | |
+| 1. | Block Verification | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/crates/sc-consensus-nakamoto/src/verification.rs | |
+| 2. | `bitcoin-network` | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/crates/subcoin-network/src/lib.rs | `bitcoin-network` crate is now renamed to `subcoin-network` for consistency. |
+
+**Additional Information**
+
+- Check out https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/docs/src/usage.md#syncing-the-bitcoin-network for command to sync the Bitcoin network.
+- Completing the initial full sync takes days at the moment, syncing the first 200000 blocks is relatively quick, the syncing process becomes progressively slower beyond this point. The performance of initial full sync will be pursued in the future.
diff --git a/deliveries/subcoin-milestone-3.md b/deliveries/subcoin-milestone-3.md
new file mode 100644
index 000000000..c4998c48c
--- /dev/null
+++ b/deliveries/subcoin-milestone-3.md
@@ -0,0 +1,22 @@
+# Milestone Delivery :mailbox:
+
+**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/Subcoin.md
+* **Milestone Number:** 3
+
+**Deliverables**
+
+| Number | Deliverable | Link | Notes |
+| --- | --- | --- | --- |
+| 0a. | License | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/LICENSE | |
+| 0b. | Documentation | Each module has its own docs. The rendered inline rustdoc is deployed at https://subcoin-project.github.io/subcoin/. | |
+| 0c. | Testing and Testing Guide | Install rust on your system and use this command to run tests: https://github.com/subcoin-project/subcoin/tree/subcoin-milestone-3?tab=readme-ov-file#run-tests | |
+| 0d. | Docker | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/Dockerfile The docker image is available at https://github.com/subcoin-project/subcoin/pkgs/container/subcoin/263310548?tag=v0.3.0 | |
+| 1. | Article | https://liuchengxu.notion.site/Subcoin-A-Step-Toward-Decentralized-Fast-Sync-for-Bitcoin-68762427a4484d73906a91602d789be9 | |
+| 2. | Fast Sync | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/docs/src/test_fast_sync.md |
+| 2. | Bitcoin Transaction Broadcasting | RPC `subcoin_sendRawTransaction` is added, please refer to https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/docs/src/test_bitcoin_transaction_broadcasting.md for the complete guide of `subcoin_sendRawTransaction` testing. | |
+
+**Additional Information**
+
+- The article may be published on other platforms, such as Medium, after it has been proofread.
diff --git a/deliveries/subxtpy_1.md b/deliveries/subxtpy_1.md
new file mode 100644
index 000000000..5611fdff1
--- /dev/null
+++ b/deliveries/subxtpy_1.md
@@ -0,0 +1,30 @@
+# Milestone Delivery :mailbox:
+
+**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/subxt-python.md
+* **Milestone Number:** 1
+
+**Context**
+
+The current implementation of [subxtpy](https://github.com/philoniare/subxtpy) has bindings for the most common
+functionality to read from storage, events, call runtime API and sign and submit extrinsics. The functionality is
+mostly dynamic at the moment due to the way the macros are run at compile time with Rust. We do believe that static API
+will be helpful to Python developers, so we intend to leverage Python decorators to generate static extrinsic call
+methods from metadata in the next milestone delivery.
+
+**Deliverables**
+
+| Number | Deliverable | Link |
+| -----: |---------------------------|--------------------------------------------------------------------------------|
+| **0a.** | License | [Apache 2.0](https://github.com/philoniare/subxtpy/blob/main/LICENSE.md) |
+| **0b.** | Documentation | [Readme](https://github.com/philoniare/subxtpy/blob/main/README.md) |
+| **0c.** | Testing and Testing Guide | [Tests folder](https://github.com/philoniare/subxtpy/tree/main/tests) |
+| 0e. | Article | [Article](https://www.philoniare.com/blog/subxtpy) |
+| 1. | Project Setup | [README](https://github.com/philoniare/subxtpy/blob/main/README.md) |
+| 2. | PyO3 Bindings | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs) |
+| 3. | Client Functionality | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs) |
+| 4. | Storage API | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs#L143) |
+| 5. | Extrinsics API | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs#L292) |
+| 6. | Error Handling | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs)
+
diff --git a/deliveries/typechain_revived_milestone_2.md b/deliveries/typechain_revived_milestone_2.md
new file mode 100644
index 000000000..e5f1abe6a
--- /dev/null
+++ b/deliveries/typechain_revived_milestone_2.md
@@ -0,0 +1,27 @@
+# Milestone Delivery :mailbox:
+
+**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/typechain_revived.md
+- **Milestone Number:** 2
+
+**Context**
+This milestone finalizes the updates for typechain polkadot project. It focused on enhancing compiler, bug fixing, addressing issues filed by the typechain community & final touchups.
+
+Current state is available here https://github.com/C-Forge/typechain-polkadot/tree/main
+
+**Deliverables**
+https://github.com/C-Forge/typechain-polkadot/commit/221d891bf0f2ab63918a469bc8aaacf40579da79
+
+| Number | Deliverable | Link | Notes |
+| ------ | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
+| 0a. | License | MIT | - |
+| 0b. | Documentation | [Documentation](https://github.com/C-Forge/typechain-polkadot/blob/main/docs/about.md) | Additionally each packages contains its own extensive README.md. |
+| 0c. | Testing and Testing Guide | [Tests & Testing Guide](https://github.com/C-Forge/typechain-polkadot/tree/main/tests) | |
+| 0d. | Article | [Article](https://github.com/C-Forge/typechain-polkadot/blob/main/docs/whats_new.md) | Covers improvements, reasonings behind them, as well as overall DX benefits. |
+| **1** | SC Deployment code | [Changeset](https://github.com/C-Forge/typechain-polkadot/commit/221d891bf0f2ab63918a469bc8aaacf40579da79) | We will have simplified & enhanced usage of deployment classes. Code's API will be consulted with the community to ensure it fits its needs. |
+| **2** | Improve Result/Error handling | [Changeset](https://github.com/C-Forge/typechain-polkadot/commit/221d891bf0f2ab63918a469bc8aaacf40579da79) | Fixed several bugs & implemented correct error decoding |
+| **3** | Handle bugs & issues | [Fixed in](https://github.com/C-Forge/typechain-polkadot/commit/221d891bf0f2ab63918a469bc8aaacf40579da79) | Addressed all the issues and bugs we encountered while developing typechain & contributing to Abax Protocol/Governance. Additionally, we fixed all feature related issues from Brushfam's issue tracker https://github.com/Brushfam/typechain-polkadot/issues. |
+| **4** | Incorporate Docker build into Typechain | [Implemented in](https://github.com/C-Forge/typechain-polkadot/commit/f15c78f224d2dbdaa3af770a4f13af1316bd5e59) | |
+
+**Additional Information**
diff --git a/deliveries/xcm-tools-follow-up-2_1.md b/deliveries/xcm-tools-follow-up-2_1.md
new file mode 100644
index 000000000..72d142e89
--- /dev/null
+++ b/deliveries/xcm-tools-follow-up-2_1.md
@@ -0,0 +1,17 @@
+# Milestone Delivery :mailbox:
+
+**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:** [xcm-tools-follow-up-2](https://github.com/w3f/Grants-Program/blob/master/applications/xcm-tools-follow-up-2.md)
+* **Milestone Number:** 1
+
+| Number | Deliverable | Link | Notes |
+|--------|----------------------------------|-----------------------------------------------------------------------------------|------------|
+| 0a. | License | https://github.com/gmajor-encrypt/xcm-tools/blob/main/LICENSE | Apache 2.0 |
+| 0b. | Documentation | https://github.com/gmajor-encrypt/xcm-tools/blob/main/README.md | |
+| 0c. | Testing and Testing Guide | https://github.com/gmajor-encrypt/xcm-tools#test | |
+| 0d. | Docker | https://github.com/gmajor-encrypt/xcm-tools/blob/main/Dockerfile | |
+| 1. | Polkadot <=> Kusama message send | https://github.com/gmajor-encrypt/xcm-tools/blob/main/tx/tx.go#L167 | |
+| 2. | Message tracking | https://github.com/gmajor-encrypt/xcm-tools/blob/main/tracker/s2s.go | |
+| 3. | Ethereum Bridge update | https://github.com/gmajor-encrypt/xcm-tools/blob/main/tracker/ethereum.go#L53-L55 | |
+| 4. | Cli support | https://github.com/gmajor-encrypt/xcm-tools/blob/main/cmd/main.go | |
\ No newline at end of file
diff --git a/evaluations/ISO20022-Implementation-POC_1_keeganquigley.md b/evaluations/ISO20022-Implementation-POC_1_keeganquigley.md
new file mode 100644
index 000000000..526d7e06f
--- /dev/null
+++ b/evaluations/ISO20022-Implementation-POC_1_keeganquigley.md
@@ -0,0 +1,17 @@
+# Evaluation
+
+- **Status:** Accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/ISO20022-Implementation-POC.md
+- **Milestone:** 1
+- **Previously successfully merged evaluation:** All by keeganquigley
+
+| Number | Deliverable | Accepted | Specification |
+| -----: | ----------- | ------------- | -------------
+| **0c.** | Methodology | | Description of how the information was sourced. |
+| **0e.** | Bibliography | | List of sources |
+| 1. | Article | | The article can be found [here](https://hackmd.io/@pifragile/BkQKiNJqA)|
+
+# General Notes
+
+The article is well-written and outlines several viable solutions, with the [simple ISO pallet](https://hackmd.io/@pifragile/BkQKiNJqA#Simple-ISO-pallet) and [pure client](https://hackmd.io/@pifragile/BkQKiNJqA#Pure-client) standing out as perhaps the most practical options. I agree that either of these could also be valuable from a marketing perspective. Great job!
+
diff --git a/evaluations/Solang_Playground_3_ditavia-br.md b/evaluations/Solang_Playground_3_ditavia-br.md
new file mode 100644
index 000000000..2698dfbfc
--- /dev/null
+++ b/evaluations/Solang_Playground_3_ditavia-br.md
@@ -0,0 +1,252 @@
+# Evaluation
+
+- **Status:** Accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Solang_Playground.md
+- **Milestone:** 3
+- **Kusama Identity:** Address
+- **Previously successfully merged evaluation:** N/A
+
+| Number | Deliverable | Accepted | Link | Evaluation Notes |
+| ------ | ----------- | -------- | ---- |----------------- |
+| **0a.** | License | | https://github.com/hyperledger-labs/solang-playground/blob/main/LICENSE |
+| **0b.** | Documentation | | https://github.com/hyperledger-labs/solang-playground/blob/main/docs/interact_with_contracts_on_chain.md |
+| **0c.** | Testing and Testing Guide | | https://github.com/hyperledger-labs/solang-playground/blob/main/README.md#testing |
+| **0d.** | Docker | | https://github.com/hyperledger-labs/solang-playground/blob/main/README.md#docker |
+| 1. | Solang Playground with `interact` functionality | | -Repo: https://github.com/hyperledger-labs/solang-playground
-Demo: https://drive.google.com/file/d/1LL6LuPbAvg8r_hCWeWop2Gl_tvgy_KpI/view?usp=sharing
-amd64 docker image: https://hub.docker.com/repository/docker/salaheldin18/solang-playground-amd64 .
You can find a link to the hosted editor in the repo's readme | |
+## Evaluation V2
+
+The grantee answered our question [here](https://github.com/w3f/Grant-Milestone-Delivery/pull/1204#issuecomment-2263452176). The UI for interacting with the contract will be delivered in the next milestone.
+
+## Evaluation V1
+
+
+We have a question about this milestone.
+Shouldn't the deploy and interaction with the contract functions be on the UI of the IDE for this milestone? Or these functions are planned for Milestone 4?
+
+
+
+### Docker
+
+We tested the application using Docker and without it.
+
+Log showing the Docker working.
+```
+ditavia@localhost:~/Documents/w3f/solang-playground$ cargo make docker-run
+[cargo-make] INFO - cargo make 0.37.15
+[cargo-make] INFO - Calling cargo metadata to extract project info
+[cargo-make] INFO - Cargo metadata done
+[cargo-make] INFO - Build File: Makefile.toml
+[cargo-make] INFO - Task: docker-run
+[cargo-make] INFO - Profile: development
+[cargo-make] INFO - Running Task: docker-run
+9fed5b4fa0fd0b5b04dd0397bf0777df495b5d23a324a4145b9da6e30a25a2cf
+[cargo-make] INFO - Build Done in 1.50 seconds.
+
+ditavia@localhost:~/Documents/w3f/solang-playground$ docker ps
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+9fed5b4fa0fd solang-playground "on-start.sh" 9 seconds ago Up 8 seconds 22/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp playground
+```
+
+### Manual Testing
+
+We compiled the `result.contract` with the flip example.
+
+![unnamed (3)](https://github.com/user-attachments/assets/253cedeb-59eb-4e39-a818-e37556f03ed6)
+
+
+We uploaded the contract on [contract UI](https://ui.use.ink/) and interacted with it without problems.
+
+
+![unnamed (4)](https://github.com/user-attachments/assets/20918c5f-7459-4983-a04e-155d42058e54)
+
+
+We also tested with another [simple example](https://github.com/solidity-by-example/solidity-by-example.github.io/blob/gh-pages/contracts/src/first-app/Counter.sol). We didn't have any problems deploying this example and using it.
+
+![unnamed (5)](https://github.com/user-attachments/assets/ed580383-0b9e-4173-916a-023bb291e97a)
+
+We have a suggestion to improve the interface. We noticed when the contract doesn't compile the error line is highlighted but would be nice to have the error messages of the compilation in the console for debugging.
+
+![unnamed (6)](https://github.com/user-attachments/assets/cefb140f-af6e-4586-855c-9b7f0dd4db6d)
+
+### Automated Tests
+
+We ran the tests, and all passed.
+
+
+Test results
+
+```
+ditavia@localhost:~/Documents/w3f/solang-playground$ cargo make test
+[cargo-make] INFO - cargo make 0.37.15
+[cargo-make] INFO - Calling cargo metadata to extract project info
+[cargo-make] INFO - Cargo metadata done
+[cargo-make] INFO - Build File: Makefile.toml
+[cargo-make] INFO - Task: test
+[cargo-make] INFO - Profile: development
+[cargo-make] INFO - Running Task: test-backend
+ Finished test [unoptimized + debuginfo] target(s) in 0.10s
+ Running unittests src/lib.rs (target/debug/deps/demo_lsp_browser-9238cc0d5d391dfb)
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Running tests/server_tests.rs (target/debug/deps/server_tests-c1d149787a3e8446)
+
+running 1 test
+test tests::language_server_workflow ... ok
+
+test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
+
+ Doc-tests demo-lsp-browser
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+[cargo-make] INFO - Running Task: test-app
+
+> monaco-lsp-streams@0.0.0 test
+> jest
+
+ PASS tests/api.test.ts (9.668 s)
+ Ensuring the server serves the built frontend
+ ✓ Verifying a successful response upon making a request (35 ms)
+ Ensuring the server’s compile endpoint is operational
+ ✓ Verifying a successful compile request (7899 ms)
+
+Test Suites: 1 passed, 1 total
+Tests: 2 passed, 2 total
+Snapshots: 0 total
+Time: 9.724 s
+Ran all test suites.
+[cargo-make] INFO - Build Done in 11.14 seconds.
+```
+
+
+
+We also ran the command cargo tarpaulin to check the code coverage. The tests only cover a few cases. The test coverage could be better.
+
+
+
+Code Coverage Results
+
+```
+Jul 31 09:17:46.583 INFO cargo_tarpaulin::report: Coverage Results:
+|| Tested/Total Lines:
+|| crates/browser/src/lib.rs: 0/34
+|| crates/solang/solang-parser/src/diagnostics.rs: 4/34
+|| crates/solang/solang-parser/src/doccomment.rs: 39/69
+|| crates/solang/solang-parser/src/helpers/fmt.rs: 12/779
+|| crates/solang/solang-parser/src/helpers/loc.rs: 20/209
+|| crates/solang/solang-parser/src/helpers/ord.rs: 0/5
+|| crates/solang/solang-parser/src/lexer.rs: 108/524
+|| crates/solang/solang-parser/src/lib.rs: 12/29
+|| crates/solang/solang-parser/src/pt.rs: 22/154
+|| crates/solang/src/abi/anchor.rs: 9/264
+|| crates/solang/src/abi/ethereum.rs: 0/43
+|| crates/solang/src/abi/mod.rs: 0/17
+|| crates/solang/src/abi/polkadot.rs: 0/293
+|| crates/solang/src/codegen/array_boundary.rs: 0/19
+|| crates/solang/src/codegen/cfg.rs: 146/839
+|| crates/solang/src/codegen/constant_folding.rs: 230/783
+|| crates/solang/src/codegen/constructor.rs: 0/47
+|| crates/solang/src/codegen/dead_storage.rs: 151/315
+|| crates/solang/src/codegen/dispatch/mod.rs: 3/4
+|| crates/solang/src/codegen/dispatch/polkadot.rs: 0/250
+|| crates/solang/src/codegen/dispatch/solana.rs: 127/163
+|| crates/solang/src/codegen/encoding/borsh_encoding.rs: 14/69
+|| crates/solang/src/codegen/encoding/buffer_validator.rs: 21/64
+|| crates/solang/src/codegen/encoding/mod.rs: 87/881
+|| crates/solang/src/codegen/encoding/scale_encoding.rs: 0/256
+|| crates/solang/src/codegen/events/mod.rs: 0/8
+|| crates/solang/src/codegen/events/polkadot.rs: 0/88
+|| crates/solang/src/codegen/events/solana.rs: 0/15
+|| crates/solang/src/codegen/expression.rs: 14/1343
+|| crates/solang/src/codegen/external_functions.rs: 22/80
+|| crates/solang/src/codegen/mod.rs: 114/733
+|| crates/solang/src/codegen/polkadot.rs: 0/62
+|| crates/solang/src/codegen/reaching_definitions.rs: 55/104
+|| crates/solang/src/codegen/revert.rs: 3/132
+|| crates/solang/src/codegen/solana_accounts/account_collection.rs: 47/191
+|| crates/solang/src/codegen/solana_accounts/account_management.rs: 21/76
+|| crates/solang/src/codegen/solana_accounts/mod.rs: 0/21
+|| crates/solang/src/codegen/solana_deploy.rs: 69/260
+|| crates/solang/src/codegen/statements/mod.rs: 42/428
+|| crates/solang/src/codegen/statements/try_catch.rs: 0/187
+|| crates/solang/src/codegen/storage.rs: 0/168
+|| crates/solang/src/codegen/strength_reduce/expression_values.rs: 42/395
+|| crates/solang/src/codegen/strength_reduce/mod.rs: 29/239
+|| crates/solang/src/codegen/strength_reduce/reaching_values.rs: 17/72
+|| crates/solang/src/codegen/strength_reduce/value.rs: 4/68
+|| crates/solang/src/codegen/subexpression_elimination/anticipated_expressions.rs: 18/52
+|| crates/solang/src/codegen/subexpression_elimination/available_expression.rs: 2/82
+|| crates/solang/src/codegen/subexpression_elimination/available_expression_set.rs: 24/261
+|| crates/solang/src/codegen/subexpression_elimination/available_variable.rs: 0/12
+|| crates/solang/src/codegen/subexpression_elimination/common_subexpression_tracker.rs: 11/88
+|| crates/solang/src/codegen/subexpression_elimination/expression.rs: 9/137
+|| crates/solang/src/codegen/subexpression_elimination/instruction.rs: 8/255
+|| crates/solang/src/codegen/subexpression_elimination/mod.rs: 70/87
+|| crates/solang/src/codegen/subexpression_elimination/operator.rs: 0/51
+|| crates/solang/src/codegen/undefined_variable.rs: 16/43
+|| crates/solang/src/codegen/unused_variable.rs: 0/26
+|| crates/solang/src/codegen/vartable.rs: 48/87
+|| crates/solang/src/codegen/vector_to_slice.rs: 38/90
+|| crates/solang/src/codegen/yul/builtin.rs: 0/234
+|| crates/solang/src/codegen/yul/expression.rs: 0/109
+|| crates/solang/src/codegen/yul/mod.rs: 0/32
+|| crates/solang/src/codegen/yul/statements.rs: 0/185
+|| crates/solang/src/file_resolver.rs: 42/113
+|| crates/solang/src/languageserver.rs: 323/1478
+|| crates/solang/src/lib.rs: 19/44
+|| crates/solang/src/sema/address.rs: 0/17
+|| crates/solang/src/sema/ast.rs: 71/393
+|| crates/solang/src/sema/builtin.rs: 414/991
+|| crates/solang/src/sema/builtin_structs.rs: 0/143
+|| crates/solang/src/sema/contracts.rs: 175/573
+|| crates/solang/src/sema/diagnostics.rs: 19/124
+|| crates/solang/src/sema/dotgraphviz.rs: 0/1190
+|| crates/solang/src/sema/eval.rs: 20/326
+|| crates/solang/src/sema/expression/arithmetic.rs: 0/376
+|| crates/solang/src/sema/expression/assign.rs: 0/229
+|| crates/solang/src/sema/expression/constructor.rs: 0/281
+|| crates/solang/src/sema/expression/function_call.rs: 0/1112
+|| crates/solang/src/sema/expression/integers.rs: 0/115
+|| crates/solang/src/sema/expression/literals.rs: 10/404
+|| crates/solang/src/sema/expression/member_access.rs: 0/408
+|| crates/solang/src/sema/expression/mod.rs: 12/695
+|| crates/solang/src/sema/expression/resolve_expression.rs: 3/289
+|| crates/solang/src/sema/expression/retrieve_type.rs: 2/15
+|| crates/solang/src/sema/expression/strings.rs: 9/57
+|| crates/solang/src/sema/expression/subscript.rs: 0/68
+|| crates/solang/src/sema/expression/variable.rs: 0/87
+|| crates/solang/src/sema/file.rs: 16/45
+|| crates/solang/src/sema/format.rs: 0/111
+|| crates/solang/src/sema/function_annotation.rs: 14/179
+|| crates/solang/src/sema/functions.rs: 112/575
+|| crates/solang/src/sema/mod.rs: 110/281
+|| crates/solang/src/sema/mutability.rs: 30/242
+|| crates/solang/src/sema/namespace.rs: 58/715
+|| crates/solang/src/sema/solana_accounts.rs: 6/26
+|| crates/solang/src/sema/statements.rs: 91/1137
+|| crates/solang/src/sema/symtable.rs: 14/72
+|| crates/solang/src/sema/tags.rs: 21/115
+|| crates/solang/src/sema/types.rs: 101/1089
+|| crates/solang/src/sema/unused_variable.rs: 22/221
+|| crates/solang/src/sema/using.rs: 0/247
+|| crates/solang/src/sema/variables.rs: 72/405
+|| crates/solang/src/sema/yul/ast.rs: 0/37
+|| crates/solang/src/sema/yul/block.rs: 0/35
+|| crates/solang/src/sema/yul/builtin.rs: 0/21
+|| crates/solang/src/sema/yul/expression.rs: 0/345
+|| crates/solang/src/sema/yul/for_loop.rs: 0/38
+|| crates/solang/src/sema/yul/functions.rs: 0/133
+|| crates/solang/src/sema/yul/mod.rs: 0/14
+|| crates/solang/src/sema/yul/statements.rs: 0/163
+|| crates/solang/src/sema/yul/switch.rs: 0/81
+|| crates/solang/src/sema/yul/types.rs: 0/49
+|| crates/solang/src/sema/yul/unused_variable.rs: 0/18
+||
+12.30% coverage, 3514/28567 lines covered
+```
+
diff --git a/evaluations/cyborgnetwork_1_ditavia-br.md b/evaluations/cyborgnetwork_1_ditavia-br.md
new file mode 100644
index 000000000..cb02fec22
--- /dev/null
+++ b/evaluations/cyborgnetwork_1_ditavia-br.md
@@ -0,0 +1,446 @@
+# Evaluation
+
+- **Status:** Accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Cyborg.md
+- **Milestone:** 1
+- **Kusama Identity:** Address
+- **Previously successfully merged evaluation:** N/A
+
+| Number | Deliverable | Accepted | Link | Evaluation Notes |
+| ------ | ----------- | -------- | ---- |----------------- |
+| **0a.** | License | | [License](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/LICENSE) | |
+| **0b.** | Documentation | | [Documentation](https://docs.google.com/document/d/1p5JJ1K6iTV20h4qU1s38e-lRKMvXN6j2MsjITLswqEQ/edit#heading=h.mm3nklvp0xtd) | Needs minor changes. |
+| **0c.** | Testing and Testing Guide | | [Testing and Testing Guide](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/INSTRUCTIONS.md) | |
+| **0d.** | Docker | | [Docker](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6) | |
+| 1. | Working Demo | | [Working Demo](https://drive.google.com/file/d/1cBpTbd4xRPdUz4_RgGIU7axy9Cb4MjD2/view?usp=sharing) | |
+| 2. | Task Examples | | [Task Examples](https://github.com/Cyborg-Network/cyborg-parachain/blob/master/README.md#task-examples) | |
+| 3. | Substrate Module: Verification | | [Substrate Module: Verification](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6/pallets/task-management) | |
+| 4. | Substrate Module: Edge Connect | | [Substrate Module: Edge Connect](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6/pallets/edge-connect) | |
+| 5. | Worker K3S Operator | | [Worker K3S Operator](https://github.com/Cyborg-Network/Worker) | |
+| 6. | Worker logs | | | |
+
+## Evaluation V4
+
+### Testing
+
+We tested the hosted version. We needed to enable Insecure content on the browser to work.
+
+
+![unnamed(1)](https://github.com/user-attachments/assets/25a55f91-f6cf-4e27-b635-27de2f31b23d)
+
+
+![unnamed(2)](https://github.com/user-attachments/assets/cddc9067-4d58-43fb-8043-993a73e823c5)
+
+
+We registered the worker without a problem, but we weren't able to assign the task to the worker because the system was assigning it to another one. However, we viewed the worker was connected with the system because it generated some logs.
+
+![unnamed(3)](https://github.com/user-attachments/assets/4354aac9-52af-49e8-bd7d-bbf823e5ccba)
+
+
+![unnamed(4)](https://github.com/user-attachments/assets/1e261bfb-bbab-4281-9eba-bb7d41983fa5)
+
+
+We also tried to test hosting all on the same network. We didn't have a Mac to use the UTM to create virtual machines. Instead, we used Azure to host three machines.
+
+- Parachain and Frontend.
+- K3s Master node.
+- K3s Worker node.
+
+We were able to use it like on the hosted version.
+
+Hello-world example:
+
+![unnamed(5)](https://github.com/user-attachments/assets/f93fe41a-77b6-45c3-92b2-43fcacf28fdd)
+
+
+![unnamed(6)](https://github.com/user-attachments/assets/d48e1528-c997-4811-b5a7-24e318e36cc9)
+
+
+Sum example:
+
+![unnamed(7)](https://github.com/user-attachments/assets/a95802ca-7f85-42ed-b2d0-18e66fa992fd)
+
+
+![unnamed(8)](https://github.com/user-attachments/assets/33202c30-087e-4d8a-8580-058ab8555c83)
+
+
+
+### Documentation
+
+The documentation needs minor changes. We don't think it is necessary to hold the project because of that.
+
+- Some instructions on the [INSTRUCTIONS.md](https://github.com/Cyborg-Network/cyborg-parachain/blob/6ba9720eb4f4d8c187282be53abdc077512a8a95/INSTRUCTIONS.md) have the command to change the branch to `updated-parachain` the master branch is more updated now and it works fine.
+
+- On "Option C: Fully Local Setup with UTM and Local Parachain" change the instructions to start the Master Node to the pm2 commands. We checked it, and it didn't work if you use the `MasterSetup.sh`
+
+- Add the image Docker image URL to the [worker-logs example](https://github.com/Cyborg-Network/cyborg-parachain/blob/6ba9720eb4f4d8c187282be53abdc077512a8a95/INSTRUCTIONS.md#worker-logs).
+
+- On the [instructions to install the Cyborg-connect](https://github.com/Cyborg-Network/cyborg-connect/tree/f5d5c3430f828f91dcdb118cd6f3cc4c819c05d2?tab=readme-ov-file#installation) is missing the "clone" on the git clone command.
+
+## Evaluation V3
+
+### Testing
+
+We set up the master-node and the worker-node using the Azura Virtual Machine as recomended.
+
+
+
+Master-node VM
+
+![image (61)](https://github.com/user-attachments/assets/129aaa66-f9ee-40e4-85d4-8e6b7a1d3f83)
+
+
+
+
+Worker-node VM
+
+![image (62)](https://github.com/user-attachments/assets/cc8b0eae-9b74-4001-a9d9-0229af00ec50)
+
+
+
+
+This time, the node was showing corret:
+
+```
+ditavia@cyborg1:~/cyborg/Worker$ kubectl get nodes
+NAME STATUS ROLES AGE VERSION
+k3s-master-01 Ready control-plane,master 21h v1.30.3+k3s1
+worker-one Ready 31s v1.30.3+k3s1
+```
+
+We send the request
+
+```
+curl -X POST http://172.174.200.217:3000/deploy \
+-H "Content-Type: application/json" \
+-d '{"imageUrl": "hello-world"}'
+```
+
+Received the response:
+
+```
+{"message":"Deployment dynamic-deployment-0em6ht and Service created","nodePort":"31086"}
+```
+
+Master-node Log:
+
+```
+stdout: deployment.apps/dynamic-deployment-0em6ht created
+service/dynamic-deployment-0em6ht-service created
+stderr:
+```
+
+We notice the pallet edge-connect isn't available in any of the three chains on the extrinsics.
+
+So we have done this on the [hosted chain](https://polkadot.js.org/apps/?rpc=wss://fraa-flashbox-3239-rpc.a.stagenet.tanssi.network#/extrinsics). I registered the node. The image shows the node registered.
+
+
+![image (63)](https://github.com/user-attachments/assets/b10fb5b9-fa8b-49af-bc54-d3319a07d6c0)
+
+
+We tested different versions of the front on the branch main, parachain-update (it was indicated to use this branch before, but now the guide doesn't specify a branch to test), and the hosted version. We used the hosted node because the local node hasn't finished the deployment. We need to test it locally to ensure the functionality. The hosted node registered the task but didn't return anything about the task on the logs like on the second evaluation.
+
+Image showing the console log when we tried to use the local node.
+
+![image (65)](https://github.com/user-attachments/assets/30727b45-9e56-4b62-8223-357a5bd11446)
+
+Image showing one of the task registrations done using the front end.
+
+![image (66)](https://github.com/user-attachments/assets/2e927482-89c2-4e28-b7b2-b719ce947018)
+
+Image showing the front end.
+
+![image (67)](https://github.com/user-attachments/assets/bd6f2511-ce3b-4c4b-b4c9-8cf14dbe10d9)
+
+
+Image showing the console log on the front end (parachain-update). There seems to be some connection problem with the worker. No additional logs were generated on the Master-node or the frontend terminal. Using the branch main I received a similar log.
+
+![image (68)](https://github.com/user-attachments/assets/dec56b10-94eb-4277-bd8c-ac901b544f30)
+
+
+We also noticed some instructions on the guide saying to use one function of the pallet, but the print uses another.
+
+## Evaluation V2
+
+### Documentation
+
+The testing guide improved, adding more details on how to set up the system and use the pallets. We tested the pallets, but we had some problems with the K3s.
+
+### Pallets
+
+We tested the pallets `workerCluster` and `taskManagement`.
+
+Image showing the cluster registration and the creation of the task schedule.
+
+![unnamed](https://github.com/user-attachments/assets/94f30282-98a8-4c46-bd5f-9342ba8d875f)
+
+Task submitted as completed:
+
+![unnamed(1)](https://github.com/user-attachments/assets/95ece585-91c1-4eca-9d2e-b2b83c19a311)
+
+The chain state showing the task completed:
+
+![unnamed(2)](https://github.com/user-attachments/assets/2a1745da-05c2-42f9-a831-4b554865290a)
+
+### K3s
+
+We had some trouble to set up the K3s system. We ran the script `MasterSetup.sh` to run the cluster on port 3000, and we ran the script `WorkerSetup.sh` in another machine, but when we tried to verify the master node and the worker node running, we didn't get the expected results.
+
+```
+ditavia@localhost:~/Documents/w3f/cyborg/Worker$ kubectl get nodes
+E0809 08:39:30.875318 26883 memcache.go:265] couldn't get current server API group list: Get "https://127.0.0.1:6443/api?timeout=32s": dial tcp 127.0.0.1:6443: connect: connection refused
+E0809 08:39:30.875666 26883 memcache.go:265] couldn't get current server API group list: Get "https://127.0.0.1:6443/api?timeout=32s": dial tcp 127.0.0.1:6443: connect: connection refused
+E0809 08:39:30.877826 26883 memcache.go:265] couldn't get current server API group list: Get "https://127.0.0.1:6443/api?timeout=32s": dial tcp 127.0.0.1:6443: connect: connection refused
+E0809 08:39:30.878412 26883 memcache.go:265] couldn't get current server API group list: Get "https://127.0.0.1:6443/api?timeout=32s": dial tcp 127.0.0.1:6443: connect: connection refused
+E0809 08:39:30.880141 26883 memcache.go:265] couldn't get current server API group list: Get "https://127.0.0.1:6443/api?timeout=32s": dial tcp 127.0.0.1:6443: connect: connection refused
+The connection to the server 127.0.0.1:6443 was refused - did you specify the right host or port?
+```
+
+We also tried to specify the host and port to verify, pointing to the process running on port 3000:
+
+```
+ditavia@localhost:~/Documents/w3f/cyborg/Worker$ kubectl get nodes -s 192.168.0.35:3000
+E0809 08:42:13.336275 28738 memcache.go:265] couldn't get current server API group list: the server could not find the requested resource
+E0809 08:42:13.339509 28738 memcache.go:265] couldn't get current server API group list: the server could not find the requested resource
+E0809 08:42:13.342129 28738 memcache.go:265] couldn't get current server API group list: the server could not find the requested resource
+E0809 08:42:13.345192 28738 memcache.go:265] couldn't get current server API group list: the server could not find the requested resource
+E0809 08:42:13.348266 28738 memcache.go:265] couldn't get current server API group list: the server could not find the requested resource
+Error from server (NotFound): the server could not find the requested resource
+```
+
+### Frontend
+
+The front end on the branch `parachain-updates` has some problems:
+
+![unnamed(3)](https://github.com/user-attachments/assets/aa20fe24-0b6e-491d-93de-0c27cd88a768)
+
+
+We returned to the `main` branch to check this problem. It only occurs when using the `parachain-updates` branch. We didn't get this problem again when we changed back to the branch `parachain-updates`. We could replicate this problem by cloning the repository again.
+
+We tried to test using the hosted chain. We registered the public IP:
+
+![unnamed(4)](https://github.com/user-attachments/assets/48140fff-2947-4983-afc2-3fa77404e7ff)
+
+
+Uploaded the `hello-world` example, but the dashboard showed an error for that task:
+
+![unnamed(5)](https://github.com/user-attachments/assets/c0656f99-5676-4f9b-96fd-be734bc7d7ae)
+
+We checked the events on the chain to confirm if the chain got the task:
+
+![unnamed(6)](https://github.com/user-attachments/assets/a9f7b090-a53c-4ed9-9f8e-edcacf1103b0)
+
+We checked on the Chain state of this task:
+
+![unnamed(7)](https://github.com/user-attachments/assets/46211f5d-7d7d-454f-b266-5ba2d6ceedd9)
+
+
+## Evaluation V1
+
+### Documentation
+
+We noticed that the "Link" column on the deliverables table is missing. Please add this column with the appropriate links.
+
+The [parachain repository](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6) is missing the instructions to use the docker to setup the chains. Ideally, the docker should set up all the systems, not only the chains.
+
+The [parachain repository](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6) should have the instructions to run the tests.
+
+### Test
+
+We couldn't set up all the systems to test locally. We were able to run the chains using the Zumbinet and the front end without problems, but we couldn't successfully run the Worker.
+
+Image showing the networks launched.
+
+![Captura de tela de 2024-07-30 10-41-18](https://github.com/user-attachments/assets/4ff39206-b1e2-4e1d-9fc0-69593fd4be32)
+
+Image showing the front end.
+
+![Captura de tela de 2024-07-30 10-41-50](https://github.com/user-attachments/assets/80e63da4-8a81-4558-88e1-72831681b0ee)
+
+
+We were able to save the `k3s-node-token.txt` and use the command `node KubeServiceNodePort.js` using the script provided:
+
+```
+ditavia@localhost:~/Documents/w3f/Worker$ sh MasterSetup.sh
+The k3s node token has been saved to ./k3s-node-token.txt. Use this token to connect worker nodes to the cluster.
+Updated Server listening on port 3000
+```
+
+We couldn't use the command below successfully. Could you explain better how to use it or give some examples?
+
+```
+sh WorkerSetup.sh
+```
+
+We tried to use the front end but it was stuck on this part of the process:
+
+![Captura de tela de 2024-07-30 10-42-03](https://github.com/user-attachments/assets/ddde7fb3-c22e-4dbe-a78d-d24e6e7a9be5)
+
+We tried to test the hosted version to check it but we don't know what is the chain connected to get some balance.
+
+![unnamed (2)](https://github.com/user-attachments/assets/abb5f427-7754-4276-a245-b9f2b4517524)
+
+
+One question, can we use the polkadot.js extension as the wallet to confirm the transaction? Because this only appeared when using the talismã wallet.
+
+We executed the tests on the [parachain repository](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6) to check the pallet functionality. One test was ignored, and all the other tests passed.
+
+
+Test Results
+
+```
+ Running unittests src/lib.rs (target/debug/deps/cyborg_runtime-aaf857bb1aae1125)
+running 6 tests
+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 weights::block_weights::constants::test_weights::sane ... ok
+test test_genesis_config_builds ... ok
+test __construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
+ Running unittests src/lib.rs (target/debug/deps/orml_oracle-da8d838859985862)
+running 13 tests
+test mock::test_genesis_config_builds ... ok
+test tests::should_return_none_for_non_exist_key ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::should_not_feed_values_from_root_directly ... ok
+test tests::should_feed_values_from_root ... ok
+test tests::change_member_should_work ... ok
+test tests::should_feed_values_from_member ... ok
+test tests::multiple_calls_should_fail ... ok
+test tests::should_read_raw_values ... ok
+test tests::should_combined_data ... ok
+test tests::should_clear_data_for_removed_members ... ok
+test tests::get_all_values_should_work ... ok
+test tests::values_are_updated_on_feed ... 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/orml_traits-d9adbe25f1987f82)
+running 15 tests
+test data_provider::tests::median_value_data_provider_works ... ok
+test get_by_key::tests::get_by_key_should_work ... ok
+test location::tests::no_reserve_chain_for_absolute_self_for_relative ... ok
+test location::tests::child_parachain_as_reserve_chain ... ok
+test location::tests::non_chain_part_works ... ok
+test location::tests::parent_as_reserve_chain ... ok
+test location::tests::sibling_parachain_as_reserve_chain ... ok
+test parameters::tests::test_define_aggregrated_parameters_aggregrated_key_value ... ok
+test parameters::tests::test_define_aggregrated_parameters_key_convert ... ok
+test parameters::tests::test_define_parameters_aggregrated_key_value ... ok
+test parameters::tests::test_define_parameters_value_convert ... ok
+test parameters::tests::test_define_parameters_key_convert ... ok
+test price::test::get_price_should_work ... ok
+test price::test::price_is_zero_should_not_panic ... ok
+test price::test::price_is_none_should_not_panic ... ok
+test result: ok. 15 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+ Running unittests src/lib.rs (target/debug/deps/orml_utilities-c0ee81cba68f2125)
+running 11 tests
+test ordered_set::tests::clear ... ok
+test ordered_set::tests::contains ... ok
+test ordered_set::tests::exceeding_max_size_should_fail ... ok
+test ordered_set::tests::from ... ok
+test ordered_set::tests::insert ... ok
+test ordered_set::tests::remove ... ok
+test tests::test_genesis_config_builds ... ok
+test tests::storage_transaction_basic_commit ... ok
+test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::simulate_execution_works ... ok
+test tests::storage_transaction_basic_rollback ... ok
+test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+ Running unittests src/lib.rs (target/debug/deps/pallet_edge_connect-9a8663a843d5d5c2)
+running 8 tests
+test tests::it_works_for_registering_domain ... ok
+test mock::test_genesis_config_builds ... ok
+test tests::it_fails_for_removing_non_existent_worker ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::it_works_for_registering_ip ... ok
+test tests::it_works_for_removing_worker ... ok
+test tests::it_fails_for_registering_without_ip_or_domain ... ok
+test tests::it_fails_for_registering_duplicate_worker ... ok
+test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+ Running unittests src/lib.rs (target/debug/deps/pallet_task_management-747199f1906b9b62)
+running 9 tests
+test mock::test_genesis_config_builds ... ok
+test tests::it_fails_when_no_workers_are_available ... ok
+test tests::it_works_for_task_scheduler ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::it_works_for_submit_completed_task ... ok
+test tests::it_assigns_resolver_when_dispute_in_verification_and_resolves_task ... ok
+test tests::it_works_when_verifying_task ... ok
+test tests::it_fails_when_submit_completed_task_with_invalid_owner ... ok
+test tests::it_reassigns_task_when_resolver_fails_to_resolve ... ok
+test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
+ Doc-tests cyborg-runtime
+running 0 tests
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+ Doc-tests orml-oracle
+running 0 tests
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+ Doc-tests orml-traits
+running 3 tests
+test orml/traits/src/get_by_key.rs - get_by_key::parameter_type_with_key (line 12) ... ignored
+test orml/traits/src/parameters.rs - parameters::define_parameters (line 117) ... ok
+test orml/traits/src/parameters.rs - parameters::define_aggregrated_parameters (line 288) ... ok
+test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.22s
+```
+
+
+
+We also ran the command `cargo tarpaulin` to check the test coverage for the pallets. It could be better for the pallet edge-connect, but the improvement isn't mandatory.
+
+```
+|| pallets/edge-connect/src/lib.rs: 26/41
+|| pallets/edge-connect/src/weights.rs: 0/10
+|| pallets/task-management/src/lib.rs: 98/110
+|| pallets/task-management/src/weights.rs: 0/22
+```
+
+### Code Quality
+
+We ran the command `npm run eslint:check` for the repository [cyborg-connect](https://github.com/Cyborg-Network/cyborg-connect/tree/b5f123c4b9d4af210f6343bddb8311dac2b6787a), it returned some warnings. For example:
+
+```
+/home/ditavia/Documents/w3f/cyborg-connect/src/cyborg/layouts/Header.js
+ 10:17 warning img elements must have an alt prop, either with meaningful text, or an empty string for decorative images jsx-a11y/alt-text
+ 14:13 warning The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid
+ 15:17 warning img elements must have an alt prop, either with meaningful text, or an empty string for decorative images jsx-a11y/alt-text
+/home/ditavia/Documents/w3f/cyborg-connect/src/cyborg/layouts/SideBar.js
+ 28:25 warning img elements must have an alt prop, either with meaningful text, or an empty string for decorative images jsx-a11y/alt-text
+ 50:25 warning The href attribute is required for an anchor to be keyboard accessible. Provide a valid, navigable address as the href value. If you cannot provide an href, but still need the element to resemble a link, use a button and change it with appropriate styles. Learn more: https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/HEAD/docs/rules/anchor-is-valid.md jsx-a11y/anchor-is-valid
+ 51:29 warning img elements must have an alt prop, either with meaningful text, or an empty string for decorative images jsx-a11y/alt-text
+✖ 20 problems (0 errors, 20 warnings)
+```
+
+We also ran the command `cargo clippy` for the [parachain repository](https://github.com/Cyborg-Network/cyborg-parachain/tree/9685a55711b2e1ec63fdbc6603965e7b3784f8d6), it returned some warnings. For example:
+
+```
+warning: length comparison to zero
+ --> pallets/task-management/src/lib.rs:277:15
+ |
+277 | ensure!(workers.len() > 0, Error::::NoNewWorkersAvailable);
+ | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!workers.is_empty()`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
+warning: dereferencing a tuple pattern where every element takes a reference
+ --> pallets/task-management/src/lib.rs:343:16
+ |
+343 | .filter(|&(_, ref worker)| worker.status == WorkerStatusType::Inactive // change Inactive to Active with oracle
+ | ^^^^^^^^^^^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference
+help: try removing the `&` and `ref` parts
+ |
+343 - .filter(|&(_, ref worker)| worker.status == WorkerStatusType::Inactive // change Inactive to Active with oracle
+343 + .filter(|(_, worker)| worker.status == WorkerStatusType::Inactive // change Inactive to Active with oracle
+ |
+warning: length comparison to zero
+ --> pallets/task-management/src/lib.rs:349:15
+ |
+349 | ensure!(workers.len() > 0, Error::::NoNewWorkersAvailable);
+ | ^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!workers.is_empty()`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero
+warning: `pallet-task-management` (lib) generated 8 warnings (run `cargo clippy --fix --lib -p pallet-task-management` to apply 8 suggestions)
+```
+
+The fix of these warnings isn't mandatory but would be nice to have.
+Footer
diff --git a/evaluations/dotnix_2_piewol.md b/evaluations/dotnix_2_piewol.md
index 28cc5cfb5..e0a265406 100755
--- a/evaluations/dotnix_2_piewol.md
+++ b/evaluations/dotnix_2_piewol.md
@@ -31,23 +31,6 @@ The validator runs fine in Docker. Also visible in the westend telemetry. Sorry
IP: 1.0K in, 780B out
CPU: 45ms
```
-turns out that there seems to be an issue with setting the node key. Even after running
-```
-$ polkadot key generate-node-key | polkadot-validator --set-node-key
-```
-The shortened error output after running
-```
-$ journalctl -n 1000 -f -u polkadot-validator.service
-```
-
-```[root@bc3024fea3c8:~]# polkadot key generate-node-key | polkadot-validator --set-node-key
-12D3KooWPihimSqbZkEV89YmWnnv8sKEWk68Z1nqRyZsE4jfksmi
-
-[root@bc3024fea3c8:~]# systemctl status polkadot-validator.service
-● polkadot-validator.service - Polkadot Validator
- Loaded: loaded (/etc/systemd/system/polkadot-validator.service; linked; pr>
- Active: active (running) since Thu 2024-08-08 08:02:21 UTC; 15min ago
-```
## Audit Trail
diff --git a/evaluations/kodadot_assethub_indexer_m2_keeganquigley.md b/evaluations/kodadot_assethub_indexer_m2_keeganquigley.md
index ccbb8c64a..6faa4d34b 100644
--- a/evaluations/kodadot_assethub_indexer_m2_keeganquigley.md
+++ b/evaluations/kodadot_assethub_indexer_m2_keeganquigley.md
@@ -1,7 +1,7 @@
# Evaluation
-- **Status:** In progress
+- **Status:** Accepted
- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/kodadot_assethub_nft_m2.md
- **Milestone:** 2
@@ -352,8 +352,12 @@ Grantee kept a detailed log here https://github.com/kodadot/stick/pull/294
Hosted version works as well https://squid.subsquid.io/speck/graphql
+Token Schema works w/ GraphQL. CRUD handler works.
+
## Testing
+Docker runs successfully. Tests could use more coverage. Team mentioned that Subsquid needs to write more internal unit tests for `database` usage but are currently blocked waiting for [Gateway 2.0](https://docs.subsquid.io/subsquid-network/participate/gateway/). Deliverables don't specify writing unit tests for downstream deps so I will go ahead and pass it, but consider adding more tests.
+
6 unit tests passing:
```ts
diff --git a/evaluations/plutonication_4_ditavia-br.md b/evaluations/plutonication_4_ditavia-br.md
new file mode 100644
index 000000000..5f8e8f2c9
--- /dev/null
+++ b/evaluations/plutonication_4_ditavia-br.md
@@ -0,0 +1,178 @@
+# Evaluation
+
+- **Status:** Accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Plutonication.md
+- **Milestone:** 4
+- **Kusama Identity:** Address
+- **Previously successfully merged evaluation:** N/A
+
+| Number | Deliverable | Accepted | Link | Evaluation Notes |
+| ------ | ----------- | -------- | ---- |----------------- |
+| 0a. | Licence | | [Plutonication](https://github.com/RostislavLitovkin/Plutonication/blob/Grant-delivery-4/packages/extension/LICENSE) | |
+| 0b. | Documentation | | Documentation for building the Plutonication is in [Readme](https://github.com/RostislavLitovkin/Plutonication/blob/Grant-delivery-4/README.md). Inline documentation is also provided. | |
+| 0c. | Testing and Testing Guide | | E2E testing: Download [Plutonication Extension from the Chrome web store](https://chromewebstore.google.com/detail/plutonication-extension-p/lndgpmicmhdhbmaebmghjjhaoglnaakl) and [PlutoWallet from Google Play](https://play.google.com/store/apps/details?id=com.rostislavlitovkin.plutowallet). Then, you can try to go to any dApp, for example https://polkadot.js.org/apps/ and you should see the Plutonication modal. Just scan the QR code by your phone and connect your wallet. | |
+| 0d. | Docker | | Not provided | |
+| 0e. | Article | | [Medium article](https://medium.com/@rostislavlitovkin/plutonication-cross-platform-connection-for-polkadot-wallets-a237c342d616) | |
+| 1. | Plutonication Extension | | https://github.com/RostislavLitovkin/Plutonication/tree/Grant-delivery-4/packages/extension | |
+| 1a. | inject(..) | | [inject](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/extension/src/page.ts#L10) | |
+| 1b. | onReceivePublicKey | | [onReceivePublicKey](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L46) | |
+| 1c. | signPayloadAsync | | [signPayload](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L78) | |
+| 1d. | payload_signature | | [payload_signature](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L83) | |
+| 1e. | signRawAsync | | [signRaw](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L91) | |
+| 1f. | raw_signature | | [raw_signature](https://github.com/RostislavLitovkin/Plutonication/blob/4ee240477af659d83e724139f403544fdb2afb47/packages/plutonication/src/PlutonicationDAppClient.ts#L96) | |
+| 2. | Chrome browser extension | | Published to [Chrome web store](https://chromewebstore.google.com/detail/plutonication-extension-p/lndgpmicmhdhbmaebmghjjhaoglnaakl) | |
+
+## Evaluation V2
+
+### Docker
+
+The Docker for the dApp example is now working without problems.
+
+```
+docker ps
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+90c47d04f239 plutonication-react-dapp-example "docker-entrypoint.s…" 12 minutes ago Up 12 minutes 0.0.0.0:3000->3000/tcp, :::3000->3000/tcp musing_einstein
+```
+
+### Automated Tests
+
+We ran the tests, and this time all passed.
+
+```
+npx playwright test
+
+added 5 packages, and audited 6 packages in 4s
+
+found 0 vulnerabilities
+
+Running 5 tests using 1 worker
+[chromium] › Penetration.spec.ts:9:5 › dApp does not behave correctly
+2024-08-05 11:27:17 API/INIT: RPC methods not decorated: alephNode_emergencyFinalize, alephNode_getBlockAuthor, alephNode_ready, health, payment_queryFeeInfo, system_syncStat
+2024-08-05 11:27:17 API/INIT: aleph-node/73: Not decorating unknown runtime apis: 0x2be3f75b696ad1f6/1
+Connected to api
+Receive payload
+Payload to Sign 0x00000000430000001100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+[chromium] › plutonication.spec.ts:9:5 › Communication between dApp and Wallet
+2024-08-05 11:27:30 API/INIT: RPC methods not decorated: alephNode_emergencyFinalize, alephNode_getBlockAuthor, alephNode_ready, health, payment_queryFeeInfo, system_syncStat
+2024-08-05 11:27:30 API/INIT: aleph-node/73: Not decorating unknown runtime apis: 0x2be3f75b696ad1f6/1
+Connected to api
+Receive payload
+Payload to Sign 0xac050700004769bbe59968882c1597ec1151621f0193547285125f1c1337371c013ff61f0f0080c6a47e8d03481c0400430000001100000005d5279c52c484cc80396535a316add7d47b1c5b9e0398dd1f584149341460c5d12ff783a76a5e07156d2a3ff61745b3a1f892bf6247c1b3bf0fd7ba2085eda6
+Received raw: [object Object]
+ Slow test file: [chromium] › plutonication.spec.ts (40.7s)
+ Consider splitting slow test files to speed up parallel execution
+ 5 passed (55.6s)
+
+To open last HTML report run:
+
+ npx playwright show-report
+```
+
+### E2E Tests
+
+We tested deliverable `1a`, connecting the wallet on the `polkadot.js` dApp using the Plutonication Extension.
+
+Image showing the extension generating the QR code to connect the wallet.
+
+![unnamed (7)](https://github.com/user-attachments/assets/c1d2fa87-800d-42f0-9645-fd0e914eef86)
+
+
+After scanning, the app shows it is connected.
+
+![unnamed (8)](https://github.com/user-attachments/assets/6fa4afeb-fc76-486c-83fd-5bdd3a24278c)
+
+
+Image showing the account from the wallet connected to the `polkadot.js`.
+
+![unnamed (9)](https://github.com/user-attachments/assets/e69f43cb-8519-4e39-a7c0-c1c35035b840)
+
+We tested the deliverables `1b` to `1f` using the dApp example.
+
+After connecting the wallet, the dApp successfully got the account information.
+
+![unnamed (10)](https://github.com/user-attachments/assets/c0dbda0d-4b1a-4eae-92eb-2050a4f0c58b)
+
+We could use the `sign message`.
+
+Confirmation on the smartphone:
+
+![unnamed (11)](https://github.com/user-attachments/assets/f8752b98-335c-4df1-beee-72d54d43c25b)
+
+The console log shows the signature:
+
+![unnamed (12)](https://github.com/user-attachments/assets/38f5020e-4176-4885-9bbb-3893efc0d107)
+
+We could use the sign `balance_transfer`.
+
+Confirmation on the smartphone:
+
+![unnamed (13)](https://github.com/user-attachments/assets/68b03c65-9646-4151-9218-84857559da3e)
+
+`Polkadot.js` shows the transfer was successful:
+
+![unnamed (14)](https://github.com/user-attachments/assets/74bad34e-a216-4d2e-9042-a785f8fde2f9)
+
+
+## Evaluation V1
+
+### Documentation
+
+I was able to install and build the application. I was able to run the example without docker. However, the React App example is not running with docker:
+
+```
+docker run -p 3000:3000 plutonication-react-dapp-example
+> example_dapp@0.1.0 start
+> react-scripts start
+/react-app/node_modules/schema-utils/node_modules/ajv-keywords/dist/index.js:25
+ throw new Error("Unknown keyword " + keyword);
+ ^
+Error: Unknown keyword formatMinimum
+ at get (/react-app/node_modules/schema-utils/node_modules/ajv-keywords/dist/index.js:25:15)
+ at ajvKeywords (/react-app/node_modules/schema-utils/node_modules/ajv-keywords/dist/index.js:10:13)
+ at Object. (/react-app/node_modules/schema-utils/dist/validate.js:58:1)
+ at Module._compile (node:internal/modules/cjs/loader:1467:14)
+ at Module._extensions..js (node:internal/modules/cjs/loader:1551:10)
+ at Module.load (node:internal/modules/cjs/loader:1282:32)
+ at Module._load (node:internal/modules/cjs/loader:1098:12)
+ at TracingChannel.traceSync (node:diagnostics_channel:315:14)
+ at wrapModuleLoad (node:internal/modules/cjs/loader:215:24)
+ at Module.require (node:internal/modules/cjs/loader:1304:12)
+Node.js v22.4.1
+```
+
+Some automated tests are failing:
+
+```
+npm run test
+> plutonication@1.0.0 test
+> cd packages/tests && npx playwright test
+Running 5 tests using 1 worker
+[chromium] › Penetration.spec.ts:9:5 › dApp does not behave correctly
+2024-07-15 13:40:56 API/INIT: RPC methods not decorated: alephNode_emergencyFinalize, alephNode_getBlockAuthor, alephNode_ready, health, payment_queryFeeInfo, system_syncStat
+2024-07-15 13:40:56 API/INIT: aleph-node/73: Not decorating unknown runtime apis: 0x2be3f75b696ad1f6/1
+Connected to api
+ 1) [chromium] › Penetration.spec.ts:9:5 › dApp does not behave correctly ─────────────────────────
+ Test timeout of 30000ms exceeded.
+[chromium] › plutonication.spec.ts:9:5 › Communication between dApp and Wallet
+2024-07-15 13:41:27 API/INIT: RPC methods not decorated: alephNode_emergencyFinalize, alephNode_getBlockAuthor, alephNode_ready, health, payment_queryFeeInfo, system_syncStat
+2024-07-15 13:41:27 API/INIT: aleph-node/73: Not decorating unknown runtime apis: 0x2be3f75b696ad1f6/1
+Connected to api
+ 2) [chromium] › plutonication.spec.ts:9:5 › Communication between dApp and Wallet ────────────────
+ Test timeout of 30000ms exceeded.
+ 3) [chromium] › plutonication.spec.ts:128:5 › Disconnect dApp ────────────────────────────────────
+ Test timeout of 30000ms exceeded.
+ Slow test file: [chromium] › Penetration.spec.ts (30.0s)
+ Consider splitting slow test files to speed up parallel execution
+ 3 failed
+ [chromium] › Penetration.spec.ts:9:5 › dApp does not behave correctly ──────────────────────────
+ [chromium] › plutonication.spec.ts:9:5 › Communication between dApp and Wallet ─────────────────
+ [chromium] › plutonication.spec.ts:128:5 › Disconnect dApp ─────────────────────────────────────
+ 2 passed (1.8m)
+```
+
+### E2E Tests
+
+I was able to install the mobile app and Google Chrome extension. The connection between the plugin and mobile app sometimes does work and sometimes doesn't. The observed behavior is the mobile app says that the wallet is connected however, sometimes the QR code from the plugin does not close and the app does not recognize the wallet as connected.
+
+
+Furthermore, I was not able to successfully sign a transaction when the wallet was connected. The mobile app asks for confirmation and says that it was signed but Polkadot.js does not complete the transaction.
diff --git a/evaluations/shivarthu_2_keeganquigley.md b/evaluations/shivarthu_2_keeganquigley.md
new file mode 100644
index 000000000..081166e0d
--- /dev/null
+++ b/evaluations/shivarthu_2_keeganquigley.md
@@ -0,0 +1,1634 @@
+# General Notes
+
+Benchmarking tests are failing:
+
+
+ Output
+
+```rust
+error[E0599]: no variant or associated item named `new_call_variant_do_something` found for enum `pallet::Call` in the current scope
+ --> custom-pallets/sortition-sum-game/src/benchmarking.rs:10:1
+ |
+10 | #[benchmarks]
+ | ^^^^^^^^^^^^^ variant or associated item not found in `Call`
+ |
+ ::: custom-pallets/sortition-sum-game/src/lib.rs:32:1
+ |
+32 | pub mod pallet {
+ | --- variant or associated item `new_call_variant_do_something` not found for this enum
+ |
+ = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0433]: failed to resolve: use of undeclared type `Something`
+ --> custom-pallets/sortition-sum-game/src/benchmarking.rs:21:14
+ |
+21 | assert_eq!(Something::::get(), Some(value));
+ | ^^^^^^^^^ use of undeclared type `Something`
+
+error[E0433]: failed to resolve: use of undeclared type `Something`
+ --> custom-pallets/sortition-sum-game/src/benchmarking.rs:26:3
+ |
+26 | Something::::put(100u32);
+ | ^^^^^^^^^ use of undeclared type `Something`
+
+error[E0599]: no variant or associated item named `new_call_variant_cause_error` found for enum `pallet::Call` in the current scope
+ --> custom-pallets/sortition-sum-game/src/benchmarking.rs:10:1
+ |
+10 | #[benchmarks]
+ | ^^^^^^^^^^^^^ variant or associated item not found in `Call`
+ |
+ ::: custom-pallets/sortition-sum-game/src/lib.rs:32:1
+ |
+32 | pub mod pallet {
+ | --- variant or associated item `new_call_variant_cause_error` not found for this enum
+ |
+ = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0433]: failed to resolve: use of undeclared type `Something`
+ --> custom-pallets/sortition-sum-game/src/benchmarking.rs:31:14
+ |
+31 | assert_eq!(Something::::get(), Some(101u32));
+ | ^^^^^^^^^ use of undeclared type `Something`
+
+Some errors have detailed explanations: E0433, E0599.
+For more information about an error, try `rustc --explain E0433`.
+error: could not compile `pallet-sortition-sum-game` (lib) due to 7 previous errors
+warning: build failed, waiting for other jobs to finish...
+error: failed to run custom build command for `node-template-runtime v0.0.0 (/home/ubuntu/shivarthu/runtime)`
+
+Caused by:
+ process didn't exit successfully: `/home/ubuntu/shivarthu/target/debug/build/node-template-runtime-d16dcaae1a46c1b2/build-script-build` (exit status: 1)
+ --- stdout
+ Information that should be included in a bug report.
+ Executing build command: env -u CARGO_ENCODED_RUSTFLAGS -u RUSTC CARGO_TARGET_DIR="/home/ubuntu/shivarthu/target/debug/wbuild/node-template-runtime/target" RUSTC_BOOTSTRAP="1" RUSTFLAGS="-C target-cpu=mvp -C target-feature=-sign-ext -C link-arg=--export-table -Clink-arg=--export=__heap_base -C link-arg=--import-memory --cfg substrate_runtime " SKIP_WASM_BUILD="" "/home/ubuntu/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/cargo" "rustc" "--target=wasm32-unknown-unknown" "--manifest-path=/home/ubuntu/shivarthu/target/debug/wbuild/node-template-runtime/Cargo.toml" "--color=always" "--profile" "release" "-Z" "build-std"
+ Using rustc version: rustc 1.81.0 (eeb90cda1 2024-09-04)
+
+
+ --- stderr
+ Locking 1 package to latest compatible version
+ Adding node-template-runtime-blob v1.0.0 (/home/ubuntu/shivarthu/target/debug/wbuild/node-template-runtime)
+ Compiling sp-runtime v31.0.1 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling node-template-runtime v0.0.0 (/home/ubuntu/shivarthu/runtime)
+ Compiling sp-version v29.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-staking v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-timestamp v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-consensus-slots v0.32.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-genesis-builder v0.7.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-session v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-consensus-grandpa v13.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-consensus-aura v0.32.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling frame-support v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-offchain v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling frame-system-rpc-runtime-api v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-block-builder v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sp-transaction-pool v26.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling frame-system v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling trait-sortition-sum-game v0.1.0 (/home/ubuntu/shivarthu/traits/trait-sortition-sum-game)
+ Compiling trait-schelling-game-shared v0.1.0 (/home/ubuntu/shivarthu/traits/trait-schelling-game-shared)
+ Compiling trait-shared-storage v0.1.0 (/home/ubuntu/shivarthu/traits/trait-shared-storage)
+ Compiling trait-departments v0.1.0 (/home/ubuntu/shivarthu/traits/trait-departments)
+ Compiling project-tips-runtime-api v0.1.0 (/home/ubuntu/shivarthu/custom-pallets/project-tips/project-tips-runtime-api)
+ Compiling department-funding-runtime-api v0.1.0 (/home/ubuntu/shivarthu/custom-pallets/department-funding/department-funding-runtime-api)
+ warning: unused import: `sp_std::prelude::*`
+ --> /home/ubuntu/shivarthu/custom-pallets/project-tips/project-tips-runtime-api/src/lib.rs:6:5
+ |
+ 6 | use sp_std::prelude::*;
+ | ^^^^^^^^^^^^^^^^^^
+ |
+ = note: `#[warn(unused_imports)]` on by default
+
+ warning: unused import: `sp_std::prelude::*`
+ --> /home/ubuntu/shivarthu/custom-pallets/department-funding/department-funding-runtime-api/src/lib.rs:6:5
+ |
+ 6 | use sp_std::prelude::*;
+ | ^^^^^^^^^^^^^^^^^^
+ |
+ = note: `#[warn(unused_imports)]` on by default
+
+ warning: `project-tips-runtime-api` (lib) generated 1 warning (run `cargo fix --lib -p project-tips-runtime-api` to apply 1 suggestion)
+ Compiling profile-validation-runtime-api v0.1.0 (/home/ubuntu/shivarthu/custom-pallets/profile-validation/profile-validation-runtime-api)
+ warning: `department-funding-runtime-api` (lib) generated 1 warning (run `cargo fix --lib -p department-funding-runtime-api` to apply 1 suggestion)
+ Compiling positive-externality-runtime-api v0.1.0 (/home/ubuntu/shivarthu/custom-pallets/positive-externality/positive-externality-runtime-api)
+ warning: unused import: `sp_std::prelude::*`
+ --> /home/ubuntu/shivarthu/custom-pallets/positive-externality/positive-externality-runtime-api/src/lib.rs:6:5
+ |
+ 6 | use sp_std::prelude::*;
+ | ^^^^^^^^^^^^^^^^^^
+ |
+ = note: `#[warn(unused_imports)]` on by default
+
+ warning: `positive-externality-runtime-api` (lib) generated 1 warning (run `cargo fix --lib -p positive-externality-runtime-api` to apply 1 suggestion)
+ Compiling frame-benchmarking v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling pallet-authorship v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling pallet-transaction-payment v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling frame-executive v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling pallet-insecure-randomness-collective-flip v16.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling pallet-transaction-payment-rpc-runtime-api v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling pallet-timestamp v27.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling pallet-balances v28.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling pallet-sortition-sum-game v4.0.0-dev (/home/ubuntu/shivarthu/custom-pallets/sortition-sum-game)
+ error[E0599]: no variant or associated item named `new_call_variant_do_something` found for enum `pallet::Call` in the current scope
+ --> /home/ubuntu/shivarthu/custom-pallets/sortition-sum-game/src/benchmarking.rs:10:1
+ |
+ 10 | #[benchmarks]
+ | ^^^^^^^^^^^^^ variant or associated item not found in `Call`
+ |
+ ::: /home/ubuntu/shivarthu/custom-pallets/sortition-sum-game/src/lib.rs:32:1
+ |
+ 32 | / pub mod pallet {
+ 33 | | use super::*;
+ 34 | |
+ 35 | | #[pallet::pallet]
+ ... |
+ 70 | | }
+ 71 | | }
+ | |_- variant or associated item `new_call_variant_do_something` not found for this enum
+ |
+ = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+ error[E0433]: failed to resolve: use of undeclared type `Something`
+ --> /home/ubuntu/shivarthu/custom-pallets/sortition-sum-game/src/benchmarking.rs:21:14
+ |
+ 21 | assert_eq!(Something::::get(), Some(value));
+ | ^^^^^^^^^ use of undeclared type `Something`
+
+ error[E0433]: failed to resolve: use of undeclared type `Something`
+ --> /home/ubuntu/shivarthu/custom-pallets/sortition-sum-game/src/benchmarking.rs:26:3
+ |
+ 26 | Something::::put(100u32);
+ | ^^^^^^^^^ use of undeclared type `Something`
+
+ error[E0599]: no variant or associated item named `new_call_variant_cause_error` found for enum `pallet::Call` in the current scope
+ --> /home/ubuntu/shivarthu/custom-pallets/sortition-sum-game/src/benchmarking.rs:10:1
+ |
+ 10 | #[benchmarks]
+ | ^^^^^^^^^^^^^ variant or associated item not found in `Call`
+ |
+ ::: /home/ubuntu/shivarthu/custom-pallets/sortition-sum-game/src/lib.rs:32:1
+ |
+ 32 | / pub mod pallet {
+ 33 | | use super::*;
+ 34 | |
+ 35 | | #[pallet::pallet]
+ ... |
+ 70 | | }
+ 71 | | }
+ | |_- variant or associated item `new_call_variant_cause_error` not found for this enum
+ |
+ = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+ error[E0433]: failed to resolve: use of undeclared type `Something`
+ --> /home/ubuntu/shivarthu/custom-pallets/sortition-sum-game/src/benchmarking.rs:31:14
+ |
+ 31 | assert_eq!(Something::::get(), Some(101u32));
+ | ^^^^^^^^^ use of undeclared type `Something`
+
+ Some errors have detailed explanations: E0433, E0599.
+ For more information about an error, try `rustc --explain E0433`.
+ error: could not compile `pallet-sortition-sum-game` (lib) due to 5 previous errors
+ warning: build failed, waiting for other jobs to finish...
+```
+
+
+There are a ton of warnings when running cargo clippy:
+
+
+ Output
+
+```rust
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/department-funding/src/lib.rs:659:59
+ |
+659 | if winning_decision == WinningDecision::WinnerYes && released == false {
+ | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!released`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/department-funding/src/lib.rs:662:8
+ |
+662 | ... &department_required_fund_id,
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `department_required_fund_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/department-funding/src/lib.rs:675:10
+ |
+675 | ... &department_id,
+ | ^^^^^^^^^^^^^^ help: change this to: `department_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/department-funding/src/lib.rs:685:10
+ |
+685 | ... &department_id,
+ | ^^^^^^^^^^^^^^ help: change this to: `department_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/department-funding/src/lib.rs:692:65
+ |
+692 | } else if winning_decision == WinningDecision::WinnerNo && released == false {
+ | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!released`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/department-funding/src/lib.rs:696:8
+ |
+696 | ... &department_required_fund_id,
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `department_required_fund_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/department-funding/src/lib.rs:711:61
+ |
+711 | } else if winning_decision == WinningDecision::Draw && released == false {
+ | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!released`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/department-funding/src/lib.rs:715:8
+ |
+715 | ... &department_required_fund_id,
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `department_required_fund_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: `pallet-department-funding` (lib) generated 35 warnings (run `cargo clippy --fix --lib -p pallet-department-funding` to apply 35 suggestions)
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/project-tips/src/extras.rs:124:3
+ |
+121 | / let result = T::SchellingGameSharedSource::get_evidence_period_end_block_helper_link(
+122 | | key, phase_data, now,
+123 | | );
+ | |__________- unnecessary `let` binding
+124 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+ = note: `#[warn(clippy::let_and_return)]` on by default
+help: return the expression directly
+ |
+121 ~
+122 ~ T::SchellingGameSharedSource::get_evidence_period_end_block_helper_link(
+123 ~ key, phase_data, now,
+124 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/extras.rs:117:66
+ |
+117 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+ = note: `#[warn(clippy::clone_on_copy)]` on by default
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/project-tips/src/extras.rs:139:3
+ |
+136 | / let result = T::SchellingGameSharedSource::get_staking_period_end_block_helper_link(
+137 | | key, phase_data, now,
+138 | | );
+ | |__________- unnecessary `let` binding
+139 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+136 ~
+137 ~ T::SchellingGameSharedSource::get_staking_period_end_block_helper_link(
+138 ~ key, phase_data, now,
+139 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/extras.rs:132:66
+ |
+132 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/project-tips/src/extras.rs:150:3
+ |
+148 | / let result =
+149 | | T::SchellingGameSharedSource::get_drawing_period_end_helper_link(key, phase_data);
+ | |______________________________________________________________________________________________- unnecessary `let` binding
+150 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+148 ~
+149 ~ T::SchellingGameSharedSource::get_drawing_period_end_helper_link(key, phase_data)
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/extras.rs:145:66
+ |
+145 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/project-tips/src/extras.rs:165:3
+ |
+162 | / let result = T::SchellingGameSharedSource::get_commit_period_end_block_helper_link(
+163 | | key, phase_data, now,
+164 | | );
+ | |__________- unnecessary `let` binding
+165 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+162 ~
+163 ~ T::SchellingGameSharedSource::get_commit_period_end_block_helper_link(
+164 ~ key, phase_data, now,
+165 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/extras.rs:158:66
+ |
+158 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/project-tips/src/extras.rs:180:3
+ |
+177 | / let result = T::SchellingGameSharedSource::get_vote_period_end_block_helper_link(
+178 | | key, phase_data, now,
+179 | | );
+ | |__________- unnecessary `let` binding
+180 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+177 ~
+178 ~ T::SchellingGameSharedSource::get_vote_period_end_block_helper_link(
+179 ~ key, phase_data, now,
+180 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/extras.rs:173:66
+ |
+173 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/project-tips/src/extras.rs:189:3
+ |
+188 | let result = T::SchellingGameSharedSource::selected_as_juror_helper_link(key, who);
+ | ----------------------------------------------------------------------------------- unnecessary `let` binding
+189 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+188 ~
+189 ~ T::SchellingGameSharedSource::selected_as_juror_helper_link(key, who)
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/extras.rs:186:66
+ |
+186 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:243:67
+ |
+243 | let key = SumTreeName::ProjectTips { project_id, block_number: now.clone() };
+ | ^^^^^^^^^^^ help: try removing the `clone` call: `now`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:245:45
+ |
+245 | >::insert(project_id, now.clone());
+ | ^^^^^^^^^^^ help: try removing the `clone` call: `now`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:247:77
+ |
+247 | T::SchellingGameSharedSource::set_to_staking_period_pe_link(key.clone(), now.clone())?;
+ | ^^^^^^^^^^^ help: try removing the `clone` call: `now`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:266:67
+ |
+266 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:288:67
+ |
+288 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:307:67
+ |
+307 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:323:67
+ |
+323 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:338:67
+ |
+338 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:355:67
+ |
+355 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:369:67
+ |
+369 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/project-tips/src/lib.rs:384:59
+ |
+384 | if winning_decision == WinningDecision::WinnerYes && released == false {
+ | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!released`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+ = note: `#[warn(clippy::bool_comparison)]` on by default
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/project-tips/src/lib.rs:387:29
+ |
+387 | >::mutate(&project_id, |project_option| {
+ | ^^^^^^^^^^^ help: change this to: `project_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+ = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/project-tips/src/lib.rs:398:65
+ |
+398 | } else if winning_decision == WinningDecision::WinnerNo && released == false {
+ | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!released`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/project-tips/src/lib.rs:401:29
+ |
+401 | >::mutate(&project_id, |project_option| {
+ | ^^^^^^^^^^^ help: change this to: `project_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/project-tips/src/lib.rs:412:61
+ |
+412 | } else if winning_decision == WinningDecision::Draw && released == false {
+ | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!released`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/project-tips/src/lib.rs:415:29
+ |
+415 | >::mutate(&project_id, |project_option| {
+ | ^^^^^^^^^^^ help: change this to: `project_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/project-tips/src/lib.rs:442:67
+ |
+442 | let key = SumTreeName::ProjectTips { project_id, block_number: block_number.clone() };
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: manual saturating arithmetic
+ --> custom-pallets/project-tips/src/lib.rs:524:35
+ |
+524 | ... (Some(win), Some(lost)) => win.checked_sub(lost).unwrap_or(0),
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `win.saturating_sub(lost)`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic
+ = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default
+
+warning: unused variable: `who`
+ --> custom-pallets/positive-externality/src/lib.rs:445:8
+ |
+445 | let who = ensure_signed(origin)?;
+ | ^^^ help: if this is intentional, prefix it with an underscore: `_who`
+ |
+ = note: `#[warn(unused_variables)]` on by default
+
+warning: associated function `get_drawn_jurors` is never used
+ --> custom-pallets/positive-externality/src/extras.rs:59:16
+ |
+29 | impl Pallet {
+ | ------------------------- associated function in this implementation
+...
+59 | pub(super) fn get_drawn_jurors(user_to_calculate: T::AccountId) -> Vec<(T::AccountId, u64)> {
+ | ^^^^^^^^^^^^^^^^
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: associated function `deposit_event` is never used
+ --> custom-pallets/positive-externality/src/lib.rs:162:43
+ |
+162 | #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ | ^^^^^^^^^^^^^ associated function in this implementation
+
+warning: equality checks against true are unnecessary
+ --> custom-pallets/positive-externality/src/extras.rs:36:11
+ |
+36 | ensure!(bool_data == true, Error::::ValidationPositiveExternalityIsOff);
+ | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `bool_data`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+ = note: `#[warn(clippy::bool_comparison)]` on by default
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/extras.rs:64:18
+ |
+64 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+ = note: `#[warn(clippy::clone_on_copy)]` on by default
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/positive-externality/src/extras.rs:87:3
+ |
+84 | / let result = T::SchellingGameSharedSource::get_evidence_period_end_block_helper_link(
+85 | | key, phase_data, now,
+86 | | );
+ | |__________- unnecessary `let` binding
+87 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+ = note: `#[warn(clippy::let_and_return)]` on by default
+help: return the expression directly
+ |
+84 ~
+85 ~ T::SchellingGameSharedSource::get_evidence_period_end_block_helper_link(
+86 ~ key, phase_data, now,
+87 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/extras.rs:79:18
+ |
+79 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/positive-externality/src/extras.rs:105:3
+ |
+102 | / let result = T::SchellingGameSharedSource::get_staking_period_end_block_helper_link(
+103 | | key, phase_data, now,
+104 | | );
+ | |__________- unnecessary `let` binding
+105 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+102 ~
+103 ~ T::SchellingGameSharedSource::get_staking_period_end_block_helper_link(
+104 ~ key, phase_data, now,
+105 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/extras.rs:97:18
+ |
+97 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/positive-externality/src/extras.rs:119:3
+ |
+117 | / let result =
+118 | | T::SchellingGameSharedSource::get_drawing_period_end_helper_link(key, phase_data);
+ | |______________________________________________________________________________________________- unnecessary `let` binding
+119 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+117 ~
+118 ~ T::SchellingGameSharedSource::get_drawing_period_end_helper_link(key, phase_data)
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/extras.rs:113:18
+ |
+113 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/positive-externality/src/extras.rs:137:3
+ |
+134 | / let result = T::SchellingGameSharedSource::get_commit_period_end_block_helper_link(
+135 | | key, phase_data, now,
+136 | | );
+ | |__________- unnecessary `let` binding
+137 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+134 ~
+135 ~ T::SchellingGameSharedSource::get_commit_period_end_block_helper_link(
+136 ~ key, phase_data, now,
+137 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/extras.rs:129:18
+ |
+129 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/positive-externality/src/extras.rs:155:3
+ |
+152 | / let result = T::SchellingGameSharedSource::get_vote_period_end_block_helper_link(
+153 | | key, phase_data, now,
+154 | | );
+ | |__________- unnecessary `let` binding
+155 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+152 ~
+153 ~ T::SchellingGameSharedSource::get_vote_period_end_block_helper_link(
+154 ~ key, phase_data, now,
+155 ~ )
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/extras.rs:147:18
+ |
+147 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/positive-externality/src/extras.rs:167:3
+ |
+166 | let result = T::SchellingGameSharedSource::selected_as_juror_helper_link(key, who);
+ | ----------------------------------------------------------------------------------- unnecessary `let` binding
+167 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+166 ~
+167 ~ T::SchellingGameSharedSource::selected_as_juror_helper_link(key, who)
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/extras.rs:163:18
+ |
+163 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:271:19
+ |
+271 | block_number: storage_main_block.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `storage_main_block`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:307:19
+ |
+307 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:329:19
+ |
+329 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:352:19
+ |
+352 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:372:19
+ |
+372 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:391:19
+ |
+391 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: manual `RangeInclusive::contains` implementation
+ --> custom-pallets/positive-externality/src/lib.rs:408:12
+ |
+408 | ensure!(choice <= 5 && choice >= 1, Error::::ChoiceOutOfRange);
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(1..=5).contains(&choice)`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains
+ = note: `#[warn(clippy::manual_range_contains)]` on by default
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:414:19
+ |
+414 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:432:19
+ |
+432 | block_number: pe_block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `pe_block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:450:19
+ |
+450 | block_number: block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/positive-externality/src/lib.rs:464:7
+ |
+464 | if got_incentives_bool == false {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!got_incentives_bool`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/positive-externality/src/lib.rs:493:19
+ |
+493 | block_number: block_number.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `block_number`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: manual saturating arithmetic
+ --> custom-pallets/positive-externality/src/lib.rs:580:35
+ |
+580 | ... (Some(win), Some(lost)) => win.checked_sub(lost).unwrap_or(0),
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `saturating_sub`: `win.saturating_sub(lost)`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_saturating_arithmetic
+ = note: `#[warn(clippy::manual_saturating_arithmetic)]` on by default
+
+warning: `pallet-project-tips` (lib) generated 30 warnings (run `cargo clippy --fix --lib -p pallet-project-tips` to apply 30 suggestions)
+warning: `pallet-positive-externality` (lib) generated 30 warnings (run `cargo clippy --fix --lib -p pallet-positive-externality` to apply 27 suggestions)
+warning: constant `PALLET_ID` is never used
+ --> custom-pallets/profile-validation/src/lib.rs:67:7
+ |
+67 | const PALLET_ID: PalletId = PalletId(*b"ex/cfund");
+ | ^^^^^^^^^
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/profile-validation/src/extras.rs:123:3
+ |
+120 | / let result = T::SchellingGameSharedSource::get_evidence_period_end_block_helper_link(
+121 | | key, phase_data, now,
+122 | | );
+ | |__________- unnecessary `let` binding
+123 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+ = note: `#[warn(clippy::let_and_return)]` on by default
+help: return the expression directly
+ |
+120 ~
+121 ~ T::SchellingGameSharedSource::get_evidence_period_end_block_helper_link(
+122 ~ key, phase_data, now,
+123 ~ )
+ |
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/profile-validation/src/extras.rs:140:3
+ |
+137 | / let result = T::SchellingGameSharedSource::get_staking_period_end_block_helper_link(
+138 | | key, phase_data, now,
+139 | | );
+ | |__________- unnecessary `let` binding
+140 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+137 ~
+138 ~ T::SchellingGameSharedSource::get_staking_period_end_block_helper_link(
+139 ~ key, phase_data, now,
+140 ~ )
+ |
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/profile-validation/src/extras.rs:154:3
+ |
+152 | / let result =
+153 | | T::SchellingGameSharedSource::get_drawing_period_end_helper_link(key, phase_data);
+ | |______________________________________________________________________________________________- unnecessary `let` binding
+154 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+152 ~
+153 ~ T::SchellingGameSharedSource::get_drawing_period_end_helper_link(key, phase_data)
+ |
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/profile-validation/src/extras.rs:170:3
+ |
+167 | / let result = T::SchellingGameSharedSource::get_commit_period_end_block_helper_link(
+168 | | key, phase_data, now,
+169 | | );
+ | |__________- unnecessary `let` binding
+170 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+167 ~
+168 ~ T::SchellingGameSharedSource::get_commit_period_end_block_helper_link(
+169 ~ key, phase_data, now,
+170 ~ )
+ |
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/profile-validation/src/extras.rs:186:3
+ |
+183 | / let result = T::SchellingGameSharedSource::get_vote_period_end_block_helper_link(
+184 | | key, phase_data, now,
+185 | | );
+ | |__________- unnecessary `let` binding
+186 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+183 ~
+184 ~ T::SchellingGameSharedSource::get_vote_period_end_block_helper_link(
+185 ~ key, phase_data, now,
+186 ~ )
+ |
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/profile-validation/src/extras.rs:198:3
+ |
+197 | let result = T::SchellingGameSharedSource::selected_as_juror_helper_link(key, who);
+ | ----------------------------------------------------------------------------------- unnecessary `let` binding
+198 | result
+ | ^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+197 ~
+198 ~ T::SchellingGameSharedSource::selected_as_juror_helper_link(key, who)
+ |
+
+warning: returning the result of a `let` binding from a block
+ --> custom-pallets/profile-validation/src/extras.rs:207:3
+ |
+206 | let fund_required = registration_fee_u64.checked_sub(total_fund_u64);
+ | --------------------------------------------------------------------- unnecessary `let` binding
+207 | fund_required
+ | ^^^^^^^^^^^^^
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return
+help: return the expression directly
+ |
+206 ~
+207 ~ registration_fee_u64.checked_sub(total_fund_u64)
+ |
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/profile-validation/src/lib.rs:371:21
+ |
+371 | block_number: now.clone(),
+ | ^^^^^^^^^^^ help: try removing the `clone` call: `now`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+ = note: `#[warn(clippy::clone_on_copy)]` on by default
+
+warning: using `clone` on type `<::Currency as Currency<::AccountId>>::Balance` which implements the `Copy` trait
+ --> custom-pallets/profile-validation/src/lib.rs:382:6
+ |
+382 | amount_to_fund.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `amount_to_fund`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<::Currency as Currency<::AccountId>>::Balance` which implements the `Copy` trait
+ --> custom-pallets/profile-validation/src/lib.rs:403:17
+ |
+403 | ... deposit: amount_to_fund.clone(),
+ | ^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `amount_to_fund`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<<::Block as Block>::Header as Header>::Number` which implements the `Copy` trait
+ --> custom-pallets/profile-validation/src/lib.rs:451:12
+ |
+451 | start: now.clone(),
+ | ^^^^^^^^^^^ help: try removing the `clone` call: `now`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: using `clone` on type `<::Currency as Currency<::AccountId>>::Balance` which implements the `Copy` trait
+ --> custom-pallets/profile-validation/src/lib.rs:461:7
+ |
+461 | fees.clone(),
+ | ^^^^^^^^^^^^ help: try removing the `clone` call: `fees`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/profile-validation/src/lib.rs:492:33
+ |
+492 | >::insert(&count, challenge_evidence_post);
+ | ^^^^^^ help: change this to: `count`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+ = note: `#[warn(clippy::needless_borrows_for_generic_args)]` on by default
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/profile-validation/src/lib.rs:562:34
+ |
+562 | match >::get(&post_id) {
+ | ^^^^^^^^ help: change this to: `post_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/profile-validation/src/lib.rs:565:9
+ |
+565 | if challenge_evidence_post_c.is_comment == false {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!challenge_evidence_post_c.is_comment`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+ = note: `#[warn(clippy::bool_comparison)]` on by default
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/profile-validation/src/lib.rs:566:34
+ |
+566 | >::insert(&count, challenge_evidence_post);
+ | ^^^^^^ help: change this to: `count`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/profile-validation/src/lib.rs:570:63
+ |
+570 | let mut comment_ids = >::get(&post_id);
+ | ^^^^^^^^ help: change this to: `post_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: using `clone` on type `u64` which implements the `Copy` trait
+ --> custom-pallets/profile-validation/src/lib.rs:574:35
+ |
+574 | ... comment_ids.insert(index, count.clone());
+ | ^^^^^^^^^^^^^ help: try removing the `clone` call: `count`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy
+
+warning: the borrowed expression implements the required traits
+ --> custom-pallets/profile-validation/src/lib.rs:575:46
+ |
+575 | ... >::insert(&post_id, &comment_ids);
+ | ^^^^^^^^ help: change this to: `post_id`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrows_for_generic_args
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/profile-validation/src/lib.rs:843:11
+ |
+843 | ... if profile_fund_info.deposit_returned == false {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!profile_fund_info.deposit_returned`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: equality checks against false can be replaced by a negation
+ --> custom-pallets/profile-validation/src/lib.rs:872:10
+ |
+872 | if profile_fund_info.deposit_returned == false {
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!profile_fund_info.deposit_returned`
+ |
+ = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison
+
+warning: `pallet-profile-validation` (lib) generated 22 warnings (run `cargo clippy --fix --lib -p pallet-profile-validation` to apply 21 suggestions)
+ Checking rocksdb v0.21.0
+ Checking kvdb-rocksdb v0.19.0
+ Checking sc-client-db v0.35.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Checking sc-service v0.35.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Checking sc-cli v0.36.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Checking frame-benchmarking-cli v32.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Checking node-template v0.0.0 (/home/ubuntu/shivarthu/node)
+ Finished `dev` profile [unoptimized + debuginfo] target(s) in 6m 03s
+```
+
+
+Unit tests now all successfully passing:
+
+
+ New Output
+
+```rust
+warning: associated function `deposit_event` is never used
+ --> custom-pallets/sortition-sum-game/src/lib.rs:51:43
+ |
+51 | #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ | ^^^^^^^^^^^^^ associated function in this implementation
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: `pallet-sortition-sum-game` (lib) generated 1 warning
+warning: use of deprecated associated function `frame_support::pallet_prelude::StorageDoubleMap::::remove_prefix`: Use `clear_prefix` instead
+ --> custom-pallets/schelling-game-shared/src/extras.rs:521:21
+ |
+521 | >::remove_prefix(key.clone(), None); // Deprecated: Use clear_prefix instead
+ | ^^^^^^^^^^^^^
+ |
+ = note: `#[warn(deprecated)]` on by default
+
+warning: use of deprecated associated function `frame_support::pallet_prelude::StorageDoubleMap::::remove_prefix`: Use `clear_prefix` instead
+ --> custom-pallets/schelling-game-shared/src/score_game.rs:154:26
+ |
+154 | >::remove_prefix(key.clone(), None); // Deprecated: Use clear_prefix instead
+ | ^^^^^^^^^^^^^
+
+warning: associated function `deposit_event` is never used
+ --> custom-pallets/schelling-game-shared/src/lib.rs:187:43
+ |
+187 | #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ | ^^^^^^^^^^^^^ associated function in this implementation
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: `pallet-schelling-game-shared` (lib) generated 3 warnings
+warning: associated function `deposit_event` is never used
+ --> custom-pallets/shared-storage/src/lib.rs:83:43
+ |
+83 | #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ | ^^^^^^^^^^^^^ associated function in this implementation
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: `pallet-shared-storage` (lib) generated 1 warning
+ Compiling librocksdb-sys v0.11.0+8.1.1
+warning: unused variable: `who`
+ --> custom-pallets/positive-externality/src/lib.rs:445:8
+ |
+445 | let who = ensure_signed(origin)?;
+ | ^^^ help: if this is intentional, prefix it with an underscore: `_who`
+ |
+ = note: `#[warn(unused_variables)]` on by default
+
+warning: associated function `get_drawn_jurors` is never used
+ --> custom-pallets/positive-externality/src/extras.rs:59:16
+ |
+29 | impl Pallet {
+ | ------------------------- associated function in this implementation
+...
+59 | pub(super) fn get_drawn_jurors(user_to_calculate: T::AccountId) -> Vec<(T::AccountId, u64)> {
+ | ^^^^^^^^^^^^^^^^
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: associated function `deposit_event` is never used
+ --> custom-pallets/positive-externality/src/lib.rs:162:43
+ |
+162 | #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ | ^^^^^^^^^^^^^ associated function in this implementation
+
+warning: constant `PALLET_ID` is never used
+ --> custom-pallets/profile-validation/src/lib.rs:67:7
+ |
+67 | const PALLET_ID: PalletId = PalletId(*b"ex/cfund");
+ | ^^^^^^^^^
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: `pallet-positive-externality` (lib) generated 3 warnings
+warning: `pallet-profile-validation` (lib) generated 1 warning
+ Compiling node-template-runtime v0.0.0 (/home/ubuntu/shivarthu/runtime)
+warning: associated function `deposit_event` is never used
+ --> custom-pallets/positive-externality/src/lib.rs:162:43
+ |
+162 | #[pallet::generate_deposit(pub(super) fn deposit_event)]
+ | ^^^^^^^^^^^^^ associated function in this implementation
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+warning: `pallet-positive-externality` (lib test) generated 2 warnings (1 duplicate)
+warning: `pallet-profile-validation` (lib test) generated 1 warning (1 duplicate)
+warning: `pallet-schelling-game-shared` (lib test) generated 3 warnings (3 duplicates)
+warning: `pallet-shared-storage` (lib test) generated 1 warning (1 duplicate)
+warning: `pallet-sortition-sum-game` (lib test) generated 1 warning (1 duplicate)
+ Compiling rocksdb v0.21.0
+ Compiling kvdb-rocksdb v0.19.0
+ Compiling sc-client-db v0.35.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sc-service v0.35.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling sc-cli v0.36.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling frame-benchmarking-cli v32.0.0 (https://github.com/paritytech/polkadot-sdk.git?tag=polkadot-v1.9.0#3c3d6fce)
+ Compiling node-template v0.0.0 (/home/ubuntu/shivarthu/node)
+ Finished `test` profile [unoptimized + debuginfo] target(s) in 7m 39s
+ Running unittests src/lib.rs (target/debug/deps/department_funding_rpc-9a27e7ab2f9307be)
+
+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/department_funding_runtime_api-e0bcd957f69d1cc6)
+
+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-ce7990016f3c2795)
+
+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/node_template_runtime-12815422c78fb6ec)
+
+running 2 tests
+test test_genesis_config_builds ... ok
+test __construct_runtime_integrity_test::runtime_integrity_tests ... ok
+
+test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_department_funding-52d510957da2fa1b)
+
+running 8 tests
+test mock::test_genesis_config_builds ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::apply_staking_period_works ... ok
+test tests::create_department_required_fund_fails_if_department_does_not_exist ... ok
+test tests::apply_staking_period_fails ... ok
+test tests::create_department_required_fund_fails_if_funding_more_than_tipping_value ... ok
+test tests::it_works_for_default_value ... ok
+test tests::schelling_game_incentives_get_test ... ok
+
+test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_departments-eab2f38483358d81)
+
+running 13 tests
+test mock::test_genesis_config_builds ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::add_member_to_department_works ... ok
+test tests::add_member_to_department_fails_if_not_admin ... ok
+test tests::change_the_admin_fails_if_department_does_not_exist ... ok
+test tests::add_member_to_department_fails_if_already_member ... ok
+test tests::change_the_admin_works ... ok
+test tests::create_department_works ... ok
+test tests::change_the_admin_fails_if_not_current_admin ... ok
+test tests::remove_member_from_department_fails_if_no_accounts ... ok
+test tests::remove_member_from_department_fails_if_not_admin ... ok
+test tests::remove_member_from_department_fails_if_not_a_member ... ok
+test tests::remove_member_from_department_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/pallet_positive_externality-8b3a337723858477)
+
+running 11 tests
+test mock::test_genesis_config_builds ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::test_applying_for_staking_period ... ok
+test tests::test_appying_jurors ... ok
+test tests::test_change_period ... ok
+test tests::test_draw_jurors_period ... ok
+test tests::test_commit_and_incentives_vote ... ok
+test tests::test_drawn_jurors ... ok
+test tests::test_positive_externality_post ... ok
+test tests::test_setting_positive_externality_validation ... ok
+test tests::schelling_game_incentives_get_test ... ok
+
+test result: ok. 11 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 7.32s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_profile_validation-4f380589e08dbb08)
+
+running 9 tests
+test mock::test_genesis_config_builds ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::add_citizen_profile_check ... ok
+test tests::challenge_profile_after_time_for_staking_over_test ... ok
+test tests::challenge_evidence ... ok
+test tests::check_fund_addition ... ok
+test tests::return_profile_stake_test ... ok
+test tests::test_draw_juror ... ok
+test tests::schelling_game_test ... ok
+
+test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_project_tips-785897dea52283b5)
+
+running 9 tests
+test mock::test_genesis_config_builds ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::check_balance_on_staking ... ok
+test tests::check_create_project_function ... ok
+test tests::check_apply_staking_period_function ... ok
+test tests::schelling_game_test ... ok
+test tests::schelling_game_incentives_test ... ok
+test tests::get_tip_test ... ok
+test tests::schelling_game_incentives_get_test ... ok
+
+test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 8.11s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_schelling_game_shared-feef9a49ac3a230e)
+
+running 13 tests
+test mock::test_genesis_config_builds ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::apply_juror ... ok
+test tests::challenger_lost_test ... ok
+test tests::challenger_win_test_jurors_incentive_in_one_go ... ok
+test tests::challenger_win_test ... ok
+test tests::check_time_for_staking_not_over_test ... ok
+test tests::end_of_time_staking_period ... ok
+test tests::evidence_period_not_over_test ... ok
+test tests::evidence_period_test ... ok
+test tests::challenger_win_value_test ... ok
+test tests::score_schelling_game_value_test ... ok
+test tests::score_schelling_game_test ... ok
+
+test result: ok. 13 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_shared_storage-d6948c6ef9e3e830)
+
+running 9 tests
+test mock::test_genesis_config_builds ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::test_add_score_to_department ... ok
+test tests::test_get_all_department_reputation_scores ... ok
+test tests::test_get_department_reputation_score ... ok
+test tests::test_get_total_reputation_score ... ok
+test tests::test_set_department_reputation_score ... ok
+test tests::test_subtract_score_from_department ... ok
+test tests::test_update_department_reputation_score ... ok
+
+test result: ok. 9 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_sortition_sum_game-7eff689f276bd3a1)
+
+running 4 tests
+test mock::test_genesis_config_builds ... ok
+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. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_spaces-bc7c808338ed7deb)
+
+running 4 tests
+test mock::test_genesis_config_builds ... ok
+test tests::it_works_for_default_value ... ok
+test tests::correct_error_for_none_value ... ok
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+
+test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Running unittests src/lib.rs (target/debug/deps/pallet_support-c17eb778485b2e83)
+
+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_template-e18b6b212bb6eba8)
+
+running 4 tests
+test mock::test_genesis_config_builds ... ok
+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. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Running unittests src/lib.rs (target/debug/deps/positive_externality_rpc-12c8b879e95500ae)
+
+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/positive_externality_runtime_api-5b9e4c150f014554)
+
+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/profile_validation_rpc-ae24a82209a1ca70)
+
+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/profile_validation_runtime_api-9227e346b170fd5c)
+
+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/project_tips_rpc-b3ca63810e3e37c0)
+
+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/project_tips_runtime_api-12433f0eb251809a)
+
+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/trait_departments-d7cc2a3e521fe4f1)
+
+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/trait_schelling_game_shared-5580bf167a8a39c5)
+
+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/trait_shared_storage-df9a2dc802af8cf3)
+
+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/trait_sortition_sum_game-73a2700189a77355)
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests department_funding_rpc
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests department_funding_runtime_api
+
+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_runtime
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests pallet_department_funding
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests pallet_departments
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests pallet_positive_externality
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests pallet_profile_validation
+
+running 3 tests
+test custom-pallets/profile-validation/src/lib.rs - pallet::Call::add_profile_stake (line 290) ... ignored
+test custom-pallets/profile-validation/src/lib.rs - pallet::Pallet::add_profile_stake (line 332) ... ignored
+test custom-pallets/profile-validation/src/lib.rs - pallet::dispatchables::add_profile_stake (line 98) ... ignored
+
+test result: ok. 0 passed; 0 failed; 3 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests pallet_project_tips
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests pallet_schelling_game_shared
+
+running 8 tests
+test custom-pallets/schelling-game-shared/src/extras.rs - extras::Pallet::change_period (line 271) ... ignored
+test custom-pallets/schelling-game-shared/src/extras.rs - extras::Pallet::change_period (line 281) ... ignored
+test custom-pallets/schelling-game-shared/src/extras.rs - extras::Pallet::change_period (line 288) ... ignored
+test custom-pallets/schelling-game-shared/src/extras.rs - extras::Pallet::set_to_staking_period (line 209) ... ignored
+test custom-pallets/schelling-game-shared/src/share_link.rs - share_link::Pallet::change_period_link (line 249) ... ignored
+test custom-pallets/schelling-game-shared/src/share_link.rs - share_link::Pallet::change_period_link (line 259) ... ignored
+test custom-pallets/schelling-game-shared/src/share_link.rs - share_link::Pallet::change_period_link (line 266) ... ignored
+test custom-pallets/schelling-game-shared/src/share_link.rs - share_link::Pallet::set_to_staking_period_link (line 228) ... ignored
+
+test result: ok. 0 passed; 0 failed; 8 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Doc-tests pallet_shared_storage
+```
+
+
+~~Some unit tests currently failing:~~
+
+
+ Output
+
+```rust
+error[E0599]: no function or associated item named `do_something` found for struct `pallet::Pallet` in the current scope
+ --> custom-pallets/schelling-game-shared/src/tests.rs:32:30
+ |
+32 | assert_ok!(TemplateModule::do_something(RuntimeOrigin::signed(1), 42));
+ | ^^^^^^^^^^^^ function or associated item not found in `Pallet`
+ |
+ ::: custom-pallets/schelling-game-shared/src/lib.rs:59:2
+ |
+59 | pub struct Pallet(_);
+ | -------------------- function or associated item `do_something` not found for this struct
+ |
+ = help: items from traits can only be used if the trait is implemented and in scope
+ = note: the following traits define an item `do_something`, perhaps you need to implement one of them:
+ candidate #1: `weights::WeightInfo`
+ candidate #2: `pallet_sortition_sum_game::WeightInfo`
+
+error[E0599]: no function or associated item named `something` found for struct `pallet::Pallet` in the current scope
+ --> custom-pallets/schelling-game-shared/src/tests.rs:34:30
+ |
+34 | assert_eq!(TemplateModule::something(), Some(42));
+ | ^^^^^^^^^ function or associated item not found in `Pallet`
+ |
+ ::: custom-pallets/schelling-game-shared/src/lib.rs:59:2
+ |
+59 | pub struct Pallet(_);
+ | -------------------- function or associated item `something` not found for this struct
+
+error[E0599]: no function or associated item named `cause_error` found for struct `pallet::Pallet` in the current scope
+ --> custom-pallets/schelling-game-shared/src/tests.rs:45:20
+ |
+45 | TemplateModule::cause_error(RuntimeOrigin::signed(1)),
+ | ^^^^^^^^^^^ function or associated item not found in `Pallet`
+ |
+ ::: custom-pallets/schelling-game-shared/src/lib.rs:59:2
+ |
+59 | pub struct Pallet(_);
+ | -------------------- function or associated item `cause_error` not found for this struct
+ |
+ = help: items from traits can only be used if the trait is implemented and in scope
+ = note: the following traits define an item `cause_error`, perhaps you need to implement one of them:
+ candidate #1: `weights::WeightInfo`
+ candidate #2: `pallet_sortition_sum_game::WeightInfo`
+
+warning: unused variable: `game_type`
+ --> custom-pallets/schelling-game-shared/src/tests.rs:423:7
+ |
+423 | let game_type = return_game_type_profile_approval();
+ | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_type`
+ |
+ = note: `#[warn(unused_variables)]` on by default
+
+warning: unused variable: `game_type`
+ --> custom-pallets/schelling-game-shared/src/tests.rs:703:7
+ |
+703 | let game_type = return_game_type_profile_approval();
+ | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_type`
+
+warning: unused variable: `game_type`
+ --> custom-pallets/schelling-game-shared/src/tests.rs:844:7
+ |
+844 | let game_type = return_game_type_profile_approval();
+ | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_type`
+
+For more information about this error, try `rustc --explain E0599`.
+warning: `pallet-schelling-game-shared` (lib test) generated 5 warnings (2 duplicates)
+error: could not compile `pallet-schelling-game-shared` (lib test) due to 3 previous errors; 5 warnings emitted
+warning: build failed, waiting for other jobs to finish...
+warning: unused variable: `startblock3`
+ --> custom-pallets/department-funding/src/tests.rs:462:7
+ |
+462 | let startblock3 = 3 * (6 * 30 * 24 * 60 * 60) / 6;
+ | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_startblock3`
+ |
+ = note: `#[warn(unused_variables)]` on by default
+
+warning: unused variable: `startblock4`
+ --> custom-pallets/department-funding/src/tests.rs:464:7
+ |
+464 | let startblock4 = 4 * (6 * 30 * 24 * 60 * 60) / 6;
+ | ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_startblock4`
+
+warning: `pallet-department-funding` (lib test) generated 6 warnings (4 duplicates)
+warning: `pallet-profile-validation` (lib test) generated 4 warnings (4 duplicates)
+```
+
diff --git a/evaluations/subcoin_2_piewol.md b/evaluations/subcoin_2_piewol.md
new file mode 100644
index 000000000..e8bbc1e74
--- /dev/null
+++ b/evaluations/subcoin_2_piewol.md
@@ -0,0 +1,197 @@
+# Evaluation
+
+- **Status:** accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Subcoin.md
+- **Milestone:** 2
+
+| Number | Deliverable | Accepted | Link | Notes |
+| -- | -- | --- | --- | --- |
+| 0a. | License | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/LICENSE | ok |
+| 0b. | Documentation | | Each module has its own docs. The rendered inline rustdoc is deployed at https://subcoin-project.github.io/subcoin/. | thanks for extending |
+| 0c. | Testing and Testing Guide | | https://github.com/subcoin-project/subcoin/tree/subcoin-milestone-2?tab=readme-ov-file#run-tests | works |
+| 0d. | Docker | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/Dockerfile The docker image is available at https://github.com/subcoin-project/subcoin/pkgs/container/subcoin/249545041?tag=v0.2.0 | works |
+| 1. | Block Verification | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/crates/sc-consensus-nakamoto/src/verification.rs | ok |
+| 2. | `bitcoin-network` | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-2/crates/subcoin-network/src/lib.rs | works, gets peers and imports blocks |
+
+# General Notes
+
+I'm glad to hear that you are planning to further extend the testing of the node and runtime. Looking forward to it.
+
+## Documentation
+
+Initially a few items were missing documentation. Thanks for adding docs on those.
+
+## Tests
+All tests are passing.
+
+
+
+
+
+ ubuntu@ip-172-31-30-101:~/subcoin$ cargo test --workspace --all
+ warning: /home/ubuntu/subcoin/crates/sc-consensus-nakamoto/Cargo.toml: version requirement `0.105.0+25.1` for dependency `bitcoinconsensus` includes semver metadata which will be ignored, removing the metadata is recommended to avoid confusion
+ warning: skipping duplicate package `embedded` found at `/home/ubuntu/.cargo/git/checkouts/rust-bitcoin-a512414fb5559947/3415d99/bitcoin/embedded`
+ warning: skipping duplicate package `embedded` found at `/home/ubuntu/.cargo/git/checkouts/rust-bitcoin-a512414fb5559947/e38bc26/bitcoin/embedded`
+ Finished `test` profile [unoptimized + debuginfo] target(s) in 1.90s
+ Running unittests src/lib.rs (target/debug/deps/pallet_bitcoin-5a032c981f885c6f)
+
+ running 1 test
+ test tests::test_runtime_txid_type ... 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_executive-0f2fe428f34ee43f)
+
+ 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/sc_consensus_nakamoto-673b557354b8ad14)
+
+ running 2 tests
+ test verification::header_verify::tests::test_calculate_next_work_required ... ok
+ test verification::tests::test_find_utxo_in_current_block ... ok
+
+ test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.20s
+
+ Running unittests src/lib.rs (target/debug/deps/sc_fast_sync_backend-e8f6c6930431c426)
+
+ running 2 tests
+ test tests::store_duplicate_justifications_is_forbidden ... ok
+ test tests::append_and_retrieve_justifications ... 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/subcoin_informant-bf64c25aba820de6)
+
+ running 1 test
+ test display::test_display_block_hash ... 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/subcoin_network-7673d06b806b8fbc)
+
+ running 7 tests
+ test orphan_blocks_pool::tests::orphan_block_pool_insert_orphan_block ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_insert_unknown_block ... ok
+ test checkpoint::tests::test_next_checkpoint ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_remove_known_blocks ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_remove_blocks_for_parent ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_remove_blocks ... ok
+ test block_downloader::blocks_first::tests::duplicate_block_announcement_should_not_be_downloaded_again ... ok
+
+ test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.65s
+
+ Running unittests src/lib.rs (target/debug/deps/subcoin_node-1d2acafb14d4f921)
+
+ running 2 tests
+ test tests::rocksdb_disabled_in_substrate ... ok
+ test commands::tools::tests::test_revert_sha256d ... ok
+
+ test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Running unittests src/bin/subcoin.rs (target/debug/deps/subcoin-a75fb5552deb51bf)
+
+ 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/subcoin_primitives-a84d48eba265fe61)
+
+ 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/subcoin_rpc-f6259db14fa5b487)
+
+ running 1 test
+ test blockchain::tests::test_block_hash_serde ... 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/subcoin_runtime-e2c302348a4e7257)
+
+ running 2 tests
+ test test_genesis_config_builds ... ok
+ test __construct_runtime_integrity_test::runtime_integrity_tests ... 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/subcoin_runtime_primitives-6e43d92ef6aec823)
+
+ 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/subcoin_service-0b18db2ae41f5b3f)
+
+ running 1 test
+ test block_executor::tests::off_runtime_in_memory_executor_should_produce_same_result_as_runtime_disk_executor ... ok
+
+ test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 36.71
+
+
+
+
+## Docker
+Image is building and running a container works as well. Specifically running the container as root solved initial issues. The node is running fine within Docker using the following command `docker run --user root subv2 run`.
+
+
+
+````
+ubuntu@ip-172-31-30-101:~/subcoin$ sudo docker build .
+[+] Building 1843.6s (12/12) FINISHED docker:default
+ => [internal] load build definition from Dockerfile 0.1s
+ => => transferring dockerfile: 1.35kB 0.0s
+ => [internal] load metadata for docker.io/library/ubuntu:22.04 1.3s
+ => [internal] load .dockerignore 0.0s
+ => => transferring context: 2B 0.0s
+ => [internal] load build context 134.7s
+ => => transferring context: 12.66GB 134.6s
+ => [builder 1/5] FROM docker.io/library/ubuntu:22.04@sha256:340d9b015b19 3.5s
+ => => resolve docker.io/library/ubuntu:22.04@sha256:340d9b015b194dc6e2a1 0.0s
+ => => sha256:340d9b015b194dc6e2a13938944e0d016e57b967996 1.13kB / 1.13kB 0.0s
+ => => sha256:0eb0f877e1c869a300c442c41120e778db7161419244ee5 424B / 424B 0.0s
+ => => sha256:8a3cdc4d1ad3e314a91f76b7b99eed443f2152e3a9b 2.30kB / 2.30kB 0.0s
+ => => sha256:3713021b02770a720dea9b54c03d0ed83e03a2ef5 29.53MB / 29.53MB 1.2s
+ => => extracting sha256:3713021b02770a720dea9b54c03d0ed83e03a2ef5dce2898 2.0s
+ => [builder 2/5] WORKDIR /src 146.8s
+ => [builder 3/5] RUN apt-get update && DEBIAN_FRONTEND=noninteracti 43.5s
+ => [builder 4/5] COPY . . 176.3s
+ => [builder 5/5] RUN /root/.cargo/bin/cargo build --locked -- 1465.3s
+ => [stage-1 2/3] COPY --from=builder /subcoin /subcoin 0.2s
+ => [stage-1 3/3] RUN mkdir /node-data && chown nobody:nogroup /node-data 0.2s
+ => exporting to image 0.3s
+ => => exporting layers 0.3s
+ => => writing image sha256:9037f7d697a3625c15bc64fd85433e07bc5ebf0aebe98 0.0s
+ ````
+
+ ````
+root@ip-172-31-30-101:/home/ubuntu/subcoin# docker run --user root subv2 run
+2024-08-18 14:49:23 Subcoin Node
+2024-08-18 14:49:23 ✌️ version 0.1.0-b35da7ae2a4
+2024-08-18 14:49:23 ❤️ by xuliuchengxlc@gmail.com, 2024-2024
+2024-08-18 14:49:23 📋 Chain specification: Bitcoin
+2024-08-18 14:49:23 🏷 Node name: lacking-harbor-7709
+2024-08-18 14:49:23 👤 Role: FULL
+2024-08-18 14:49:23 💾 Database: ParityDb at /root/.local/share/subcoin/chains/mainnet/paritydb/full
+2024-08-18 14:49:23 🔨 Initializing Genesis block/state (state: 0xf5c9…79d3, header-hash: 0x9f00…6b6c)
+2024-08-18 14:49:25 🏁 CPU score: 693.98 MiBs
+2024-08-18 14:49:25 🏁 Memory score: 10.05 GiBs
+2024-08-18 14:49:25 🏁 Disk score (seq. writes): 212.38 MiBs
+2024-08-18 14:49:25 🏁 Disk score (rand. writes): 93.89 MiBs
+2024-08-18 14:49:25 📦 Highest known block at #0
+2024-08-18 14:49:25 Running JSON-RPC server: addr=127.0.0.1:9944, allowed origins=[]
+2024-08-18 14:49:25 🔊 Listening on 127.0.0.1:8333
+2024-08-18 14:49:30 ⚙️ Syncing, target=#857354 (6 peers), best: #0 (0000…8ce26f,0x9f00…6b6c), finalized #0 (0000…8ce26f,0x9f00…6b6c), ⬇ 36.2kiB/s ⬆ 0.4kiB/s
+2024-08-18 14:49:35 ⚙️ Syncing 0.0 bps, target=#857354 (6 peers), best: #0 (0000…8ce26f,0x9f00…6b6c), finalized #0 (0000…8ce26f,0x9f00…6b6c), ⬇ 0 ⬆ 0
+2024-08-18 14:49:40 ⚙️ Syncing 0.0 bps, target=#857354 (7 peers), best: #0 (0000…8ce26f,0x9f00…6b6c), finalized #0 (0000…8ce26f,0x9f00…6b6c), ⬇ 67 B/s ⬆ 53
+
+````
+
+
+
+
+
+
+
diff --git a/evaluations/subcoin_3_piewol.md b/evaluations/subcoin_3_piewol.md
new file mode 100644
index 000000000..0d629db57
--- /dev/null
+++ b/evaluations/subcoin_3_piewol.md
@@ -0,0 +1,222 @@
+# Evaluation
+
+- **Status:** accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Subcoin.md
+- **Milestone:** 3
+
+| Number | Deliverable | Accepted | Link | Notes |
+| -- | -- | --- | --- | --- |
+| 0a. | License | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/LICENSE | MIT |
+| 0b. | Documentation | | Each module has its own docs. The rendered inline rustdoc is deployed at https://subcoin-project.github.io/subcoin/. | nice |
+| 0c. | Testing and Testing Guide | | https://github.com/subcoin-project/subcoin/tree/subcoin-milestone-3?tab=readme-ov-file#run-tests | all passing |
+| 0d. | Docker | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/Dockerfile The docker image is available at https://github.com/subcoin-project/subcoin/pkgs/container/subcoin/263310548?tag=v0.3.0 | builds and runs |
+| 1. | Article | | https://liuchengxu.notion.site/Subcoin-A-Step-Toward-Decentralized-Fast-Sync-for-Bitcoin-68762427a4484d73906a91602d789be9 | well written, thanks! |
+| 2. | Fast Sync | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/docs/src/test_fast_sync.md | works exactly as described in the guide. nice. |
+| 3. | Bitcoin Transaction Broadcasting | | https://github.com/subcoin-project/subcoin/blob/subcoin-milestone-3/docs/src/test_bitcoin_transaction_broadcasting.md | ok |
+
+# General Notes
+ With the feedback from the last milestone it was easy to evaluate this one. Guide and article are well written.
+
+## Documentation
+
+Good documentation as in the previous milestone.
+
+In https://subcoin-project.github.io/subcoin/subcoin_runtime/index.html are still some items undocumented. It would be great if that could be extended slightly.
+
+## Tests
+
+All tests are passing.
+
+
+
+ cargo test --workspace --all
+
+ Compiling subcoin-node v0.1.0 (/home/ubuntu/subcoin/crates/subcoin-node)
+ Finished `test` profile [unoptimized + debuginfo] target(s) in 12.69s
+ Running unittests src/lib.rs (target/debug/deps/pallet_bitcoin-1ca1506fd8cd4465)
+
+ running 1 test
+ test tests::test_runtime_txid_type ... 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_executive-adb5e7d285e3be20)
+
+
+ running 2 tests
+ test verification::header_verify::tests::test_calculate_next_work_required ... ok
+ test verification::tests::test_find_utxo_in_current_block ... ok
+
+ test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.17s
+
+ Running unittests src/lib.rs (target/debug/deps/sc_fast_sync_backend-d17e25075740f59b)
+
+ running 2 tests
+ test tests::append_and_retrieve_justifications ... ok
+ test tests::store_duplicate_justifications_is_forbidden ... ok
+
+ test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
+
+ Running unittests src/lib.rs (target/debug/deps/subcoin_informant-dc64abc34ae0787b)
+
+ running 1 test
+ test display::test_display_block_hash ... 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/subcoin_network-eb9dbe0d175e2251)
+
+ running 7 tests
+ test checkpoint::tests::test_next_checkpoint ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_insert_orphan_block ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_insert_unknown_block ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_remove_blocks_for_parent ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_remove_known_blocks ... ok
+ test orphan_blocks_pool::tests::orphan_block_pool_remove_blocks ... ok
+ test block_downloader::blocks_first::tests::duplicate_block_announcement_should_not_be_downloaded_again ... ok
+
+ test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 9.89s
+
+ Running unittests src/lib.rs (target/debug/deps/subcoin_node-b459dd99b58a6132)
+
+ running 2 tests
+ test tests::rocksdb_disabled_in_substrate ... ok
+ test commands::tools::tests::test_revert_sha256d ... ok
+
+ test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+
+ Running unittests src/bin/subcoin.rs (target/debug/deps/subcoin-e1b07d62ac9fddec)
+
+ running 1 test
+ test blockchain::tests::test_block_hash_serde ... 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/subcoin_runtime-2379d27afbe589f3)
+
+ running 2 tests
+ test __construct_runtime_integrity_test::runtime_integrity_tests ... ok
+ test test_genesis_config_builds ... ok
+
+ test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
+
+ Running unittests src/lib.rs (target/debug/deps/subcoin_runtime_primitives-53afd9758b6530b0)
+
+
+ running 2 tests
+ test block_executor::tests::inspect_substrate_header_size ... ignored
+ test block_executor::tests::off_runtime_in_memory_executor_should_produce_same_result_as_runtime_disk_executor ... ok
+
+ test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 21.46s
+
+ Running unittests src/lib.rs (target/debug/deps/subcoin_test_service-6f82fe824c6b894c)
+
+
+
+
+## Fast sync
+
+
+
+ 2024-09-11 08:58:16.803 INFO main sc_rpc_server: Running JSON-RPC server: addr=127.0.0.1:38005, allowed origins=["http://localhost:*", "http://127.0.0.1:*", "https://localhost:*", "https://127.0.0.1:*", "https://polkadot.js.org"]
+ 2024-09-11 08:58:16.803 INFO tokio-runtime-worker subcoin_network: Subcoin block sync is disabled until Substrate fast sync is complete
+ 2024-09-11 08:58:16.803 INFO tokio-runtime-worker subcoin_network: 🔊 Listening on 127.0.0.1:8333
+ 2024-09-11 08:58:16.805 INFO tokio-runtime-worker libp2p_mdns::behaviour: discovered: 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP /ip4/172.31.21.95/tcp/30333/ws
+ 2024-09-11 08:58:16.806 INFO tokio-runtime-worker libp2p_mdns::behaviour: discovered: 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP /ip4/172.17.0.1/tcp/30333/ws
+ 2024-09-11 08:58:17.246 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=142.132.135.164:8333 local_addr=172.31.21.95:37440 direction=Outbound connect_latency=6
+ 2024-09-11 08:58:17.250 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=51.77.152.20:8333 local_addr=172.31.21.95:58968 direction=Outbound connect_latency=10
+ 2024-09-11 08:58:17.251 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=84.146.196.78:8333 local_addr=172.31.21.95:44932 direction=Outbound connect_latency=12
+ 2024-09-11 08:58:17.254 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=2.233.91.176:8333 local_addr=172.31.21.95:34500 direction=Outbound connect_latency=14
+ 2024-09-11 08:58:17.256 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Received version from 142.132.135.164:8333 version=70016 user_agent="/Satoshi:26.0.0/" start_height=860856
+ 2024-09-11 08:58:17.256 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 🤝 Completed handshake peer=142.132.135.164:8333 direction=Outbound
+ 2024-09-11 08:58:17.266 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=193.86.97.61:8333 local_addr=172.31.21.95:35286 direction=Outbound connect_latency=27
+ 2024-09-11 08:58:17.266 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Received version from 84.146.196.78:8333 version=70016 user_agent="/Satoshi:27.1.0/" start_height=860856
+ 2024-09-11 08:58:17.266 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 🤝 Completed handshake peer=84.146.196.78:8333 direction=Outbound
+ 2024-09-11 08:58:17.268 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Received version from 51.77.152.20:8333 version=70015 user_agent="/Satoshi:0.18.1/" start_height=860856
+ 2024-09-11 08:58:17.268 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 🤝 Completed handshake peer=51.77.152.20:8333 direction=Outbound
+ 2024-09-11 08:58:17.280 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Added 628 addresses from 142.132.135.164:8333
+ 2024-09-11 08:58:17.292 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Received version from 193.86.97.61:8333 version=70016 user_agent="/Satoshi:26.0.0/" start_height=860856
+ 2024-09-11 08:58:17.293 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 🤝 Completed handshake peer=193.86.97.61:8333 direction=Outbound
+ 2024-09-11 08:58:17.315 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=84.71.214.189:8333 local_addr=172.31.21.95:40778 direction=Outbound connect_latency=75
+ 2024-09-11 08:58:17.333 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=203.11.72.76:8333 local_addr=172.31.21.95:42796 direction=Outbound connect_latency=93
+ 2024-09-11 08:58:17.335 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Added 640 addresses from 84.146.196.78:8333
+ 2024-09-11 08:58:17.374 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Added 494 addresses from 193.86.97.61:8333
+ 2024-09-11 08:58:17.399 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Received version from 84.71.214.189:8333 version=70016 user_agent="/Satoshi:25.0.0/" start_height=860856
+ 2024-09-11 08:58:17.399 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 🤝 Completed handshake peer=84.71.214.189:8333 direction=Outbound
+ 2024-09-11 08:58:17.425 DEBUG tokio-runtime-worker subcoin_network::connection: New connection peer_addr=34.101.229.34:8333 local_addr=172.31.21.95:44024 direction=Outbound connect_latency=185
+ 2024-09-11 08:58:17.484 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Added 268 addresses from 84.71.214.189:8333
+ 2024-09-11 08:58:17.601 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 💔 Disconnecting peer reason=PeerShutdown peer_id=84.146.196.78:8333
+ 2024-09-11 08:58:17.745 DEBUG tokio-runtime-worker sync: Substream opened for 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP, handshake [1, 190, 65, 0, 0, 191, 75, 204, 200, 174, 84, 26, 223, 124, 81, 208, 205, 235, 181, 158, 217, 148, 124, 157, 80, 101, 126, 93, 162, 148, 113, 166, 51, 209, 120, 136, 201, 195, 236, 93, 130, 40, 167, 5, 49, 98, 170, 146, 255, 34, 235, 117, 124, 231, 48, 171, 21, 142, 103, 79, 251, 249, 131, 196, 122, 165, 232, 82, 204]
+ 2024-09-11 08:58:17.745 DEBUG tokio-runtime-worker sync: New peer 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP with best hash 0xbf4b…88c9 (16830).
+ 2024-09-11 08:58:17.745 DEBUG tokio-runtime-worker sync: Connected 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP
+ 2024-09-11 08:58:18.672 INFO tokio-runtime-worker subcoin_service::finalizer: ✅ Successfully finalized block #7400,0x46d2…7a53
+ 2024-09-11 08:58:18.782 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Received version from 34.101.229.34:8333 version=70015 user_agent="/Satoshi:0.20.1/" start_height=860856
+ 2024-09-11 08:58:18.782 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 🤝 Completed handshake peer=34.101.229.34:8333 direction=Outbound
+ 2024-09-11 08:58:18.843 INFO tokio-runtime-worker subcoin_service::finalizer: ✅ Successfully finalized block #16824,0xaad8…a292
+ 2024-09-11 08:58:18.844 DEBUG tokio-runtime-worker sync: Starting state sync for #16824 (0xaad8…a292)
+ 2024-09-11 08:58:18.889 DEBUG tokio-runtime-worker subcoin_network::peer_manager: Received version from 203.11.72.76:8333 version=70016 user_agent="/Satoshi:27.1.0/" start_height=860856
+ 2024-09-11 08:58:18.889 DEBUG tokio-runtime-worker subcoin_network::peer_manager: 🤝 Completed handshake peer=203.11.72.76:8333 direction=Outbound
+ 2024-09-11 08:58:18.943 DEBUG tokio-runtime-worker sync: Importing state data from 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP with 1 keys, 0 proof nodes.
+ 2024-09-11 08:58:18.943 DEBUG tokio-runtime-worker sync: Importing state from Some(be89f1f86dcd96a26d6c3308a396e3812149f4e1bd7e9f4e1c267e017c117d87c362f1c9298d79cd3f7663dd3e6fb490d261c73b6a461e6ec802948d70c0b4cb00000000) to Some(26aa394eea5630e07c48ae0c9558cef702a5c1b19ab7a04f536c519aca4983ac)
+ 2024-09-11 08:58:18.976 DEBUG tokio-runtime-worker sync: Importing state data from 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP with 1 keys, 0 proof nodes.
+ 2024-09-11 08:58:18.976 DEBUG tokio-runtime-worker sync: Importing state from Some(be89f1f86dcd96a26d6c3308a396e3814e7b9012096b41c4eb3aaf947f6ea429) to Some(be89f1f86dcd96a26d6c3308a396e3812149f4e1bd7e9f4e1c267e017c117d87c3635ca87d17d3162430ead8c6dc10c48752c2f3d9d099086ce7312547467be700000000)
+ 2024-09-11 08:58:18.976 DEBUG tokio-runtime-worker sync: State download is complete. Import is queued
+ 2024-09-11 08:58:19.140 INFO tokio-runtime-worker sync: State sync is complete (1 MiB), restarting block sync.
+ 2024-09-11 08:58:19.140 DEBUG tokio-runtime-worker sync: Starting from finalized state #16824
+ 2024-09-11 08:58:19.140 DEBUG tokio-runtime-worker sync: Restarted with 16824 (0xaad8…a292)
+ 2024-09-11 08:58:19.140 DEBUG tokio-runtime-worker sync: New peer 12D3KooWSGDsbNRjwzsakY93L4sg6YiQrEg7geNTpXRaqfaUkLyP with known best hash 0xbf4b…88c9 (16830).
+
+
+
+## Docker
+
+The node starts and immediately imports blocks.
+
+
+
+````
+2024-09-11 08:21:46 Subcoin Node
+2024-09-11 08:21:46 ✌️ version 0.1.0-9aa98a2348b
+2024-09-11 08:21:46 ❤️ by xuliuchengxlc@gmail.com, 2024-2024
+2024-09-11 08:21:46 📋 Chain specification: Bitcoin
+2024-09-11 08:21:46 🏷 Node name: merciful-island-3877
+2024-09-11 08:21:46 👤 Role: FULL
+2024-09-11 08:21:46 💾 Database: ParityDb at /root/.local/share/subcoin/chains/mainnet/paritydb/full
+2024-09-11 08:21:46 🔨 Initializing Genesis block/state (state: 0x5200…eebb, header-hash: 0xc3ec…52cc)
+2024-09-11 08:21:49 🏁 CPU score: 781.38 MiBs
+2024-09-11 08:21:49 🏁 Memory score: 9.03 GiBs
+2024-09-11 08:21:49 🏁 Disk score (seq. writes): 191.41 MiBs
+2024-09-11 08:21:49 🏁 Disk score (rand. writes): 69.87 MiBs
+2024-09-11 08:21:49 📦 Highest known block at #0
+2024-09-11 08:21:49 🏷 Local node identity is: 12D3KooWBDyKYMn53mJsqMvCxbzqhnzCgVFM4RXJFq3C6b59w52k
+2024-09-11 08:21:49 Running libp2p network backend
+2024-09-11 08:21:49 💻 Operating system: linux
+2024-09-11 08:21:49 💻 CPU architecture: x86_64
+2024-09-11 08:21:49 💻 Target environment: gnu
+2024-09-11 08:21:49 💻 CPU: Intel(R) Xeon(R) CPU E5-2686 v4 @ 2.30GHz
+2024-09-11 08:21:49 💻 CPU cores: 8
+2024-09-11 08:21:49 💻 Memory: 32094MB
+2024-09-11 08:21:49 💻 Kernel: 6.8.0-1012-aws
+2024-09-11 08:21:49 💻 Linux distribution: Ubuntu 22.04.4 LTS
+2024-09-11 08:21:49 💻 Virtual machine: yes
+2024-09-11 08:21:49 〽️ Prometheus exporter started at 127.0.0.1:9615
+2024-09-11 08:21:49 Running JSON-RPC server: addr=127.0.0.1:9944, allowed origins=["http://localhost:*", "http://127.0.0.1:*", "https://localhost:*", "https://127.0.0.1:*", "https://polkadot.js.org"]
+2024-09-11 08:21:49 🔊 Listening on 127.0.0.1:8333
+2024-09-11 08:21:53 🏆 Imported #1 (0xc3ec…52cc → 0xf209…0809)
+2024-09-11 08:21:53 🏆 Imported #2 (0xf209…0809 → 0xa06c…2604)
+2024-09-11 08:21:53 🏆 Imported #3 (0xa06c…2604 → 0x412a…00a6)
+2024-09-11 08:21:53 🏆 Imported #4 (0x412a…00a6 → 0xd951…9eda)
+2024-09-11 08:21:53 🏆 Imported #5 (0xd951…9eda → 0x2212…c9c6)
+2024-09-11 08:21:53 🏆 Imported #6 (0x2212…c9c6 → 0x2687…838b)
+2024-09-11 08:21:53 🏆 Imported #7 (0x2687…838b → 0x5eb9…6fad)
+2024-09-11 08:21:53 🏆 Imported #8 (0x5eb9…6fad → 0x5c57…dfff)
+2024-09-11 08:21:53 🏆 Imported #9 (0x5c57…dfff → 0xbea5…d100)
+2024-09-11 08:21:53 🏆 Imported #10 (0xbea5…d100 → 0x738f…19d6)
+````
+
+
+
+
+
+
+
diff --git a/evaluations/subxtpy.md b/evaluations/subxtpy.md
new file mode 100644
index 000000000..1b3feceff
--- /dev/null
+++ b/evaluations/subxtpy.md
@@ -0,0 +1,47 @@
+# Evaluation
+
+- **Status:** Accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/subxt-python.md
+- **Milestone:** 1
+
+**Deliverables**
+
+| Number | Deliverable | Accepted | Link | Notes
+| -----: |---------------------------|---------------------------|--------------------------------------------------------------------------------|---------------------------|
+| **0a.** | License | | [Apache 2.0](https://github.com/philoniare/subxtpy/blob/main/LICENSE.md) |
+| **0b.** | Documentation | | [Readme](https://github.com/philoniare/subxtpy/blob/main/README.md) | Nice docs!
+| **0c.** | Testing and Testing Guide | | [Tests folder](https://github.com/philoniare/subxtpy/tree/main/tests) | Tests all passing
+| 0e. | Article | | [Article](https://www.philoniare.com/blog/subxtpy) | Ok
+| 1. | Project Setup | | [README](https://github.com/philoniare/subxtpy/blob/main/README.md) | Ok
+| 2. | PyO3 Bindings | | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs) | Ok
+| 3. | Client Functionality | | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs) | Ok
+| 4. | Storage API | | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs#L143) | Ok
+| 5. | Extrinsics API | | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs#L292) | Ok
+| 6. | Error Handling | | [Source code](https://github.com/philoniare/subxtpy/blob/main/src/lib.rs) | Ok
+
+# General Notes
+
+Grantee resolved all issues, and the tool runs successfully when a local node is running. I was also able to complete all examples in the guide, and everything worked manually as well. Nice work!
+
+## Tests
+
+Unit tests all passing:
+
+```python
+================================================================== test session starts ==================================================================
+platform linux -- Python 3.8.10, pytest-8.3.2, pluggy-1.5.0
+rootdir: /home/ubuntu/subxtpy
+configfile: pyproject.toml
+plugins: asyncio-0.24.0
+asyncio: mode=strict, default_loop_scope=None
+collected 7 items
+
+tests/test_constants_dynamic.py . [ 14%]
+tests/test_events.py . [ 28%]
+tests/test_runtime_api_call.py . [ 42%]
+tests/test_storage_fetch_dynamic.py .. [ 71%]
+tests/test_storage_iterating_dynamic.py . [ 85%]
+tests/test_tx_basic.py . [100%]
+
+=================================================================== 7 passed in 0.14s ===================================================================
+```
diff --git a/evaluations/tuxedoDApp_1_piewol.md b/evaluations/tuxedoDApp_1_piewol.md
new file mode 100644
index 000000000..9712e4ac6
--- /dev/null
+++ b/evaluations/tuxedoDApp_1_piewol.md
@@ -0,0 +1,70 @@
+# Evaluation
+
+- **Status:** accepted
+- **Application Document:** [tuxedoDapp](https://github.com/w3f/Grants-Program/blob/master/applications/TuxedoDapp.md)
+- **Milestone:** 1
+- **Previously successfully merged evaluation:** All by PieWol
+
+| Number | Deliverable | Accepted | Link | Evaluation Notes |
+| ------ | ----------- | :------: | ---- |----------------- |
+| **0a.** | License | | [License file](https://github.com/mlabs-haskell/TuxedoDapp?tab=Apache-2.0-1-ov-file#readme) | Apache 2.0 |
+| **0b.** | Documentation | |[README](https://github.com/mlabs-haskell/TuxedoDapp/blob/master/README.md), [Demo wallet integration](https://www.loom.com/share/e1270ecea79a4689aff5732e8acfae14), [CLI-wallet - Demo part 1/3](https://youtu.be/Mom3BV_HozY), [CLI-wallet - Demo part 2/3](https://youtu.be/GfyiBW1XFW0), [CLI-wallet - Demo part 3/3](https://youtu.be/1T2oE0bfaCQ), [APIs spreadsheet](https://github.com/mlabs-haskell/TuxedoDapp/wiki/APIs-spreadsheet), [Build and run the project](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Build-and-run-the-project), [Frontend development libs](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Frontend-development-libs), [Game design](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Game-design), [Wireframes](https://github.com/mlabs-haskell/TuxedoDapp/wiki/Wireframes)| ok |
+| **0c.** | Testing and Testing Guide | | [CLI-Wallet test](https://github.com/mlabs-haskell/Tuxedo/blob/webservice-redeemer-gen-debug-with-lks/wardrobe/kitties/src/tests.rs) , [Tuxedo Template Wallet](https://github.com/mlabs-haskell/Tuxedo/blob/webservice-redeemer-gen-debug-with-lks/wallet/README.md) | see additional notes |
+| **0d.** | Article | | [Tuxedo DApp specification](https://docs.google.com/document/d/1dHsb_k3Xo5f4yFx802sMe22z6NYq3FeZc9l4bB0exMk/edit), [Talisman integration design](https://docs.google.com/presentation/d/1vsfJ5TYPXcvF4vmY7fHfM25lcNmZdjh6YfUyyoOzVAw/edit) | ok |
+| **0e.** | Docker | | [webservice-wallet](https://github.com/mlabs-haskell/Tuxedo/blob/webservice-redeemer-gen-debug-with-lks/webservice-wallet/Dockerfile) | works |
+| **0f.** | Frontend, CLI wallet and core | | [main DApp repo](https://github.com/mlabs-haskell/TuxedoDapp), [CLI Wallet and core repo](https://github.com/mlabs-haskell/Tuxedo) | see notes, frontend shows already purchased kitties still as "for sale". |
+
+
+## General Notes
+Thanks for providing the testing guide.
+
+1. Minting Kitties works
+2. Breeding Kitties works
+3. Listing a Kitty for purchase works
+4. Purchasing a kitty works
+
+There is one issue in the frontend as it shows Kitties that already have been bought still as "for sale" so the UI support you in creating a TX to buy this even though it has just been bought and is actually no longer for sale. These transactions fail and it doesn't change the owner again. This is actually part of milestone 2 and thus this milestone is accepted.
+
+
+
+## Testing
+webservice tests:
+``test result: ok. 30 passed``
+
+node tests failing:
+
+```
+failures:
+ service_handlers::block_handler::block_service_handler::tests::test_get_block_block_number_not_present_fail
+ service_handlers::block_handler::block_service_handler::tests::test_get_block_success
+ service_handlers::block_handler::block_service_handler::tests::test_get_genesis_block_success
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_breed_kitty
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_buy_kitty
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_create_kitty
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_create_kitty_fail_due_unknown_public_key
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_create_kitty_success
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_delist_kitty_from_sale
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_get_all_kitty_list
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_get_all_td_kitty_list
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_get_kitty_by_dna
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_get_owned_kitty_list
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_get_owned_td_kitty_list
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_get_td_kitty_by_dna
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_get_txn_and_inpututxolist_for_list_kitty_for_sale_success
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_list_kitty_for_sale
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_name_update
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_td_name_update
+ service_handlers::kitty_handler::kitty_service_handler::tests::test_td_price_update
+ service_handlers::money_handler::money_servicehandler::tests::test_get_all_coins
+ service_handlers::money_handler::money_servicehandler::tests::test_owned_coins
+
+test result: FAILED. 8 passed; 22 failed; 0 ignored; 0 measured; 0 filtered out; finished in 15.14s
+```
+
+
+
+## Documentation
+The API documentation is currently in an excel spreadsheet which makes for a very cluttered look. Not that this is your fault but excel doesn't seem to be a great tool for API documentation and management.
+
+## Article
+It would have been amazing if there were a short and high level overview of your work to be published on e.g. medium for the general community to read. This deliverable is accepted though as it wasn't specified in the agreement. The agreed upon items for this deliverable have been delivered.
\ No newline at end of file
diff --git a/evaluations/xcm-tools-follow-up_2_keeganquigley.md b/evaluations/xcm-tools-follow-up_2_keeganquigley.md
new file mode 100644
index 000000000..7955ff0a1
--- /dev/null
+++ b/evaluations/xcm-tools-follow-up_2_keeganquigley.md
@@ -0,0 +1,650 @@
+# Evaluation
+
+- **Status:** Accepted
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/xcm-tools-follow-up-2.md
+- **Milestone:** 1
+
+| Number | Deliverable | Accepted | Link | Evaluation Notes |
+|--------|---------|--------|-----------------------------------------------------------------------------|-------------------------|
+| 0a. | License | | https://github.com/gmajor-encrypt/xcm-tools/blob/main/LICENSE | Apache 2.0 |
+| 0b. | Documentation | | https://github.com/gmajor-encrypt/xcm-tools/blob/main/README.md | |
+| 0c. | Testing and Testing Guide | | https://github.com/gmajor-encrypt/xcm-tools#test | Unit tests all pass. |
+| 0d. | Docker | | https://github.com/gmajor-encrypt/xcm-tools/blob/main/Dockerfile | Docker tests are passing. |
+| 1. | Polkadot Kusama Message Send | | https://github.com/gmajor-encrypt/xcm-tools/blob/main/tx/tx.go#L167 | Good |
+| 2. | Message Tracking | | https://github.com/gmajor-encrypt/xcm-tools/blob/main/tracker/s2s.go | Good |
+| 3. | Ethereum Bridge update | | https://github.com/gmajor-encrypt/xcm-tools/blob/main/tracker/ethereum.go#L53-L55 | Good |
+| 4. | Cli support | | https://github.com/gmajor-encrypt/xcm-tools/blob/main/cmd/main.go | Good |
+
+# General Notes
+
+Thanks for the nice work as usual. Everything works as expected and the CLI tool is easy to use.
+
+~~The CLI commands all work and I am able to run the examples, but the success message isn't matching the send type in some instances.~~
+
+EDIT: Issue is resolved and success messages are all correct now:
+
+```go
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ # UMP
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ go run . send UMP --dest 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d --amount 10 --keyring 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a --endpoint wss://rococo-asset-hub-rpc.polkadot.io
+
+2024/09/05 22:08:22 send UMP message success, tx hash: 0xb29b244f0de3dc8e34cff6174bcd29dfe78785abfe0dd24d2c4beff404dbdc09
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ # DMP
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ go run . send DMP --dest 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d --amount 10 --keyring 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a --endpoint wss://rococo-rpc.polkadot.io --paraId 1000
+2024/09/05 22:08:33 send DMP message success, tx hash: 0x374db4e34f2ce1f3fe6545e78b76827356f7d99951f7bace31a86160a9214671
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ # HRMP
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ go run . send HRMP --dest 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d --amount 10 --keyring 0xe5be9a5092b81bca64be81d212e7f2f9eba183bb7a90954f7b76361f6edb5c0a --endpoint wss://rococo-asset-hub-rpc.polkadot.io --paraId 2087
+2024/09/05 22:08:45 send HRMP message success, tx hash: 0xfa8a598eb99a339132d83d61b545c74e68df08d986593da5abb6fd4fc6c8a14c
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ # Send bridge message(polkadot to ethereum)
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ go run . send EthBridge --dest 0x6EB228b7ab726b8B44892e8e273ACF3dcC9C0492 --amount 10 --keyring 0xc0417c253312107d808921fb1dd3b740b64e99794dca74bcc550179f7c42a255 --endpoint wss://rococo-asset-hub-rpc.polkadot.io --contract 0xfff9976782d46cc05630d1f6ebab18b2324d6b14 --chainId 11155111
+2024/09/05 22:08:56 send EthBridge message success, tx hash: 0x5d02ea5a6dd897675133028f9927d723016ee871e80fdca8e3f15efb0a14b322
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ # Send S2S message(polkadot to kusama)
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ go run . send S2SBridge --paraId 1000 --destChain westend --dest 0xd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d --amount 10 --keyring 0xc0417c253312107d808921fb1dd3b740b64e99794dca74bcc550179f7c42a255 --endpoint wss://rococo-asset-hub-rpc.polkadot.io
+2024/09/05 22:09:07 send S2SBridge message success, tx hash: 0x4df506aa3f85208855fceb910e83758b6e62d450457c96b703d1d245bc95ef8d
+```
+
+Help screen works:
+
+```go
+ubuntu@ip-172-31-22-192:~/xcm-tools/cmd$ go run . -h
+NAME:
+ Xcm tools - Xcm tools
+
+USAGE:
+ cmd [global options] command [command options] [arguments...]
+
+COMMANDS:
+ send send xcm message
+ parse parse xcm message
+ tracker tracker xcm message transaction
+ trackerEthBridge tracker snowBridge message transaction
+ trackerS2SBridge tracker polkadot bridge message transaction
+ help, h Shows a list of commands or help for one command
+
+GLOBAL OPTIONS:
+ --help, -h show help
+```
+Go build works:
+
+```go
+ubuntu@ip-172-31-28-63:~$ go install github.com/gmajor-encrypt/xcm-tools/cmd@latest
+go: downloading github.com/gmajor-encrypt/xcm-tools v0.1.0
+go: downloading github.com/itering/scale.go v1.7.2
+go: downloading github.com/shopspring/decimal v1.3.1
+go: downloading github.com/urfave/cli v1.22.14
+go: downloading github.com/itering/substrate-api-rpc v0.6.1
+go: downloading github.com/cpuguy83/go-md2man/v2 v2.0.2
+go: downloading golang.org/x/crypto v0.12.0
+go: downloading github.com/huandu/xstrings v1.4.0
+go: downloading github.com/gorilla/websocket v1.4.2
+go: downloading github.com/jpillora/backoff v1.0.0
+go: downloading github.com/ChainSafe/go-schnorrkel v1.0.0
+go: downloading github.com/russross/blackfriday/v2 v2.1.0
+go: downloading golang.org/x/sys v0.11.0
+go: downloading github.com/pierrec/xxHash v0.1.5
+go: downloading github.com/cosmos/go-bip39 v0.0.0-20180819234021-555e2067c45d
+go: downloading github.com/gtank/merlin v0.1.1-0.20191105220539-8318aed1a79f
+go: downloading github.com/gtank/ristretto255 v0.1.2
+go: downloading github.com/mimoo/StrobeGo v0.0.0-20181016162300-f8f6d4d2b643
+```
+Docker build works:
+
+
+ Output
+
+```go
+ubuntu@ip-172-31-22-192:~/xcm-tools$ docker build -f Dockerfile-build -t xcm-tools .
+[+] Building 33.3s (10/10) FINISHED docker:default
+ => [internal] load build definition from Dockerfile-build 0.0s
+ => => transferring dockerfile: 174B 0.0s
+ => [internal] load metadata for docker.io/library/golang:1.21 1.2s
+ => [internal] load .dockerignore 0.0s
+ => => transferring context: 2B 0.0s
+ => [1/5] FROM docker.io/library/golang:1.21@sha256:4746d26432a9117a5f58e95cb9f954ddf0de128e9d5816886514199316e4a2fb 12.5s
+ => => resolve docker.io/library/golang:1.21@sha256:4746d26432a9117a5f58e95cb9f954ddf0de128e9d5816886514199316e4a2fb 0.0s
+ => => sha256:246ea1ed9cdb1164bb5cb7e1f45d7914b98c6d9418c8e1cc443105e820bbd9d1 2.82kB / 2.82kB 0.0s
+ => => sha256:4746d26432a9117a5f58e95cb9f954ddf0de128e9d5816886514199316e4a2fb 9.75kB / 9.75kB 0.0s
+ => => sha256:e6ba96dde4af9f4e06caba475fa65e94e4c54fe4aa3e9f4f504c02178eb8934e 2.32kB / 2.32kB 0.0s
+ => => sha256:6ed93aa58a52c9abc1ee472f1ac74b73d3adcccc2c30744498fd5f14f3f5d22c 64.14MB / 64.14MB 2.5s
+ => => sha256:903681d87777d28dc56866a07a2774c3fd5bf65fd734b24c9d0ecd9a13c9f636 49.55MB / 49.55MB 1.3s
+ => => sha256:3cbbe86a28c2f6b3c3e0e8c6dcfba369e1ea656cf8daf69be789e0fe2105982b 24.05MB / 24.05MB 0.8s
+ => => sha256:1f46bd02dde39f0741d70614fc607bf03c1a0cd60d52e7dd06c44f8fb9358709 92.23MB / 92.23MB 2.6s
+ => => sha256:54bf7053e2d96c2c7f4637ad7580bd64345b3c9fabb163e1fdb8894aea8a9af0 67.01MB / 67.01MB 3.1s
+ => => extracting sha256:903681d87777d28dc56866a07a2774c3fd5bf65fd734b24c9d0ecd9a13c9f636 2.1s
+ => => sha256:532d43a0bc41875119c835fd75616e87d5df2a3714ddea3a0b5a68c7c5982649 126B / 126B 2.8s
+ => => sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 32B / 32B 2.8s
+ => => extracting sha256:3cbbe86a28c2f6b3c3e0e8c6dcfba369e1ea656cf8daf69be789e0fe2105982b 0.5s
+ => => extracting sha256:6ed93aa58a52c9abc1ee472f1ac74b73d3adcccc2c30744498fd5f14f3f5d22c 2.0s
+ => => extracting sha256:1f46bd02dde39f0741d70614fc607bf03c1a0cd60d52e7dd06c44f8fb9358709 2.0s
+ => => extracting sha256:54bf7053e2d96c2c7f4637ad7580bd64345b3c9fabb163e1fdb8894aea8a9af0 3.6s
+ => => extracting sha256:532d43a0bc41875119c835fd75616e87d5df2a3714ddea3a0b5a68c7c5982649 0.0s
+ => => extracting sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 0.0s
+ => [internal] load build context 0.1s
+ => => transferring context: 401.68kB 0.0s
+ => [2/5] WORKDIR app 6.1s
+ => [3/5] COPY . . 0.1s
+ => [4/5] RUN go mod download 1.1s
+ => [5/5] RUN cd cmd && go build -o xcm-tools . 11.5s
+ => exporting to image 0.7s
+ => => exporting layers 0.6s
+ => => writing image sha256:9a9b41326e4e0b5ffc4a9b065e23bacbb1848fc35e29a8c73dfc72f6aac66979 0.0s
+ => => naming to docker.io/library/xcm-tools 0.0s
+
+ 1 warning found (use docker --debug to expand):
+ - WorkdirRelativePath: Relative workdir "app" can have unexpected results if the base image changes (line 3)
+ubuntu@ip-172-31-22-192:~/xcm-tools$ docker run -it xcm-tools -h
+NAME:
+ Xcm tools - Xcm tools
+
+USAGE:
+ xcm-tools [global options] command [command options] [arguments...]
+
+COMMANDS:
+ send send xcm message
+ parse parse xcm message
+ tracker tracker xcm message transaction
+ trackerEthBridge tracker snowBridge message transaction
+ trackerS2SBridge tracker polkadot bridge message transaction
+ help, h Shows a list of commands or help for one command
+
+GLOBAL OPTIONS:
+ --help, -h show help
+ubuntu@ip-172-31-22-192:~/xcm-tools$
+```
+
+
+## Testing
+
+Unit tests all pass:
+
+
+ Output
+
+```go
+ubuntu@ip-172-31-22-192:~/xcm-tools$ go test -v ./...
+go: downloading github.com/itering/scale.go v1.9.4
+go: downloading github.com/itering/substrate-api-rpc v0.7.2
+go: downloading github.com/stretchr/testify v1.8.4
+go: downloading github.com/shopspring/decimal v1.4.0
+go: downloading golang.org/x/crypto v0.26.0
+go: downloading github.com/huandu/xstrings v1.5.0
+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.1
+go: downloading golang.org/x/sys v0.24.0
+=== RUN Test_Cli
+--- PASS: Test_Cli (0.00s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/cmd 0.018s
+? github.com/gmajor-encrypt/xcm-tools/example [no test files]
+=== RUN TestParseXcmMessageInstruction
+--- PASS: TestParseXcmMessageInstruction (11.03s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/parse 11.051s
+=== RUN Test_getEventsFromChain
+--- PASS: Test_getEventsFromChain (11.05s)
+=== RUN Test_getEvents
+--- PASS: Test_getEvents (10.85s)
+=== RUN Test_findEventByEventId
+--- PASS: Test_findEventByEventId (0.00s)
+=== RUN Test_getExtrinsics
+--- PASS: Test_getExtrinsics (10.88s)
+=== RUN Test_getExtrinsicByIndex
+--- PASS: Test_getExtrinsicByIndex (10.81s)
+=== RUN Test_Enum
+--- PASS: Test_Enum (0.00s)
+=== RUN TestHRMPWatermark
+--- PASS: TestHRMPWatermark (10.83s)
+=== RUN TestParasInfo
+--- PASS: TestParasInfo (10.54s)
+=== RUN Test_TrackTx
+2024/09/04 20:38:13 Start track xcm message with ExtrinsicIndex: 4310901-13 Protocol: UMP OriginEndpoint: wss://moonbeam-rpc.dwellir.com DestEndpoint: wss://polkadot-rpc.dwellir.com RelayEndpoint:
+2024/09/04 20:38:28 Find messageHash 0xf053b9f150fbff79347bb6ed438e9cdf20083b7dbfa203078e9648b5bbfaa902
+2024/09/04 20:38:28 Find messageRaw 0x0310000400000000079e2d3d47280a1300000000079e2d3d4728010300286bee020010000d010204000101003628971d6b91628910aceeed80f922a1c539fa6bb201733d464b883acdd81b33
+2024/09/04 20:38:28 Find messageId
+2024/09/04 20:38:28 Find nextBlock Hash 0xebaa16b5cc4c53595acb541ea46fdf9d6625f00ea335e91c53391d13cb599f36
+2024/09/04 20:38:28 Find relayChainBlockNum 17040495
+2024/09/04 20:38:34 Find relaychain blockHash 0xa3da6bce0cdd659254c9e476e17e7ffbe31f5dd537d255e5bd1bf7625ab194c7
+2024/09/04 20:38:41 Get relaychain events with blockHash 0xa3da6bce0cdd659254c9e476e17e7ffbe31f5dd537d255e5bd1bf7625ab194c7
+2024/09/04 20:38:41 Get relaychain events with blockHash 0xbb2fccd25e9377f00387f67f68c4ef42d2b343f2596b2077659acf66090110a2
+2024/09/04 20:38:41 Find UMP messageHash 0xf053b9f150fbff79347bb6ed438e9cdf20083b7dbfa203078e9648b5bbfaa902, result true
+2024/09/04 20:38:41 Start track xcm message with ExtrinsicIndex: 17053966-2 Protocol: DMP OriginEndpoint: wss://polkadot-rpc.dwellir.com DestEndpoint: wss://moonbeam-rpc.dwellir.com RelayEndpoint:
+2024/09/04 20:38:57 Find destParaId 2004
+2024/09/04 20:38:57 Find messageHash 0x99f8179f1a3ca331998e7369ced93ac187036f287dcd3d015f3bcc585df92fa4
+2024/09/04 20:38:57 Find 17053967 nextBlockHash,start fetch PendingAvailability 0x408b3ed597e1f031377173550dfed5f011871e6cb7fcc90f704d8d017ba5e394
+2024/09/04 20:38:57 Find 17053968 nextBlockHash,start fetch PendingAvailability 0x36883a138cdfa7d5fe54c39bd20c37da07dec760c0b2d7d9c7017a9b517f280a
+2024/09/04 20:38:57 Get para block hash 0x51fdbefe8935a94153f14487b392d13d3b084a5059c0123263bc81c3ffa5ac72
+2024/09/04 20:39:08 Find DMP messageHash 0x99f8179f1a3ca331998e7369ced93ac187036f287dcd3d015f3bcc585df92fa4, process true
+2024/09/04 20:39:08 Start track xcm message with ExtrinsicIndex: 4325642-7 Protocol: HRMP OriginEndpoint: wss://astar-rpc.dwellir.com DestEndpoint: wss://rpc.hydradx.cloud RelayEndpoint: wss://polkadot-rpc.dwellir.com
+2024/09/04 20:39:27 Find messageHash 0x5d81466ae4b2d9fb1fd140cd690bb25276b0bfafabecd62840c67e0b062c8181
+2024/09/04 20:39:27 Find messageRaw 0310010400010100591f001700004c7809ca2f266c0a1300010100591f001700004c7809ca2f266c010300286bee020010000d01020400010100ceba54427482d5deaf3d4e2560d37d90c8b5ffc0210ea29591c153f1d0c90b0d
+2024/09/04 20:39:27 Get NextBlockHash 0x6af502c85ce4ffe3ab209236f1aeb6a80412380c6c60bab75165814eee58455a
+2024/09/04 20:39:27 Get RelayChainBlockNum 17053838
+2024/09/04 20:39:38 Get NextBlockHash 0x4d0cb9bad6e0a0df33d13ae766bbe81d270b98e08f084a5f4f9b6896e94025f7
+2024/09/04 20:39:38 Find nextBlockHash 0xd832025ae75194503537c9ec570e8972b249ed70fba238d6a2949e819c0586e7, block num 17053840,start fetch PendingAvailability
+2024/09/04 20:39:38 Get para block hash 0x145889077928c1078ac2a3e0be7b7c88d1bb1547d513ec5e3773d56a4d3516ca
+2024/09/04 20:39:49 start check block 0x145889077928c1078ac2a3e0be7b7c88d1bb1547d513ec5e3773d56a4d3516ca
+2024/09/04 20:39:49 Find HRMP messageHash 0x5d81466ae4b2d9fb1fd140cd690bb25276b0bfafabecd62840c67e0b062c8181, result Success
+--- PASS: Test_TrackTx (96.51s)
+=== RUN TestTrackBridgeMessage
+2024/09/04 20:39:49 Get ethereum message Id 0xc2e41ff7cfa5d7dff27d12965462da470c1dbb1b955da7a68e29e83f092d1d22 timestamp 1708654032 blockNum 5344483
+2024/09/04 20:39:50 Start crawl block num 2540323
+2024/09/04 20:39:51 Find bridge message has process in extrinsic index 2542078-2,event index 2542078-7
+2024/09/04 20:40:05 Find messageHash 0x91f9e0859a42e75dd6af502c082e2ede7731a55b7250cc62f82e2093be6a8ce2
+2024/09/04 20:40:05 Find messageRaw 03140004000100000b2037c77c800213000100000b2037c77c80020016040d010204010100a10f26079edaa802001400040000010300fff9976782d46cc05630d1f6ebab18b2324d6b14000300286bee0a130000010300fff9976782d46cc05630d1f6ebab18b2324d6b14000300286bee000d0102040001030010408b64fcd163439eb015650916a43d23b95b5d2c82c1df72f95ee1a2f939e3663a5eed261c1a5918a5b20ff3700ad5e9fdb9300a2c5b207fd02a588372f7d1e170c1bedf031eb58a118dc12d9917143fc76efd7f3c
+2024/09/04 20:40:05 Get NextBlockHash 0x40c2a31cb3bcbafa89a5cd70f87e7339cbe901e086eab9d7152651547d8336f6
+2024/09/04 20:40:05 Get RelayChainBlockNum 9339562
+2024/09/04 20:40:20 Get NextBlockHash 0x6010ab32c653c7cbd7ba95de54f813aab6aa18b7bbcca9b2dd2deaf8e9c2f187
+2024/09/04 20:40:20 Find nextBlockHash 0xcfb13b2405a7e777550888442aa0220bec0af4349dd0980b5a01396d55036c74, block num 9339564,start fetch PendingAvailability
+2024/09/04 20:40:20 Find nextBlockHash 0x3f622605891bfed0a0218c9e5a5531e7ffa3618123b3219b13c2245ab82a05fd, block num 9339565,start fetch PendingAvailability
+2024/09/04 20:40:21 Get para block hash 0xd09f3ec7e029dc3ca5b8309a295952e8aec5a59ba178b9c01ce055e9c7f48b60
+2024/09/04 20:40:34 start check block 0xd09f3ec7e029dc3ca5b8309a295952e8aec5a59ba178b9c01ce055e9c7f48b60
+2024/09/04 20:40:34 start check block 0xddb9cf29f11185677b155e70a1e1bd151ae9c55d8e8b1691cd428dcbcfa4d605
+2024/09/04 20:40:34 Find Message messageid 0x82c1df72f95ee1a2f939e3663a5eed261c1a5918a5b20ff3700ad5e9fdb9300a
+2024/09/04 20:40:34 Get etherStartBlockNum 0
+2024/09/04 20:40:34 Find bridge message have process in 5364918 0x1435866e5c320adac9fed7827934ce6c34f28bf6cc2b5fae1ab3f5512fd0db76
+--- PASS: TestTrackBridgeMessage (45.70s)
+=== RUN TestTrackS2sBridgeMessage
+2024/09/04 20:40:45 Find messageHash 0x56c6f4450b3b0c14adb7727d51ca61067a99b7b1c8ef993fd037039d61ac056c
+2024/09/04 20:40:45 Find messageRaw 031400040001000007521e91f615130001000007521e91f6150016040d010204010100a10f26040100a10f140104000201090500040a1300020109050004000d01020400010100d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d2c11e1c09b4f6aece0bfa6c1678faf192b6808540c97a6855230f8af3e2eb835282c9cda4757a21cf60d57b4108946d3e0a961d4026cb29ab248b51858cfbe59e386
+2024/09/04 20:40:45 Get NextBlockHash 0x85a95c0c03515dc542147334e448147612fdfe9c08f6386609eb1921e1d04b64
+2024/09/04 20:40:45 Get RelayChainBlockNum 11726101
+2024/09/04 20:40:56 Get NextBlockHash 0x0b3fd48217f4198cf239e4027db7cabc65236d0fe4ef8999913fc7670bf3d11b
+2024/09/04 20:40:56 Find nextBlockHash 0x4817f512a83f7aa57bcc888808eef3fe0e88c218c720d21ed95057b470a3043c, block num 11726103,start fetch PendingAvailability
+2024/09/04 20:40:56 Get para block hash 0xc7ce137d3cef8368373fc7e2580d520b95b6386cc65e3a9faf40e773e2b4bff0
+2024/09/04 20:41:07 start check block 0xc7ce137d3cef8368373fc7e2580d520b95b6386cc65e3a9faf40e773e2b4bff0
+2024/09/04 20:41:07 start check block 0x580183c711beee0ea6088294c78b42ba7471208019371cbbe4087f145f39b54e
+2024/09/04 20:41:07 start check block 0x332184c37060ffaa3986cd142354bc8c34dc06146ee65608d4533169b389e37d
+2024/09/04 20:41:12 found destBridgeHeaderHash 0x315c4f176ead8620140d90af90991092fd401644509a899290fdd240d08cfd54
+nextHash 0xa9bb3eb51ca25537898025f689fa5c575e09c7c55589404128509107f78cda46
+2024/09/04 20:41:23 start check block 0 0x315c4f176ead8620140d90af90991092fd401644509a899290fdd240d08cfd54
+2024/09/04 20:41:23 start check block 4856648 0x545a74794a445a0d6be151e43b7b0479a82d274866782bd27d30ce030e124efd
+2024/09/04 20:41:23 start check block 4856649 0xf8bb9a8bafc9f51faa2841478ea30f1d01d15889082e6327f748a6005d9dc3cd
+2024/09/04 20:41:23 start check block 4856650 0x2fb3d3e7e8aaf1e3bd1b0eb922e995188bd10d5145d66ff1b986666acf44e826
+2024/09/04 20:41:23 start check block 4856651 0x1dc2b26c52a9c16ea2c5f0791f818a2518455d4004bd60165053076f0189c3ce
+2024/09/04 20:41:23 start check block 4856652 0xf684e584e43d064efc3a03f7eb5e7f7ead56e4352f0f73c5b90849cf32a3ec29
+2024/09/04 20:41:23 start check block 4856653 0x1999638d06151e4841627ad13323102601c75f338f243fdd68b234fc448dc8e2
+2024/09/04 20:41:23 start check block 4856654 0x2d7cbc504978ad1bb7117de4a291fc1d307de70ac60a55219eeb4ff708b6afcc
+2024/09/04 20:41:23 start check block 4856655 0xffd538bb336c9ae81e01e0f991e45c1d6b79a58ea6c3d251e4a3fe6f21d71817
+2024/09/04 20:41:23 start check block 4856656 0x64105cef05b0902e81f39a24c9b8ecdad90f5b7af8bf2f7bd07168866cde20dc
+2024/09/04 20:41:23 start check block 4856657 0xdb5e5c33101b200faa0c7d0a4e071276eae91cb4d7ac15740a6c5795d27f8b56
+2024/09/04 20:41:23 start check block 4856658 0xfab0bd1245b8b8d520723abed4e1423f50b1aa1be6e8ccd067170c131e1666e5
+2024/09/04 20:41:24 start check block 4856659 0x23404a5736da0f35d27b4e2df8f9bcad5158a5759fb2b941c8cba56b1f8d73bd
+2024/09/04 20:41:24 start check block 4856660 0x3deddd67f289a613b7e9248acaeb6630e42e8acc54b4d62fbf838e5d728acf26
+2024/09/04 20:41:24 start check block 4856661 0x0666fd3ab1773e167469e9752d3f221b13c10db2b9a3615082486886b19b269a
+2024/09/04 20:41:24 start check block 4856662 0xb9d5a2682172b6cf2ae9655a69a4923b15c214b04fcdc14867bae1b573dcaf3c
+2024/09/04 20:41:24 start check block 4856663 0xf4fae271ffd733097baa05dd34bc842c2ce2bda938e98eecec89b8e8359db71f
+2024/09/04 20:41:24 start check block 4856664 0x445110d15476548ecf6a0a3337953a82f1c4adbe1131b59dd541a6ba0d83878b
+2024/09/04 20:41:24 start check block 4856665 0x0b577c3bfa64d0b228b69fed566bfceccafc6f38be9129c382f4ef0b1c9e2e44
+2024/09/04 20:41:24 start check block 4856666 0xdfdcf77a95a6d215167b2e2fd798489a2f6817566b7a9cc95598e9c73ad2d180
+2024/09/04 20:41:24 found destChainExtrinsicIndex: 4856666-2
+2024/09/04 20:41:35 Find messageHash 0x15f220e89ffad54c7e07a1f6e22f441679da3d6516a10995c50f82bb0fef426a
+2024/09/04 20:41:35 Find messageRaw 03200b01042c2509050b0100a10f0104000201090500040a1300020109050004000d01020400010100d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d2c11e1c09b4f6aece0bfa6c1678faf192b6808540c97a6855230f8af3e2eb83528
+2024/09/04 20:41:35 Get NextBlockHash 0x643aa1426b7052b42ea2e407a9774a3eba0dbc5310ddf46e1742ff5256ce072e
+2024/09/04 20:41:35 Get RelayChainBlockNum 22099307
+2024/09/04 20:41:46 Get NextBlockHash 0x6ed50b2530e5a24b3a7fcb151f3ff80562ff7de7f3e4a323e87d3c515d6e4516
+2024/09/04 20:41:46 Find nextBlockHash 0x9e6f11c092aecd67266c59c6d69469bf3faf3764128d74df5d3e860401bb24ab, block num 22099309,start fetch PendingAvailability
+2024/09/04 20:41:46 Get para block hash 0x3b9832e69b55ed337791f7300853f1ff839a01eb71ad9c4cabbbb47ed0710e32
+2024/09/04 20:41:57 start check block 0x3b9832e69b55ed337791f7300853f1ff839a01eb71ad9c4cabbbb47ed0710e32
+2024/09/04 20:41:57 start check block 0x08bddd944d9020d45d6fa705e08f029da990761399a861a85e17fdb57b53c580
+2024/09/04 20:41:57 start check block 0xa55431ad7c77a0ffce2ed88096d4c4b9dc68bf56f54b6af958cdfd775fa4de95
+2024/09/04 20:41:57 Find HRMP messageHash 0x15f220e89ffad54c7e07a1f6e22f441679da3d6516a10995c50f82bb0fef426a,messageId 0x11e1c09b4f6aece0bfa6c1678faf192b6808540c97a6855230f8af3e2eb83528 result false
+--- PASS: TestTrackS2sBridgeMessage (82.06s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/tracker 289.248s
+=== RUN Test_Dmp_func
+=== RUN Test_Dmp_func/LimitedReserveTransferAssets
+=== RUN Test_Dmp_func/ReserveTransferAssets
+=== RUN Test_Dmp_func/LimitedTeleportAssets
+=== RUN Test_Dmp_func/TeleportAssets
+=== RUN Test_Dmp_func/Send
+--- PASS: Test_Dmp_func (0.00s)
+ --- PASS: Test_Dmp_func/LimitedReserveTransferAssets (0.00s)
+ --- PASS: Test_Dmp_func/ReserveTransferAssets (0.00s)
+ --- PASS: Test_Dmp_func/LimitedTeleportAssets (0.00s)
+ --- PASS: Test_Dmp_func/TeleportAssets (0.00s)
+ --- PASS: Test_Dmp_func/Send (0.00s)
+=== RUN Test_HRMP_func
+=== RUN Test_HRMP_func/LimitedReserveTransferAssets
+=== RUN Test_HRMP_func/ReserveTransferAssets
+=== RUN Test_HRMP_func/LimitedTeleportAssets
+=== RUN Test_HRMP_func/TeleportAssets
+=== RUN Test_HRMP_func/Send
+=== RUN Test_HRMP_func/ReserveTransfer
+--- PASS: Test_HRMP_func (0.00s)
+ --- PASS: Test_HRMP_func/LimitedReserveTransferAssets (0.00s)
+ --- PASS: Test_HRMP_func/ReserveTransferAssets (0.00s)
+ --- PASS: Test_HRMP_func/LimitedTeleportAssets (0.00s)
+ --- PASS: Test_HRMP_func/TeleportAssets (0.00s)
+ --- PASS: Test_HRMP_func/Send (0.00s)
+ --- PASS: Test_HRMP_func/ReserveTransfer (0.00s)
+=== RUN Test_ConvertMultiLocationAccountId32
+--- PASS: Test_ConvertMultiLocationAccountId32 (0.00s)
+=== RUN Test_SimplifyMultiLocationParaId
+--- PASS: Test_SimplifyMultiLocationParaId (0.00s)
+=== RUN Test_SimplifyMultiLocationRelayChain
+--- PASS: Test_SimplifyMultiLocationRelayChain (0.00s)
+=== RUN Test_SimplifyMultiAssets
+--- PASS: Test_SimplifyMultiAssets (0.00s)
+=== RUN Test_Client
+--- PASS: Test_Client (10.93s)
+=== RUN TestXcmTransfer
+=== RUN TestXcmTransfer/Test_XCM_Ump_Transfer
+=== RUN TestXcmTransfer/Test_XCM_HRMP_Send
+--- PASS: TestXcmTransfer (10.85s)
+ --- PASS: TestXcmTransfer/Test_XCM_Ump_Transfer (0.09s)
+ --- PASS: TestXcmTransfer/Test_XCM_HRMP_Send (0.09s)
+=== RUN TestDmpTransfer
+=== RUN TestDmpTransfer/Test_XCM_Dmp_Transfer
+--- PASS: TestDmpTransfer (10.92s)
+ --- PASS: TestDmpTransfer/Test_XCM_Dmp_Transfer (0.08s)
+=== RUN TestPolkadotToEthereum
+=== RUN TestPolkadotToEthereum/Test_XCM_To_Ethereum
+--- PASS: TestPolkadotToEthereum (10.72s)
+ --- PASS: TestPolkadotToEthereum/Test_XCM_To_Ethereum (0.09s)
+=== RUN TestRococoToWestend
+=== RUN TestRococoToWestend/TestRococoToWestend
+--- PASS: TestRococoToWestend (10.66s)
+ --- PASS: TestRococoToWestend/TestRococoToWestend (0.06s)
+=== RUN Test_Ump_func
+=== RUN Test_Ump_func/LimitedReserveTransferAssets
+=== RUN Test_Ump_func/ReserveTransferAssets
+=== RUN Test_Ump_func/LimitedTeleportAssets
+=== RUN Test_Ump_func/TeleportAssets
+=== RUN Test_Ump_func/Send
+--- PASS: Test_Ump_func (0.00s)
+ --- PASS: Test_Ump_func/LimitedReserveTransferAssets (0.00s)
+ --- PASS: Test_Ump_func/ReserveTransferAssets (0.00s)
+ --- PASS: Test_Ump_func/LimitedTeleportAssets (0.00s)
+ --- PASS: Test_Ump_func/TeleportAssets (0.00s)
+ --- PASS: Test_Ump_func/Send (0.00s)
+=== RUN TestXcmSend
+=== RUN TestXcmSend/Test_XCM_Ump_Send
+=== RUN TestXcmSend/Test_XCM_HRMP_Send
+--- PASS: TestXcmSend (22.03s)
+ --- PASS: TestXcmSend/Test_XCM_Ump_Send (5.38s)
+ --- PASS: TestXcmSend/Test_XCM_HRMP_Send (6.02s)
+=== RUN Test_XCM_Dmp_Send
+--- PASS: Test_XCM_Dmp_Send (11.96s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/tx 88.092s
+=== RUN Test_EtherApi
+=== RUN Test_EtherApi/Test_EthGetTransactionByHash
+=== RUN Test_EtherApi/Test_EthGetTransactionReceipt
+=== RUN Test_EtherApi/Test_EthGetBlockByNum
+=== RUN Test_EtherApi/TestEtherscanGetLogs
+--- PASS: Test_EtherApi (6.01s)
+ --- PASS: Test_EtherApi/Test_EthGetTransactionByHash (0.32s)
+ --- PASS: Test_EtherApi/Test_EthGetTransactionReceipt (0.26s)
+ --- PASS: Test_EtherApi/Test_EthGetBlockByNum (2.30s)
+ --- PASS: Test_EtherApi/TestEtherscanGetLogs (0.13s)
+=== RUN Test_SubscanGetBlockByTime
+--- PASS: Test_SubscanGetBlockByTime (1.58s)
+=== RUN TestSubscanGetEvents
+--- PASS: TestSubscanGetEvents (1.19s)
+=== RUN Test_ToInt
+--- PASS: Test_ToInt (0.00s)
+=== RUN Test_HexToUint64
+--- PASS: Test_HexToUint64 (0.00s)
+=== RUN Test_ToUint
+--- PASS: Test_ToUint (0.00s)
+=== RUN Test_InSlice
+--- PASS: Test_InSlice (0.00s)
+=== RUN Test_AnyToInt
+--- PASS: Test_AnyToInt (0.00s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/util 8.779s
+```
+
+
+Docker unit tests also build and pass:
+
+
+ Output
+
+```go
+ubuntu@ip-172-31-22-192:~/xcm-tools$ docker build -t xcm-tools-test .
+[+] Building 1.0s (9/9) FINISHED docker:default
+ => [internal] load build definition from Dockerfile 0.0s
+ => => transferring dockerfile: 119B 0.0s
+ => [internal] load metadata for docker.io/library/golang:1.21 0.7s
+ => [internal] load .dockerignore 0.0s
+ => => transferring context: 2B 0.0s
+ => [1/4] FROM docker.io/library/golang:1.21@sha256:4746d26432a9117a5f58e95cb9f954ddf0de128e9d5816886514199316e4a2fb 0.0s
+ => [internal] load build context 0.1s
+ => => transferring context: 3.96kB 0.0s
+ => CACHED [2/4] WORKDIR app 0.0s
+ => CACHED [3/4] COPY . . 0.0s
+ => CACHED [4/4] RUN go mod download 0.0s
+ => exporting to image 0.0s
+ => => exporting layers 0.0s
+ => => writing image sha256:b8c224d391cdf8cca16e2c8b17178f4409c5ecc101f717edfb4a3238bb8e3db5 0.0s
+ => => naming to docker.io/library/xcm-tools-test 0.0s
+
+ 2 warnings found (use docker --debug to expand):
+ - WorkdirRelativePath: Relative workdir "app" can have unexpected results if the base image changes (line 3)
+ - JSONArgsRecommended: JSON arguments recommended for CMD to prevent unintended behavior related to OS signals (line 9)
+ubuntu@ip-172-31-22-192:~/xcm-tools$ docker run -it --rm xcm-tools-test
+? github.com/gmajor-encrypt/xcm-tools/example [no test files]
+=== RUN Test_Cli
+--- PASS: Test_Cli (0.01s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/cmd 0.038s
+=== RUN TestParseXcmMessageInstruction
+--- PASS: TestParseXcmMessageInstruction (10.93s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/parse 10.973s
+=== RUN Test_getEventsFromChain
+--- PASS: Test_getEventsFromChain (10.93s)
+=== RUN Test_getEvents
+--- PASS: Test_getEvents (10.84s)
+=== RUN Test_findEventByEventId
+--- PASS: Test_findEventByEventId (0.00s)
+=== RUN Test_getExtrinsics
+--- PASS: Test_getExtrinsics (10.83s)
+=== RUN Test_getExtrinsicByIndex
+--- PASS: Test_getExtrinsicByIndex (10.77s)
+=== RUN Test_Enum
+--- PASS: Test_Enum (0.00s)
+=== RUN TestHRMPWatermark
+--- PASS: TestHRMPWatermark (10.80s)
+=== RUN TestParasInfo
+--- PASS: TestParasInfo (10.54s)
+=== RUN Test_TrackTx
+2024/09/04 20:51:37 Start track xcm message with ExtrinsicIndex: 4310901-13 Protocol: UMP OriginEndpoint: wss://moonbeam-rpc.dwellir.com DestEndpoint: wss://polkadot-rpc.dwellir.com RelayEndpoint:
+2024/09/04 20:51:53 Find messageHash 0xf053b9f150fbff79347bb6ed438e9cdf20083b7dbfa203078e9648b5bbfaa902
+2024/09/04 20:51:53 Find messageRaw 0x0310000400000000079e2d3d47280a1300000000079e2d3d4728010300286bee020010000d010204000101003628971d6b91628910aceeed80f922a1c539fa6bb201733d464b883acdd81b33
+2024/09/04 20:51:53 Find messageId
+2024/09/04 20:51:53 Find nextBlock Hash 0xebaa16b5cc4c53595acb541ea46fdf9d6625f00ea335e91c53391d13cb599f36
+2024/09/04 20:51:53 Find relayChainBlockNum 17040495
+2024/09/04 20:51:58 Find relaychain blockHash 0xa3da6bce0cdd659254c9e476e17e7ffbe31f5dd537d255e5bd1bf7625ab194c7
+2024/09/04 20:52:05 Get relaychain events with blockHash 0xa3da6bce0cdd659254c9e476e17e7ffbe31f5dd537d255e5bd1bf7625ab194c7
+2024/09/04 20:52:05 Get relaychain events with blockHash 0xbb2fccd25e9377f00387f67f68c4ef42d2b343f2596b2077659acf66090110a2
+2024/09/04 20:52:05 Find UMP messageHash 0xf053b9f150fbff79347bb6ed438e9cdf20083b7dbfa203078e9648b5bbfaa902, result true
+2024/09/04 20:52:05 Start track xcm message with ExtrinsicIndex: 17053966-2 Protocol: DMP OriginEndpoint: wss://polkadot-rpc.dwellir.com DestEndpoint: wss://moonbeam-rpc.dwellir.com RelayEndpoint:
+2024/09/04 20:52:21 Find destParaId 2004
+2024/09/04 20:52:21 Find messageHash 0x99f8179f1a3ca331998e7369ced93ac187036f287dcd3d015f3bcc585df92fa4
+2024/09/04 20:52:21 Find 17053967 nextBlockHash,start fetch PendingAvailability 0x408b3ed597e1f031377173550dfed5f011871e6cb7fcc90f704d8d017ba5e394
+2024/09/04 20:52:21 Find 17053968 nextBlockHash,start fetch PendingAvailability 0x36883a138cdfa7d5fe54c39bd20c37da07dec760c0b2d7d9c7017a9b517f280a
+2024/09/04 20:52:21 Get para block hash 0x51fdbefe8935a94153f14487b392d13d3b084a5059c0123263bc81c3ffa5ac72
+2024/09/04 20:52:32 Find DMP messageHash 0x99f8179f1a3ca331998e7369ced93ac187036f287dcd3d015f3bcc585df92fa4, process true
+2024/09/04 20:52:32 Start track xcm message with ExtrinsicIndex: 4325642-7 Protocol: HRMP OriginEndpoint: wss://astar-rpc.dwellir.com DestEndpoint: wss://rpc.hydradx.cloud RelayEndpoint: wss://polkadot-rpc.dwellir.com
+2024/09/04 20:52:50 Find messageHash 0x5d81466ae4b2d9fb1fd140cd690bb25276b0bfafabecd62840c67e0b062c8181
+2024/09/04 20:52:50 Find messageRaw 0310010400010100591f001700004c7809ca2f266c0a1300010100591f001700004c7809ca2f266c010300286bee020010000d01020400010100ceba54427482d5deaf3d4e2560d37d90c8b5ffc0210ea29591c153f1d0c90b0d
+2024/09/04 20:52:50 Get NextBlockHash 0x6af502c85ce4ffe3ab209236f1aeb6a80412380c6c60bab75165814eee58455a
+2024/09/04 20:52:50 Get RelayChainBlockNum 17053838
+2024/09/04 20:53:01 Get NextBlockHash 0x4d0cb9bad6e0a0df33d13ae766bbe81d270b98e08f084a5f4f9b6896e94025f7
+2024/09/04 20:53:01 Find nextBlockHash 0xd832025ae75194503537c9ec570e8972b249ed70fba238d6a2949e819c0586e7, block num 17053840,start fetch PendingAvailability
+2024/09/04 20:53:01 Get para block hash 0x145889077928c1078ac2a3e0be7b7c88d1bb1547d513ec5e3773d56a4d3516ca
+2024/09/04 20:53:13 start check block 0x145889077928c1078ac2a3e0be7b7c88d1bb1547d513ec5e3773d56a4d3516ca
+2024/09/04 20:53:13 Find HRMP messageHash 0x5d81466ae4b2d9fb1fd140cd690bb25276b0bfafabecd62840c67e0b062c8181, result Success
+--- PASS: Test_TrackTx (95.97s)
+=== RUN TestTrackBridgeMessage
+2024/09/04 20:53:13 Get ethereum message Id 0xc2e41ff7cfa5d7dff27d12965462da470c1dbb1b955da7a68e29e83f092d1d22 timestamp 1708654032 blockNum 5344483
+2024/09/04 20:53:14 Start crawl block num 2540323
+2024/09/04 20:53:15 Find bridge message has process in extrinsic index 2542078-2,event index 2542078-7
+2024/09/04 20:53:26 Find messageHash 0x91f9e0859a42e75dd6af502c082e2ede7731a55b7250cc62f82e2093be6a8ce2
+2024/09/04 20:53:26 Find messageRaw 03140004000100000b2037c77c800213000100000b2037c77c80020016040d010204010100a10f26079edaa802001400040000010300fff9976782d46cc05630d1f6ebab18b2324d6b14000300286bee0a130000010300fff9976782d46cc05630d1f6ebab18b2324d6b14000300286bee000d0102040001030010408b64fcd163439eb015650916a43d23b95b5d2c82c1df72f95ee1a2f939e3663a5eed261c1a5918a5b20ff3700ad5e9fdb9300a2c5b207fd02a588372f7d1e170c1bedf031eb58a118dc12d9917143fc76efd7f3c
+2024/09/04 20:53:26 Get NextBlockHash 0x40c2a31cb3bcbafa89a5cd70f87e7339cbe901e086eab9d7152651547d8336f6
+2024/09/04 20:53:26 Get RelayChainBlockNum 9339562
+2024/09/04 20:53:36 Get NextBlockHash 0x6010ab32c653c7cbd7ba95de54f813aab6aa18b7bbcca9b2dd2deaf8e9c2f187
+2024/09/04 20:53:36 Find nextBlockHash 0xcfb13b2405a7e777550888442aa0220bec0af4349dd0980b5a01396d55036c74, block num 9339564,start fetch PendingAvailability
+2024/09/04 20:53:37 Find nextBlockHash 0x3f622605891bfed0a0218c9e5a5531e7ffa3618123b3219b13c2245ab82a05fd, block num 9339565,start fetch PendingAvailability
+2024/09/04 20:53:37 Get para block hash 0xd09f3ec7e029dc3ca5b8309a295952e8aec5a59ba178b9c01ce055e9c7f48b60
+2024/09/04 20:53:47 start check block 0xd09f3ec7e029dc3ca5b8309a295952e8aec5a59ba178b9c01ce055e9c7f48b60
+2024/09/04 20:53:47 start check block 0xddb9cf29f11185677b155e70a1e1bd151ae9c55d8e8b1691cd428dcbcfa4d605
+2024/09/04 20:53:47 Find Message messageid 0x82c1df72f95ee1a2f939e3663a5eed261c1a5918a5b20ff3700ad5e9fdb9300a
+2024/09/04 20:53:47 Get etherStartBlockNum 0
+2024/09/04 20:53:48 Find bridge message have process in 5364918 0x1435866e5c320adac9fed7827934ce6c34f28bf6cc2b5fae1ab3f5512fd0db76
+--- PASS: TestTrackBridgeMessage (35.20s)
+=== RUN TestTrackS2sBridgeMessage
+2024/09/04 20:53:59 Find messageHash 0x56c6f4450b3b0c14adb7727d51ca61067a99b7b1c8ef993fd037039d61ac056c
+2024/09/04 20:53:59 Find messageRaw 031400040001000007521e91f615130001000007521e91f6150016040d010204010100a10f26040100a10f140104000201090500040a1300020109050004000d01020400010100d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d2c11e1c09b4f6aece0bfa6c1678faf192b6808540c97a6855230f8af3e2eb835282c9cda4757a21cf60d57b4108946d3e0a961d4026cb29ab248b51858cfbe59e386
+2024/09/04 20:53:59 Get NextBlockHash 0x85a95c0c03515dc542147334e448147612fdfe9c08f6386609eb1921e1d04b64
+2024/09/04 20:53:59 Get RelayChainBlockNum 11726101
+2024/09/04 20:54:09 Get NextBlockHash 0x0b3fd48217f4198cf239e4027db7cabc65236d0fe4ef8999913fc7670bf3d11b
+2024/09/04 20:54:09 Find nextBlockHash 0x4817f512a83f7aa57bcc888808eef3fe0e88c218c720d21ed95057b470a3043c, block num 11726103,start fetch PendingAvailability
+2024/09/04 20:54:09 Get para block hash 0xc7ce137d3cef8368373fc7e2580d520b95b6386cc65e3a9faf40e773e2b4bff0
+2024/09/04 20:54:20 start check block 0xc7ce137d3cef8368373fc7e2580d520b95b6386cc65e3a9faf40e773e2b4bff0
+2024/09/04 20:54:20 start check block 0x580183c711beee0ea6088294c78b42ba7471208019371cbbe4087f145f39b54e
+2024/09/04 20:54:20 start check block 0x332184c37060ffaa3986cd142354bc8c34dc06146ee65608d4533169b389e37d
+2024/09/04 20:54:25 found destBridgeHeaderHash 0x315c4f176ead8620140d90af90991092fd401644509a899290fdd240d08cfd54
+nextHash 0xa9bb3eb51ca25537898025f689fa5c575e09c7c55589404128509107f78cda46
+2024/09/04 20:54:36 start check block 0 0x315c4f176ead8620140d90af90991092fd401644509a899290fdd240d08cfd54
+2024/09/04 20:54:36 start check block 4856648 0x545a74794a445a0d6be151e43b7b0479a82d274866782bd27d30ce030e124efd
+2024/09/04 20:54:36 start check block 4856649 0xf8bb9a8bafc9f51faa2841478ea30f1d01d15889082e6327f748a6005d9dc3cd
+2024/09/04 20:54:36 start check block 4856650 0x2fb3d3e7e8aaf1e3bd1b0eb922e995188bd10d5145d66ff1b986666acf44e826
+2024/09/04 20:54:36 start check block 4856651 0x1dc2b26c52a9c16ea2c5f0791f818a2518455d4004bd60165053076f0189c3ce
+2024/09/04 20:54:36 start check block 4856652 0xf684e584e43d064efc3a03f7eb5e7f7ead56e4352f0f73c5b90849cf32a3ec29
+2024/09/04 20:54:36 start check block 4856653 0x1999638d06151e4841627ad13323102601c75f338f243fdd68b234fc448dc8e2
+2024/09/04 20:54:36 start check block 4856654 0x2d7cbc504978ad1bb7117de4a291fc1d307de70ac60a55219eeb4ff708b6afcc
+2024/09/04 20:54:36 start check block 4856655 0xffd538bb336c9ae81e01e0f991e45c1d6b79a58ea6c3d251e4a3fe6f21d71817
+2024/09/04 20:54:36 start check block 4856656 0x64105cef05b0902e81f39a24c9b8ecdad90f5b7af8bf2f7bd07168866cde20dc
+2024/09/04 20:54:36 start check block 4856657 0xdb5e5c33101b200faa0c7d0a4e071276eae91cb4d7ac15740a6c5795d27f8b56
+2024/09/04 20:54:37 start check block 4856658 0xfab0bd1245b8b8d520723abed4e1423f50b1aa1be6e8ccd067170c131e1666e5
+2024/09/04 20:54:37 start check block 4856659 0x23404a5736da0f35d27b4e2df8f9bcad5158a5759fb2b941c8cba56b1f8d73bd
+2024/09/04 20:54:37 start check block 4856660 0x3deddd67f289a613b7e9248acaeb6630e42e8acc54b4d62fbf838e5d728acf26
+2024/09/04 20:54:37 start check block 4856661 0x0666fd3ab1773e167469e9752d3f221b13c10db2b9a3615082486886b19b269a
+2024/09/04 20:54:37 start check block 4856662 0xb9d5a2682172b6cf2ae9655a69a4923b15c214b04fcdc14867bae1b573dcaf3c
+2024/09/04 20:54:37 start check block 4856663 0xf4fae271ffd733097baa05dd34bc842c2ce2bda938e98eecec89b8e8359db71f
+2024/09/04 20:54:37 start check block 4856664 0x445110d15476548ecf6a0a3337953a82f1c4adbe1131b59dd541a6ba0d83878b
+2024/09/04 20:54:37 start check block 4856665 0x0b577c3bfa64d0b228b69fed566bfceccafc6f38be9129c382f4ef0b1c9e2e44
+2024/09/04 20:54:37 start check block 4856666 0xdfdcf77a95a6d215167b2e2fd798489a2f6817566b7a9cc95598e9c73ad2d180
+2024/09/04 20:54:37 found destChainExtrinsicIndex: 4856666-2
+2024/09/04 20:54:48 Find messageHash 0x15f220e89ffad54c7e07a1f6e22f441679da3d6516a10995c50f82bb0fef426a
+2024/09/04 20:54:48 Find messageRaw 03200b01042c2509050b0100a10f0104000201090500040a1300020109050004000d01020400010100d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d2c11e1c09b4f6aece0bfa6c1678faf192b6808540c97a6855230f8af3e2eb83528
+2024/09/04 20:54:48 Get NextBlockHash 0x643aa1426b7052b42ea2e407a9774a3eba0dbc5310ddf46e1742ff5256ce072e
+2024/09/04 20:54:48 Get RelayChainBlockNum 22099307
+2024/09/04 20:54:59 Get NextBlockHash 0x6ed50b2530e5a24b3a7fcb151f3ff80562ff7de7f3e4a323e87d3c515d6e4516
+2024/09/04 20:54:59 Find nextBlockHash 0x9e6f11c092aecd67266c59c6d69469bf3faf3764128d74df5d3e860401bb24ab, block num 22099309,start fetch PendingAvailability
+2024/09/04 20:54:59 Get para block hash 0x3b9832e69b55ed337791f7300853f1ff839a01eb71ad9c4cabbbb47ed0710e32
+2024/09/04 20:55:09 start check block 0x3b9832e69b55ed337791f7300853f1ff839a01eb71ad9c4cabbbb47ed0710e32
+2024/09/04 20:55:10 start check block 0x08bddd944d9020d45d6fa705e08f029da990761399a861a85e17fdb57b53c580
+2024/09/04 20:55:10 start check block 0xa55431ad7c77a0ffce2ed88096d4c4b9dc68bf56f54b6af958cdfd775fa4de95
+2024/09/04 20:55:10 Find HRMP messageHash 0x15f220e89ffad54c7e07a1f6e22f441679da3d6516a10995c50f82bb0fef426a,messageId 0x11e1c09b4f6aece0bfa6c1678faf192b6808540c97a6855230f8af3e2eb83528 result false
+--- PASS: TestTrackS2sBridgeMessage (81.78s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/tracker 277.674s
+=== RUN Test_Dmp_func
+=== RUN Test_Dmp_func/LimitedReserveTransferAssets
+=== RUN Test_Dmp_func/ReserveTransferAssets
+=== RUN Test_Dmp_func/LimitedTeleportAssets
+=== RUN Test_Dmp_func/TeleportAssets
+=== RUN Test_Dmp_func/Send
+--- PASS: Test_Dmp_func (0.00s)
+ --- PASS: Test_Dmp_func/LimitedReserveTransferAssets (0.00s)
+ --- PASS: Test_Dmp_func/ReserveTransferAssets (0.00s)
+ --- PASS: Test_Dmp_func/LimitedTeleportAssets (0.00s)
+ --- PASS: Test_Dmp_func/TeleportAssets (0.00s)
+ --- PASS: Test_Dmp_func/Send (0.00s)
+=== RUN Test_HRMP_func
+=== RUN Test_HRMP_func/LimitedReserveTransferAssets
+=== RUN Test_HRMP_func/ReserveTransferAssets
+=== RUN Test_HRMP_func/LimitedTeleportAssets
+=== RUN Test_HRMP_func/TeleportAssets
+=== RUN Test_HRMP_func/Send
+=== RUN Test_HRMP_func/ReserveTransfer
+--- PASS: Test_HRMP_func (0.00s)
+ --- PASS: Test_HRMP_func/LimitedReserveTransferAssets (0.00s)
+ --- PASS: Test_HRMP_func/ReserveTransferAssets (0.00s)
+ --- PASS: Test_HRMP_func/LimitedTeleportAssets (0.00s)
+ --- PASS: Test_HRMP_func/TeleportAssets (0.00s)
+ --- PASS: Test_HRMP_func/Send (0.00s)
+ --- PASS: Test_HRMP_func/ReserveTransfer (0.00s)
+=== RUN Test_ConvertMultiLocationAccountId32
+--- PASS: Test_ConvertMultiLocationAccountId32 (0.00s)
+=== RUN Test_SimplifyMultiLocationParaId
+--- PASS: Test_SimplifyMultiLocationParaId (0.00s)
+=== RUN Test_SimplifyMultiLocationRelayChain
+--- PASS: Test_SimplifyMultiLocationRelayChain (0.00s)
+=== RUN Test_SimplifyMultiAssets
+--- PASS: Test_SimplifyMultiAssets (0.00s)
+=== RUN Test_Client
+--- PASS: Test_Client (10.81s)
+=== RUN TestXcmTransfer
+=== RUN TestXcmTransfer/Test_XCM_Ump_Transfer
+=== RUN TestXcmTransfer/Test_XCM_HRMP_Send
+--- PASS: TestXcmTransfer (10.81s)
+ --- PASS: TestXcmTransfer/Test_XCM_Ump_Transfer (0.07s)
+ --- PASS: TestXcmTransfer/Test_XCM_HRMP_Send (0.10s)
+=== RUN TestDmpTransfer
+=== RUN TestDmpTransfer/Test_XCM_Dmp_Transfer
+--- PASS: TestDmpTransfer (10.88s)
+ --- PASS: TestDmpTransfer/Test_XCM_Dmp_Transfer (0.09s)
+=== RUN TestPolkadotToEthereum
+=== RUN TestPolkadotToEthereum/Test_XCM_To_Ethereum
+--- PASS: TestPolkadotToEthereum (10.72s)
+ --- PASS: TestPolkadotToEthereum/Test_XCM_To_Ethereum (0.08s)
+=== RUN TestRococoToWestend
+=== RUN TestRococoToWestend/TestRococoToWestend
+--- PASS: TestRococoToWestend (10.70s)
+ --- PASS: TestRococoToWestend/TestRococoToWestend (0.08s)
+=== RUN Test_Ump_func
+=== RUN Test_Ump_func/LimitedReserveTransferAssets
+=== RUN Test_Ump_func/ReserveTransferAssets
+=== RUN Test_Ump_func/LimitedTeleportAssets
+=== RUN Test_Ump_func/TeleportAssets
+=== RUN Test_Ump_func/Send
+--- PASS: Test_Ump_func (0.00s)
+ --- PASS: Test_Ump_func/LimitedReserveTransferAssets (0.00s)
+ --- PASS: Test_Ump_func/ReserveTransferAssets (0.00s)
+ --- PASS: Test_Ump_func/LimitedTeleportAssets (0.00s)
+ --- PASS: Test_Ump_func/TeleportAssets (0.00s)
+ --- PASS: Test_Ump_func/Send (0.00s)
+=== RUN TestXcmSend
+=== RUN TestXcmSend/Test_XCM_Ump_Send
+=== RUN TestXcmSend/Test_XCM_HRMP_Send
+--- PASS: TestXcmSend (21.38s)
+ --- PASS: TestXcmSend/Test_XCM_Ump_Send (4.66s)
+ --- PASS: TestXcmSend/Test_XCM_HRMP_Send (6.10s)
+=== RUN Test_XCM_Dmp_Send
+--- PASS: Test_XCM_Dmp_Send (11.91s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/tx 87.227s
+=== RUN Test_EtherApi
+=== RUN Test_EtherApi/Test_EthGetTransactionByHash
+=== RUN Test_EtherApi/Test_EthGetTransactionReceipt
+=== RUN Test_EtherApi/Test_EthGetBlockByNum
+=== RUN Test_EtherApi/TestEtherscanGetLogs
+--- PASS: Test_EtherApi (6.08s)
+ --- PASS: Test_EtherApi/Test_EthGetTransactionByHash (0.42s)
+ --- PASS: Test_EtherApi/Test_EthGetTransactionReceipt (0.26s)
+ --- PASS: Test_EtherApi/Test_EthGetBlockByNum (2.27s)
+ --- PASS: Test_EtherApi/TestEtherscanGetLogs (0.13s)
+=== RUN Test_SubscanGetBlockByTime
+--- PASS: Test_SubscanGetBlockByTime (1.49s)
+=== RUN TestSubscanGetEvents
+--- PASS: TestSubscanGetEvents (1.08s)
+=== RUN Test_ToInt
+--- PASS: Test_ToInt (0.00s)
+=== RUN Test_HexToUint64
+--- PASS: Test_HexToUint64 (0.00s)
+=== RUN Test_ToUint
+--- PASS: Test_ToUint (0.00s)
+=== RUN Test_InSlice
+--- PASS: Test_InSlice (0.00s)
+=== RUN Test_AnyToInt
+--- PASS: Test_AnyToInt (0.00s)
+PASS
+ok github.com/gmajor-encrypt/xcm-tools/util 8.654s
+```
+