├── .gitattributes ├── .gitignore ├── README.md ├── advanced ├── term-01 │ ├── lesson0 │ │ └── course_preview.pdf │ ├── lesson1 │ │ ├── 1_1_Intro_to_Polkadot.pdf │ │ ├── 1_2_Intro_to_Substrate.pdf │ │ └── 1_3_Substrate_Node_Template.pdf │ ├── lesson10 │ │ └── ink!.pdf │ ├── lesson11 │ │ ├── Lesson11指令.md │ │ ├── frontier │ │ │ ├── .editorconfig │ │ │ ├── .github │ │ │ │ └── workflows │ │ │ │ │ ├── cancel.yml │ │ │ │ │ ├── editorconfig.yml │ │ │ │ │ └── rust.yml │ │ │ ├── .gitignore │ │ │ ├── .gitmodules │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── LICENSE-APACHE2 │ │ │ ├── LICENSE-GPL3 │ │ │ ├── README.md │ │ │ ├── frame │ │ │ │ └── ethereum │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ ├── lib.rs │ │ │ │ │ ├── mock.rs │ │ │ │ │ └── tests.rs │ │ │ ├── rpc │ │ │ │ ├── Cargo.toml │ │ │ │ ├── core │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── eth.rs │ │ │ │ │ │ ├── eth_pubsub.rs │ │ │ │ │ │ ├── eth_signing.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── net.rs │ │ │ │ │ │ ├── types │ │ │ │ │ │ ├── account_info.rs │ │ │ │ │ │ ├── block.rs │ │ │ │ │ │ ├── block_number.rs │ │ │ │ │ │ ├── bytes.rs │ │ │ │ │ │ ├── call_request.rs │ │ │ │ │ │ ├── filter.rs │ │ │ │ │ │ ├── index.rs │ │ │ │ │ │ ├── log.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── pubsub.rs │ │ │ │ │ │ ├── receipt.rs │ │ │ │ │ │ ├── sync.rs │ │ │ │ │ │ ├── transaction.rs │ │ │ │ │ │ ├── transaction_condition.rs │ │ │ │ │ │ ├── transaction_request.rs │ │ │ │ │ │ └── work.rs │ │ │ │ │ │ └── web3.rs │ │ │ │ ├── primitives │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ └── src │ │ │ │ │ └── lib.rs │ │ │ ├── scripts │ │ │ │ └── init.sh │ │ │ ├── template │ │ │ │ ├── .dockerignore │ │ │ │ ├── Dockerfile │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── examples │ │ │ │ │ ├── contract-erc20 │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── create-erc20.ts │ │ │ │ │ │ ├── package-lock.json │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── truffle │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── contracts │ │ │ │ │ │ │ ├── MyToken.json │ │ │ │ │ │ │ └── MyToken.sol │ │ │ │ │ │ │ ├── package-lock.json │ │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ │ └── truffle-config.js │ │ │ │ │ ├── contract-hello │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Hello.sol │ │ │ │ │ │ ├── index.js │ │ │ │ │ │ ├── package-lock.json │ │ │ │ │ │ └── package.json │ │ │ │ │ └── contract-web3-rpc │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ ├── create-erc20.ts │ │ │ │ │ │ ├── package.json │ │ │ │ │ │ └── tsconfig.json │ │ │ │ ├── node │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── build.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── chain_spec.rs │ │ │ │ │ │ ├── cli.rs │ │ │ │ │ │ ├── command.rs │ │ │ │ │ │ ├── main.rs │ │ │ │ │ │ ├── rpc.rs │ │ │ │ │ │ └── service.rs │ │ │ │ ├── runtime │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── build.rs │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ └── utils │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── README.md │ │ │ │ │ ├── erc20-slot.js │ │ │ │ │ ├── evm-address.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── package-lock.json │ │ │ │ │ └── package.json │ │ │ └── vendor │ │ │ │ ├── ethereum │ │ │ │ ├── .arcconfig │ │ │ │ ├── .gitignore │ │ │ │ ├── .travis.yml │ │ │ │ ├── Cargo.toml │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── block-core │ │ │ │ │ └── Cargo.toml │ │ │ │ ├── block │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── res │ │ │ │ │ │ └── genesis.json │ │ │ │ │ ├── src │ │ │ │ │ │ ├── address.rs │ │ │ │ │ │ ├── block.rs │ │ │ │ │ │ ├── header.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── receipt.rs │ │ │ │ │ │ └── transaction.rs │ │ │ │ │ └── tests │ │ │ │ │ │ └── genesis.rs │ │ │ │ ├── bloom │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── src │ │ │ │ │ ├── account.rs │ │ │ │ │ ├── block.rs │ │ │ │ │ ├── header.rs │ │ │ │ │ ├── lib.rs │ │ │ │ │ ├── log.rs │ │ │ │ │ ├── receipt.rs │ │ │ │ │ └── transaction.rs │ │ │ │ └── trie │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── memory │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── cache.rs │ │ │ │ │ │ ├── gc.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── memory.rs │ │ │ │ │ │ └── mutable.rs │ │ │ │ │ ├── rocksdb │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── src │ │ │ │ │ ├── error.rs │ │ │ │ │ ├── lib.rs │ │ │ │ │ ├── merkle │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── nibble.rs │ │ │ │ │ └── node.rs │ │ │ │ │ └── ops │ │ │ │ │ ├── build.rs │ │ │ │ │ ├── delete.rs │ │ │ │ │ ├── get.rs │ │ │ │ │ ├── insert.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── evm │ │ │ │ ├── .arcconfig │ │ │ │ ├── .editorconfig │ │ │ │ ├── .gitignore │ │ │ │ ├── .travis.yml │ │ │ │ ├── Cargo.toml │ │ │ │ ├── LICENSE │ │ │ │ ├── README.md │ │ │ │ ├── core │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── src │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── eval │ │ │ │ │ │ │ ├── arithmetic.rs │ │ │ │ │ │ │ ├── bitwise.rs │ │ │ │ │ │ │ ├── macros.rs │ │ │ │ │ │ │ ├── misc.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── memory.rs │ │ │ │ │ │ ├── opcode.rs │ │ │ │ │ │ ├── stack.rs │ │ │ │ │ │ ├── utils.rs │ │ │ │ │ │ └── valids.rs │ │ │ │ │ └── tests │ │ │ │ │ │ └── performance.rs │ │ │ │ ├── gasometer │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── consts.rs │ │ │ │ │ │ ├── costs.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── memory.rs │ │ │ │ │ │ └── utils.rs │ │ │ │ ├── runtime │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── context.rs │ │ │ │ │ │ ├── eval │ │ │ │ │ │ ├── macros.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── system.rs │ │ │ │ │ │ ├── handler.rs │ │ │ │ │ │ ├── interrupt.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ └── src │ │ │ │ │ ├── backend │ │ │ │ │ ├── memory.rs │ │ │ │ │ └── mod.rs │ │ │ │ │ ├── executor │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── stack.rs │ │ │ │ │ └── lib.rs │ │ │ │ └── substrate │ │ │ │ ├── .dockerignore │ │ │ │ ├── .editorconfig │ │ │ │ ├── .gitattributes │ │ │ │ ├── .github │ │ │ │ ├── ISSUE_TEMPLATE │ │ │ │ │ └── release.md │ │ │ │ └── workflows │ │ │ │ │ ├── auto-label-issues.yml │ │ │ │ │ ├── auto-label-prs.yml │ │ │ │ │ ├── burnin-label-notification.yml │ │ │ │ │ ├── check-gitlab-pipeline.yml │ │ │ │ │ ├── polkadot-companion-labels.yml │ │ │ │ │ ├── release-bot.yml │ │ │ │ │ ├── release-tagging.yml │ │ │ │ │ └── trigger-review-pipeline.yml │ │ │ │ ├── .gitignore │ │ │ │ ├── .gitlab-ci.yml │ │ │ │ ├── .maintain │ │ │ │ ├── Dockerfile │ │ │ │ ├── build-only-wasm.sh │ │ │ │ ├── deny.toml │ │ │ │ ├── docker │ │ │ │ │ ├── subkey.Dockerfile │ │ │ │ │ └── substrate.Dockerfile │ │ │ │ ├── ensure-deps.sh │ │ │ │ ├── flamingfir-deploy.sh │ │ │ │ ├── getgoing.sh │ │ │ │ ├── github │ │ │ │ │ └── check_gitlab_pipeline.sh │ │ │ │ ├── gitlab │ │ │ │ │ ├── check_labels.sh │ │ │ │ │ ├── check_line_width.sh │ │ │ │ │ ├── check_polkadot_companion_build.sh │ │ │ │ │ ├── check_polkadot_companion_status.sh │ │ │ │ │ ├── check_runtime.sh │ │ │ │ │ ├── check_signed.sh │ │ │ │ │ ├── generate_changelog.sh │ │ │ │ │ ├── lib.sh │ │ │ │ │ ├── publish_draft_release.sh │ │ │ │ │ └── skip_if_draft.sh │ │ │ │ ├── init.sh │ │ │ │ ├── kubernetes │ │ │ │ │ ├── Chart.yaml │ │ │ │ │ ├── README.md │ │ │ │ │ ├── templates │ │ │ │ │ │ ├── poddisruptionbudget.yaml │ │ │ │ │ │ ├── secrets.yaml │ │ │ │ │ │ ├── service.yaml │ │ │ │ │ │ ├── serviceaccount.yaml │ │ │ │ │ │ └── statefulset.yaml │ │ │ │ │ └── values.yaml │ │ │ │ ├── monitoring │ │ │ │ │ ├── alerting-rules │ │ │ │ │ │ ├── alerting-rule-tests.yaml │ │ │ │ │ │ └── alerting-rules.yaml │ │ │ │ │ └── grafana-dashboards │ │ │ │ │ │ ├── README_dashboard.md │ │ │ │ │ │ ├── substrate-dashboard.json │ │ │ │ │ │ └── substrate-networking.json │ │ │ │ ├── node-template-release.sh │ │ │ │ ├── node-template-release │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── main.rs │ │ │ │ ├── rename-crates-for-2.0.sh │ │ │ │ ├── runtime-dep.py │ │ │ │ ├── rustdoc-header.html │ │ │ │ ├── sentry-node │ │ │ │ │ ├── docker-compose.yml │ │ │ │ │ ├── grafana │ │ │ │ │ │ └── provisioning │ │ │ │ │ │ │ ├── dashboards │ │ │ │ │ │ │ └── dashboards.yml │ │ │ │ │ │ │ └── datasources │ │ │ │ │ │ │ └── datasource.yml │ │ │ │ │ └── prometheus │ │ │ │ │ │ └── prometheus.yml │ │ │ │ ├── update-copyright.sh │ │ │ │ └── update-deps.sh │ │ │ │ ├── Cargo.lock │ │ │ │ ├── Cargo.toml │ │ │ │ ├── LICENSE-APACHE2 │ │ │ │ ├── LICENSE-GPL3 │ │ │ │ ├── Process.toml │ │ │ │ ├── README.md │ │ │ │ ├── bin │ │ │ │ ├── node-template │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── README.md │ │ │ │ │ ├── node │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── chain_spec.rs │ │ │ │ │ │ │ ├── cli.rs │ │ │ │ │ │ │ ├── command.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── main.rs │ │ │ │ │ │ │ └── service.rs │ │ │ │ │ ├── pallets │ │ │ │ │ │ └── template │ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ │ └── tests.rs │ │ │ │ │ ├── runtime │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── scripts │ │ │ │ │ │ └── init.sh │ │ │ │ ├── node │ │ │ │ │ ├── bench │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── common.rs │ │ │ │ │ │ │ ├── construct.rs │ │ │ │ │ │ │ ├── core.rs │ │ │ │ │ │ │ ├── generator.rs │ │ │ │ │ │ │ ├── import.rs │ │ │ │ │ │ │ ├── main.rs │ │ │ │ │ │ │ ├── simple_trie.rs │ │ │ │ │ │ │ ├── state_sizes.rs │ │ │ │ │ │ │ ├── tempdb.rs │ │ │ │ │ │ │ └── trie.rs │ │ │ │ │ ├── browser-testing │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ │ └── webdriver.json │ │ │ │ │ ├── cli │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── bin │ │ │ │ │ │ │ └── main.rs │ │ │ │ │ │ ├── browser-demo │ │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ │ ├── README.md │ │ │ │ │ │ │ ├── build.sh │ │ │ │ │ │ │ ├── favicon.png │ │ │ │ │ │ │ └── index.html │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ ├── doc │ │ │ │ │ │ │ └── shell-completion.adoc │ │ │ │ │ │ ├── res │ │ │ │ │ │ │ └── flaming-fir.json │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ ├── browser.rs │ │ │ │ │ │ │ ├── chain_spec.rs │ │ │ │ │ │ │ ├── cli.rs │ │ │ │ │ │ │ ├── command.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── service.rs │ │ │ │ │ │ └── tests │ │ │ │ │ │ │ ├── build_spec_works.rs │ │ │ │ │ │ │ ├── check_block_works.rs │ │ │ │ │ │ │ ├── common.rs │ │ │ │ │ │ │ ├── export_import_flow.rs │ │ │ │ │ │ │ ├── inspect_works.rs │ │ │ │ │ │ │ ├── purge_chain_works.rs │ │ │ │ │ │ │ ├── running_the_node_and_interrupt.rs │ │ │ │ │ │ │ ├── temp_base_path_works.rs │ │ │ │ │ │ │ └── version.rs │ │ │ │ │ ├── executor │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── benches │ │ │ │ │ │ │ └── bench.rs │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ │ └── tests │ │ │ │ │ │ │ ├── basic.rs │ │ │ │ │ │ │ ├── common.rs │ │ │ │ │ │ │ ├── fees.rs │ │ │ │ │ │ │ └── submit_transaction.rs │ │ │ │ │ ├── inspect │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── cli.rs │ │ │ │ │ │ │ ├── command.rs │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── primitives │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── rpc-client │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── main.rs │ │ │ │ │ ├── rpc │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── runtime │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── constants.rs │ │ │ │ │ │ │ ├── impls.rs │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── testing │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ ├── bench.rs │ │ │ │ │ │ ├── client.rs │ │ │ │ │ │ ├── genesis.rs │ │ │ │ │ │ ├── keyring.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ └── utils │ │ │ │ │ ├── chain-spec-builder │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── build.rs │ │ │ │ │ └── src │ │ │ │ │ │ └── main.rs │ │ │ │ │ └── subkey │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── README.adoc │ │ │ │ │ └── src │ │ │ │ │ ├── main.rs │ │ │ │ │ ├── rpc.rs │ │ │ │ │ └── vanity.rs │ │ │ │ ├── client │ │ │ │ ├── api │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── backend.rs │ │ │ │ │ │ ├── call_executor.rs │ │ │ │ │ │ ├── cht.rs │ │ │ │ │ │ ├── client.rs │ │ │ │ │ │ ├── execution_extensions.rs │ │ │ │ │ │ ├── in_mem.rs │ │ │ │ │ │ ├── leaves.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── light.rs │ │ │ │ │ │ ├── notifications.rs │ │ │ │ │ │ └── proof_provider.rs │ │ │ │ ├── authority-discovery │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── build.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── addr_cache.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── schema │ │ │ │ │ │ └── dht.proto │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── basic-authorship │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── basic_authorship.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── block-builder │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── chain-spec │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── derive │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── impls.rs │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── res │ │ │ │ │ │ ├── chain_spec.json │ │ │ │ │ │ └── chain_spec2.json │ │ │ │ │ └── src │ │ │ │ │ │ ├── chain_spec.rs │ │ │ │ │ │ ├── extension.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── cli │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── README.adoc │ │ │ │ │ └── src │ │ │ │ │ │ ├── arg_enums.rs │ │ │ │ │ │ ├── commands │ │ │ │ │ │ ├── build_spec_cmd.rs │ │ │ │ │ │ ├── check_block_cmd.rs │ │ │ │ │ │ ├── export_blocks_cmd.rs │ │ │ │ │ │ ├── export_state_cmd.rs │ │ │ │ │ │ ├── import_blocks_cmd.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── purge_chain_cmd.rs │ │ │ │ │ │ ├── revert_cmd.rs │ │ │ │ │ │ └── run_cmd.rs │ │ │ │ │ │ ├── config.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── logger.rs │ │ │ │ │ │ ├── params │ │ │ │ │ │ ├── database_params.rs │ │ │ │ │ │ ├── import_params.rs │ │ │ │ │ │ ├── keystore_params.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── network_params.rs │ │ │ │ │ │ ├── node_key_params.rs │ │ │ │ │ │ ├── offchain_worker_params.rs │ │ │ │ │ │ ├── pruning_params.rs │ │ │ │ │ │ ├── shared_params.rs │ │ │ │ │ │ └── transaction_pool_params.rs │ │ │ │ │ │ └── runner.rs │ │ │ │ ├── consensus │ │ │ │ │ ├── aura │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── digests.rs │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── babe │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── rpc │ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── authorship.rs │ │ │ │ │ │ │ ├── aux_schema.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── migration.rs │ │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ │ └── verification.rs │ │ │ │ │ ├── common │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── longest_chain.rs │ │ │ │ │ ├── epochs │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── migration.rs │ │ │ │ │ ├── manual-seal │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ │ ├── finalize_block.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── rpc.rs │ │ │ │ │ │ │ └── seal_new_block.rs │ │ │ │ │ ├── pow │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── slots │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── aux_schema.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── slots.rs │ │ │ │ │ └── uncles │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── db │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── bench.rs │ │ │ │ │ │ ├── cache │ │ │ │ │ │ ├── list_cache.rs │ │ │ │ │ │ ├── list_entry.rs │ │ │ │ │ │ ├── list_storage.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── changes_tries_storage.rs │ │ │ │ │ │ ├── children.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── light.rs │ │ │ │ │ │ ├── offchain.rs │ │ │ │ │ │ ├── parity_db.rs │ │ │ │ │ │ ├── stats.rs │ │ │ │ │ │ ├── storage_cache.rs │ │ │ │ │ │ ├── subdb.rs │ │ │ │ │ │ ├── upgrade.rs │ │ │ │ │ │ └── utils.rs │ │ │ │ ├── executor │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── common │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── sandbox.rs │ │ │ │ │ │ │ ├── util.rs │ │ │ │ │ │ │ └── wasm_runtime.rs │ │ │ │ │ ├── runtime-test │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── src │ │ │ │ │ │ ├── integration_tests │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── sandbox.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── native_executor.rs │ │ │ │ │ │ └── wasm_runtime.rs │ │ │ │ │ ├── wasmi │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── wasmtime │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ ├── host.rs │ │ │ │ │ │ ├── imports.rs │ │ │ │ │ │ ├── instance_wrapper.rs │ │ │ │ │ │ ├── instance_wrapper │ │ │ │ │ │ └── globals_snapshot.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── runtime.rs │ │ │ │ │ │ ├── state_holder.rs │ │ │ │ │ │ └── util.rs │ │ │ │ ├── finality-grandpa │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── rpc │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── report.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── authorities.rs │ │ │ │ │ │ ├── aux_schema.rs │ │ │ │ │ │ ├── communication │ │ │ │ │ │ ├── gossip.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── periodic.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ │ │ ├── consensus_changes.rs │ │ │ │ │ │ ├── environment.rs │ │ │ │ │ │ ├── finality_proof.rs │ │ │ │ │ │ ├── import.rs │ │ │ │ │ │ ├── justification.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── light_import.rs │ │ │ │ │ │ ├── observer.rs │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ ├── until_imported.rs │ │ │ │ │ │ └── voting_rule.rs │ │ │ │ ├── informant │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── display.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── keystore │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── light │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── backend.rs │ │ │ │ │ │ ├── blockchain.rs │ │ │ │ │ │ ├── call_executor.rs │ │ │ │ │ │ ├── fetcher.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── network-gossip │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── bridge.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── state_machine.rs │ │ │ │ │ │ └── validator.rs │ │ │ │ ├── network │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── build.rs │ │ │ │ │ ├── src │ │ │ │ │ │ ├── behaviour.rs │ │ │ │ │ │ ├── block_requests.rs │ │ │ │ │ │ ├── chain.rs │ │ │ │ │ │ ├── config.rs │ │ │ │ │ │ ├── discovery.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── finality_requests.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── light_client_handler.rs │ │ │ │ │ │ ├── network_state.rs │ │ │ │ │ │ ├── on_demand_layer.rs │ │ │ │ │ │ ├── peer_info.rs │ │ │ │ │ │ ├── protocol.rs │ │ │ │ │ │ ├── protocol │ │ │ │ │ │ │ ├── event.rs │ │ │ │ │ │ │ ├── generic_proto.rs │ │ │ │ │ │ │ ├── generic_proto │ │ │ │ │ │ │ │ ├── behaviour.rs │ │ │ │ │ │ │ │ ├── handler.rs │ │ │ │ │ │ │ │ ├── handler │ │ │ │ │ │ │ │ │ ├── group.rs │ │ │ │ │ │ │ │ │ ├── legacy.rs │ │ │ │ │ │ │ │ │ ├── notif_in.rs │ │ │ │ │ │ │ │ │ └── notif_out.rs │ │ │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ │ │ ├── upgrade.rs │ │ │ │ │ │ │ │ └── upgrade │ │ │ │ │ │ │ │ │ ├── collec.rs │ │ │ │ │ │ │ │ │ ├── legacy.rs │ │ │ │ │ │ │ │ │ └── notifications.rs │ │ │ │ │ │ │ ├── message.rs │ │ │ │ │ │ │ ├── sync.rs │ │ │ │ │ │ │ ├── sync │ │ │ │ │ │ │ │ ├── blocks.rs │ │ │ │ │ │ │ │ └── extra_requests.rs │ │ │ │ │ │ │ └── util.rs │ │ │ │ │ │ ├── schema.rs │ │ │ │ │ │ ├── schema │ │ │ │ │ │ │ ├── api.v1.proto │ │ │ │ │ │ │ ├── finality.v1.proto │ │ │ │ │ │ │ └── light.v1.proto │ │ │ │ │ │ ├── service.rs │ │ │ │ │ │ ├── service │ │ │ │ │ │ │ ├── out_events.rs │ │ │ │ │ │ │ └── tests.rs │ │ │ │ │ │ ├── transport.rs │ │ │ │ │ │ └── utils.rs │ │ │ │ │ └── test │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ ├── block_import.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── sync.rs │ │ │ │ ├── offchain │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── api.rs │ │ │ │ │ │ ├── api │ │ │ │ │ │ ├── http.rs │ │ │ │ │ │ ├── http_dummy.rs │ │ │ │ │ │ └── timestamp.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── peerset │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── peersstate.rs │ │ │ │ │ └── tests │ │ │ │ │ │ └── fuzz.rs │ │ │ │ ├── proposer-metrics │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── rpc-api │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── author │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── hash.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── chain │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── child_state │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── errors.rs │ │ │ │ │ │ ├── helpers.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── offchain │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── policy.rs │ │ │ │ │ │ ├── state │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── helpers.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ └── system │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── helpers.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ ├── rpc-servers │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── rpc │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── author │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ │ │ ├── chain │ │ │ │ │ │ ├── chain_full.rs │ │ │ │ │ │ ├── chain_light.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── metadata.rs │ │ │ │ │ │ ├── offchain │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ │ │ ├── state │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── state_full.rs │ │ │ │ │ │ ├── state_light.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ │ │ ├── system │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ │ │ └── testing.rs │ │ │ │ ├── service │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── src │ │ │ │ │ │ ├── builder.rs │ │ │ │ │ │ ├── chain_ops │ │ │ │ │ │ │ ├── check_block.rs │ │ │ │ │ │ │ ├── export_blocks.rs │ │ │ │ │ │ │ ├── export_raw_state.rs │ │ │ │ │ │ │ ├── import_blocks.rs │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── revert_chain.rs │ │ │ │ │ │ ├── client │ │ │ │ │ │ │ ├── block_rules.rs │ │ │ │ │ │ │ ├── call_executor.rs │ │ │ │ │ │ │ ├── client.rs │ │ │ │ │ │ │ ├── genesis.rs │ │ │ │ │ │ │ ├── light.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── config.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── metrics.rs │ │ │ │ │ │ ├── task_manager.rs │ │ │ │ │ │ └── task_manager │ │ │ │ │ │ │ └── prometheus_future.rs │ │ │ │ │ └── test │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ ├── client │ │ │ │ │ │ ├── db.rs │ │ │ │ │ │ ├── light.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── state-db │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── noncanonical.rs │ │ │ │ │ │ ├── pruning.rs │ │ │ │ │ │ └── test.rs │ │ │ │ ├── telemetry │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── async_record.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── worker.rs │ │ │ │ │ │ └── worker │ │ │ │ │ │ └── node.rs │ │ │ │ ├── tracing │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ └── transaction-pool │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── graph │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benches │ │ │ │ │ │ └── basics.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── base_pool.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── future.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── listener.rs │ │ │ │ │ │ ├── pool.rs │ │ │ │ │ │ ├── ready.rs │ │ │ │ │ │ ├── rotator.rs │ │ │ │ │ │ ├── tracked_map.rs │ │ │ │ │ │ ├── validated_pool.rs │ │ │ │ │ │ └── watcher.rs │ │ │ │ │ └── src │ │ │ │ │ ├── api.rs │ │ │ │ │ ├── error.rs │ │ │ │ │ ├── lib.rs │ │ │ │ │ ├── metrics.rs │ │ │ │ │ ├── revalidation.rs │ │ │ │ │ └── testing │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── pool.rs │ │ │ │ ├── docs │ │ │ │ ├── CHANGELOG.md │ │ │ │ ├── CODEOWNERS │ │ │ │ ├── CODE_OF_CONDUCT.adoc │ │ │ │ ├── CONTRIBUTING.adoc │ │ │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ │ │ ├── README.adoc │ │ │ │ ├── SECURITY.md │ │ │ │ ├── Structure.adoc │ │ │ │ ├── Upgrade.md │ │ │ │ ├── license_header.txt │ │ │ │ └── media │ │ │ │ │ └── sub.gif │ │ │ │ ├── frame │ │ │ │ ├── assets │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── atomic-swap │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── aura │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── authority-discovery │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── authorship │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── babe │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── equivocation.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── balances │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ ├── tests_composite.rs │ │ │ │ │ │ └── tests_local.rs │ │ │ │ ├── benchmark │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── benchmarking │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── analysis.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ └── utils.rs │ │ │ │ ├── collective │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── contracts │ │ │ │ │ ├── COMPLEXITY.md │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── common │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── fixtures │ │ │ │ │ │ ├── caller_contract.wat │ │ │ │ │ │ ├── check_default_rent_allowance.wat │ │ │ │ │ │ ├── crypto_hashes.wat │ │ │ │ │ │ ├── destroy_and_transfer.wat │ │ │ │ │ │ ├── drain.wat │ │ │ │ │ │ ├── restoration.wat │ │ │ │ │ │ ├── return_from_start_fn.wat │ │ │ │ │ │ ├── return_with_data.wat │ │ │ │ │ │ ├── run_out_of_gas.wat │ │ │ │ │ │ ├── self_destruct.wat │ │ │ │ │ │ ├── self_destructing_constructor.wat │ │ │ │ │ │ ├── set_empty_storage.wat │ │ │ │ │ │ ├── set_rent.wat │ │ │ │ │ │ └── storage_size.wat │ │ │ │ │ ├── rpc │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── runtime-api │ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── exec.rs │ │ │ │ │ │ ├── gas.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── rent.rs │ │ │ │ │ │ ├── storage.rs │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ └── wasm │ │ │ │ │ │ ├── code_cache.rs │ │ │ │ │ │ ├── env_def │ │ │ │ │ │ ├── macros.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── prepare.rs │ │ │ │ │ │ └── runtime.rs │ │ │ │ ├── democracy │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── conviction.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ ├── tests │ │ │ │ │ │ ├── cancellation.rs │ │ │ │ │ │ ├── decoders.rs │ │ │ │ │ │ ├── delegation.rs │ │ │ │ │ │ ├── external_proposing.rs │ │ │ │ │ │ ├── fast_tracking.rs │ │ │ │ │ │ ├── lock_voting.rs │ │ │ │ │ │ ├── preimage.rs │ │ │ │ │ │ ├── public_proposals.rs │ │ │ │ │ │ ├── scheduling.rs │ │ │ │ │ │ └── voting.rs │ │ │ │ │ │ ├── types.rs │ │ │ │ │ │ ├── vote.rs │ │ │ │ │ │ └── vote_threshold.rs │ │ │ │ ├── elections-phragmen │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── elections │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── evm │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── backend.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── example-offchain-worker │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── example │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── executive │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── finality-tracker │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── generic-asset │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── grandpa │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── equivocation.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── identity │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── im-online │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── indices │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── address.rs │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── membership │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── metadata │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── multisig │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── nicks │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── offences │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benchmarking │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── mock.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── proxy │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── randomness-collective-flip │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── recovery │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── scheduler │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── scored-pool │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── session │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benchmarking │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── mock.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── historical │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── offchain.rs │ │ │ │ │ │ ├── onchain.rs │ │ │ │ │ │ └── shared.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── society │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── staking │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── fuzzer │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Cargo.lock │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ │ └── submit_solution.rs │ │ │ │ │ ├── reward-curve │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── log.rs │ │ │ │ │ │ └── tests │ │ │ │ │ │ │ └── test.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── inflation.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ ├── offchain_election.rs │ │ │ │ │ │ ├── slashing.rs │ │ │ │ │ │ ├── testing_utils.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── sudo │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── support │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── procedural │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── src │ │ │ │ │ │ │ ├── construct_runtime │ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ │ └── parse.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── storage │ │ │ │ │ │ │ │ ├── genesis_config │ │ │ │ │ │ │ │ ├── builder_def.rs │ │ │ │ │ │ │ │ ├── genesis_config_def.rs │ │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ │ │ ├── getters.rs │ │ │ │ │ │ │ │ ├── instance_trait.rs │ │ │ │ │ │ │ │ ├── metadata.rs │ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ │ ├── parse.rs │ │ │ │ │ │ │ │ ├── storage_struct.rs │ │ │ │ │ │ │ │ └── store_trait.rs │ │ │ │ │ │ └── tools │ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ │ ├── derive │ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── syn_ext.rs │ │ │ │ │ ├── src │ │ │ │ │ │ ├── debug.rs │ │ │ │ │ │ ├── dispatch.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── event.rs │ │ │ │ │ │ ├── hash.rs │ │ │ │ │ │ ├── inherent.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── metadata.rs │ │ │ │ │ │ ├── origin.rs │ │ │ │ │ │ ├── storage │ │ │ │ │ │ │ ├── child.rs │ │ │ │ │ │ │ ├── generator │ │ │ │ │ │ │ │ ├── double_map.rs │ │ │ │ │ │ │ │ ├── map.rs │ │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ │ └── value.rs │ │ │ │ │ │ │ ├── hashed.rs │ │ │ │ │ │ │ ├── migration.rs │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── unhashed.rs │ │ │ │ │ │ ├── traits.rs │ │ │ │ │ │ ├── unsigned.rs │ │ │ │ │ │ └── weights.rs │ │ │ │ │ └── test │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── src │ │ │ │ │ │ └── lib.rs │ │ │ │ │ │ └── tests │ │ │ │ │ │ ├── construct_runtime.rs │ │ │ │ │ │ ├── construct_runtime_ui.rs │ │ │ │ │ │ ├── construct_runtime_ui │ │ │ │ │ │ ├── abundant_where_param.rs │ │ │ │ │ │ ├── abundant_where_param.stderr │ │ │ │ │ │ ├── double_module_parts.rs │ │ │ │ │ │ ├── double_module_parts.stderr │ │ │ │ │ │ ├── generics_in_invalid_module.rs │ │ │ │ │ │ ├── generics_in_invalid_module.stderr │ │ │ │ │ │ ├── invalid_module_details.rs │ │ │ │ │ │ ├── invalid_module_details.stderr │ │ │ │ │ │ ├── invalid_module_details_keyword.rs │ │ │ │ │ │ ├── invalid_module_details_keyword.stderr │ │ │ │ │ │ ├── invalid_module_entry.rs │ │ │ │ │ │ ├── invalid_module_entry.stderr │ │ │ │ │ │ ├── invalid_token_after_module.rs │ │ │ │ │ │ ├── invalid_token_after_module.stderr │ │ │ │ │ │ ├── invalid_token_after_name.rs │ │ │ │ │ │ ├── invalid_token_after_name.stderr │ │ │ │ │ │ ├── invalid_where_param.rs │ │ │ │ │ │ ├── invalid_where_param.stderr │ │ │ │ │ │ ├── missing_event_generic_on_module_with_instance.rs │ │ │ │ │ │ ├── missing_event_generic_on_module_with_instance.stderr │ │ │ │ │ │ ├── missing_module_instance.rs │ │ │ │ │ │ ├── missing_module_instance.stderr │ │ │ │ │ │ ├── missing_origin_generic_on_module_with_instance.rs │ │ │ │ │ │ ├── missing_origin_generic_on_module_with_instance.stderr │ │ │ │ │ │ ├── missing_system_module.rs │ │ │ │ │ │ ├── missing_system_module.stderr │ │ │ │ │ │ ├── missing_where_block.rs │ │ │ │ │ │ ├── missing_where_block.stderr │ │ │ │ │ │ ├── missing_where_param.rs │ │ │ │ │ │ ├── missing_where_param.stderr │ │ │ │ │ │ ├── no_comma_after_where.rs │ │ │ │ │ │ └── no_comma_after_where.stderr │ │ │ │ │ │ ├── decl_module_ui.rs │ │ │ │ │ │ ├── decl_module_ui │ │ │ │ │ │ ├── reserved_keyword_two_times_integrity_test.rs │ │ │ │ │ │ ├── reserved_keyword_two_times_integrity_test.stderr │ │ │ │ │ │ ├── reserved_keyword_two_times_on_initialize.rs │ │ │ │ │ │ └── reserved_keyword_two_times_on_initialize.stderr │ │ │ │ │ │ ├── decl_storage.rs │ │ │ │ │ │ ├── decl_storage_ui.rs │ │ │ │ │ │ ├── decl_storage_ui │ │ │ │ │ │ ├── config_duplicate.rs │ │ │ │ │ │ ├── config_duplicate.stderr │ │ │ │ │ │ ├── config_get_duplicate.rs │ │ │ │ │ │ ├── config_get_duplicate.stderr │ │ │ │ │ │ ├── get_duplicate.rs │ │ │ │ │ │ └── get_duplicate.stderr │ │ │ │ │ │ ├── final_keys.rs │ │ │ │ │ │ ├── genesisconfig.rs │ │ │ │ │ │ ├── instance.rs │ │ │ │ │ │ ├── issue2219.rs │ │ │ │ │ │ ├── reserved_keyword.rs │ │ │ │ │ │ ├── reserved_keyword │ │ │ │ │ │ ├── on_initialize.rs │ │ │ │ │ │ └── on_initialize.stderr │ │ │ │ │ │ ├── storage_transaction.rs │ │ │ │ │ │ └── system.rs │ │ │ │ ├── system │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benches │ │ │ │ │ │ └── bench.rs │ │ │ │ │ ├── benchmarking │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── mock.rs │ │ │ │ │ ├── rpc │ │ │ │ │ │ └── runtime-api │ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── check_genesis.rs │ │ │ │ │ │ ├── check_mortality.rs │ │ │ │ │ │ ├── check_nonce.rs │ │ │ │ │ │ ├── check_spec_version.rs │ │ │ │ │ │ ├── check_tx_version.rs │ │ │ │ │ │ ├── check_weight.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ ├── offchain.rs │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ └── weights.rs │ │ │ │ ├── timestamp │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── transaction-payment │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── rpc │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── runtime-api │ │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ │ └── src │ │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── treasury │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── utility │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ └── vesting │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ ├── benchmarking.rs │ │ │ │ │ └── lib.rs │ │ │ │ ├── primitives │ │ │ │ ├── allocator │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── freeing_bump.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── api │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── proc-macro │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── decl_runtime_apis.rs │ │ │ │ │ │ │ ├── impl_runtime_apis.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── mock_impl_runtime_apis.rs │ │ │ │ │ │ │ └── utils.rs │ │ │ │ │ ├── src │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── test │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── benches │ │ │ │ │ │ └── bench.rs │ │ │ │ │ │ └── tests │ │ │ │ │ │ ├── decl_and_impl.rs │ │ │ │ │ │ ├── runtime_calls.rs │ │ │ │ │ │ ├── trybuild.rs │ │ │ │ │ │ └── ui │ │ │ │ │ │ ├── adding_self_parameter.rs │ │ │ │ │ │ ├── adding_self_parameter.stderr │ │ │ │ │ │ ├── changed_in_no_default_method.rs │ │ │ │ │ │ ├── changed_in_no_default_method.stderr │ │ │ │ │ │ ├── changed_in_unknown_version.rs │ │ │ │ │ │ ├── changed_in_unknown_version.stderr │ │ │ │ │ │ ├── declaring_old_block.rs │ │ │ │ │ │ ├── declaring_old_block.stderr │ │ │ │ │ │ ├── declaring_own_block_with_different_name.rs │ │ │ │ │ │ ├── declaring_own_block_with_different_name.stderr │ │ │ │ │ │ ├── empty_impl_runtime_apis_call.rs │ │ │ │ │ │ ├── empty_impl_runtime_apis_call.stderr │ │ │ │ │ │ ├── impl_incorrect_method_signature.rs │ │ │ │ │ │ ├── impl_incorrect_method_signature.stderr │ │ │ │ │ │ ├── impl_two_traits_with_same_name.rs │ │ │ │ │ │ ├── impl_two_traits_with_same_name.stderr │ │ │ │ │ │ ├── invalid_api_version.rs │ │ │ │ │ │ ├── invalid_api_version.stderr │ │ │ │ │ │ ├── invalid_api_version_2.rs │ │ │ │ │ │ ├── invalid_api_version_2.stderr │ │ │ │ │ │ ├── invalid_api_version_3.rs │ │ │ │ │ │ ├── invalid_api_version_3.stderr │ │ │ │ │ │ ├── missing_block_generic_parameter.rs │ │ │ │ │ │ ├── missing_block_generic_parameter.stderr │ │ │ │ │ │ ├── missing_path_for_trait.rs │ │ │ │ │ │ ├── missing_path_for_trait.stderr │ │ │ │ │ │ ├── mock_only_error_associated_type.rs │ │ │ │ │ │ ├── mock_only_error_associated_type.stderr │ │ │ │ │ │ ├── mock_only_one_block_type.rs │ │ │ │ │ │ ├── mock_only_one_block_type.stderr │ │ │ │ │ │ ├── mock_only_one_error_type.rs │ │ │ │ │ │ ├── mock_only_one_error_type.stderr │ │ │ │ │ │ ├── mock_only_one_self_type.rs │ │ │ │ │ │ ├── mock_only_one_self_type.stderr │ │ │ │ │ │ ├── mock_only_self_reference.rs │ │ │ │ │ │ ├── mock_only_self_reference.stderr │ │ │ │ │ │ ├── type_reference_in_impl_runtime_apis_call.rs │ │ │ │ │ │ └── type_reference_in_impl_runtime_apis_call.stderr │ │ │ │ ├── application-crypto │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── src │ │ │ │ │ │ ├── ecdsa.rs │ │ │ │ │ │ ├── ed25519.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── sr25519.rs │ │ │ │ │ │ └── traits.rs │ │ │ │ │ └── test │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ ├── ecdsa.rs │ │ │ │ │ │ ├── ed25519.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── sr25519.rs │ │ │ │ ├── arithmetic │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benches │ │ │ │ │ │ └── bench.rs │ │ │ │ │ ├── fuzzer │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── biguint.rs │ │ │ │ │ │ │ ├── fixed_point.rs │ │ │ │ │ │ │ ├── normalize.rs │ │ │ │ │ │ │ ├── per_thing_rational.rs │ │ │ │ │ │ │ └── rational128.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── biguint.rs │ │ │ │ │ │ ├── fixed_point.rs │ │ │ │ │ │ ├── helpers_128bit.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── per_things.rs │ │ │ │ │ │ ├── rational128.rs │ │ │ │ │ │ └── traits.rs │ │ │ │ ├── authority-discovery │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── authorship │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── block-builder │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── blockchain │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── backend.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── header_metadata.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── chain-spec │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── consensus │ │ │ │ │ ├── aura │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── inherents.rs │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── babe │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── digests.rs │ │ │ │ │ │ │ ├── inherents.rs │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── common │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── block_import.rs │ │ │ │ │ │ │ ├── block_validation.rs │ │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ │ ├── evaluation.rs │ │ │ │ │ │ │ ├── import_queue.rs │ │ │ │ │ │ │ ├── import_queue │ │ │ │ │ │ │ ├── basic_queue.rs │ │ │ │ │ │ │ └── buffered_link.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── metrics.rs │ │ │ │ │ │ │ ├── offline_tracker.rs │ │ │ │ │ │ │ └── select_chain.rs │ │ │ │ │ ├── pow │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── slots │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── vrf │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── schnorrkel.rs │ │ │ │ ├── core │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benches │ │ │ │ │ │ └── bench.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── changes_trie.rs │ │ │ │ │ │ ├── crypto.rs │ │ │ │ │ │ ├── ecdsa.rs │ │ │ │ │ │ ├── ed25519.rs │ │ │ │ │ │ ├── hash.rs │ │ │ │ │ │ ├── hasher.rs │ │ │ │ │ │ ├── hashing.rs │ │ │ │ │ │ ├── hexdisplay.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── offchain │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── storage.rs │ │ │ │ │ │ └── testing.rs │ │ │ │ │ │ ├── sandbox.rs │ │ │ │ │ │ ├── sr25519.rs │ │ │ │ │ │ ├── tasks.rs │ │ │ │ │ │ ├── testing.rs │ │ │ │ │ │ ├── traits.rs │ │ │ │ │ │ ├── u32_trait.rs │ │ │ │ │ │ ├── uint.rs │ │ │ │ │ │ └── vrf.rs │ │ │ │ ├── database │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── kvdb.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── mem.rs │ │ │ │ ├── debug-derive │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── src │ │ │ │ │ │ ├── impls.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── tests │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── externalities │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── extensions.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── scope_limited.rs │ │ │ │ ├── finality-grandpa │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── finality-tracker │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── inherents │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── io │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── batch_verifier.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── keyring │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── ed25519.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── sr25519.rs │ │ │ │ ├── npos-elections │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benches │ │ │ │ │ │ └── phragmen.rs │ │ │ │ │ ├── compact │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── assignment.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── staked.rs │ │ │ │ │ ├── fuzzer │ │ │ │ │ │ ├── .gitignore │ │ │ │ │ │ ├── Cargo.lock │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── balance_solution.rs │ │ │ │ │ │ │ ├── common.rs │ │ │ │ │ │ │ └── reduce.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── helpers.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── mock.rs │ │ │ │ │ │ ├── node.rs │ │ │ │ │ │ ├── reduce.rs │ │ │ │ │ │ └── tests.rs │ │ │ │ ├── offchain │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── panic-handler │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── rpc │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── list.rs │ │ │ │ │ │ └── number.rs │ │ │ │ ├── runtime-interface │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── proc-macro │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ ├── pass_by │ │ │ │ │ │ │ ├── codec.rs │ │ │ │ │ │ │ ├── enum_.rs │ │ │ │ │ │ │ ├── inner.rs │ │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ │ ├── runtime_interface │ │ │ │ │ │ │ ├── bare_function_interface.rs │ │ │ │ │ │ │ ├── host_function_interface.rs │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ └── trait_decl_impl.rs │ │ │ │ │ │ │ └── utils.rs │ │ │ │ │ ├── src │ │ │ │ │ │ ├── host.rs │ │ │ │ │ │ ├── impls.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── pass_by.rs │ │ │ │ │ │ ├── util.rs │ │ │ │ │ │ └── wasm.rs │ │ │ │ │ ├── test-wasm-deprecated │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── test-wasm │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── test │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── tests │ │ │ │ │ │ ├── ui.rs │ │ │ │ │ │ └── ui │ │ │ │ │ │ ├── no_duplicate_versions.rs │ │ │ │ │ │ ├── no_duplicate_versions.stderr │ │ │ │ │ │ ├── no_gaps_in_versions.rs │ │ │ │ │ │ ├── no_gaps_in_versions.stderr │ │ │ │ │ │ ├── no_generic_parameters_method.rs │ │ │ │ │ │ ├── no_generic_parameters_method.stderr │ │ │ │ │ │ ├── no_generic_parameters_trait.rs │ │ │ │ │ │ ├── no_generic_parameters_trait.stderr │ │ │ │ │ │ ├── no_method_implementation.rs │ │ │ │ │ │ ├── no_method_implementation.stderr │ │ │ │ │ │ ├── pass_by_enum_with_struct.rs │ │ │ │ │ │ ├── pass_by_enum_with_struct.stderr │ │ │ │ │ │ ├── pass_by_enum_with_value_variant.rs │ │ │ │ │ │ ├── pass_by_enum_with_value_variant.stderr │ │ │ │ │ │ ├── pass_by_inner_with_two_fields.rs │ │ │ │ │ │ ├── pass_by_inner_with_two_fields.stderr │ │ │ │ │ │ ├── take_self_by_value.rs │ │ │ │ │ │ └── take_self_by_value.stderr │ │ │ │ ├── runtime │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── curve.rs │ │ │ │ │ │ ├── generic │ │ │ │ │ │ ├── block.rs │ │ │ │ │ │ ├── checked_extrinsic.rs │ │ │ │ │ │ ├── digest.rs │ │ │ │ │ │ ├── era.rs │ │ │ │ │ │ ├── header.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── tests.rs │ │ │ │ │ │ └── unchecked_extrinsic.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── offchain │ │ │ │ │ │ ├── http.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── storage.rs │ │ │ │ │ │ └── storage_lock.rs │ │ │ │ │ │ ├── random_number_generator.rs │ │ │ │ │ │ ├── runtime_string.rs │ │ │ │ │ │ ├── testing.rs │ │ │ │ │ │ ├── traits.rs │ │ │ │ │ │ └── transaction_validity.rs │ │ │ │ ├── sandbox │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── src │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── with_std.rs │ │ │ │ │ └── without_std.rs │ │ │ │ ├── serializer │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── session │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── sr-api │ │ │ │ │ └── proc-macro │ │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── staking │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── offence.rs │ │ │ │ ├── state-machine │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── backend.rs │ │ │ │ │ │ ├── basic.rs │ │ │ │ │ │ ├── changes_trie │ │ │ │ │ │ ├── build.rs │ │ │ │ │ │ ├── build_cache.rs │ │ │ │ │ │ ├── build_iterator.rs │ │ │ │ │ │ ├── changes_iterator.rs │ │ │ │ │ │ ├── input.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ ├── prune.rs │ │ │ │ │ │ ├── storage.rs │ │ │ │ │ │ └── surface_iterator.rs │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── ext.rs │ │ │ │ │ │ ├── in_memory_backend.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── overlayed_changes │ │ │ │ │ │ ├── changeset.rs │ │ │ │ │ │ └── mod.rs │ │ │ │ │ │ ├── proving_backend.rs │ │ │ │ │ │ ├── read_only.rs │ │ │ │ │ │ ├── stats.rs │ │ │ │ │ │ ├── testing.rs │ │ │ │ │ │ ├── trie_backend.rs │ │ │ │ │ │ └── trie_backend_essence.rs │ │ │ │ ├── std │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── src │ │ │ │ │ │ └── lib.rs │ │ │ │ │ ├── with_std.rs │ │ │ │ │ └── without_std.rs │ │ │ │ ├── storage │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── test-primitives │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── timestamp │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── tracing │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── proxy.rs │ │ │ │ ├── transaction-pool │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── pool.rs │ │ │ │ │ │ └── runtime_api.rs │ │ │ │ ├── trie │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── benches │ │ │ │ │ │ └── bench.rs │ │ │ │ │ └── src │ │ │ │ │ │ ├── error.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── node_codec.rs │ │ │ │ │ │ ├── node_header.rs │ │ │ │ │ │ ├── storage_proof.rs │ │ │ │ │ │ └── trie_stream.rs │ │ │ │ ├── utils │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ ├── metrics.rs │ │ │ │ │ │ ├── mpsc.rs │ │ │ │ │ │ └── status_sinks.rs │ │ │ │ ├── version │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ └── wasm-interface │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ ├── lib.rs │ │ │ │ │ └── wasmi_impl.rs │ │ │ │ ├── test-utils │ │ │ │ ├── Cargo.toml │ │ │ │ ├── client │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── client_ext.rs │ │ │ │ │ │ └── lib.rs │ │ │ │ ├── runtime │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ ├── build.rs │ │ │ │ │ ├── client │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ │ ├── block_builder_ext.rs │ │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ │ └── trait_tests.rs │ │ │ │ │ ├── src │ │ │ │ │ │ ├── genesismap.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── system.rs │ │ │ │ │ └── transaction-pool │ │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ └── src │ │ │ │ │ └── lib.rs │ │ │ │ └── utils │ │ │ │ ├── browser │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ │ └── lib.rs │ │ │ │ ├── build-script-utils │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ │ ├── git.rs │ │ │ │ │ ├── lib.rs │ │ │ │ │ └── version.rs │ │ │ │ ├── fork-tree │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ │ └── lib.rs │ │ │ │ ├── frame │ │ │ │ ├── benchmarking-cli │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ ├── command.rs │ │ │ │ │ │ ├── lib.rs │ │ │ │ │ │ └── writer.rs │ │ │ │ └── rpc │ │ │ │ │ ├── support │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ │ └── lib.rs │ │ │ │ │ └── system │ │ │ │ │ ├── Cargo.toml │ │ │ │ │ └── src │ │ │ │ │ └── lib.rs │ │ │ │ ├── prometheus │ │ │ │ ├── Cargo.toml │ │ │ │ ├── README.md │ │ │ │ └── src │ │ │ │ │ ├── lib.rs │ │ │ │ │ └── networking.rs │ │ │ │ ├── wasm-builder-runner │ │ │ │ ├── Cargo.toml │ │ │ │ ├── README.md │ │ │ │ └── src │ │ │ │ │ └── lib.rs │ │ │ │ └── wasm-builder │ │ │ │ ├── Cargo.toml │ │ │ │ ├── README.md │ │ │ │ └── src │ │ │ │ ├── lib.rs │ │ │ │ ├── prerequisites.rs │ │ │ │ └── wasm_project.rs │ │ └── web3example │ │ │ ├── balances.js │ │ │ ├── package-lock.json │ │ │ ├── package.json │ │ │ └── tx.js │ ├── lesson12 │ │ └── Benchmark and Launch.pdf │ ├── lesson2 │ │ ├── part1_Runtime_Macros.pdf │ │ ├── part2_Storage_Design.pdf │ │ └── part3_PoE_Module_Development.pdf │ ├── lesson3 │ │ ├── lesson3_part1_runtime_module_test.pdf │ │ ├── lesson3_part2_UI.pdf │ │ └── lesson3_part3_fees_and_weight.pdf │ ├── lesson4 │ │ ├── 4.1-Polkadot-JS App.pdf │ │ ├── 4.2-Polkadot-JS API.pdf │ │ └── 4.3-使用 Front-end template.pdf │ ├── lesson5 │ │ └── lesson5.pdf │ ├── lesson6 │ │ └── lesson6.pdf │ ├── lesson7 │ │ └── lecture_7.pdf │ ├── lesson8 │ │ └── lesson8.pdf │ └── lesson9 │ │ └── lesson9.pdf ├── term-02 │ ├── 03-kitties │ │ ├── README.md │ │ ├── frontend │ │ │ ├── .circleci │ │ │ │ └── config.yml │ │ │ ├── .env │ │ │ ├── .gitignore │ │ │ ├── .nvmrc │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── docs │ │ │ │ └── kitties-screenshot01.png │ │ │ ├── package.json │ │ │ ├── public │ │ │ │ ├── assets │ │ │ │ │ ├── KittyAvatar │ │ │ │ │ │ ├── accessorie_1.png │ │ │ │ │ │ ├── accessorie_10.png │ │ │ │ │ │ ├── accessorie_11.png │ │ │ │ │ │ ├── accessorie_12.png │ │ │ │ │ │ ├── accessorie_13.png │ │ │ │ │ │ ├── accessorie_14.png │ │ │ │ │ │ ├── accessorie_15.png │ │ │ │ │ │ ├── accessorie_16.png │ │ │ │ │ │ ├── accessorie_17.png │ │ │ │ │ │ ├── accessorie_18.png │ │ │ │ │ │ ├── accessorie_19.png │ │ │ │ │ │ ├── accessorie_2.png │ │ │ │ │ │ ├── accessorie_20.png │ │ │ │ │ │ ├── accessorie_3.png │ │ │ │ │ │ ├── accessorie_4.png │ │ │ │ │ │ ├── accessorie_5.png │ │ │ │ │ │ ├── accessorie_6.png │ │ │ │ │ │ ├── accessorie_7.png │ │ │ │ │ │ ├── accessorie_8.png │ │ │ │ │ │ ├── accessorie_9.png │ │ │ │ │ │ ├── body_1.png │ │ │ │ │ │ ├── body_10.png │ │ │ │ │ │ ├── body_11.png │ │ │ │ │ │ ├── body_12.png │ │ │ │ │ │ ├── body_13.png │ │ │ │ │ │ ├── body_14.png │ │ │ │ │ │ ├── body_15.png │ │ │ │ │ │ ├── body_2.png │ │ │ │ │ │ ├── body_3.png │ │ │ │ │ │ ├── body_4.png │ │ │ │ │ │ ├── body_5.png │ │ │ │ │ │ ├── body_6.png │ │ │ │ │ │ ├── body_7.png │ │ │ │ │ │ ├── body_8.png │ │ │ │ │ │ ├── body_9.png │ │ │ │ │ │ ├── eyes_1.png │ │ │ │ │ │ ├── eyes_10.png │ │ │ │ │ │ ├── eyes_11.png │ │ │ │ │ │ ├── eyes_12.png │ │ │ │ │ │ ├── eyes_13.png │ │ │ │ │ │ ├── eyes_14.png │ │ │ │ │ │ ├── eyes_15.png │ │ │ │ │ │ ├── eyes_2.png │ │ │ │ │ │ ├── eyes_3.png │ │ │ │ │ │ ├── eyes_4.png │ │ │ │ │ │ ├── eyes_5.png │ │ │ │ │ │ ├── eyes_6.png │ │ │ │ │ │ ├── eyes_7.png │ │ │ │ │ │ ├── eyes_8.png │ │ │ │ │ │ ├── eyes_9.png │ │ │ │ │ │ ├── fur_1.png │ │ │ │ │ │ ├── fur_10.png │ │ │ │ │ │ ├── fur_2.png │ │ │ │ │ │ ├── fur_3.png │ │ │ │ │ │ ├── fur_4.png │ │ │ │ │ │ ├── fur_5.png │ │ │ │ │ │ ├── fur_6.png │ │ │ │ │ │ ├── fur_7.png │ │ │ │ │ │ ├── fur_8.png │ │ │ │ │ │ ├── fur_9.png │ │ │ │ │ │ ├── mouth_1.png │ │ │ │ │ │ ├── mouth_10.png │ │ │ │ │ │ ├── mouth_2.png │ │ │ │ │ │ ├── mouth_3.png │ │ │ │ │ │ ├── mouth_4.png │ │ │ │ │ │ ├── mouth_5.png │ │ │ │ │ │ ├── mouth_6.png │ │ │ │ │ │ ├── mouth_7.png │ │ │ │ │ │ ├── mouth_8.png │ │ │ │ │ │ ├── mouth_9.png │ │ │ │ │ │ ├── zz_1.png │ │ │ │ │ │ └── zz_2.png │ │ │ │ │ ├── favicon.ico │ │ │ │ │ └── substrate-logo.png │ │ │ │ ├── index.html │ │ │ │ └── manifest.json │ │ │ ├── src │ │ │ │ ├── AccountSelector.js │ │ │ │ ├── App.js │ │ │ │ ├── Balances.js │ │ │ │ ├── BlockNumber.js │ │ │ │ ├── Events.js │ │ │ │ ├── Interactor.js │ │ │ │ ├── Kitties.js │ │ │ │ ├── KittyAvatar.js │ │ │ │ ├── KittyCards.js │ │ │ │ ├── Metadata.js │ │ │ │ ├── NodeInfo.js │ │ │ │ ├── TemplateModule.js │ │ │ │ ├── Transfer.js │ │ │ │ ├── Upgrade.js │ │ │ │ ├── __tests__ │ │ │ │ │ └── App.js │ │ │ │ ├── config │ │ │ │ │ ├── common.json │ │ │ │ │ ├── development.json │ │ │ │ │ ├── index.js │ │ │ │ │ ├── production.json │ │ │ │ │ ├── test.json │ │ │ │ │ └── types.json │ │ │ │ ├── index.js │ │ │ │ └── substrate-lib │ │ │ │ │ ├── SubstrateContext.js │ │ │ │ │ ├── components │ │ │ │ │ ├── DeveloperConsole.js │ │ │ │ │ ├── TxButton.js │ │ │ │ │ └── index.js │ │ │ │ │ ├── index.js │ │ │ │ │ └── utils.js │ │ │ └── yarn.lock │ │ ├── lecture-notes.md │ │ └── substrate │ │ │ ├── .devcontainer │ │ │ ├── Dockerfile │ │ │ └── devcontainer.json │ │ │ ├── .gitignore │ │ │ ├── Cargo.lock │ │ │ ├── Cargo.toml │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── docker-compose.yml │ │ │ ├── node │ │ │ ├── Cargo.toml │ │ │ ├── build.rs │ │ │ └── src │ │ │ │ ├── chain_spec.rs │ │ │ │ ├── cli.rs │ │ │ │ ├── command.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── main.rs │ │ │ │ ├── rpc.rs │ │ │ │ └── service.rs │ │ │ ├── pallets │ │ │ ├── kitties │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ │ ├── lib.rs │ │ │ │ │ └── link.rs │ │ │ └── template │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ ├── lib.rs │ │ │ │ ├── mock.rs │ │ │ │ └── tests.rs │ │ │ ├── runtime │ │ │ ├── Cargo.toml │ │ │ ├── build.rs │ │ │ └── src │ │ │ │ └── lib.rs │ │ │ └── scripts │ │ │ ├── docker_run.sh │ │ │ └── init.sh │ └── 04-ocw │ │ ├── .editorconfig │ │ ├── .gitignore │ │ ├── README.md │ │ ├── assets │ │ ├── hash-func.jpg │ │ ├── multiple-ocws.png │ │ ├── off-chain-workers-v2.png │ │ └── sr25519-algo.png │ │ ├── assignment │ │ └── .keep │ │ ├── lecture-demo │ │ ├── Cargo.lock │ │ ├── Cargo.toml │ │ ├── LICENSE │ │ ├── node │ │ │ ├── Cargo.toml │ │ │ ├── build.rs │ │ │ └── src │ │ │ │ ├── chain_spec.rs │ │ │ │ ├── cli.rs │ │ │ │ ├── command.rs │ │ │ │ ├── lib.rs │ │ │ │ ├── main.rs │ │ │ │ ├── rpc.rs │ │ │ │ └── service.rs │ │ ├── pallets │ │ │ ├── ocw-demo │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ │ ├── lib.rs │ │ │ │ │ └── tests.rs │ │ │ └── template │ │ │ │ ├── Cargo.toml │ │ │ │ └── src │ │ │ │ ├── lib.rs │ │ │ │ ├── mock.rs │ │ │ │ └── tests.rs │ │ ├── runtime │ │ │ ├── Cargo.toml │ │ │ ├── build.rs │ │ │ └── src │ │ │ │ ├── lib.rs │ │ │ │ └── multiaddress.rs │ │ └── scripts │ │ │ ├── docker_run.sh │ │ │ └── init.sh │ │ └── substrate │ │ ├── frame │ │ └── im-online │ │ │ ├── Cargo.toml │ │ │ ├── README.md │ │ │ └── src │ │ │ ├── benchmarking.rs │ │ │ ├── lib.rs │ │ │ ├── mock.rs │ │ │ ├── tests.rs │ │ │ └── weights.rs │ │ └── runtime │ │ └── src │ │ ├── constants.rs │ │ ├── impls.rs │ │ └── lib.rs └── term-03 │ └── 03_polkadot-js-api │ ├── README.md │ ├── course-notes.md │ ├── js-component │ ├── index.js │ ├── package.json │ └── yarn.lock │ └── kitties │ ├── README.md │ ├── frontend │ ├── .env │ ├── .gitignore │ ├── .nvmrc │ ├── .yarn │ │ ├── plugins │ │ │ └── @yarnpkg │ │ │ │ └── plugin-interactive-tools.cjs │ │ └── releases │ │ │ └── yarn-berry.cjs │ ├── .yarnrc.yml │ ├── LICENSE │ ├── README.md │ ├── config-overrides.js │ ├── docs │ │ └── kitties-screenshot01.png │ ├── package.json │ ├── public │ │ ├── assets │ │ │ ├── KittyAvatar │ │ │ │ ├── accessorie_1.png │ │ │ │ ├── accessorie_10.png │ │ │ │ ├── accessorie_11.png │ │ │ │ ├── accessorie_12.png │ │ │ │ ├── accessorie_13.png │ │ │ │ ├── accessorie_14.png │ │ │ │ ├── accessorie_15.png │ │ │ │ ├── accessorie_16.png │ │ │ │ ├── accessorie_17.png │ │ │ │ ├── accessorie_18.png │ │ │ │ ├── accessorie_19.png │ │ │ │ ├── accessorie_2.png │ │ │ │ ├── accessorie_20.png │ │ │ │ ├── accessorie_3.png │ │ │ │ ├── accessorie_4.png │ │ │ │ ├── accessorie_5.png │ │ │ │ ├── accessorie_6.png │ │ │ │ ├── accessorie_7.png │ │ │ │ ├── accessorie_8.png │ │ │ │ ├── accessorie_9.png │ │ │ │ ├── body_1.png │ │ │ │ ├── body_10.png │ │ │ │ ├── body_11.png │ │ │ │ ├── body_12.png │ │ │ │ ├── body_13.png │ │ │ │ ├── body_14.png │ │ │ │ ├── body_15.png │ │ │ │ ├── body_2.png │ │ │ │ ├── body_3.png │ │ │ │ ├── body_4.png │ │ │ │ ├── body_5.png │ │ │ │ ├── body_6.png │ │ │ │ ├── body_7.png │ │ │ │ ├── body_8.png │ │ │ │ ├── body_9.png │ │ │ │ ├── eyes_1.png │ │ │ │ ├── eyes_10.png │ │ │ │ ├── eyes_11.png │ │ │ │ ├── eyes_12.png │ │ │ │ ├── eyes_13.png │ │ │ │ ├── eyes_14.png │ │ │ │ ├── eyes_15.png │ │ │ │ ├── eyes_2.png │ │ │ │ ├── eyes_3.png │ │ │ │ ├── eyes_4.png │ │ │ │ ├── eyes_5.png │ │ │ │ ├── eyes_6.png │ │ │ │ ├── eyes_7.png │ │ │ │ ├── eyes_8.png │ │ │ │ ├── eyes_9.png │ │ │ │ ├── fur_1.png │ │ │ │ ├── fur_10.png │ │ │ │ ├── fur_2.png │ │ │ │ ├── fur_3.png │ │ │ │ ├── fur_4.png │ │ │ │ ├── fur_5.png │ │ │ │ ├── fur_6.png │ │ │ │ ├── fur_7.png │ │ │ │ ├── fur_8.png │ │ │ │ ├── fur_9.png │ │ │ │ ├── mouth_1.png │ │ │ │ ├── mouth_10.png │ │ │ │ ├── mouth_2.png │ │ │ │ ├── mouth_3.png │ │ │ │ ├── mouth_4.png │ │ │ │ ├── mouth_5.png │ │ │ │ ├── mouth_6.png │ │ │ │ ├── mouth_7.png │ │ │ │ ├── mouth_8.png │ │ │ │ ├── mouth_9.png │ │ │ │ ├── zz_1.png │ │ │ │ └── zz_2.png │ │ │ ├── favicon.ico │ │ │ └── substrate-logo.png │ │ ├── index.html │ │ └── manifest.json │ ├── src │ │ ├── AccountSelector.js │ │ ├── App.js │ │ ├── Balances.js │ │ ├── BlockNumber.js │ │ ├── Events.js │ │ ├── Interactor.js │ │ ├── Kitties.js │ │ ├── KittyAvatar.js │ │ ├── KittyCards.js │ │ ├── Metadata.js │ │ ├── NodeInfo.js │ │ ├── TemplateModule.js │ │ ├── Transfer.js │ │ ├── Upgrade.js │ │ ├── __tests__ │ │ │ └── App.js │ │ ├── config │ │ │ ├── common.json │ │ │ ├── development.json │ │ │ ├── index.js │ │ │ ├── production.json │ │ │ ├── test.json │ │ │ └── types.json │ │ ├── index.js │ │ └── substrate-lib │ │ │ ├── SubstrateContext.js │ │ │ ├── components │ │ │ ├── DeveloperConsole.js │ │ │ ├── TxButton.js │ │ │ └── index.js │ │ │ ├── index.js │ │ │ └── utils.js │ └── yarn.lock │ └── node │ ├── Cargo.lock │ ├── Cargo.toml │ ├── LICENSE │ ├── README.md │ ├── docker-compose.yml │ ├── docs │ └── rust-setup.md │ ├── node │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ ├── chain_spec.rs │ │ ├── cli.rs │ │ ├── command.rs │ │ ├── lib.rs │ │ ├── main.rs │ │ ├── rpc.rs │ │ └── service.rs │ ├── pallets │ ├── kitties │ │ ├── Cargo.toml │ │ └── src │ │ │ └── lib.rs │ └── template │ │ ├── Cargo.toml │ │ ├── README.md │ │ └── src │ │ ├── benchmarking.rs │ │ ├── lib.rs │ │ ├── mock.rs │ │ └── tests.rs │ ├── runtime │ ├── Cargo.toml │ ├── build.rs │ └── src │ │ └── lib.rs │ ├── scripts │ ├── docker_run.sh │ └── init.sh │ └── shell.nix ├── outline.md └── primer ├── term-01 ├── lesson0 │ └── Primer Course Preview.pdf ├── lesson1 │ └── 什么是区块链.pdf ├── lesson2 │ ├── 1_1_Intro_to_Polkadot.pdf │ ├── 1_2_Intro_to_Substrate.pdf │ └── 1_3_Substrate_Node_Template.pdf ├── lesson3 │ └── rust-lang-guide-1.pdf ├── lesson4 │ └── rust-lang-guide-2.pdf ├── lesson5 │ └── 创建第一条区块链应用.pdf ├── lesson6 │ ├── 6.1-Polkadot-JS-app.pdf │ ├── 6.2-Polkadot-JS-api.pdf │ └── assignment.txt └── lesson7 │ ├── PoE Module Development for Primer Course.pdf │ ├── Runtime Macros for Primer Course.pdf │ └── Storage Design for Primer Course.pdf └── term-05 ├── 00-intro └── Term2 Primer Course Preview.pdf ├── 06-polkadot-js-app-api ├── README.md └── js-component │ ├── index.js │ ├── package.json │ └── yarn.lock └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | *.jpg filter=lfs diff=lfs merge=lfs -text 2 | *.pdf filter=lfs diff=lfs merge=lfs -text 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | **/node_modules 3 | **/.vscode 4 | .eslintcache 5 | # Setting for non zero-installs (https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored) 6 | **/.yarn/* 7 | !**/.yarn/releases 8 | !**/.yarn/plugins 9 | !**/.yarn/sdks 10 | !**/.yarn/versions 11 | **/.pnp.* 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Slides 2 | 3 | This repo contains all the slides used in the course. 4 | 5 | Course outline, [click here](./outline.md) 6 | 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson0/course_preview.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:75e2adaea2d643ad6240558a33fc7ff0c2cac8964a1b59e4aa0c1a7f8208f5b1 3 | size 1021385 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson1/1_1_Intro_to_Polkadot.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:df1db40965a5d996e5dfe3a187c6f4472892a1e15639de2d0bffc789fdd35d84 3 | size 2407232 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson1/1_2_Intro_to_Substrate.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7c7d58b86bbc5707f47a3d4cee0cdb6b5ab2e4dd58fb328927f878ff108f0281 3 | size 2303447 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson1/1_3_Substrate_Node_Template.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5bdfb4d2d247094b466280223ed0f0e29aaf2ae42247a2c7d4b555945f07b55f 3 | size 642524 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson10/ink!.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4a5a0ba3e8513866cc2781a358a3234d9b6493bf9a61c2702efbcf992efaa4b0 3 | size 2203274 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/Lesson11指令.md: -------------------------------------------------------------------------------- 1 | # Lesson11指令 2 | 3 | ## 操作账户 4 | 5 | PrivateKey: `99B3C12287537E38C90A9219D4CB074A89A16E9CDB20BF85728EBD97C343E342` 6 | 7 | Address: `0x6Be02d1d3665660d22FF9624b7BE0551ee1Ac91b` 8 | 9 | 10 | 11 | ## node启动 12 | 13 | 下载同路径下的`frontier.zip`文件到本地,并解压缩。 14 | 15 | ```bash 16 | cd frontier 17 | cargo build --release 18 | ``` 19 | 20 | 启动节点: 21 | 22 | ```bash 23 | cd frontier 24 | ./target/release/frontier-template-node purge-chain --dev 25 | ./target/release/frontier-template-node --dev 26 | ``` 27 | 28 | ## 注意事项 29 | 30 | gas limit: `4294967295` -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*.rs] 4 | indent_style=tab 5 | indent_size=tab 6 | tab_width=4 7 | end_of_line=lf 8 | charset=utf-8 9 | trim_trailing_whitespace=true 10 | insert_final_newline=true 11 | 12 | [*.toml] 13 | indent_style=tab 14 | indent_size=tab 15 | tab_width=4 -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/.github/workflows/cancel.yml: -------------------------------------------------------------------------------- 1 | name: Cancel 2 | 3 | on: [push] 4 | 5 | jobs: 6 | cancel: 7 | name: 'Cancel previous runs' 8 | runs-on: ubuntu-latest 9 | timeout-minutes: 3 10 | steps: 11 | - uses: styfle/cancel-workflow-action@0.3.1 12 | with: 13 | workflow_id: 1303397 14 | access_token: ${{ github.token }} 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/.github/workflows/editorconfig.yml: -------------------------------------------------------------------------------- 1 | name: Editorconfig 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | check: 11 | name: 'Check editorconfig' 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - name: Submodules 16 | run: git submodule update --init --recursive 17 | - name: Init 18 | run: | 19 | wget https://github.com/editorconfig-checker/editorconfig-checker/releases/download/2.1.0/ec-linux-amd64.tar.gz 20 | tar xvf ec-linux-amd64.tar.gz 21 | chmod +x bin/ec-linux-amd64 22 | - name: Check 23 | run: bin/ec-linux-amd64 24 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | name: Rust 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | name: 'Run tests' 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - name: Submodules 16 | run: git submodule update --init --recursive 17 | - name: Init 18 | run: | 19 | scripts/init.sh 20 | cargo --version 21 | rustc --version 22 | cargo +$WASM_BUILD_TOOLCHAIN --version 23 | rustc +$WASM_BUILD_TOOLCHAIN --version 24 | env: 25 | WASM_BUILD_TOOLCHAIN: nightly-2020-05-14 26 | - name: Build 27 | run: cargo build --verbose --all 28 | - name: Run tests 29 | run: cargo test --verbose --all 30 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/.gitignore: -------------------------------------------------------------------------------- 1 | **/target/ 2 | **/*.rs.bk 3 | *.swp 4 | .wasm-binaries 5 | polkadot/runtime/wasm/target/ 6 | core/executor/wasm/target/ 7 | core/test-runtime/wasm/target/ 8 | pwasm-alloc/target/ 9 | pwasm-libc/target/ 10 | pwasm-alloc/Cargo.lock 11 | pwasm-libc/Cargo.lock 12 | node/runtime/wasm/target/ 13 | **/._* 14 | **/.criterion/ 15 | .vscode 16 | polkadot.* 17 | .DS_Store 18 | .idea/ 19 | 20 | # Added by cargo 21 | /target 22 | 23 | # NixOS development environment 24 | .envrc 25 | shell.nix 26 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "vendor/ethereum"] 2 | path = vendor/ethereum 3 | url = https://github.com/rust-blockchain/ethereum 4 | [submodule "vendor/substrate"] 5 | path = vendor/substrate 6 | url = https://github.com/paritytech/substrate 7 | [submodule "vendor/evm"] 8 | path = vendor/evm 9 | url = https://github.com/rust-blockchain/evm 10 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "frame/ethereum", 4 | "rpc", 5 | "rpc/core", 6 | "rpc/primitives", 7 | "template/node", 8 | "template/runtime", 9 | ] 10 | exclude = ["vendor"] 11 | 12 | [patch.crates-io] 13 | ethereum = { path = "vendor/ethereum" } 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/rpc/core/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "frontier-rpc-core" 3 | version = "0.1.0" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | description = "RPC traits of Ethereum." 7 | license = "GPL-3.0" 8 | 9 | [dependencies] 10 | jsonrpc-core = "14.0.3" 11 | jsonrpc-core-client = "14.0.3" 12 | jsonrpc-derive = "14.0.3" 13 | jsonrpc-pubsub = "14.0.5" 14 | rustc-hex = "2.1.0" 15 | ethereum-types = "0.9.0" 16 | serde = { version = "1.0", features = ["derive"] } 17 | serde_json = "1.0" 18 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/scripts/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "*** Initializing WASM build environment" 6 | 7 | if [ -z ${WASM_BUILD_TOOLCHAIN+x} ]; then 8 | WASM_BUILD_TOOLCHAIN=nightly 9 | fi 10 | 11 | if [ -z $CI_PROJECT_NAME ] ; then 12 | rustup update $WASM_BUILD_TOOLCHAIN 13 | rustup update stable 14 | fi 15 | 16 | rustup target add wasm32-unknown-unknown --toolchain $WASM_BUILD_TOOLCHAIN 17 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/.dockerignore: -------------------------------------------------------------------------------- 1 | **/target/ 2 | Dockerfile 3 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-erc20/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /node_modules/ 3 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-erc20/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontier-tutorials", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "@polkadot/api": "^1.16.0-beta.2", 6 | "@polkadot/util-crypto": "^2.10.1", 7 | "ts-node": "^8.10.1", 8 | "typescript": "^3.9.3", 9 | "web3x": "^4.0.6" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-erc20/truffle/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /node_modules/ 3 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-erc20/truffle/contracts/MyToken.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.5.0; 2 | 3 | import '@openzeppelin/contracts/token/ERC20/ERC20.sol'; 4 | 5 | // This ERC-20 contract mints the maximum amount of tokens to the contract creator. 6 | contract MyToken is ERC20 { 7 | constructor() public { 8 | _mint(msg.sender, 2**256 - 1); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-erc20/truffle/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "substrate-evm-contracts", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "@openzeppelin/contracts": "^2.5.0", 6 | "truffle": "^5.1.12" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-hello/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-hello/Hello.sol: -------------------------------------------------------------------------------- 1 | pragma solidity =0.5.15; 2 | 3 | contract Hello { 4 | event Said(string message); 5 | address public owner; 6 | 7 | constructor() public { 8 | owner = msg.sender; 9 | emit Said("Hello, world!"); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-hello/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontier-example-contract-hello", 3 | "version": "0.1.0", 4 | "description": "Hello contract example for Frontier project", 5 | "main": "index.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git+https://github.com/paritytech/frontier.git" 9 | }, 10 | "keywords": [ 11 | "ethereum", 12 | "substrate" 13 | ], 14 | "author": "Parity Technologies ", 15 | "license": "GPL-3.0", 16 | "bugs": { 17 | "url": "https://github.com/paritytech/frontier/issues" 18 | }, 19 | "homepage": "https://github.com/paritytech/frontier", 20 | "dependencies": { 21 | "web3": "^1.2.8" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-web3-rpc/.gitignore: -------------------------------------------------------------------------------- 1 | /build/ 2 | /node_modules/ 3 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-web3-rpc/README.md: -------------------------------------------------------------------------------- 1 | # ERC20 contract creation (RPC) 2 | 3 | This directory contains typescript script describing how to use the web3.js SDK to interact with Frontier. 4 | 5 | ## Installation and Usage 6 | 7 | Use `npm i` to install dependencies. To create an ERC20 contract, execute `node_modules/.bin/ts-node create-erc20.ts` while your template node is running in `--dev` mode. 8 | 9 | ## Expected output 10 | 11 | WIP 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-web3-rpc/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "frontier-contract-web3", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "ts-node": "^8.10.1", 6 | "typescript": "^3.9.3", 7 | "web3": "^1.2.8" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/examples/contract-web3-rpc/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/node/build.rs: -------------------------------------------------------------------------------- 1 | use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; 2 | 3 | fn main() { 4 | generate_cargo_keys(); 5 | 6 | rerun_if_git_head_changed(); 7 | } 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/runtime/build.rs: -------------------------------------------------------------------------------- 1 | use wasm_builder_runner::WasmBuilder; 2 | 3 | fn main() { 4 | WasmBuilder::new() 5 | .with_current_project() 6 | .with_wasm_builder_from_crates("1.0.9") 7 | .export_heap_base() 8 | .import_memory() 9 | .build() 10 | } 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/utils/.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules/ 2 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/utils/evm-address.js: -------------------------------------------------------------------------------- 1 | const help = `--evm-address
: Calculate the EVM address that corresponds to a native Substrate address.`; 2 | 3 | module.exports = () => { 4 | if (process.argv.length < 4) { 5 | console.error('Please provide the
parameter.'); 6 | console.error(help); 7 | process.exit(9); 8 | } 9 | 10 | const address = process.argv[3]; 11 | if (!address.match(/^[A-z0-9]{48}$/)) { 12 | console.error('Please enter a valid Substrate address.'); 13 | console.error(help); 14 | process.exit(9); 15 | } 16 | 17 | const crypto = require('@polkadot/util-crypto'); 18 | return `0x${crypto.blake2AsHex(crypto.decodeAddress(address), 256).substring(26)}`; 19 | }; 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/template/utils/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "substrate-evm-utils", 3 | "version": "0.0.0", 4 | "dependencies": { 5 | "@polkadot/util-crypto": "^2.2.1", 6 | "keccak": "^3.0.0", 7 | "web3": "^1.2.6" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/.arcconfig: -------------------------------------------------------------------------------- 1 | { 2 | "phabricator.uri" : "https://source.that.world/" 3 | } -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | **/target 4 | 5 | # Generated by Nix 6 | **/result 7 | 8 | # Remove Cargo.lock from gitignore if creating an executable, leave it for libraries 9 | # More information here http://doc.crates.io/guide.html#cargotoml-vs-cargolock 10 | Cargo.lock 11 | 12 | # These are backup files generated by rustfmt 13 | **/*.rs.bk 14 | 15 | # IDEA files 16 | .idea/ -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | rust: 3 | - stable 4 | - beta 5 | - nightly 6 | matrix: 7 | allow_failures: 8 | - rust: nightly 9 | script: 10 | - cargo test --all 11 | - if [ "$TRAVIS_RUST_VERSION" == "nightly" ]; then cd rlp && cargo build --no-default-features && cd ..; fi 12 | - if [ "$TRAVIS_RUST_VERSION" == "nightly" ]; then cd hexutil && cargo build --no-default-features && cd ..; fi 13 | - if [ "$TRAVIS_RUST_VERSION" == "nightly" ]; then cd bigint && cargo build --no-default-features && cd ..; fi 14 | - if [ "$TRAVIS_RUST_VERSION" == "nightly" ]; then cd block-core && cargo build --no-default-features && cd ..; fi 15 | - cd block && cargo build --no-default-features --features rust-secp256k1 && cd .. 16 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/block-core/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ethereum" 3 | version = "0.1.0" 4 | license = "Apache-2.0" 5 | authors = ["Wei Tang "] 6 | description = "Core block and transaction types for Ethereum." 7 | repository = "https://source.that.world/source/ethereum-rs" 8 | keywords = ["no_std", "ethereum"] 9 | edition = "2018" 10 | 11 | [dependencies] 12 | ethereum-types = { version = "0.9", default-features = false } 13 | rlp = { version = "0.4", default-features = false } 14 | rlp-derive = "0.1" 15 | sha3 = "0.8" 16 | 17 | [dev-dependencies] 18 | rand = "0.7" 19 | 20 | [features] 21 | default = ["std"] 22 | std = ["ethereum-types/std", "rlp/std"] 23 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/block/src/lib.rs: -------------------------------------------------------------------------------- 1 | extern crate bigint; 2 | extern crate rlp; 3 | extern crate bloom; 4 | extern crate secp256k1; 5 | extern crate sha3; 6 | extern crate blockchain; 7 | extern crate trie; 8 | extern crate trie_memory; 9 | extern crate block_core; 10 | #[cfg(test)] extern crate hexutil; 11 | #[cfg(test)] extern crate rand; 12 | 13 | mod header; 14 | mod transaction; 15 | mod block; 16 | mod receipt; 17 | mod address; 18 | 19 | pub use block_core::*; 20 | pub use transaction::*; 21 | pub use header::{TotalHeader, Header, HeaderHash}; 22 | pub use block::{Block, transactions_root, receipts_root, ommers_hash}; 23 | pub use receipt::Receipt; 24 | pub use address::FromKey; 25 | 26 | use bigint::H256; 27 | 28 | pub trait RlpHash { 29 | fn rlp_hash(&self) -> H256; 30 | } 31 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/bloom/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ethereum-bloom" 3 | version = "0.2.1" 4 | license = "Apache-2.0" 5 | authors = ["Wei Tang "] 6 | description = "Log bloom implementation for Ethereum." 7 | repository = "https://source.that.world/source/ethereum-rs" 8 | keywords = ["ethereum"] 9 | 10 | [dependencies] 11 | primitive-types = { version = "0.7" } 12 | rlp = { version = "0.4" } 13 | sha3 = "0.8" 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/src/account.rs: -------------------------------------------------------------------------------- 1 | use rlp_derive::{RlpEncodable, RlpDecodable}; 2 | use ethereum_types::{H256, U256}; 3 | 4 | #[derive(Clone, Debug, PartialEq, Eq, RlpEncodable, RlpDecodable)] 5 | #[cfg_attr(feature = "codec", derive(codec::Encode, codec::Decode))] 6 | pub struct Account { 7 | pub nonce: U256, 8 | pub balance: U256, 9 | pub storage_root: H256, 10 | pub code_hash: H256, 11 | } 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/src/block.rs: -------------------------------------------------------------------------------- 1 | use alloc::vec::Vec; 2 | use rlp_derive::{RlpEncodable, RlpDecodable}; 3 | use crate::{Header, Transaction}; 4 | 5 | #[derive(Clone, Debug, PartialEq, Eq, RlpEncodable, RlpDecodable)] 6 | #[cfg_attr(feature = "codec", derive(codec::Encode, codec::Decode))] 7 | pub struct Block { 8 | pub header: Header, 9 | pub transactions: Vec, 10 | pub ommers: Vec
, 11 | } 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/src/header.rs: -------------------------------------------------------------------------------- 1 | use rlp_derive::{RlpEncodable, RlpDecodable}; 2 | use ethereum_types::{H160, H256, H64, U256, Bloom}; 3 | 4 | #[derive(Clone, Debug, PartialEq, Eq, RlpEncodable, RlpDecodable)] 5 | #[cfg_attr(feature = "codec", derive(codec::Encode, codec::Decode))] 6 | pub struct Header { 7 | pub parent_hash: H256, 8 | pub ommers_hash: H256, 9 | pub beneficiary: H160, 10 | pub state_root: H256, 11 | pub transactions_root: H256, 12 | pub receipts_root: H256, 13 | pub logs_bloom: Bloom, 14 | pub difficulty: U256, 15 | pub number: U256, 16 | pub gas_limit: U256, 17 | pub gas_used: U256, 18 | pub timestamp: u64, 19 | pub extra_data: H256, 20 | pub mix_hash: H256, 21 | pub nonce: H64, 22 | } 23 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![cfg_attr(not(feature = "std"), no_std)] 2 | 3 | extern crate alloc; 4 | 5 | mod account; 6 | mod log; 7 | mod transaction; 8 | mod header; 9 | mod block; 10 | mod receipt; 11 | 12 | pub use account::Account; 13 | pub use log::Log; 14 | pub use transaction::{TransactionAction, Transaction, TransactionSignature}; 15 | pub use header::Header; 16 | pub use block::Block; 17 | pub use receipt::Receipt; 18 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/src/log.rs: -------------------------------------------------------------------------------- 1 | use alloc::vec::Vec; 2 | use rlp_derive::{RlpEncodable, RlpDecodable}; 3 | use ethereum_types::{H160, H256}; 4 | 5 | #[derive(Clone, Debug, PartialEq, Eq, RlpEncodable, RlpDecodable)] 6 | #[cfg_attr(feature = "codec", derive(codec::Encode, codec::Decode))] 7 | pub struct Log { 8 | pub address: H160, 9 | pub topics: Vec, 10 | pub data: Vec, 11 | } 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/src/receipt.rs: -------------------------------------------------------------------------------- 1 | use alloc::vec::Vec; 2 | use ethereum_types::{H256, U256, Bloom}; 3 | use rlp_derive::{RlpEncodable, RlpDecodable}; 4 | use crate::Log; 5 | 6 | #[derive(Clone, Debug, PartialEq, Eq, RlpEncodable, RlpDecodable)] 7 | #[cfg_attr(feature = "codec", derive(codec::Encode, codec::Decode))] 8 | pub struct Receipt { 9 | pub state_root: H256, 10 | pub used_gas: U256, 11 | pub logs_bloom: Bloom, 12 | pub logs: Vec, 13 | } 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/trie/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ethereum-trie" 3 | version = "0.4.0" 4 | license = "Apache-2.0" 5 | authors = ["Wei Tang "] 6 | description = "Lightweight Ethereum world state storage." 7 | repository = "https://source.that.world/source/ethereum-rs" 8 | keywords = ["ethereum"] 9 | 10 | [dependencies] 11 | primitive-types = { version = "0.7" } 12 | rlp = { version = "0.4" } 13 | sha3 = "0.8" -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/trie/memory/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ethereum-trie-memory" 3 | version = "0.4.0" 4 | license = "Apache-2.0" 5 | authors = ["Wei Tang "] 6 | description = "Rocksdb adaptor for trie." 7 | repository = "https://source.that.world/source/ethereum-rs" 8 | keywords = ["ethereum"] 9 | 10 | [dependencies] 11 | rlp = { version = "0.4" } 12 | primitive-types = { version = "0.7" } 13 | sha3 = "0.8" 14 | ethereum-trie = { version = "0.4", path = ".." } -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/trie/rocksdb/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ethereum-trie-rocksdb" 3 | version = "0.4.0" 4 | license = "Apache-2.0" 5 | authors = ["Wei Tang "] 6 | description = "Rocksdb adaptor for trie." 7 | repository = "https://source.that.world/source/ethereum-rs" 8 | keywords = ["ethereum"] 9 | 10 | [dependencies] 11 | rocksdb = "0.14.0" 12 | primitive-types = { version = "0.7" } 13 | trie = { package = "ethereum-trie", version = "0.4", path = ".." } 14 | trie-memory = { package = "ethereum-trie-memory", version = "0.4", path = "../memory" } 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/trie/src/error.rs: -------------------------------------------------------------------------------- 1 | use bigint::H256; 2 | 3 | #[derive(Debug)] 4 | pub enum Error { 5 | Require(H256), 6 | } 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/trie/src/merkle/mod.rs: -------------------------------------------------------------------------------- 1 | //! Merkle types. 2 | 3 | pub mod nibble; 4 | mod node; 5 | 6 | pub use self::node::{MerkleNode, MerkleValue}; 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/ethereum/trie/src/ops/mod.rs: -------------------------------------------------------------------------------- 1 | pub mod insert; 2 | pub mod delete; 3 | pub mod build; 4 | pub mod get; 5 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/.arcconfig: -------------------------------------------------------------------------------- 1 | { 2 | "phabricator.uri" : "https://source.that.world/" 3 | } -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | [*] 3 | indent_style=tab 4 | indent_size=tab 5 | tab_width=4 6 | end_of_line=lf 7 | charset=utf-8 8 | trim_trailing_whitespace=true 9 | max_line_length=80 10 | insert_final_newline=true 11 | 12 | [*.yml] 13 | indent_style=space 14 | indent_size=2 15 | tab_width=8 16 | end_of_line=lf 17 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/.gitignore: -------------------------------------------------------------------------------- 1 | *.o 2 | *.so 3 | *.rlib 4 | *.dll 5 | *.swp 6 | *.exe 7 | *.iml 8 | .idea 9 | target 10 | **/result 11 | tests.bin 12 | Cargo.lock -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/.travis.yml: -------------------------------------------------------------------------------- 1 | language: rust 2 | cache: cargo 3 | 4 | rust: 5 | - stable 6 | - beta 7 | - nightly 8 | 9 | os: 10 | - linux 11 | - osx 12 | 13 | script: 14 | - cargo build --release --all --verbose 15 | - cargo test --release --all --verbose 16 | - cargo build --no-default-features 17 | 18 | matrix: 19 | allow_failures: 20 | - rust: nightly 21 | 22 | notifications: 23 | email: 24 | on_success: never 25 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/core/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "evm-core" 3 | version = "0.17.0" 4 | license = "Apache-2.0" 5 | authors = ["Wei Tang ", "Parity Technologies "] 6 | description = "Portable Ethereum Virtual Machine implementation written in pure Rust." 7 | repository = "https://github.com/sorpaas/rust-evm" 8 | keywords = ["no_std", "ethereum"] 9 | edition = "2018" 10 | 11 | [dependencies] 12 | primitive-types = { version = "0.7", default-features = false } 13 | 14 | [dev-dependencies] 15 | hex = "0.4" 16 | 17 | [features] 18 | default = ["std"] 19 | std = ["primitive-types/std"] 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/gasometer/src/consts.rs: -------------------------------------------------------------------------------- 1 | pub const G_ZERO: usize = 0; 2 | pub const G_BASE: usize = 2; 3 | pub const G_VERYLOW: usize = 3; 4 | pub const G_LOW: usize = 5; 5 | pub const G_MID: usize = 8; 6 | pub const G_HIGH: usize = 10; 7 | pub const G_JUMPDEST: usize = 1; 8 | pub const R_SUICIDE: isize = 24000; 9 | pub const G_CREATE: usize = 32000; 10 | pub const G_CALLVALUE: usize = 9000; 11 | pub const G_NEWACCOUNT: usize = 25000; 12 | pub const G_EXP: usize = 10; 13 | pub const G_MEMORY: usize = 3; 14 | pub const G_LOG: usize = 375; 15 | pub const G_LOGDATA: usize = 8; 16 | pub const G_LOGTOPIC: usize = 375; 17 | pub const G_SHA3: usize = 30; 18 | pub const G_SHA3WORD: usize = 6; 19 | pub const G_COPY: usize = 3; 20 | pub const G_BLOCKHASH: usize = 20; 21 | pub const G_CODEDEPOSIT: usize = 200; 22 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/gasometer/src/memory.rs: -------------------------------------------------------------------------------- 1 | use evm_core::ExitError; 2 | use crate::consts::*; 3 | 4 | pub fn memory_gas(a: usize) -> Result { 5 | G_MEMORY 6 | .checked_mul(a).ok_or(ExitError::OutOfGas)? 7 | .checked_add( 8 | a.checked_mul(a).ok_or(ExitError::OutOfGas)? / 512 9 | ).ok_or(ExitError::OutOfGas) 10 | } 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/gasometer/src/utils.rs: -------------------------------------------------------------------------------- 1 | use primitive_types::U256; 2 | 3 | pub fn log2floor(value: U256) -> usize { 4 | assert!(value != U256::zero()); 5 | let mut l: usize = 256; 6 | for i in 0..4 { 7 | let i = 3 - i; 8 | if value.0[i] == 0u64 { 9 | l -= 64; 10 | } else { 11 | l -= value.0[i].leading_zeros() as usize; 12 | if l == 0 { 13 | return l 14 | } else { 15 | return l - 1; 16 | } 17 | } 18 | } 19 | return l; 20 | } 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/runtime/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "evm-runtime" 3 | version = "0.17.0" 4 | license = "Apache-2.0" 5 | authors = ["Wei Tang ", "Parity Technologies "] 6 | description = "SputnikVM - a Portable Blockchain Virtual Machine" 7 | repository = "https://github.com/sorpaas/rust-evm" 8 | keywords = ["no_std", "ethereum"] 9 | edition = "2018" 10 | 11 | [dependencies] 12 | evm-core = { version = "0.17", path = "../core", default-features = false } 13 | primitive-types = { version = "0.7", default-features = false } 14 | sha3 = { version = "0.8", default-features = false } 15 | 16 | [features] 17 | default = ["std"] 18 | std = ["evm-core/std", "primitive-types/std", "sha3/std"] 19 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/src/executor/mod.rs: -------------------------------------------------------------------------------- 1 | //! # EVM executors 2 | //! 3 | //! Executors are structs that hook gasometer and the EVM core together. It 4 | //! also handles the call stacks in EVM. 5 | 6 | mod stack; 7 | 8 | pub use self::stack::{StackAccount, StackExecutor}; 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/evm/src/lib.rs: -------------------------------------------------------------------------------- 1 | //! Ethereum Virtual Machine implementation in Rust 2 | 3 | #![deny(warnings)] 4 | #![forbid(unsafe_code, missing_docs, unused_variables, unused_imports)] 5 | 6 | #![cfg_attr(not(feature = "std"), no_std)] 7 | 8 | extern crate alloc; 9 | 10 | pub use evm_core::*; 11 | pub use evm_runtime::*; 12 | pub use evm_gasometer as gasometer; 13 | 14 | pub mod executor; 15 | pub mod backend; 16 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.dockerignore: -------------------------------------------------------------------------------- 1 | doc 2 | **target* 3 | .idea/ 4 | Dockerfile 5 | .dockerignore 6 | .local 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | [*] 3 | indent_style=tab 4 | indent_size=tab 5 | tab_width=4 6 | end_of_line=lf 7 | charset=utf-8 8 | trim_trailing_whitespace=true 9 | max_line_length=100 10 | insert_final_newline=true 11 | 12 | [*.yml] 13 | indent_style=space 14 | indent_size=2 15 | tab_width=8 16 | end_of_line=lf 17 | 18 | [*.sh] 19 | indent_style=space 20 | indent_size=2 21 | tab_width=8 22 | end_of_line=lf 23 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.gitattributes: -------------------------------------------------------------------------------- 1 | Cargo.lock linguist-generated=true 2 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.github/ISSUE_TEMPLATE/release.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: Release failure for {{ ref }} 3 | --- 4 | 5 | Pipeline for release {{ ref }} failed. Please investigate. 6 | 7 | If the pipeline has failed before pushing to crates.io, delete the release tag 8 | and fix the release as necessary, retagging after complete. If the pipeline has 9 | failed after pushing to crates.io, create a new tag incrementing the version. 10 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.github/workflows/auto-label-issues.yml: -------------------------------------------------------------------------------- 1 | # If the author of the issues is not a contributor to the project, label 2 | # the issue with 'Z0-unconfirmed' 3 | 4 | name: Label New Issues 5 | on: 6 | issues: 7 | types: [opened] 8 | 9 | jobs: 10 | label-new-issues: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - name: Label drafts 14 | uses: andymckay/labeler@master 15 | if: github.event.issue.author_association == 'NONE' 16 | with: 17 | add-labels: 'Z0-unconfirmed' 18 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.github/workflows/auto-label-prs.yml: -------------------------------------------------------------------------------- 1 | name: Label PRs 2 | on: 3 | pull_request: 4 | types: [opened,ready_for_review] 5 | 6 | jobs: 7 | label-new-prs: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Label drafts 11 | uses: andymckay/labeler@master 12 | if: github.event.pull_request.draft == true 13 | with: 14 | add-labels: 'A3-inprogress' 15 | remove-labels: 'A0-pleasereview' 16 | - name: Label PRs 17 | uses: andymckay/labeler@master 18 | if: github.event.pull_request.draft == false && ! contains(github.event.pull_request.labels.*.name, 'A2-insubstantial') 19 | with: 20 | add-labels: 'A0-pleasereview' 21 | remove-labels: 'A3-inprogress' 22 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.github/workflows/burnin-label-notification.yml: -------------------------------------------------------------------------------- 1 | name: Notify devops when burn-in label applied 2 | on: 3 | pull_request: 4 | types: [labeled] 5 | 6 | jobs: 7 | notify-devops: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - name: Notify devops 11 | if: github.event.label.name == 'A1-needsburnin' 12 | uses: s3krit/matrix-message-action@v0.0.2 13 | with: 14 | room_id: ${{ secrets.POLKADOT_DEVOPS_MATRIX_ROOM_ID }} 15 | access_token: ${{ secrets.POLKADOT_DEVOPS_MATRIX_ACCESS_TOKEN }} 16 | message: "@room Burn-in request received for [${{ github.event.pull_request.title }}](${{ github.event.pull_request.html_url }})" 17 | server: "matrix.parity.io" 18 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.github/workflows/release-tagging.yml: -------------------------------------------------------------------------------- 1 | # Github action to ensure the `release` tag always tracks latest release 2 | 3 | name: Retag release 4 | 5 | on: 6 | release: 7 | types: [ published ] 8 | 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | 13 | steps: 14 | - name: Set Git tag 15 | uses: s3krit/walking-tag-action@master 16 | with: 17 | TAG_NAME: release 18 | TAG_MESSAGE: Latest release 19 | env: 20 | GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.github/workflows/trigger-review-pipeline.yml: -------------------------------------------------------------------------------- 1 | name: Trigger pipeline for review 2 | 3 | on: 4 | pull_request: 5 | types: [ready_for_review] 6 | 7 | jobs: 8 | trigger: 9 | runs-on: ubuntu-latest 10 | 11 | steps: 12 | - name: Trigger pipeline 13 | run: | 14 | curl -X POST \ 15 | -F token="$TOKEN" \ 16 | -F ref="$REF" \ 17 | https://gitlab.parity.io/api/v4/projects/145/trigger/pipeline 18 | env: 19 | REF: ${{ github.event.number }} 20 | TOKEN: ${{ secrets.GITLAB_TRIGGER_TOKEN }} 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.gitignore: -------------------------------------------------------------------------------- 1 | **/target/ 2 | **/*.rs.bk 3 | *.swp 4 | .wasm-binaries 5 | pwasm-alloc/target/ 6 | pwasm-libc/target/ 7 | pwasm-alloc/Cargo.lock 8 | pwasm-libc/Cargo.lock 9 | bin/node/runtime/wasm/target/ 10 | **/._* 11 | **/.criterion/ 12 | .vscode 13 | polkadot.* 14 | .DS_Store 15 | .idea/ 16 | nohup.out 17 | rls*.log 18 | *.orig 19 | *.rej 20 | **/wip/*.stderr 21 | .local 22 | **/hfuzz_target/ 23 | **/hfuzz_workspace/ 24 | .cargo/ 25 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/getgoing.sh: -------------------------------------------------------------------------------- 1 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 2 | brew install openssl cmake 3 | curl https://sh.rustup.rs -sSf | sh 4 | source ~/.cargo/env 5 | cargo install --git https://github.com/paritytech/substrate subkey 6 | cargo install --git https://github.com/paritytech/substrate substrate 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/gitlab/check_signed.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # shellcheck source=lib.sh 4 | source "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/lib.sh" 5 | 6 | version="$CI_COMMIT_TAG" 7 | 8 | echo '[+] Checking tag has been signed' 9 | check_tag "paritytech/substrate" "$version" 10 | case $? in 11 | 0) echo '[+] Tag found and has been signed'; exit 0 12 | ;; 13 | 1) echo '[!] Tag found but has not been signed. Aborting release.'; exit 1 14 | ;; 15 | 2) echo '[!] Tag not found. Aborting release.'; exit 1 16 | esac 17 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/gitlab/skip_if_draft.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | url="https://api.github.com/repos/paritytech/substrate/pulls/${CI_COMMIT_REF_NAME}" 3 | echo "[+] API URL: $url" 4 | 5 | draft_state=$(curl -H "Authorization: token ${GITHUB_PR_TOKEN}" "$url" | jq -r .draft) 6 | echo "[+] Draft state: $draft_state" 7 | 8 | if [ "$draft_state" = 'true' ]; then 9 | echo "[!] PR is currently a draft, stopping pipeline" 10 | exit 1 11 | else 12 | echo "[+] PR is not a draft. Proceeding with CI pipeline" 13 | exit 0 14 | fi 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "*** Initializing WASM build environment" 6 | 7 | if [ -z $CI_PROJECT_NAME ] ; then 8 | rustup update nightly 9 | rustup update stable 10 | fi 11 | 12 | rustup target add wasm32-unknown-unknown --toolchain nightly 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/kubernetes/Chart.yaml: -------------------------------------------------------------------------------- 1 | name: substrate 2 | version: 0.2 3 | appVersion: 0.9.1 4 | description: "Substrate: The platform for blockchain innovators" 5 | home: https://substrate.network/ 6 | icon: https://substrate.network/favicon.ico 7 | sources: 8 | - https://github.com/paritytech/substrate/ 9 | maintainers: 10 | - name: Paritytech Devops Team 11 | email: devops-team@parity.io 12 | tillerVersion: ">=2.8.0" 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/kubernetes/templates/poddisruptionbudget.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: policy/v1beta1 2 | kind: PodDisruptionBudget 3 | metadata: 4 | name: {{ .Values.GitlabEnvSlug | default .Values.app }} 5 | spec: 6 | selector: 7 | matchLabels: 8 | app: {{ .Values.GitlabEnvSlug | default .Values.app }} 9 | maxUnavailable: 1 10 | 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/kubernetes/templates/secrets.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.validator.keys }} 2 | apiVersion: v1 3 | kind: Secret 4 | metadata: 5 | name: {{ .Values.app }}-secrets 6 | labels: 7 | app: {{ .Values.GitlabEnvSlug | default .Values.app }} 8 | type: Opaque 9 | data: 10 | secrets: {{ .Values.validator.keys | default "" }} 11 | {{- end }} 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/kubernetes/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.rbac.enable }} 2 | # service account for substrate pods themselves 3 | # no permissions for the api are required 4 | apiVersion: v1 5 | kind: ServiceAccount 6 | metadata: 7 | labels: 8 | app: {{ .Values.GitlabEnvSlug | default .Values.app }} 9 | name: {{ .Values.rbac.name }} 10 | {{- end }} 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/monitoring/grafana-dashboards/README_dashboard.md: -------------------------------------------------------------------------------- 1 | ## Substrate Dashboard 2 | 3 | Shared templated Grafana dashboards. 4 | 5 | To import the dashboards follow the [Grafana 6 | documentation](https://grafana.com/docs/grafana/latest/reference/export_import/). 7 | You can see an example setup [here](../../../.maintain/sentry-node). 8 | 9 | #### Required labels on Prometheus metrics 10 | 11 | - `instance` referring to a single scrape target (see [Prometheus docs for 12 | details](https://prometheus.io/docs/concepts/jobs_instances/)). 13 | 14 | - `network` referring to the Blockchain network e.g. Kusama. 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/node-template-release.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | export TERM=xterm 6 | PROJECT_ROOT=`git rev-parse --show-toplevel` 7 | 8 | if [ "$#" -ne 1 ]; then 9 | echo "node-template-release.sh path_to_target_archive" 10 | exit 1 11 | fi 12 | 13 | PATH_TO_ARCHIVE=$(pwd)/$1 14 | cd $PROJECT_ROOT/.maintain/node-template-release 15 | 16 | cargo run $PROJECT_ROOT/bin/node-template $PATH_TO_ARCHIVE 17 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/node-template-release/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "node-template-release" 3 | version = "2.0.0" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "GPL-3.0" 7 | 8 | [dependencies] 9 | toml = "0.4" 10 | tar = "0.4" 11 | glob = "0.2" 12 | structopt = "0.3" 13 | tempfile = "3" 14 | fs_extra = "1" 15 | git2 = "0.8" 16 | flate2 = "1.0" 17 | 18 | [workspace] 19 | 20 | [package.metadata.docs.rs] 21 | targets = ["x86_64-unknown-linux-gnu"] 22 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/rustdoc-header.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/sentry-node/grafana/provisioning/dashboards/dashboards.yml: -------------------------------------------------------------------------------- 1 | apiVersion: 1 2 | 3 | providers: 4 | - name: 'Prometheus' 5 | orgId: 1 6 | folder: '' 7 | type: file 8 | disableDeletion: false 9 | editable: false 10 | options: 11 | path: /etc/grafana/provisioning/dashboard-definitions 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/sentry-node/prometheus/prometheus.yml: -------------------------------------------------------------------------------- 1 | global: 2 | scrape_interval: 15s 3 | 4 | scrape_configs: 5 | - job_name: 'substrate-nodes' 6 | static_configs: 7 | - targets: ['validator-a:9615'] 8 | labels: 9 | network: dev 10 | - targets: ['sentry-a:9615'] 11 | labels: 12 | network: dev 13 | - targets: ['validator-b:9615'] 14 | labels: 15 | network: dev 16 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/.maintain/update-deps.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -- 2 | set -eu 3 | case $0 in 4 | (/*) dir=${0%/*}/;; 5 | (*/*) dir=./${0%/*};; 6 | (*) dir=.;; 7 | esac 8 | 9 | find "$dir/.." -name Cargo.lock -execdir cargo update \; 10 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/Process.toml: -------------------------------------------------------------------------------- 1 | [Networking] 2 | owner = "tomaka" 3 | whitelist = [] 4 | matrix_room_id = "!vUADSGcyXmxhKLeDsW:matrix.parity.io" 5 | 6 | [Client] 7 | owner = "gnunicorn" 8 | whitelist = [] 9 | matrix_room_id = "!aenJixaHcSKbJOWxYk:matrix.parity.io" 10 | 11 | [Runtime] 12 | owner = "gavofyork" 13 | whitelist = [] 14 | matrix_room_id = "!yBKstWVBkwzUkPslsp:matrix.parity.io" 15 | 16 | [Consensus] 17 | owner = "andresilva" 18 | whitelist = [] 19 | matrix_room_id = "!XdNWDTfVNFVixljKZU:matrix.parity.io" 20 | 21 | [Smart Contracts] 22 | owner = "pepyakin" 23 | whitelist = [] 24 | matrix_room_id = "!yBKstWVBkwzUkPslsp:matrix.parity.io" 25 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node-template/node/build.rs: -------------------------------------------------------------------------------- 1 | use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; 2 | 3 | fn main() { 4 | generate_cargo_keys(); 5 | 6 | rerun_if_git_head_changed(); 7 | } 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node-template/node/src/cli.rs: -------------------------------------------------------------------------------- 1 | use sc_cli::{RunCmd, Subcommand}; 2 | use structopt::StructOpt; 3 | 4 | #[derive(Debug, StructOpt)] 5 | pub struct Cli { 6 | #[structopt(subcommand)] 7 | pub subcommand: Option, 8 | 9 | #[structopt(flatten)] 10 | pub run: RunCmd, 11 | } 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node-template/node/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod chain_spec; 2 | pub mod service; 3 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node-template/node/src/main.rs: -------------------------------------------------------------------------------- 1 | //! Substrate Node Template CLI library. 2 | #![warn(missing_docs)] 3 | 4 | mod chain_spec; 5 | #[macro_use] 6 | mod service; 7 | mod cli; 8 | mod command; 9 | 10 | fn main() -> sc_cli::Result<()> { 11 | command::run() 12 | } 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node-template/runtime/build.rs: -------------------------------------------------------------------------------- 1 | use wasm_builder_runner::WasmBuilder; 2 | 3 | fn main() { 4 | WasmBuilder::new() 5 | .with_current_project() 6 | .with_wasm_builder_from_crates("1.0.11") 7 | .export_heap_base() 8 | .import_memory() 9 | .build() 10 | } 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node-template/scripts/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "*** Initializing WASM build environment" 6 | 7 | if [ -z $CI_PROJECT_NAME ] ; then 8 | rustup update nightly 9 | rustup update stable 10 | fi 11 | 12 | rustup target add wasm32-unknown-unknown --toolchain nightly 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node/browser-testing/webdriver.json: -------------------------------------------------------------------------------- 1 | { 2 | "goog:chromeOptions": { 3 | "args": [ 4 | "--whitelisted-ips=127.0.0.1" 5 | ] 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node/cli/browser-demo/.gitignore: -------------------------------------------------------------------------------- 1 | pkg -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node/cli/browser-demo/README.md: -------------------------------------------------------------------------------- 1 | # How to run this demo 2 | 3 | ```sh 4 | cargo install wasm-bindgen-cli # If necessary 5 | ./build.sh 6 | ``` 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node/cli/browser-demo/build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | cargo +nightly build --release -p node-cli --target wasm32-unknown-unknown --no-default-features --features browser -Z features=itarget 3 | wasm-bindgen ../../../../target/wasm32-unknown-unknown/release/node_cli.wasm --out-dir pkg --target web 4 | python -m http.server 8000 5 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node/cli/browser-demo/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-01/lesson11/frontier/vendor/substrate/bin/node/cli/browser-demo/favicon.png -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/bin/node/rpc-client/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "node-rpc-client" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | 10 | [package.metadata.docs.rs] 11 | targets = ["x86_64-unknown-linux-gnu"] 12 | 13 | [dependencies] 14 | env_logger = "0.7.0" 15 | futures = "0.1.29" 16 | hyper = "0.12.35" 17 | jsonrpc-core-client = { version = "14.2.0", default-features = false, features = ["http"] } 18 | log = "0.4.8" 19 | node-primitives = { version = "2.0.0-rc4", path = "../primitives" } 20 | sc-rpc = { version = "2.0.0-rc4", path = "../../../client/rpc" } 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/client/authority-discovery/build.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | prost_build::compile_protos(&["src/schema/dht.proto"], &["src/schema"]).unwrap(); 3 | } 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/client/authority-discovery/src/schema/dht.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package authority_discovery; 4 | 5 | // First we need to serialize the addresses in order to be able to sign them. 6 | message AuthorityAddresses { 7 | repeated bytes addresses = 1; 8 | } 9 | 10 | // Then we need to serialize addresses and signature to send them over the wire. 11 | message SignedAuthorityAddresses { 12 | bytes addresses = 1; 13 | bytes signature = 2; 14 | } 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/client/chain-spec/derive/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sc-chain-spec-derive" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "GPL-3.0-or-later WITH Classpath-exception-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Macros to derive chain spec extension traits implementation." 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [lib] 15 | proc-macro = true 16 | 17 | [dependencies] 18 | proc-macro-crate = "0.1.4" 19 | proc-macro2 = "1.0.6" 20 | quote = "1.0.3" 21 | syn = "1.0.7" 22 | 23 | [dev-dependencies] 24 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/client/cli/README.adoc: -------------------------------------------------------------------------------- 1 | 2 | = Substrate CLI 3 | 4 | Substrate CLI library 5 | 6 | include::doc/shell-completion.adoc[] 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/client/network/build.rs: -------------------------------------------------------------------------------- 1 | const PROTOS: &[&str] = &[ 2 | "src/schema/api.v1.proto", 3 | "src/schema/finality.v1.proto", 4 | "src/schema/light.v1.proto" 5 | ]; 6 | 7 | fn main() { 8 | prost_build::compile_protos(PROTOS, &["src/schema"]).unwrap(); 9 | } 10 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/client/network/src/schema/finality.v1.proto: -------------------------------------------------------------------------------- 1 | // Schema definition for finality proof request/responses. 2 | 3 | syntax = "proto3"; 4 | 5 | package api.v1.finality; 6 | 7 | // Request a finality proof from a peer. 8 | message FinalityProofRequest { 9 | // SCALE-encoded hash of the block to request. 10 | bytes block_hash = 1; 11 | // Opaque chain-specific additional request data. 12 | bytes request = 2; 13 | } 14 | 15 | // Response to a finality proof request. 16 | message FinalityProofResponse { 17 | // Opaque chain-specific finality proof. Empty if no such proof exists. 18 | bytes proof = 1; // optional 19 | } 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/client/proposer-metrics/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sc-proposer-metrics" 3 | version = "0.8.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "GPL-3.0-or-later WITH Classpath-exception-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Basic metrics for block production." 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [dependencies] 15 | log = "0.4.8" 16 | prometheus-endpoint = { package = "substrate-prometheus-endpoint", path = "../../utils/prometheus", version = "0.8.0-rc4"} 17 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/docs/Upgrade.md: -------------------------------------------------------------------------------- 1 | # Upgrade path for you building on substrate 2 | 3 | ## master 4 | - crate rename has been fixed `sp-application-crypto` (was `sc-application-crypto`); `.maintain/rename-crates-for-2.0.sh` has been updated accordingly, you can use it to upgrade to latest naming convention 5 | - crates have been renamed, run `bash .maintain/rename-crates-for-2.0.sh` -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/docs/media/sub.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-01/lesson11/frontier/vendor/substrate/docs/media/sub.gif -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/contracts/fixtures/run_out_of_gas.wat: -------------------------------------------------------------------------------- 1 | (module 2 | (func (export "call") 3 | (loop $inf (br $inf)) ;; just run out of gas 4 | (unreachable) 5 | ) 6 | (func (export "deploy")) 7 | ) 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/contracts/fixtures/set_empty_storage.wat: -------------------------------------------------------------------------------- 1 | ;; This module stores a KV pair into the storage 2 | (module 3 | (import "env" "ext_set_storage" (func $ext_set_storage (param i32 i32 i32))) 4 | (import "env" "memory" (memory 16 16)) 5 | 6 | (func (export "call") 7 | ) 8 | (func (export "deploy") 9 | (call $ext_set_storage 10 | (i32.const 0) ;; Pointer to storage key 11 | (i32.const 0) ;; Pointer to value 12 | (i32.load (i32.const 0)) ;; Size of value 13 | ) 14 | ) 15 | ) 16 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/staking/fuzzer/.gitignore: -------------------------------------------------------------------------------- 1 | hfuzz_target 2 | hfuzz_workspace 3 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/staking/reward-curve/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "pallet-staking-reward-curve" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Reward Curve for FRAME staking pallet" 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [lib] 15 | proc-macro = true 16 | 17 | [dependencies] 18 | syn = { version = "1.0.7", features = ["full", "visit"] } 19 | quote = "1.0.3" 20 | proc-macro2 = "1.0.6" 21 | proc-macro-crate = "0.1.4" 22 | 23 | [dev-dependencies] 24 | sp-runtime = { version = "2.0.0-rc4", path = "../../../primitives/runtime" } 25 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/procedural/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "frame-support-procedural" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Proc macro of Support code for the runtime." 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [lib] 15 | proc-macro = true 16 | 17 | [dependencies] 18 | frame-support-procedural-tools = { version = "2.0.0-rc4", path = "./tools" } 19 | proc-macro2 = "1.0.6" 20 | quote = "1.0.3" 21 | syn = { version = "1.0.7", features = ["full"] } 22 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/procedural/tools/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "frame-support-procedural-tools" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Proc macro helpers for procedural macros" 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [dependencies] 15 | frame-support-procedural-tools-derive = { version = "2.0.0-rc4", path = "./derive" } 16 | proc-macro2 = "1.0.6" 17 | quote = "1.0.3" 18 | syn = { version = "1.0.7", features = ["full", "visit"] } 19 | proc-macro-crate = "0.1.4" 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/procedural/tools/derive/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "frame-support-procedural-tools-derive" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Use to derive parsing for parsing struct." 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [lib] 15 | proc-macro = true 16 | 17 | [dependencies] 18 | proc-macro2 = "1.0.6" 19 | quote = { version = "1.0.3", features = ["proc-macro"] } 20 | syn = { version = "1.0.7", features = ["proc-macro" ,"full", "extra-traits", "parsing"] } 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/abundant_where_param.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | Block = Block1, 8 | UncheckedExtrinsic = Uxt, 9 | {} 10 | } 11 | 12 | fn main() {} 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/abundant_where_param.stderr: -------------------------------------------------------------------------------- 1 | error: `Block` was declared above. Please use exactly one declaration for `Block`. 2 | --> $DIR/abundant_where_param.rs:7:3 3 | | 4 | 7 | Block = Block1, 5 | | ^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/double_module_parts.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | System: system::{Module}, 10 | Balance: balances::{Config, Call, Config, Origin}, 11 | } 12 | } 13 | 14 | fn main() {} 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/double_module_parts.stderr: -------------------------------------------------------------------------------- 1 | error: `Config` was already declared before. Please remove the duplicate declaration 2 | --> $DIR/double_module_parts.rs:10:37 3 | | 4 | 10 | Balance: balances::{Config, Call, Config, Origin}, 5 | | ^^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/generics_in_invalid_module.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | System: system::{Module}, 10 | Balance: balances::::{Call, Origin}, 11 | } 12 | } 13 | 14 | fn main() {} 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/generics_in_invalid_module.stderr: -------------------------------------------------------------------------------- 1 | error: `Call` is not allowed to have generics. Only the following modules are allowed to have generics: `Event`, `Origin`, `Config`. 2 | --> $DIR/generics_in_invalid_module.rs:10:36 3 | | 4 | 10 | Balance: balances::::{Call, Origin}, 5 | | ^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_module_details.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | system: System::(), 10 | } 11 | } 12 | 13 | fn main() {} 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_module_details.stderr: -------------------------------------------------------------------------------- 1 | error: expected curly braces 2 | --> $DIR/invalid_module_details.rs:9:19 3 | | 4 | 9 | system: System::(), 5 | | ^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_module_details_keyword.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | system: System::{enum}, 10 | } 11 | } 12 | 13 | fn main() {} 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_module_details_keyword.stderr: -------------------------------------------------------------------------------- 1 | error: expected one of: `Module`, `Call`, `Storage`, `Event`, `Config`, `Origin`, `Inherent`, `ValidateUnsigned` 2 | --> $DIR/invalid_module_details_keyword.rs:9:20 3 | | 4 | 9 | system: System::{enum}, 5 | | ^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_module_entry.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | System: system::{Module}, 10 | Balance: balances::{Error}, 11 | } 12 | } 13 | 14 | fn main() {} 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_module_entry.stderr: -------------------------------------------------------------------------------- 1 | error: expected one of: `Module`, `Call`, `Storage`, `Event`, `Config`, `Origin`, `Inherent`, `ValidateUnsigned` 2 | --> $DIR/invalid_module_entry.rs:10:23 3 | | 4 | 10 | Balance: balances::{Error}, 5 | | ^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_token_after_module.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | system: System ? 10 | } 11 | } 12 | 13 | fn main() {} 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_token_after_module.stderr: -------------------------------------------------------------------------------- 1 | error: expected `::` 2 | --> $DIR/invalid_token_after_module.rs:9:18 3 | | 4 | 9 | system: System ? 5 | | ^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_token_after_name.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | system ? 10 | } 11 | } 12 | 13 | fn main() {} 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_token_after_name.stderr: -------------------------------------------------------------------------------- 1 | error: expected `:` 2 | --> $DIR/invalid_token_after_name.rs:9:10 3 | | 4 | 9 | system ? 5 | | ^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_where_param.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | TypeX = Block, 8 | UncheckedExtrinsic = UncheckedExtrinsic, 9 | {} 10 | } 11 | 12 | fn main() {} 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/invalid_where_param.stderr: -------------------------------------------------------------------------------- 1 | error: expected one of: `Block`, `NodeBlock`, `UncheckedExtrinsic` 2 | --> $DIR/invalid_where_param.rs:7:3 3 | | 4 | 7 | TypeX = Block, 5 | | ^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_event_generic_on_module_with_instance.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | System: system::{Module}, 10 | Balance: balances::::{Event}, 11 | } 12 | } 13 | 14 | fn main() {} 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_event_generic_on_module_with_instance.stderr: -------------------------------------------------------------------------------- 1 | error: Instantiable module with no generic `Event` cannot be constructed: module `Balance` must have generic `Event` 2 | --> $DIR/missing_event_generic_on_module_with_instance.rs:10:3 3 | | 4 | 10 | Balance: balances::::{Event}, 5 | | ^^^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_module_instance.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | system: System::<>, 10 | } 11 | } 12 | 13 | fn main() {} 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_module_instance.stderr: -------------------------------------------------------------------------------- 1 | error: expected identifier 2 | --> $DIR/missing_module_instance.rs:9:20 3 | | 4 | 9 | system: System::<>, 5 | | ^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_origin_generic_on_module_with_instance.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | System: system::{Module}, 10 | Balance: balances::::{Origin}, 11 | } 12 | } 13 | 14 | fn main() {} 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_origin_generic_on_module_with_instance.stderr: -------------------------------------------------------------------------------- 1 | error: Instantiable module with no generic `Origin` cannot be constructed: module `Balance` must have generic `Origin` 2 | --> $DIR/missing_origin_generic_on_module_with_instance.rs:10:3 3 | | 4 | 10 | Balance: balances::::{Origin}, 5 | | ^^^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_system_module.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | UncheckedExtrinsic = UncheckedExtrinsic 8 | { 9 | } 10 | } 11 | 12 | fn main() {} 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_system_module.stderr: -------------------------------------------------------------------------------- 1 | error: `System` module declaration is missing. Please add this line: `System: frame_system::{Module, Call, Storage, Config, Event},` 2 | --> $DIR/missing_system_module.rs:8:2 3 | | 4 | 8 | { 5 | | _____^ 6 | 9 | | } 7 | | |_____^ 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_where_block.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime {} 5 | } 6 | 7 | fn main() {} 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_where_block.stderr: -------------------------------------------------------------------------------- 1 | error: expected `where` 2 | --> $DIR/missing_where_block.rs:4:19 3 | | 4 | 4 | pub enum Runtime {} 5 | | ^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_where_param.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | Block = Block, 6 | NodeBlock = Block, 7 | {} 8 | } 9 | 10 | fn main() {} 11 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/missing_where_param.stderr: -------------------------------------------------------------------------------- 1 | error: Missing associated type for `UncheckedExtrinsic`. Add `UncheckedExtrinsic` = ... to where section. 2 | --> $DIR/missing_where_param.rs:7:2 3 | | 4 | 7 | {} 5 | | ^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/no_comma_after_where.rs: -------------------------------------------------------------------------------- 1 | use frame_support::construct_runtime; 2 | 3 | construct_runtime! { 4 | pub enum Runtime where 5 | UncheckedExtrinsic = UncheckedExtrinsic 6 | Block = Block, 7 | NodeBlock = Block, 8 | { 9 | System: system, 10 | } 11 | } 12 | 13 | fn main() {} 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/construct_runtime_ui/no_comma_after_where.stderr: -------------------------------------------------------------------------------- 1 | error: Expected `,` or `{` 2 | --> $DIR/no_comma_after_where.rs:6:3 3 | | 4 | 6 | Block = Block, 5 | | ^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/decl_module_ui/reserved_keyword_two_times_integrity_test.rs: -------------------------------------------------------------------------------- 1 | frame_support::decl_module! { 2 | pub struct Module for enum Call where origin: T::Origin { 3 | fn integrity_test() {} 4 | 5 | fn integrity_test() {} 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/decl_module_ui/reserved_keyword_two_times_on_initialize.rs: -------------------------------------------------------------------------------- 1 | frame_support::decl_module! { 2 | pub struct Module for enum Call where origin: T::Origin { 3 | fn on_initialize() -> Weight { 4 | 0 5 | } 6 | 7 | fn on_initialize() -> Weight { 8 | 0 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/decl_storage_ui/config_duplicate.stderr: -------------------------------------------------------------------------------- 1 | error: `config()`/`get()` with the same name already defined. 2 | --> $DIR/config_duplicate.rs:30:21 3 | | 4 | 30 | pub Value2 config(value): u32; 5 | | ^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/decl_storage_ui/config_get_duplicate.stderr: -------------------------------------------------------------------------------- 1 | error: `config()`/`get()` with the same name already defined. 2 | --> $DIR/config_get_duplicate.rs:30:21 3 | | 4 | 30 | pub Value2 config(value): u32; 5 | | ^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/frame/support/test/tests/decl_storage_ui/get_duplicate.stderr: -------------------------------------------------------------------------------- 1 | error: `config()`/`get()` with the same name already defined. 2 | --> $DIR/get_duplicate.rs:30:21 3 | | 4 | 30 | pub Value2 get(fn value) config(): u32; 5 | | ^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/adding_self_parameter.rs: -------------------------------------------------------------------------------- 1 | sp_api::decl_runtime_apis! { 2 | pub trait Api { 3 | fn test(&self); 4 | } 5 | } 6 | 7 | fn main() {} 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/adding_self_parameter.stderr: -------------------------------------------------------------------------------- 1 | error: `self` as argument not supported. 2 | --> $DIR/adding_self_parameter.rs:3:11 3 | | 4 | 3 | fn test(&self); 5 | | ^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/changed_in_no_default_method.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime::traits::GetNodeBlockType; 2 | use substrate_test_runtime_client::runtime::Block; 3 | 4 | /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` 5 | /// trait are done by the `construct_runtime!` macro in a real runtime. 6 | struct Runtime {} 7 | impl GetNodeBlockType for Runtime { 8 | type NodeBlock = Block; 9 | } 10 | 11 | sp_api::decl_runtime_apis! { 12 | #[api_version(2)] 13 | pub trait Api { 14 | #[changed_in(2)] 15 | fn test(data: u64); 16 | } 17 | } 18 | 19 | fn main() {} 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/changed_in_no_default_method.stderr: -------------------------------------------------------------------------------- 1 | error: There is no 'default' method with this name (without `changed_in` attribute). 2 | The 'default' method is used to call into the latest implementation. 3 | --> $DIR/changed_in_no_default_method.rs:15:6 4 | | 5 | 15 | fn test(data: u64); 6 | | ^^^^ 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/changed_in_unknown_version.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime::traits::GetNodeBlockType; 2 | use substrate_test_runtime_client::runtime::Block; 3 | 4 | /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` 5 | /// trait are done by the `construct_runtime!` macro in a real runtime. 6 | struct Runtime {} 7 | impl GetNodeBlockType for Runtime { 8 | type NodeBlock = Block; 9 | } 10 | 11 | sp_api::decl_runtime_apis! { 12 | pub trait Api { 13 | #[changed_in(2)] 14 | fn test(data: u64); 15 | fn test(data: u64); 16 | } 17 | } 18 | 19 | fn main() {} 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/changed_in_unknown_version.stderr: -------------------------------------------------------------------------------- 1 | error: `changed_in` version can not be greater than the `api_version` 2 | --> $DIR/changed_in_unknown_version.rs:14:3 3 | | 4 | 14 | fn test(data: u64); 5 | | ^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/declaring_old_block.rs: -------------------------------------------------------------------------------- 1 | sp_api::decl_runtime_apis! { 2 | pub trait Api { 3 | fn test(); 4 | } 5 | } 6 | 7 | fn main() {} 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/declaring_old_block.stderr: -------------------------------------------------------------------------------- 1 | error: `Block: BlockT` generic parameter will be added automatically by the `decl_runtime_apis!` macro! If you try to use a different trait than the substrate `Block` trait, please rename it locally. 2 | --> $DIR/declaring_old_block.rs:2:23 3 | | 4 | 2 | pub trait Api { 5 | | ^^^^^^ 6 | 7 | error: `Block: BlockT` generic parameter will be added automatically by the `decl_runtime_apis!` macro! 8 | --> $DIR/declaring_old_block.rs:2:16 9 | | 10 | 2 | pub trait Api { 11 | | ^^^^^ 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/declaring_own_block_with_different_name.rs: -------------------------------------------------------------------------------- 1 | sp_api::decl_runtime_apis! { 2 | pub trait Api { 3 | fn test(); 4 | } 5 | } 6 | 7 | fn main() {} 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/declaring_own_block_with_different_name.stderr: -------------------------------------------------------------------------------- 1 | error: `Block: BlockT` generic parameter will be added automatically by the `decl_runtime_apis!` macro! If you try to use a different trait than the substrate `Block` trait, please rename it locally. 2 | --> $DIR/declaring_own_block_with_different_name.rs:2:19 3 | | 4 | 2 | pub trait Api { 5 | | ^^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/empty_impl_runtime_apis_call.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime::traits::GetNodeBlockType; 2 | use substrate_test_runtime_client::runtime::Block; 3 | 4 | /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` 5 | /// trait are done by the `construct_runtime!` macro in a real runtime. 6 | struct Runtime {} 7 | impl GetNodeBlockType for Runtime { 8 | type NodeBlock = Block; 9 | } 10 | 11 | sp_api::decl_runtime_apis! { 12 | pub trait Api { 13 | fn test(data: u64); 14 | } 15 | } 16 | 17 | sp_api::impl_runtime_apis! {} 18 | 19 | fn main() {} 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/empty_impl_runtime_apis_call.stderr: -------------------------------------------------------------------------------- 1 | error: No api implementation given! 2 | --> $DIR/empty_impl_runtime_apis_call.rs:17:1 3 | | 4 | 17 | sp_api::impl_runtime_apis! {} 5 | | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 6 | | 7 | = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info) 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/impl_two_traits_with_same_name.stderr: -------------------------------------------------------------------------------- 1 | error: Two traits with the same name detected! The trait name is used to generate its ID. Please rename one trait at the declaration! 2 | --> $DIR/impl_two_traits_with_same_name.rs:30:15 3 | | 4 | 30 | impl second::Api for Runtime { 5 | | ^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/invalid_api_version.rs: -------------------------------------------------------------------------------- 1 | sp_api::decl_runtime_apis! { 2 | #[api_version] 3 | pub trait Api { 4 | fn test(data: u64); 5 | } 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/invalid_api_version.stderr: -------------------------------------------------------------------------------- 1 | error: Unexpected `api_version` attribute. The supported format is `api_version(1)` 2 | --> $DIR/invalid_api_version.rs:2:4 3 | | 4 | 2 | #[api_version] 5 | | ^^^^^^^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/invalid_api_version_2.rs: -------------------------------------------------------------------------------- 1 | sp_api::decl_runtime_apis! { 2 | #[api_version("1")] 3 | pub trait Api { 4 | fn test(data: u64); 5 | } 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/invalid_api_version_2.stderr: -------------------------------------------------------------------------------- 1 | error: Unexpected `api_version` attribute. The supported format is `api_version(1)` 2 | --> $DIR/invalid_api_version_2.rs:2:4 3 | | 4 | 2 | #[api_version("1")] 5 | | ^^^^^^^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/invalid_api_version_3.rs: -------------------------------------------------------------------------------- 1 | sp_api::decl_runtime_apis! { 2 | #[api_version()] 3 | pub trait Api { 4 | fn test(data: u64); 5 | } 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/invalid_api_version_3.stderr: -------------------------------------------------------------------------------- 1 | error: Unexpected `api_version` attribute. The supported format is `api_version(1)` 2 | --> $DIR/invalid_api_version_3.rs:2:4 3 | | 4 | 2 | #[api_version()] 5 | | ^^^^^^^^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/missing_block_generic_parameter.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime::traits::GetNodeBlockType; 2 | use substrate_test_runtime_client::runtime::Block; 3 | 4 | /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` 5 | /// trait are done by the `construct_runtime!` macro in a real runtime. 6 | struct Runtime {} 7 | impl GetNodeBlockType for Runtime { 8 | type NodeBlock = Block; 9 | } 10 | 11 | sp_api::decl_runtime_apis! { 12 | pub trait Api { 13 | fn test(data: u64); 14 | } 15 | } 16 | 17 | sp_api::impl_runtime_apis! { 18 | impl self::Api for Runtime { 19 | fn test(data: u64) { 20 | unimplemented!() 21 | } 22 | } 23 | } 24 | 25 | fn main() {} 26 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/missing_block_generic_parameter.stderr: -------------------------------------------------------------------------------- 1 | error: Missing `Block` generic parameter. 2 | --> $DIR/missing_block_generic_parameter.rs:18:13 3 | | 4 | 18 | impl self::Api for Runtime { 5 | | ^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/missing_path_for_trait.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime::traits::GetNodeBlockType; 2 | use substrate_test_runtime_client::runtime::Block; 3 | 4 | /// The declaration of the `Runtime` type and the implementation of the `GetNodeBlockType` 5 | /// trait are done by the `construct_runtime!` macro in a real runtime. 6 | struct Runtime {} 7 | impl GetNodeBlockType for Runtime { 8 | type NodeBlock = Block; 9 | } 10 | 11 | sp_api::decl_runtime_apis! { 12 | pub trait Api { 13 | fn test(data: u64); 14 | } 15 | } 16 | 17 | sp_api::impl_runtime_apis! { 18 | impl Api for Runtime { 19 | fn test(data: u64) { 20 | unimplemented!() 21 | } 22 | } 23 | } 24 | 25 | fn main() {} 26 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/missing_path_for_trait.stderr: -------------------------------------------------------------------------------- 1 | error: The implemented trait has to be referenced with a path, e.g. `impl client::Core for Runtime`. 2 | --> $DIR/missing_path_for_trait.rs:18:7 3 | | 4 | 18 | impl Api for Runtime { 5 | | ^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_error_associated_type.rs: -------------------------------------------------------------------------------- 1 | use substrate_test_runtime_client::runtime::Block; 2 | 3 | sp_api::decl_runtime_apis! { 4 | pub trait Api { 5 | fn test(data: u64); 6 | } 7 | } 8 | 9 | struct MockApi; 10 | 11 | sp_api::mock_impl_runtime_apis! { 12 | impl Api for MockApi { 13 | type OtherData = u32; 14 | 15 | fn test(data: u64) {} 16 | } 17 | } 18 | 19 | fn main() {} 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_error_associated_type.stderr: -------------------------------------------------------------------------------- 1 | error: Only associated type with name `Error` is allowed 2 | --> $DIR/mock_only_error_associated_type.rs:13:3 3 | | 4 | 13 | type OtherData = u32; 5 | | ^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_one_block_type.rs: -------------------------------------------------------------------------------- 1 | struct Block2; 2 | 3 | sp_api::decl_runtime_apis! { 4 | pub trait Api { 5 | fn test(data: u64); 6 | } 7 | 8 | pub trait Api2 { 9 | fn test(data: u64); 10 | } 11 | } 12 | 13 | struct MockApi; 14 | 15 | sp_api::mock_impl_runtime_apis! { 16 | impl Api for MockApi { 17 | fn test(data: u64) {} 18 | } 19 | 20 | impl Api2 for MockApi { 21 | fn test(data: u64) {} 22 | } 23 | } 24 | 25 | fn main() {} 26 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_one_block_type.stderr: -------------------------------------------------------------------------------- 1 | error: Block type should be the same between all runtime apis. 2 | --> $DIR/mock_only_one_block_type.rs:20:12 3 | | 4 | 20 | impl Api2 for MockApi { 5 | | ^^^^^^ 6 | 7 | error: First block type found here 8 | --> $DIR/mock_only_one_block_type.rs:16:11 9 | | 10 | 16 | impl Api for MockApi { 11 | | ^^^^^ 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_one_error_type.rs: -------------------------------------------------------------------------------- 1 | use substrate_test_runtime_client::runtime::Block; 2 | 3 | sp_api::decl_runtime_apis! { 4 | pub trait Api { 5 | fn test(data: u64); 6 | } 7 | 8 | pub trait Api2 { 9 | fn test(data: u64); 10 | } 11 | } 12 | 13 | struct MockApi; 14 | 15 | sp_api::mock_impl_runtime_apis! { 16 | impl Api for MockApi { 17 | type Error = u32; 18 | 19 | fn test(data: u64) {} 20 | } 21 | 22 | impl Api2 for MockApi { 23 | type Error = u64; 24 | 25 | fn test(data: u64) {} 26 | } 27 | } 28 | 29 | fn main() {} 30 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_one_self_type.rs: -------------------------------------------------------------------------------- 1 | sp_api::decl_runtime_apis! { 2 | pub trait Api { 3 | fn test(data: u64); 4 | } 5 | 6 | pub trait Api2 { 7 | fn test(data: u64); 8 | } 9 | } 10 | 11 | struct MockApi; 12 | struct MockApi2; 13 | 14 | sp_api::mock_impl_runtime_apis! { 15 | impl Api for MockApi { 16 | fn test(data: u64) {} 17 | } 18 | 19 | impl Api2 for MockApi2 { 20 | fn test(data: u64) {} 21 | } 22 | } 23 | 24 | fn main() {} 25 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_one_self_type.stderr: -------------------------------------------------------------------------------- 1 | error: Self type should not change between runtime apis 2 | --> $DIR/mock_only_one_self_type.rs:19:23 3 | | 4 | 19 | impl Api2 for MockApi2 { 5 | | ^^^^^^^^ 6 | 7 | error: First self type found here 8 | --> $DIR/mock_only_one_self_type.rs:15:22 9 | | 10 | 15 | impl Api for MockApi { 11 | | ^^^^^^^ 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/api/test/tests/ui/mock_only_self_reference.rs: -------------------------------------------------------------------------------- 1 | use substrate_test_runtime_client::runtime::Block; 2 | 3 | sp_api::decl_runtime_apis! { 4 | pub trait Api { 5 | fn test(data: u64); 6 | fn test2(data: u64); 7 | } 8 | } 9 | 10 | struct MockApi; 11 | 12 | sp_api::mock_impl_runtime_apis! { 13 | impl Api for MockApi { 14 | fn test(self, data: u64) {} 15 | 16 | fn test2(&mut self, data: u64) {} 17 | } 18 | } 19 | 20 | fn main() {} 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/chain-spec/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-chain-spec" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Substrate chain configurations types." 10 | 11 | [dependencies] 12 | serde = { version = "1.0.101", features = ["derive"] } 13 | serde_json = "1.0.41" 14 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/database/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-database" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Substrate database trait." 10 | documentation = "https://docs.rs/sp-database" 11 | 12 | [dependencies] 13 | parking_lot = "0.10.0" 14 | kvdb = "0.7.0" 15 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/debug-derive/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-debug-derive" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Macros to derive runtime debug implementation." 10 | documentation = "https://docs.rs/sp-debug-derive" 11 | 12 | 13 | [package.metadata.docs.rs] 14 | targets = ["x86_64-unknown-linux-gnu"] 15 | 16 | [lib] 17 | proc-macro = true 18 | 19 | [dependencies] 20 | quote = "1.0.3" 21 | syn = "1.0.7" 22 | proc-macro2 = "1.0" 23 | 24 | [features] 25 | std = [] 26 | 27 | [dev-dependencies] 28 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/externalities/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-externalities" 3 | version = "0.8.0-rc4" 4 | license = "Apache-2.0" 5 | authors = ["Parity Technologies "] 6 | edition = "2018" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Substrate externalities abstraction" 10 | documentation = "https://docs.rs/sp-externalities" 11 | 12 | [package.metadata.docs.rs] 13 | targets = ["x86_64-unknown-linux-gnu"] 14 | 15 | [dependencies] 16 | sp-storage = { version = "2.0.0-rc4", path = "../storage" } 17 | sp-std = { version = "2.0.0-rc4", path = "../std" } 18 | environmental = { version = "1.1.1" } 19 | codec = { package = "parity-scale-codec", version = "1.3.1" } 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/keyring/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-keyring" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Keyring support code for the runtime. A set of test accounts." 10 | documentation = "https://docs.rs/sp-keyring" 11 | 12 | [package.metadata.docs.rs] 13 | targets = ["x86_64-unknown-linux-gnu"] 14 | 15 | 16 | [dependencies] 17 | sp-core = { version = "2.0.0-rc4", path = "../core" } 18 | sp-runtime = { version = "2.0.0-rc4", path = "../runtime" } 19 | lazy_static = "1.4.0" 20 | strum = { version = "0.16.0", features = ["derive"] } 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/npos-elections/compact/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-npos-elections-compact" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "NPoS Compact Solution Type" 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [lib] 15 | proc-macro = true 16 | 17 | [dependencies] 18 | syn = { version = "1.0.7", features = ["full", "visit"] } 19 | quote = "1.0" 20 | proc-macro2 = "1.0.6" 21 | proc-macro-crate = "0.1.4" 22 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/npos-elections/fuzzer/.gitignore: -------------------------------------------------------------------------------- 1 | hfuzz_target 2 | hfuzz_workspace 3 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/panic-handler/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-panic-handler" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Custom panic hook with bug report link" 10 | documentation = "https://docs.rs/sp-panic-handler" 11 | 12 | [package.metadata.docs.rs] 13 | targets = ["x86_64-unknown-linux-gnu"] 14 | 15 | [dependencies] 16 | backtrace = "0.3.38" 17 | log = "0.4.8" 18 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/rpc/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-rpc" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Substrate RPC primitives and utilities." 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [dependencies] 15 | serde = { version = "1.0.101", features = ["derive"] } 16 | sp-core = { version = "2.0.0-rc4", path = "../core" } 17 | 18 | [dev-dependencies] 19 | serde_json = "1.0.41" 20 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_duplicate_versions.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::runtime_interface; 2 | 3 | #[runtime_interface] 4 | trait Test { 5 | #[version(2)] 6 | fn test() { } 7 | #[version(2)] 8 | fn test() { } 9 | } 10 | 11 | fn main() {} 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_duplicate_versions.stderr: -------------------------------------------------------------------------------- 1 | error: Duplicated version attribute 2 | --> $DIR/no_duplicate_versions.rs:7:2 3 | | 4 | 7 | #[version(2)] 5 | | ^ 6 | 7 | error: Previous version with the same number defined here 8 | --> $DIR/no_duplicate_versions.rs:5:2 9 | | 10 | 5 | #[version(2)] 11 | | ^ 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_gaps_in_versions.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::runtime_interface; 2 | 3 | #[runtime_interface] 4 | trait Test { 5 | #[version(1)] 6 | fn test2() {} 7 | #[version(2)] 8 | fn test2() {} 9 | #[version(3)] 10 | fn test2() {} 11 | 12 | fn test() { } 13 | #[version(3)] 14 | fn test() { } 15 | } 16 | 17 | fn main() {} 18 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_gaps_in_versions.stderr: -------------------------------------------------------------------------------- 1 | error: Unexpected version attribute: missing version '2' for this function 2 | --> $DIR/no_gaps_in_versions.rs:13:2 3 | | 4 | 13 | #[version(3)] 5 | | ^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_generic_parameters_method.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::runtime_interface; 2 | 3 | #[runtime_interface] 4 | trait Test { 5 | fn test() {} 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_generic_parameters_method.stderr: -------------------------------------------------------------------------------- 1 | error: Generic parameters not supported. 2 | --> $DIR/no_generic_parameters_method.rs:5:10 3 | | 4 | 5 | fn test() {} 5 | | ^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_generic_parameters_trait.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::runtime_interface; 2 | 3 | #[runtime_interface] 4 | trait Test { 5 | fn test() {} 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_generic_parameters_trait.stderr: -------------------------------------------------------------------------------- 1 | error: Generic parameters not supported. 2 | --> $DIR/no_generic_parameters_trait.rs:4:12 3 | | 4 | 4 | trait Test { 5 | | ^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_method_implementation.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::runtime_interface; 2 | 3 | #[runtime_interface] 4 | trait Test { 5 | fn test(); 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/no_method_implementation.stderr: -------------------------------------------------------------------------------- 1 | error: Methods need to have an implementation. 2 | --> $DIR/no_method_implementation.rs:5:2 3 | | 4 | 5 | fn test(); 5 | | ^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/pass_by_enum_with_struct.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::pass_by::PassByEnum; 2 | 3 | #[derive(PassByEnum)] 4 | struct Test; 5 | 6 | fn main() {} 7 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/pass_by_enum_with_struct.stderr: -------------------------------------------------------------------------------- 1 | error: `PassByEnum` only supports enums as input type. 2 | --> $DIR/pass_by_enum_with_struct.rs:3:10 3 | | 4 | 3 | #[derive(PassByEnum)] 5 | | ^^^^^^^^^^ 6 | | 7 | = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info) 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/pass_by_enum_with_value_variant.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::pass_by::PassByEnum; 2 | 3 | #[derive(PassByEnum)] 4 | enum Test { 5 | Var0(u32), 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/pass_by_enum_with_value_variant.stderr: -------------------------------------------------------------------------------- 1 | error: `PassByEnum` only supports unit variants. 2 | --> $DIR/pass_by_enum_with_value_variant.rs:3:10 3 | | 4 | 3 | #[derive(PassByEnum)] 5 | | ^^^^^^^^^^ 6 | | 7 | = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info) 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/pass_by_inner_with_two_fields.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::pass_by::PassByInner; 2 | 3 | #[derive(PassByInner)] 4 | struct Test { 5 | data: u32, 6 | data2: u32, 7 | } 8 | 9 | fn main() {} 10 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/pass_by_inner_with_two_fields.stderr: -------------------------------------------------------------------------------- 1 | error: Only newtype/one field structs are supported by `PassByInner`! 2 | --> $DIR/pass_by_inner_with_two_fields.rs:3:10 3 | | 4 | 3 | #[derive(PassByInner)] 5 | | ^^^^^^^^^^^ 6 | | 7 | = note: this error originates in a derive macro (in Nightly builds, run with -Z macro-backtrace for more info) 8 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/take_self_by_value.rs: -------------------------------------------------------------------------------- 1 | use sp_runtime_interface::runtime_interface; 2 | 3 | #[runtime_interface] 4 | trait Test { 5 | fn test(self) {} 6 | } 7 | 8 | fn main() {} 9 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/runtime-interface/tests/ui/take_self_by_value.stderr: -------------------------------------------------------------------------------- 1 | error: Taking `Self` by value is not allowed. 2 | --> $DIR/take_self_by_value.rs:5:10 3 | | 4 | 5 | fn test(self) {} 5 | | ^^^^ 6 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/serializer/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-serializer" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Substrate customizable serde serializer." 10 | documentation = "https://docs.rs/sp-serializer" 11 | 12 | [package.metadata.docs.rs] 13 | targets = ["x86_64-unknown-linux-gnu"] 14 | 15 | [dependencies] 16 | serde = "1.0.101" 17 | serde_json = "1.0.41" 18 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/std/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-std" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | 10 | description = "Lowest-abstraction level for the Substrate runtime: just exports useful primitives from std or client/alloc to be used with any code that depends on the runtime." 11 | documentation = "https://docs.rs/sp-std" 12 | 13 | [package.metadata.docs.rs] 14 | targets = ["x86_64-unknown-linux-gnu"] 15 | 16 | [features] 17 | default = ["std"] 18 | std = [] 19 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/tracing/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-tracing" 3 | version = "2.0.0-rc4" 4 | license = "Apache-2.0" 5 | authors = ["Parity Technologies "] 6 | edition = "2018" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Instrumentation primitives and macros for Substrate." 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [dependencies] 15 | tracing = { version = "0.1.13", optional = true } 16 | rental = { version = "0.5.5", optional = true } 17 | log = { version = "0.4.8", optional = true } 18 | 19 | [features] 20 | default = [ "std" ] 21 | std = [ "tracing", "rental", "log" ] 22 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/primitives/utils/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "sp-utils" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "I/O for Substrate runtimes" 10 | 11 | [dependencies] 12 | futures = "0.3.4" 13 | futures-core = "0.3.4" 14 | lazy_static = "1.4.0" 15 | prometheus = "0.8.0" 16 | futures-timer = "3.0.2" 17 | 18 | [features] 19 | default = ["metered"] 20 | metered = [] 21 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/test-utils/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "substrate-test-utils" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | 10 | [package.metadata.docs.rs] 11 | targets = ["x86_64-unknown-linux-gnu"] 12 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/utils/build-script-utils/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "substrate-build-script-utils" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Crate with utility functions for `build.rs` scripts." 10 | 11 | [package.metadata.docs.rs] 12 | targets = ["x86_64-unknown-linux-gnu"] 13 | 14 | [dependencies] 15 | platforms = "0.2.1" 16 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/utils/fork-tree/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "fork-tree" 3 | version = "2.0.0-rc4" 4 | authors = ["Parity Technologies "] 5 | edition = "2018" 6 | license = "Apache-2.0" 7 | homepage = "https://substrate.dev" 8 | repository = "https://github.com/paritytech/substrate/" 9 | description = "Utility library for managing tree-like ordered data with logic for pruning the tree while finalizing nodes." 10 | documentation = "https://docs.rs/fork-tree" 11 | 12 | [package.metadata.docs.rs] 13 | targets = ["x86_64-unknown-linux-gnu"] 14 | 15 | [dependencies] 16 | codec = { package = "parity-scale-codec", version = "1.3.1", features = ["derive"] } 17 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/utils/wasm-builder-runner/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "substrate-wasm-builder-runner" 3 | version = "1.0.6" 4 | authors = ["Parity Technologies "] 5 | description = "Runner for substrate-wasm-builder" 6 | edition = "2018" 7 | readme = "README.md" 8 | repository = "https://github.com/paritytech/substrate/" 9 | license = "Apache-2.0" 10 | homepage = "https://substrate.dev" 11 | 12 | [package.metadata.docs.rs] 13 | targets = ["x86_64-unknown-linux-gnu"] 14 | 15 | [dependencies] 16 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/utils/wasm-builder-runner/README.md: -------------------------------------------------------------------------------- 1 | ## WASM builder runner 2 | 3 | Since cargo contains many bugs when it comes to correct dependency and feature 4 | resolution, we need this little tool. See for 5 | more information. 6 | 7 | It will create a project that will call `substrate-wasm-builder` to prevent any dependencies 8 | from `substrate-wasm-builder` influencing the main project's dependencies. 9 | 10 | For more information see 11 | 12 | License: GPL-3.0 13 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/frontier/vendor/substrate/utils/wasm-builder/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "substrate-wasm-builder" 3 | version = "1.0.11" 4 | authors = ["Parity Technologies "] 5 | description = "Utility for building WASM binaries" 6 | edition = "2018" 7 | readme = "README.md" 8 | repository = "https://github.com/paritytech/substrate/" 9 | license = "Apache-2.0" 10 | homepage = "https://substrate.dev" 11 | 12 | [package.metadata.docs.rs] 13 | targets = ["x86_64-unknown-linux-gnu"] 14 | 15 | [dependencies] 16 | build-helper = "0.1.1" 17 | cargo_metadata = "0.10.0" 18 | tempfile = "3.1.0" 19 | toml = "0.5.4" 20 | walkdir = "2.3.1" 21 | fs2 = "0.4.3" 22 | wasm-gc-api = "0.1.11" 23 | atty = "0.2.13" 24 | itertools = "0.8.2" 25 | -------------------------------------------------------------------------------- /advanced/term-01/lesson11/web3example/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "web3example", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "web3": "^1.2.9" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /advanced/term-01/lesson12/Benchmark and Launch.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:8d6ce828542ba77ba6e2a4de6d01522c75d4ba52794c5de55b8842751205c94d 3 | size 1246951 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson2/part1_Runtime_Macros.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f98f24f2b93d6d342a2dce8b57fa26ebba4869fdac8593021adb417f3f499bac 3 | size 423738 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson2/part2_Storage_Design.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e51214424c9baab308e09dc5cd203fbd83ec1524c238d4f31088135090279ba0 3 | size 421111 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson2/part3_PoE_Module_Development.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9ea3cfa073561428150fe97ccafd43926dce8f369f18806e21650a74b91c903f 3 | size 181308 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson3/lesson3_part1_runtime_module_test.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:469d7153092198ff631d78d9cf7da87baf9088e7bb59abfb6659750964d99647 3 | size 168277 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson3/lesson3_part2_UI.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a948a9dca85b52afd6406ab4f9d17b70f1b5ecef53eac35e08190acadac17332 3 | size 239857 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson3/lesson3_part3_fees_and_weight.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:926ac6f83cecbd8ef63d149bf7e530466b5f7a3887d3871169f0f88bfa050365 3 | size 543309 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson4/4.1-Polkadot-JS App.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e26a26e4b373ffd5bc3aae8e54bee336b3d0a5ffd262acdd2e66f6d6876533e7 3 | size 246516 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson4/4.2-Polkadot-JS API.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:4780cf91090a1a524ac151e2be7570feb6fdabb59fdc3e5239f9e7a8a296aa7f 3 | size 438385 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson4/4.3-使用 Front-end template.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:b2b61dd63734be5d0828cccf26c7ce400da115ef7a0f1c050d7054f899ebdd38 3 | size 356587 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson5/lesson5.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6d54e5ed829d607f82c89b0c99062e39b66b4bdad2263f7555e50857803054cf 3 | size 835203 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson6/lesson6.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:2e5796d5245e030bc698e75891d8e1b3cfa95cca4d8e6311c4ffa31b9faa4ede 3 | size 326143 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson7/lecture_7.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:6ec06c3a75a57abec429c380bf27ae55dc4871ed78c9e0e64f54a04efea033a0 3 | size 525805 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson8/lesson8.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:58186af9d69698c2e517d1b7eb9036c2beb26f04ada6420ab14ea9bb14644fbd 3 | size 481823 4 | -------------------------------------------------------------------------------- /advanced/term-01/lesson9/lesson9.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:31dcf382e9790631f9ff3cafe519c2485637942eed0ca66fd841592d34275182 3 | size 328828 4 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/README.md: -------------------------------------------------------------------------------- 1 | # Kitties Course 2 | 3 | * [Substrate 进阶课第三讲 - 课程讲义](lecture-notes.md) 4 | * [Substrate Node README](node/README.md) 5 | * [Front-end README](frontend/README.md) 6 | 7 | To make polkadot-JS app connects to the Substrate node, add 8 | [`frontend/src/config/types.json`](frontend/src/config/types.json) 9 | JSON structure in app `Settings` > `Developer`. 10 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/.env: -------------------------------------------------------------------------------- 1 | EXTEND_ESLINT=true 2 | PORT=8000 3 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .vscode 3 | **/.DS_Store 4 | build 5 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/.nvmrc: -------------------------------------------------------------------------------- 1 | lts/erbium 2 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/docs/kitties-screenshot01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/docs/kitties-screenshot01.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_1.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_10.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_11.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_12.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_13.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_14.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_15.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_16.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_17.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_18.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_19.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_2.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_20.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_3.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_4.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_5.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_6.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_7.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_8.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/accessorie_9.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_1.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_10.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_11.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_12.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_13.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_14.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_15.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_2.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_3.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_4.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_5.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_6.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_7.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_8.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/body_9.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_1.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_10.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_11.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_12.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_13.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_14.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_15.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_2.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_3.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_4.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_5.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_6.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_7.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_8.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/eyes_9.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_1.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_10.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_2.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_3.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_4.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_5.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_6.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_7.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_8.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/fur_9.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_1.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_10.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_2.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_3.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_4.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_5.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_6.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_7.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_8.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/mouth_9.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/zz_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/zz_1.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/zz_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/KittyAvatar/zz_2.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/favicon.ico -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/assets/substrate-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/03-kitties/frontend/public/assets/substrate-logo.png -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Substrate Front End", 3 | "name": "Substrate Front End Template", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 48x48 32x32 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/__tests__/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import App from '../App'; 4 | 5 | describe('App Test Suite', () => { 6 | it('renders without crashing', () => { 7 | const div = document.createElement('div'); 8 | ReactDOM.render(, div); 9 | }); 10 | }); 11 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/config/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "APP_NAME": "substrate-front-end-tutorial", 3 | "DEVELOPMENT_KEYRING": true, 4 | "RPC": {} 5 | } 6 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/config/development.json: -------------------------------------------------------------------------------- 1 | { 2 | "PROVIDER_SOCKET": "ws://127.0.0.1:9944" 3 | } 4 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/config/index.js: -------------------------------------------------------------------------------- 1 | import configCommon from './common.json'; 2 | import types from './types.json'; 3 | // Using `require` as `import` does not support dynamic loading (yet). 4 | const configEnv = require(`./${process.env.NODE_ENV}.json`); 5 | 6 | // Accepting React env vars and aggregating them into `config` object. 7 | const envVarNames = [ 8 | 'REACT_APP_PROVIDER_SOCKET', 9 | 'REACT_APP_DEVELOPMENT_KEYRING' 10 | ]; 11 | const envVars = envVarNames.reduce((mem, n) => { 12 | // Remove the `REACT_APP_` prefix 13 | if (process.env[n] !== undefined) mem[n.slice(10)] = process.env[n]; 14 | return mem; 15 | }, {}); 16 | 17 | const config = { ...configCommon, ...configEnv, ...envVars, types }; 18 | export default config; 19 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/config/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "PROVIDER_SOCKET": "wss://dev-node.substrate.dev" 3 | } 4 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/config/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "PROVIDER_SOCKET": "wss://dev-node.substrate.dev" 3 | } 4 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/config/types.json: -------------------------------------------------------------------------------- 1 | { 2 | "Address": "AccountId", 3 | "LookupSource": "AccountId", 4 | "Kitty": "([u8; 16])", 5 | "KittyIndex": "u32", 6 | "KittyLinkedItem": { 7 | "prev": "Option", 8 | "next": "Option" 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | 4 | import App from './App'; 5 | 6 | ReactDOM.render(, 7 | document.getElementById('root') 8 | ); 9 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/substrate-lib/components/DeveloperConsole.js: -------------------------------------------------------------------------------- 1 | // This component will simply add utility functions to your developer console. 2 | import { useSubstrate } from '../'; 3 | 4 | export default function DeveloperConsole (props) { 5 | const { api, apiState, keyring, keyringState } = useSubstrate(); 6 | if (apiState === 'READY') { window.api = api; } 7 | if (keyringState === 'READY') { window.keyring = keyring; } 8 | window.util = require('@polkadot/util'); 9 | window.utilCrypto = require('@polkadot/util-crypto'); 10 | 11 | return null; 12 | } 13 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/substrate-lib/components/index.js: -------------------------------------------------------------------------------- 1 | import { TxButton, TxGroupButton } from './TxButton'; 2 | import DeveloperConsole from './DeveloperConsole'; 3 | 4 | export { TxButton, TxGroupButton, DeveloperConsole }; 5 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/substrate-lib/index.js: -------------------------------------------------------------------------------- 1 | import { 2 | SubstrateContextProvider, useSubstrate 3 | } from './SubstrateContext'; 4 | import utils from './utils'; 5 | 6 | export { useSubstrate, SubstrateContextProvider, utils }; 7 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/frontend/src/substrate-lib/utils.js: -------------------------------------------------------------------------------- 1 | const utils = { 2 | paramConversion: { 3 | num: [ 4 | 'Compact', 5 | 'BalanceOf', 6 | 'u8', 'u16', 'u32', 'u64', 'u128', 7 | 'i8', 'i16', 'i32', 'i64', 'i128' 8 | ] 9 | } 10 | }; 11 | 12 | export default utils; 13 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM paritytech/substrate-playground-template-base:sha-0793587 2 | 3 | # Here the whole repo is already accessible at . (thanks to the inherited image) 4 | 5 | RUN cargo build --release 6 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Substrate Node template", 3 | "dockerFile": "Dockerfile", 4 | "settings": { 5 | "terminal.integrated.shell.linux": "/bin/bash", 6 | "lldb.executable": "/usr/bin/lldb" 7 | }, 8 | "extensions": [ 9 | "rust-lang.rust", 10 | "bungcip.better-toml", 11 | "vadimcn.vscode-lldb" 12 | ], 13 | "forwardPorts": [ 14 | 3000, 15 | 9944 16 | ], 17 | "image": "paritytech/substrate-playground-template-node-template:sha-c9fda53" 18 | } 19 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | **/target/ 4 | # These are backup files generated by rustfmt 5 | **/*.rs.bk 6 | 7 | .DS_Store 8 | 9 | # The cache for docker container dependency 10 | .cargo 11 | 12 | # The cache for chain data in container 13 | .local -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/Cargo.toml: -------------------------------------------------------------------------------- 1 | [profile.release] 2 | panic = 'unwind' 3 | 4 | [workspace] 5 | members = [ 6 | 'node', 7 | 'pallets/template', 8 | 'pallets/kitties', 9 | 'runtime', 10 | ] 11 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.2" 2 | 3 | services: 4 | dev: 5 | container_name: node-template 6 | image: paritytech/ci-linux:production 7 | working_dir: /var/www/node-template 8 | ports: 9 | - "9944:9944" 10 | environment: 11 | - CARGO_HOME=/var/www/node-template/.cargo 12 | volumes: 13 | - .:/var/www/node-template 14 | - type: bind 15 | source: ./.local 16 | target: /root/.local 17 | command: bash -c "cargo build --release && ./target/release/node-template --dev --ws-external" 18 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/node/build.rs: -------------------------------------------------------------------------------- 1 | use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; 2 | 3 | fn main() { 4 | generate_cargo_keys(); 5 | 6 | rerun_if_git_head_changed(); 7 | } 8 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/node/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod chain_spec; 2 | pub mod service; 3 | pub mod rpc; 4 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/node/src/main.rs: -------------------------------------------------------------------------------- 1 | //! Substrate Node Template CLI library. 2 | #![warn(missing_docs)] 3 | 4 | mod chain_spec; 5 | #[macro_use] 6 | mod service; 7 | mod cli; 8 | mod command; 9 | mod rpc; 10 | 11 | fn main() -> sc_cli::Result<()> { 12 | command::run() 13 | } 14 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/pallets/template/src/tests.rs: -------------------------------------------------------------------------------- 1 | use crate::{Error, mock::*}; 2 | use frame_support::{assert_ok, assert_noop}; 3 | 4 | #[test] 5 | fn it_works_for_default_value() { 6 | new_test_ext().execute_with(|| { 7 | // Dispatch a signed extrinsic. 8 | assert_ok!(TemplateModule::do_something(Origin::signed(1), 42)); 9 | // Read pallet storage and assert an expected result. 10 | assert_eq!(TemplateModule::something(), Some(42)); 11 | }); 12 | } 13 | 14 | #[test] 15 | fn correct_error_for_none_value() { 16 | new_test_ext().execute_with(|| { 17 | // Ensure the expected error is thrown when no value is present. 18 | assert_noop!( 19 | TemplateModule::cause_error(Origin::signed(1)), 20 | Error::::NoneValue 21 | ); 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/runtime/build.rs: -------------------------------------------------------------------------------- 1 | use wasm_builder_runner::WasmBuilder; 2 | 3 | fn main() { 4 | WasmBuilder::new() 5 | .with_current_project() 6 | .with_wasm_builder_from_crates("2.0.0") 7 | .export_heap_base() 8 | .import_memory() 9 | .build() 10 | } 11 | -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/scripts/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "*** Start Substrate node template ***" 6 | 7 | cd $(dirname ${BASH_SOURCE[0]})/.. 8 | 9 | docker-compose down --remove-orphans 10 | docker-compose run --rm --service-ports dev $@ -------------------------------------------------------------------------------- /advanced/term-02/03-kitties/substrate/scripts/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "*** Initializing WASM build environment" 6 | 7 | if [ -z $CI_PROJECT_NAME ] ; then 8 | rustup update nightly 9 | rustup update stable 10 | fi 11 | 12 | rustup target add wasm32-unknown-unknown --toolchain nightly 13 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | indent_style=space 5 | indent_size=2 6 | tab_width=2 7 | end_of_line=lf 8 | 9 | [*.{rs,toml}] 10 | indent_style=tab 11 | indent_size=tab 12 | tab_width=2 13 | end_of_line=lf 14 | charset=utf-8 15 | trim_trailing_whitespace=true 16 | max_line_length=100 17 | insert_final_newline=true 18 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/.gitignore: -------------------------------------------------------------------------------- 1 | # Generated by Cargo 2 | # will have compiled files and executables 3 | **/target/ 4 | # These are backup files generated by rustfmt 5 | **/*.rs.bk 6 | 7 | .DS_Store 8 | 9 | # The cache for docker container dependency 10 | .cargo 11 | 12 | # The cache for chain data in container 13 | .local 14 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/assets/hash-func.jpg: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:9690c15e5accee33801bfaceb05ffda62b8d0267dd3d964a5fbace78fe12bc95 3 | size 41973 4 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/assets/multiple-ocws.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/04-ocw/assets/multiple-ocws.png -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/assets/off-chain-workers-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/04-ocw/assets/off-chain-workers-v2.png -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/assets/sr25519-algo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/04-ocw/assets/sr25519-algo.png -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/assignment/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-02/04-ocw/assignment/.keep -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/Cargo.toml: -------------------------------------------------------------------------------- 1 | [profile.release] 2 | panic = 'unwind' 3 | 4 | [workspace] 5 | members = [ 6 | 'node', 7 | 'pallets/*', 8 | 'runtime', 9 | ] 10 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/node/build.rs: -------------------------------------------------------------------------------- 1 | use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; 2 | 3 | fn main() { 4 | generate_cargo_keys(); 5 | 6 | rerun_if_git_head_changed(); 7 | } 8 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/node/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod chain_spec; 2 | pub mod service; 3 | pub mod rpc; 4 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/node/src/main.rs: -------------------------------------------------------------------------------- 1 | //! Substrate Node Template CLI library. 2 | #![warn(missing_docs)] 3 | 4 | mod chain_spec; 5 | #[macro_use] 6 | mod service; 7 | mod cli; 8 | mod command; 9 | mod rpc; 10 | 11 | fn main() -> sc_cli::Result<()> { 12 | command::run() 13 | } 14 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/pallets/template/src/tests.rs: -------------------------------------------------------------------------------- 1 | use crate::{Error, mock::*}; 2 | use frame_support::{assert_ok, assert_noop}; 3 | 4 | #[test] 5 | fn it_works_for_default_value() { 6 | new_test_ext().execute_with(|| { 7 | // Dispatch a signed extrinsic. 8 | assert_ok!(TemplateModule::do_something(Origin::signed(1), 42)); 9 | // Read pallet storage and assert an expected result. 10 | assert_eq!(TemplateModule::something(), Some(42)); 11 | }); 12 | } 13 | 14 | #[test] 15 | fn correct_error_for_none_value() { 16 | new_test_ext().execute_with(|| { 17 | // Ensure the expected error is thrown when no value is present. 18 | assert_noop!( 19 | TemplateModule::cause_error(Origin::signed(1)), 20 | Error::::NoneValue 21 | ); 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/runtime/build.rs: -------------------------------------------------------------------------------- 1 | use substrate_wasm_builder::WasmBuilder; 2 | 3 | fn main() { 4 | WasmBuilder::new() 5 | .with_current_project() 6 | .import_memory() 7 | .export_heap_base() 8 | .build() 9 | } 10 | -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/scripts/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "*** Start Substrate node template ***" 6 | 7 | cd $(dirname ${BASH_SOURCE[0]})/.. 8 | 9 | docker-compose down --remove-orphans 10 | docker-compose run --rm --service-ports dev $@ -------------------------------------------------------------------------------- /advanced/term-02/04-ocw/lecture-demo/scripts/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -e 4 | 5 | echo "*** Initializing WASM build environment ***" 6 | 7 | if [ -z $CI_PROJECT_NAME ] ; then 8 | rustup update nightly 9 | rustup update stable 10 | fi 11 | 12 | rustup target add wasm32-unknown-unknown --toolchain nightly 13 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/README.md: -------------------------------------------------------------------------------- 1 | course-notes.md -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/js-component/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-component", 3 | "version": "1.0.0", 4 | "description": "Demo connecting to Substrate Node Template", 5 | "main": "index.js", 6 | "author": "Jimmy Chu", 7 | "license": "Unlicense", 8 | "private": false, 9 | "scripts": { 10 | "start": "node --use_strict index.js", 11 | "start:dev": "nodemon --use_strict --inspect index.js", 12 | "start:debug": "nodemon --use_strict --inspect --inspect-brk index.js" 13 | }, 14 | "dependencies": { 15 | "@polkadot/api": "^5.3.2", 16 | "@polkadot/keyring": "^7.1.1", 17 | "@polkadot/util": "^7.1.1", 18 | "@polkadot/util-crypto": "^7.1.1" 19 | }, 20 | "devDependencies": { 21 | "nodemon": "^2.0.6" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/README.md: -------------------------------------------------------------------------------- 1 | # Kitties Course 2 | 3 | * [Substrate Node README](node/README.md) 4 | * [Front-end README](frontend/README.md) 5 | 6 | To make polkadot-JS app connects to the Substrate node, add 7 | [`frontend/src/config/types.json`](frontend/src/config/types.json) 8 | JSON structure in app `Settings` > `Developer`. 9 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/.env: -------------------------------------------------------------------------------- 1 | EXTEND_ESLINT=true 2 | PORT=8000 3 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .vscode 3 | **/.DS_Store 4 | build 5 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/.nvmrc: -------------------------------------------------------------------------------- 1 | lts/fermium 2 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/.yarnrc.yml: -------------------------------------------------------------------------------- 1 | nodeLinker: node-modules 2 | 3 | plugins: 4 | - path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs 5 | spec: "@yarnpkg/plugin-interactive-tools" 6 | 7 | yarnPath: .yarn/releases/yarn-berry.cjs 8 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/config-overrides.js: -------------------------------------------------------------------------------- 1 | module.exports = function override(webpackConfig) { 2 | webpackConfig.module.rules.push({ 3 | test: /\.mjs$/, 4 | include: /node_modules/, 5 | type: "javascript/auto" 6 | }); 7 | 8 | return webpackConfig; 9 | } 10 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/docs/kitties-screenshot01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/docs/kitties-screenshot01.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_1.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_10.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_11.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_12.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_13.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_14.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_15.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_16.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_17.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_18.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_19.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_2.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_20.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_3.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_4.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_5.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_6.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_7.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_8.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/accessorie_9.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_1.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_10.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_11.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_12.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_13.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_14.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_15.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_2.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_3.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_4.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_5.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_6.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_7.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_8.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/body_9.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_1.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_10.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_11.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_12.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_13.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_14.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_15.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_2.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_3.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_4.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_5.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_6.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_7.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_8.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/eyes_9.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_1.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_10.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_2.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_3.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_4.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_5.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_6.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_7.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_8.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/fur_9.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_1.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_10.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_2.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_3.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_4.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_5.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_6.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_7.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_8.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/mouth_9.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/zz_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/zz_1.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/zz_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/KittyAvatar/zz_2.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/favicon.ico -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/substrate-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/substrate-course/slides/fbefe3f586edb2bda9fb4ca2c45464454c8a93d6/advanced/term-03/03_polkadot-js-api/kitties/frontend/public/assets/substrate-logo.png -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/public/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "short_name": "Substrate Front End", 3 | "name": "Substrate Front End Template", 4 | "icons": [ 5 | { 6 | "src": "favicon.ico", 7 | "sizes": "64x64 48x48 32x32 16x16", 8 | "type": "image/x-icon" 9 | } 10 | ], 11 | "start_url": ".", 12 | "display": "standalone", 13 | "theme_color": "#000000", 14 | "background_color": "#ffffff" 15 | } 16 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/__tests__/App.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | import App from '../App' 4 | 5 | describe('App Test Suite', () => { 6 | it('renders without crashing', () => { 7 | const div = document.createElement('div') 8 | ReactDOM.render(, div) 9 | }) 10 | }) 11 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/config/common.json: -------------------------------------------------------------------------------- 1 | { 2 | "APP_NAME": "substrate-front-end-tutorial", 3 | "DEVELOPMENT_KEYRING": true, 4 | "RPC": {} 5 | } 6 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/config/development.json: -------------------------------------------------------------------------------- 1 | { 2 | "PROVIDER_SOCKET": "ws://127.0.0.1:9944" 3 | } 4 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/config/index.js: -------------------------------------------------------------------------------- 1 | import configCommon from './common.json' 2 | import types from './types.json' 3 | // Using `require` as `import` does not support dynamic loading (yet). 4 | const configEnv = require(`./${process.env.NODE_ENV}.json`) 5 | 6 | // Accepting React env vars and aggregating them into `config` object. 7 | const envVarNames = [ 8 | 'REACT_APP_PROVIDER_SOCKET', 9 | 'REACT_APP_DEVELOPMENT_KEYRING' 10 | ] 11 | const envVars = envVarNames.reduce((mem, n) => { 12 | // Remove the `REACT_APP_` prefix 13 | if (process.env[n] !== undefined) mem[n.slice(10)] = process.env[n] 14 | return mem 15 | }, {}) 16 | 17 | const config = { ...configCommon, ...configEnv, ...envVars, types } 18 | export default config 19 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/config/production.json: -------------------------------------------------------------------------------- 1 | { 2 | "PROVIDER_SOCKET": "wss://dev-node.substrate.dev" 3 | } 4 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/config/test.json: -------------------------------------------------------------------------------- 1 | { 2 | "PROVIDER_SOCKET": "wss://dev-node.substrate.dev" 3 | } 4 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/config/types.json: -------------------------------------------------------------------------------- 1 | { 2 | "Kitty": "([u8; 16])", 3 | "KittyIndex": "u32" 4 | } 5 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/index.js: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | import ReactDOM from 'react-dom' 3 | 4 | import App from './App' 5 | 6 | ReactDOM.render(, 7 | document.getElementById('root') 8 | ) 9 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/substrate-lib/components/DeveloperConsole.js: -------------------------------------------------------------------------------- 1 | // This component will simply add utility functions to your developer console. 2 | import { useSubstrate } from '../' 3 | 4 | export default function DeveloperConsole (props) { 5 | const { api, apiState, keyring, keyringState } = useSubstrate() 6 | if (apiState === 'READY') { window.api = api } 7 | if (keyringState === 'READY') { window.keyring = keyring } 8 | window.util = require('@polkadot/util') 9 | window.utilCrypto = require('@polkadot/util-crypto') 10 | 11 | return null 12 | } 13 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/substrate-lib/components/index.js: -------------------------------------------------------------------------------- 1 | import { TxButton, TxGroupButton } from './TxButton' 2 | import DeveloperConsole from './DeveloperConsole' 3 | 4 | export { TxButton, TxGroupButton, DeveloperConsole } 5 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/substrate-lib/index.js: -------------------------------------------------------------------------------- 1 | import { 2 | SubstrateContextProvider, useSubstrate 3 | } from './SubstrateContext' 4 | import utils from './utils' 5 | 6 | export { useSubstrate, SubstrateContextProvider, utils } 7 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/frontend/src/substrate-lib/utils.js: -------------------------------------------------------------------------------- 1 | const utils = { 2 | paramConversion: { 3 | num: [ 4 | 'Compact', 5 | 'BalanceOf', 6 | 'u8', 'u16', 'u32', 'u64', 'u128', 7 | 'i8', 'i16', 'i32', 'i64', 'i128' 8 | ] 9 | } 10 | } 11 | 12 | export default utils 13 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | 'node', 4 | 'pallets/*', 5 | 'runtime', 6 | ] 7 | [profile.release] 8 | panic = 'unwind' 9 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.2" 2 | 3 | services: 4 | dev: 5 | container_name: node-template 6 | image: paritytech/ci-linux:974ba3ac-20201006 7 | working_dir: /var/www/node-template 8 | ports: 9 | - "9944:9944" 10 | environment: 11 | - CARGO_HOME=/var/www/node-template/.cargo 12 | volumes: 13 | - .:/var/www/node-template 14 | - type: bind 15 | source: ./.local 16 | target: /root/.local 17 | command: bash -c "cargo build --release && ./target/release/node-template --dev --ws-external" 18 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/node/build.rs: -------------------------------------------------------------------------------- 1 | use substrate_build_script_utils::{generate_cargo_keys, rerun_if_git_head_changed}; 2 | 3 | fn main() { 4 | generate_cargo_keys(); 5 | 6 | rerun_if_git_head_changed(); 7 | } 8 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/node/src/lib.rs: -------------------------------------------------------------------------------- 1 | pub mod chain_spec; 2 | pub mod service; 3 | pub mod rpc; 4 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/node/src/main.rs: -------------------------------------------------------------------------------- 1 | //! Substrate Node Template CLI library. 2 | #![warn(missing_docs)] 3 | 4 | mod chain_spec; 5 | #[macro_use] 6 | mod service; 7 | mod cli; 8 | mod command; 9 | mod rpc; 10 | 11 | fn main() -> sc_cli::Result<()> { 12 | command::run() 13 | } 14 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/pallets/template/README.md: -------------------------------------------------------------------------------- 1 | License: Unlicense -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/pallets/template/src/benchmarking.rs: -------------------------------------------------------------------------------- 1 | //! Benchmarking setup for pallet-template 2 | 3 | use super::*; 4 | 5 | use frame_system::RawOrigin; 6 | use frame_benchmarking::{benchmarks, whitelisted_caller, impl_benchmark_test_suite}; 7 | #[allow(unused)] 8 | use crate::Pallet as Template; 9 | 10 | benchmarks! { 11 | do_something { 12 | let s in 0 .. 100; 13 | let caller: T::AccountId = whitelisted_caller(); 14 | }: _(RawOrigin::Signed(caller), s) 15 | verify { 16 | assert_eq!(Something::::get(), Some(s)); 17 | } 18 | } 19 | 20 | impl_benchmark_test_suite!( 21 | Template, 22 | crate::mock::new_test_ext(), 23 | crate::mock::Test, 24 | ); 25 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/pallets/template/src/tests.rs: -------------------------------------------------------------------------------- 1 | use crate::{Error, mock::*}; 2 | use frame_support::{assert_ok, assert_noop}; 3 | 4 | #[test] 5 | fn it_works_for_default_value() { 6 | new_test_ext().execute_with(|| { 7 | // Dispatch a signed extrinsic. 8 | assert_ok!(TemplateModule::do_something(Origin::signed(1), 42)); 9 | // Read pallet storage and assert an expected result. 10 | assert_eq!(TemplateModule::something(), Some(42)); 11 | }); 12 | } 13 | 14 | #[test] 15 | fn correct_error_for_none_value() { 16 | new_test_ext().execute_with(|| { 17 | // Ensure the expected error is thrown when no value is present. 18 | assert_noop!( 19 | TemplateModule::cause_error(Origin::signed(1)), 20 | Error::::NoneValue 21 | ); 22 | }); 23 | } 24 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/runtime/build.rs: -------------------------------------------------------------------------------- 1 | use substrate_wasm_builder::WasmBuilder; 2 | 3 | fn main() { 4 | WasmBuilder::new() 5 | .with_current_project() 6 | .export_heap_base() 7 | .import_memory() 8 | .build() 9 | } 10 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/scripts/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # This script is meant to be run on Unix/Linux based systems 3 | set -e 4 | 5 | echo "*** Start Substrate node template ***" 6 | 7 | cd $(dirname ${BASH_SOURCE[0]})/.. 8 | 9 | mkdir -p ./.local 10 | 11 | docker-compose down --remove-orphans 12 | docker-compose run --rm --service-ports dev $@ 13 | -------------------------------------------------------------------------------- /advanced/term-03/03_polkadot-js-api/kitties/node/scripts/init.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | # This script is meant to be run on Unix/Linux based systems 3 | set -e 4 | 5 | echo "*** Initializing WASM build environment" 6 | 7 | if [ -z $CI_PROJECT_NAME ] ; then 8 | rustup update nightly 9 | rustup update stable 10 | fi 11 | 12 | rustup target add wasm32-unknown-unknown --toolchain nightly 13 | -------------------------------------------------------------------------------- /primer/term-01/lesson0/Primer Course Preview.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7d87b65392ac1d154ff6b56e5fee8b73bcb6166c33640c5cfd0f01c7028c3da2 3 | size 1043904 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson1/什么是区块链.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:323486c4bcb9e7fd1a4a2f3f27c5e37e63afafe9955208f11a20f91d26fa633b 3 | size 1328458 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson2/1_1_Intro_to_Polkadot.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:df1db40965a5d996e5dfe3a187c6f4472892a1e15639de2d0bffc789fdd35d84 3 | size 2407232 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson2/1_2_Intro_to_Substrate.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:7c7d58b86bbc5707f47a3d4cee0cdb6b5ab2e4dd58fb328927f878ff108f0281 3 | size 2303447 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson2/1_3_Substrate_Node_Template.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:5bdfb4d2d247094b466280223ed0f0e29aaf2ae42247a2c7d4b555945f07b55f 3 | size 642524 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson3/rust-lang-guide-1.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:f9ffd8bb08e8376c24c0c7e59e52e1c9d35be8fc003d16810c98d56d80fbd95c 3 | size 922934 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson4/rust-lang-guide-2.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:54987bcab66e3b924f530b11d7773a216880170b90ed5c41b39670c5c05c79cb 3 | size 854732 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson5/创建第一条区块链应用.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:e97060dd6e3d25ac695f681a449e2c06e93d3f416d928e2ceaf5252fe8924741 3 | size 248734 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson6/6.1-Polkadot-JS-app.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:d80f3d3a107b65c9d939a403bafc561f61930e08010fd11f530e7547284ed3b7 3 | size 240579 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson6/6.2-Polkadot-JS-api.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:c487240f1765cb6647ff5d519f8b0750ddc797cf4d240b2785e9d6073de2cab4 3 | size 462920 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson7/PoE Module Development for Primer Course.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:a7ddde5fc7a2f5d607e243256bff0dbe13d039e935400e1b9402d011e9ff6033 3 | size 220476 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson7/Runtime Macros for Primer Course.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:53286b4fecda1970417d95bd582738d50936ec73418feb0d97116f4baa772f06 3 | size 423794 4 | -------------------------------------------------------------------------------- /primer/term-01/lesson7/Storage Design for Primer Course.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:28790023e863a44c2f393c0ad7ec2f2bbe50284e03ae830b56a5d3523fcc4a94 3 | size 416941 4 | -------------------------------------------------------------------------------- /primer/term-05/00-intro/Term2 Primer Course Preview.pdf: -------------------------------------------------------------------------------- 1 | version https://git-lfs.github.com/spec/v1 2 | oid sha256:35026f9340d9f9953b17d567ae82a13fef06f87678bf4e96c5620ec58e30f5c1 3 | size 965593 4 | -------------------------------------------------------------------------------- /primer/term-05/06-polkadot-js-app-api/js-component/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "js-component", 3 | "version": "1.0.0", 4 | "description": "Demo connecting to Substrate Node Template", 5 | "main": "index.js", 6 | "author": "Jimmy Chu", 7 | "license": "Unlicense", 8 | "private": false, 9 | "scripts": { 10 | "start": "node --use_strict index.js", 11 | "start:dev": "nodemon --use_strict --inspect index.js", 12 | "start:debug": "nodemon --use_strict --inspect --inspect-brk index.js" 13 | }, 14 | "dependencies": { 15 | "@polkadot/api": "^4.7.1", 16 | "@polkadot/keyring": "^6.3.1", 17 | "@polkadot/util": "^6.3.1", 18 | "@polkadot/util-crypto": "^6.3.1" 19 | }, 20 | "devDependencies": { 21 | "nodemon": "^2.0.6" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /primer/term-05/README.md: -------------------------------------------------------------------------------- 1 | # Substrate 课程 (简易版 - 第 5 期) 2 | 3 | 1. [区块链入门](/#) - 大锤老师 4 | 2. [Substrate 和 Polkadot 简介](/#) - 大锤老师 5 | 3. [Rust 入门](/#) - 周俊老师 6 | 4. [Rust 进阶](/#) - 凯超老师 7 | 5. [开发存证区块链](/#) - 凯超老师 8 | 6. [如何使用 polkadot-js app/api](06-polkadot-js-app-api) - Jimmy 老师 9 | --------------------------------------------------------------------------------