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?

Flow CLI は、コンフィグレーション(通常はflow.jsonファイル)と呼ばれる設定情報を使用して動作します。このコンフィグレーションを必要とするコマンドを使用する前に、initコマンドを使用してプロジェクトを初期化する必要があります。コンフィグレーションについてはこちらをご覧ください。

Flowのコンフィグ(flow.json)ファイルには、以下のプロパティが含まれます。

  • networksリストには、Flowエミュレータ、テストネット、メインネットの接続設定情報が事前に設定されています。
  • accountsリストには、Flowエミュレータのサービスアカウントが事前に入力されています。
  • deploymentsの空オブジェクトには、すべてのデプロイ対象のスマートコントラクトを定義できます。
  • contracts空オブジェクトには、あなたがデプロイしたいコントラクトの定義を入力します。

Example Project Configuration

{
  "networks": {
    "emulator": "127.0.0.1:3569",
    "mainnet": "access.mainnet.nodes.onflow.org:9000",
    "testnet": "access.devnet.nodes.onflow.org:9000"
  },
  "accounts": {
    "emulator-account": {
      "address": "f8d6e0586b0a20c7",
      "key": "ae1b44c0f5e8f6992ef2348898a35e50a8b0b9684000da8b1dade1b3bcd6ebee",
    }
  },
  "deployments": {},
  "contracts": {}
}

Configuration

以下は、Flowプロジェクトの完全な設定ファイルの例です。各プロパティを一つずつ見ていきます。

{
  "contracts": {
    "NonFungibleToken": "./cadence/contracts/NonFungibleToken.cdc",
    "Kibble": "./cadence/contracts/Kibble.cdc",
    "KittyItems": "./cadence/contracts/KittyItems.cdc",
    "KittyItemsMarket": "./cadence/contracts/KittyItemsMarket.cdc",
    "FungibleToken": {
      "source": "./cadence/contracts/FungibleToken.cdc",
      "aliases": {
        "testnet": "9a0766d93b6608b7",
        "emulator": "ee82856bf20e2aa6"
      }
    }
  },

  "deployments": {
    "testnet": {
      "admin-account": ["NonFungibleToken"],
      "user-account": ["Kibble", "KittyItems", "KittyItemsMarket"]
    }, 
    "emulator": {
      "emulator-account": [
        "NonFungibleToken",
        "Kibble",
        "KittyItems",
        "KittyItemsMarket"
      ]
    }
  },

  "accounts": {
    "admin-account": {
      "address": "3ae53cb6e3f42a79",
      "key": "12332967fd2bd75234ae9037dd4694c1f00baad63a10c35172bf65fbb8ad1111"
    },
    "user-account": {
      "address": "e2a8b7f23e8b548f",
      "key": "22232967fd2bd75234ae9037dd4694c1f00baad63a10c35172bf65fbb8ad1111"
    },
    "emulator-account": {
      "address": "f8d6e0586b0a20c7",
      "key": "2eae2f31cb5b756151fa11d82949c634b8f28796a711d7eb1e52cc301ed11111",
    }
  },

  "networks": {
    "emulator": "127.0.0.1:3569",
    "mainnet": "access.mainnet.nodes.onflow.org:9000",
    "testnet": "access.devnet.nodes.onflow.org:9000",
    "testnetSecure": {
      "Host": "access-001.devnet30.nodes.onflow.org:9001",
      "NetworkKey": "ba69f7d2e82b9edf25b103c195cd371cf0cc047ef8884a9bbe331e62982d46daeebf836f7445a2ac16741013b192959d8ad26998aff12f2adc67a99e1eb2988d"
    }
  }
}

Contracts

contractsはキーと値のペアで指定され、キーはコントラクトの名前、値はCadenceソースコードのあるファイルの場所です。

高度なフォーマットのおかげで、各ネットワークにコントラクトのエイリアスを指定することができます。

Simple Format

...

"contracts": {
  "NonFungibleToken": "./cadence/contracts/NonFungibleToken.cdc"
}

...

Advanced Format

高度なフォーマットを使用して、aliasesを定義することができます。エイリアスは、すでにネットワークに対してデプロイされているコントラクトのアドレスを定義しています。以下の例では、コントラクトFungibleTokenは、testnetにデプロイする時は9a0766d93b6608b7アドレスからインポートされ、Flowエミュレーターにデプロイする時はee82856bf20e2aa6アドレスからインポートされます。この定義した各ネットワークに対してエイリアスを指定することができます。テストネットにデプロイする時は、一般的なコントラクトすべてに対してエイリアスを指定するのが常に良いでしょう。

⚠️ コントラクトにエイリアスを使用している場合、そのネットワークのdeploymentセクションでそれを指定すべきではありません。

...
"FungibleToken": {
  "source": "./cadence/contracts/FungibleToken.cdc",
  "aliases": {
    "testnet": "9a0766d93b6608b7",
    "emulator": "ee82856bf20e2aa6"
  }
}
...

高度なスマートコントラクトを指定する際に使用されるフォーマットは次のとおりです。

"CONTRACT NAME": {
    "source": "CONTRACT SOURCE FILE LOCATION",
    "aliases": {
        "NETWORK NAME": "ADDRESS ON SPECIFIED NETWORK WITH DEPLOYED CONTRACT"
        ...
    }
}

Accounts

アカウントセクションでは、キーやアドレスなどのアカウントプロパティを定義します。全てのアカウントは名前を含める必要があり、その名前は設定ファイル全体で参照されます。

