Skip to content
Snippets Groups Projects
To find the state of this project's repository at the time of any of these versions, check out the tags.

v0.2.1 - 2020-07-01

  • Adds PoW requirement to faucet payloads
  • Adds tips broadcaster to ensure that all chains are getting solidified
  • Fixes being able to send a double-spend via one node
  • Breaking: bumps network and database versions

v0.2.0 - 2020-06-30

  • Adds the value transfer dApp:
    • New binary transaction layout
    • UTXO model
    • Support for transactions with Ed25519 and BLS signatures
    • Parallel reality based ledger state
    • Support for colored tokens
    • Conflict resolution via FPC
    • Applied FCoB rules
  • Adds the network delay dApp which is used to gather the avg. network delay occurring in the network
  • Adds the faucet dApp giving the ability to request funds for testing via the dashboard or web API
  • Adds the DRNG dApp which is used to propagate random numbers produced by a dRand committee (this dApp is inactive)
  • Adds the base communication layer
  • Adds improved analysis server:
    • Splits it into 3 separate plugins analysis-client/analysis-dashboard/analysis-server
    • Applies heartbeat pattern for robustness on both client and server side
    • Uses TLV denoted messages for communication
    • Complete new dashboard with live visualisations of the network graph and ongoing conflicts
    • Use short node IDs throughout the analysis dashboard
    • Prometheus exporter to expose global network metrics
    • Storage for conflicts inside a MongoDB for further processing
    • Complete rewritten autopeering data retention
  • Adds additional HTTP API routes:
    • "healtz" route to query the health of the node (for LBs)
    • Query transaction attachment locations
    • Query transactions by IDs
    • Send transactions
    • Get UTXOs on addresses
    • Query info about the node
    • Issue a faucet funding request
    • Query dRNG committee
    • Query dRNG random number
    • Issue data payloads
  • Adds dashboard improvements:
    • Tips chart
    • Communication layer visualizer
    • Address and UTXOs view
    • Message payload view
    • DRNG live feed
    • Faucet page to request funds
    • Support different payload views (data, value, faucet, unknown)
  • Adds integration test framework and corresponding tests:
    • Autopeering/Network Split
    • Message propagation
    • FPC 50/50 network split voting
    • Faucet funding
    • Value transfers
    • Synchronization
  • Adds refactored communication layer code
  • Adds BLAKE2-based PoW for rate control
  • Adds rewritten FPC package
  • Adds possibility to change config options with environment variables
  • Adds sample Grafana dashboard for local node instances
  • Adds snapshot-file import
  • Adds "dirty-flag" to the Database plugin to check for corrupted databases
  • Adds BadgerDB gargbage collection on startup/shutdown and removes periodic GC
  • Adds review-dog linter and automatic integration tests execution to continuous integration pipeline
  • Adds Prometheus exporter plugin with exposure for following metrics
  • Adds Sync plugin keeping track of the node's synchronization state
  • Adds Issuer plugin which takes care of issuing messages (and blocking any issuance when the node is desynced)
  • Adds Profiling plugin which exposes the pprof endpoints and is now configurable
  • Adds Bootstrap plugin which continuously issues messages to keep the comm. layer graph growing
  • Adds proper metrics collection in the Metrics plugin
  • Adds support for the new HTTP API routes to the Go client library
  • Adds tools/docker-network to run an isolated GoShimmer network with a chosen amount of nodes. Predefined local and global grafana dashboards are spinned up as well for the network
  • Upgrades hive.go with various improvements and fixes
  • Fixes bind address prints to not be normalized
  • Fixes usage of WebSocket message rate limiter
  • Fixes disabled/enabled plugins list in info response
  • Fixes the Graceful Shutdown plugin not showing the actual background workers during shutdown. The node operator is now able to see pending background workers in the order in which they are supposed to be terminated
  • Refactors display of IDs to use Base58 throughout the entire codebase
  • Increases network and database versions
  • Removes usage of non std errors package
  • Removes Graph plugin
  • Renames SPA plugin to Dashboard
  • Makes running GoShimmer with a config file mandatory if not explicitly bypassed

v0.1.3 - 2020-03-16

  • Update SPA plugin's JS dependencies
  • Upgrade github.com/gobuffalo/packr to v2.8.0
  • Resolves a security issue in the packr dependency, which would allow an unauthenticated attacker to read any file from the application's filesystem

