Bitcoin Forum
May 03, 2024, 05:28:23 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Bookwerx- The Multicurrency Bookkeeping API  (Read 81 times)
drmutz (OP)
Jr. Member
*
Offline Offline

Activity: 39
Merit: 5


View Profile
November 01, 2019, 12:40:23 AM
 #1

Hello Folks,

We hereby announce the bookwerx multi-currency, client-server, bookkeeping system.

bookwerx-core-rust (https://github.com/bostontrader/bookwerx-core-rust) Is the meat and potatoes of bookwerx.  This is a server, written in Rust, that implements an API for doing bookkeeping.  With this API you can define the currencies and accounts that you wish to use, create suitable transactions, observe aggregate phenomenon via reporting tools, and hunt down nettle-some bits o' lint with the linter.

bookwerx-ui-elm (https://github.com/bostontrader/bookwerx-ui-elm) Is an example user interface, the primary purpose of which is to help the user understand the bookwerx-core-rust API.  With this app the user can observe the http traffic between the UI and the server.  In this way perhaps insight can be had.


Public Demonstration Server

We have a public demonstration server available at http://23.253.160.60.  This will serve bookwerx-ui-elm.  From there, work the app, observe the http traffic with the server, and gain personal edification.


Why?

As you might have experienced, doing bookkeeping for your crypto-empire is considered by some authorities to be the most tedious and boring thing there is.  Typing this stuff into your spreadsheet by hand is absurdly labor-intensive and error-prone.  But building stronger software to manage this better is a monstrous distraction from your primary goal of global conquest. Although none of this task is particularly rocket sciency, the individual pieces of it work well together to collectively put up quite a defence.  Instead of wasting your time reinventing this wheel, why not let bookwerx do the dirty work for you?

Consider your own personal experience with mining pools and crypto-exchanges.  As a user I want to know what my balances are.  I want to be able to see all the transactions that created said balances and I'd like to see running totals to assist in debuggery.  I do not want to see random fragments of this information scattered all over the website, complete with blind-spots, nor do I want to see numbers asserted as correct without any derivation, or lists of transactions with many currencies mixed together and no running totals.

Use cases:

  • I'm doing automated trading.  Where are all my coins _right now_ ?
  • My mining pool creates a blizzard of transactions.  My users want to know what they have earned, what they have received, and how much they are due now.  I want a managerial accounting overview of the entire process.
  • My MtGox killer crypto-exchange is almost ready to go. The setting sun reminds me that it's time to strap on a hastily built bookkeeping system, just in time for tomorrow morning's debut.  My market supports 500 different coins and my customer funds are divided into 8 different locations.  Those pesky customers want to know and verify all their balances.   For extra credit: Realize that users of valuable coins don't like round-off error and that it annoys them to wonder if the discrepancies that are ubiquitous in my market's UI vs the customer's internal records are ordinary errors, round-off errors, theft, merely round-off-for-display issues or perhaps some new form of hitherto-now unknown form of dumfoolery.

Multi-Currenciarity

What exactly do this mean?  In conventional bookkeeping the sum of the Debits of a transaction should equal the sum of the Credits.  Bookwerx merely drops that constraint.  The actual software plumbing of creating accounts, transactions, etc, remains essentially the same.

The DR=CR constraint in conventional bookkeeping works just fine when dealing with a single currency.  The value in doing this is that a handful of conditions hold true such as Assets = Liabilities + Equity, or that Net Income = Revenue - Expenses.  It also serves as a simple error detection scheme when creating transactions.  However, the conventional system requires unpleasant contortions to try to squeeze in other currencies.  It's bad enough when you try to work with just a few multi-currency transactions, but the scheme completely disintegrates when you push harder.

bookwerx simply drops this constraint.  The sun still rises by command of the rooster.

With our new found freedom we can create transactions such as:

DR   Cash in Mattress   500      Quatloos
CR   Bank of Mises      15      General Atomic Shekles

What does this mean?  By inspection it looks like a currency exchange and a bank withdrawal.  The quantity of value withdrawn from the bank really does equal the quantity stuffed into the mattress, even if the actual numbers and units are different.

The loss of DR=CR as an error detection scheme for transactions is a minor price to pay.  Fortunately, other error detection mechanisms exist, such as reconcile your balances.

The biggest issues comes from wrapping our heads around the meaning of financial reporting.  Balance Sheet and Profit and Loss Statements work as usual, but it's not at all obvious how to "compare" things.

For example:


Assets:                   Dec 31, 2019      Dec 31, 2018
    Cash in Mattress           500 QTL           200 QTL
    Bank of Mises              250 GAS           550 GAS
                           -------           -------
                  subtotal     Huh                Huh

Liabilities:
    Wecheatembad Credit Corp   500 BTC           150 BTC

Equity
    Owner's Equity           10000 CNY         10000 CNY   


In this example, assets really do still equal the sum of liabilities and equity, even if there's an exchange rate issue to befuddle the analysis.  Is the 2019 BS "better" than the 2018 edition?

The bottom line here is that the actual plumbing of bookkeeping does not require the DR=CR constraint and it works just fine without.  However the analysis of the meaning of transactions and reports is a topic beyond the scope of mere bookkeeping.  This distinction is hidden when only using a single currency, but is unfortunately not magically solved with bookwerx 1.0

But while you ponder the meaning of these deep questions, you'll still want to know the actual bookkeeping details of these things on a day-to-day basis.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!