Skip to content
FellowTraveler edited this page Nov 11, 2010 · 43 revisions

WHAT IS 'Open Transactions' ?

It's a solid, easy-to-use, FINANCIAL CRYPTO and DIGITAL CASH LIBRARY.
Including an operational API, SERVER and CLIENT.

Featuring: 
    -- Untraceable Digital Cash (real blinded tokens). 
    -- Pseudonymous User Accounts ('account' == PGP key). 
    -- Many Financial Instruments (cheques, cash, vouchers, invoices...)
    -- Anyone An Issuer (Ricardian-style Contracts) 
    -- Triple-Signed Receipts 
    -- Basket Currencies
    -- NEW! Markets with Trades
    -- NEW! Payment Plans 
    -- NEW! Native API for Java, Ruby, Python, PHP, Perl, C, 
       C++, Objective-C, C#, Tcl, and LISP
    -- NEW! XmlRpc/HTTP transport layer (build option)
    -- Soon: Stocks that pay dividends, Bonds that pay interest,
       and even Collateralized Debt Obligations.
    -- Soon: 2-D Barcodes to make possible 'Any screen a cash
       register' and 'Any camera phone a customer.'

Please see the Project page:
http://github.com/FellowTraveler/Open-Transactions/wiki

FAQ:
http://github.com/FellowTraveler/Open-Transactions/wiki/FAQ

Business Cases:
http://github.com/FellowTraveler/Open-Transactions/wiki/Business-Cases

"Seeking developers to contribute by writing client software and doing
other integrations!  I will support you on the OT API. Let's make this
happen!" -Fellow Traveler
 

Please see the Wiki, FAQ, and Business Cases.

NOTES on the Version:

0.31 --- Native API, with easy Makefiles, added for: Java, Lisp, Ruby, Python, Perl, PHP, C, C++, Objective-C, C#, and Tcl. Also supporting JRuby, Jython, and any other languages on the JVM.

        Transport is now implemented as a CALLBACK FUNCTION, which
        means it is now VERY EASY to swap out to different forms of
        transport (though XmlRpc is probably the last form we'll ever
        need.)

        The build process has been greatly simplified, and many Makefiles
        were made redundant and removed.

0.30 --- MAJOR RELEASE! Markets, Payment Plans, and OT as a Web Service!

      *** Open Transactions is now officially a WEB SERVICE! The server,
          client, and API now support *XML-RPC/HTTP*, in addition to the
          TCP/SSL mode from before.

      *** Open Transactions now supports real MARKETS with 2-way trades!
          These markets are full-featured, and allow for LIMIT orders,
          STOP orders, DAY orders, FILL-OR-KILL orders, STOP LIMITS, etc.
          Markets also have SCALE, which means bulk pricing and arbitrage.

      *** Open Transactions now supports PAYMENT PLANS. As long as both
          parties have signed the contract, the server will continue
          processing it according to its terms, placing receipts in the
          inboxes of the two parties until the payments are done.

      *** All data files were removed to a data folder, and all file
          paths were removed from data files (filenames are generated
          now, when needed.)  This all means datafiles are much easier now.

// ---------------------------------------------------------------------

0.25 --- All FILE pointers were removed and replaced with C++ fstreams.

        An all new logging class, with errors, asserts, and multi-
        verbosity output. See the OTLog.h and .cpp files for more.
        (Centralizing the output and logging also helps porting efforts.)

        All the test certs were regenerated, and the contracts were
        re-signed, etc. This time they will last for 10 years, instead
        of 30 days. Slight fix to the Open-Transactions/ssl Makefile.

0.24 --- FreeBSD working!

0.23 --- Android version! (In support of our upcoming Android client.)

       Now it's easier than ever to use Open Transactions in your
        Java and C++ applications, for Mac, Linux, and Windows!

0.22 --- EASY Makefiles and project files are now available for the JNI Java interface, as well as the high-level C++ API.

        Makefiles are supplied for MAC and LINUX, as well as project
        files for XCode on Mac and MS Visual C++ 2010 Express on Windows. 

        "FiatCash" (the first client, on Android) is humming along
        and hopefully we'll have some basic version soon up on Github.

        Negative transactions are no longer allowed for vouchers,
        account transfers, or cash withdrawals. They are still, however,
        allowed for cheques, which serve as invoices.

        Various global variable issues were cleaned up...

// ---------------------------------------------------------------------

0.21 --- Windows release!

       Open Transactions now supports Windows, LINUX, and Mac OS X.
       (In the same code base.)
       
       This distribution comes with gcc Makefiles for Mac and Linux,
       as well as XCode project files for Mac and Microsoft VC++ project
       files for Windows.
       
       The Windows port was at the request of an Android developer who
       has begun work on a wallet (client app) that he calls "FiatCash".
       He will be building it on Windows, in Java, using the Open
       Transactions JNI interface to talk to the library. When complete,
       the wallet software will run on Android phones.
       
       INVOICES: Imagine that you hand someone an invoice. He runs it
       through his bank account and the money is automatically transferred
       to you, with receipts on both sides. This is the same thing as
       a cheque with a negative amount. Thus, "negative cheques" can be
       used as invoices. (Already operational.)
       
       Assorted:
       
       Many of the C Standard Library includes were replaced with their
       C++ standard library versions.
       
       Other cleanups were made including some fixes to OTString (which
       used to have some large stack-allocations) as well as a bug fix
       in the socket code for the server / test client.

       The client cert expired, so I re-created all the certs. If you have
       any problem with your own, just install the new version to fix it.

// ---------------------------------------------------------------------

0.2 --- Major Release! ALL NEW:

       JNI Interface (High-level Java API)

       High-level C++ Interface

       Spent Token Database is fully operational!

       Mints and Tokens now support Expiration AND Series. 

       New Financial Instruments: Cheques and Vouchers.

       Reserve accounts are now working to store the backing funds
       for cash withdrawals and vouchers (cashier's cheques.)

       Transaction numbers are fully working now.
       
       Nym files are now signed (to prevent tampering.)

       Hardcoding of paths was fixed, using config files and
       command-line arguments now, so you can use the software 
       without having to change the code.

       Path separators were improved to support Windows-style paths
       (though I haven't tried to actually build on Windows.)

       Numerous bug fixes. Including a big one: discarding
       token signature after unblinding.

// ---------------------------------------------------------------------

0.11 --- Added LINUX support...

       Added Makefiles, and a few fixes related to Linux. 
       
       OT now runs on TWO platforms: LINUX and Mac OS X.

// ---------------------------------------------------------------------

0.1 --- The original goal was just proof-of-concept. There are many TODOs listed on the project page, as well as throughout the code. But it all works!!!

A WARNING: This software is brand-spanking-new. The project has not yet been audited for security or tested for any extended period of time. Thus far, it must be considered as for experimental purposes only.

   --- There are still a few values that are hardcoded (in the client
       and the server), unfortunately, but it's all documented and I
       have everything set up already to run, so you don't have to
       mess with them. This will be fixed next release.

The server expects its OWN cert to be in the transaction/certs folder. The filename should be the server_user_ID from notaryServer.xml (I HAVE ALREADY PLACED IT THERE.)

This is the file that includes the server's public AND private key.


Clone this wiki locally