wasp

command module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Mar 3, 2021 License: Apache-2.0, BSD-2-Clause Imports: 22 Imported by: 0

README

Wasp logo

Welcome to the Wasp repository!

Wasp is a node software developed by the IOTA Foundation to run the IOTA Smart Contract Protocol (ISCP in short) on top of the IOTA Tangle. Please find here a high level introduction into ISCP.

A smart contract is a distributed software agent that stores its state in the UTXO ledger, and evolves with each request sent to the contrct. Since the UTXO ledger is immutable, by extension the smart contract state is also immutable.

A committee of an arbitrary number of Wasp nodes runs a chain of smart contracts. The main purpose of the committee is to ensure consistent transition from the previous state to the next, according to the attached program. This ensures that the operation of smart contracts is distributed, fault-tolerant and leaderless.

The articles below explain how to run a Wasp node on the Pollen network, as well as concepts and architecture of ISCP and Wasp.

Disclaimer: Wasp node and articles is a work in progress, and most likely will always be. The software presented in this repository is not ready for use in commercial settings or whenever processing of critical data is involved.

Prerequisites

$ git clone -b master+wasp https://github.com/iotaledger/goshimmer.git
$ cd goshimmer
$ go install

Note: The only difference between standard Goshimmer (master branch) and the master+wasp branch is the WaspConn plugin, which accepts connections from Wasp nodes.

Compile

  • Build the wasp binary (Wasp node): go build
  • Build the wasp-cli binary (CLI client): go build ./tools/wasp-cli

Alternatively, build and install everything with go install ./...

Test

  • Run all tests (including integration tests which may take several minutes): go test -timeout 20m ./...
  • Run only unit tests: go test -short ./...

Note: integration tests require the goshimmer, wasp and wasp-cli commands in the system path (i.e. you need to run go install ./... before running tests).

Run

Learn

Tools

  • wasp-cli: A CLI client for the Wasp node.
  • wasp-cluster: allows to easily run a network of Wasp nodes, for testing.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
contracts
packages
chain/consensus
the file contains functions responsible for the request batch selection logic
the file contains functions responsible for the request batch selection logic
chain/statemgr
statemgr package implements object which is responsible for the smart contract ledger state to be synchronized and validated
statemgr package implements object which is responsible for the smart contract ledger state to be synchronized and validated
coretypes
Package 'coretypes' defines fundamental types used in the Wasp.
Package 'coretypes' defines fundamental types used in the Wasp.
coretypes/cbalances
package cbalances implements coretypes.ColoredBalances interface
package cbalances implements coretypes.ColoredBalances interface
coretypes/coreutil
package coreutil provides functions to describe interface of the core contract in a compact way
package coreutil provides functions to describe interface of the core contract in a compact way
coretypes/requestargs
Package encodedargs implements special encoding of the dict.Dict which alows optimized transfer of big data through SC request.
Package encodedargs implements special encoding of the dict.Dict which alows optimized transfer of big data through SC request.
dkg
Package dkg is responsible for performing a distributed key generation procedure.
Package dkg is responsible for performing a distributed key generation procedure.
kv
peering
Package peering provides an overlay network for communicating between nodes in a peer-to-peer style with low overhead encoding and persistent connections.
Package peering provides an overlay network for communicating between nodes in a peer-to-peer style with low overhead encoding and persistent connections.
peering/group
Package group implements a generic peering.GroupProvider.
Package group implements a generic peering.GroupProvider.
peering/tcp
Package tcp provides a TCP based implementation of the peering overlay network.
Package tcp provides a TCP based implementation of the peering overlay network.
peering/udp
Package udp implements a UDP based peering.NetworkProvider.
Package udp implements a UDP based peering.NetworkProvider.
registry
Package registry provides a business specific API to the local database.
Package registry provides a business specific API to the local database.
sctransaction
implements smart contract transaction.
implements smart contract transaction.
sctransaction/properties
package semantically analyzes parsed smart contract transaction return object with transaction properties or error if semantically incorrect
package semantically analyzes parsed smart contract transaction return object with transaction properties or error if semantically incorrect
solo
Package 'solo' is a development tool to write unit tests for IOTA Smart Contracts (ISCP).
Package 'solo' is a development tool to write unit tests for IOTA Smart Contracts (ISCP).
tcrypto
Package tcrypto stands for Threshold Cryptography.
Package tcrypto stands for Threshold Cryptography.
testutil
Package testutil provides mock implementations of various wasp components.
Package testutil provides mock implementations of various wasp components.
txutil/vtxbuilder
package to build value transaction
package to build value transaction
util/sema
package implements simple semaphore with timeout
package implements simple semaphore with timeout
vm
vm/core/root
'root' a core contract on the chain.
'root' a core contract on the chain.
vm/core/testcore/sbtests/sbtestsc
smart contract for testing
smart contract for testing
vm/sandbox/sandbox_utils
package sb_utils implements Sandbox utility functions
package sb_utils implements Sandbox utility functions
vm/statetxbuilder
tx builder for VM package to build value transaction for the anchor transaction
tx builder for VM package to build value transaction for the anchor transaction
wasmvm module
plugins
cli
database
Package database is a plugin that manages the badger database (e.g.
Package database is a plugin that manages the badger database (e.g.
dispatcher
Package dispatcher router goshimmer node messages to the corresponding components in the wasp node.
Package dispatcher router goshimmer node messages to the corresponding components in the wasp node.
dkg
globals
needed to link packages with examples and to force link some packages
needed to link packages with examples and to force link some packages
nodeconn
package for maintaining connection with the main node on the node WaspConn plugin is handling yhe connection
package for maintaining connection with the main node on the node WaspConn plugin is handling yhe connection
testplugins/nodeping
scmeta package runs integration tests by calling WebAPi to itself for SC meta data
scmeta package runs integration tests by calling WebAPi to itself for SC meta data
wasmtimevm
Wasp can have several VM types.
Wasp can have several VM types.
tools
showit command
submsg command
program subscribes and listens to the nanomsg stream publiched by the Wasp host and displays it in the console
program subscribes and listens to the nanomsg stream publiched by the Wasp host and displays it in the console
wasp-cli command
gendoc module

Jump to

Keyboard shortcuts

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