<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Qertoip</id>
	<title>Bitcoin Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://en.bitcoin.it/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Qertoip"/>
	<link rel="alternate" type="text/html" href="https://en.bitcoin.it/wiki/Special:Contributions/Qertoip"/>
	<updated>2026-05-07T02:58:21Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44325</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44325"/>
		<updated>2014-02-07T22:37:14Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
API URIs always start with a marker &amp;quot;/v1&amp;quot; to make the version explicit.&lt;br /&gt;
&lt;br /&gt;
All timestamps are returned in ISO 8601 format:&lt;br /&gt;
&lt;br /&gt;
 YYYY-MM-DDTHH:MM:SSZ&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* Your personal API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;br /&gt;
&lt;br /&gt;
You are expected to &#039;&#039;&#039;pass the API key as a HTTP header&#039;&#039;&#039;:&lt;br /&gt;
 Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&lt;br /&gt;
...where the long string is of course your API key.&lt;br /&gt;
&lt;br /&gt;
It is also possible to pass the API key as a request param:&lt;br /&gt;
 ?api_key=84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&lt;br /&gt;
...although this is not recommended as sensitive data should not be passed in the URI.&lt;br /&gt;
&lt;br /&gt;
===Get my deposit address===&lt;br /&gt;
&lt;br /&gt;
 GET /v1/prv/deposit_address/:currency_name.json&lt;br /&gt;
* &#039;&#039;&#039;currency_name&#039;&#039;&#039; - obligatory cryptocurrency name, i.e BTC, LTC&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -v --request GET http://localhost:3000/v1/prv/deposit_address/BTC.json --header &amp;quot;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
 200 OK&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;address&amp;quot;:&amp;quot;n2Ccn5em9gcQyBe2QvZnfzzXq8EZh1ncJj&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Error response:&lt;br /&gt;
 422 Unprocessable Entity&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;errors&amp;quot;:{&amp;quot;currency_name&amp;quot;:&amp;quot;is invalid&amp;quot;}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get balances and user data===&lt;br /&gt;
