ethereumproject / volunteer

Information regarding the community development initiative, learn how to volunteer and contribute to the decentralized development effort.
43 stars 30 forks source link

New Project Proposal - Java Client library for Ethereum #22

Closed splix closed 8 years ago

splix commented 8 years ago

A Java library to operate through Ethereum JSON RPC

Java is standard de facto for corp and fintech development, if we want to have clients from big firms it's extremely important to provide full Java support for them (and EthereumJ is not a solution).

We need flexible client that can connect to Parity and Geth:

I have experience with connecting Java apps to Ethereum and I can easily develop this library. But I will appreciate any help, as I have limited time. I need help with writing documentation and examples. And also we need a good name for this project.

If everybody agree that it's a good idea I can start with this project. Let's discuss

whatisgravity commented 8 years ago

For clarification, you are proposing a API Wrapper for both the existing RPC and IPC client in Java? As opposed to the EthereumJ which is a full client implementation.

I think it is a good idea, and fairly small project compared to a full client. On a similar subject, is EthereumJ implementing a light client yet?

splix commented 8 years ago

Yes, API wrapper, a low level around JSON RPC, and a high level on top of it for interacting with contracts.

EthereumJ is a full client implementation, people can probably use it as embedded node, I even think it's EF goal for this project. But it's too heavyweight solution.

whatisgravity commented 8 years ago

I think it is a great idea, I believe it would find a lot of use.

splix commented 8 years ago

I can start this project this weekend.

Any suggestions how to name this project?

ericsomdahl commented 8 years ago

I would like to help with coding too.

One of the most common criticisms this project gets is that it is just a cut&paste. New code being added should be named in a way that marks it clearly as ETC in origin.

How about jetcrpc j-etc-rpc jclassic-rpc etc-rpc4j those are all pretty business-like. Maybe there are some crazier ideas...

whatisgravity commented 8 years ago

Moving this to its own topic so it doesn't clutter the thread.

There is no reason not not use the Ethereum name, it would work with both, since its an RPC client.

The pragmatic course of action for the Ethereum classic/original community is to be consistent with our assertion that we hold legitimate and more logical claim to the Ethereum name space.

I recommend something space related, like SpaceCom or EtherCommander

ericsomdahl commented 8 years ago

@splix this project should be very straight-forward. The big question in my mind is how to treat the domain objects. Are you of a mind to use JSON-like Map<String, Object> structures or a declared set of strictly-typed domain classes?

I suspect ethereumJ probably already has spec'd the domain objects -- the path of least resistance would be to start from there.

splix commented 8 years ago

@ericsomdahl I'm not a big fan of names with xxxx4j or xxxx4java, like it was popular 15 years ago :) and I don't think name should indicate that it's written by classic team, as we're writing lib that can be used for any of ethereum node and chain, so project name is not the best place for politics imho. org.ethereumclassic. package is enough to stand for itself :)

We need something simple and clean for a name, maybe with using ether. I see following words as a part of or consonant to project name:

I like making up fictitious names for a projects, or playing with related words. Imho name should describe the project, but something easy to remember, to pronounce and to google. But nothing comes to mind at this moment.

I'm planing to use strictly typed domains classes. My idea to provide few layers of control, layer by layer, from low level RPC to hight level control of groups of related structures and contract execution. Support both Geth and Parity, with all extended methods, and for every chain. Going to make it Async First.

There is one important question left, I've not decided yet which java version to use. Java7 is still used by some platform, including Android. And there is nothing imho that requires Java8. I will probably start with Java7, and later we'll figure it out.

splix commented 8 years ago

https://github.com/ethereumproject/etherjar