You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
📝 docs(README.md): update links and descriptions for Standard Pallets and Custom Pallets sections
đź”§ chore(README.md): fix formatting and remove unnecessary whitespace
🚀 feat(README.md): add instructions for starting a node and connecting with Polkadot-JS Apps front-end
📝 docs(learning-path.md): update learning path with new links and instructions
✨ feat(learning-path.md): add instructions to build the `hypha-/hashed-substrate` project
đź”§ chore(learning-path.md): fix formatting and indentation issues
📝 docs(learning-path.md): update instructions for setting identity and interacting with pallets
✨ feat(learning-path.md): add section for Rust Developer Deeper Training
✨ feat(learning-path.md): add section for Substrate UI Developer Deeper Training
đź”§ chore(learning-path.md): fix formatting and indentation issues
📝 docs(learning-path.md): add tools and tips section with useful links
📝 docs(zombienet.md): update requirements section to include Minikube and Dockerhub account
📝 docs(zombienet.md): add instructions to deploy network examples within Zombienet repo directory
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝 docs(zombienet.md): update zombienet manifest to use correct Docker image for parachain
📝
📦 chore(Cargo.toml): update publish and repository URLs for fund-admin-records, fund-admin, gated-marketplace, and rbac pallets to reflect the correct repository locations
Hashed Chain provides a naming system that allows participants to add information, such as social media accounts, web domains, email addresses, etc. to their on-chain account and subsequently ask for verification of this information by registrars.
An index is a short and easy-to-remember version of an address. Claiming an index requires a deposit that is released when the index is cleared.
12
16
13
17
#### [Social Recovery]()
18
+
14
19
The Recovery pallet is an M-of-N social recovery tool for users to gain access to their accounts if the private key or other authentication mechanism is lost. Through this pallet, a user is able to make calls on-behalf-of another account which they have recovered. The recovery process is protected by trusted "friends" whom the original account owner chooses. A threshold (M) out of N friends are needed to give another account access to the recoverable account.
The Treasury pallet provides a "pot" of funds that can be managed by stakeholders in the system and a structure for making spending proposals from this pot.
21
28
22
29
> Roadmap: Integrate support for native multisig BTC in the treasury via PSBT and output descriptors
Bounties Spending proposals aim to delegate the curation activity of spending proposals to experts called Curators: They can be defined as addresses with agency over a portion of the Treasury with the goal of fixing a bug or vulnerability, developing a strategy, or monitoring a set of tasks related to a specific topic: all for the benefit of the whole ecosystem.
A Frunique is a type of Non-Fungible Token (NFT). Fruniques allow token holders to lock any set of fungible and/or non-fungible tokens into a new NFT backed by the tokens. The source/parent asset(s) can be unlocked if and only if all of its child fruniques are held by the same account. Any Frunique may be transformed to become 1..n new Fruniques or a fungible token.
33
44
34
45
Fruniques are compatible with the `Uniques` pallet referenced above.
35
46
36
47
## Quick Start
37
48
38
49
### Rust Setup
50
+
39
51
First, complete the [basic Rust setup instructions](./docs/rust-setup.md).
Copy file name to clipboardExpand all lines: docs/learning-path.md
+36-24Lines changed: 36 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,62 +1,74 @@
1
1
## Substrate Training Path
2
+
2
3
### Substrate Tutorial #1
4
+
3
5
The full binary executable is compiled from source and includes a default setup with Alice, Bob and other keys preconfigured with funds and sudo rights. This tutorial is the simplest and most informative way to ensure you have your environment ready to work on Substrate projects.
Connect the Front End template from the tutorial step above to the running `hypha/hashed` node.
26
+
Connect the Front End template from the tutorial step above to the running `hypha/hashed` node.
21
27
22
28
The only difference between the tutorial and the `hypha/hashed` node, in terms of setup instructions, are that the executable name will be `hypha/hashed` instead of `node-template`. That'll make sense after the tutorial. The `hypha/hashed` node will have more functionality than the `node-template`.
23
29
24
-
### Set Identity
25
-
Use the pallet explorer on either the Front End template or https://polkadot.js.org to explore your node.
30
+
### Set Identity
31
+
32
+
Use the pallet explorer on either the Front End template or https://polkadot.js.org to explore your node.
26
33
27
34
The instructions here should work on your local node using Alice and Bob: https://wiki.polkadot.network/docs/learn-identity
Now that you have an idea for the environment, dive deeper into both the Rust training and Substrate training. As opposed to do them consecutively, I recommend starting both of the trainings and switch back and forth between the two as you progress.
-[Front End template](https://github.com/substrate-developer-hub/substrate-front-end-template) from Parity
67
+
68
+
2. Review tooling for data caching and query -[Useful API sidecar](https://github.com/paritytech/substrate-api-sidecar) from Parity -[Awesome Substrate tools section](https://substrate.io/ecosystem/resources/awesome-substrate/#tools)
If the process results in a Timeout error, refer to the [troubleshooting guide](#timeout-errors) taking into consideration the image that zombienet failed to pull.
36
39
37
40
After some intermediate tables, a successful deployment should print a `Network launched 🚀🚀` table. Note that the polkadotjs endpoints are specified in the `Direct link` rows. Both the relay and parachain should be running at this point.
@@ -40,6 +43,7 @@ After some intermediate tables, a successful deployment should print a `Network
40
43
By pressing `ctr+c` all the processes should stop.
41
44
42
45
The zombienet manifest that was deployed is a simple relaychain to parachain connection, in which the rococo chain has 2 nodes (alice and bob nodes), while the connected parachain (100) is a template with only one collator:
The `command = "adder-collator"` specifies the node executable (similar to `./target/release/hashed-parachain`).
68
71
69
-
## Creating a zombienet-valid dockerfile
72
+
The `command = "adder-collator"` specifies the node executable (similar to `./target/release/hashed-parachain`).
73
+
74
+
## Creating a zombienet-valid dockerfile
75
+
70
76
The next section will be performed under the parachain repository instead of the zombienet one.
71
77
72
78
Now that all the tools are functional, the next step is to create a docker image that replaces the parachain template (the file exists in this repository under the name of `collator.Dockerfile`):
79
+
73
80
```docker
74
81
FROM paritytech/ci-linux:production
75
82
@@ -78,7 +85,7 @@ RUN mkdir /cfg
78
85
79
86
WORKDIR /var/www
80
87
81
-
RUN git clone https://github.com/hashed-io/hashed-substrate.git
88
+
RUN git clone https://github.com/hashed-io/hashed-pallets.git
82
89
83
90
WORKDIR /var/www/hashed-substrate
84
91
# change to main or develop
@@ -95,7 +102,8 @@ RUN /usr/local/bin/hashed-parachain --version
95
102
ENTRYPOINT [ "hashed-parachain" ]
96
103
```
97
104
98
-
Build and publish the docker image using the `collator.Dockerfile`, it is recommended to change the tag and name:
105
+
Build and publish the docker image using the `collator.Dockerfile`, it is recommended to change the tag and name:
106
+
99
107
```bash
100
108
# change abhashed/test-collator to a desired tag/dockerhub-name. Building the image will take a while.
Based on the example provided by zombienet, a simple deployment was declared using a compatible `polkadot` image (in this case, v0.9.27), while the parachain nodes will be instanced from the custom docker image (this file exists in this repo under the name `k8-manifests/zombienet-local.toml`).
The process should display an almost identical process from the testing deployment.
146
156
147
157
## Updating the parachain image
158
+
148
159
If there's a change that needs to be locally tested, it is recommended to rebuild and publish the docker image and [download the update on minikube](#timeout-errors).
149
160
150
161
## Troubleshooting
151
162
152
163
### Timeout errors
164
+
153
165

154
166
If an image takes too long to download, it will result in a timeout error. It is recommended to pull the required images beforehand.
167
+
155
168
```bash
156
169
# Enter to the minikube container through ssh
157
170
minikube ssh
@@ -162,30 +175,35 @@ docker@minikube:~$ exit
162
175
# Retry the zombienet deployment process
163
176
node dist/cli.js spawn ./examples/md5.toml
164
177
```
165
-
It is also recommended to check if the image is published by the same name and tag.
178
+
179
+
It is also recommended to check if the image is published by the same name and tag.
166
180
167
181
### Cannot exec into a container in a completed pod
168
182
169
183

170
184
171
185
This error usually implies there's at least one misconfiguration on the parachain image, the following examples were found:
186
+
172
187
- Zombienet tried to create a file in a directory that doesn't exist.
173
188
- The parachain executable (e.g. `./target/release/hashed-parachain`) wasn't found in the provided `command = <executable>` path.
174
189
- Zombienet tried to replace the `para_id` in the chain spec, but it wasn't found.
175
190
- Any other issue that might cause the container to end unexpectedly.
176
191
177
192
In order to discover the exact issue, the following steps are recommended:
193
+
178
194
1. Zombienet produces intermediate pods for each step. Identify the last pod that was instanced successfully before the error logs appeared (e.g. `temp-1`, `temp-2`, etc).
179
-

195
+

180
196
2. Prepare another terminal with the command for getting the logs for the temporal pod (e.g `kubectl logs -f temp-2 -n <namespace>`), the namespace will be pasted when available on later steps.
181
-
3. In the first terminal, run the zombienet spawn command again, the first table will have the generated namespace, copy the string.
182
-

197
+
3. In the first terminal, run the zombienet spawn command again, the first table will have the generated namespace, copy the string.
198
+

183
199
4. Paste the string in the namespace option on the second terminal to complete the command (e.g `kubectl logs -f temp-2 -n zombie-8445ff441ef788f160070687bb33f3a0`), and run the command when the first terminal initializes the desired container, in this case, temp-2.
184
-
5. The output should contain an error description.
200
+
5. The output should contain an error description.
Defaulted container "temp-2" out of: temp-2, transfer-files-container (init)
188
205
Error: Input("Error parsing spec file: unknown field `para_id` at line 113 column 1")
189
206
copy files has finished
190
207
```
191
-
In this specific case, the para_id field was not recognized by the chain, which means the `#[serde(rename_all = "camelCase")]` line in the `collator/src/chain_spec/mod.rs` was renaming para_id as paraId, causing conflicts in the zombienet internal processes. Removing that line was enough to fix the error.
208
+
209
+
In this specific case, the para_id field was not recognized by the chain, which means the `#[serde(rename_all = "camelCase")]` line in the `collator/src/chain_spec/mod.rs` was renaming para_id as paraId, causing conflicts in the zombienet internal processes. Removing that line was enough to fix the error.
0 commit comments