CoconutGo

package module
v0.13.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 31, 2019 License: AGPL-3.0 Imports: 0 Imported by: 0

README

Nym

This is the Nym validator. It includes a Go implementation of the Coconut selective disclosure credentials scheme. Coconut supports threshold issuance on multiple public and private attributes, re-randomization and multiple unlinkable selective attribute revelations.

Nym validators use a Tendermint blockchain to keep track of credential issuance and prevent double-spending of credentials, and contains server-side to support querying of credentials. There is client-side code to re-randomize credentials.

Currently, there exist two ways of running the demo code. One relies on local setup, which is more stable and more likely to work correctly. The other, uses external machines hosting the appropriate services. However, due to its experimental nature and being under heavy development, the latter option is more unstable and the machines might be at an unexpected state at any given moment of time, including being turned off, hence running the code locally is recommended.

The local setup requires docker and docker-compose to be installed on the machine. In order to startup the system, one needs to run the runLocalNym_v$VERSION.sh script, where $VERSION is the current release version of the code. This will pull the appropriate release binary for the gui and build and start all docker containers according to the docker-compose.yml file. When the application is started, it will ask for a configuration file in order to know which network it's supposed to connect to. In that case choose file located at build/nymapp/local_config.toml.

For the less stable remote version, you need to get the latest binary from the release page of the repository and when asked for configuration file use aws_config.toml located in the zip file. Note that the machines you would be trying to connect to may be switched off at any time without notice.

