insolar

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Jan 14, 2020 License: Apache-2.0 Imports: 0 Imported by: 20

README

Insolar platform is the most secure, scalable, and comprehensive business-ready blockchain toolkit in the world. Insolar’s goal is to give businesses access to features and services that enable them to launch new decentralized applications quickly and easily. Whether a minimum viable product or full-scale production software, Insolar builds and integrates applications for your enterprise's existing systems.

CII Best Practices GolangCI Go Report Card GoDoc codecov

Quick start

To learn what distinguishes Insolar from other blockchain projects, go through the list of our features.

To get a grip on how Insolar works, take a look at its architecture overview.

To join the Insolar network, download the latest release and follow the integration instructions.

To test Insolar locally, install it and deploy as described below.

Install

  1. Install the latest 1.12 version of the Golang programming tools. Make sure the $GOPATH environment variable is set.

  2. Download the Insolar package:

    go get github.com/insolar/insolar
    
  3. Go to the package directory:

    cd $GOPATH/src/github.com/insolar/insolar
    
  4. Install dependencies and build binaries:

    make
    

Deploy locally

  1. Run the launcher:

    scripts/insolard/launchnet.sh -g
    

    It generates bootstrap data, starts a pulse watcher, and launches a number of nodes. In local setup, the "nodes" are simply services listening on different ports. The default number of nodes is 5, you can uncomment more in scripts/insolard/bootstrap_template.yaml.

  2. When the pulse watcher says INSOLAR STATE: READY, you can run the following:

    • Requester:

      bin/apirequester -k=.artifacts/launchnet/configs/ -p=http://127.0.0.1:19101/api/rpc
      

      The requester runs a scenario: creates a number of users with wallets and transfers some money between them. For the first time, the script does it sequentially, upon subsequent runs — concurrently.

      Options:

      • -k: Path to the root user's key pair. All requests for a new user creation must be signed by the root one.
      • -p: Node's public API URL. By default, the first node listens on the 127.0.0.1:19101 port. It can be changed in configuration.
    • Benchmark:

      bin/benchmark -c=4 -r=25 -k=.artifacts/launchnet/configs/
      

      Options:

      • -k: Path to the root user's key pair.
      • -c: Number of concurrent threads in which requests are sent.
      • -r: Number of transfer requests to be sent in each thread.

Contribute!

Feel free to submit issues, fork the repository and send pull requests!

To make the process smooth for both reviewers and contributors, familiarize yourself with the list of guidelines:

  1. Open source contributor guide.
  2. Style guide: Effective Go.
  3. List of shorthands for Go code review comments.

When submitting an issue, include a complete test function that demonstrates it.

Thank you for your intention to contribute to the Insolar project. As a company developing open-source code, we highly appreciate external contributions to our project.

FAQ

For more information, check out our FAQ.

Contacts

If you have any additional questions, join our developers chat.

Our social media:

License

This project is licensed under the terms of the Apache license 2.0, except for the Network subdirectory, which is licensed under the terms of the Modified BSD 3-Clause Clear License.

Documentation

Overview

Package insolar is the next generation high-performance scalable blockchain platform designed with the express purpose to meet an immense business scope. The enterprise-grade distributed ledger cloud platform will help to increase business velocity, create new revenue streams, and reduce cost and risk by securely extending enterprise SaaS and on-premises applications to drive tamper-resistant transactions on a trusted business network.

Insolar supports public and private blockchains and is able to customize different blockchains for different applications.

Directories

