• Stars
    star
    2,140
  • Rank 19,587 (Top 0.5 %)
  • Language
    Java
  • License
    GNU Lesser Genera...
  • Created over 9 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

DEPRECATED! Java implementation of the Ethereum yellowpaper. For JSON-RPC and other client features check Ethereum Harmony

Welcome to ethereumj

Gitter Build Status Coverage Status

⛔ Deprecated ⛔

This project is not supported anymore. If you have any question or would like to contribute find us on Gitter.

About

EthereumJ is a pure-Java implementation of the Ethereum protocol. For high-level information about Ethereum and its goals, visit ethereum.org. The ethereum white paper provides a complete conceptual overview, and the yellow paper provides a formal definition of the protocol.

We keep EthereumJ as thin as possible. For JSON-RPC support and other client features check Ethereum Harmony.

Running EthereumJ

Adding as a dependency to your Maven project:
   <dependency>
     <groupId>org.ethereum</groupId>
     <artifactId>ethereumj-core</artifactId>
     <version>1.12.0-RELEASE</version>
   </dependency>
or your Gradle project:
   repositories {
       mavenCentral()
       jcenter()
       maven { url "https://dl.bintray.com/ethereum/maven/" }
   }
   implementation "org.ethereum:ethereumj-core:1.9.+"

As a starting point for your own project take a look at https://github.com/ether-camp/ethereumj.starter

Building an executable JAR
git clone https://github.com/ethereum/ethereumj
cd ethereumj
cp ethereumj-core/src/main/resources/ethereumj.conf ethereumj-core/src/main/resources/user.conf
vim ethereumj-core/src/main/resources/user.conf # adjust user.conf to your needs
./gradlew clean fatJar
java -jar ethereumj-core/build/libs/ethereumj-core-*-all.jar
Running from command line:
> git clone https://github.com/ethereum/ethereumj
> cd ethereumj
> ./gradlew run [-PmainClass=<sample class>]
Optional samples to try:
./gradlew run -PmainClass=org.ethereum.samples.BasicSample
./gradlew run -PmainClass=org.ethereum.samples.FollowAccount
./gradlew run -PmainClass=org.ethereum.samples.PendingStateSample
./gradlew run -PmainClass=org.ethereum.samples.PriceFeedSample
./gradlew run -PmainClass=org.ethereum.samples.PrivateMinerSample
./gradlew run -PmainClass=org.ethereum.samples.TestNetSample
./gradlew run -PmainClass=org.ethereum.samples.TransactionBomb
For snapshot builds:

Please, note, snapshots are not stable and are currently in development! If you still want to try it:

  • Add https://oss.jfrog.org/libs-snapshot/ as a repository to your build script
  • Add a dependency on org.ethereum:ethereumj-core:${VERSION}, where ${VERSION} is of the form 1.13.0-SNAPSHOT.

Example:

<repository>
    <id>jfrog-snapshots</id>
    <name>oss.jfrog.org</name>
    <url>https://oss.jfrog.org/libs-snapshot/</url>
    <snapshots><enabled>true</enabled></snapshots>
</repository>
<!-- ... -->
<dependency>
   <groupId>org.ethereum</groupId>
   <artifactId>ethereumj-core</artifactId>
   <version>1.13.0-SNAPSHOT</version>
</dependency>
Importing project to IntelliJ IDEA:
> git clone https://github.com/ethereum/ethereumj
> cd ethereumj
> gradlew build

IDEA:

  • File -> New -> Project from existing sources…
  • Select ethereumj/build.gradle
  • Dialog “Import Project from gradle”: press “OK”
  • After building run either org.ethereum.Start, one of org.ethereum.samples.* or create your own main.

Configuring EthereumJ

For reference on all existing options, their description and defaults you may refer to the default config ethereumj.conf (you may find it in either the library jar or in the source tree ethereum-core/src/main/resources) To override needed options you may use one of the following ways:

  • put your options to the <working dir>/config/ethereumj.conf file
  • put user.conf to the root of your classpath (as a resource)
  • put your options to any file and supply it via -Dethereumj.conf.file=<your config>, accepts several configs, separated by comma applied in provided order: -Dethereumj.conf.file=<config1>,<config2>
  • programmatically by using SystemProperties.CONFIG.override*()
  • programmatically using by overriding Spring SystemProperties bean

Note that don’t need to put all the options to your custom config, just those you want to override.

Special thanks

