Technical

Website Cryptocurrency Mining

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, tickets are distributed for unique visitors, page views and hashes found.

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

Note. Per block ticket limits are placed on the lottery to ensure a fair distribution and to combat mining-fraud.

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)

 

Further Details

 

The code snippet that website owners can install is an embedded external javascript file similar to common codes used for website analytics and advertising.

A wordpress plugin is also now available which makes it really easy to install JSEcoin on a website. https://wordpress.org/plugins/jsecoin/

The javascript code loads at a set time after the page has finished loading preventing any performance delay and SEO page speed penalties. The public block data is sent to the website users browser and will be processed while they are reading the page, the most accurate hashes sent back to the server. The server will collect all the hashes compare, check, select the best and use this to secure the blockchain.

As soon as a website visitor leaves a publisher’s site the code stops immediately. Nothing is downloaded onto the visitors PC or run after the visit to the website.

In our speed tests the crypto.subtle browser API performed very well. Hash rates exceeded 30,000 hp/s in a single browser, while this is not comparable to ASIC hardware it is more than sufficient for what we need. Further increases could be made possible using custom WASM modules in the future. SHA256 is used as the main hashing algorithm. Elliptical curve seck256k1 cryptography is used for signing and verification.

A transaction via the platform is signed in the browser and then sent to the servers for verification. It is also possible to carry out transactions and other functions via the API.

API documentation is available at https://jsecoin.com/api/

Server-side code is written in Node.js meaning all code for the entire system is javascript.

The user platform integrates with the JSE network as a client providing a simple point of entry for everyday users.

The system is currently fully-centralized with all servers being operated by JSEcoin.

The system is hosted on the Google Cloud Network and data is stored inside a Google Firebase datastore.

High volume load servers on the publisher side have been separated from the platform behind a load balancer.

A blockchain controller is installed to carry out maintenance and do essential tasks to the blockchain such as carrying out backups, selecting hashes and completing data and verification checks. This is only accessible from the internal network and does not have a web interface.

The website server runs the wordpress website at jsecoin.com and also a blockchain explorer which is available at https://blockchain.jsecoin.com

Network Diagram

The current system introduced in October has been tested at high volumes and we expect it to scale well in the future as the user base grows.

In November we have arranged for penetration security testing and also have a bug bounty program in place. The code base will be open-sourced prior to ICO once thorough security checks and code reviews are completed.

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