Hello everyone, this is an introductory post about my new project, called Tessrnet. This project is supposed to tackle the problem of distributed storage and computing.

There are many projects out there trying to solve this problem. Some of them based on Ethereum, some of them closed sourced, some only based on computing, while others only based on storage. Some using Al as their hot word, some of them with budgets in the sky, many are public companies. 

So, I’m trying to avoid all of these features because all of them have some or the other problems, which I will address in my next couple of posts. 

A little about me, I’m from India, born and brought up in Abu Dhabi, UAE. I’ve studied about computers since childhood, and also have watched and read a lot about free market economics, recently in the past year I have been taking great interest in Blockchain technologies and their implementations. 

I have been looking everywhere for a project, to involve in, that takes care of distributed storage and computing. Although because of their shortcomings, I started thinking why don’t I start something myself to do the job.

This project only aims to provide the base upon which people would be free to build whatever applications they think the public needs. No one knows what new use case would arise and what technologies need to be used.

The project wouldn’t depend on any other external Blockchains. It would have a separate infrastructure, ranging from Blockchain to wallet to dapps, etc.

Wish me luck! 

In this post I will lay down the many reasons I think other projects are not satisfactory in replacing the Internet or whatever they are trying to address.

Iex.ec is based partly on Ethereum and partly on a side-chain. The Ethereum part of the project is for payments and smart contracts. Ethereum is already spending a lot of resources for producing coins and safeguarding them while running very basic applications, this project would want to run on top of that. There is possibility that if Ethereum is affected in some way like the crypto kitties issue, this project would also be affected bringing everything to a crawl. Plus there is a side chain which also has a separate coin to use the resources and again needs to be stored somewhere. No details on transaction privacy as far as I read.

Iagon again uses, but not limited to, Ethereum and a Tangle while implementing an Artificial Intelligence to manage the resources as well as deal with data science. Again same issue with using other Blockchains which are wasteful or have lots of other dependencies leading to complications.

Sonm also uses Ethereum for smart contracts as well as implements an AI called Tensor flow from Google. Who knows Tensor flow will be relevant later, or more application specific AI would be needed for some other purpose and this Tensor Flow app may not be used later.

This is not to say they are bad projects, they have a lot of great techniques, implementations and proof of concepts which have really opened up some thinking processes in me.

It’s just best to keep such an important thing like, becoming the base of the Internet,away from depending on technologies which are still in their infancy and would obviously need to amend a lot like the upcoming changes coming to Ethereum to improve the efficiency, size and speed.

In this post we will explain how the ecosystem would work technically. This is a general walk-through as I don’t want to divulge too much information that would be used to make the system by people with good funding, and I can’t financially afford to legally fight that issue anyways.

So, about the technical aspect. This system is based on two main entities user and provider, apart from these two there would be, super imposed, skills, you could say, like transactor, coordinator, node, etc.

Images from Pexels

This is how the technical flow would go: 
- Providers come and put their unused resources up online for the users to utilize. 
- Network creates new coins and distributes to all the providers based on their available unused resources. 
- Network decides quarterly how many coins to issue daily, every 24hrs.
- User, these could be either developers or just general users, need to acquire the coins and fund their account (They can acquire either through exchange or become a provider and collect the amount of coins required). 
- User submits the work and mentions how much resources need to be assigned for it based on networks resource unit costs.
- Network blocks the funds from the user, to pay for the resources the user needs.
- Network sends work to coordinators for processing.
- Coordinators assign the work to available providers as per requirements, credibility and availability, this is a paid service. 
- Network blocks 30% of the provider’s total wallet balance via coordinator. 
- Providers send the processed data back to coordinators. 
- Coordinators forward the work to the user.
- User verifies the work, else sends back for audit. User pays for audit.

~Coordinators audit by sending work to another provider for processing and penalises the provider/user for incorrect information by consuming a part of the funds locked by the network from the erring side and lowers their credibility score.
~ User accepts work’s processed data and funds are released for paying coordinator and provider.

