title: Settings - Pluggable Architecture - Quorum `geth` can load plugins from: - JSON file which is passed via `--plugins` flag - Ethereum TOML configuration file which is passed via `--config` flag ```json tab="JSON" { "baseDir": string, "central": object(PluginCentralConfiguration), "providers": { : object(PluginDefinition) } } ``` ```toml tab="TOML" [Node.Plugins] BaseDir = string [Node.Plugins.Central] .. = .. from object(PluginCentralConfiguration) [[Node.Plugins.Providers]] [[Node.Plugins.Providers.]] .. = .. from object(PluginDefinition) ``` | Fields | Description | |:------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `baseDir` | A string indicating the local directory from where plugins are read. If empty, defaults to `/plugins`.
To read from arbitrary enviroment variable (e.g: `MY_BASE_DIR`), provide value `env://MY_BASE_DIR` | | `central` | A configuration of the remote plugin central. See [PluginCentralConfiguration](#plugincentralconfiguration) | | `providers` | A map of the supported plugin interfaces being used (e.g. `helloworld`), mapped to their respective plugin provider definitions (see [PluginDefinition](#plugindefinition)) | | `` | A string constant indicates the plugin interface. E.g: `helloworld`. | ## `PluginCentralConfiguration` [Plugin Integrity Verification](../Overview/#plugin-integrity-verification) uses the Quorum Plugin Central Server by default. Modifying this section configures your own local plugin central for Plugin Integrity Verification: ```json tab="JSON" { "baseURL": string, "certFingerprint": string, "publicKeyURI": string, "insecureSkipTLSVerify": bool } ``` ```toml tab="TOML" BaseURL = string CertFingerPrint = string PublicKeyURI = string InsecureSkipTLSVerify = bool ``` | Fields | Description | |:------------------------|:--------------------------------------------------------------------------------------------------------------------------| | `baseURL` | A string indicating the remote plugin central URL (ex.`https://plugins.mycorp.com`) | | `certFingerprint` | A string containing hex representation of the http server public key finger print
to be used for certificate pinning | | `publicKeyURI` | A string defining the location of the PGP public key
to be used to perform the signature verification | | `insecureSkipTLSVerify` | If true, **do not** verify the server's certificate chain and host name | ## `PluginDefinition` Defines the plugin and its configuration ```json tab="JSON" { "name": string, "version": string, "config": file/string/array/object } ``` ```toml tab="TOML" Name = string Version = string Config = file/string/array/object ``` | Fields | Description | |:----------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `name` | A string specifying the name of the plugin | | `version` | A string specifying the version of the plugin | | `config` | Value can be:
  • uri format: supports the following schemes
    • `file`: location of plugin config file to be read. E.g.: `file:///opt/plugin.cfg`
    • `env`: value from an environment variable. E.g.: `env://MY_CONFIG_JSON`
      To indicate value is a file location: append `?type=file`. E.g.: `env://MY_CONFIG_FILE?type=file`
  • string: an arbitrary JSON string
  • array: a valid JSON array E.g.: `["1", "2", "3"]`
  • object: a valid JSON object. E.g.: `{"foo" : "bar"}`
|