&lt;br /&gt;
 GET /v1/prv/user.json&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -i --request GET http://localhost:3000/v1/prv/user.json --header &amp;quot;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
 200 OK&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;user&amp;quot;: {&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;adalovelace&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;adalovelace@bitcoinfoundation.org&amp;quot;,&lt;br /&gt;
    &amp;quot;balances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;available&amp;quot;: &amp;quot;0.199&amp;quot;,&lt;br /&gt;
        &amp;quot;total&amp;quot;: &amp;quot;0.199&amp;quot;,&lt;br /&gt;
        &amp;quot;currency_name&amp;quot;: &amp;quot;BTC&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;available&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
        &amp;quot;total&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
        &amp;quot;currency_name&amp;quot;: &amp;quot;PLN&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;available&amp;quot;: &amp;quot;7.11&amp;quot;,&lt;br /&gt;
        &amp;quot;total&amp;quot;: &amp;quot;7.11&amp;quot;,&lt;br /&gt;
        &amp;quot;currency_name&amp;quot;: &amp;quot;LTC&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;available&#039;&#039;&#039; - the amount you can manage, i.e. to place a new offer&lt;br /&gt;
* &#039;&#039;&#039;total&#039;&#039;&#039; - the amount including funds reserved for offers, withdrawals, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Create a withdrawal request (of cryptocurrency)===&lt;br /&gt;
&lt;br /&gt;
 POST /v1/prv/withdrawal_request.json&lt;br /&gt;
* &#039;&#039;&#039;currency_name&#039;&#039;&#039; - obligatory name of the currency like BTC, LTC, PLN&lt;br /&gt;
* &#039;&#039;&#039;address&#039;&#039;&#039; - obligatory only for cryptocurrencies&lt;br /&gt;
* &#039;&#039;&#039;amount&#039;&#039;&#039; - obligatory&lt;br /&gt;
* &#039;&#039;&#039;otp&#039;&#039;&#039; - obligatory when user has set up a Google Authenticator One-Time-Passwords for withdrawals&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -i --request POST http://localhost:3000/v1/prv/withdrawal_requests.json --header &amp;quot;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRM6sLRdM&amp;quot; \&lt;br /&gt;
--data &amp;quot;currency_name=BTC&amp;amp;address=mm2SjeJ64vQokDjnkhvhcv9mGk1VfEJRsk&amp;amp;amount=0.03&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
 201 Created&lt;br /&gt;
&lt;br /&gt;
Error response (missing or invalid OTP):&lt;br /&gt;
 401 Unauthorized&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errors&amp;quot;: {&lt;br /&gt;
    &amp;quot;otp&amp;quot;: &amp;quot;is invalid&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Error response (invalid params):&lt;br /&gt;
 422 Unprocessable Entity&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;errors&amp;quot;: {&lt;br /&gt;
    &amp;quot;currency_name&amp;quot;: &amp;quot;is invalid&amp;quot;,&lt;br /&gt;
    &amp;quot;address&amp;quot;: &amp;quot;is_invalid&amp;quot;,&lt;br /&gt;
    &amp;quot;amount&amp;quot;: &amp;quot;is invalid&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44323</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44323"/>
		<updated>2014-02-07T21:58:46Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
API URIs always start with a marker &amp;quot;/v1&amp;quot; to make the version explicit.&lt;br /&gt;
&lt;br /&gt;
All timestamps are returned in ISO 8601 format:&lt;br /&gt;
&lt;br /&gt;
 YYYY-MM-DDTHH:MM:SSZ&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* Your personal API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;br /&gt;
&lt;br /&gt;
You are expected to &#039;&#039;&#039;pass the API key as a HTTP header&#039;&#039;&#039;:&lt;br /&gt;
 Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&lt;br /&gt;
...where the long string is of course your API key.&lt;br /&gt;
&lt;br /&gt;
It is also possible to pass the API key as a request param:&lt;br /&gt;
 ?api_key=84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&lt;br /&gt;
...although this is not recommended as sensitive data should not be passed in the URI.&lt;br /&gt;
&lt;br /&gt;
===Get my deposit address===&lt;br /&gt;
&lt;br /&gt;
 GET /v1/prv/deposit_address/:currency_name.json&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -v --request GET http://localhost:3000/v1/prv/deposit_address/BTC.json --header &amp;quot;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;address&amp;quot;:&amp;quot;n2Ccn5em9gcQyBe2QvZnfzzXq8EZh1ncJj&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Error response:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;errors&amp;quot;:{&amp;quot;currency_name&amp;quot;:&amp;quot;is invalid&amp;quot;}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Get balances and user data===&lt;br /&gt;
&lt;br /&gt;
 GET /v1/prv/user.json&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -i --request GET http://localhost:3000/v1/prv/user.json --header &amp;quot;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;user&amp;quot;: {&lt;br /&gt;
    &amp;quot;username&amp;quot;: &amp;quot;adalovelace&amp;quot;,&lt;br /&gt;
    &amp;quot;email&amp;quot;: &amp;quot;adalovelace@bitcoinfoundation.org&amp;quot;,&lt;br /&gt;
    &amp;quot;balances&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;available&amp;quot;: &amp;quot;0.199&amp;quot;,&lt;br /&gt;
        &amp;quot;total&amp;quot;: &amp;quot;0.199&amp;quot;,&lt;br /&gt;
        &amp;quot;currency_name&amp;quot;: &amp;quot;BTC&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;available&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
        &amp;quot;total&amp;quot;: &amp;quot;0.0&amp;quot;,&lt;br /&gt;
        &amp;quot;currency_name&amp;quot;: &amp;quot;PLN&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;available&amp;quot;: &amp;quot;7.11&amp;quot;,&lt;br /&gt;
        &amp;quot;total&amp;quot;: &amp;quot;7.11&amp;quot;,&lt;br /&gt;
        &amp;quot;currency_name&amp;quot;: &amp;quot;LTC&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;available&#039;&#039;&#039; - the amount you can manage, i.e. to place a new offer&lt;br /&gt;
* &#039;&#039;&#039;total&#039;&#039;&#039; - the amount including funds reserved for offers, withdrawals, etc.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44322</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44322"/>
		<updated>2014-02-07T21:39:12Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Introduction==&lt;br /&gt;
&lt;br /&gt;
Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
API URIs always start with a marker &amp;quot;/v1&amp;quot; to make the version explicit.&lt;br /&gt;
&lt;br /&gt;
All timestamps are returned in ISO 8601 format:&lt;br /&gt;
&lt;br /&gt;
 YYYY-MM-DDTHH:MM:SSZ&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* Your personal API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;br /&gt;
&lt;br /&gt;
===Get my deposit address===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 GET /v1/prv/deposit_address/:currency_name.json&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -v --request GET http://localhost:3000/v1/prv/deposit_address/BTC.json --header &amp;quot;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;address&amp;quot;:&amp;quot;n2Ccn5em9gcQyBe2QvZnfzzXq8EZh1ncJj&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Error response:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;errors&amp;quot;:{&amp;quot;currency_name&amp;quot;:&amp;quot;is invalid&amp;quot;}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44321</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44321"/>
		<updated>2014-02-07T21:36:08Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
API URIs always start with a marker &amp;quot;/v1&amp;quot; to make the version explicit.&lt;br /&gt;
&lt;br /&gt;
All timestamps are returned in ISO 8601 format:&lt;br /&gt;
&lt;br /&gt;
 YYYY-MM-DDTHH:MM:SSZ&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* Your personal API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;br /&gt;
&lt;br /&gt;
===Get my deposit address===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 GET /v1/prv/deposit_address/:currency_name.json&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -v --request GET http://localhost:3000/v1/prv/deposit_address/BTC.json --header &amp;quot;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Response:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;address&amp;quot;:&amp;quot;n2Ccn5em9gcQyBe2QvZnfzzXq8EZh1ncJj&amp;quot;}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Error response:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
 {&amp;quot;errors&amp;quot;:{&amp;quot;currency_name&amp;quot;:&amp;quot;is invalid&amp;quot;}}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44320</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44320"/>
		<updated>2014-02-07T21:20:03Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Get my deposit address */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* Your personal API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;br /&gt;
&lt;br /&gt;
===Get my deposit address===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 GET /v1/private/deposit_address/:currency_name.json&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -v --request GET http://localhost:3000/v1/private/deposit_address/BTC.json --header &#039;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{&amp;quot;address&amp;quot;:&amp;quot;n2Ccn5em9gcQyBe2QvZnfzzXq8EZh1ncJj&amp;quot;}&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44319</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44319"/>
		<updated>2014-02-07T19:29:07Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Private API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* Your personal API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;br /&gt;
&lt;br /&gt;
===Get my deposit address===&lt;br /&gt;
&lt;br /&gt;
 GET /v1/private/deposit_address/:currency_name.json&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
curl -v --request GET http://localhost:3000/v1/private/deposit_address/BTC.json --header &#039;Authorization: PrimeExchange 84ffsOscok1Asbbqj28gcscv86M3nj4bRIamFaKe&#039;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44318</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44318"/>
		<updated>2014-02-07T18:24:47Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* Your personal API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44317</id>
		<title>Prime API</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_API&amp;diff=44317"/>
		<updated>2014-02-07T18:24:07Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: Created page with &amp;quot;Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.  ==Public API==  Public API calls are available without authentication.  ==Private API==  Private A...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Prime API is based on JSON, delivered through HTTPS and is mostly REST-ful.&lt;br /&gt;
&lt;br /&gt;
==Public API==&lt;br /&gt;
&lt;br /&gt;
Public API calls are available without authentication.&lt;br /&gt;
&lt;br /&gt;
==Private API==&lt;br /&gt;
&lt;br /&gt;
Private API calls require authentication via:&lt;br /&gt;
* API key and optionally&lt;br /&gt;
* IP address&lt;br /&gt;
&lt;br /&gt;
Private API is &#039;&#039;&#039;off by default&#039;&#039;&#039;. You need to enable it in your profile.&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=44316</id>
		<title>Prime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=44316"/>
		<updated>2014-02-07T17:57:02Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commercially licensed high-end bitcoin exchange &#039;&#039;&#039;software&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Advantages==&lt;br /&gt;
&lt;br /&gt;
Prime claims to be developed with [http://en.wikipedia.org/wiki/Software_craftsmanship software craftsmanship] in mind. It strives for correctness, security, simplicity and source code beauty. No rush and careful engineering are considered more important than rich feature set and &amp;quot;time-to-market&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Estimated Time of Arrival==&lt;br /&gt;
&lt;br /&gt;
Prime is expected to be ready for purchase by the end of 2014.&lt;br /&gt;
&lt;br /&gt;
==API==&lt;br /&gt;
&lt;br /&gt;
[[Prime API|Prime API]] is a work in progress.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
[[Prime Specification|Prime specification draft]] is a work in progress.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Development started on April 17, 2013.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Buying bitcoins]]&lt;br /&gt;
* [[Selling bitcoins]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Exchanges]]&lt;br /&gt;
[[Category:EWallets]]&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=43157</id>
		<title>Prime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=43157"/>
		<updated>2013-12-15T13:40:38Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Estimated Time of Arrival */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commercially licensed high-end bitcoin exchange &#039;&#039;&#039;software&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Advantages==&lt;br /&gt;
&lt;br /&gt;
Prime claims to be developed with [http://en.wikipedia.org/wiki/Software_craftsmanship software craftsmanship] in mind. It strives for correctness, security, simplicity and source code beauty. No rush and careful engineering are considered more important than rich feature set and &amp;quot;time-to-market&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Estimated Time of Arrival==&lt;br /&gt;
&lt;br /&gt;
Prime is expected to be ready for purchase by the end of 2014.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
[[Prime Specification|Prime specification draft]] is a work in progress.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Development started on April 17, 2013.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Buying bitcoins]]&lt;br /&gt;
* [[Selling bitcoins]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Exchanges]]&lt;br /&gt;
[[Category:EWallets]]&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37212</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37212"/>
		<updated>2013-04-20T22:35:44Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Withdrawal requests====&lt;br /&gt;
