Technical

Cryptocurrency For Consumers

Summary

The snippet that website owners install is an embedded external javascript file similar to adsense or analytics codes. A wordpress plugin is also available to make it simple for point and click installation.

  1. The website owner signs up to the site and fills in their details. They then copy and paste the javascript code on to their website.
  2. The JS code runs on a timer after the page has loaded preventing any performance delay or detrimental effect to page load speeds. A privacy notice is provided to the user with a link to an opt-out option. The public block data is then sent to the website visitors browser via an Ajax response. This is processed while they are reading the page and the most accurate nonce sent back to the server. The server collects all the nonces compares, checks, selects the best and uses that hash to secure the blockchain.
  3. The mining rewards are distributed via a lottery system (details below). This provides a stable earnings platform for the website owners. At the end of each block, if the website user is still on the page then a new block will be sent.
  4. Webmasters are provided with stats in their login panel.

All code is written in javascript as it is the most widely used and understood code as of 2017. Javascript is unique in that it is the only code which can be run in the browser on desktop and mobile devices. Server-side code can also be javascript utilising node.js. There are benefits from frontend and backend developers using the same code.

 

Cryptography

We have secp256k1 elliptical curve ECDSA working both server side and client side in the browser. This allows users to digitally sign their transactions within the browser and verify them either server side or client side.

For hashing we use the standard SHA256 algorithm. When available we use the browsers Crypto.Subtle API as this offers near native performance. On older browsers there is a fallback SHA256 function. The SHA256 algorithm takes data of any length or size and produces a unique code string for it which is always the same length. When searching for hashes we change the data by just one digit and it calculates a completely different string of alphanumeric letters. Our miners do this calculation over and over again looking for the lowest possible value string which will have leading zeros. Below you can see some actual server console logging data which shows a completed hash being written to the blockchain.

Solved block 12212 Hash: 00000090ca96abe1b5b050eb23da924bfe435708afb2288f560b3eb8668d921b
Committing to blockchain (12212)
Verified Ledger and Block (12212) Writing Out

Mining Rewards

Publisher Mining: 1440 coins / day Lottery system (10 tickets for a completed hash (standard difficulty not 1 per block), 5 tickets for a unique user and 1 ticket for a repeat hit from an existing visitor.

Self-mining: 720 coins / day Lottery system 1 ticket per hash found.

Ad Earnings: (not yet implemented) Estimated eCPM x impressions – margin, based on market value of the cryptocurrency.

Important: earnings based on impressions, unique users and time on site rather than best hashes. This prevents high powered equipment or server farms being able to dominate the mining.

Buy in fiat currencies USD,EUR,GBP (Paypal,Bank Wire)

Buy in cryptocurrencies BTC, ETH (Address provided, ERC20/23 in development)

 

Scalability

Block size and transaction time need to be balanced with security requirements and network capacity.

Using visa as a high volume example average 2000 transactions per second, 4000 daily peak,  56,000 limit.

Target 50,000 transactions / second capacity

1kb / transaction = 5mb / second

Requires blockchain splitting as 5mb of bandwidth would be unacceptable.

Instead of a single blockchain the transactions can be split up into x number of blockchains. X could be a dynamic number to balance load. Effectively the blockchain database will be split into multiple databases creating smaller hashing requirements and distributing the bandwidth required.

As long as the hashing power grows roughly in line with the transaction volume this provides unlimited capacity.

Blockchain currently grows at around 100mb a week. We have successfully split the blockchain so that the previous blocks are logged to public historic records and balances are brought forward via a “summary” command which states all balances in the first block of the new blockchain.

This keeps the operations lean, processing is faster and less resources are required to scale.

Hash rate calculations

Average hash rate approx 20000/sec (desktop), ASIC bitmining rig = 10 TH/sec

With significantly less hashing power the application will be reliant on the security layering effect of blockchain technology. Security controls are in place to stop common attack vectors.

A target size 50-100kb block seems acceptable as this is the size of an average JPEG image. This would allow for roughly 50 transactions.

Ledger

A ledger is used to keep a balance of all users accounts. This means clients can download the ledger to get essential information without having to process data across the entire blockchain. This makes it possible for browser and app clients to interact with the blockchain directly.

 

The platform is in beta and technical specifications and details are changing on a weekly basis. Please check our blog for the latest updates.