Bitcoin Forum
November 10, 2024, 06:20:08 AM *
News: Latest Bitcoin Core release: 28.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1] 2 »  All
  Print  
Author Topic: Introducing: Bitcoin Networked Economy Specification v0.01-DRAFT  (Read 11868 times)
andyc (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
July 14, 2010, 05:00:45 AM
 #1

I've published a draft set of specifications according to my original post here: http://bitcointalk.org/index.php?topic=324.0

You can access Bitcoin Networked Economy Specification v0.01-DRAFT at the following URL:

http://bcspec.org

I would love to hear input and feedback from anyone. The goal here is not to make a perfect spec (that would be impossible), but to get something that works well enough and is as simple as possible.

In my original post, I mentioned XML. I decided to specify everything as JSON and JSON-RPC (for the planned protocol bits), because it's much cleaner, simpler, and easier to implement.

If you have any products or services you'd like to offer, you can start right now by uploading a couple of JSON files to your web host.

I plan to implement a v0.01-DRAFT-compliant spider soon, which will begin to aggregate any products and services people are offering.

-Andy
sirius
Bitcoiner
Sr. Member
****
Offline Offline

Activity: 429
Merit: 1002



View Profile
July 14, 2010, 06:22:44 AM
 #2

This sounds really interesting, might be a good way to build a web-of-trust for supporting the economy. I'll implement it on my service.

Iris — for better social networks
I'm not a forum admin - please contact theymos instead.
Anonymous
Guest

July 14, 2010, 09:17:33 AM
 #3

This is great.I offered a bounty in another thread to get merchant tools coded but it seems like you are off and running with this effort.I hope everyone sends some coins in appreciation.  Smiley.
andyc (OP)
Newbie
*
Offline Offline

Activity: 5
Merit: 0


View Profile
July 14, 2010, 01:57:27 PM
 #4

Thanks for the encouragement, guys!

sirius-- glad to hear you'll implement it. I'll plug your site in as one of the first to be spidered. Support from currency exchanges is crucial.
Bitcoiner
Member
**
Offline Offline

Activity: 70
Merit: 11


View Profile
July 14, 2010, 04:42:13 PM
 #5

Nice job, Andy!  Really glad to see community members taking the initiative to drive projects like this.

Want to thank me for this post? Donate here! Flip your coins over to: 13Cq8AmdrqewatRxEyU2xNuMvegbaLCvEe  Smiley
dwdollar
Full Member
***
Offline Offline

Activity: 202
Merit: 109


GCC - Global cryptocurrency


View Profile WWW
July 14, 2010, 09:29:08 PM
 #6

I really like where you're going with this.  Let's keep this active.

mtgox
Full Member
***
Offline Offline

Activity: 185
Merit: 102


View Profile WWW
July 19, 2010, 03:20:25 AM
 #7

Nice work! Good to get this stuff organized early. I implemented it (hopefully correctly) with my exchange.

I have a question though about currencies that are not traditional. How should we list them? For example I want to add a virtual currency from a game. Should I just make up a reasonable pair symbol that isn't taken?

For this: bitcoin/fxchange.pairs.json

Vasili Sviridov
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
July 19, 2010, 08:23:02 AM
 #8

A browser extension (greasemonkey maybe) would be cool, to show a bitcoin icon (similar to https lock) to show that a site participates in bitcoin economy.

Also, perhaps more attention should be focused on supporting microformats, so the bitcoin economy is not only site-specific, but even item-specific on a page. (by microformats i mean information embedded in html markup, rather than external json files. More info @ http://microformats.org/)

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
melvster
Sr. Member
****
Offline Offline

Activity: 350
Merit: 250


View Profile
July 25, 2010, 01:01:58 AM
 #9

I've published a draft set of specifications according to my original post here: http://bitcointalk.org/index.php?topic=324.0

You can access Bitcoin Networked Economy Specification v0.01-DRAFT at the following URL:

http://bcspec.org

I would love to hear input and feedback from anyone. The goal here is not to make a perfect spec (that would be impossible), but to get something that works well enough and is as simple as possible.

In my original post, I mentioned XML. I decided to specify everything as JSON and JSON-RPC (for the planned protocol bits), because it's much cleaner, simpler, and easier to implement.

If you have any products or services you'd like to offer, you can start right now by uploading a couple of JSON files to your web host.

I plan to implement a v0.01-DRAFT-compliant spider soon, which will begin to aggregate any products and services people are offering.

-Andy

This looks very cool.  I've already partially integrated bitcoin into the FOAF distributed social network. 

If we can also make the meta data well namespaced (e.g. with RDF style), this stuff could scale really well, and hopefully be deeply integrated with the Web.  Maybe we can try and get this to standards level too ... one thing at time tho ... a great start!
bc343336
Newbie
*
Offline Offline

Activity: 1
Merit: 0


View Profile
July 25, 2010, 07:22:17 PM
Last edit: July 25, 2010, 09:32:37 PM by bc343336
 #10

For the JSON

Code:
 { "pair": "BCUSD", "buy": true, "sell": true }, 

Please specify, does "buy" true mean the site buys BC paying USD, or that the site buys USD paying BC?

(Also note the HTML at the site shows invalid JSON -- missing quote after the sell field name and before the colon.  Use jsonlint.com to check your JSON.)

Probably better to break the pair up into both parts, you may not be able to tell how a string can be broken into two currency symbols.  Especially when using non ISO currency symbols.  Maybe

Code:
 { "pair": { "first": "BC", "second": "USD"}, "buy": true, "sell": true }, 

And one more thing, most folks here seem to be using BTC as the currency symbol for Bitcoins

-- bc3
sirius
Bitcoiner
Sr. Member
****
Offline Offline

Activity: 429
Merit: 1002



View Profile
July 26, 2010, 05:34:15 PM
Last edit: July 26, 2010, 06:22:20 PM by sirius-m
 #11

I'm writing a modular Django app that implements this and is relatively easy to integrate with your own systems. It would be cool if someone did a similar php application.

What interest me most are the "Friends" and "Blacklist" specifications, since they can be used for building a web-of-trust, and I don't think we should limit this to the Bitcoin economy only. Should we use a URL or some other unique identifier instead of a domain name, so you could rate services or individuals who don't have a domain of their own? That would integrate better with social networking systems like Diaspora. Some services also accept https connections only.

Iris — for better social networks
I'm not a forum admin - please contact theymos instead.
sirius
Bitcoiner
Sr. Member
****
Offline Offline

Activity: 429
Merit: 1002



View Profile
July 26, 2010, 06:31:45 PM
 #12

In a reputation network the reviews could be digitally signed so others could mirror them on their domains. Diaspora's GPG support could be utilized.

Iris — for better social networks
I'm not a forum admin - please contact theymos instead.
melvster
Sr. Member
****
Offline Offline

Activity: 350
Merit: 250


View Profile
July 26, 2010, 06:58:03 PM
 #13

I'm writing a modular Django app that implements this and is relatively easy to integrate with your own systems. It would be cool if someone did a similar php application.

What interest me most are the "Friends" and "Blacklist" specifications, since they can be used for building a web-of-trust, and I don't think we should limit this to the Bitcoin economy only. Should we use a URL or some other unique identifier instead of a domain name, so you could rate services or individuals who don't have a domain of their own? That would integrate better with social networking systems like Diaspora. Some services also accept https connections only.

Diaspora isnt even released yet.

Have you thought about using FOAF?

http://www.foaf-project.org/

(ive spoken to the disapora folks and they should hopefully be compatible with foaf too -- gnu social is -- and google are getting on board).  I've already posted to Gnu social and diaspora about bitcoin ...

FOAF havent the big marketing effect of disaspora, it's a grass roots effort that's been going 10 years, and already has a distributed social net of 100 million users, and lots of working code.  No other system of its kind comes close.  This is the system favoured by web standards (W3C).  Quite a few of us are building things with FOAF, so I'd really hope it's compatible with bcspec.  

Here's an example of decentralized browsing of profiles.

http://foaf-visualizer.org/?uri=http://www.w3.org/People/Berners-Lee/card

To endorse someone simply put A  foaf:knows B in your foaf file.  And you've started a white list.  I'm starting to build bitcoins solutins too ... so hopefully we can keep in touch!

Note: I've *already* integrated bitcoin into my foaf ... and a web of trust is being built.  

Code:
<rdf:Description rdf:about="#bitcoin1">
    <foaf:accountServiceHomepage rdf:resource="http://www.bitcoin.org/"/>
    <foaf:accountName>
        1J4F6Beb2zFSuoyj15mdhw3HA7KkEVa8DS
    </foaf:accountName>
</rdf:Description>
lachesis
Full Member
***
Offline Offline

Activity: 210
Merit: 105


View Profile
July 27, 2010, 03:10:50 AM
Last edit: July 27, 2010, 04:20:04 AM by lachesis
 #14

I would combine pairs and quotes into one reference. My ideal syntax would be something like
Code:
{
  "updateTime":1280200412,
  "specVersion": 6,
  "marketOpen": true,
  "pairs": [
    { "pair": {"buy":"BTC", "sell":"USD"}, "lastTradeTime":1280200411, "bid": 0.050, "ask": 0.055, "last": 0.052, "vol": 1000 },
    { "pair": {"buy":"BTC", "sell":"EUR"}, "lastTradeTime":1280200200, "bid": 0.025, "ask": 0.027, "last": 0.026, "vol": 0 }
  ]
}

This format is evolving. I'd be glad to take suggestions on what the field names ought to be. I could see replacing "sell" with "with" or something. That makes sense in English: buy BTC with EUR.

Also, it might be better to replace Unix timestamps with one of the RFC 3339 timestamps:
Code:
1985-04-12T23:20:50.52Z
To make things simple, they should probably always be given as UTC timestamps; this is more restrictive than RFC 3339, which allows
Code:
1996-12-19T16:39:57-08:00
to indicate a timezone of UTC-8 (Pacific Standard Time).

strptime(), a function of at least PHP, Python, and C (and probably everything else), can easily parse this date back into a unixtime, and it's much more readable than "1280200412".

We should also define volume: I've always interpreted it as the sum of the values of the trades that completed within the last hourlast 24 hours. Thanks klba.

Bitcoin Calculator | Scallion | GPG Key | WoT Rating | 1QGacAtYA7E8V3BAiM7sgvLg7PZHk5WnYc
kiba
Legendary
*
Offline Offline

Activity: 980
Merit: 1020


View Profile
July 27, 2010, 04:19:15 AM
 #15


We should also define volume: I've always interpreted it as the sum of the values of the trades that completed within the last hour.

I thought volume is defined by how many bitcoins were exchanged in the last 24 hours.

Vasili Sviridov
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
July 27, 2010, 05:22:02 AM
 #16

Why do you do this:
Code:
"pairs": [ 
    { "pair":
?

This is not XML, no need to wrap it in yet another layer...

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
lachesis
Full Member
***
Offline Offline

Activity: 210
Merit: 105


View Profile
July 27, 2010, 07:24:08 AM
Last edit: July 28, 2010, 01:00:20 AM by lachesis
 #17

Why do you do this:
Code:
"pairs": [ 
    { "pair":
?

This is not XML, no need to wrap it in yet another layer...
How else would you encode a list inside a dictionary?

-- EDIT --
I suppose I could remove the { pair: {"buy": "BTC", "sell": "USD"}... } nesting and just make tags in each pair's dictionary:
Code:
{
"version": 7,
...
"pairs": [ { "buy": "BTC", "sell": "USD", "ask": 0.005, "bid": 0.004, "last": 0.0045, ... }, ... ]
}
That might actually be better than how I had it. Anybody have an opinion?

Bitcoin Calculator | Scallion | GPG Key | WoT Rating | 1QGacAtYA7E8V3BAiM7sgvLg7PZHk5WnYc
sirius
Bitcoiner
Sr. Member
****
Offline Offline

Activity: 429
Merit: 1002



View Profile
July 28, 2010, 04:43:19 PM
 #18

I'd also change the address to domain.com/bcspec.

Iris — for better social networks
I'm not a forum admin - please contact theymos instead.
Vasili Sviridov
Member
**
Offline Offline

Activity: 102
Merit: 10


View Profile WWW
July 28, 2010, 09:20:14 PM
 #19

I suppose I could remove the { pair: {"buy": "BTC", "sell": "USD"}... } nesting and just make tags in each pair's dictionary:

That's exactly what I meant.

1JHYtsmsGq2McwGHmWayVjVtHds8rp1R5
lachesis
Full Member
***
Offline Offline

Activity: 210
Merit: 105


View Profile
July 28, 2010, 10:02:37 PM
 #20

So andyc, any comment on this? As the bcspec.org maintainer, it would be nice to hear your ideas.

Bitcoin Calculator | Scallion | GPG Key | WoT Rating | 1QGacAtYA7E8V3BAiM7sgvLg7PZHk5WnYc
Pages: [1] 2 »  All
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!