Git Product home page Git Product logo

eos-java-rpc-wrapper's Introduction

EOS Java API Wrapper

Note: This library is not actively updated. Some adjustments may be required to work with the latest version of EOSIO.

A Java implementation of the EOS RPC Calls. Under the MIT Licence.

Created by eos42.

The api documentation can be found in the official eos developers portal: https://developers.eos.io/eosio-nodeos/reference

All but the following queries are supported:

  1. CHAIN
  • get_header_block_state
  • get_producers
  • push_block
  1. WALLET
  • set_dir
  • set_eosio_key
  1. NET
  • connect
  • disconnect
  • connections
  • status
  1. PRODUCER
  • pause
  • resume
  • paused

Requirements

  • Java 8
  • Maven

Installation

Install using maven build tool. The artifact will need to be published locally.

Currently the artifiac is not in the official maven repositories. If you want to use it in a maven build, you can add the following repository

<repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
</repository>

and dependency

<dependency>
    <groupId>com.github.EOSEssentials</groupId>
    <artifactId>eos-java-rpc-wrapper</artifactId>
    <version>master</version>
</dependency>

Configuration

Create a new instance of EosApiClient using the EosApiClientFactory, this will require a baseurl to be passed in.

This will use the same base url for all three api endpoints (history/chain/wallet).

EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance("http://127.0.0.1:8888").newRestClient();

If you want to use separate urls for those endpoints (e.g. you have a local wallet):

EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance(
    walletBaseUrl, chainBaseUrl, historyBaseUrl).newRestClient();

Example Usage

Creating a wallet
eosApiRestClient.createWallet("walletName");

Getting a block

eosApiRestClient.getBlock("blockNumberOrId")

Signing and pushing a transaction

/* Create the rest client */
EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance("http://127.0.0.1:8888").newRestClient();