=====Pending=====&lt;br /&gt;
* Total fiat funds pending for withdrawal&lt;br /&gt;
* FIFO list of pending fiat withdrawals&lt;br /&gt;
** time waiting, name, address, IBAN, amount, [insert bank withdrawal transaction id here] and click [MARK AS FULFILLED] button, [CANCEL] button&lt;br /&gt;
&lt;br /&gt;
=====Other=====&lt;br /&gt;
* list of fulfilled and cancelled withdrawals, by date of fulfillment&lt;br /&gt;
====Financial &amp;amp; Fees====&lt;br /&gt;
* Stats&lt;br /&gt;
** Total funds on the exchange&lt;br /&gt;
*** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
*** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
** Number of buy and sell orders&lt;br /&gt;
** Number and volume of transactions&lt;br /&gt;
* Fee settings&lt;br /&gt;
&lt;br /&gt;
====Hot wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
* commandline tools: pg_dump, openssl (to use built-in db backups)&lt;br /&gt;
&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37208</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37208"/>
		<updated>2013-04-20T17:06:39Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* How wallets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Withdrawal requests====&lt;br /&gt;
=====Pending=====&lt;br /&gt;
* Total fiat funds pending for withdrawal&lt;br /&gt;
* FIFO list of pending fiat withdrawals&lt;br /&gt;
** time waiting, name, address, IBAN, amount, [insert bank withdrawal transaction id here] and click [MARK AS FULFILLED] button, [CANCEL] button&lt;br /&gt;
&lt;br /&gt;
=====Other=====&lt;br /&gt;
* list of fulfilled and cancelled withdrawals, by date of fulfillment&lt;br /&gt;
====Financial &amp;amp; Fees====&lt;br /&gt;
* Stats&lt;br /&gt;
** Total funds on the exchange&lt;br /&gt;
*** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
*** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
** Number of buy and sell orders&lt;br /&gt;
** Number and volume of transactions&lt;br /&gt;
* Fee settings&lt;br /&gt;
&lt;br /&gt;
====Hot wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37205</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37205"/>
		<updated>2013-04-20T14:32:51Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Pending */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Withdrawal requests====&lt;br /&gt;
