NeoCompiler Eco: compile, deploy and test NEO smart contracts
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
compilers updated devpack Nov 26, 2018
docker-compose-eco-network Updating odbft to 2.1 and trying 1s blocks again Dec 5, 2018
docker-neo-csharp-node
docker-neo-python Updating NeoScan to 3 dockers (api,sync and postgres) - Python to 0.8.1 Oct 16, 2018
docker-neo-scan
docker-ubuntu-dotnet Express decentralization and docker python and csahrp Aug 10, 2018
examples/csharp updated hello-world example Nov 23, 2018
express-servers minor clean and automatic notifications convert Nov 28, 2018
public Div for registering Dec 11, 2018
.1001joke Minnor improvement on socket.io Sep 25, 2018
.gitconfig avoiding file mode changes May 17, 2018
.gitignore Implementing deploy, invoke and compile counters Nov 19, 2018
CHANGELOG.md Updating CHANGELOG and README Aug 21, 2018
CNAME Update CNAME Aug 25, 2018
LICENSE improved README and added LICENSE file Jan 24, 2018
README.md improved instructions for deepin Aug 23, 2018
VERSION official support for CHANGELOG Aug 5, 2018
appHttp.js Starting express RPC split Aug 7, 2018
buildCompilers.sh Moving all dockers of compilers to compilers folder Aug 11, 2018
build_everything.sh Adding IsPayable flag and updating neoscan Oct 29, 2018
exportingGitCommitVersion.sh Minnor cleaning Aug 11, 2018
index.html Updating to neonjs 4 (#43) Dec 6, 2018
npm_prune_install.sh Minnor organizing and simplifing Jun 18, 2018
package-lock.json Default compilers instead of compilers2 because of new RPC preview9 l… Aug 25, 2018
package.json Merge branch 'master' of github.com:NeoResearch/neocompiler-eco Aug 7, 2018
runEco_network.sh Organizing and simplifing Jun 18, 2018
runHttpExpress.sh Express decentralization and docker python and csahrp Aug 10, 2018
stopEco_network.sh Organizing and simplifing Jun 18, 2018
stopExpressServers.sh
view-node1.sh removed --compatible from compiler and add script to quickly inspect … Nov 16, 2018

README.md

NeoCompiler Eco 3.0

This is an open-source initiative for providing an easy access to on NEO ecosystem.

In particular, we provide simple interact and didactic interfaces for allowing online compiling for C#, Python, Go and Java.

Suggestions

Browsers/Devices

  • Tested with Firefox Quantum - 61.0.1
The current front-end interface can be acessed from:
Compilers RPC API services are available at:
Other useful services

What does it currently do

  • Compile input C#, Python, Go or Java code using reliable and safe servers (backend) compilers;
  • Return AVM and ABI codes (more precise of C# compiler);
  • Deploy and invoke code to private net (Current in the back);
  • Tests with different wallets, synced and with able to provide historic data our activity;
  • Perform different types of blockchain invocations and RPC calls;
  • Use websockets to provide some useful information;
  • It can perform TestNet invokes, or even MainNet (however, this is extremely not recommended).

Roadmap

  • Integrate with neolink project (or any other), to allow secure key management for Test/MainNet
  • Move towards client-based compiling (more secure, robust and much more scalable).
    • Some efforts have been done here already, but many technical challenges are still being dealt with;
    • It has not been easy, still, to accomplish all necessary invocations only in the client side. On the other hand, the server has been responding smooth and nice, providing a nice didactic infrastructure to be used by professors, researchers and those interested on Neo's multi-language programming interface.
  • Ideas? Collaborations are welcome :) The goal is to be didactic and bring it close to citizens and users: Smart Cities, Smart Governance and Smart Blockchain Technologies :P

Dependencies

For Debian-based systems:

Start any recursive submodule: git submodule update --recursive --remote

apt install npm

apt install nodejs-legacy

npm install

Pull submodules: git submodule update --init --recursive (first time), then, git submodule update --recursive --remote

Installing docker-compose 1.19.0+

We need docker-compose version 1.19.0 (or more), so we recommend the following steps for installation:

curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-``uname -s``-``uname -m`` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

echo "export PATH=\$PATH:/usr/local/bin/" >> ~/.bashrc

source ~/.bashrc

Docker recommendations

Docker technology is essential for sandboxing all compilers in different environments (for different languages).

We DO NOT recommend packages docker.io/docker-engine: sudo apt purge docker docker-engine docker.io.

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common gnupg2

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo apt-key fingerprint 0EBFCD88

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update

sudo apt install docker-ce

  • Deepin users can follow Ubuntu instructions and use bionic (Ubuntu 18.04) repository: sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
  • sudo apt install apparmor=2.12-4ubuntu5 (the official 2.12-4 version was denying network access to docker)

Adding user to docker group: sudo usermod -a -G docker $USER

Build everything

The online command required to create our own NeoCompiler Ecosystem, suitable for private of public blockchain projects.

This will call a docker-compose with NeoCompiler Private Net (Eco)+NeoScan. Furthermore, it will set all available compilers and open the front/backend interface and server, respectively.

./build_everything.sh

Developers guidelines

Basically, two steps are required: A1 and A2. Both are described below.

A1) Building compilers

