+ Design special type repository that acts according the
rules of VMTesting means save any account been approached
even if didn't change.
+ Automatically fetch and run all tests in github
tree {ethereum_git_tests_repo}/VMTests/RandomTests
+ Fix all tests in VMTests/vmEnvironmentalInfoTest
[Delivers #88044620] [Delivers #87875292]
The library now can be initialized with just in memory
block saving with eviction policy of keep only last 1000 blocks,
that kind of block store is useful in on server usage of library.
In order to change the configuration for on server usage
use: `ethereum = EthereumFactory.createEthereum(RemoteConfig.class);`
The sources affected by this commit have drifted in style since earlier
polishing commits such as f34d1f4 and a155518. The shared IDEA style
configuration file can help avoid this drift in the future. Simply run
Code->Reformat Code at the project level prior to committing. Note that
this code style configuration is not perfect, and not every change it
makes should be checked in. The ideal is to simply always write code that
conforms to the style conventions, but the automated settings are there
as a helping hand when necessary.
The churn caused by drifting style and the commits that fix it damage the
utility of git over time. Reviewing changes, analyzing history, surgically
reverting commits, and many other use cases with git simply do not work as
well when styles get mixed and fixed. Let's work toward a common style.
The affected sources have drifted from import organization conventions
since the shared IDEA configuration was added in commit a155518. There
are several ways to avoid this in the future:
1. Run Code->Optimize Imports manually prior to making any commit (or
use the shortcut key).
2. Select 'Optimize Imports on the Fly' from
Preferences->Editor->General->Auto Import.
If IDEA is not being used, simply follow convention.
Trailing whitespace has crept into the sources affected by this commit
since the original stripping in commit e5fcf5b. Editors and IDEs should
be configured to strip trailing whitespace on save, or in any case
trailing whitespace should be manually stripped prior to commit/push.
Fix syntax for @author and @since tags, for the same reasons detailed in
commits 7d2cf7f and c38907b, respectively.
Recommendations:
- Disable automatic Javadoc templates completely within IDEA.
- Add Javadoc by hand when new classes are created.
- Follow the proper conventions for `@author` and `@since` tags.
- Do not add @since tags in src/test classes. Javadoc for these types
will never be generated or published, and developers can query
creation date metadata (more accurately) from git for these classes.
Note that in the future--particularly once ethereumj has its own
independent versioning--it will be desirable to use `@since` tags with
version values (for semantic versioning clarity, backward compatibility
analysis and communication, etc). Until then, the `@since DD.MM.YY`
approach will suffice.
In order to improve performance of certain VM functionality
Ethereum introduce plug-in mechanism called pre-compiled
contracts.
Supported functionality:
ecRecover - (addr: 01) - recover address out of hash, v, r, s - parameters.
sha256 - (addr: 02) - calculate hash value with sha256 algorithm
ripempd160 - (addr:03) - calculate hash value with repimpd algorithm
This is in order to accommodate GitHubStateTest#stSystemOperationsTest,
which tests Ethereum's rules around maximum call stack depth, and thus
requires increasing Java's own defaults.
If this option is not set, this test results in a
StackOverflowException. Note that the setting is applied to Gradle's
`test` closure as opposed to a the global `JAVA_OPTS` environment
variable, because Gradle spawns a new process for executing tests.
There is a known issue with Gradle's new `maven-publish` plugin that
causes all dependencies in the published pom to runtime-scoped [1]. This
causes conflicts with our use of Spring's `propdeps` Gradle plugin that
introduces optional and provided scopes.
This commit drops down to using Gradle's older, orginal `maven` plugin,
and JFrog's old-style `artifactory-publish` plugin in order to preserve
propdeps support.
This means removing JFrog's `bintray` plugin, as it appears to depend on
the `maven-publish` plugin. For the moment, ethereumj only really needs
to publish snapshots, and this is still supported. This is a stopgap
measure; it will be necessary to deal with getting uploads to
Bintray/JCenter working again once we're ready for a non-snapshot
release, but this can be dealt with later.
[1]: http://forums.gradle.org/gradle/topics/maven_publish_plugin_generated_pom_making_dependency_scope_runtime
- Organize imports using shared IDEA configuration
- Format sources, including:
- Normalize 4-space indentation
- Wrap at 120 char right margin
- Remove spaces around method arguments
Use Spring's `propdeps` plugin to introduce optional/provided scopes for
gradle dependencies. Mark libraries such as slf4j-log4j12 as optional.
These libraries are required to run a local ethereumj node, but they are
not required in order to compile against ethereumj in a downstream
appliaction. These libraries easily can cause conflicts, for example if
another slf4j-* library (such as slf4j-logback) is on the classpath.
Prior to this commit, jacoco coverage report XML files were not actually
being written to disk, meaning that the Gradle coveralls plugin had
nothing to publish to https://coveralls.io/r/ethereum/ethereumj. HTML
reports are now being written as well, for convenient local browsing.
The Travis CI build now publishes ethereumj-core artifacts (classes,
sources and javadoc jars) on every push to master. See updated
ethereumj-core/README.md for details. Note that the `gradle release`
task has been renamed to `gradle publish`.
This partially reverts commit c95f5ea, restoring use of Java 8 language
features and APIs to ethereumj-studio, while leaving etherumj-core
pinned to the Java 7 language level for Dalvik compatibility reasons.
For further details, see the prior commit and
https://github.com/ethereum/ethereumj/commit/c95f5ea#commitcomment-9119435.
As part of pull request #179, commits 0d922e1, 003249c and d099100
introduced use of Java 8 language features and APIs. Commit c95f5ea
manually reverted these changes (see #184 as to why), but in the process
re-introduced formatting issues originally cleaned up by other commits
in #179. This change fixes those formatting issues.
- Replace leading tabs with spaces (for reasons detailed in 0827fb5)
- Add space before opening curly brace
- Optimize imports using shared .idea/codeStyleSettings.xml (note
especially expansion of wildcard imports. See rationale in 780393d)
- Do not align assignments on equals sign
- Remove unnecessary additional newlines
- Remove braces from single-line loops and conditionals
A recent revision of the Ethereum white paper removes the denominations
labeled 'lovelace', 'babbage' and 'shannon' [1]. This commit reflects
the change to the whitepaper by removing the corresponding labels from
the Denomination enum (as an aside, note the discrepancy between
'lovelace' in the whitepaper and 'ada' in our implementation).
go-ethereum still contains these values, but cpp-ethereum does
not. This commit assumes that the whitepaper and cpp implementation
represent the current consensus on explicitly named denominations.
By the same rationale, the 'douglas' and 'einstein' labels have been
removed as well. These values never appeared in the whitepaper or cpp
implementations. They were introduced to the go implementation in
ethereum/go-ethereum@e7d9bcd, but because the whitepaper and cpp
implementation are silent on these values, they are omitted here.
[1]: http://git.io/xJJf7g
- Replace leading tabs with spaces
- Add space before opening curly brace
- Optimize imports using shared .idea/codeStyleSettings.xml
- Do not align assignments on equals sign
- Remove unnecessary extra newlines
Running `gradle build` within ethereumj-core will now produce -sources
and -javadoc jars in `build/libs`, alongside the already existing
classes jar. Run `gradle install` to install these artifacts to the
local `~/.m2` repository.
This change ensures that all Javadoc syntax, reference, html errors, etc
are reported at the commandline during the gradle build, but warnings
for missing Javadoc elements (e.g. no @return tag, @param tags, etc) are
suppressed. `man javadoc` for details.