Features or functions not mentioned above: 
- The financial part of the service would be based on DPOS but way many more delegates.
- The delegates who process the blocks get paid based on resources used plus network decided reward. 
- The Network decides on the rate of daily coin generation on a quarterly basis based on network stats. 
- Blockchain would be trimmed regularly to keep the live Blockchain within acceptable user experience and computing/storage requirements. 
- Trimmed Blockchain data will be sharded.
- Blockchain would allow live streaming for light clients, to quickly sync them and ready them for transactions immediately. 
- Person Identity Management service will allow each person to have multiple user IDs [Public(optional-crowd verified), Private(optional-crowd verified), Anonymous] under a single Person Identity(PID). 
- We would use open source available technologies, which means well audited and tested. 
- Multiple devices can be connected to a Person Identity (PID)
- Public or Private accounts from other multiple PID can be connected to one PID like for instance in a family. They can share or collect limited(main PID decides how much the kid gets) funds from the wallet earnings.

Images from Pexels

This is my first time detailing something like this… Took lots of reading and understanding Blockchain methodologies.

Let me know what you think, or have any questions…

Phew! The previous post was a long one. Hope I’ve not given it all away to my competitors. ???? I’m actually writing this on a flight to Mumbai from Dubai! Going to meet the developers and take a break from my job, to focus on this project.

Images from Pexels

Anyways, here I will now talk about the economic workings of the system. There are simply just 2 situations, where the transactions could occur.

- Coins created by network and thus received some coins based on how much of the resource provided was available on the network. 
- Coins received by transacting with someone else already having coins.

Acquiring coins via physical, or fiat currencies is outside the system and can happen via various ways like dealing with a crypto exchange or dealing with a person directly, who already has coins via bank deposit, cash, kind, for some service or goods.

Coins are created by the network on a daily basis. The amount of coins to be issued daily would be decided quarterly based on inflation requirements and increase or decrease of activity/total resources in the network, etc. We will do extensive simulation on this to come to a final algorithm.

Values for each resource like storage, compute, bandwidth would be set every week, based on the availability of resources. So if few resources are available then the costs would shoot up, although that promotes people to provide more resources and then that would reduce the cost of using the resources. Based on demand and supply the rates would fluctuate. In the beginning the rates would vary wildly, which the weekly freeze of rates would normalize a little bit, but once we reach scale the rates would change in minuscule amounts over longer periods of time thus providing stability.

Photo by Burak Kebapci from Pexels

-All inter-wallet transactions would be charged in same coins and won’t use gas like in Ethereum. 
-Each PID(Person Identification) has a main wallet. Will have option to make anonymous payments with transaction secrecy as well, via bullet proofs and anonymous wallets. . 
- Wallets would show in terms of local currency based on exchange rates frozen at the start of each day. To help with standardizing, levelling expectations, ensuring smooth and hassle free, local physical world day-to-day transactions. 
- QR codes can be used for making payments like in China WePay. 
- Mobile wallets would stream the ledger and won’t need to download a lot to be in sync enabling them to make payments. Offline/lighter version for places like Africa will be researched and implemented if required.

Sound off in the comments below for any clarifications, suggestions, etc.

Thanks for reading my previous posts, please like, share and comment to spread the word. Now in this post, I will explain the structure in which the system will perform the main functions.

Photo by Kevin Ku from Pexels

There are three types of accounts in this system.

Provider?—?They are the provider of the resources like compute, bandwidth and storage specifically for running apps or provide data for the various services. Based on their rating, they will receive work orders for which they will be paid. Any excess unused resources are rewarded with the new coins generated from the network. Providers are divided into pools automatically by the network. They would be assigned work by the second type of accounts mentioned below.

Coordinator?— These accounts are selected as per their past performance, stability, reliability and minimum resource requirements through voting by the Providers of a pool. They receive the resource requests from apps or Developers and accordingly assign the work to the Providers based on the rating of the Providers and also the amount of payment received for completing the activities from the app or Developers. They are rewarded based on the resources used for the service plus a percentage as a premium.

Nodes?—?Apart from the elected coordinators there are also the nodes who are again elected by the providers of the pool. The nodes are the facilitators of speedy discovery of resources and caching frequently accessed data to give to the Providers. These nodes are listed with the existing providers, so that new providers can quickly get the current list of approved nodes and come up to speed with the latest required information. They are also, like the coordinators, rewarded based on the resources used for the services plus a percentage as premium.

Block Producers?—?This section of the users are assigned to process only the financial transactions and are elected by the highest level of the heirarchy of coordinators and nodes. Based on DPOS the processing of transactions would be really quick. The size of the blocks would automatically adjust according to the number of transactions, allowing the network to adjust to the spikes or dips in network usage. The Block Producers are selected(Group B) for every hour from a main pool of selected Block Producers(Group A), care would be taken that the Block Producers are removed from the list of selected Block Producers after N selections to increase variability.

