OpenTransact Exchange conventions

Skip to first unread message

Pelle Braendgaard

Jun 21, 2011, 11:58:54 AM6/21/11
In the previous thread nov and I both presented different ways of performing exchanges between 2 different OpenTransact assets. I am sure we will see many different approaches. What would be nice and what we talked about at the CC Unconf was a simple way standard (or convention rather) to initiate a trade on some exchange site.

Lets first define a trade.

I have asset X and want to exchange it for asset Y

Since I am offering asset X lets call it the offered. I want asset Y lets call it wanted.

Both the offered and wanted contain an opentransact url and an amount

Thus the parameters could be:



I'd really expect all of these values as being optional and let a user interface help pick them. But this simple convention would make it easy for sellers and shopping sites to integrate with multiple exchanges.

Currently I am only defining an interactive way of doing this. We would need an OAuth based version as well, but lets see how this works out first.

Paul and I have agreed to create a simple opensource implementation of this. nov/Tom would you guys like to help out?


-- - Reach Agreement! - My blog about startups and agile banking


Jun 21, 2011, 12:13:01 PM6/21/11
Paul and I have agreed to create a simple opensource implementation of this. nov/Tom would you guys like to help out?

Sure :)
BTW, in this flow, how can we determine the exchange rate?

Paul Robinson

Jun 21, 2011, 12:20:00 PM6/21/11
On 21 Jun 2011, at 17:13, matake@gmail wrote:

>> Paul and I have agreed to create a simple opensource implementation of this. nov/Tom would you guys like to help out?
> Sure :)
> BTW, in this flow, how can we determine the exchange rate?

The purpose of an exchange is to determine the exchange rate.

I am willing to sell 100 UBER$ for 20 SUPER$

You are willing to buy 100 UBER$ for 20 SUPER$

The exchange matches it and reports that 1 SUPER$ is worth 5 UBER$ (or inversely, 1 UBER$ is worth 0.20 SUPER$).

We need to openly record these transactions so that people can see these rates, and their history.

That's where it gets a little more complicated...

Pelle Braendgaard

Jun 21, 2011, 12:20:58 PM6/21/11
Basically the exchange rate would be determined by the exchange. There could be many different ways of doing so.

For example at the CC Unconf a week or two ago there were representatives for lots off different community currencies in the UK. They want to create an exchange that is one to one. The other way of doing it is the more conventional approach used by say Mt Gox and Nasdaq.

Someone offers 10 OAuth Karmas for 100 PicoPoints. Which puts the current exchange rate at 0.10. Now while that is the current price, someone could under bid them by offering 11 OAuth Karmas for 100 PicoPoints raising the price to 0.11. Of course someone has to accept the price before we can get an actual market price.

Anyway there are many different ways of doing it.


David Nicol

Jun 21, 2011, 12:37:58 PM6/21/11
"bid" and "ask" are good verbs, but they presume that one half of the
deal is in a fixed fungible.

So, fall back to "have" and "want"

You're not concerned with how the marketplaces work at this point,
just with the protocol between a holder who has something and would
like to exchange it for something else registers that information with
a marketplace.

"all or none" is an important flag

will you accept more, if it is available? Would you rather pay less,
if you can?

Are you willing to provide a donut for everyone with a dollar until
you run out of donuts and if so how many donuts do you have?

Do you still have those donuts you registered here this morning and
are they still a dollar each?

How long is this price good for?

The registration I made this morning, I want to cancel it, because I
am out of donuts.

Tom Brown

Jun 21, 2011, 8:43:01 PM6/21/11
sure, i'll be glad to help out.  are there any good articles online that talk about potential applications?


Jun 21, 2011, 10:09:27 PM6/21/11
I'm going to implement this functionality at
The source is on github

What I need now is API endpoint for the call.
For now, I suppose PicoPoint issuer accepts all exchange requests from any users with any currency at any exchange rate.

Of course we'll need to discuss more about exchange rate issues, but it can be after we have an sample implementation, I think.

Pelle Braendgaard

Jun 25, 2011, 6:22:02 PM6/25/11
Hi David,
I agree that bid and ask would have been good, but for the same reasons as you say it doesn't make sense in a more dynamic exchange.

I've been thinking the last couple of days about business rules for all or none. As they are conventions we may say the default should be all or none, but that it could be specified in the user interface.

My gut instinct is to focus initially on a interactive exchange flow and then as we learn from implementing it see what a good way of formulating these rules as a standard part of the protocol.

The how long is this price good for is absolutely vital to have. How about expires_at as a parameter? We can leave it optional and allow it to be customized as part of the exchanges own rules.

I'm guessing we should have a unique ID for each order in the form of a url. How this should be returned is probably just with a redirect in the beginning. For the sake of rest simplicity I say we should accept DELETE to cancel and PUT to modify it.

Reply all
Reply to author
0 new messages