Skip to content
Snippets Groups Projects
Select Git revision
  • master default
  • feature/spring-5.3
  • duniter4j-1.6.1
  • duniter4j-1.6.0
  • duniter4j-1.5.10
  • duniter4j-1.5.9
  • duniter4j-1.5.8
  • duniter4j-1.5.7
  • duniter4j-1.5.6
  • duniter4j-1.5.5
  • duniter4j-1.5.4
  • duniter4j-1.5.3
  • duniter4j-1.5.2
  • duniter4j-1.5.1
  • duniter4j-1.5.0
  • duniter4j-1.4.1
  • duniter4j-1.4.0
  • duniter4j-1.3.7
  • duniter4j-1.3.6
  • duniter4j-1.3.5
  • duniter4j-1.3.4
  • duniter4j-1.3.3
22 results

duniter4j

  • Clone with SSH
  • Clone with HTTPS
  • Forked from clients / Cesium-grp / cesium-plus-pod
    663 commits behind the upstream repository.

    duniter4j

    duniter4j is a Java Client API for Duniter.

    Architecture

    duniter4j has four main components :

    • shared: common classes

    • core-client: a Client API to access to a Duniter network.

    • elasticsearch: a ES plugin, to store blockchain, registry, market and more.

    Install as ES plugin

    Install Java

    sudo apt-get install openjdk-8-jre 
    • Install libsodium (Linux only)

      • Linux: See installation. After installation, make sure the file 'libsodium.so' exists on: /usr/local/lib or /opt/local/lib. If not, create a symbolic link.

      No installation need for Windows (include in binaries)

    Install ElasticSearch 2.3.3

    Download lastest release of ElasticSearch

    Install ElasticSearch plugins

    /bin/plugin install mapper-attachments

    /bin/plugin install https://github.com/duniter/duniter4j/releases/download/0.2.0/duniter4j-elasticsearch-0.2.0.zip

    Install from standalone bundle

    • Installa Java (see on top)

    • Download lastest release of file duniter4j-elasticsearch-X.Y-standalone.zip

    • Unzip, then start a elasticsearch node, just do :

    unzip duniter4j-elasticsearch-X.Y-standalone.zip
    cd duniter4j-elasticsearch-X.Y
    ./duniter4j-elasticsearch.sh start index -h <node_host> -p <node_port>

    Example on test_net test currency :

    $ ./duniter4j-elasticsearch.sh start index -h  cgeek.fr -p 9330
    2016-01-07 23:34:34,771  INFO Starting duniter4j :: ElasticSearch Indexer with arguments [start, index, -h, metab.ucoin.io, -p, 9201]
    2016-01-07 23:34:34,856  INFO Application basedir: /home/user/.duniter4j-elasticsearch
    2016-01-07 23:34:34,861  INFO Starts i18n with locale [fr] at [/home/user/.duniter4j-elasticsearch/data/i18n]
    2016-01-07 23:34:35,683  INFO Starts ElasticSearch node with cluster name [duniter4j-elasticsearch] at [/home/user/.duniter4j-elasticsearch/data].
    *** duniter4j :: Elasticsearch successfully started *** >> To quit, press [Q] or enter
    2016-01-07 23:34:45,015  INFO Indexing last blocks of [test_net] from peer [cgeek.fr:9330]
    2016-01-07 23:35:01,597  INFO Indexing block #999 / 47144 (2%)...
    2016-01-07 23:35:15,554  INFO Indexing block #1998 / 47144 (4%)...
    2016-01-07 23:35:30,713  INFO Indexing block #2997 / 47144 (6%)...
    2016-01-07 23:35:45,747  INFO Indexing block #3996 / 47144 (8%)...
    ...
    2016-01-07 23:45:00,175  INFO All blocks indexed 

    Show help :

    $ ./duniter4j-elasticsearch.sh --help
    
    Usage: duniter4j-elaticsearch.<sh|bat> <commands> [options]
    
    Commands:
    
     start                            Start elastic search node
     index                            Index blocks from BMA Node
     reset-data                       Reset indexed data for the uCoin node's currency
    
    
    Options:
    
     --help                           Output usage information
     -h --host <user>                          uCoin node host (with Basic Merkled API)
     -p --port <pwd>                           uCoin node port (with Basic Merkled API)
    
     -esh  --es-host <user>           ElasticSearch node host
     -esp  --es-port <pwd>            ElasticSearch node port
    

    Use API (Developer)

    When a blockchain currency has been indexed, you can test some fun queries :

    curl -XGET 'http://localhost:9200/test_net/block/_search' -d '{
    "query": {
            "filtered" : {
                "filter": {
                    "exists" : { "field" : "dividend" }
                }
            }
        },
        "_source": ["number", "dividend", "hash", "membersCount"]
     }'
    • Get blocks from 0 to 100
    curl -XGET 'http://localhost:9200/test_net/block/_search' -d '{
        "query": {
            "filtered" : {
                "filter": {
                    "exists" : { "field" : "dividend" }
                }
            }
        }
    }'

    More documentation here :

    Compile from source

    Install required dependencies:

    • Install Java JDK (8 or more)

    • Install libsodium

      • Linux: after installation, make sure the file 'libsodium.so' exists on: /usr/local/lib or /opt/local/lib. If not, create a symbolic link.

      • Windows: copy the file 'sodium.dll' into directory 'duniter4j-core/lib/'

    • Install Maven 3.

        sudo apt-get install maven
    • Get the source code, then compile using Maven:
    	git clone https://github.com/duniter/duniter4j.git
    	cd duniter4j
    	git submodule init
    	git submodule sync
    	git submodule update
    	
        mvn install -DskipTests

    To package binaries :

    $ mvn install -DskipTests -DperformRelease

    Roadmap

    • Allow to store data in embedded database (SQLLite or HsqlDB)

    • Add an embedded Cesium inside the ElasticSearch plugin

    • Detect blockchain rollback