/* Create the json array of arguments */
Map<String, String> args = new HashMap<>(4);
args.put("from", "currency");
args.put("to", "eosio");
args.put("quantity", "44.0000 CUR");
args.put("memo", "My First Transaction");
AbiJsonToBin data = eosApiRestClient.abiJsonToBin("currency", "transfer", args);```

/* Get the head block */
Block block = eosApiRestClient.getBlock(eosApiRestClient.getChainInfo().getHeadBlockId());

/* Create Transaction Action Authorization */
TransactionAuthorization transactionAuthorization = new TransactionAuthorization();
transactionAuthorization.setActor("currency");
transactionAuthorization.setPermission("active");

/* Create Transaction Action */
TransactionAction transactionAction = new TransactionAction();
transactionAction.setAccount("currency");
transactionAction.setName("transfer");
transactionAction.setData(data.getBinargs());
transactionAction.setAuthorization(Collections.singletonList(transactionAuthorization));

/* Create a transaction */
PackedTransaction packedTransaction = new PackedTransaction();
packedTransaction.setRefBlockPrefix(block.getRefBlockPrefix().toString());
packedTransaction.setRefBlockNum(block.getBlockNum().toString());
packedTransaction.setExpiration("2018-05-10T18:38:19");
packedTransaction.setRegion("0");
packedTransaction.setMax_net_usage_words("0");
packedTransaction.setActions(Collections.singletonList(transactionAction));

/* Sign the Transaction */
SignedPackedTransaction signedPackedTransaction = eosApiRestClient.signTransaction(packedTransaction, Collections.singletonList("EOS7LPJ7YnwYiEHbBLz96fNkt3kf6CDDdesV5EsWoc3u3DJy31V2y"), "chainId");

/* Push the transaction */
PushedTransaction = eosApiRestClient.pushTransaction("none", signedPackedTransaction);

Notes

  • All methods are synchronous and blocking.
  • All methods will throw a catchable EOSApiException.

eos-java-rpc-wrapper's People

Contributors

adyliu avatar artjoma avatar dappstore123 avatar fletch153 avatar spebern avatar zhujk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

eos-java-rpc-wrapper's Issues

Exception in thread “main” client.exception.EosApiException: Not Found: unspecified while creating account

I am using following of Java code while creating account:

Using Java library

eos-java-rpc-wrapper
adyliu/jeos

Using

Jungle2 testnet

Chain Id of jungle2 testnet:
038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca

The Following java code

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import client.EosApiClientFactory;
import client.EosApiRestClient;
import client.domain.common.transaction.PackedTransaction;
import client.domain.common.transaction.SignedPackedTransaction;
import client.domain.common.transaction.TransactionAction;
import client.domain.common.transaction.TransactionAuthorization;
import client.domain.response.chain.AbiJsonToBin;
import client.domain.response.chain.Block;
import client.domain.response.chain.transaction.PushedTransaction;


public class CreateAccount {
    public static void main(String[] args) {


        EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance("http://jungle2.cryptolions.io:8888").newRestClient();

        /* Create the json array of arguments */
        Map<String, String> args1 = new HashMap<>(4);
        args1.put("from", "abontester12"); // SENDER (MY PRE-GENERATED EOS ACCOUNT)
        args1.put("to", "eosio"); // RECEIVER
        args1.put("quantity", "0.1000 EOS"); // AMOUNT
        args1.put("memo", "My First Transaction"); // JUST MEMO
        AbiJsonToBin data = eosApiRestClient.abiJsonToBin("eosio.token", "transfer", args1);

        System.out.println("data::"+ data.getBinargs());

        Block block = eosApiRestClient.getBlock(eosApiRestClient.getChainInfo().getHeadBlockId());

        System.out.println("block::"+ block.getId());

        /* Create Transaction Action Authorization */
        TransactionAuthorization transactionAuthorization = new TransactionAuthorization();
        transactionAuthorization.setActor("abontester12");
        transactionAuthorization.setPermission("active");

        /* Create Transaction Action */
        TransactionAction transactionAction = new TransactionAction();
        transactionAction.setAccount("abontester12");
        transactionAction.setName("transfer");
        transactionAction.setData(data.getBinargs());
        transactionAction.setAuthorization(Collections.singletonList(transactionAuthorization));

        /* Create a transaction */
        PackedTransaction packedTransaction = new PackedTransaction();
        packedTransaction.setRefBlockPrefix(block.getRefBlockPrefix().toString());
        packedTransaction.setRefBlockNum(block.getBlockNum().toString());
        packedTransaction.setExpiration("2019-04-30T14:53:59.000");
        packedTransaction.setRegion("0");
        packedTransaction.setMax_net_usage_words("0");
        packedTransaction.setContextFreeData(Collections.emptyList());
        packedTransaction.setContextFreeActions(Collections.emptyList());
        packedTransaction.setActions(Collections.singletonList(transactionAction));

        SignedPackedTransaction signedPackedTransaction = eosApiRestClient.signTransaction(packedTransaction, Collections.singletonList("EOS6t8Piaew17krZSMM3aZJt6XMawH9HuvDZPABw7kooJRTiUeijD"),"038f4b0fc8ff18a4f0842a8f0564611f6e96e8535901dd45e43ac8691a1c4dca");

        /* Push the transaction */
       // PushedTransaction = eosApiRestClient.pushTransaction("none", signedPackedTransaction);

        PushedTransaction pushedTransaction = eosApiRestClient.pushTransaction("none", signedPackedTransaction);
        System.out.println("pushedTransaction=" + pushedTransaction.getTransactionId());


    }
}

It gives the following Exception:

INFO: {"code":404,"message":"Not Found","error":{"code":0,"name":"exception","what":"unspecified","details":[{"message":"Unknown Endpoint","file":"http_plugin.cpp","line_number":328,"method":"handle_http_request"}]}}
Apr 24, 2019 3:53:08 PM okhttp3.internal.platform.Platform log
INFO: <-- END HTTP (210-byte body)
Exception in thread "main" client.exception.EosApiException: Not Found: unspecified
    at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:55)
    at client.impl.EosApiRestClientImpl.signTransaction(EosApiRestClientImpl.java:197)
    at com.apiservice.controller.CreateAccount.main(CreateAccount.java:61)

pom.xml is:

<dependency>
    <groupId>io.jafka</groupId>
    <artifactId>jeos</artifactId>
    <version>0.9.15</version>
</dependency>

<dependency>
    <groupId>com.github.EOSEssentials</groupId>
    <artifactId>eos-java-rpc-wrapper</artifactId>
    <version>master-SNAPSHOT</version>
</dependency>

even tried with chain id jungle2 testnet

chain id : e70aaab8997e1dfce58fbfac80cbbb8fecec7b99cf982a9444273cbc64c41473

Sign transaction locally using provided private key.

I think that for this library to be more than a wrapper, it needs to implement native signing (ecc) in Java using openssl or some solution. The current implementation does not allow it and it is much faster to sign locally.

交易记录中actions数据异常

您好,我按照readme中的代码组交易并发送,能够发送成功,但是链上的交易记录里action记录中本来应该是hex_data字段的16进制串,现在是data字段的值,原本data字段中的from,to等信息都没有出现,而且现在接收方的资产没有增加,以下是在jungle testnet中的测试交易记录。请问没有到账和action中的问题有关系吗,还是那里本来就该没有值,谢谢!!

{
"timestamp": "2018-09-12T06:36:58.000",
"producer": "owlinthedark",
"confirmed": 0,
"previous": "00d54666d824dc69ad264029ad082bdc58508a34a30149b3f49bdce2419a8ae8",
"transaction_mroot": "c350646314ee0ceb0985cf03018dcfc906cca9b138acbe947d1796cd8e784674",
"action_mroot": "9301d801ad9aa5d0c586ef179a34a6b409c4ee7e888fdacf2ac79a120eb62135",
"schedule_version": 222,
"new_producers": null,
"header_extensions": [],
"producer_signature": "SIG_K1_K4kf9qVifHNboDB5yAp1Z3qCJ9GhV19AeP6DjyGPQTXN6HMEAu85RbrSyLYCKWcqMjCBpKor6JUpiBHL8tmNR3w6qDet69",
"transactions": [
{
"status": "executed",
"cpu_usage_us": 439,
"net_usage_words": 18,
"trx": {
"id": "a1a790dad2b7f8b98fd64219161051843d18ef4899b35e8cf6c32a094514dcfc",
"signatures": [
"SIG_K1_K1SEDGEEDxKsng3FsrHnqzC3xMoCZu2fMhEDWuyRDxF8oWSdWuVpiF9TTA7SEF8dqvB88BBxTbtZ8dNXDeU21EAJiFBmzz"
],
"compression": "none",
"packed_context_free_data": "",
"context_free_data": [],
"packed_trx": "0cb4985b5e46a02e5194000000000160ea540d4d7d7543000000572d3ccdcd0160ea540d4d7d754300000000a8ed32323060ea540d4d7d754350cd540d4d7d7543102700000000000004454f53000000000f74686973206973206120746573742100",
"transaction": {
"expiration": "2018-09-12T06:37:00",
"ref_block_num": 18014,
"ref_block_prefix": 2488348320,
"max_net_usage_words": 0,
"max_cpu_usage_ms": 0,
"delay_sec": 0,
"context_free_actions": [],
"actions": [
{
"account": "churunchenpa",
"name": "transfer",
"authorization": [
{
"actor": "churunchenpa",
"permission": "active"
}
],
"data": "60ea540d4d7d754350cd540d4d7d7543102700000000000004454f53000000000f746869732069732061207465737421"
}
],
"transaction_extensions": []
}
}
}
],
"block_extensions": [],
"id": "00d546671c10099ba6f740e98e232d84ae9fd3b9af72751b4e9510864121595b",
"block_num": 13977191,
"ref_block_prefix": 3913349030
}

rpc api get_info error

program package client.domain.response.chain.ChainInfo no variable [serverVersionString]

Missing public keys error

Hi
I am trying to run example you have mentioned in your documentation. My Transaction is perfect and have keys in it. I am still getting:

Response{protocol=http/1.1, code=500, message=Internal Server Error, url=http://127.0.0.1:8900/v1/wallet/sign_transaction} Exception in thread "main" io.overledger.client.exception.EosApiException: Internal Service Error: Missing public key

Cannot deserialize instance of `java.lang.String[]` out of START_OBJECT token

When running getBlock() in EOS mainnnet, got exception as below:
(Block Number: 13981050)

client.exception.EosApiException: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.lang.String[] out of START_OBJECT token
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 368] (through reference chain: client.domain.response.chain.Block["new_producers"])
at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:48)
at client.impl.EosApiRestClientImpl.getBlock(EosApiRestClientImpl.java:53)
at com.bithank.eos.Scanner.main(Scanner.java:59)
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.lang.String[] out of START_OBJECT token
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 368] (through reference chain: client.domain.response.chain.Block["new_producers"])
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1138)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1092)
at com.fasterxml.jackson.databind.deser.std.StringArrayDeserializer.handleNonArray(StringArrayDeserializer.java:314)
at com.fasterxml.jackson.databind.deser.std.StringArrayDeserializer.deserialize(StringArrayDeserializer.java:132)
at com.fasterxml.jackson.databind.deser.std.StringArrayDeserializer.deserialize(StringArrayDeserializer.java:21)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1611)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1203)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:32)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23)
at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:122)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:217)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:40)
... 2 more

maven dependence failed

use this:

<dependency>
<groupId>com.github.EOSEssentials</groupId>
<artifactId>eos-java-rpc-wrapper</artifactId>
<version>master-RELEASE</version>
</dependency>

can not find the package

Unrecognized field "server_version_string"

Error is as below:

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "server_version_string"



Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "server_version_string" (class client.domain.response.chain.ChainInfo), not marked as ignorable (12 known properties: "block_cpu_limit", "head_block_producer", "head_block_num", "block_net_limit", "chain_id", "head_block_id", "head_block_time", "virtual_block_net_limit", "last_irreversible_block_id", "last_irreversible_block_num", "virtual_block_cpu_limit", "server_version"])
        at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 582] (through reference chain: client.domain.response.chain.ChainInfo["server_version_string"])
        at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:822)
        at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1152)
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1582)
        at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1560)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
        at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1611)
        at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1203)
        at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:32)
        at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23)
        at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:122)
        at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:217)
        at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
        at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall.execute(ExecutorCallAdapterFactory.java:91)
        at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:40)
        at client.impl.EosApiRestClientImpl.getChainInfo(EosApiRestClientImpl.java:48) 
        at sharkwallet.blockfish.io.sharkwallet.WalletFragment$pushTransaction.doInBackground(WalletFragment.java:259) 
        at sharkwallet.blockfish.io.sharkwallet.WalletFragment$pushTransaction.doInBackground(WalletFragment.java:252) 
        at android.os.AsyncTask$2.call(AsyncTask.java:333) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:245) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 
        at java.lang.Thread.run(Thread.java:764) 

My code:

EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance(burl).newRestClient();

ChainInfo chainInfo = eosApiRestClient.getChainInfo();

Log.v(TAG+"/chain", gson.toJson(chainInfo));

Could anyone help me fix this?
BTW, I used it in android studio.

okhttp error end of stream

Caused by: java.io.EOFException: \n not found: limit=0 content=…
at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:237)
at okhttp3.internal.http1.Http1Codec.readHeaderLine(Http1Codec.java:215)
at okhttp3.internal.http1.Http1Codec.readResponseHeaders(Http1Codec.java:189)

The code:
`
import client.EosApiClientFactory;
import client.EosApiRestClient;
import client.domain.response.chain.AbiJsonToBin;