v0.1.2 - 2020-02-24

  • Adds --version flag to retrieve the GoShimmer version
  • Adds the version and commit hash to the remote log logging
  • Replaces the autopeering module with the one from hive.go
  • Changed the pprof listen port to 6061 to avoid conflict with Hornet
  • Fixes invalid stored peer messages
  • Fixes masternodes getting removed if they were offline
  • Fixes -c and -d to define config file/dir
  • Fixes drop messages about full queues appearing too many times
  • Fixes crash due to incopatible transaction size
  • Changed the salt lifetime to 2 hours from 30 minutes

v0.1.1 - 2020-02-07

This release contains a series of fixes:

  • Adds logging of the underlying error when a neighbor connection couldn't be established
  • Adds the RemoteLog plugin (disabled per default) which sends log messages to a centralized logging service
  • Removes the status screen plugin in favor of the SPA/dashboard
  • Fixes the neighbor send queue being too small causing spam in the log
  • Fixes a deadlock which occurred when a neighbor disconnected while at the same time a request transaction packet was getting processed which was received by the disconnected neighbor
  • Fixes memory consumption by disabling BadgerDB's compression
  • Fixes analysis server WebSocket replays freezing the backend code
  • Fixes sending on the neighbor send queue if the neighbor is disconnected
  • Fixes BufferedConnection's read and written bytes to be atomic

v0.1.0 - 2020-01-31

Note that this release is a complete breaking change, therefore node operators are instructed to upgrade.

This release mainly integrates the shared codebase between Hornet and GoShimmer called hive.go, to foster improvements in both projects simultaneously. Additionally, the autopeering code from autopeering-sim has been integrated into the codebase. For developers a Go client library is now available to communicate with a GoShimmer node in order to issue, get and search zero value transactions and retrieve neighbor information.

A detailed list about the changes in v0.1.0 can be seen under the given milestone.

  • Adds config keys to make bind addresses configurable
  • Adds a relay-checker tool to check transaction propagation
  • Adds database versioning
  • Adds concrete shutdown order for plugins
  • Adds BadgerDB garbage collection routine
  • Adds SPA dashboard with TPS and memory chart, neighbors and Tangle explorer (spa plugin)
  • Adds option to manually define autopeering seed/private keys
  • Adds Golang CI and GitHub workflows as part of the continuous integration pipeline
  • Adds back off policies when doing network operations
  • Adds an open port check which checks whether NATs are configured properly
  • Adds netutil package
  • Adds the glumb visualizer backend as a plugin called graph (has to be manually enabled, check the readme)
  • Adds rudimentary PoW as a rate control mechanism
  • Adds the autopeering code from autopeering-sim
  • Adds association between transactions and their address
  • Adds the possibility to allow a node to function/start with gossiping disabled
  • Adds buffered connections for gossip messages
  • Adds an OAS/Swagger specification file for the web API
  • Adds web API and refactors endpoints: broadcastData, findTransactionHashes, getNeighbors, getTransactionObjectsByHash, getTransactionTrytesByHash, getTransactionsToApprove, spammer
  • Adds a Go client library over the web API
  • Adds a complete rewrite of the gossiping layer
  • Fixes the autopeering visualizer to conform to the newest autopeering changes.
    The visualizer can be accessed here.
  • Fixes parallel connections by improving the peer selection mechanism
  • Fixes that LRU caches are not flushed correctly up on shutdown
  • Fixes consistent application naming (removes instances of sole "Shimmer" in favor of "GoShimmer")
  • Fixes several analysis server related issues
  • Fixes race condition in the PoW code
  • Fixes race condition in the daemon package
  • Fixes several race conditions in the analysis package
  • Fixes the database not being closed when the node shuts down
  • Fixes webauth plugin to function properly with the web API
  • Fixes solidification related issues
  • Fixes several instances of overused goroutine spawning
  • Upgrades to BadgerDB v2.0.1
  • Upgrades to latest iota.go library
  • Removes sent count from spammed transactions
  • Removes usage of errors.Identifiable and github.com/pkg/errors in favor of standard lib errors package
  • Use network, parameter, events, database, logger, daemon, workerpool and node packages from hive.go
  • Removes unused plugins (zmq, dashboard, ui)