Internet Computer – vytvoření nového projektu

Internet Computer – vytvoření nového projektu

Tak jako předchozí příspěvek, tak i tento čerpá z tohoto quick startu.

Aplikace pro Internet Computer (IC) začínají jako projekt. Ten je možné vytvořit pomocí dfx (viz předchozí příspěvek). Při vytváření projektu pomocí dfx je vytvořena výchozí struktura projektu. V tomto příspěvku budu postupovat podle výše uvedeného tutoriálu.

V terminálu zadejte příkaz dfx new hello (místo hello můžete použí jiný název pro projekt)

dfx new hello

The DFINITY Canister SDK sends anonymous usage data to DFINITY Stiftung by
default. If you wish to disable this behavior, then please set the environment
variable DFX_TELEMETRY_DISABLED=1. Learn more at https://sdk.dfinity.org.

Fetching manifest https://sdk.dfinity.org/manifest.json
  Version v0.6.26 installed successfully.
Creating new project "hello"...
CREATE       hello/README.md (1.14KB)...
CREATE       hello/dfx.json (464B)...
CREATE       hello/.gitignore (165B)...
CREATE       hello/src/hello/main.mo (107B)...
CREATE       hello/src/hello_assets/assets/sample-asset.txt (24B)...
CREATE       hello/webpack.config.js (2.15KB)...
CREATE       hello/src/hello_assets/public/index.js (137B)...
CREATE       hello/package.json (284B)...
⠲ Installing node dependencies...
⠄ Installing node dependencies...
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
⠠ Installing node dependencies...
⠒ Installing node dependencies...
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.1 (node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@^1.2.7 (node_modules/watchpack-chokidar2/node_modules/chokidar/node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm WARN hello_assets@0.1.0 No repository field.
npm WARN hello_assets@0.1.0 No license field.

⠂ Installing node dependencies...
...

Ve složce se vytvoří adresář s tímto obsahem

ls hello/
.dfx  dfx.json  dist  .git  .gitignore  node_modules  package.json  package-lock.json  README.md  src  webpack.config.js

Před spuštěním projektu se musíte připojit k IC síti. V tomto případě poběží aplikace lokálně. V tutoriálu je doporučeno otevřít si druhé terminálové okno právě pro připojení k síti. Otevřete si jej, přepněte se do projektu a zadejte příkaz dfx start.

dfx start

May 14 17:57:13.741 INFO ic-starter. Configuration: ValidatedConfig { replica_path: Some("/home/vitfo/.cache/dfinity/versions/0.6.26/replica"), replica_version: "0.1.0", log_level: Warning, subnet_id: fscpm-uiaaa-aaaaa-aaaap-yai, cargo_bin: "cargo", cargo_opts: "", state_dir: "/home/vitfo/bin/hello/.dfx/state/replicated_state", http_listen_addr: V4(127.0.0.1:0), http_port_file: Some("/home/vitfo/bin/hello/.dfx/replica-configuration/replica-1.port"), metrics_addr: None, hypervisor_create_funds_whitelist: "*", artifact_pool_dir: "/home/vitfo/bin/hello/.dfx/state/replicated_state/node-100/ic_consensus_pool", crypto_root: "/home/vitfo/bin/hello/.dfx/state/replicated_state/node-100/crypto", state_manager_root: "/home/vitfo/bin/hello/.dfx/state/replicated_state/node-100/state", registry_file: "/home/vitfo/bin/hello/.dfx/state/replicated_state/registry.proto", bootstrap_registry: None, state_dir_holder: None }, Application: starter
May 14 17:57:13.741 INFO Initialize replica configuration "/home/vitfo/bin/hello/.dfx/state/replicated_state/ic.json5", Application: starter
May 14 17:57:14.721 ERRO s:fscpm-uiaaa-aaaaa-aaaap-yai/n:vyrjm-ldyc7-znrxo-7iljr-zkymo-vv75s-7lwpg-tcezd-rdgd3-wyz3t-sqe/ic_messaging/xnet_endpoint No XNet configuration for node vyrjm-ldyc7-znrxo-7iljr-zkymo-vv75s-7lwpg-tcezd-rdgd3-wyz3t-sqe. This is an error in production, but may be ignored in single-subnet test deployments.
May 14 17:57:15.724 WARN s:fscpm-uiaaa-aaaaa-aaaap-yai/n:vyrjm-ldyc7-znrxo-7iljr-zkymo-vv75s-7lwpg-tcezd-rdgd3-wyz3t-sqe/ic_http_handler/ic_http_handler NNS subnet not found in network topology. Skipping fetching the delegation.
Starting webserver on port 40573 for replica at "http://localhost:40573"
binding to: V4(127.0.0.1:8000)
replica(s): http://localhost:40573/

Takto vypadá adresa http://localhost:40573 v prohlížeči (můžete mít jiný port).

Po té, co jste se připojili k síti, můžete registrovat vytvářet a nasazovat aplikace lokálně. Ověřte si, že node moduly jsou k dispozici v adresáři projektu. Pokud bude potřeba spusťte npm install.

Nyní se v první terminálovém okně (v tom, kde jste generovali projekt) přepněte se do složky hello (cd hello). Zaregistrujte a sestavte (build) aplikaci příkazem dfx deploy.

dfx deploy

Creating the "default" identity.
  - generating new key at /home/vitfo/.config/dfx/identity/default/identity.pem
Created the "default" identity.
Deploying all canisters.
Creating canisters...
Creating canister "hello"...
Creating the canister using the wallet canister...
Creating a wallet canister on the local network.
The wallet canister on the "local" network for user "default" is "rwlgt-iiaaa-aaaaa-aaaaa-cai"
"hello" canister created with canister id: "rrkah-fqaaa-aaaaa-aaaaq-cai"
Creating canister "hello_assets"...
Creating the canister using the wallet canister...
"hello_assets" canister created with canister id: "ryjl3-tyaaa-aaaaa-aaaba-cai"
Building canisters...
Building frontend...
Installing canisters...
Installing code for canister hello, with canister_id rrkah-fqaaa-aaaaa-aaaaq-cai
Installing code for canister hello_assets, with canister_id ryjl3-tyaaa-aaaaa-aaaba-cai
Authorizing our identity (default) to the asset canister...
Uploading assets to asset canister...
Deployed canisters.

Všimněte si řádku Installing code for canister hello, with canister_id rrkah-fqaaa-aaaaa-aaaaq-cai, kde je uvedeno id kanystru (plechovka, kanystr, sud, barel – IC aplikace). Obsah adresáře bude vypadat následovně

.dfx  dfx.json  dist  .git  .gitignore  node_modules  package.json  package-lock.json  README.md  src  webpack.config.js

Všimněte si, že poprvé kdy nasadíte aplikaci, dfx vytvoří výchozí identitu a lokální peněženku pro cykly (cycle wallet) kontrolovanou výchozí identitou. Cycle wallet je speciální typ kanystru (canister – IC aplikace), která umožňuje převádět cykly ostatní kanystrům.

Aplikaci (canister) provoláte příkazem dfx canister call hello greet World

("Hello, World!")

dfx canister call – tento příkaz požaduje zadání názvu kanystru a metody/funkce, která se bude volat
hello – název kanystru
greet – název funkce
World – argument předávaný funkci

Alikace má ale i svůj front-ent. Do prohlížeče zadejte adresu http://127.0.0.1:8000/?canisterId=rrkah-fqaaa-aaaaa-aaaaq-cai, kde rrkah-fqaaa-aaaaa-aaaaq-cai je id kanystru. Pokud id nevíte, pomůže vám příkaz dfx canister id hello_assets.

Pokud byste provedli deploy několikrát, Internet Computer Replica Dashboard může vypadat třeba následovně.

Lokální IC síť zastavíte příkazem dfx stop.

Napsat komentář