For more information, see the documentation.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package client encapsulates all calls to issuers and providers.
Package client encapsulates all calls to issuers and providers.
config
Package config defines configuration used by coconut client.
Package config defines configuration used by coconut client.
cryptoworker
Package cryptoworker combines coconut worker and job workers for a client instance.
Package cryptoworker combines coconut worker and job workers for a client instance.
rpc
cmd
common
comm
Package comm consists of set of helper communication related functions used by both client and server.
Package comm consists of set of helper communication related functions used by both client and server.
comm/commands
Package commands define command types used by coconut server.
Package commands define command types used by coconut server.
comm/packet
Package packet defines packet structure that is sent on the wire between multiple entities
Package packet defines packet structure that is sent on the wire between multiple entities
tendermintmonitor
Package monitor implements the support for monitoring the state of the Tendermint Blockchain
Package monitor implements the support for monitoring the state of the Tendermint Blockchain
utils
Package utils provides auxiliary functions used throughout the repo
Package utils provides auxiliary functions used throughout the repo
Package constants declares system-wide constants.
Package constants declares system-wide constants.
crypto
bpgroup
Package bpgroup provides wrapper for groups and operations involved in the bilinear pairing
Package bpgroup provides wrapper for groups and operations involved in the bilinear pairing
coconut/concurrency/coconutworker
Package coconutworker is a wrapper for computing coconut-related operations concurrently, such that the callee does not need to be concerned with system-wide params.
Package coconutworker is a wrapper for computing coconut-related operations concurrently, such that the callee does not need to be concerned with system-wide params.
coconut/concurrency/jobpacket
Package jobpacket provides allows implementing simple job queue.
Package jobpacket provides allows implementing simple job queue.
coconut/concurrency/jobqueue
Package jobqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
Package jobqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
coconut/concurrency/jobworker
Package jobworker implements worker for performing tasks defined by jobpacket that are in the queue.
Package jobworker implements worker for performing tasks defined by jobpacket that are in the queue.
coconut/scheme
Package coconut provides the functionalities required by the Coconut Scheme.
Package coconut provides the functionalities required by the Coconut Scheme.
coconut/utils
Package utils provides auxiliary functions required by the Coconut Scheme.
Package utils provides auxiliary functions required by the Coconut Scheme.
elgamal
Package elgamal provides primitives required by the ElGamal encryption scheme.
Package elgamal provides primitives required by the ElGamal encryption scheme.
testutils
Package schemetest provides functions used for testing both regular and concurrent coconut scheme.
Package schemetest provides functions used for testing both regular and concurrent coconut scheme.
Package daemon defines common structure for all daemonizable services, like ethereum-watcher, issuing authority, etc.
Package daemon defines common structure for all daemonizable services, like ethereum-watcher, issuing authority, etc.
client
package client provides API for communication with an Ethereum blockchain.
package client provides API for communication with an Ethereum blockchain.
watcher/config
Package config defines configuration used by Ethereum watcher.
Package config defines configuration used by Ethereum watcher.
Package issuer defines structure for ERC20 Nym Faucet.
Package issuer defines structure for ERC20 Nym Faucet.
Package jobqueue is implemented based on eapache's infinite channel template:
Package jobqueue is implemented based on eapache's infinite channel template:
Package logger provides the functionalities for logging actions of coconut server/client.
Package logger provides the functionalities for logging actions of coconut server/client.
nym
token
Package token defines Nym token structure and associated methods.
Package token defines Nym token structure and associated methods.
Package redeemer defines a Nym redeemer responsible for 'confirming' requests to redeem Nym tokens back to ERC20 accounts.
Package redeemer defines a Nym redeemer responsible for 'confirming' requests to redeem Nym tokens back to ERC20 accounts.
config
Package config defines configuration used by Nym redeemer.
Package config defines configuration used by Nym redeemer.
Package server defines structure for coconut IA server.
Package server defines structure for coconut IA server.
config
Package config defines configuration used by coconut server.
Package config defines configuration used by coconut server.
grpc/listener
Package grpclistener implements the support for incoming gRPCs.
Package grpclistener implements the support for incoming gRPCs.
issuer
Package issuer defines structure for coconut Issuing Authority.
Package issuer defines structure for coconut Issuing Authority.
issuer/tendermintprocessor
Package processor processes data obtained by the monitor.
Package processor processes data obtained by the monitor.
issuer/utils
package utils defines utility functions/structures required by or with an issuer.
package utils defines utility functions/structures required by or with an issuer.
listener
Package listener implements the support for incoming TCP connections.
Package listener implements the support for incoming TCP connections.
listener/requesthandler
Package requesthandler contains functions that are used by issuing authorities and service providers
Package requesthandler contains functions that are used by issuing authorities and service providers
provider
Package provider defines basic structure for a coconut Service Provider server.
Package provider defines basic structure for a coconut Service Provider server.
requestqueue
Package requestqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
Package requestqueue is implemented based on eapache's infinite channel template: https://github.com/eapache/channels/blob/master/infinite_channel.go As explained by the author in documentation: https://godoc.org/github.com/eapache/channels due to Go's type system limitations direct import of his library is impractical.
serverworker
Package serverworker gives additional functionalities to regular CoconutWorker that are required by a server instance.
Package serverworker gives additional functionalities to regular CoconutWorker that are required by a server instance.
serverworker/commandhandler
Package commandhandler contains functions that are used to resolve commands issued to issuers and providers.
Package commandhandler contains functions that are used to resolve commands issued to issuers and providers.
storage
Package storage implements an interface to a goleveldb database.
Package storage implements an interface to a goleveldb database.
tendermint
account
Package account defines Nym account structure and associated methods.
Package account defines Nym account structure and associated methods.
client
Package client simplifies communication with the blockchain application
Package client simplifies communication with the blockchain application
nymabci
main.go - Entry point for Tendermint ABCI for Nym Copyright (C) 2019 Nym Authors.
main.go - Entry point for Tendermint ABCI for Nym Copyright (C) 2019 Nym Authors.
nymabci/code
Package code defines return codes for the Nym application
Package code defines return codes for the Nym application
nymabci/constants
Package constants declares system-wide constants.
Package constants declares system-wide constants.
nymabci/nymapplication
Package nymapplication defines the functionality of the blockchain application.
Package nymapplication defines the functionality of the blockchain application.
nymabci/query
Package query defines query logic for the Nym application.
Package query defines query logic for the Nym application.
nymabci/transaction
Package transaction defines transaction logic for the Nym application.
Package transaction defines transaction logic for the Nym application.
nymnode
main.go - Entrypoint to the custom Nym Tendermint node.
main.go - Entrypoint to the custom Nym Tendermint node.
nymnode/testnode
package test_node wraps the nymnode to create a single node cluster to be used for testing.
package test_node wraps the nymnode to create a single node cluster to be used for testing.
main.go - Main file for a simple Trusted Third Party (TTP) keygen CLI Copyright (C) 2018-2019 Nym Authors.
main.go - Main file for a simple Trusted Third Party (TTP) keygen CLI Copyright (C) 2018-2019 Nym Authors.
Package verifier defines a Nym verifier responsible for verifying received coconut signatures.
Package verifier defines a Nym verifier responsible for verifying received coconut signatures.
config
Package config defines configuration used by Nym verifier.
Package config defines configuration used by Nym verifier.
Package worker provides background worker tasks.
Package worker provides background worker tasks.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL