title: Settings - Pluggable Architecture - Smilo

geth can load plugins from:

  • JSON file which is passed via --plugins flag
  • Ethereum TOML configuration file which is passed via --config flag
" extra-class">
{
  "baseDir": string,
  "central": object(PluginCentralConfiguration),
  "providers": {
     <string>: object(PluginDefinition)
  }
}
" extra-class">
[Node.Plugins]
    BaseDir = string
    [Node.Plugins.Central]
        .. = .. from object(PluginCentralConfiguration)
    [[Node.Plugins.Providers]]
        [[Node.Plugins.Providers.<string>]]
        .. = .. from object(PluginDefinition)
Fields Description
baseDir A string indicating the local directory from where plugins are read. If empty, defaults to <datadir>/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
providers A map of the supported plugin interfaces being used (e.g. helloworld), mapped to their respective plugin provider definitions (see PluginDefinition)
<string> A string constant indicates the plugin interface. E.g: helloworld.

PluginCentralConfiguration

Plugin Integrity Verification uses the Smilo Plugin Central Server by default.
Modifying this section configures your own local plugin central for Plugin Integrity Verification:

" extra-class">
{
  "baseURL": string,
  "certFingerprint": string,
  "publicKeyURI": string,
  "insecureSkipTLSVerify": bool
}
" extra-class">
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

" extra-class">
{
  "name": string,
  "version": string,
  "config": file/string/array/object
}
" extra-class">
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"}