=====Pending=====&lt;br /&gt;
* Total fiat funds pending for withdrawal&lt;br /&gt;
* FIFO list of pending fiat withdrawals&lt;br /&gt;
** time waiting, name, address, IBAN, amount, [insert bank withdrawal transaction id here] and click [MARK AS FULFILLED] button, [CANCEL] button&lt;br /&gt;
&lt;br /&gt;
=====Other=====&lt;br /&gt;
* list of fulfilled and cancelled withdrawals, by date of fulfillment&lt;br /&gt;
====Financial &amp;amp; Fees====&lt;br /&gt;
* Stats&lt;br /&gt;
** Total funds on the exchange&lt;br /&gt;
*** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
*** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
** Number of buy and sell orders&lt;br /&gt;
** Number and volume of transactions&lt;br /&gt;
* Fee settings&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37204</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37204"/>
		<updated>2013-04-20T14:27:24Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Pending */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Withdrawal requests====&lt;br /&gt;
=====Pending=====&lt;br /&gt;
* FIFO list of pending withdrawals&lt;br /&gt;
** time waiting, name, address, IBAN, amount, [insert bank withdrawal transaction id here] and click [MARK AS FULFILLED] button, [CANCEL] button&lt;br /&gt;
&lt;br /&gt;
=====Other=====&lt;br /&gt;
* list of fulfilled and cancelled withdrawals, by date of fulfillment&lt;br /&gt;
====Financial &amp;amp; Fees====&lt;br /&gt;
* Stats&lt;br /&gt;
** Total funds on the exchange&lt;br /&gt;
*** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
*** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
** Number of buy and sell orders&lt;br /&gt;
** Number and volume of transactions&lt;br /&gt;
* Fee settings&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37203</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37203"/>
		<updated>2013-04-20T14:26:57Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Withdrawal requests====&lt;br /&gt;
=====Pending=====&lt;br /&gt;
* FIFO list of pending withdrawals, FIFO&lt;br /&gt;
** time waiting, name, address, IBAN, amount, [insert bank withdrawal transaction id here] and click [MARK AS FULFILLED] button, [CANCEL] button&lt;br /&gt;
=====Other=====&lt;br /&gt;
* list of fulfilled and cancelled withdrawals, by date of fulfillment&lt;br /&gt;
====Financial &amp;amp; Fees====&lt;br /&gt;
* Stats&lt;br /&gt;
** Total funds on the exchange&lt;br /&gt;
*** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
*** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
** Number of buy and sell orders&lt;br /&gt;
** Number and volume of transactions&lt;br /&gt;
* Fee settings&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37200</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37200"/>
		<updated>2013-04-20T14:03:26Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Financial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial &amp;amp; Fees====&lt;br /&gt;
* Stats&lt;br /&gt;
** Total funds on the exchange&lt;br /&gt;
*** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
*** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
** Number of buy and sell orders&lt;br /&gt;
** Number and volume of transactions&lt;br /&gt;
* Fee settings&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37198</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37198"/>
		<updated>2013-04-20T13:51:58Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37197</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37197"/>
		<updated>2013-04-20T13:50:02Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders, see [[Prime Specification|Performance]] settings in admin panel&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for a signed-in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into a database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute. This isn&#039;t 100% accurate but this is acceptable.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37196</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37196"/>
		<updated>2013-04-20T13:32:01Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders (see [[Prime Specification|Performance]] Settings in Admin panel)&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37195</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37195"/>
		<updated>2013-04-20T13:31:04Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders (see [[Prime_Specification|Performance]] Settings in Admin panel)&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37194</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37194"/>
		<updated>2013-04-20T13:30:37Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Disallow small value orders (see [[Performance]] Settings in Admin panel)&lt;br /&gt;
