/EncryCore

EncryCore node reference implementation

Primary LanguageScalaGNU General Public License v3.0GPL-3.0

EncryCore

Build Status

Encry is a distributed digital asset platform supporting smart contracts in non turing-complete Prism language (https://github.com/EncryFoundation/PrismLang) and custom asset issuing.

Related projects

PrismLang - Contract-oriented scripting language designed specially for EncryCore.

Installation

1) Running Latest release

At first, you should download latest release from this page, your target in EncryCore.jar. Make sure that you have a compatible Java Runtime Environment 1.8 or later (64-bit version, you can find official guide here). Once download is complete, you should navigate to the folder where EncryCore.jar is located and execute the following command:

$ java -jar EncryCore.jar

To run this app with additional configurations you should execute the following command:

$ java -jar EncryCore.jar file_with_your_configurations.conf

List of default configs you can find in:

EncryCore/srs/main/resources/configs/

2) Compiling from source

To run EncryCore node you need JRE 1.8 or later (64-bit version, you can find official guide here) and sbt(Simple build tool for scala and java applications, official guide) to be installed. If you running a Windows machine, please make sure, that you have git client installed.

Configuration file is src/main/resources/application.conf.

Linux/MacOS/Windows:

$ git clone https://github.com/EncryFoundation/EncryCore.git

$ cd EncryCore

$ git checkout master

$ sbt run

Using node.

  • After successful installation using any of the described methods above you will have node CLI(command line interface) in opened terminal, description of the valid CLI commands can be found below.
  • Description of node's api can be found here

Interacting with CLI

You can interact with your node using command line interface. Note that generic command structure is:

[GROUP_NAME] [COMMAND] -[ARGUMENT_1]=[VAL_1] -[ARGUMENT_2]=[VAL_2]

If you just have installed node, to check that everything is fine you can run :

wallet createKey

Here is list of the other valid commands:

| Group name |   Command              |   Argument      |  Meaning
|------------|------------------------|-----------------|--------------------------------
| node       |   shutdown             |   None          |  Shutdown the node
| node       |   stopMining           |   None          |  Node stops mining
| node       |   startMining          |   None          |  Node starts mining
| wallet     |   pubKeys              |   None          |  Print available public keys
| wallet     |   privKeys             |   None          |  Print available private keys
| wallet     |   addrs                |   None          |  Print available addresses
| wallet     |   createKey            |   None          |  Add key to storage
| wallet     |   balance              |   None          |  Show balance of current wallet
| wallet     |   transfer             |   addr, amount  |  Transfer `amount` to `addr`ess
| wallet     |   createToken          |   fee, amount   |  Creates new token
| wallet     |   createKey            |   None          |  Creates new account
| wallet     |   fromSeed             |   Seed          |  Creates new account from seed
| peer       |   removeFromBlackList  |   host, port    |  Remove peer from black list
| peer       |   addPeer              |   host, port    |  Add peer to 'knownPeers'
| peer       |   all                  |   None          |  Get all peers in the system
| peer       |   connected            |   None          |  Get all connected peers
| peer       |   banned               |   None          |  Get all banned peers
| peer       |   ban                  |   host, port    |  Ban peer
| app        |   info                 |   None          |  Show info about your node
| app        |   help                 |   None          |  Show all supported commands
| history    |   getTxById            |   Id            |  Get transaction by 'Id'
| history    |   getLastHeaders       |   Number        |  Get last 'Number' headers
| history    |   getLastHeaderIds     |   Number        |  Get header at height 'Number'
| history    |   getHeaderById        |   Id            |  Get header by 'Id'
| history    |   getFullBlock         |   Id            |  Get block by 'Id'
| history    |   getTxById            |   None          |  Get block candidate
| app        |   info                 |   None          |  Show info about your node
| app        |   help                 |   None          |  Show all supported commands

Running tests

$ sbt test

License

All contributions are made under the GNU General Public License v3. See LICENSE.

Acknowledgements

YourKit supports open source projects with its full-featured Java Profiler. YourKit, LLC is the creator of YourKit Java Profiler and YourKit .NET Profiler, innovative and intelligent tools for profiling Java and .NET applications.