Open-Transactions

Click here for white paper.

The Open-Transactions project is a collaborative effort to develop a robust, commercial-grade, fully-featured, free-software toolkit implementing the OTX protocol as well as a full-strength financial cryptography library, API, GUI, command-line interface, and prototype notary server. The project is managed by a worldwide community of volunteers that use the Internet to communicate, plan, and develop the Open-Transactions toolkit and its related documentation.

Financial Cryptography

Financial cryptography means using using strong cryptographic techniques to create secure financial instruments, such as digital signing to create non-repudiable contracts, and encryption to create untraceable digital cash. In OT, transactions are unforgeable, receipts are destructible, and balances cannot be falsified or changed without user consent. OT is able to prove all balances, as well as which instruments are valid, and which transactions have closed, without storing any history except the last signed receipt.

Open-Transactions implements financial instruments as Ricardian Contracts; contracts which can be understood both by humans and manipulated by software.

All contracts in Open-Transactions use the same basic structure: all parties involved sign an agreement which is notarized by an independent third party witness. This technique is known as Triple-Signed Receipts. Importantly, transactions are formed and signed on the client side first, before being notarized by any server. An OT client is thus ensured that an OT notary server cannot falsify his receipts against his will, since the server can't forge the client's signature.

This basic structure can be built upon to create many types of financial instruments.

Financial Instruments

Financial instruments are any representation of a financial agreement between two or more parties.

The simplest financial instrument is a deposit agreement. A custodian of some asset (legal tender, or maybe gold) stores it on behalf of a depositor and agrees to redeem it on demand when presented with proof of a valid claim on the asset.

Other types of financial instruments include securities, of which there can be many variations. A security is an instrument that entitles the bearer to a certain revenue stream, either because it represents a loan or perhaps because it represents equity in a business.

Financial instruments in Open-Transactions have an issuer, who creates the contracts and is responsible for fulfilling the terms, and one or more bearers. Financial instruments are liabilities of the issuer owed to the bearers.

Working with Financial Instruments

Open-Transactions is designed to provide the highest security possible for both the issuers and bearers of financial instruments. Servers in Open-Transactions act as notaries which can witness and confirm balances, but cannot change them. Every party associated in a financial instrument can prove their balance to any other party, and no party can alter the balance of any other party without their agreement. Even a malicious notary cannot do this.

Open-Transactions represents quantities of a given unit type as deposit agreements, which are signed by the bearer and a notary.

Portions of a balance may be transferred between users via several asset-independent transaction types, including:

Transfers An atomic movement of funds from one account to a different account, like a bank account-to-account transfer. Cheques A payment which is not deducted from the sender's account until the recipient claims it. Vouchers A payment which is deducted from the senders account at the time of creation. Invoices A payment request which the recipient can opt to pay from any of his accounts. Cash Anonymous cryptographic tokens which can be securely redeemed by the recipient without revealing the sender. Market offers Open agreements to exchange a given quantity of one instrument type for a given quantity of another instrument type. Smart Contracts Customizable agreements between multiple parties, containing user-defined scripted clauses, hooks, and variables.

Use Cases

Encouraged use cases

Encouraged uses cases are officially supported by Open-Transactions.

Deposit accounting

Entities that hold assets on behalf of depositors can use Open-Transactions to issue promissory notes as negotiable instruments.

Examples of such depositories includes:

Precious metals

Central bank currencies

Cryptocurrencies

Payments

Users of OT negotiable instruments can authorize recurring payments to pay for services which operate on a billing cycle.

Bearer Securities

The negotiable instruments created by Open-Transactions can be used as the basis for financial products such as loans.

Discouraged use cases

Discouraged use cases are not supported by Open-Transactions, either because they violate the security requirements, or because they conflict with the philosophical goals of the project.

In many cases, discouraged use cases may be achievable, but users are required to create and support their own smart contracts.

Third party balance editing

The only entity in Open-Transactions that can edit a balance is the holder of that balance receipt. Open-Transactions does not and will not include any functionality to bypass this design decision.

More Information

About Open-Transactions

This product includes software developed by Ben Laurie for use in the Lucre project.

Credit for the OT logo goes to: moltenmich

Mailing list and IRC

Mailing list: [email protected]

Subscribe to mailing list

IRC channel: #opentransactions on irc.freenode.net

The OT community gratefully acknowledges the support and contributions of the following individuals and businesses to OT development: Chris Odom, Cameron Garnham, Randy Waterhouse, Monetas.

Install Programs

Mac OSX install for Moneychanger GUI Self-contained.

Note: This Mac install of Moneychanger includes the notary server as well.

It can be found at: /Applications/moneychanger-qt.app/Contents/MacOS/opentxs-notary

(old) Windows binary installer

White Paper

Open-Transactions White Paper

Source Code

Open-Transactions source code on github (core library, client API, and 'opentxs' command-line client)

Notary server source code on github (Install OT core first)

Moneychanger GUI source code on github (Install OT core first, and then build Moneychanger with the latest version of Qt Creator)