:: [unSYSTEM] Satoshi Road
Page principale
Supprimer ce message
Répondre à ce message
Auteur: Robert Williamson
Date:  
À: System undo crew
Sujet: [unSYSTEM] Satoshi Road
Posting here, since darkwallet mailing list seems to have some problems.

I've been thinking for sometime about how to implement a decentralised
marketplace, more importantly a method for decentralised reputation and
more recently I found out satoshi tried to do it first.

Silkroad was more than just a site for listing products, it handled
reputation, acted as a middleman for payments (keeping them fairly
anonymous via mixing) and ensured that a seller couldn't easily "cheat" and
give them a falsely positive reputation without having to pay an amount of
fees. All of this is assuming the website or any of its employees don't
collude to edit the centralised database and add false entries.

You come down to the issue of privacy vs verifiability.

We can easily assign a reputation to a certain public key and have that
reputation stored inside a the blockchain/twister/dht, however without
proof of payment (and some proof of sacrifice/fees), it's easy for a seller
to create many orders to themselves and give themselves fake feedback.

One simple way to do this is signing a statement with a pgp key or well
known ecdsa key.

================
Send 1BTC to 1AbCdEf..., and i'll send you x product
================
signature
================

This way the buyer and seller have an agreement in place, if the seller
does not keep to his word, the buyer can release this statement and
signature publicly (potentially compromising the privacy of them both).
This is pretty much what the payment protocol wants to do except with X.509
certs.

This doesn't help you establish if the buyer is a genuine person or not.
Even if this is in the clear net, it's trivial to get a signed cert for a
domain which people would automatically trust (green padlock is good am i
rite?)

One option is to use mpks, or BIP32 master keys as identity management.
BIP32 can always create a new branch from the same level to get a new,
clean identity.

Buyer and seller do diffie hellman with a nonce, to get a shared secret.
(this shared nonce could be the last block hash or something else which
can't be easily lost) we ec multiply this shared secret by G, to get a
shared public key and embed that into the payment tx using OP_RETURN.

1BTC ------> 1AbCdEf
OP_RETURN <shared pubkey>

tx gets confirmed, seller performs his side of the contract and buyer can
take the tx hash, write a review and sign it with his master key and the
shared key, seller can also do the same with his key and the shared key,
these reviews can then be published to twister/dht/sellers website where
anyone can see.

The diffie hellman is necessary to prevent the buyer or seller just signing
any transaction in the chain.

Problems with this,
payment tx becomes public knowledge,
ability to bloat the database by people mass creating reviews.
buyer can change the shared key embedded meaning the seller cant write a
review.



Out of curiosity, I decided to look up the source for the first release of
Bitcoin to see what the code was like before my first look at it in early
2011.

I was surprised to find Bitcoin 0.1 originally shipped with classes for
CProduct, CReveiw and CMarket in market.h and market.cpp, complete with UI
elements, until they were removed by satoshi in 2010, due to what looks
like it would be a massive dos flaw. It was a lot more than the pay to IP
system I was expecting.

There is some code for connecting to a node directly to fetch more
information about a product (hence no anonymity), some html being rendered
to display to the user, relaying reviews and handling orders.


This commit is where the market.cpp was removed.

https://github.com/bitcoin/bitcoin/commit/5253d1ab77fab1995ede03fb934edd67f1359ba8

See connecting to seller,

https://github.com/bitcoin/bitcoin/commit/5253d1ab77fab1995ede03fb934edd67f1359ba8#diff-22c86ca5909919c8a75ddb5678188bc1L2946

and showing html for products and reviews
https://github.com/bitcoin/bitcoin/commit/5253d1ab77fab1995ede03fb934edd67f1359ba8#diff-22c86ca5909919c8a75ddb5678188bc1L3000


signing a review,
https://github.com/bitcoin/bitcoin/commit/5253d1ab77fab1995ede03fb934edd67f1359ba8#diff-22c86ca5909919c8a75ddb5678188bc1L3285