最初のチュートリアルは 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(): [] が読めたら、最初の一歩はクリアです。
📘 もっと正確に(原文準拠コース)
Academy 原文に忠実な詳しい版はこちら:
つぎに読むページ
➡️ 秘密を見せずに本人確認する。Bulletin Board チュートリアル