Basic Monetary Accounting system in Java reachable via gRPC

  • Posted:
  • Proposals: 3
  • Remote
  • #1740250
  • Awarded
Marembo I.
Shobhit S.Malav S. have already sent a proposal.
  • 2


Experience Level: Expert
General information for the business: Involved in Cryptocurrencies
Kind of development: New program from scratch
Num. of modules: 1
Description of requirements/functionality: The system needs to track monetary accounts in different currencies for different institutes, while differentiating between "real" account value and expected account value. In detail:

A gRPC client reports creation of a Currency C1 (with scale X, i.e. the number of decimals) account for Instiute I1 and the server shall create three money "TimeSeries" (if not yet existing):

- series R adds every newly reported "real" account value for I1 and C1 in it, such that we can easily query "what was the real account value of C1 in I1 at timepoint t"

- series E tracks expected changes. A client has the ability to say "we expect +3 in C1 at I1 tagged with s at timestamp t" (see * below). This series records that, marks it as an "open" change and provides the client with an ID for this expected change. The client later can then report "The change in reality for ID x was +2". The series would record this, mark the entry as a closed change (with closing timestamp) and add "+2" to series D (described below) tagged with s. We should be able to query the system "which expected changes were open at timepoint t"
* pseudo code signature would i.e. be
long reportExpectedChange(expectedChange, Currency, Institute, Tag, Timestamp)

- series D starts at the same value that series R starts. Its value is changed whenever series E marks a record as closed. Analouge to series R we should be able to query "what was the value of series D at timepoin t".

Series R and D should always be the same as long as no "change is open", and as long as the institute reports exact numbers, we want to have those two series to be able to compare this.

We want to be able to query each of these series for data between two timestamps.

We want to be able query the last values of series R and D as well as any "open change" in series E.

The data should be saved in a database (preferably postgresql), indexed on the timestamps. An automatic backup script (or within the java software) needs to be written, that every 24 hours backs up the data of the last 48 hours to an external compressed file

gRPC access will be restricted by using whitelisted ips. The whitelisted adresses will be defined in a config file, and the system should periodically check whether that file has changed and reload changes.

For the handling of monetary amounts JSR 354 should be used.

We want the whole project to be created using TDD (but with TestNG instead of JUnit). We prefer clean code over quick "elegant" hacks, and we require it to be safe in terms of concurrency issues. The source code shall be Java 8 compliant.

If the project is a success and well within our standards, there will be offers of follow up projects.

If you contact us, please tell us how experienced you are in the respective fields (Java, DB, TDD, gRPC/protobuf, Concurrency), as well as provide some information about previous projects you did or technologies you used.
Specific technologies required: Java, TDD, gRPC/protobuf, DB / SQL
Extra notes:

New Proposal

Create an account now and send a proposal now to get this project.

Sign up

Clarification Board Ask a Question

    There are no clarification messages.