OpenBazaar / obips

OpenBazaar Improvement Proposals
9 stars 20 forks source link

OBIP-0005: Classifieds #15

Open drwasho opened 7 years ago

drwasho commented 7 years ago

OBIP-0005: Classifieds

Proposal: https://github.com/OpenBazaar/obips/blob/master/obip-0005.md Author: @drwasho and @cpacia

  OBIP: 5
  Title: Classifieds
  Author: Dr Washington Y. Sanchez and Chris Pacia
  Status: Draft
  Type: Standards Track
  Created: 2017-08-27

Abstract

This OBIP describes the design of a 'classified'. Classifieds enabled a user can create a type of listing that can be used as a non-purchasable ad, where settlment of the listing takes place outside of OpenBazaar's internal wallet.

Motivation

OpenBazaar currently assumes all settlement will take place using Bitcoin via its internal wallet. However, many users may wish to take advantage of OpenBazaar's growing user-base, hosting & listing infrastructure to advertise their goods and services, but settle the transaction with buyers outside of Bitcoin.

Requirements

Classifieds enable the user to create a new listing type in addition to physical goods, digital goods, and services. This listing type cannot be purchased within OpenBazaar, but allows for all of listing functionality.

Specification

The specification calls for a change to contracts.pb, where a new ContractType is enumerated: CLASSIFIED.

enum ContractType {
    PHYSICAL_GOOD = 0;
    DIGITAL_GOOD  = 1;
    SERVICE       = 2;
    CROWD_FUND    = 3;
    CLASSIFIED    = 4;
}

All nodes must reject purchases of a 'classified' listing type.

Rationale

Advantages

  1. Extends the functionality of OpenBazaar
  2. Allows vendors who are not into Bitcoin to list on a decentralised marketplace, and can serve as a gateway to draw these people into cryptocurrency

Disadvantages

  1. Search indexes will need to filter-out classifieds from physical, digital, and service listing types
  2. Dedicated interface required for viewing classifieds that needs careful thought to avoid confusion for users

Backwards Compatibility

  1. Non-upgraded nodes will not be able to create a classified. Since classifieds cannot be purchased by design, no major compatibility issues for purchasing should exist.
  2. Clients typically display a store tab or view, where all of the user's listings are visible. Classifieds would need to be excluded from this list to prevent confusion, and a scenario where a user would attempt to purchase a classified. As a result, a store tab/view should only show listing types: PHYSICAL_GOODS, DIGITAL_GOODS, or SERVICES. Incidentally this is something that would need to happen necessarily as the protocol expands to support other listings types. Filtering out the CLASSIFIED listing type is similar to filtering out listings that do not ship to your country.
  3. Search engines would need to factor-in what listing types are indexed, and what listing types are served by their endpoints. Search engines may elect to provide an endpoint dedicated to search for only classifieds.

Reference Implementation

https://github.com/drwasho/openbazaar-go/tree/new_classifieds

drwasho commented 7 years ago

@morebrownies

Have you posted the suggested schema for Classifieds @drwasho?

Is it safe to assume the schema is slightly different than a Physical or Digital good? Or, is it the same? For example, Variants, Inventory or Coupons may not be needed on a Classified listing type.

Could the Classified listing type also be used for requests? For example, I see a lot of "Wanted" classifieds on Craigslist, e.g: https://chicago.craigslist.org/nwc/clt/d/wanted-buying-beanie-babies/6290937376.html

drwasho commented 7 years ago

@drwasho

@morebrownies the 'classified' listing type has all of the functionality that physical, digital, and service listings have, so the schema is exactly the same as what we're using.

I debate whether or not classifieds should be physical, digital, or service... but then I looked at a number of classifieds examples and they're essentially a generic listing type that can be used for anything. I think that's the right way to go.

I definitely think that classifieds can be used for requests, although I'd like to create something dedicated for requests at some point that potentially smart contracts could interact with.

drwasho commented 7 years ago

@drwasho

Forgot to mention that tags would be an ideal place to put location data related to a classified.

drwasho commented 6 years ago

Most recent update to the OBIP expands the backwards compatibility section.

drwasho commented 6 years ago

I'd like to move the discussion along. @tyler-smith @JustinDrake any thoughts for impact on search and discovery?

michaelfolkson commented 6 years ago

If search indices filter out classified listings, does that mean search providers won't present classified listings? Or they optionally can?

drwasho commented 6 years ago

@michaelfolkson I think the idea is to make sure that classifieds aren't mixed with listings; but search providers can and should provide a search endpoint for classifieds that they index.

drwasho commented 6 years ago

@tyler-smith theoretically would OB1 search in its current configuration pick up classifieds? Or would you need to tweak it to only pick up PHYSICAL_GOODS, DIGITAL_GOODS, or SERVICES.

michaelfolkson commented 6 years ago

Would there be a particular conventional payment integration (e.g. Stripe, Paypal) that would be included in the OpenBazaar release? Or would those API integrations be built by external parties to OpenBazaar core devs?

HostFat commented 5 years ago

What do you think about adding a stake feature? (to avoid many useless requests)

So the user will have to block some money (with one of those https://en.bitcoin.it/wiki/Timelock), with himself or an arbiter (I'm just brainstorming), and giving a name and description of what he wants.

The other users (sellers), will scan/search for those request and they will try to see if they can give what the user wants. Arbiters will still needed, as also a reputation system. The stacked money are useful to get possible sellers interested, example: if I'll block 0.0001 BTC, and my request is "a car", probably no one will be interested to get in contact with me.

It shouldn't be forced, but I guess that it can find some use.

drwasho commented 5 years ago

We have something in the works using the upcoming OpenBazaar token for staking features like this!