Images from Pixabay

Heirarchy of the network:

  • Providers of the network will be split into pools of 1000 each automatically based on proximity. The set(C) of Providers in the pools will be changed randomly, within the subset(B) of Providers, in each country, after every time interval. Note: There will be no silo of providers based on which country they are physically in. Any spill over of providers will be grouped with other nearby countries. This is only to maintain proximity and speedy connections.
  • A subset(D) of 100 devices would be selected from each Provider pool(C). The subset would be divided 80(F):20(E) for Nodes(F) and Coordinators(E). Again same like the randomized subset of the Providers(C), the nodes and coordinators would also be randomized, although they can be reelected only for a maximum of 3 times after which they are disqualified from the next 6 votings.
  • Every 1000 groups of Providers(G) , another subset of 100 is created of Nodes(I) and Coordinators(H), so on and so forth.
  • Only the second highest level of the Nodes and Coordinators will elect the set of Block Producers(Z). The Block Producers would also be randomized after every predetermined time interval, to avoid conflict of interest or centralization, same like it would be for the Nodes and Coordinators. Out of the elected set only a few would be assigned to produce blocks for a specified amount of time.
  • The main set(A) is the total number of devices in the country.

Images from Pixabay

Example:

Providers in the network : 100,000,000

Number of Provider groups (lvl1): 100,000

Subset of Nodes(lvl2) : 8,000,000

Subset of Coordinators (lvl2) : 2,000,000

Number of Provider groups (lvl3) for every 1,000 Provider groups at lvl1: 100,000/1,000=100 (minimum requirement is 20 to create a new level)

Subset of Nodes(lvl4) : 8,000

Subset of Coordinators (lvl4) : 2,000

Subset of Block Producers (lvlN) from subset of lvl2: 1,000 (fixed amount)

Randomized subset of lvlN producing blocks for 10mins : 20 (fixed amount)

Only 20 people at a time produce blocks in sequence for a specified time interval like 2 hours. Then next 20 are automatically randomly selected from the 1000.

The voting happens every 168 hours. Each level does the voting at different times, like lvl1 at 24th hour, lvl2 48th hour, lvl3 72nd hour and so on. This is to avoid network congestion as much as possible. The 168 hours equals a weeks time or 7 levels, as even 100 trillion devices would be divided within 4 levels.

Images from Pexels

Well that’s all I can explain, and in the best way possible. Hope you like it! Please provide us with your comments, suggestions and ideas. Also don’t forget to share with your friends.

Developers are the life of a project and users are the fuel. It’s only just that developers who put their valuable time into an open source project either for themselves or for the general public, most of the times expect nothing in return, need to get some kind of recognition or reward to foster more interest in improving the service and also turn it into their main focus over time.

This greatly helps users by getting a product that isn't out to misuse the user data or monetise it unnecessarily but to ensure user is getting full utility from it and automatically the user funds the project development through continued/sustained use, like a full life-cycle.

Photo by freestocks.org from Pexels

So they can earn coins via many functions in the different stages of the development:

  • Developing the code for the app
  • Revising the code
  • Auditing and highlighting defects or loop holes
  • Testing
  • Hacking
  • GUI developement
  • UX development
  • And many more…

Developers can decide if they want to charge a fixed amount per hour/day/week/month/quarter/bi-annual/annually/one-time etc. This charge would be added on top of the charges for the amount of resources used.

Images from Pixabay

After that once we see users flocking to the app and using it, the project of the app would start receiving funds based on the usage charges defined, thus providing a monetary reward for developing and testing it.

In software development there is usually reuse of code in other app projects. So all that effort in that module is then leeched for free, which might possibly make more money than the project this module is in, so we would track modules and their code, and if it’s being used in other projects then their earning would also be shared with developers of the model being reused.

All developers would be ranked within and across projects to give them a credibility score, which will help them join other projects and also allow them to show people, in the real world, their software development prowess. Maintainers of the project would be selected based on the votes of the developers in that project to keep the views and direction of the apps on the right path.

This reward system would foster more developers investing their time and knowledge to quickly improve useful apps and thus keep the app ecosystem upto date and relevant as well as keep users satisfied.

Images from Pixabay

Thanks to all developers out there developing such great apps like VLC without asking anything in return.