This script already builds the compilers and starts the server:

./buildCompilers.sh

Running express node servers

Http front-end: ./runHttpExpress.sh or nohup ./runHttpExpress.sh > ./express-servers/outputs/nohupOutputRunHttpExpress.out 2> ./express-servers/outputs/nohupOutputRunHttpExpress.err < /dev/null &

Compilers RPC API: (cd express-servers; ./run-CompilerExpress-RPC.sh)

Eco Services: (cd express-servers; ./run-EcoServicesExpress-RPC-SocketIo.sh)

Compilers and Eco Services with nohup: (cd express-servers; ./startAllExpressNohup.sh)

Building compiling backends (C#, Python, Java and Go)

Building docker-neo-mono backend

The backend for C# is provided by mono, only two steps are necessary to build and tag image docker-mono-neo-compiler:

cd docker-neo-mono

docker_build.sh

Building docker-neo-boa backend

The backend for Python is provided by neo-boa compiler, only two steps are necessary to build and tag image docker-neo-boa:

cd docker-neo-boa

docker_build.sh

Building docker-neo-go backend

The backend for Go is provided by neo-go team, only two steps are necessary to build and tag image docker-neo-go:

cd docker-neo-go

docker_build.sh

Building docker-java backend

The backend for Java is provided by neoj compiler (in mono), only two steps are necessary to build and tag image docker-neo-java-compiler:

cd docker-java

docker_build.sh

A2) Eco Network Funtionalities

In order to add NeoScan light wallet functionalities, docker-compose is the main tools that acts for the creation of our micro-service .

This script will start all necessary backend functionalities, neo-csharp-nodes, neo-python and neo-scan.

In particular, we currently have:

  • csharp nodes are with TCP at 2033x and RPC at 3033X, websocket is not being used
    • 4 csharp consensus node, one of then is also a RPC at port 30333
    • 2 csharp pure RPC nodes, 30337 and 30338
    • Thus, in summary, 3 csharp RPC nodes.
  • 7 python containers
    • 4 wallets pre-synced
    • 1 python REST api at 8080
    • 1 python RPC api 10032
    • 1 python for creating the genesis block and performing a first transaction
  • postgress container with a pre-compiled neo-scan image for fast startup

Dealing with docker-compose swarm of containers

Start up the container, checking the messages and following warnings

cd ./docker-compose-eco-network

docker-compose up

Start up the container in a detached mode

docker-compose up -d

Feel free to take is down

docker-compose down

However, consider stopping and restarting

docker-compose stop
docker-compose start

NeoCompiler Eco useful commands and ideas

Other functionalities and integrations are possible and some are implemented

It is also possible to integrate the Eco Network with Neondb and NeoTracker.

Other parameters

One could check docker docker-compose.yml, picking up a combination of your choice from docker-compose-eco-network folder. This can be done for locally modifying some characteristic of NeoCompiler.

Run build_everything.sh with an additional parameter --no-build and your modified files of the private net will be called.

Useful Commands

Open docker of python

docker exec -it eco-neo-python-first-multisig-transfer-running bash

screen -ls

open csharpnodes

docker exec -it eco-neo-csharp-nodes-running bash screen -ls will show 4 consensus nodes and 2 pure RPCs nodes.

Contributing

  • If you have ideas or issues, you can inform directly at github or contact us directly

    1. Check the open issues and pull requests for existing discussions.
    2. Open an issue first, to discuss a new feature or enhancement.
    3. Write tests, and make sure the test suite passes locally and on CI.
    4. Open a pull request, and reference the relevant issue(s).
    5. After receiving feedback, squash your commits and add a great commit message.
    6. Run make push-tag after merging your pull request.
    7. Anyway, you already were part of team... :P
  • Our team is currently formed by researchers/professors, so our time is very constrained... if you feel you can help us, don't hesitate!

  • We created a wallet specially for project donations. That can help us improve our servers and perhaps hire someone for improving graphical interfaces and developing many more interesting features. NEO wallet: AJX1jGfj3qPBbpAKjY527nPbnrnvSx9nCg

LICENSE MIT

This project is part of NeoResearch initiative and it is freely available at NeoCompiler.io. The website is rebooted periodically, in order to keep resource usage low, so that everyone is welcome to use it.

NeoCompiler Eco team @igormcoelho, @vncoelho and @FabioRick

Copyleft 2017-2018