import java.util.HashMap;
import java.util.Map;

public class Main {

public static void main(String[] args) {

    EosApiRestClient eosApiRestClient;
    eosApiRestClient = EosApiClientFactory.newInstance("http://127.0.0.1:8888").newRestClient();

    //build payload
    Map<String, String> arg = new HashMap(4);
    arg.put("custacct", "consumer");
    arg.put("account", "fimulti");
    arg.put("name", "onboard");

    AbiJsonToBin data = eosApiRestClient.abiJsonToBin("currency", "transfer", arg);

`

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException

Hello,when I use this tool to get chainInfo
ChainInfo chainInfo = eosApiRestClient.getChainInfo();
I have encountered this error
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
Because some nodes will return one more field,just like 'server_version_string'
However, the program does not add this annotation to the entity class
@JsonIgnoreProperties(ignoreUnknown = true)

Creating an account

I am opening another issue for creating an account.

There is an API for creating a wallet, but it doesn't seem like there is an API for creating an account.

Am I right?

This really relates to the previous issue that I posted.

There needs to be some configuration when creating the rest client.

It is something like below when using eosjs

const config = {
    chainId: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906', 
    keyProvider: [ privKey ], // THIS PART
    httpEndpoint: 'https://api.eosnewyork.io:443',
    verbose: false,
    broadcast: true,
    sign: true,
    expireInSeconds: 60
}

get action api error

Exception in thread "main" client.exception.EosApiException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "context_free" (class client.domain.common.ActionTrace), not marked as ignorable (8 known properties: "trx_id", "act", "inline_traces", "console", "receipt", "cpu_usage", "elapsed", "total_cpu_usage"])
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 1381] (through reference chain: client.domain.response.history.action.Actions["actions"]->java.util.ArrayList[0]->client.domain.response.history.action.Action["action_trace"]->client.domain.common.ActionTrace["context_free"])
at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:48)
at client.impl.EosApiRestClientImpl.getActions(EosApiRestClientImpl.java:217)
at io.eos8.server.wrapper.ActionTest.getActions(ActionTest.java:60)
at io.eos8.server.wrapper.ActionTest.main(ActionTest.java:37)
Caused by: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "context_free" (class client.domain.common.ActionTrace), not marked as ignorable (8 known properties: "trx_id", "act", "inline_traces", "console", "receipt", "cpu_usage", "elapsed", "total_cpu_usage"])
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 1381] (through reference chain: client.domain.response.history.action.Actions["actions"]->java.util.ArrayList[0]->client.domain.response.history.action.Action["action_trace"]->client.domain.common.ActionTrace["context_free"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:60)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:822)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:1152)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1589)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1567)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:294)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1611)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1203)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:32)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23)
at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:122)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:217)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:40)
... 3 more

Process finished with exit code 1

Cannot deserialize instance of `long[]` out of START_OBJECT token

When i running get action. and get the exception
```Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of long[] out of START_OBJECT token
at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 6446] (through reference chain: client.domain.response.history.action.Actions["actions"]->java.util.ArrayList[5]->client.domain.response.history.action.Action["action_trace"]->client.domain.common.ActionTrace["account_ram_deltas"]->long[][0])
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)
at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1138)
at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1092)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseLongPrimitive(StdDeserializer.java:320)
at com.fasterxml.jackson.databind.deser.std.PrimitiveArrayDeserializers$LongDeser.deserialize(PrimitiveArrayDeserializers.java:771)
at com.fasterxml.jackson.databind.deser.std.PrimitiveArrayDeserializers$LongDeser.deserialize(PrimitiveArrayDeserializers.java:723)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:286)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:245)
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:27)
at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:127)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:288)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:151)
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1611)
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1203)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:32)
at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23)
at retrofit2.ServiceMethod.toResponse(ServiceMethod.java:122)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:217)
at retrofit2.OkHttpCall.execute(OkHttpCall.java:180)
at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:40)
... 3 more

