Skip to content

Latest commit

 

History

History
302 lines (255 loc) · 12.7 KB

RELEASE_NOTES.md

File metadata and controls

302 lines (255 loc) · 12.7 KB

Release Notes

Changes in Splinter 0.3.4

Highlights

  • Implement a batch status endpoint for scabbard
  • Set up the Cypress integration test framework for the Gameroom UI

Gameroom example

  • Copy Splinter .proto files into installed client builds
  • Redirect the user to a “Not Found” page if the page does not exist
  • Set up integration tests using Cypress
  • Add XO smart contract to installed gameroomd builds

libsplinter

  • Reduce latency of events by replacing run_interval in EventDealerWebSocket with streams

scabbard

  • Change the scabbard database name to be the sha256 hash of service_id::circuit_id to ensure that it will be a valid file name
  • Add signature and structure verification to the scabbard service when it receives batches submitted via the REST API
  • Add /batch_statuses endpoint to scabbard and update /batches endpoint to return a /batch_statuses link for the submitted batch IDs

splinterd

  • Add config builder with toml loading (experimental feature)

Packaging

  • Add Dockerfile to package gameroom UI
  • Update packaging for gameroomd and splinterd so modified systemd files are not overwritten
  • Modify gameroomd and splinterd postinst scripts to add data directories
  • Add plumbing to properly version deb packages

Changes in Splinter 0.3.3

Highlights

  • Add functionality to create and play XO games

libsplinter

  • Add EventHistory trait to EventDealer to allow for new event subscribers to catch up on previous events. This trait describes how events are stored.
  • Add LocalEventHistory, a basic implementation of EventHistory that stores events locally in a queue.
  • Add MessageWrapper to be consumed by EventDealerWebsockets, to allow for shutdown messages to be sent by the EventDealer
  • Enforce that a Splinter service may only be added to Splinter state if the connecting node is in its list of allowed nodes
  • Add Context object for WebSocket callbacks to assist in restarting WebSocket connections
  • Add specified supported service types to the service orchestrator to determine which service types are locally supported versus externally supported
  • Only allow initialization of the orchestrator’s supported service
  • On restart, reuse the services of circuits which are stored locally
  • Add circuit ID when creating a service factory, in case it is needed by the service
  • Replace UUID with service_id::circuit_id, which is guaranteed to be unique on a Splinter node, to name the Scabbard database
  • Fix clippy error in events reactor
  • Fix tests to match updated cargo args format
  • Change certain circuit fields from strings to enums
  • Remove Splinter client from CLI to decrease build time

Gameroom Example

  • Add ability in the UI to fetch and list XO games
  • Correct arguments used to fetch the members of an existing gameroom, allowing the members to be included in the /gamerooms endpoint response
  • Add GET /keys/{public_key} endpoint to gameroomd, to fetch key information associated with a public key
  • Add UI functionality to create a new XO game:
  • Add ability to calculate addresses
  • Add methods to build and sign XO transactions and batches
  • Add methods to submit XO transactions and batches
  • Add form for user to create new game
  • Add new game notification to UI and gameroomd
  • Add player information displayed for a game in UI
  • Implement XO game board in UI
  • Implement XO take functionality and state styling in UI
  • Add component to show game information in the Gameroom details page in the UI
  • Use md5 hash of game name when creating a game, rather than URL-encoded name that handles special characters
  • Add player information when updating an XO game from exported data (from state delta export)
  • Add auto-generated protos for the UI
  • Remove the explicit caching in the Gameroom Detail view in the UI, because Vue does this automatically
  • Make various UI styling fixes
  • Remove unused imports to avoid cargo compilation warnings

Changes in Splinter 0.3.2

Highlights

  • Completed the code to propose, accept, and create a gameroom in the Gameroom example application

libsplinter

  • Persist AdminService state that includes the pending circuits
  • Replace the WebSocketClient with a new events module, which improves multi-threaded capabilities of the clients (libsplinter::events; requires the use of "events" feature flag)
  • Improve log messages by logging the length of the bytes instead of the bytes themselves
  • Fix issue with sending and receiving large messages (greater than 64k)
  • Fix issues with threads exiting without reporting the error
  • Removed inaccurate warn log message that said signature verification was not turned off

splinterd

  • Add Key Registry REST API resources
  • Increase message queue sizes for the admin service's ServiceProcessor.

splinter-cli

  • Remove outdated CLI commands

Gameroom Example

  • Add XoStateDeltaProcessor to Gameroom application authorization handler
  • Add route to gameroom REST API to submit batches to scabbard service
  • Set six-second timeout for toast notifications in the UI
  • Add notification in the UI for newly active gamerooms
  • Enhance invitation UI and add tabs for viewing sent, received, or all invitations
  • Fix bug that caused read notifications to not appear as read in the UI
  • Fix bug where the Gameroom WebSocket was sending notifications to the UI every 3 seconds instead of when a new notification was added

Changes in Splinter 0.3.1

Highlights

  • Completion of circuit proposal validation, voting, and dynamic circuit creation
  • Addition of key generation and management, as well as role-based permissions
  • Continued progress towards proposing, accepting, and creating a gameroom in the Gameroom example application

libsplinter

  • Add AdminService, with support for:
    • Accepting and verifying votes on circuit proposals
    • Committing approved circuit proposals to SplinterState
  • Add notification to be sent to application authorization handlers when a circuit is ready
  • Update scabbard to properly set up Sabre state by adding admin keys
  • Add support for exposing service endpoints using the orchestrator and service factories
  • Add WebSocketClient for consuming Splinter service events
  • Add KeyRegistry trait for managing key information with a StorageKeyRegistry implementation, backed by the storage module
  • Add KeyPermissionsManager trait for accessing simple, role-based permissions using public keys and an insecure AllowAllKeyPermissionManager implementation
  • Add SHA512 hash implementation of signing traits, for test cases
  • Add Sawtooth-compatible signing trait implementations behind the "sawtooth-signing-compat" feature flag.

