We will change the world by blockchain.
YGGDRASH is a trust-based multi-dimensional blockchains (branches) built with a vision to “Digitize everything into reality” and to connect everything and any blockchain networks.
- Documentation
- Development
- APIs
- Using Docker to simplify development (optional)
- Continuous Integration and Continuous Delivery (optional)
- Stay in Touch
Learn more by reading the yggdrash technical document and full documentation, visit wiki
This is the implementation written in Java and runs on Linux, OSX and Windows.
Yggdrash requires JAVA
1.8+ compiler to build. To install Java, follow this link.
JDK Version | sourceCompatibility | Build | Run |
---|---|---|---|
12.ea.31-open | 12 | ✅ | ✅ |
11.0.2-zulu | 11 | ✅ | ✅ |
11.0.2-open | 11 | ✅ | ✅ |
10.0.2-open | 10 | ✅ | ✅ |
9.0.4-open | 9 | ✅ | ✅ |
8.0.202-zulu | 1.8 (recommended) | ✅ | ✅ |
8.0.201-oracle | 1.8 | ✅ | ✅ |
Clone the yggdrash repo:
git clone https://github.com/yggdrash/yggdrash.git
cd yggdrash
If you are unfamiliar with Git, Download ZIP (source code)
To run the cloned repository in the spring default profile, simply run:
./gradlew
To run the multiple nodes in IntelliJ IDE, edit the run configuration:
You can fully dockerize the yggdrash node. For more information refer to docker.
Docker is one quick way for running an yggdrash node:
docker run --rm -e SPRING_PROFILES_ACTIVE=local,master,gateway -p 8080:8080 -v $HOME/.yggdrash:/.yggdrash yggdrash/yggdrash-node
Yggdrash node binds to localhost
using 8080
for the RESTful API & JSON RPC, and 32918
for the gRPC by default.
You can also use other ports by providing options like -p 8081:8080
The Dockerfile is designed to build automatically the last release of the source code and will publish docker images to dockerhub by release, feel free to fork and build Dockerfile for your own purpose.
To optimize the yggdrash application for production, run:
./gradlew -PspringProfiles=prod clean build
To ensure everything worked, run:
yggdrash-node/build/libs/*.jar
To find out usages of all command line options:
--spring.profiles.active=value
Environment property to specify which profiles are active- env: local(default), dev(for test), prod(docker default), debug(for debug logging)
- role: bootstrap(node discovery bootstrap node), master(block proposer for test), gateway(restful api)
--server.address=value
JSON RPC & RESTful API services listening address (default: localhost)--server.port=value
JSON RPC & RESTful API services listening port (default: 8080)--yggdrash.node.grpc.host=value
gRPC service listening address (default: localhost)--yggdrash.node.grpc.port=value
gRPC service listening port (default: 32918)--yggdrash.node.max-peers=value
maximum number of P2P network peers (default: 25)
To launch yggdrash's tests, run:
./gradlew test
This command would run the integration tests without gradle task caching:
./gradlew test -PspringProfiles=ci --rerun-tasks
Once yggdrash node started, the blocks can be shown in your browser. e.g. http://localhost:8080/blocks
- refer to more JSON RPC API
You can use docker to improve yggdrash development experience. A number of docker-compose configuration are available in the docker folder to launch with third party services.
For example, to start the multiple nodes in a docker container, run:
docker-compose -f docker/docker-compose.yml up -d
To stop it and remove the container, run:
docker-compose -f docker/docker-compose.yml down
Yggdrash should support the following CI systems out of the box:
- Jenkins: Setting up Jenkins
- Just use the docker/jenkins.yml file. So you can test Jenkins locally by running:
docker-compose -f docker/jenkins.yml up -d
- Travis: refer to the Travis Documentation
* Project name: `Yggdrash`
* Source Code Management
* Git Repository: `git@github.com:yggdrash/yggdrash.git`
* Branches to build: `*/master`
* Additional Behaviours: `Wipe out repository & force clone`
* Build Triggers
* Poll SCM / Schedule: `H/5 * * * *`
* Build
* Invoke Gradle script / Use Gradle Wrapper / Tasks: `-PspringProfiles=prod clean build`
* Execute Shell / Command:
````
./gradlew bootRun &
bootPid=$!
sleep 30s
kill $bootPid
````
* Post-build Actions
* Publish JUnit test result report / Test Report XMLs: `build/test-results/*.xml`
What tasks/integrations in the Jenkins pipeline file :
- Perform the build in a Docker container
- Analyze code with Sonar
- Build and publish a Docker image
Follow @yggdrash, @YggdrashNews and releases are announced via our Yggdrash Official on SNS also. Its team members on Yggdrash Website
The Yggdrash is released under version 2.0 of the Apache License.