local wallet suggestion

Can anyone give me some choice for local wallet.i don't want to install whole eos for keosd.Thanks.^_^

UNSPECIFIED_EXCEPTION No ABI found

val client = EosApiClientFactory.newInstance("https://jungle2.cryptolions.io/").newRestClient()

        val params = mapOf(
            "from" to from.name,
            "to" to to.name,
            "quantity" to "0.1000 EOS",
            "memo" to "test transaction"
        )
        val data = client.abiJsonToBin(from.name, "transfer", params)

last line above failed with exception:

client.exception.EosApiException: Internal Service Error: No ABI found

toString() for all responses

Hey folks! Please implement toString() methods using java.lang.StringBuilder for all API responses(classes Block, Account etc.). Cheers!

Can this wrapper installed by gradle?

Hi, there, Could this wrapper installed by gradle?
I try to install it in this way, but it didn't help
implementation 'com.github.EOSEssentials:eos-java-rpc-wrapper:master'

eosApiRestClient.getChainInfo()

本地搭建的eos节点,无法调用getChainInfo()方法。

EosApiRestClient eosApiRestClient= EosApiClientFactory.newInstance("http://192.168.1.133:8888").newRestClient();

ChainInfo chainInfo = eosApiRestClient.getChainInfo();
代码中eosApiRestClient可以输出,说明连接正常;下面调用getChainInfo()直接报错。