** Prevents order and transaction spam. Spammed order book is slow to match. Spammed transaction history can become to large to handle.&lt;br /&gt;
* Limit requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected with [http://tools.ietf.org/html/rfc6585#section-4 429 Too Many Requests]&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37193</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37193"/>
		<updated>2013-04-20T13:18:44Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Security */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to lose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Limit requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37192</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37192"/>
		<updated>2013-04-20T13:16:35Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Min. order value denominated in primary currency for each market (i.e. denominated in USD for USD/BTC market)&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Limit requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37191</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37191"/>
		<updated>2013-04-20T13:13:38Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
* Settings&lt;br /&gt;
** Limit of requests per minute for signed-in user&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Limit requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37190</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37190"/>
		<updated>2013-04-20T13:10:49Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Limit requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37189</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37189"/>
		<updated>2013-04-20T13:10:01Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
===Performance===&lt;br /&gt;
* Allowed requests per minute for signed in user&lt;br /&gt;
** Further requests will be rejected&lt;br /&gt;
** Does not insert logs into database. Works buy incrementing user request_counter in scope of minute stored in request_counter_at. When current minute is larger than request_counter_at, it zeroes out request_counter and sets request_counter_at to the current minute.&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37188</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37188"/>
		<updated>2013-04-20T12:11:32Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature, TODO: is it viable? what about left funds and common history?)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37187</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37187"/>
		<updated>2013-04-20T12:10:30Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* User */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whatever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37186</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37186"/>
		<updated>2013-04-20T12:09:12Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Performance */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Hot&lt;br /&gt;
** Number of users online &lt;br /&gt;
** Number of transactions in last minute&lt;br /&gt;
** Job queue length&lt;br /&gt;
** Pending fiat withdrawals (number, volume and the longest waiting)&lt;br /&gt;
* Historical&lt;br /&gt;
** Number of transactions per hour chart (TODO: necessary in v1.0?)&lt;br /&gt;
&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37185</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37185"/>
		<updated>2013-04-20T12:04:30Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* How wallets */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
* Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Number of users being online &lt;br /&gt;
* Number of transactions per hour&lt;br /&gt;
* Job queue length&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37184</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37184"/>
		<updated>2013-04-20T12:04:10Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Financial */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell orders&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====How wallets====&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Number of users being online &lt;br /&gt;
* Number of transactions per hour&lt;br /&gt;
* Job queue length&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37183</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37183"/>
		<updated>2013-04-20T12:03:57Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
====How wallets====&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open orders&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Number of users being online &lt;br /&gt;
* Number of transactions per hour&lt;br /&gt;
* Job queue length&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37182</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37182"/>
		<updated>2013-04-20T12:03:36Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
====How wallets====&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, sing-up date, sing-up IP, last sign-in date, last sign-in IP, number of sign-ins, number of open offers&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Number of users being online &lt;br /&gt;
* Number of transactions per hour&lt;br /&gt;
* Job queue length&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37181</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37181"/>
		<updated>2013-04-20T12:01:47Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
====How wallets====&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** one user per line, fields:&lt;br /&gt;
*** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, singed up at, singed up with IP, last sign in at, last signed in with IP, number of sign ins, number of open offers&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Number of users being online &lt;br /&gt;
* Number of transactions per hour&lt;br /&gt;
* Job queue length&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37180</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37180"/>
		<updated>2013-04-20T12:01:17Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Users */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
====How wallets====&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat (Excel, Calc, etc.)&lt;br /&gt;
** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, singed up at, singed up with IP, last sign in at, last signed in with IP, number of sign ins, number of open offers&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
&lt;br /&gt;
====Performance====&lt;br /&gt;
* Number of users being online &lt;br /&gt;
* Number of transactions per hour&lt;br /&gt;
* Job queue length&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37179</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37179"/>
		<updated>2013-04-20T12:00:39Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Dashboard====&lt;br /&gt;
