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)