eldenpark / verifiable-computing

Verifiable work delegation and ENS (Ethereum Name Service) indexing
MIT License
1 stars 0 forks source link

Implementation #1

Open eldenpark opened 4 years ago

eldenpark commented 4 years ago

Verifiable Computing Module

This document details the implementation of a 2-layer Ethereum tethering module, VCM.

Programming Language

To fully maximize the performance of given hardware, a low-level programming language which can be compiled down to the native binary code is to be used.

C++17

Use of Ethereum

Verifiable-computing leverages Ethereum, an open-source blockchain to make work delegation as reliable as possible.

Ethereum client node In order to tap into a public Ethereum network, VCM needs to connect to a client. Accessing the network, however, does not mandate running a client application on one's own. 3rd party services such as Infura might as well be used to develop, test, and run the module.

Module Breakdown

VCM entails a set of off-chain application and a protocol compliant smart contract. In this document, we call OCA and Contract, respectively.

OCA

The main routine of OCA is to listen to various events from the Ethereum network and to respond with a set of predefined rules. Ethereum client emits different types of events that listeners can subscribe to. OCA subscribes to those events and sends transactions if necessary by using Remote Procedure Calls (RPCs) to the client application.

struct state:
  int workRateLimit

function routine():
  subscribeToEthereumClient(EVENT_TYPE, contractId, callback);

function callback1():
  rand := generateRand()
  sha := hash(rand)
  send(contractId, sha)
  subscribeToEthereumClient(EVENT_TYPE, callback2);

function callback2():
  work

Contract

contract {
  bool isServiceable // tell whether this contract is busy

}
gshanr commented 4 years ago

Please list all the variables, lists, and other values that are going to be used by this smart contract. Think about the scalability issues, but we don't have to address it at this stage. We can come back to it later.