craig-openlaw / eth-propeller-core

Core library for Ethereum propeller

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Ethereum Propeller

CircleCI Codacy Badge Codacy Badge

Ethereum Framework for JVM developers

Introduction

The name Ethereum Propeller comes from the idea that this framework should give your project the push it needs to reach success.

The goal of this project is to give JVM developers the tools to build applications on top of Ethereum.

The main concepts behind Ethereum propeller are:

  • Ethereum abstraction & easy integration. It should feel natural to work with ethereum and especially to work with smart contracts. The code should never be written for a particular backend, it should work regardless of your application working with RPC or an embedded client.
  • Ethereum testing. Testing is crucial for smart contracts. Any bug can be fatal and that's why writing tests should be easy
  • Type safety. Types are here to help developers write better code and can be used to sanitize inputs and document interfaces.

This is the core library for Ethereum Propeller. You still need to decide which backend you want to use. There are two possibilities right now:

  • If you want to use Ethereumj with a embedded full node, go to eth-propeller-ethj
  • If you want to use web3j to connect to a remote RPC API, go to eth-propeller-core

Getting started

Add the dependency

<dependency>
    <groupId>org.adridadou</groupId>
    <artifactId>eth-propeller-{ethj or core}</artifactId>
    <version>{latest version}</version>
</dependency>

Simply add the backend you want to use as a dependency. Right you, have the choice between ethereumj (ethj) and web3j

Create an EthereumFacade

Each backend has its own EthereumFacadeProvider

  • RpcEthereumFacadeProvider for web3j
  • EthjEthereumFacadeProvider for ethereumj

Quick introduction to EthereumFacade

EthereumFacade is your interface to Ethereum. This is how you interact with it:

  • Compile & deploy a smart contract
  • Send ether
  • Listen to Ethereum events (new block, new transactions)
  • Listen to Smart contract events
  • Interface with a smart contract

Testing

To run the project tests, install maven and then run mvn clean test.

In order to run unit tests on a mocked Ethereum network, please use eth-propeller-ethj and create a test

Note: Ethereumj's license is LPGL3. So make sure that your license is compatible with LPGL3 if you want to use ethereumJ for something else than testing

About

Core library for Ethereum propeller

License:Apache License 2.0


Languages

Language:Java 76.3%Language:Scala 15.9%Language:Solidity 7.8%