Skip to content
This repository has been archived by the owner on Dec 12, 2022. It is now read-only.
Derk Norton edited this page Sep 12, 2021 · 12 revisions

Welcome

You have arrived at version 2 of the Bali Document Repository™ project. This project defines an API that can be used to store, in the Bali Nebula™ cloud-based operating system, documents that have been notarized using the Bali Digital Notary™.

Pyramid

This project also provides the following repository classes that implement the API:

  • CachedRepository - A memory based version of the repository that can be placed in front of any of the other repositories to speed them up.
  • LocalRepository - A local filesystem based repository that can be used for local testing.
  • RemoteRepository - A proxy to a remote repository that is accessed as a web service.
  • S3Repository - An AWS S3 bucket based repository located in the Amazon cloud.
  • ValidatedRepository - A memory based version of the repository that validates the notary seals on the documents prior to storing them in one of the other repositories.

Version 2 is the first stable version of the document repository and is ready for general use. There are likely some bugs remaining in the code so watch for minor releases which fix bugs and add functionality, and for emergency bug patches. Minor releases (e.g. v2.x) and emergency bug patches (e.g. v2.x.y) should never break the public interface for the document repository library.

An Example Notarized Document

To whet your appetite, here is a short example of a notarized document that could be stored in the Bali Document Repository™.

[
    $protocol: v2
    $timestamp: <2020-01-28T17:04:09.174>
    $account: #QSKT1QTJ2FZ5B7F2XSYL7RYWXX2AMRSK
    $content: [
        $timestamp: <2020-01-28T17:04:09.171>
        $consumer: "Derk Norton"
        $merchant: <https://www.starbucks.com/>
        $amount: 4.95
    ](
        $type: /starbucks/types/Transaction/v2.3
        $tag: #7544JH021G78LVD8D1CV292ZZWQFD938
        $version: v1
        $permissions: /bali/permissions/Public/v1
        $previous: none
    )
    $certificate: [
        $protocol: v2
        $tag: #W9Q9Z8Z971RPQJ2WFQ0YHZVWPGPZDJ6T
        $version: v1
        $digest: '
            K2DHXQVZBB30H2N1091D70219LH6G69BK6T2GW6YBT7TPBYFPSN26W6SMG7S
            SA10ZBYDN1SSMXZBX1AX08Q93JQ5PQVWCZBWVQ94DBH
        '
    ]($type: /bali/notary/Citation/v1)
    $signature: '
        XWVVP2ZAG3SJVRX3FS13N9AKDTAH9J3NZ10P23BC432K6HVXZL7BZ27SC779
        5DXT5GB5HVNWBTCV1GBWY2A5C9YT42F03ZJBH2J2T28
    '
]($type: /bali/notary/Document/v1)

The document itself is fairly straightforward. It captures the transaction information associated with a payment from a consumer to a merchant. The example has been overly simplified but it gives you the types of documents that can be stored in the Bali Document Repository™.

In Summary

The Bali Document Repository™ library allows a developer to assemble both client-side and server-side document repositories that work together for optimum performance and security.

To dive in deeper on the parts of the library that interest you most, click on links listed in the side bar in the upper right corner ↗️ of this page.