* To be decided what goes on a dashboard&lt;br /&gt;
====Financial====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
====How wallets====&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
====Users====&lt;br /&gt;
* Total number of registered users&lt;br /&gt;
* Export emails.csv (i.e. for mass mailing via external software)&lt;br /&gt;
* Generate comprehensive report users.csv&lt;br /&gt;
** designed to be open in a spreadsheat software (Excel, Calc, etc.)&lt;br /&gt;
** e-mail &#039;&#039;&#039;hash&#039;&#039;&#039;, total balance BTC, total balance USD, ..., paid fees, number of transactions, transaction volume, singed up at, singed up with IP, last sign in at, last signed in with IP, number of sign ins, number of open offers&lt;br /&gt;
* Search user by e-mail, username, name, or e-mail hash (to look up users from the report)&lt;br /&gt;
** View user details&lt;br /&gt;
** Deactivate / Activate&lt;br /&gt;
** Impersonate&lt;br /&gt;
====Performance====&lt;br /&gt;
* Number of users being online &lt;br /&gt;
* Number of transactions per hour&lt;br /&gt;
* Job queue length&lt;br /&gt;
====Security====&lt;br /&gt;
* Shutdown the service&lt;br /&gt;
* Rollback to the point in time (TODO: define details)&lt;br /&gt;
** &amp;quot;Rollback wreaks havoc, causes some users and exchange to loose money and can be illegal in your jurisdiction. Rollback is irreversible.  Rollback is a bad idea 99.999% of the time. Proceed only if you fully understand the consequences!!!&amp;quot;&lt;br /&gt;
** Rollback should not be available through the web app, only as a command line tool&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=37178</id>
		<title>Prime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=37178"/>
		<updated>2013-04-20T09:36:19Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commercially licensed high-end bitcoin exchange &#039;&#039;&#039;software&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Advantages==&lt;br /&gt;
&lt;br /&gt;
Prime claims to be developed with [http://en.wikipedia.org/wiki/Software_craftsmanship software craftsmanship] in mind. It strives for correctness, security, simplicity and source code beauty. No rush and careful engineering are considered more important than rich feature set and &amp;quot;time-to-market&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Estimated Time of Arrival==&lt;br /&gt;
&lt;br /&gt;
Prime is expected to be ready for purchase by the end of 2013.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
[[Prime Specification|Prime specification draft]] is a work in progress.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Development started on April 17, 2013.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Buying bitcoins]]&lt;br /&gt;
* [[Selling bitcoins]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Exchanges]]&lt;br /&gt;
[[Category:EWallets]]&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=37177</id>
		<title>Prime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=37177"/>
		<updated>2013-04-20T09:34:33Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Commercially licensed high-end bitcoin exchange &#039;&#039;&#039;software&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Advantages==&lt;br /&gt;
&lt;br /&gt;
Prime claims to be developed with [http://manifesto.softwarecraftsmanship.org software craftsmanship] in mind. It strives for correctness, security, simplicity and source code beauty. No rush and careful engineering are considered more important than rich feature set and &amp;quot;time-to-market&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Estimated Time of Arrival==&lt;br /&gt;
&lt;br /&gt;
Prime is expected to be ready for purchase by the end of 2013.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
[[Prime Specification|Prime specification draft]] is a work in progress.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Development started on April 17, 2013.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Buying bitcoins]]&lt;br /&gt;
* [[Selling bitcoins]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Exchanges]]&lt;br /&gt;
[[Category:EWallets]]&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=37176</id>
		<title>Prime</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime&amp;diff=37176"/>
		<updated>2013-04-20T09:31:01Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Advantages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Licensed high-end bitcoin exchange software.&lt;br /&gt;
&lt;br /&gt;
==Advantages==&lt;br /&gt;
&lt;br /&gt;
Prime claims to be developed with [http://manifesto.softwarecraftsmanship.org software craftsmanship] in mind. It strives for correctness, security, simplicity and source code beauty. No rush and careful engineering are considered more important than rich feature set and &amp;quot;time-to-market&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Estimated Time of Arrival==&lt;br /&gt;
&lt;br /&gt;
Prime is expected to be ready for purchase by the end of 2013.&lt;br /&gt;
&lt;br /&gt;
==Specification==&lt;br /&gt;
&lt;br /&gt;
[[Prime Specification|Prime specification draft]] is a work in progress.&lt;br /&gt;
&lt;br /&gt;
==History==&lt;br /&gt;
&lt;br /&gt;
Development started on April 17, 2013.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
&lt;br /&gt;
* [[Buying bitcoins]]&lt;br /&gt;
* [[Selling bitcoins]]&lt;br /&gt;
&lt;br /&gt;
==External Links==&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&amp;lt;References /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Exchanges]]&lt;br /&gt;
[[Category:EWallets]]&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37175</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37175"/>
		<updated>2013-04-20T09:29:26Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Stats====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Hot wallets&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
* Number of users being online and total registered&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====Export====&lt;br /&gt;
* emails.csv&lt;br /&gt;
===Actions===&lt;br /&gt;
* Stop the service&lt;br /&gt;
===Rollback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37174</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37174"/>
		<updated>2013-04-20T09:29:08Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Limitation of v1.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Stats====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Hot wallets&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
* Number of users being online and total registered&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====Export====&lt;br /&gt;
* emails.csv&lt;br /&gt;
===Actions===&lt;br /&gt;
* Stop the service&lt;br /&gt;
===Rollback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration with bitcoin only.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37173</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37173"/>
		<updated>2013-04-20T09:28:47Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Limitation of v1.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Stats====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Hot wallets&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