Simple Format
シンプルなフォーマットを使用する場合、アカウントアドレスと、16進数エンコードされたprivate keyを指定するだけです。

...

"accounts": {
  "admin-account": {
    "address": "3ae53cb6e3f42a79",
    "key": "12332967fd2bd75234ae9037dd4694c1f00baad63a10c35172bf65fbb8ad1111"
  }
}

...

Advanced format
高度なフォーマットにより、アカウントのより多くのプロパティを定義することができます。署名アルゴリズムやハッシュアルゴリズム、キーのカスタムフォーマットを定義することができます。

アカウントがemulatorネットワーク上で使用される場合、serviceというアドレスを使用することができます。これは、エミュレータネットワーク上でデフォルトのサービスアドレスに対し実行時に定義される特別な値です。

Example for advanced hex format:

...

"accounts": {
  "admin-account": {
    "address": "service",
    "key":{
        "type": "hex",
        "index": 0,
        "signatureAlgorithm": "ECDSA_P256",
        "hashAlgorithm": "SHA3_256",
        "privateKey": "12332967fd2bd75234ae9037dd4694c1f00baad63a10c35172bf65fbb8ad1111"
      }
  }
}

...

また、BIP44を使用して、mnemonicからキーを取り出すこともできます。詳細はFLIPを参照してください。

Example for BIP44 format:

...

"accounts": {
  "admin-account": {
    "address": "service",
    "key":{
        "type": "bip44",
        "index": 0,
        "signatureAlgorithm": "ECDSA_P256",
        "hashAlgorithm": "SHA3_256",
        "mnemonic": "skull design wagon top faith actor valley crystal subject volcano access join",
        "derivationPath": "m/44'/539'/0'/0/0"
      }
  }
}

...

注:derivationPathのデフォルト値は、省略された場合はm/44'/539'/0'/0/0です。

また、トランザクションに署名するためにキー管理システム(KMS)を使用することもできます。現時点では、Google KMSのみをサポートしています。

Example for Google KMS format:

...
"accounts": {
  "admin-account": {
    "address": "service",
    "key": {
        "type": "google-kms",
        "index": 0,
        "signatureAlgorithm": "ECDSA_P256",
        "hashAlgorithm": "SHA3_256",
        "resourceID": "projects/flow/locations/us/keyRings/foo/bar/cryptoKeyVersions/1"
    }
  }
}
...

アカウントのキーを別のファイルに保存し、そのファイル場所をキー設定の一部として指定することができます。

Example for separate key file:

...
"accounts": {
  "admin-account": {
    "address": "service",
    "key": {
        "type": "file",
        "location": "./test.key"
    }
  }
}
...

test.key ファイル内には、16進数のキーの内容のみを記載してください(例:12332967fd2bd75234ae9037dd4694c1f00baad63a10c35172bf65fbb8ad1111

Deployments

deploymentsセクションでは、project deployコマンドが指定したスマートコントラクトをデプロイする場所を定義します。この構成プロパティは、アカウント、スマートコントラクト、ネットワークを結びつける接着剤のような役割を果たします。これらはすべて名前で参照されます。

deploymentsセクションでは、ネットワーク、アカウント名、およびそのアカウントにデプロイするコントラクトのリストを指定します。

deploymentを指定するフォーマットは次のとおりです:

...
"deployments": {
  "NETWORK": {
    "ACCOUNT NAME": ["CONTRACT NAME"]
  }
}

...
...

"deployments": {
  "emulator": {
    "emulator-account": [
      "NonFungibleToken",
      "Kibble",
      "KittyItems",
      "KittyItemsMarket"
    ]
  },
  "testnet": {
    "admin-account": ["NonFungibleToken"],
    "user-account": [
      "Kibble",
      "KittyItems",
      "KittyItemsMarket"
    ]
  }
}

...

Networks

このセクションは、ネットワークとそのネットワークの接続パラメータを定義します。

networksのフォーマットは次のとおりです。

...
"networks": {
  "NETWORK NAME": "ADDRESS"
}
...
...
"networks": {
  "NETWORK NAME": {
    "host": "ADDRESS",
    "key": "ACCESS NODE NETWORK KEY"    
  }
}
...
...

"networks": {
    "emulator": "127.0.0.1:3569",
    "mainnet": "access.mainnet.nodes.onflow.org:9000",
    "testnet": "access.devnet.nodes.onflow.org:9000",
    "testnetSecure": {
        "host": "access-001.devnet30.nodes.onflow.org:9001",
        "key": "ba69f7d2e82b9edf25b103c195cd371cf0cc047ef8884a9bbe331e62982d46daeebf836f7445a2ac16741013b192959d8ad26998aff12f2adc67a99e1eb2988d"
    },
}

...

Emulators

CLIのデフォルトのエミュレータ は、"default"という名前、値はserviceAccount: "emulator-account"port: "3569"で自動的に構成されています。デフォルトのエミュレータの設定は flow.json には表示されません。

エミュレータの値をカスタマイズするには、以下の例のようにエミュレータセクションを追加します。

...

"emulators": {
    "custom-emulator": {
        "port": 3600,
        "serviceAccount": "emulator-account"
    }
}

...

Last updated on Nov 20, 2024 by Chase Fleming

翻訳元


Previous << Initialize Configuration

Flow BlockchainのCadence version1.0ドキュメント (Configuration)

Next >> Manage Configuration

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?