Skip to main content

New Release v0.7.6

ยท 4 min read
Luca Moser
Senior Software Engineer @ IOTA Foundation
note

This release does not include changes to the consensus mechanism and still uses FPC+FCoB.

caution

This is a breaking maintenance release. We urge community node operators to re-apply their config changes on top of config.default.json as many config keys have changed.

Most importantly, the node's identity seed is now defined via node.seed (previously autopeering.seed). The node will now store the private key derived from the seed per default under a separate peerdb database which must not be shared. If the node is started with a node.seed different to what an existing private key in a peerdb contains, the node panics; if you want to automatically override the already stored private key, use node.overwriteStoredSeed=true.

We have also created a more streamlined deployment for our infrastructure which means that IF provided endpoints have changed:

ServiceOldNew
Analysis Serverressims.iota.cafe:21888analysisentry-01.devnet.shimmer.iota.cafe:21888
IOTA 2.0 DevNet Analyzerhttp://ressims.iota.cafe:28080http://analysisentry-01.devnet.shimmer.iota.cafe:28080
Autopeering Entry Node "2PV5487..."[identity]@ressims.iota.cafe:15626[identity]@analysisentry-01.devnet.shimmer.iota.cafe:15626
LogStash Remote Logressims.iota.cafe:5213metrics-01.devnet.shimmer.iota.cafe:5213
Daily DatabaseN/Ahttps://dbfiles-goshimmer.s3.eu-central-1.amazonaws.com/dbs/nectar/automated/latest-db.tgz

Other changes:

  • Refactors codebase, mainly:
    • Usage of time.Duration instead of numeric types for time parameters/config options variables etc.
    • Normalization of all plugin names to camel case and without spaces
    • Extracts some code from the MessageLayer plugin into a new Consensus plugin
    • Use of dependency injection to populate plugin dependencies via https://github.com/uber-go/dig
  • Adds CI workflows to use GitHub environments to deploy develop branch changes and releases
  • Adds a check to see whether during the GoShimmer docker image build, the snapshot file should be downloaded
  • Adds a new plugin Peer which stores the node's identity private key in a separate database
  • Adds a broadcast plugin by community member @arne-fuchs simply providing a raw TCP stream of txs
  • Adds a lock to prevent multiple active instances of the CLI wallet
  • Adds improvements to the spammer precision
  • Adds timestamp filter
  • Fixes a bug where the TxInfo object passed to the mana booking could have a wrong totalAmount
  • Refactors the ./tools/docker-network to leverage docker profiles
  • Updates frontend dependencies
  • Updates config.default.json to use our new infrastructure

Plugin names have been normalized, so please make sure to adapt your custom config too:

  • Analysis-Dashboard -> AnalysisDashboard
  • Analysis-Server -> AnalysisServer
  • Analysis-Client -> AnalysisClient
  • Autopeering -> AutoPeering (no effect)
  • Graceful Shutdown -> GracefulShutdown
  • Manualpeering -> ManualPeering (no effect)
  • PoW -> POW (no effect)
  • WebAPI autopeering Endpoint -> WebAPIAutopeeringEndpoint
  • WebAPI data Endpoint -> WebAPIDataEndpoint
  • WebAPI DRNG Endpoint -> WebAPIDRNGEndpoint
  • WebAPI faucet Endpoint -> WebAPIFaucetEndpoint
  • WebAPI healthz Endpoint -> WebAPIHealthzEndpoint
  • WebAPI info Endpoint -> WebAPIInfoEndpoint
  • WebAPI ledgerstate Endpoint -> WebAPILedgerstateEndpoint
  • WebAPI Mana Endpoint -> WebAPIManaEndpoint
  • WebAPI message Endpoint
  • WebAPIMessageEndpoint
  • snapshot -> Snapshot (no effect)
  • WebAPI tools Endpoint (deleted) -> WebAPIToolsDRNGEndpoint & WebAPIToolsMessageEndpoint
  • WebAPI WeightProvider Endpoint -> WebAPIWeightProviderEndpoint

Config key changes config.default.json:

@@ -1,7 +1,7 @@ {   "analysis": {     "client": {-      "serverAddress": "ressims.iota.cafe:21888"+      "serverAddress": "analysisentry-01.devnet.shimmer.iota.cafe:21888"     },     "server": {       "bindAddress": "0.0.0.0:16178"@@ -11,17 +11,17 @@       "dev": false     }   },-  "autopeering": {+  "autoPeering": {     "entryNodes": [-      "2PV5487xMw5rasGBXXWeqSi4hLz7r19YBt8Y1TGAsQbj@ressims.iota.cafe:15626",+      "2PV5487xMw5rasGBXXWeqSi4hLz7r19YBt8Y1TGAsQbj@analysisentry-01.devnet.shimmer.iota.cafe:15626",       "5EDH4uY78EA6wrBkHHAVBWBMDt7EcksRq6pjzipoW15B@entry-devnet.tanglebay.com:14646"     ],-    "port": 14626+    "bindAddress": "0.0.0.0:14626"   },   "dashboard": {     "bindAddress": "127.0.0.1:8081",     "dev": false,-    "basic_auth": {+    "basicAuth": {       "enabled": false,       "username": "goshimmer",       "password": "goshimmer"@@ -44,7 +44,7 @@         "64wCsTZpmKjRVHtBKXiFojw7uw3GszumfvC4kHdWsHga"       ]     },-    "xteam": {+    "xTeam": {       "instanceId": 1339,       "threshold": 4,       "distributedPubKey": "",@@ -69,10 +69,7 @@     "bindAddress": "0.0.0.0:10895"   },   "gossip": {-    "port": 14666,-    "tipsBroadcaster": {-      "interval": "10s"-    }+    "bindAddress": "0.0.0.0:14666"   },   "logger": {     "level": "info",@@ -85,7 +82,7 @@     ],     "disableEvents": true,     "remotelog": {-      "serverAddress": "ressims.iota.cafe:5213"+      "serverAddress": "metrics-01.devnet.shimmer.iota.cafe:5213"     }   },   "metrics": {@@ -103,6 +100,7 @@     "externalAddress": "auto"   },   "node": {+    "seed": "",+    "peerDBDirectory": "peerdb",     "disablePlugins": [],     "enablePlugins": []   },@@ -110,7 +108,6 @@     "difficulty": 22,     "numThreads": 1,     "timeout": "1m"-   },   "profiling": {     "bindAddress": "127.0.0.1:6061"@@ -120,13 +117,16 @@   },   "webapi": {     "bindAddress": "127.0.0.1:8080",-    "basic_auth": {+    "basicAuth": {       "enabled": false,       "username": "goshimmer",       "password": "goshimmer"     }   },+  "broadcast": {+    "bindAddress": "127.0.0.1:5050"+  },   "networkdelay": {     "originPublicKey": "9DB3j9cWYSuEEtkvanrzqkzCQMdH1FGv3TawJdVbDxkd"   }