* Number of users being online and total registered&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====Export====&lt;br /&gt;
* emails.csv&lt;br /&gt;
===Actions===&lt;br /&gt;
* Stop the service&lt;br /&gt;
===Rollback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* While Prime is designed from ground up to support multiple cryptocurrencies, the first version will deliver integration only with bitcoin.&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37172</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37172"/>
		<updated>2013-04-20T09:26:16Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Open questions= */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Stats====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Hot wallets&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
* Number of users being online and total registered&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====Export====&lt;br /&gt;
* emails.csv&lt;br /&gt;
===Actions===&lt;br /&gt;
* Stop the service&lt;br /&gt;
===Rollback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions==&lt;br /&gt;
* Checking whether actual crypto and fiat balances cover values from a database (prevent fractional reserve)? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37171</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37171"/>
		<updated>2013-04-20T09:25:12Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Stats====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Hot wallets&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
* Number of users being online and total registered&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====Export====&lt;br /&gt;
* emails.csv&lt;br /&gt;
===Actions===&lt;br /&gt;
* Stop the service&lt;br /&gt;
===Rollback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Limitation of v1.0==&lt;br /&gt;
* No support for multiple hot and cold wallets. Only one pair of hot/cold wallet will be supported.&lt;br /&gt;
&lt;br /&gt;
==Open questions===&lt;br /&gt;
* Checking whether actual crypto and fiat balances match/cover values from a database? How to do it correctly (i.e. delays in transfers, etc)?&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37170</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37170"/>
		<updated>2013-04-20T09:24:29Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Stats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Stats====&lt;br /&gt;
* Total funds on the exchange&lt;br /&gt;
** Total funds accumulated on the exchange for each fiat (calculated from a database)&lt;br /&gt;
** Total funds accumulated on the exchange for each cryptocurrency (calculated from a database)&lt;br /&gt;
* Hot wallets&lt;br /&gt;
** Number and percentage of funds in a hot wallet (actual value taken from a bitcoind) for each cryptocurrency&lt;br /&gt;
* Number of users being online and total registered&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
&lt;br /&gt;
====Export====&lt;br /&gt;
* emails.csv&lt;br /&gt;
===Actions===&lt;br /&gt;
* Stop the service&lt;br /&gt;
===Rollback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37163</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37163"/>
		<updated>2013-04-20T00:30:25Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
* change market; market is a pair of currencies, i.e. USD/BTC, PLN/BTC&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
===Admin panel===&lt;br /&gt;
====Stats====&lt;br /&gt;
* Totals for every fiat and cryptocurrency&lt;br /&gt;
* Number of users online and total&lt;br /&gt;
* Number of buy and sell offers&lt;br /&gt;
* Number and volume of transactions&lt;br /&gt;
====Export====&lt;br /&gt;
* emails.csv&lt;br /&gt;
===Actions===&lt;br /&gt;
* Stop the service&lt;br /&gt;
===Rollback===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37161</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37161"/>
		<updated>2013-04-20T00:11:44Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