YourKit for providing us with their nice profiler absolutely for free.

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.

YourKit Logo

Contact

Chat with us via Gitter

License

ethereumj is released under the LGPL-V3 license.

More Repositories

1

go-ethereum

Official Go implementation of the Ethereum protocol
Go
43,691
star
2

solidity

Solidity, the Smart Contract Programming Language
C++
21,303
star
3

wiki

The Ethereum Wiki
14,759
star
4

EIPs

The Ethereum Improvement Proposal repository
Python
12,136
star
5

mist

[DEPRECATED] Mist. Browse and use Ðapps on the Ethereum network.
JavaScript
7,419
star
6

web3.py

A python interface for interacting with the Ethereum blockchain and ecosystem.
Python
4,424
star
7

ethereum-org-website

Ethereum.org is a primary online resource for the Ethereum community.
Markdown
4,230
star
8

aleth

Aleth – Ethereum C++ client, tools and libraries
C++
3,950
star
9

consensus-specs

Ethereum Proof-of-Stake Consensus Specifications
Python
3,280
star
10

pyethereum

Next generation cryptocurrency network
2,667
star
11

remix-ide

Documentation for Remix IDE
2,196
star
12

remix-project

Remix is a browser-based compiler and IDE that enables users to build Ethereum contracts with Solidity language and to debug transactions.
TypeScript
2,126
star
13

py-evm

A Python implementation of the Ethereum Virtual Machine
Python
2,108
star
14

research

Python
1,682
star
15

yellowpaper

The "Yellow Paper": Ethereum's formal specification
TeX
1,564
star
16

fe

Emerging smart contract language for the Ethereum blockchain.
Rust
1,509
star
17

solc-js

Javascript bindings for the Solidity compiler
TypeScript
1,362
star
18

pm

Project Management: Meeting notes and agenda items
Python
1,325
star
19

remix

This has been moved to https://github.com/ethereum/remix-project
JavaScript
1,167
star
20

dapp-bin

A place for all the ÐApps to live
JavaScript
1,005
star
21

remix-desktop

Remix IDE desktop
JavaScript
917
star
22

devp2p

Ethereum peer-to-peer networking specifications
JavaScript
885
star
23

execution-apis

Collection of APIs provided by Ethereum execution layer clients
Io
802
star
24

evmone

Fast Ethereum Virtual Machine implementation
C++
706
star
25

execution-specs

Specification for the Execution Layer. Tracking network upgrades.
Python
697
star
26

kzg-ceremony

Resources and documentation related to the ongoing Ethereum KZG Ceremony.
696
star
27

casper

Casper contract, and related software and tests
Python
685
star
28

sourcify

Decentralized Solidity contract source code verification service
TypeScript
655
star
29

js-ethereum-cryptography

Every cryptographic primitive needed to work on Ethereum, for the browser and Node.js
TypeScript
605
star
30

meteor-dapp-wallet

This is an archived repository of one of the early Ethereum wallets.
JavaScript
598
star
31

btcrelay

Ethereum contract for Bitcoin SPV: Live on https://etherscan.io/address/0x41f274c0023f83391de4e0733c609df5a124c3d4
Python
581
star
32

solidity-examples

Loose collection of Solidity example code
Solidity
525
star
33

webthree-umbrella

Former home of cpp-ethereum (Oct 2015 to Aug 2016)
492
star
34

tests

Common tests for all Ethereum implementations
Python
481
star
35

sharding

Sharding manager contract, and related software and tests
Python
477
star
36

trinity

The Trinity client for the Ethereum network
Python
475
star
37

homebrew-ethereum

Homebrew Tap for Ethereum
Ruby
464
star
38

staking-deposit-cli

Secure key generation for deposits
Python
452
star
39

ethereum-org

[ARCHIVED] ethereum.org website from 2016-2019. See https://github.com/ethereum/ethereum-org-website for current version.
HTML
395
star
40

lahja

Lahja is a generic multi process event bus implementation written in Python 3.6+ to enable lightweight inter-process communication, based on non-blocking asyncio
Python
385
star
41

solc-bin

This repository contains current and historical builds of the Solidity Compiler.
JavaScript
368
star
42

serpent

C++
360
star
43

evmlab

Utilities for interacting with the Ethereum virtual machine
Python
338
star
44

eth-tester

Tool suite for testing ethereum applications.
Python
325
star
45

populus

The Ethereum development framework with the most cute animal pictures
316
star
46