Path Synopsis
api
cmd
Package configuration holds configuration for all components in Insolar host binary It allows also helps to manage config resources using Holder Usage: package main import ( "github.com/insolar/insolar/configuration" "fmt" ) func main() { holder := configuration.NewHolder() fmt.Printf("Default configuration:\n %+v\n", holder.Configuration) holder.SaveAs("insolar.yml") }
Package configuration holds configuration for all components in Insolar host binary It allows also helps to manage config resources using Holder Usage: package main import ( "github.com/insolar/insolar/configuration" "fmt" ) func main() { holder := configuration.NewHolder() fmt.Printf("Default configuration:\n %+v\n", holder.Configuration) holder.SaveAs("insolar.yml") }
docker
Package insolar contains common definitions used by other modules.
Package insolar contains common definitions used by other modules.
api
backoff
Package backoff provides an exponential-backoff implementation.
Package backoff provides an exponential-backoff implementation.
bus
dns
gen
Package gen contains functions for generating random base insolar types.
Package gen contains functions for generating random base insolar types.
jet
Package jet provides objects and interfaces for working with Jet objects.
Package jet provides objects and interfaces for working with Jet objects.
jetcoordinator
Package jetcoordinator is responsible for all jet manipulations.
Package jetcoordinator is responsible for all jet manipulations.
node
Package node contains node storage
Package node contains node storage
pulse
Package Pulse contains Pulse storage.
Package Pulse contains Pulse storage.
reply
Package reply represents responses to messages of the messagebus
Package reply represents responses to messages of the messagebus
store
Package db contains primitives for storing and indexing data.
Package db contains primitives for storing and indexing data.
instrumentation
inslogger
Package inslogger contains context helpers for log Examples: // initialize base context with default logger with provided trace id ctx, inslog := inslogger.WithTraceField(context.Background(), "TraceID") inslog.Warn("warn") // get logger from context inslog := inslogger.FromContext(ctx) // initalize logger (SomeNewLogger() should return insolar.Logger) inslogger.SetLogger(ctx, SomeNewLogger()) Hints: Use environment variables for log level setup: INSOLAR_LOG_LEVEL=debug INSOLAR_LOG_FORMATTER=text go test ./yourpackage/...
Package inslogger contains context helpers for log Examples: // initialize base context with default logger with provided trace id ctx, inslog := inslogger.WithTraceField(context.Background(), "TraceID") inslog.Warn("warn") // get logger from context inslog := inslogger.FromContext(ctx) // initalize logger (SomeNewLogger() should return insolar.Logger) inslogger.SetLogger(ctx, SomeNewLogger()) Hints: Use environment variables for log level setup: INSOLAR_LOG_LEVEL=debug INSOLAR_LOG_FORMATTER=text go test ./yourpackage/...
insmetrics
Package insmetrics provides helpers for opencesus metrics.
Package insmetrics provides helpers for opencesus metrics.
instracer
Package instracer contains helpers for opencesus tracer.
Package instracer contains helpers for opencesus tracer.
introspector
introspector provides grpc/rest introspection API endpoint on shared tcp port.
introspector provides grpc/rest introspection API endpoint on shared tcp port.
introspector/introproto
Package introproto is a reverse proxy.
Package introproto is a reverse proxy.
pprof
Package pprof provides http pprof handlers Examples: curl localhost:9090/debug/pprof/trace?seconds=10 > trace.out For more information about pprof, see https://github.com/google/pprof/blob/master/doc/README.md and https://golang.org/pkg/runtime/pprof/
Package pprof provides http pprof handlers Examples: curl localhost:9090/debug/pprof/trace?seconds=10 > trace.out For more information about pprof, see https://github.com/google/pprof/blob/master/doc/README.md and https://golang.org/pkg/runtime/pprof/
ledger
artifact
artifact contains tools for managing ledger artifacts without network, that required by genesis and other bootstrap stuff
artifact contains tools for managing ledger artifacts without network, that required by genesis and other bootstrap stuff
heavy/pulsemanager
Package pulsemanager is responsible for all pulse operations.
Package pulsemanager is responsible for all pulse operations.
light/executor
executor contains internal business logic object for light executor.
executor contains internal business logic object for light executor.
object
Package object contains code and types for storage records manipulation.
Package object contains code and types for storage records manipulation.
log
Package log contains adapter for third-party loggers Example: package main import ( "github.com/insolar/insolar/configuration" "github.com/insolar/insolar/log" ) func main() { // global logger log.SetLevel("Debug") log.Debugln("debug log message") // local logger logger, _ := log.NewLog(configuration.Log{Level: "Warning", Adapter: "zerolog"}) logger.Warnln("warning log message") }
Package log contains adapter for third-party loggers Example: package main import ( "github.com/insolar/insolar/configuration" "github.com/insolar/insolar/log" ) func main() { // global logger log.SetLevel("Debug") log.Debugln("debug log message") // local logger logger, _ := log.NewLog(configuration.Log{Level: "Warning", Adapter: "zerolog"}) logger.Warnln("warning log message") }
Package logicrunner - infrastructure for executing smartcontracts
Package logicrunner - infrastructure for executing smartcontracts
builtin
Package builtin is implementation of builtin contracts engine
Package builtin is implementation of builtin contracts engine
builtin/foundation
Package foundation server implementation of smartcontract functions
Package foundation server implementation of smartcontract functions
goplugin
Package goplugin - golang plugin in docker runner
Package goplugin - golang plugin in docker runner
pulsemanager
Package pulsemanager is responsible for all pulse operations.
Package pulsemanager is responsible for all pulse operations.
Package metrics is a gateway for Prometheus monitoring system, it based on Prometheus golang client.
Package metrics is a gateway for Prometheus monitoring system, it based on Prometheus golang client.
utils
Package version provides project version information.
Package version provides project version information.

Jump to

Keyboard shortcuts

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