arteleis
|
|
June 21, 2014, 09:24:42 PM |
|
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.
|