Peer-To-Peer Reconciliation of Open Web Ledgers (Prowl)

Having had the last few months of prototyping experience with the Entity Module, I am almost ready to switch to the development of an alpha version. I have decided to delay the migration of the TDS ledger information until I have revised the MySQL tables to a leaner structure and the php code to an object-oriented approach. It didn’t make sense to migrate data into a prototype system that I will be replacing soon after with a much improved sytem.

The most important update has to do with being able to express, more clearly and with more certainty, what it ‘is’ that I’m trying to develop. In the past, I have tried to explain what I am trying not to do by comparing the prototype systems with the likes of LETS or Ripple. Here, I’ll give a preview of the system and framework that I have in mind as suggested by the title of this post.

Open Web Ledger  (OWL) Systems – There is nothing new about implementing a web-based accounting system. However, most of those accounting systems are designed to keep the ledger information strictly for private viewing only. What I was trying to demonstrate with the Entity Module prototype was a ledger system that is open for inspection and auditable by anyone. So far, I have failed to fully demonstrate how this openess was to be achieved, or what ‘open’ means. One of the main reasons for this failure was I didn’t have ongoing ledger data to publish, and that’s why the decision to migrate the TDS ledger information was made. That decision made it easier to move from assumptions to a working model which I feel comfortable with as an actual user/proprietor.

With the still unreleased version being developed, I have been able to come to this definition for openess: a ledger is sufficiently ‘open’ if information about an entity’s currency inflow/outflow is auditable by amount and the transacting entities. It is not necessary to divulge the dates, individual account numbers or receipts that are represented in a ledger entry, as long as the cumulative inflow and outflows between the transacting entities reconcile. Transaction details are only necessary for troubleshooting ledger inconsistencies.

P2P Reconciliation – Suppose Alice uses 100 units of her ABC credits to buy bread from entity XYZ. Entity XYZ then publishes an inflow or revenue of 100 units in its ledger, assuming that ABC and XYZ uses the same currency units. What if Alice was careless or dishonest and reports only 80 units of ABC outflow to XYZ? Or what if XYZ inflates its revenue stream from ABC to 150 units instead of the actual transacted amount of 100 hours?

Of course, a web surfer could easily detect such inconsistencies by visiting each entity’s web ledger, but a manual or user-dependent procedure for ledger audits would be unreliable and impractical at large scale. Ledger inconsistencies could result in the accumulation of errors in account balances which would be difficult to undo if not caught early enough. Gross accounting inaccuracies and misrepresentation eventually result in the loss of market confidence in an entity, such as in the case of Enron. The effect would be magnified for a satconomy entity that relies solely on its currency brand reputation for market access. A majority of sellers could all of a sudden decide not to accept that entity’s curreny brand if it cannot prove how it fulfills its self-declared obligation to the market.

One solution would be to automate the verification of unreconciled web ledger entries between the transacting entities. Such automation would then allow only verified ledger entries to be published and would prevent the accumulation of errors in account balances. I initially wanted to jump straight into prototyping a Reporter Module for this purpose, but platform and security considerations necessitated a more careful analysis. So far, I have a design idea for a peer-to-peer ledger reconciliation framework that could be extended for use in a Reporter Module. The Prowl protocol uses HTTP Get Request and a sha-1 digest of transaction data to perform asychronous reconciliation in the background. Instead of providing more details here, I’ll wait until the alpha version is released this quarter in order to demonstrate the features and functionalities of a Prowl framework.