insolar

package module
v0.4.1 Latest Latest
Warning

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

Go to latest
Published: Oct 3, 2018 License: Apache-2.0 Imports: 0 Imported by: 20

README

Insolar

Blockchain platform

CII Best Practices

Build Status Go Report Card GoDoc codecov

This project is still in early development state. It is not recommended to use it in production environment.

Overview

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. Insolar team will constantly provide common modules on the underlying infrastructure for different kinds of distributed scenarios.

We value the expansion of the ecosystem which operates across chains, systems, industries and applications. With a range of protocols and modules, data and information will be connected to support various business scenarios. Our goal is to build the underlying blockchain infrastructure to bridge the real world and the distributed digital world. With this, companies from different industries will be able to develop applications for a range of scenarios and collaborate with other entities on the platform.

Components

Network

Kademlia DHT based blockchain network layer.

  • Support of heterogeneous network topology.
  • Network routing with a host or host group becoming relays for others hosts.
  • Ability to limit number of gateways to corporate host group via relays to keep the host group secure.

See package readme for more details.

Ledger

Record storage engine backed by BadgerDB.

Virtual machines

Various engines for smart contract execution:

  • wasm - WebAssembly implementation of smart contracts
Genesis

Genesis module describes interaction of system components with each other. Every component of the system is a SmartContract. Members of the system are given the opportunity to build their own dApps by publishing smart contracts in Domain instances. Domains define the visibility scope for the child contracts and their interaction policies. Actually, Domain is subclass of SmartContract.

See package readme for more details.

Configuration

Provides configuration params for all Insolar components and helper for config resources management.

Metrics

Using Prometheus monitoring system and time series database for collecting and store metrics

Installation

go get github.com/insolar/insolar

Generate default configuration file

go run cmd/insolar/* -output=-

Example

# Start node
./scripts/insolard/launch.sh

# In other terminal:
# Create user
curl --data '{"query_type": "create_member", "name": "Peter"}' "localhost:19191/api/v1?"
# Dump user info
curl --data '{"query_type": "dump_all_users"}' "localhost:19191/api/v1?"

Docker container

docker pull insolar/insolar
docker run -ti insolar/insolar

Contributing

See Contributing Guidelines.

License

This project is licensed under the terms of the Apache license 2.0. Please see LICENSE for more information.

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
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") }
Package core contains common definitions used by other modules.
Package core contains common definitions used by other modules.
message
Package message represents message that messagebus can route
Package message represents message that messagebus can route
reply
Package reply represents responses to messages of the messagebus
Package reply represents responses to messages of the messagebus
genesis
example
Package example provides smart contracts for building example of system work.
Package example provides smart contracts for building example of system work.
mock/storage
Package storage provides interface and default implementation of storage as map for objects.
Package storage provides interface and default implementation of storage as map for objects.
model/class
Package class provides constants for string representation of class for basic interfaces implementations.
Package class provides constants for string representation of class for basic interfaces implementations.
model/contract
Package contract provides interface and default implementation of smart contract.
Package contract provides interface and default implementation of smart contract.
model/domain
Package domain provides interface and default implementation of domain.
Package domain provides interface and default implementation of domain.
model/object
Package object provides basic interfaces and default implementations of them.
Package object provides basic interfaces and default implementations of them.
public/core
Package core allows to create Genesis Domain ReferenceDomain - system domain that allow global reference resolving.
Package core allows to create Genesis Domain ReferenceDomain - system domain that allow global reference resolving.
Package ledger contains high level interfaces to storage engine and multiple record types
Package ledger contains high level interfaces to storage engine and multiple record types
artifactmanager
Package artifactmanager provides high-level storage API for logic runner module.
Package artifactmanager provides high-level storage API for logic runner module.
hash
Package hash contains Writer interface and SHA3 hasher.
Package hash contains Writer interface and SHA3 hasher.
index
Package index represents indexes and meta information for records.
Package index represents indexes and meta information for records.
jetcoordinator
Package jetcoordinator is responsible for all jet manipulations.
Package jetcoordinator is responsible for all jet manipulations.
jetdrop
Package jetdrop represents Jet Drops (Blocks) of a blockchain.
Package jetdrop represents Jet Drops (Blocks) of a blockchain.
ledgertestutil
Package ledgertestutil contains high level API tests and test utils for other modules.
Package ledgertestutil contains high level API tests and test utils for other modules.
pulsemanager
Package pulsemanager is responsible for all pulse operations.
Package pulsemanager is responsible for all pulse operations.
record
Package record contains code and types for storage records manipulation.
Package record contains code and types for storage records manipulation.
storage
Package storage contains ledger storage implementation on top of BadgerDB engine.
Package storage contains ledger storage implementation on top of BadgerDB engine.
storage/storagetest
Package storagetest contains high level API tests and test utils for other modules.
Package storagetest contains high level API tests and test utils for other modules.
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: "logrus"}) 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: "logrus"}) 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
goplugin
Package goplugin - golang plugin in docker runner
Package goplugin - golang plugin in docker runner
goplugin/foundation
Package foundation server implementation of smartcontract functions
Package foundation server implementation of smartcontract functions
Package messagebus routes messages (contract calls & responses) and delivers'em to relevant modules.
Package messagebus routes messages (contract calls & responses) and delivers'em to relevant modules.
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.
network
hostnetwork
Package hostnetwork is an implementation of Kademlia DHT.
Package hostnetwork is an implementation of Kademlia DHT.
hostnetwork/connection
Package connection encapsulates connection creation process and provides connection factories.
Package connection encapsulates connection creation process and provides connection factories.
hostnetwork/host
Package host is a fundamental part of networking system.
Package host is a fundamental part of networking system.
hostnetwork/packet
Package packet provides network messaging protocol and serialization layer.
Package packet provides network messaging protocol and serialization layer.
hostnetwork/relay
Package relay is an implementation of relay mechanism.
Package relay is an implementation of relay mechanism.
hostnetwork/resolver
Package resolver provides interface (and default implementation) to retrieve public network address.
Package resolver provides interface (and default implementation) to retrieve public network address.
hostnetwork/routing
Package routing implements Kademlia hash tables with XOR distance metrics.
Package routing implements Kademlia hash tables with XOR distance metrics.
hostnetwork/rpc
Package rpc allows higher level components to register methods that can be called by other network hosts.
Package rpc allows higher level components to register methods that can be called by other network hosts.
hostnetwork/store
Package store provides interfaces and default in-memory implementation of storage for DHT metadata.
Package store provides interfaces and default in-memory implementation of storage for DHT metadata.
hostnetwork/transport
Package transport provides network transport interface.
Package transport provides network transport interface.
toolkit
go/foundation
Package foundation is a base package for writing smartcontracts in go language.
Package foundation is a base package for writing smartcontracts in go language.
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