Exception in thread "main" client.exception.EosApiException: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "server_version_string" (class client.domain.response.chain.ChainInfo), not marked as ignorable (12 known properties: "block_cpu_limit", "head_block_producer", "head_block_num", "block_net_limit", "chain_id", "server_version", "head_block_time", "virtual_block_net_limit", "last_irreversible_block_id", "last_irreversible_block_num", "virtual_block_cpu_limit", "head_block_id"]) at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 571] (through reference chain: client.domain.response.chain.ChainInfo["server_version_string"]) at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:48) at client.impl.EosApiRestClientImpl.getChainInfo(EosApiRestClientImpl.java:48) at eos.eos.App.transfer(App.java:47) at eos.eos.App.main(App.java:95)

Get transaction Id return Null

I try to call:

EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance("https://api.eosnewyork.io:443").newRestClient();
Transaction transaction1 = eosApiRestClient.getTransaction("28c1dc1b65a9e2ebf51176a41a17cdbc6d3fbe43357b23fecd8cfd97b419fbe5");

The result is an exception that the transaction can not be found, but I can found it on EOS Tracker.
Anyone could please help me to solve this problem?

Exception in thread "main" client.exception.EosApiException: Internal Service Error: Bad Cast

EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance("http://127.0.0.1:8888").newRestClient();

    /* Create the json array of arguments */
    Map<String, String> a = new HashMap<>(4);
    a.put("from", "sean");
    a.put("to", "hyq");
    a.put("quantity", "0.0100 EOS");
    a.put("memo", "My First Transaction");
    AbiJsonToBin data = eosApiRestClient.abiJsonToBin("hyq.token", "transfer", a);

    /* Get the head block */
    Block block = eosApiRestClient.getBlock(eosApiRestClient.getChainInfo().getHeadBlockId());

    /* Create Transaction Action Authorization */
    TransactionAuthorization transactionAuthorization = new TransactionAuthorization();
    transactionAuthorization.setActor("sean");
    transactionAuthorization.setPermission("active");

    /* Create Transaction Action */
    TransactionAction transactionAction = new TransactionAction();
    transactionAction.setAccount("sean");
    transactionAction.setName("transfer");
    transactionAction.setData(data.getBinargs());
    transactionAction.setAuthorization(Collections.singletonList(transactionAuthorization));

    /* Create a transaction */
    PackedTransaction packedTransaction = new PackedTransaction();
    packedTransaction.setRefBlockPrefix(block.getRefBlockPrefix().toString());
    packedTransaction.setRefBlockNum(block.getBlockNum().toString());
    packedTransaction.setExpiration("2018-06-11T14:53:59.000");
    packedTransaction.setRegion("0");
    packedTransaction.setMax_net_usage_words("0");
    packedTransaction.setContextFreeData(Collections.emptyList());
    packedTransaction.setContextFreeActions(Collections.emptyList());
    packedTransaction.setActions(Collections.singletonList(transactionAction));


    /* Sign the Transaction */
    SignedPackedTransaction signedPackedTransaction = eosApiRestClient.signTransaction(packedTransaction,
            Collections.singletonList("EOS8ZqrdP8ZpZ3Vhujn2hvtCffZcYLheCkrm797uSz7WGseqVXZfM"), block.getId());

    /* Push the transaction */
    PushedTransaction p = eosApiRestClient.pushTransaction("none", signedPackedTransaction);

