最初のチュートリアルは Counter(カウンター)。 ボタンを押すと数が1増える、いちばん小さな DApp です。小さいけれど、DApp 開発の一周ぜんぶが入っています。
何を作るの?
- チェーンの上に「数字が1個」だけ置く
- 「1ふやす」という操作(取引)を呼べる
- それを動かす CLI(コマンドのアプリ)も作る
何を学べるの?
ledgerで公開ステートを持つcircuitを契約の入口にする- 契約をコンパイルして TypeScript の API を生成する
- providers をそろえてデプロイし、
callTxで呼ぶ
たとえ話:みんなで押すカウンター
学校の入口にある「入った人数カウンター」を想像してください。 だれが押しても、数は1ずつ増えます。Counter DApp は、それをブロックチェーンの上に置いたものです。
契約の中身(本物・短い)
counter.compact
Counter は秘密データを使わないので、witness は空っぽです。
witnesses.ts
プロジェクトの形
compact compile を実行すると、managed/counter/ の下に contract(TS API)・keys(証明の鍵)・zkir(回路) が生成されます。
動かす流れ(TS・雰囲気)
CLI では、ウォレットを3役(Shielded / Unshielded / Dust)用意し、tDUST を手数料にして取引を送ります。
進む前に理解しておくこと
- Compact の書きかた(
ledgerとcircuit) - DApp の組み立てかた(providers と
callTx) - 開発環境(
compactと proof server が動く・Node v22+)
開発者として理解すべきこと
- 「契約 → コンパイル → デプロイ → 呼び出し」の一周を、最小例で体に入れる
compact compileが TS API・鍵・回路を生むことcallTx.increment()の裏で、証明づくり→サイン→送信が起きていること
公式Docsではどこ?
- Counter: smart contract(外部リンク・別タブで開きます)
- Counter: CLI(外部リンク・別タブで開きます)
- ソース:example-counter(外部リンク・別タブで開きます)
今日のまとめ
- Counter は「数字を1ふやすだけ」の最小 DApp
- でも DApp の一周(契約・コンパイル・デプロイ・呼び出し)が全部入っている
- 秘密は使わないので witness は空
今はここだけでOK
export ledger round: Counter; と export circuit increment(): [] が読めたら、最初の一歩はクリアです。
✍️ 白紙練習
答えを見る前に、いったん自分の頭と手から出してみよう。手で書くと「わかったつもり」がはがれます。
counter.compact をゼロから書いてみよう(pragma 宣言から increment まで)。
Counter DApp の一周「契約 → コンパイル → デプロイ → 呼び出し」を、それぞれ何をする工程か自分の言葉で説明してみよう。
- 契約:
ledger(公開ステート)とcircuit(入口)を Compact で書く。 - コンパイル:
compact compileが TS API・証明の鍵・回路(zkir) を生成する。 - デプロイ:providers をそろえて
deployContractでチェーンに置く。 - 呼び出し:
callTx.increment()で取引を送る(裏で 証明づくり→サイン→送信)。
ledger と circuit は、それぞれ何を表す?
ledger は公開ステート(ここでは round の数字)。circuit は契約の入口=外から呼べる操作(ここでは increment)。
Counter で witness が空っぽなのはなぜ?
Counter は秘密データを使わないから。witness は「画面側だけが持つ秘密」を回路に渡す係なので、秘密がなければ空でよい。
compact compile は何を生成する?
TS API(contract)・証明の鍵(keys)・回路(zkir) の3つ。managed/counter/ の下に出力される。
callTx.increment() を呼ぶと、裏側では何が順に起きる?
証明づくり → サイン → 送信。手数料には tDUST を使い、ウォレットは Shielded / Unshielded / Dust の3役を用意する。
📘 もっと正確に(原文準拠コース)
Academy 原文に忠実な詳しい版はこちら:
つぎに読むページ
➡️ 秘密を見せずに本人確認する。Bulletin Board チュートリアル