splinterd

  • Add package metadata and license field to Cargo.toml file
  • Add example configuration files, systemd files, and postinst script to Debian package
  • Reorder internal service startup to ensure that the admin service and orchestrator can appropriately connect and start up
  • Use SawtoothSecp256k1SignatureVerifier for admin service

splinter-cli

  • Add "splinter-cli admin keygen" command to generate secp256k1 public/private key pairs
  • Add "splinter-cli admin keyregistry" command to generate a key registry and key pairs based on a YAML specification

Private XO and Private Counter Examples

  • Add license field to all Cargo.toml files
  • Rename private-xo package to private-xo-service-.deb
  • Rename private-counter packages to private-counter-cli-.deb and private-counter-service-.deb

Gameroom Example

  • Add package metadata and license field to gameroomd Cargo.toml file
  • Add example configs, systemd files, and postinst script to gameroomd Debian package; rename package to gameroom-.deb
  • Implement notification retrieval using WebSocket subscription and notifications endpoints
  • Show pending and accepted gamerooms in the Gameroom UI
  • Add full support for signing CircuitManagementPayloads with the user's private key and submitting it to splinterd
  • Update gameroomd to specify itself as the scabbard admin and submit the XO smart contract when the circuit is ready
  • Make various UI enhancements

Changes in Splinter 0.3.0

Highlights

  • Completion of the two-phase-commit consensus algorithm with deterministic coordination
  • Continued progress towards dynamically generating circuits, including dynamic peering and circuit proposal validation
  • Continued progress on the Gameroom example, including UI updates and automatic reconnection

libsplinter

  • Add a service orchestration implementation
  • Add Scabbard service factory
  • Implement a deterministic two-phase-commit coordinator
  • Reorder the commit/reject process for the two-phase-commit coordinator. The coordinator now tells proposal manager to commit/reject before broadcasting the corresponding message to other verifiers.
  • Refactor two-phase-commit complete_coordination. Move the process of finishing the coordination of a proposal in two-phase commit to a single function to reduce duplication.
  • Implement a two-phase-commit timeout for consensus proposals
  • Update the two-phase-commit algorithm to ignore duplicate proposals
  • Allow dynamic verifiers for a single instance of two-phase-commit consensus
  • Add an Authorization Inquisitor trait for inspecting peer authorization state
  • Add the ability to queue messages from unauthorized peers and unpeered nodes to the admin service
  • Fix an issue that caused the admin service to deadlock when handling proposals
  • Add Event Dealers for services to construct websocket endpoints
  • Add a subscribe endpoint to Scabbard
  • Validate circuit proposals against existing Splinter state
  • Update create-circuit notification messages to include durability field

splinterd

  • Log only warning-level messages from Tokio and Hyper
  • Improve Splinter component build times
  • Add a NoOp registry to handle when a node registry backend is not specified

Private XO and Private Counter Examples

  • Use service IDs as peer node IDs, in order to make them compatible with two-phase consensus

Gameroom Example

  • Add server-side WebSocket notifications to the UI
  • Add borders to the Acme UI
  • Improve error handling and add reconnects to the Application Authorization Handler
  • Add a circuit ID and hash to GET /proposals endpoint
  • Standardize buttons and forms in the UI
  • Improve error formatting in the UI by adding toasts and progress bar spinners
  • Change the Gameroom REST API to retrieve node data automatically on startup
  • Split the circuit_proposals table into gameroom and gameroom_proposals tables
  • Use the Material elevation strategy for coloring the UI
  • Decrease the font size
  • Change the UI to redirect users who are not logged in to login page
  • Add a dashboard view
  • Add an invitation cards view
  • Add a button for creating a new gameroom to the UI

Changes in Splinter 0.2.0

libsplinter

  • Add new consensus API (libsplinter::consensus)
  • Add new consensus implementation for N-party, two-phase commit (libsplinter::consensus::two_phase)
  • Add new service SDK with in-process service implementations (libsplinter::service)
  • Add initial implementation for Scabbard, a Splinter service for running Sabre transactions with two-phase commit between services (libsplinter::service::scabbard)
  • Add REST API SDK (consider this experimental, as the backing implementation may change)
  • Add new node registry REST API endpoint for providing information about all possible nodes in the network, with initial YAML-file backed implementation.
  • Add new signing API for verifying and signing messages, with optional Ursa-backed implementation (libsplinter::signing, requires the use of "ursa-compat" feature flag)
  • Add MultiTransport for managing multiple transport types and selecting connections based on a URI (libsplinter::transport::multi)
  • Add ZMQ transport implementation (libsplinter::transport::zmq, requires the use of the "zmq-transport" feature flag)
  • Add peer authorization callbacks, in order to notify other system entities that a peer is fully ready to receive messages

splinterd

  • Add REST API instance to provide node registry API endpoints
  • Add CLI parameter --bind for the REST API port
  • Add CLI parameters for configuring node registryy; the default registry type is "FILE"

Gameroom Example

  • Add gameroom example infrastructure, such as the gameroomd binary, docker images, and compose files
  • Add Login and Register UI
  • Add New Gameroom UI
  • Add UI themes for both parties in demo
  • Initialize Gameroom database
  • Add circuit proposals table
  • Initialize Gameroom REST API
  • Implement Gameroom REST API authentication routes
  • Implement Gameroom REST API create gameroom endpoint
  • Implement Gameroom REST API proposals route
  • Implement /nodes endpoint in gameroomd