Exception in thread "main" client.exception.EosApiException: Internal Service Error: Bad Cast
at client.impl.EosApiServiceGenerator.executeSync(EosApiServiceGenerator.java:48)
at client.impl.EosApiRestClientImpl.signTransaction(EosApiRestClientImpl.java:191)
at client.maintest.main(maintest.java:63)

PushTransaction throw exception because unknown field. But it still included in block

i just meet a bug throw out an exception. because in new api version, it added field context_free, but the transaction still included in the network.
This is a critical bug. because in exchange trading. when user withdraw their fund. we don't know it success or not because the response from eos node was marked with an exception.
you guys should ignore unknown field in the source code to make the stable version when eos node change their api. I lost 3k$ because this bug. and we don't have any release version for this. you should warning user who use this library for stable version or they should do json parser by their self

pushedTransaction报错

SignedPackedTransaction signedPackedTransaction = eosApiRestClient.signTransaction(packedTransaction, Collections.singletonList("EOS7LPJ7YnwYiEHbBLz96fNkt3kf6CDDdesV5EsWoc3u3DJy31V2y"), "chainId");

这里的chainId 是 eosApiRestClient.getChainInfo().getChainId()不?

我这样做调用PushedTransaction pushedTransaction= eosApiRestClient.pushTransaction("none", signedPackedTransaction); 时报错 :
Exception in thread "main" client.exception.EosApiException: Internal Service Error: Provided keys, permissions, and delays do not satisfy declared authorizations