===Public API===&lt;br /&gt;
====Ticker====&lt;br /&gt;
TODO: design&lt;br /&gt;
====Trades====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
====Order Book====&lt;br /&gt;
As explained on [http://bitcoincharts.com/about/exchanges/ bitcoincharts].&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37160</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37160"/>
		<updated>2013-04-19T22:56:45Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD. Taken from both sides of transaction from the output amount.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37159</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37159"/>
		<updated>2013-04-19T22:52:11Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;br /&gt;
&lt;br /&gt;
==Non functional==&lt;br /&gt;
===Supported browsers===&lt;br /&gt;
Prime example fronted is tested on the latest versions of:&lt;br /&gt;
* Chrome&lt;br /&gt;
* Firefox&lt;br /&gt;
* Internet Explorer 9&lt;br /&gt;
* Opera&lt;br /&gt;
&lt;br /&gt;
There is nothing that prevents you from creating a Prime fronted that supports older browsers (see design).&lt;br /&gt;
&lt;br /&gt;
===Correct use of HTTP protocol===&lt;br /&gt;
* Semantic use of HTTP methods GET, POST, PATCH, DELETE&lt;br /&gt;
* Correct HTTP status codes&lt;br /&gt;
===Take advantage of HTML5===&lt;br /&gt;
* Use HTML5 to the full extent possible&lt;br /&gt;
* Aim at HTML5 validity&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
	<entry>
		<id>https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37157</id>
		<title>Prime Specification</title>
		<link rel="alternate" type="text/html" href="https://en.bitcoin.it/w/index.php?title=Prime_Specification&amp;diff=37157"/>
		<updated>2013-04-19T22:32:50Z</updated>

		<summary type="html">&lt;p&gt;Qertoip: /* Settings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Functional==&lt;br /&gt;
&lt;br /&gt;
===User===&lt;br /&gt;
&lt;br /&gt;
* sign up with e-mail activation and TOS acceptance&lt;br /&gt;
* sign in / out&lt;br /&gt;
* password reset&lt;br /&gt;
** reset link valid for 24h or one use whichever comes first&lt;br /&gt;
&lt;br /&gt;
===Settings===&lt;br /&gt;
&lt;br /&gt;
* change password&lt;br /&gt;
* change email&lt;br /&gt;
* configure two factor authentication&lt;br /&gt;
* on/off API&lt;br /&gt;
* reset API key&lt;br /&gt;
* configure email notifications (TODO: details)&lt;br /&gt;
* complete account removal (privacy feature)&lt;br /&gt;
* all changes require second method authentication (email confirmation or OTP)&lt;br /&gt;
&lt;br /&gt;
===Dashboard===&lt;br /&gt;
&lt;br /&gt;
====Order book====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
====Last trades====&lt;br /&gt;
* live chart&lt;br /&gt;
* live table&lt;br /&gt;
&lt;br /&gt;
===Account===&lt;br /&gt;
&lt;br /&gt;
* Balances for the current market&lt;br /&gt;
* History&lt;br /&gt;
** every balance change must have a corresponding transaction&lt;br /&gt;
* Open orders&lt;br /&gt;
** cancel order&lt;br /&gt;
&lt;br /&gt;
===Deposit===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* generation of personal input address&lt;br /&gt;
** internal maintenance of user input addresses (every user has a list of input addresses)&lt;br /&gt;
* displaying address and instructions to the user&lt;br /&gt;
** funding user balance with incoming bitcoins&lt;br /&gt;
*** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* internal (LAN-only) API for custom scripts to bump fiat balance&lt;br /&gt;
** create entry in account history, remember fiat tx id&lt;br /&gt;
&lt;br /&gt;
===Withdraw===&lt;br /&gt;
&lt;br /&gt;
====Bitcoins====&lt;br /&gt;
* edit bitcoin output address&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* displaying form to send bitcoins&lt;br /&gt;
** amount&lt;br /&gt;
** instructions and fee information&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* mechanism to actually send bitcoins&lt;br /&gt;
** create entry in account history, remember bitcoin tx id&lt;br /&gt;
&lt;br /&gt;
====Fiat====&lt;br /&gt;
* edit bank account details&lt;br /&gt;
* confirm with e-mail link or Google Authenticator OTP&lt;br /&gt;
* display form to send fiat&lt;br /&gt;
** amount&lt;br /&gt;
** instructions&lt;br /&gt;
** send button with summary and confirmation&lt;br /&gt;
* add FiatWithdrawal entry to the list of pending fiat withdrawal requests&lt;br /&gt;
** publish pending fiat withdrawals in internal API&lt;br /&gt;
** accept request to mark specific FiatWithdrawal as fulfilled&lt;br /&gt;
*** create entry in account history, remember fiat tx id(?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Buy/Sell===&lt;br /&gt;
* Display &amp;quot;Please be aware this is only approximation. Order book can change every second.&amp;quot;&lt;br /&gt;
* Validate order value denominated in fiat is high enough&lt;br /&gt;
** This is to prevent order and transaction spam/DOS&lt;br /&gt;
&lt;br /&gt;
====Buy bitcoins====&lt;br /&gt;
* Instant buy&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot; &lt;br /&gt;
** Technically equals to submitting buy order with infinite price.&lt;br /&gt;
* Buy with price limit&lt;br /&gt;
** &amp;quot;I want to buy [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will spend about ____ USD and receive ____ BTC after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** &amp;quot;You need at least ____ USD at hand to submit this order.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order (assuming worst case scenario)&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: max BTC user can buy, market price&lt;br /&gt;
&lt;br /&gt;
====Sell bitcoins====&lt;br /&gt;
* Instant sell&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC instantly.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Technically equals to submitting sell order with 0 price.&lt;br /&gt;
* Sell with price limit&lt;br /&gt;
** &amp;quot;I want to sell [____] BTC at price [____] USD/BTC.&amp;quot;&lt;br /&gt;
** &amp;quot;You will receive about ____ USD after fee. Average BTC price will be about ____ USD.&amp;quot;&lt;br /&gt;
** Validate user has enough funds to submit the order&lt;br /&gt;
** Block funds&lt;br /&gt;
** Match with existing orders&lt;br /&gt;
** Smart defaults: all BTC, market price&lt;br /&gt;
&lt;br /&gt;
===Fees===&lt;br /&gt;
====Transaction fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0.6% min 0.01 USD.&lt;br /&gt;
====Bitcoin withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in bitcoin, like 0% min 0.0005 BTC.&lt;br /&gt;
====Fiat withdrawal fee====&lt;br /&gt;
Percentage and minimum fee denominated in fiat, like 0% min 2 USD.&lt;/div&gt;</summary>
		<author><name>Qertoip</name></author>
	</entry>
</feed>