Skip to content

YasiruR/zero-comm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ZeroComm

ZeroComm is a Go implementation of a novel solution which enables decentralized secure messaging with both peer-to-peer and group communication, while combining DIDComm framework and ZeroMQ transport protocol. This prototype was researched and designed as a thesis project.

Please refer to the documentation to find more information about the requirements, architecture, design, implementation and performance evaluation of the solution.

Supported features:

  • Generating invitations to connect with agents
  • Connecting via invitations
  • Peer-to-peer communication
  • Creating a group
  • Joining a group
  • Group messaging
  • Leaving a group
  • Fetching group information
  • Discover services of the agent

Usage

Follow the steps listed below to start an agent.

  1. Clone the repository
  2. Build from the source code by running go build command in the parent directory
  3. Start the agent. eg: ./didcomm-prober -label=alice -port=6001 -pub_port=7001 -mock_port=8001 -mock -v
  4. Press c and enter to proceed

alt text

Parameters

  • label: display name of the agent
  • port: port for peer-to-peer communication
  • pub_port: port for group communication
  • mock_port: port for testing purposes
  • mock: if used, enables mocking endpoints
  • v: if used, prints the logs of the agent

Internal Architecture

alt text

Component stack

alt text

Dependencies

Dependency Version Description
crypto v0.0.0 This repository holds supplementary Go cryptography libraries
sys v0.0.0 This repository holds supplemental Go packages for low-level interactions with the operating system.
zmq4 v1.2.9 A Go interface to ZeroMQ version 4
compress v1.15.14 Optimized Go Compression Packages
aurora v0.0.0 Golang ultimate ANSI-colors that supports Printf/Sprintf methods
mux v1.7.3 A powerful HTTP router and URL matcher for building Go web servers with 🦍
gofuzz v1.2.0 Fuzz testing for go.
uuid v1.1.1 Go package for UUIDs based on RFC 4122 and DCE 1.1: Authentication and Security Services.
btcutil v1.0.3 Provides bitcoin-specific convenience functions and types
libsodium-go v0.0.0 A complete overhaul of the Golang wrapper for libsodium
zerolog v1.22.0 Zero Allocation JSON Logger
log v1.2.1