0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Deploy a Project

Last updated at Posted at 2024-12-15

Previous << Add Project Contracts
Next >> Create Emulator Snapshot

flow project deploy

このコマンドは、flow.jsonファイルで定義された設定に基づいて、プロジェクトのスマートコントラクトを自動的にデプロイします。

このコマンドを使用する前に、プロジェクトのコントラクトとデプロイターゲットの設定方法についてをお読みください。

Example Usage

> flow project deploy --network=testnet

Deploying 2 contracts for accounts: my-testnet-account

NonFungibleToken -> 0x8910590293346ec4
KittyItems -> 0x8910590293346ec4

  All contracts deployed successfully

上記の例では、あなたのflow.jsonファイルは次のようになります。

{
  ...
  "contracts": {
    "NonFungibleToken": "./cadence/contracts/NonFungibleToken.cdc",
    "KittyItems": "./cadence/contracts/KittyItems.cdc"
  },
  "deployments": {
    "testnet": {
      "my-testnet-account": ["KittyItems", "NonFungibleToken"]
    }
  },
  ...
}

以下は、コントラクトソースファイルの概略です。

access(all) contract NonFungibleToken { 
  /* ... */
}
import NonFungibleToken from "./NonFungibleToken.cdc"

access(all) contract KittyItems { 
  /* ... */
}

Initialization Arguments

初期化(init)引数を取るスマートコントラクトをデプロイするには、それらの引数を設定に追加することで実現できます。

各デプロイは、デプロイ時に使用される引数を指定したnameargsキーを含んだオブジェクトとして指定することが出来ます。例:

...
  "deployments": {
    "testnet": {
      "my-testnet-account": [
        "NonFungibleToken", {
            "name": "Foo", 
            "args": [
                { "type": "String", "value": "Hello World" },
                { "type": "UInt32", "value": "10" }
            ]
        }]
    }
  }
...

⚠️ Warning:作業を始める前に、秘密鍵の保存に関するベストプラクティスを学ぶために、Flow CLI セキュリティガイドラインをお読みいただくことをお勧めします。

Dependency Resolution

deployコマンドは、デプロイされるすべてのコントラクトのインポート文(依存関係)を解決しようと試みます。

依存関係が見つかると、CLIは、依存関係のすべてがデプロイされるまで、どのコントラクトもデプロイされないように、コントラクトを決定論的な順序でデプロイします。循環依存関係(cyclic dependencies)の発生により、このような順序付けが存在しなくなると、コマンドはエラーを返します。

上記の例では、Fooが常に先にデプロイされます。

Address Replacement

すべての依存関係を解決した後、deployコマンドは各コントラクトを書き換えます、そうすることで依存関係はソースファイルの場所からではなくターゲットアドレスからインポートされるようになります。

書き換えられたバージョンは、それぞれのターゲットにデプロイされ、元のコントラクトファイルは変更されません。

上記の例では、KittyItemsコントラクトは次のように書き換えられます。

import NonFungibleToken from 0xf8d6e0586b0a20c7

access(all) contract KittyItems { 
  /* ... */
}

Merging Multiple Configuration Files

-fフラグを複数回使用して、複数の設定ファイルをマージすることができます。

2つ以上の設定ファイル間で設定のフィールドに重複がある場合、結果として得られる設定の重複したフィールドの値は、-fフラグで指定された設定ファイルのリストでより右側に位置する設定ファイルから取得されます。

以下に、複数の設定ファイルを使用したdeployコマンドの例を示します。

{
    "accounts": {
        "admin-account": {
            "address": "f8d6e0586b0a20c7",
            "key": "21c5dfdeb0ff03a7a73ef39788563b62c89adea67bbb21ab95e5f710bd1d40b7"
        }, 
        "test-account": {
            "address": "f8d6e0586b0a20c8",
            "key": "52d5dfdeb0ff03a7a73ef39788563b62c89adea67bbb21ab95e5f710bd1d51c9"
        }
    }
}
{
    "accounts":{
		"admin-account":{
			"address":"f1d6e0586b0a20c7",
			"key":"3335dfdeb0ff03a7a73ef39788563b62c89adea67bbb21ab95e5f710bd1d40b7"
	    }
	}
}

上記の例では、複数の設定ファイルを使用してdeployコマンドを実行しようとした時に、設定ファイルのaccountsフィールドの中のadmin-accountアカウントが重複している時、結果として得られる設定は次のようになります。

flow project deploy -f flow.json -f private.json

{
    "accounts":{
	    "admin-account":{
			"address":"f1d6e0586b0a20c7",
			"key":"3335dfdeb0ff03a7a73ef39788563b62c89adea67bbb21ab95e5f710bd1d40b7"
	    }, 
	    "test-account":{
			"address":"f8d6e0586b0a20c8",
			"key":"52d5dfdeb0ff03a7a73ef39788563b62c89adea67bbb21ab95e5f710bd1d51c9"
	    }
	}
}

Flags

Allow Updates

  • Flag: --update
  • Valid inputs: true, false
  • Default: false

既存のコントラクトを上書きしてアップグレードするかどうかを指定します。既存のコントラクトと相違のあるコントラクトのみが上書きされます。

Show Update Diff

  • Flag: --show-diff
  • Valid inputs: true, false
  • Default: false

デプロイ済みのコントラクトと新しいコントラクトの差分を表示し、更新前に承認を求めます。

Host

  • Flag: --host
  • Valid inputs: an IP address or hostname.
  • Default: 127.0.0.1:3569 (Flow Emulator)

コマンドを実行する際に使用する Access API のホスト名を指定します。このフラグは、--network フラグで定義されたホストをすべて上書きします。

Network Key

  • Flag: --network-key
  • Valid inputs: ホストのネットワーク公開鍵の 16 進数文字列

コマンドを実行する際に、セキュアなGRPCクライアントを作成するために使用するAccess APIのネットワーク公開鍵を指定します。

Network

  • Flag: --network
  • Short Flag: -n
  • Valid inputs: the name of a network defined in the configuration (flow.json)
  • Default: emulator

どのネットワークに対してコマンドを実行するのかを指定します。

Filter

  • Flag: --filter
  • Short Flag: -x
  • Valid inputs: a case-sensitive name of the result property.

結果から、唯一の値として取得したいプロパティの名前を指定します。

Output

  • Flag: --output
  • Short Flag: -o
  • Valid inputs: json, inline

コマンド結果のフォーマットを指定します。

Save

  • Flag: --save
  • Short Flag: -s
  • Valid inputs: a path in the current filesystem.

結果を保存したいファイル名を指定します。

Log

  • Flag: --log
  • Short Flag: -l
  • Valid inputs: none, error, debug
  • Default: info

ログレベルを指定します。コマンド実行中に表示する出力を制御します。

Configuration

  • Flag: --config-path
  • Short Flag: -f
  • Valid inputs: a path in the current filesystem.
  • Default: flow.json

flow.jsonコンフィギュレーションファイルへのパスを指定します。-fフラグを複数回使用して複数のコンフィグレーションファイルをマージすることもできます。

Version Check

  • Flag: --skip-version-check
  • Default: false

低速なネットワーク接続における処理を高速化するために、起動時のバージョンチェックをスキップします。

Last updated on Dec 6, 2024 by Alex Ni

翻訳元


Previous << Add Project Contracts

Flow BlockchainのCadence version1.0ドキュメント (Deploy a Project)

Next >> Create Emulator Snapshot

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?