home about donate
Under construction.

1. What is SpareCycles.org?

SpareCycles.org is an experiment.

SpareCycles.org is a market for spare computing cycles.

SpareCycles.org is an advertising board. Computers advertise their spare cycles. Taskers advertise their tasks. Escrows advertise their payment processing and dispute resolution services.

SpareCycles.org is not a business. It holds no customer money. It charges no fees. It is done for the love of empowering people with computational cycles on-demand at a price near that of electricity.

The end goal is for SpareCycles to become a protocol like BitTorrent, with zero barrier to entry.

2. What are the economics?

From oil exploration to media processing to scientific simulation, there is an always growing need for computing power. As former employees at one of the world's largest supercomputers, we know first hand about the unending demand for compute resources.

Supercomputers and cloud computing companies must cover infrastructure, operating costs, and salaries. Our infrastructure is personal computers which are already paid for. Our costs are electricity and optional escrow fees. Our salaries are zero. Furthermore, our market is worldwide and has zero barriers to entry -- perhaps a perfect market.

Fees are whatever the computer and tasker agree upon, plus fees for optional escrow. To promote a healthy market-depth, we expect market makers to get a discount for providing convenience to market takers.

3. What should taskers consider?

SpareCycles.org is for anyone who needs computational power. Possible uses include media production, CAD, scientific computing, stateless webapps, compiling and testing, machine learning and decision science, etc.
  • Taskers provide a WebAssembly module for execution. (LLVM IR and GPGPU support are planned.)
  • Taskers can offer a higher price for immediate computation, or an economical price for eventual batch processing.
  • Parallelism is possible by breaking tasks into independent subtasks which can be executed concurrently. Future versions of Wasm will support threads and SIMD.

3.1. What about computation integrity?

Computation integrity is whether the computer returns the actual computed output. This is a difficult problem. One practical solution is security deposit confiscation after dispute resolution. Another practical solution is web-of-trust and reputation.

The following heuristics can be used to help limit and identify whether junk data was returned.

  • Redundancy. Compare results from (hopefully) independent computers.
  • If the computation is long but can be quickly verified (e.g. NP with exponential runtime), then just verify the result.
  • Embed many computations together, some for which the result is known. Return this known result along with the output, and check whether the known result is correct.
  • If the return value takes a certain form, verify it.
    • For example, use visual inspection for graphics rendering.
    • For example, select from the family of Hamming codes to encode the result of each task. Verify locally.
  • Submit a percentage of tasks with known outputs, so adversaries will be caught soon with high probability.
  • Timing analysis over different length computations, dispute if result is returned too early.
  • Frequently re-obfuscate the code to hinder reverse-engineering any of the above methods.
  • More coming soon.

3.2. What about data privacy?

Some options for privacy follow.
  • Strong solutions:
    • Use cryptographic tricks. For example homomorphic encryption allows operating on the encrypted data without decrypting it.
    • Require the computer to use an enclave (memory encryption) such as SGX or SEV. Must trust the hardware maker, and be aware of recent security vulnerabilities.
  • Weak solutions (these can be combined):
    • Encryption: Send encrypted data, then use the program to decrypt it and encrypt the output before returning it.
    • Obfuscation: Obfuscate the data with junk data. Perform computations over all of the data.
    • Security through obscurity: define an obscure VM, then execute opcodes in this VM.
    • Break the computation into parts which are executed by (hopefully) independent computers.

4. What should computers consider?

We all have our spare computing cycles on our laptops, desktops, and even phones and servers. Why not earn money by renting them. And turn your computers into free electric heaters in the Winter. To begin, enter your parameters and limits and click "Start/Stop computing.". A "CPU utilization" slider is available so that you can rent only some of the cycles.

Security was a top priority from day one. Web browsers are battle-tested to execute untrusted code in a sandbox, enforcing memory safety and same-origin policy. But it is still wise to backup your computer before using SpareCycles.org.

Some tips: Earning higher rates per cycle often requires a security deposit. If you have many cores on your cpu, then use many tabs (webworker support and native applications are coming soon).

But be careful. Even if your behavior is good, you may be victim to cosmic rays, bad memory chip, failing network, or cpu giving wrong output (consider disabling Intel hyperthreading). When you click "Stop computing", all current tasks will finish. If you close your browser before finishing a task, your security deposit may be confiscated.

5. What should escrows consider?

Anybody could be an escrow agent, there is no barrier to entry. But the most successful escrow agents build a reputation so that they are chosen by taskers and computers.

Escrow agents accept deposits, hold balances, and allow withdrawals. Escrow agents oversee tasker-computer relationships, and have policies which they follow in dispute resolution.

Some taskers and computers prefer decentralization. For this, escrow agents participate in escrow pools, where they are chosen based on cryptographic randomness, and they follow threshold or hierarchical schemes when performing dispute resolution.

6. How are disputes handled?

The tasker and computer have the option to agree upon a dispute resolution scheme, escrow agents, and security deposits. When a dispute arises, the escrow agent follows the scheme, confiscating the security deposit of the misbehaving party and rewarding the well-behaving party.

Schemes can range from simple re-computation by an escrow agent, to more complicated schemes with pools of randomly-selected voting escrow agents, or even hierarchies of escrow agents.

7. How do I perform account administration?

Account administration is performed by cryptographically signing a request. The format of these requests is being developed.

8. Why WebAssembly?

  • WebAssembly is a popular standard with a large ecosystem.
  • WebAssembly is fast, approaching native speed.
  • WebAssembly code is small, often 80% the size of native binaries.
  • WebAssembly is safe, designed to execute arbitrary downloaded code. Control flow is known statically. Memory is zero'd before use and access boundaries are strictly enforced. WebAssembly is so safe that, in the name of performance, it is being executed it in security ring 0, see nebulet, cervus, or wasmjit.
  • WebAssembly has a structure which allows static analysis for things like metering and transforming the code, which opens many possibilities for both taskers and computers.

9. What is your privacy policy?

Please do not send us your private information.

10. What about decentralization?

We plan to build a decentralized version if we meet our funding goals.

11. What currencies do you support?

Whatever the individual tasker, computer, and escrow support.

12. Why does the website look so outdated?

To minimize browser workload, and to minimize security risks from javascript.

13. What are the licenses or restrictions of SpareCycles.org?

We will open-source everything if we meet our funding goals.

14. Creating a Task

TODO: How to compile sample C/C++ to WebAssembly which can be deployed on SpareCycles.org.