Abstract
From the introduction of Bitcoin by its creator Satoshi Nakamoto, the world has been
fascinated by this new form of currency. The greatest invention of Satoshi Nakamoto
was not Bitcoin, but the blockchain, and its far-reaching possibilities are only just
being uncovered.
The blockchain is the underlying structure beneath the digital currency that allows
everyone to reach a consensus without having to trust any single entity,
This paper will address a new use of the blockchain while keeping the first use of
Bitcoin as a currency and provides an incentive via the proof of stake system to
support the network.
The system proposed is based on the Bitcoin and peer-to-peer protocols. The
Blockchain will be used to handle user registration while the BitTorent network will
handle the distribution of encrypted data via a distributed hash table to insure fast
delivery. Once we are able to identify people via public keys and handle the
registration process with the blockchain while keeping them anonymous,
centralization is no longer needed.
I. Introduction
The invention of Bitcoin had such an impact on society because centralization is
becoming a major concern. If we look at the this problem of centralization on a global
scale, we see more and more dictatorships and even democratic countries shut
down social media and websites, censor information, block access to data or services,
hinder free trading, spy on citizens, seize bank accounts and in general hamper the
freedom of the general public.
Most of peoples private information and everyday actions are handled and observed
by the hands of a small number of people due to centralization. It is for this reason
that censorship and blockage is so easy, due to the fact that most of these
organizations have comply with governments leaders regarding services provided in
their country. This flaw also makes it inherently more vulnerable to attackers.
E.g : “Censorship of Twitter occurs in many countries and is approved of and
supported by Twitter.” Wikipedia There are many examples that can be cited here, we can talk about the Arab Spring,
web censoring going on in multiple countries, reports of internet wide scaled
wiretapping, Wikileaks, Mt.Gox, think of every kind of injustice freedom suffered
during the last decade as a result of centralization. At a smaller scale everyone has
had to face these kind of problems once in their lives. We are in need of a new world,
a decentralized world.
The main issue we always had was solved by Satoshi Nakamoto with the blockchain.
But rather than only for a use in a currency, the blockchain can be leveraged to store
any form of data and approve its validity by the consensus (mining) system.
Most systems need centralization because we must be able to authenticate users and
prove their identity, so we need a centralized registration, but what if the Blockchain
was leveraged to store registrations? No accounts could be taken down or censored
and by linking usernames to public keys encryption becomes a lot more user-friendly.
In this paper we propose a new form of currency revolving around an eco-system all
based on the Blockchain. Providing anonymity to whoever needs to express
themselves in any possible way, being resilient to any attacks like those that may
occur with Bitcoin whilst being resilient to censorship, with a decentralized user
registration, providing secure communication and identification via encrypted
communication.
With blockchain authentication and near instant encrypted data delivery via the P2P
network we can think of an unlimited number of uses for this system, we will focus
on the social network and exchange in this paper.
II. Registration Process
In Bitcoin, the Blockchain is used as a means to avoid double spending problems
without the need of a central authority. The same can be applied to registrations. The
data will be included in blocks and will need to get a certain number of confirmations
before being accepted by the network, checking for user uniqueness. This system
provides us a mean to avoid centralization which was previously needed to handle
user authentication. At the same time it will link the public key to your user name
improving usability and user-friendliness.
Each block will now include user registration in the following manner: Blocki
= [i,Hash.Blocki
,nBitsi
, Noncei
, [Array of UserReg]]
User registration array will be constructed as :
UserRegj
= [Usernamej
,PubKeyj
,Noncej ,Repj]
Upon a new user registration, UserReg will be broadcast to the network and validated
after a number of confirms in the same way that transactions are confirmed in the
Bitcoin protocol enforcing uniqueness of the user except if the Repj
changed or in the
case of key replacement. The blockchain will provide a public dictionary linking the
Public key to the username to reputation. This is how other clients will be able to
identify users, getting rid at the same time of the long public key string.
What we did here is assign a username to a public key and a reputation score, written
in a public dictionary coded into the blockchain resilient to any form of attack. In
other words a secure decentralized registration system, resolving the registration
process is the key to everything.
III. Resource storage
To achieve instant delivery of content we will be using the P2P network. A distributed
hash table like Chord or Kademlia will permit to easily retrieve specific data from
specific peers in no time. To get more information on this subject and how this works
read the Kademlia Wikipedia page.
The main problem with those types of networks is that user identification is very easy
since the distributed table needs to identify the user when connected to the network.
This would compromise privacy of users, so to protect their IP and identity we will be
hashing their IP via ID[nodej]=Hash([ IPj
,port])
Data in the distributed hash table will be sent from the source to the receiver
including the source ID, receiver ID, encrypted signed data and ID of the signer. The
sender may be different from the signer, if the data is just re-transmitted. So all kind
of data will be shared over the network following: Packet = [IDdest, IDsrc, SIGj(data), IDj]
The data is a payload defined by [target,value,time,seq] where target = [owner,
resource, restype,cat] and data is signed content from user j.
Each node must check before storing data the validity of the payload checking : IDdest = hash(target) to ensure the destination node is properly computed and that
IDdest is a neighbor of the node receiving the storage request.
If the restype is “single” IDj must be equal to the hash of the owner. Seq must be
greater than last seq if restype is “single”.
Time is a valid timestamp.
Restype can be single or multi, multi is used for data collecting from multiple users
for instance answers to a message or contact through a trade. Single on the other
hand is to handle data that can only be updated by the owner like a profile picture or
a trade offer.
If the restype is multi, data may expire according to the time field. Single on the other
hand will take over multi if needed.
Cat is the category it fits in exchange and social feature data have different behaviors.
So any data can be shared via the distribute hash network with near instant delivery,
stocking it on multiples nodes without any security or forgery issues thanks to the
registration system. The application we just presented is known and used on other
P2P networks and is fully operational.
IV. The P2P Swarm Network
Instead of doing constant polling over the distribute hash table, the distribution of
new posts will be handled by the torrent swarm of posts. The system is the same as
the BitTorrent P2P protocol, except in the BitTorrent protocol files are divided into
pieces and the torrent file is used to check the integrity of the hashes. Here the
checking is useless since all messages are user signed and their integrity can be easily
checked.
The BitTorrent network also utilizes distributed hash tables to decentralize trackers as
we do. The tracker is a special DHT resource addressed by IDtracker_j= Hash([Uj
,
“tracker”, “multi”+) to increase the difficulty of a tracker poisoning attack involving
fake peers and to be able to broadcast posts from 0 followers, the IDj node neighbor to the IDtracker_j is required to join the swarm. Additional peers are then obtained by
exchanging with other members. So the first step to follow a user j is to send a
distributed hash table GET to acquire an initial list of peers from IDtracker_j .
Any member of the swarm may announce new posts, this is how data is handled so
fast without constantly polling from the table. To improve privacy even more, nothing
in this scheme requires the poster to announce his post, the swarm takes care of it.
Also, following the BitTorent scheme, swarm members are identified by their address
IP but since the public dictionary only provides public key to username data, the
identities of the IP remain anonymous.
Posts per account are limited per day to avoid spam attacks, and too much data being
handled by nodes. The current set value is 400 post per day calculated with the time
of the last block, the time of the registration block of the user and the time per block.
V. Application, Social and Exchange
All will be built on the same model: data based. The exchange will visually look
similar to the LocalBitcoins.com exchange, working a bit like a marketplace. Here the
reputation will be visible when you post trades/answer, but since we cannot only rely
on a reputation system for trades we will also include pool voting. A voting pool
distributes the role of an arbiter in a multi-party and reduce the risk of fraudulent
behavior, for more details head over OpenBazaar pool voting .
Ads and Posts
Market ads will be handled just like posts, each user will have a trading profile and
any message will be handled by UserPostjk = SIGj([Usernamej
, k, type, postk
, replyk
,
orderk)+ k is an increasing constant and j the user, type defines if it’s a new post, a
reply, a retransmission, a direct message or a market order. The post may contain a
message to be posted, and is limited to 400 characters. Reply is optional and is a
pointer to a reference post or offer. Order is only needed if cat is equal to the
exchange and holds an array defining the asked price, mean of payment and order
type.
When a new order or post is created two PUT request are sent : IDUserPost_jk= Hash([Usernamej
, “post” + k, “order”+k, “single”+ and IDswarm_j =
Hash([Usernamej
, “swarm”, “single”+) where IDUserPost_jk is a post storage address and
provides post retrieval ability. IDswarm_j is a gateway address to reach a torrent swarm.
The swarm contains all the users posts and helps sharing them over the distributed
table network. Neighbors of IDswarm_j are required to join but swarm members can
only recognize themselves by IP since username must remain anonymous, although
the user j may quit his own swarm for privacy purpose (hide his IP on the swarm
delivering his post).
The swarm insures swift notifications by distributing new posts without needing to do
constant polling on the network.
If a market ad was created, the order must be posted and detected by the whole
network and categorized someone. So a copy of the message and the order are sent
to a multi-value list storage IDmean_t = Hash([meant
,“mean”,”multi”)+
A new swarm is created similar to the IDswarm_j , posts including the same mean of
payment will be routed to neighbors members of the swarm and broadcasted to the
swarm’s members. Providing a distributed tracker and broadcaster for members
interested in this mean of payment.
Searching for market ads by prices can also be achieved by using the same
mechanism IDpricerange_t = Hash([priceranget ,”pricerange”,”multi”)+ , except here prices
are grouped by range.
Groups will be created in the social feature revolving around the same rules, which
means that anyone can join and groups cannot be private.
Trade Handling
There will be two separate “Profile” types, the Social profile and the Trading profile.
Both are separated. In the trading profiles posts will format themselves according to
“Order” field. Once an agreement is settled escrow may be enabled and secured by a
pool of arbiters randomly selected into both parties trade followers (trade followers
are separated from social followers and escrow is optional). Once the transaction is
done the feedback will remain for a while on the traders profile stored as multi and a
trust rating will be given to the seller and included in following blocks as seen in the
first part forever. Traders will be able to run long term businesses with users while
still making use of centralized exchanges for those who need.
Private messages
Private messages are needed to be able to interact with other users, and in privacy
encrypting messages easily with public keys. To be able to send private messages it is
mandatory that the two parties follow each other. A user Uj
sends a message to Ul
,
order field is optional:
Postjk=SIGj(*“”,k,”message”,*PUBKl(Mk),Hash(Mk)]])
The private post feature is almost the same as the post except for the
[PUBKl(Mk),Hash(Mk)].
Private messages will appear on the public profile but the message will be encrypted
and sender remains anonymous, only the recipient of the message/offer will be able
to see the content of the message.
Posts in general can also be retrieved via an explicit message request without the
need to join the swarm by retrieving values from IDpost_jk . This will lighten the use of
the network and facilitate data flow for message thread navigation.
VI. Conclusion
The proposed model of Crypto-currency will provide an Eco-System with security,
scalability, privacy features and censorship free features. The key of this system is the
registration handled by the blockchain, such P2P networks may already exist but all
via centralized registration and no incentives for users to support the network.
The whole system is based on Bitcoin and P2P, those two networks have proved in
the past to be resistant to attacks. In order to be able to trade on a data-based
system, a reputation algorithm will be enforced stored on the blockchain and pool
voting will be used to solve disputes.
The communication between users is secured and easily encrypted while data is
served almost instantly via the distribute hash table. With such a system, not a lot of
data needs to be included in the blockchain since it is handled by the P2P network.
This opens the door to many different uses, we can decentralize any existing system
(Marketplace, Wikipedia…), but too much data would hurt scalability/memory usage
of the network and go against the main decentralization idea, so the solution to this
would be better to spread services over different currencies.