getAccount() && Signing and pushing a transaction

I would like to test if it it works well to get account's info and transfer EOS using this project.

First, I created the rest client like below and tested to see it if connects.

eosApiRestClient.getAccount("MY ACCT NAME") doesn't seem to work

    EosApiRestClient<?> eosApiRestClient =
        EosApiClientFactory.newInstance("https://api.eosnewyork.io:443").newRestClient();

    // Working
    System.out.println(eosApiRestClient.getChainInfo().getChainId());
    System.out.println(eosApiRestClient.getChainInfo().getHeadBlockNum());
    System.out.println(eosApiRestClient.getChainInfo().getLastIrreversibleBlockNum());

    // Working
    Block block = eosApiRestClient.getBlock(eosApiRestClient.getChainInfo().getHeadBlockId());
    System.out.println(block);

    // Not Working 
    // System.out.println(eosApiRestClient.getAccount("MY ACCT NAME")); 

Don't you need to inject the account's private key of active key (called keyProvider in eosjs) when signing occurs?

From my experience of using eosjs, you need the private key of sender's account to transfer EOS

const config = {
    chainId: 'aca376f206b8fc25a6ed44dbdc66547c36c6c33e3a119ffbeaef943642f0e906', 
    keyProvider: [ privKey ], // LIKE HERE
    httpEndpoint: 'https://api.eosnewyork.io:443',
    verbose: false, // API activity
    broadcast: true,
    sign: true,
    expireInSeconds: 60
}

I don't seem to find where to inject the private key when signing occurs...

Is this part where  you inject the private key? 

eosApiRestClient.signTransaction(packedTransaction, Collections.singletonList("EOS7LPJ7YnwYiEHbBLz96fNkt3kf6CDDdesV5EsWoc3u3DJy31V2y"), "chainId");
/* Create the rest client */ 
EosApiRestClient eosApiRestClient = EosApiClientFactory.newInstance("https://api.eosnewyork.io:443").newRestClient();

/* Create the json array of arguments */
Map<String, String> args = new HashMap<>(4);
args.put("from", "currency"); // SENDER (MY PRE-GENERATED EOS ACCOUNT)
args.put("to", "eosio"); // RECEIVER
args.put("quantity", "0.1000 EOS"); // AMOUNT
args.put("memo", "My First Transaction"); // JUST MEMO
AbiJsonToBin data = eosApiRestClient.abiJsonToBin("currency", "transfer", args);```

/* Get the head block */
Block block = eosApiRestClient.getBlock(eosApiRestClient.getChainInfo().getHeadBlockId());

/* Create Transaction Action Authorization */
TransactionAuthorization transactionAuthorization = new TransactionAuthorization();
transactionAuthorization.setActor("currency");
transactionAuthorization.setPermission("active");

/* Create Transaction Action */
TransactionAction transactionAction = new TransactionAction();
transactionAction.setAccount("currency");
transactionAction.setName("transfer");
transactionAction.setData(data.getBinargs());
transactionAction.setAuthorization(Collections.singletonList(transactionAuthorization));

/* Create a transaction */
PackedTransaction packedTransaction = new PackedTransaction();
packedTransaction.setRefBlockPrefix(block.getRefBlockPrefix().toString());
packedTransaction.setRefBlockNum(block.getBlockNum().toString());
packedTransaction.setExpiration("2018-05-10T18:38:19");
packedTransaction.setRegion("0");
packedTransaction.setMax_net_usage_words("0");
packedTransaction.setContextFreeData(Collections.emptyList());
packedTransaction.setContextFreeActions(Collections.emptyList());
packedTransaction.setActions(Collections.singletonList(transactionAction));

/* Sign the Transaction */
SignedPackedTransaction signedPackedTransaction = eosApiRestClient.signTransaction(packedTransaction, Collections.singletonList("EOS7LPJ7YnwYiEHbBLz96fNkt3kf6CDDdesV5EsWoc3u3DJy31V2y"), "chainId");

/* Push the transaction */
PushedTransaction = eosApiRestClient.pushTransaction("none", signedPackedTransaction);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.