mcpField
C
contract

contract

github.com/aibtcdev開発11150 回インストール1 日前に更新
リポジトリ

contract について

contractはStacks上でClarityスマートコントラクトをデプロイ、操作するスキルで、開発者やコントラクト運用者向けです。読み取り専用クエリに加え、任意のpost conditionsを指定したオンチェーン取引に対応します。

主な機能

  1. 01.clarファイルからのコントラクトデプロイ
  2. 02公開関数の呼び出しと取引のブロードキャスト
  3. 03ウォレット不要の読み取り専用呼び出し
  4. 04取引手数料の指定
  5. 05post conditionsの設定

活用シーン

  1. 01Clarityコントラクトのデプロイ
  2. 02デプロイ済みコントラクトへの関数呼び出し送信
  3. 03オンチェーンのコントラクト状態の照会
  4. 04取引でのトークン転送の制限

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/aibtcdev/skills --skill contract

インストール後、Claude Code で/contractを入力して読み込まれたか確認します。

同梱ファイルAGENT.mdcontract.ts

詳細

コントラクトスキル

Stacks ブロックチェーン上で、Clarity スマートコントラクトのデプロイと操作を行います。.clar ソースファイルからコントラクトをデプロイし、公開関数を呼び出し(任意でポストコンディションを指定できます)、読み取り専用関数を呼び出してオンチェーンの状態を照会します。

  • read — 読み取り専用で、ウォレットは不要です。
  • deploy と call — トランザクションをブロードキャストする書き込み操作で、ロック解除済みのウォレットが必要です。

使い方

bun run contract/contract.ts <subcommand> [options]

サブコマンド

deploy

Stacks ブロックチェーンに Clarity スマートコントラクトをデプロイします。.clar ファイルからコントラクトのソースを読み込み、smart_contract トランザクションをブロードキャストします。

bun run contract/contract.ts deploy \
  --source <path-to-file.clar> \
  --name <contract-name> \
  [--fee <fee>]

オプション:

  • --source(必須)— デプロイする .clar ソースファイルのパス
  • --name(必須)— コントラクト名(小文字、ハイフン可、最大 128 文字)
  • --fee(任意)— 手数料プリセット(low|medium|high)または micro-STX 額。省略した場合は自動で見積もられます

出力:

{
  "success": true,
  "txid": "abc123...",
  "contractId": "SP2...deployer.my-contract",
  "network": "mainnet",
  "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
call

デプロイ済みの Stacks スマートコントラクトの公開関数を呼び出します。contract_call トランザクションに署名してブロードキャストします。

bun run contract/contract.ts call \
  --contract <contractId> \
  --function <functionName> \
  --args <json-array> \
  [--post-condition-mode <deny|allow>] \
  [--post-conditions <json-array>] \
  [--fee <fee>]

オプション:

  • --contract(必須)— ADDRESS.contract-name 形式の完全なコントラクト ID
  • --function(必須)— 呼び出す公開関数名
  • --args(任意)— 関数の引数を JSON 配列で指定します(デフォルト:[])。型付きオブジェクトは {"type":"uint","value":100} 形式です。
  • --post-condition-mode(任意)— deny(デフォルト)は予期しないトークン転送をブロックし、allow はすべて許可します
  • --post-conditions(任意)— ポストコンディションを JSON 配列で指定します(形式については「注記」を参照)
  • --fee(任意)— 手数料プリセット(low|medium|high)または micro-STX 額。省略した場合は自動で見積もられます

出力:

{
  "success": true,
  "txid": "abc123...",
  "contract": "SP2...deployer.my-contract",
  "function": "set-value",
  "args": [42],
  "network": "mainnet",
  "explorerUrl": "https://explorer.hiro.so/txid/abc123...?chain=mainnet"
}
read

デプロイ済みの Stacks スマートコントラクトの読み取り専用関数を呼び出します。トランザクションはブロードキャストされず、ウォレットも不要です。

bun run contract/contract.ts read \
  --contract <contractId> \
  --function <functionName> \
  [--args <json-array>] \
  [--sender <address>]

オプション:

  • --contract(必須)— ADDRESS.contract-name 形式の完全なコントラクト ID
  • --function(必須)— 呼び出す読み取り専用関数名
  • --args(任意)— 関数の引数を JSON 配列で指定します(デフォルト:[])
  • --sender(任意)— 読み取り専用呼び出しで送信元として使用する Stacks アドレス(省略した場合はアクティブなウォレットアドレスを使用します)

出力:

{
  "contract": "SP2...deployer.my-contract",
  "function": "get-value",
  "okay": true,
  "result": "(ok u42)",
  "network": "mainnet"
}

引数

サブコマンドオプション必須説明
deploy--sourceはい.clar ソースファイルのパス
deploy--nameはいコントラクト名
deploy--feeいいえ手数料プリセットまたは micro-STX 額
call--contractはい完全なコントラクト ID(ADDRESS.name)
call--functionはい公開関数名
call--argsいいえ関数の引数を格納した JSON 配列
call--post-condition-modeいいえdeny(デフォルト)または allow
call--post-conditionsいいえポストコンディションオブジェクトを格納した JSON 配列
call--feeいいえ手数料プリセットまたは micro-STX 額
read--contractはい完全なコントラクト ID(ADDRESS.name)
read--functionはい読み取り専用関数名
read--argsいいえ関数の引数を格納した JSON 配列
read--senderいいえ読み取り専用呼び出しの送信元アドレス

注意事項

  • コントラクト名は、デプロイするアドレスごとに一意である必要があります。すでに存在するコントラクトをデプロイしようとすると失敗します。
  • デプロイは取り消せません。一度承認されると、コントラクトはオンチェーンに永久に残ります。
  • デプロイまたは呼び出しの前に、stxer.xyz でコントラクトの呼び出しを事前にシミュレーションして、Clarity のエラーを検出し、STX を消費せずに手数料を見積もってください。
  • ポストコンディションの形式:STX の場合は {"type":"stx","principal":"SP2...","conditionCode":"eq","amount":"1000000"}、代替可能トークンの場合は {"type":"ft","principal":"SP2...","asset":"SP2....my-token","assetName":"my-token","conditionCode":"eq","amount":"100"}、NFT の場合は {"type":"nft","principal":"SP2...","asset":"SP2....my-nft","assetName":"my-nft","tokenId":1} です。NFT の条件は二者択一(送信する/送信しない)のため、conditionCode は適用されません。NFT が principal から移動しないことを保証するには、"notSend":true を使用してください。
  • --post-condition-mode allow はポストコンディションのチェックを完全にスキップします。コントラクトのロジックを完全に信頼し、ソースコードを確認済みの場合にのみ使用してください。
  • ウォレット操作には、ロック解除済みのウォレットが必要です(まず bun run wallet/wallet.ts unlock --password <password> を実行してください)。

コメント