hive

Ethereum end-to-end test harness
Go
312
star
47

evmc

EVMC – Ethereum Client-VM Connector API
C
301
star
48

eth-utils

Utility functions for working with ethereum related codebases.
Python
293
star
49

homestead-guide

Python
292
star
50

annotated-spec

Vitalik's annotated eth2 spec. Not intended to be "the" annotated spec; other documents like Ben Edgington's https://benjaminion.xyz/eth2-annotated-spec/ also exist. This one is intended to focus more on design rationale.
287
star
51

beacon-APIs

Collection of RESTful APIs provided by Ethereum Beacon nodes
HTML
282
star
52

trin

An Ethereum portal client: a json-rpc server with nearly instant sync, and low CPU & storage usage
Rust
281
star
53

eth2.0-pm

ETH2.0 project management
Python
262
star
54

ropsten

Ropsten public testnet PoW chain
Jupyter Notebook
247
star
55

staking-launchpad

The deposit launchpad for staking on Ethereum 🦏
TypeScript
243
star
56

eth-account

Account abstraction library for web3.py
Python
232
star
57

cbc-casper

Python
226
star
58

portal-network-specs

Official repository for specifications for the Portal Network
JavaScript
220
star
59

remix-live

Live deployment of the remix IDE
JavaScript
219
star
60

eth-abi

Ethereum ABI utilities for python
Python
214
star
61

beacon_chain

Python
205
star
62

act

Smart contract specification language
Haskell
202
star
63

emacs-solidity

The official solidity-mode for EMACS
Emacs Lisp
201
star
64

moon-lang

Minimal code-interchange format
MoonScript
189
star
65

ethash

C
180
star
66

remixd

remix server
TypeScript
180
star
67

browser-solidity

Fomer location of remix-ide => https://github.com/ethereum/remix-ide
JavaScript
178
star
68

hevm

symbolic EVM evaluator
Haskell
177
star
69

py-solc

Python wrapper around the solc Solidity compiler.
Python
174
star
70

grid

[DEPRECATED] Download, configure, and run Ethereum nodes and tools
JavaScript
173
star
71

mix

The Mix Ethereum Dapp Development Tool
JavaScript
164
star
72

py_ecc

Python implementation of ECC pairing and bn_128 and bls12_381 curve operations
Python
164
star
73

pos-evolution

Evolution of the Ethereum Proof-of-Stake Consensus Protocol
161
star
74

go-verkle

A go implementation of Verkle trees
Go
161
star
75

evmjit

The Ethereum EVM JIT
C++
161
star
76

meteor-dapp-whisper-chat-client

JavaScript
149
star
77

eth-keys

A common API for Ethereum key operations.
Python
148
star
78

builder-specs

Specification for the external block builders.
HTML
148
star
79

solidity-underhanded-contest

Website for the Underhanded Solidity Contest
Solidity
142
star
80

remix-plugin

TypeScript
141
star
81

economic-modeling

Python
117
star
82

rig

Robust Incentives Group
HTML
113
star
83

public-disclosures

111
star
84

snake-charmers-tactical-manual

Development *stuff* for the Snake Charmers EF team
107
star
85

kzg-ceremony-specs

Specs for Ethereum's KZG Powers of Tau Ceremony
101
star
86

py-trie

Python library which implements the Ethereum Trie structure.
Python
99
star
87

pyrlp

The python RLP serialization library
Python
96
star
88

swarm-dapps

Swarm Đapp Examples
JavaScript
96
star
89

py-wasm

A python implementation of the web assembly interpreter
Python
95
star
90

py-geth

Python wrapping for running Go-Ethereum as a subprocess
Python
95
star
91

dapp-styles

HTML
93
star
92

retesteth

testeth via RPC. Test run, generation by t8ntool protocol
C++
93
star
93

eth-hash

The Ethereum hashing function, keccak256, sometimes (erroneously) called sha256 or sha3
Python
93
star
94

ens-registrar-dapp

Registrar DApp for the Ethereum Name Service
JavaScript
92
star
95

remix-vscode

Remix VS Code extension
TypeScript
87
star
96

pyethsaletool

Python
85
star
97

py_pairing

Elliptic curve operations, including pairings
Python
83
star
98

remix-workshops

Solidity
81
star
99

kzg-ceremony-sequencer

Rust
80
star
100

moon-browser

Moon-Browser was a browser for decentralized applications in 2016
JavaScript
79
star