From c119ebc355f30bab033a60adfd62b2d934402762 Mon Sep 17 00:00:00 2001
From: Diogo <112647953+dsm-w3f@users.noreply.github.com>
Date: Wed, 25 Oct 2023 16:43:27 -0300
Subject: [PATCH] Create Eiger_Storage_on_Polkadot_1_dsm-w3f.md
---
.../Eiger_Storage_on_Polkadot_1_dsm-w3f.md | 394 ++++++++++++++++++
1 file changed, 394 insertions(+)
create mode 100644 evaluations/Eiger_Storage_on_Polkadot_1_dsm-w3f.md
diff --git a/evaluations/Eiger_Storage_on_Polkadot_1_dsm-w3f.md b/evaluations/Eiger_Storage_on_Polkadot_1_dsm-w3f.md
new file mode 100644
index 000000000..c9852a9a9
--- /dev/null
+++ b/evaluations/Eiger_Storage_on_Polkadot_1_dsm-w3f.md
@@ -0,0 +1,394 @@
+# Evaluation
+
+- **Status:** In Progress
+- **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/Eiger_Storage_on_Polkadot_1.md
+- **Milestone:** 1
+- **Kusama Identity:** Address
+- **Previously successfully merged evaluation:** N/A
+
+| Number | Deliverable | Accepted | Link | Evaluation Notes |
+| ------ | ----------- | -------- | ---- |----------------- |
+| **0a.** | Copyright and Licenses |
|https://github.com/eigerco/polkadot-native-storage/blob/main/LICENSE| |
+| **0b.** | Documentation/Tutorial ||https://github.com/eigerco/polkadot-native-storage/blob/main/README.md| Not fully evaluated yet.|
+| **0c.** | Methodology ||https://github.com/eigerco/polkadot-native-storage/blob/main/doc/report/src/new-overview.md#2-methodology| Not fully evaluated yet.|
+| **0d.** | Infrastructure ||https://github.com/eigerco/polkadot-native-storage/blob/main/doc/testing_guide.md#infrastructure--testing-environment| Not fully evaluated yet.|
+| **0e.** | Article ||https://github.com/eigerco/polkadot-native-storage/blob/main/doc/report/src/new-overview.md| Not fully evaluated yet.|
+| **0f.** | Testing and Testing Guide ||https://github.com/eigerco/polkadot-native-storage/blob/main/doc/testing_guide.md| Not fully evaluated yet.|
+| **0g.** | Docker ||https://github.com/eigerco/polkadot-native-storage/blob/main/README.md#docker , https://github.com/eigerco/polkadot-native-storage/blob/main/Dockerfile| Not fully evaluated yet.|
+| **1.** | Updated CGS code ||https://github.com/eigerco/polkadot-native-storage| Not fully evaluated yet.|
+
+## Evaluation V1
+
+### Documentation
+
+In the [testing guide](https://github.com/eigerco/polkadot-native-storage/blob/main/doc/testing_guide.md#infrastructure--testing-environment), the commands are using the repository `polka-storage` it shouldn't be `polkadot-native-storage`?
+
+### Docker
+
+I tried to build the Docker image, but I received an error in the command `cargo build --release --features runtime-benchmarks`.
+
+
+
+```
+ => [builder 8/11] RUN git clone https://github.com/paritytech/polkadot-sdk.git && cd polkadot 5961.1s
+ => [builder 9/11] WORKDIR /usr/src/polka-storage 0.2s
+ => [builder 10/11] COPY . . 0.3s
+ => ERROR [builder 11/11] RUN cargo build --release --features runtime-benchmarks 797.1s
+ .
+ .
+ .
+#0 648.7 Compiling cumulus-pallet-session-benchmarking v3.0.0 (https://github.com/paritytech/cumulus.git?branch=polkadot-v1.0.0#0d17cf6b)
+#0 648.8 warning: unused imports: `address::Address`, `registered_proof::RegisteredPoStProof`
+#0 648.8 --> pallets/miner/src/benchmarking.rs:12:29
+#0 648.8 |
+#0 648.8 12 | use pallet_pns_common::{address::Address, registered_proof::RegisteredPoStProof};
+#0 648.8 | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+#0 648.8 |
+#0 648.8 = note: `#[warn(unused_imports)]` on by default
+#0 648.8
+#0 648.8 Compiling pallet-collator-selection-power v0.1.0 (/usr/src/polka-storage/pallets/collator-selection-power)
+#0 648.8 Compiling parachain-info v0.1.0 (https://github.com/paritytech/cumulus.git?branch=polkadot-v1.0.0#0d17cf6b)
+#0 649.0 Compiling cumulus-pallet-dmp-queue v0.1.0 (https://github.com/paritytech/cumulus.git?branch=polkadot-v1.0.0#0d17cf6b)
+#0 649.1 error[E0061]: this function takes 3 arguments but 0 arguments were supplied
+#0 649.1 --> pallets/miner/src/benchmarking.rs:10:1
+#0 649.1 |
+#0 649.1 10 | #[benchmarks]
+#0 649.1 | ^^^^^^^^^^^^^ three arguments of type `::AccountId`, `Address`, and `<::Power as Power>::PeerId` are missing
+#0 649.1 |
+#0 649.1 note: associated function defined here
+#0 649.1 --> pallets/miner/src/lib.rs:117:16
+#0 649.1 |
+#0 649.1 117 | pub fn create(
+#0 649.1 | ^^^^^^
+#0 649.1 118 | origin: OriginFor,
+#0 649.1 119 | owner: T::AccountId,
+#0 649.1 | -------------------
+#0 649.1 120 | worker: Address,
+#0 649.1 | ---------------
+#0 649.1 121 | peer_id: PeerId,
+#0 649.1 | ------------------
+#0 649.1 = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+#0 649.1 help: provide the arguments
+#0 649.1 |
+#0 649.1 10 | #[benchmarks](/* ::AccountId */, /* Address */, /* <::Power as Power>::PeerId */)
+#0 649.1 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#0 649.1
+#0 649.1 error[E0599]: no variant or associated item named `new_call_variant_create` found for enum `pallet::Call` in the current scope
+#0 649.1 --> pallets/pns/src/benchmarking.rs:10:1
+#0 649.1 |
+#0 649.1 10 | #[benchmarks]
+#0 649.1 | ^^^^^^^^^^^^^
+#0 649.1 | |
+#0 649.1 | variant or associated item not found in `Call`
+#0 649.1 | help: there is an associated function with a similar name: `new_call_variant_store_file`
+#0 649.1 |
+#0 649.1 ::: pallets/pns/src/lib.rs:45:15
+#0 649.1 |
+#0 649.1 45 | #[pallet::call]
+#0 649.1 | ---- variant or associated item `new_call_variant_create` not found for this enum
+#0 649.1 |
+#0 649.1 = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+#0 649.1
+#0 649.1 error[E0061]: this function takes 3 arguments but 0 arguments were supplied
+#0 649.1 --> pallets/miner/src/benchmarking.rs:10:1
+#0 649.1 |
+#0 649.1 10 | #[benchmarks]
+#0 649.1 | ^^^^^^^^^^^^^ three arguments of type `<::Power as Power>::AccountId`, `Address`, and `MinerControllers<::AccountId>` are missing
+#0 649.1 |
+#0 649.1 note: associated function defined here
+#0 649.1 --> pallets/miner/src/lib.rs:160:16
+#0 649.1 |
+#0 649.1 160 | pub fn change_worker_address(
+#0 649.1 | ^^^^^^^^^^^^^^^^^^^^^
+#0 649.1 161 | origin: OriginFor,
+#0 649.1 162 | miner: MinerAccountId,
+#0 649.1 | ------------------------
+#0 649.1 163 | new_worker: Address,
+#0 649.1 | -------------------
+#0 649.1 164 | new_controllers: MinerControllers,
+#0 649.1 | -----------------------------------------------
+#0 649.1 = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+#0 649.1 help: provide the arguments
+#0 649.1 |
+#0 649.1 10 | #[benchmarks](/* <::Power as Power>::AccountId */, /* Address */, /* MinerControllers<::AccountId> */)
+#0 649.1 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#0 649.1
+#0 649.1 error[E0061]: this function takes 2 arguments but 0 arguments were supplied
+#0 649.1 --> pallets/miner/src/benchmarking.rs:10:1
+#0 649.1 |
+#0 649.1 10 | #[benchmarks]
+#0 649.1 | ^^^^^^^^^^^^^ two arguments of type `<::Power as Power>::AccountId` and `<::Power as Power>::PeerId` are missing
+#0 649.1 |
+#0 649.1 note: associated function defined here
+#0 649.1 --> pallets/miner/src/lib.rs:205:16
+#0 649.1 |
+#0 649.1 205 | pub fn change_peer_id(
+#0 649.1 | ^^^^^^^^^^^^^^
+#0 649.1 206 | origin: OriginFor,
+#0 649.1 207 | miner: MinerAccountId,
+#0 649.1 | ------------------------
+#0 649.1 208 | new_peer_id: PeerId,
+#0 649.1 | ----------------------
+#0 649.1 = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+#0 649.1 help: provide the arguments
+#0 649.1 |
+#0 649.1 10 | #[benchmarks](/* <::Power as Power>::AccountId */, /* <::Power as Power>::PeerId */)
+#0 649.1 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#0 649.1
+#0 649.1 error[E0061]: this function takes 1 argument but 0 arguments were supplied
+#0 649.1 --> pallets/miner/src/benchmarking.rs:10:1
+#0 649.1 |
+#0 649.1 10 | #[benchmarks]
+#0 649.1 | ^^^^^^^^^^^^^ an argument of type `<::Power as Power>::AccountId` is missing
+#0 649.1 |
+#0 649.1 note: associated function defined here
+#0 649.1 --> pallets/miner/src/lib.rs:231:16
+#0 649.1 |
+#0 649.1 231 | pub fn confirm_update_worker_key(
+#0 649.1 | ^^^^^^^^^^^^^^^^^^^^^^^^^
+#0 649.1 232 | origin: OriginFor,
+#0 649.1 233 | miner: MinerAccountId,
+#0 649.1 | ------------------------
+#0 649.1 = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+#0 649.1 help: provide the argument
+#0 649.1 |
+#0 649.1 10 | #[benchmarks](/* <::Power as Power>::AccountId */)
+#0 649.1 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#0 649.1
+#0 649.1 error[E0061]: this function takes 2 arguments but 0 arguments were supplied
+#0 649.1 --> pallets/miner/src/benchmarking.rs:10:1
+#0 649.1 |
+#0 649.1 10 | #[benchmarks]
+#0 649.1 | ^^^^^^^^^^^^^ two arguments of type `<::Power as Power>::AccountId` and `::AccountId` are missing
+#0 649.1 |
+#0 649.1 note: associated function defined here
+#0 649.1 --> pallets/miner/src/lib.rs:262:16
+#0 649.1 |
+#0 649.1 262 | pub fn change_owner_address(
+#0 649.1 | ^^^^^^^^^^^^^^^^^^^^
+#0 649.1 263 | origin: OriginFor,
+#0 649.1 264 | miner: MinerAccountId,
+#0 649.1 | ------------------------
+#0 649.1 265 | new_owner: T::AccountId,
+#0 649.1 | -----------------------
+#0 649.1 = note: this error originates in the attribute macro `benchmarks` (in Nightly builds, run with -Z macro-backtrace for more info)
+#0 649.1 help: provide the arguments
+#0 649.1 |
+#0 649.1 10 | #[benchmarks](/* <::Power as Power>::AccountId */, /* ::AccountId */)
+#0 649.1 | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+#0 649.1
+#0 649.1 Compiling cumulus-pallet-aura-ext v0.1.0 (https://github.com/paritytech/cumulus.git?branch=polkadot-v1.0.0#0d17cf6b)
+#0 649.1 Compiling cumulus-ping v0.1.0 (https://github.com/paritytech/cumulus.git?branch=polkadot-v1.0.0#0d17cf6b)
+#0 649.2 Compiling cumulus-primitives-timestamp v0.1.0 (https://github.com/paritytech/cumulus.git?branch=polkadot-v1.0.0#0d17cf6b)
+#0 649.3 Compiling cumulus-primitives-aura v0.1.0 (https://github.com/paritytech/cumulus.git?branch=polkadot-v1.0.0#0d17cf6b)
+#0 649.3 For more information about this error, try `rustc --explain E0599`.
+#0 649.3 error: could not compile `pallet-pns` (lib) due to previous error
+#0 649.3 warning: build failed, waiting for other jobs to finish...
+#0 649.4 For more information about this error, try `rustc --explain E0061`.
+#0 649.4 warning: `pallet-miner` (lib) generated 1 warning
+#0 649.4 error: could not compile `pallet-miner` (lib) due to 5 previous errors; 1 warning emitted
+------
+Dockerfile:15
+--------------------
+ 13 | WORKDIR /usr/src/polka-storage
+ 14 | COPY . .
+ 15 | >>> RUN cargo build --release --features runtime-benchmarks
+ 16 |
+ 17 | # Uncomment when polka-storage repo will become public
+--------------------
+ERROR: failed to solve: process "/bin/sh -c cargo build --release --features runtime-benchmarks" did not complete successfully: exit code: 101
+```
+
+
+
+The same error occurred when I tried to build without docker with the flag `--features runtime-benchmarks`.
+
+### Testing
+
+#### Unit and integration testing
+
+I followed the testing guide. I could build the `polkadot-native-storage`, without the flag `--features runtime-benchmarks`.
+
+I ran `cargo test -p pallet-miner`, and these tests are passing.
+
+
+
+
+```
+user@localhost:~/Documents/eiger/polka-storage$ cargo test -p pallet-miner
+warning: some crates are on edition 2021 which defaults to `resolver = "2"`, but virtual workspaces default to `resolver = "1"`
+note: to keep the current resolver, specify `workspace.resolver = "1"` in the workspace root's manifest
+note: to use the edition 2021 resolver, specify `workspace.resolver = "2"` in the workspace root's manifest
+ Finished test [unoptimized + debuginfo] target(s) in 0.39s
+ Running unittests src/lib.rs (target/debug/deps/pallet_miner-09e9e0c21f0f8be8)
+
+running 18 tests
+test mock::__construct_runtime_integrity_test::runtime_integrity_tests ... ok
+test tests::change_owner_address_confirms_new_owner_with_valid_signer_and_proposal ... ok
+test tests::change_owner_address_rejects_invalid_signer ... ok
+test tests::change_worker_address_works_with_valid_signer_and_new_worker ... ok
+test tests::change_worker_address_keeps_old_controller_without_override ... ok
+test tests::change_owner_address_creates_proposal_with_valid_signer ... ok
+test tests::change_worker_address_clears_pending_worker_with_valid_signer_and_old_worker ... ok
+test tests::change_owner_address_revokes_existing_proposal_with_valid_signer ... ok
+test tests::confirm_update_worker_accepts_effective_request_with_valid_signature ... ok
+test tests::change_owner_address_rejects_proposal_with_owner_account ... ok
+test tests::change_worker_address_rejects_invalid_signer ... ok
+test tests::change_peer_id_rejects_invalid_signer ... ok
+test tests::create_miner_first_miner_addr_is_correct ... ok
+test tests::change_peer_id_works_with_valid_owner ... ok
+test tests::change_worker_address_rejects_trigger_without_request ... ok
+test tests::create_miner ... ok
+test tests::change_peer_id_works_with_valid_controller ... ok
+test tests::confirm_update_worker_key_rejects_trigger_before_effective_at ... ok
+
+test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
+
+ Doc-tests pallet-miner
+
+running 0 tests
+
+test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+```
+
+
+
+I tried to run `cargo test` to run all tests, but I received these errors.
+
+
+
+```
+error: `PowerModule` does not have #[pallet::event] defined, perhaps you should remove `Event` from construct_runtime?
+ --> pallets/power/src/lib.rs:12:1
+ |
+12 | #[frame_support::pallet]
+ | ^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+ ::: pallets/power/src/mock.rs:12:1
+ |
+12 | / frame_support::construct_runtime!(
+13 | | pub enum Test
+14 | | {
+15 | | System: frame_system::{Pallet, Call, Config, Storage, Event},
+16 | | PowerModule: crate::{Pallet, Call, Storage, Event},
+17 | | }
+18 | | );
+ | |_- in this macro invocation
+ |
+ = note: this error originates in the macro `crate::__substrate_event_check::is_event_part_defined` which comes from the expansion of the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error[E0437]: type `RuntimeEvent` is not a member of trait `crate::Config`
+ --> pallets/power/src/mock.rs:54:5
+ |
+54 | type RuntimeEvent = RuntimeEvent;
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not a member of trait `crate::Config`
+
+error[E0412]: cannot find type `Event` in the crate root
+ --> pallets/power/src/mock.rs:12:1
+ |
+12 | // frame_support::construct_runtime!(
+13 | || pub enum Test
+14 | || {
+15 | || System: frame_system::{Pallet, Call, Config, Storage, Event},
+16 | || PowerModule: crate::{Pallet, Call, Storage, Event},
+17 | || }
+18 | || );
+ | ||_- in this macro invocation
+... |
+ |
+ = note: this error originates in the macro `frame_support::construct_runtime` (in Nightly builds, run with -Z macro-backtrace for more info)
+help: consider importing one of these items
+ |
+1 + use crate::mock::system::Event;
+ |
+1 + use frame_system::Event;
+ |
+
+warning: function `new_test_ext` is never used
+ --> pallets/pns/src/mock.rs:56:8
+ |
+56 | pub fn new_test_ext() -> sp_io::TestExternalities {
+ | ^^^^^^^^^^^^
+ |
+ = note: `#[warn(dead_code)]` on by default
+
+Some errors have detailed explanations: E0412, E0437.
+For more information about an error, try `rustc --explain E0412`.
+error: could not compile `pallet-power` (lib test) due to 3 previous errors
+warning: build failed, waiting for other jobs to finish...
+warning: `pallet-pns` (lib test) generated 1 warning
+```
+
+
+
+#### RPC testing
+
+I ran `curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "pns_chainGetBlock", "params": ["123"]}' http://localhost:9977/` and received "Method not found".
+
+```
+user@localhost:~/Documents/eiger/polka-storage$ curl -H "Content-Type: application/json" -d '{"id":1, "jsonrpc":"2.0", "method": "pns_chainGetBlock", "params": ["123"]}' http://localhost:9977/
+
+{"jsonrpc":"2.0","error":{"code":-32601,"message":"Method not found"},"id":1}
+```
+
+#### XCM testing
+
+I checked the chain state. `hrmpChannelMaxCapacity` and `hrmpChannelMaxMessageSize` are non-zero values.
+
+
+
+```
+configuration.activeConfig: PolkadotRuntimeParachainsConfigurationHostConfiguration
+{
+ maxCodeSize: 3,145,728
+ maxHeadDataSize: 32,768
+ maxUpwardQueueCount: 8
+ maxUpwardQueueSize: 1,048,576
+ maxUpwardMessageSize: 51,200
+ maxUpwardMessageNumPerCandidate: 5
+ hrmpMaxMessageNumPerCandidate: 5
+ validationUpgradeCooldown: 2
+ validationUpgradeDelay: 2
+ asyncBackingParams: {
+ maxCandidateDepth: 0
+ allowedAncestryLen: 0
+ }
+ maxPovSize: 5,242,880
+ maxDownwardMessageSize: 1,048,576
+ hrmpMaxParachainOutboundChannels: 4
+ hrmpMaxParathreadOutboundChannels: 4
+ hrmpSenderDeposit: 0
+ hrmpRecipientDeposit: 0
+ hrmpChannelMaxCapacity: 8 -----
+ hrmpChannelMaxTotalSize: 8,192
+ hrmpMaxParachainInboundChannels: 4
+ hrmpMaxParathreadInboundChannels: 4
+ hrmpChannelMaxMessageSize: 1,048,576 -----
+ executorParams: []
+ codeRetentionPeriod: 1,200
+ parathreadCores: 0
+ parathreadRetries: 0
+ groupRotationFrequency: 20
+ chainAvailabilityPeriod: 4
+ threadAvailabilityPeriod: 4
+ schedulingLookahead: 0
+ maxValidatorsPerCore: 1
+ maxValidators: null
+ disputePeriod: 6
+ disputePostConclusionAcceptancePeriod: 100
+ noShowSlots: 2
+ nDelayTranches: 25
+ zerothDelayTrancheWidth: 0
+ neededApprovals: 2
+ relayVrfModuloSamples: 2
+ pvfCheckingEnabled: false
+ pvfVotingTtl: 2
+ minimumValidationUpgradeDelay: 5
+}
+```
+
+
+
+#### Benchmark
+
+I was not able to build successfully with the `--features runtime-benchmarks` flag. In this way, I was not able to run the benchmarks.