https://github.com/crowdcompute/crowdengine
Peer-to-Peer compute engine implementation
https://github.com/crowdcompute/crowdengine
blockchain crypto cryptocurrency cryptography ethereum peer-to-peer
Last synced: 5 months ago
JSON representation
Peer-to-Peer compute engine implementation
- Host: GitHub
- URL: https://github.com/crowdcompute/crowdengine
- Owner: crowdcompute
- Created: 2018-12-27T17:26:25.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2021-03-09T22:13:59.000Z (over 5 years ago)
- Last Synced: 2024-06-20T17:34:17.367Z (about 2 years ago)
- Topics: blockchain, crypto, cryptocurrency, cryptography, ethereum, peer-to-peer
- Language: Go
- Homepage: https://crowdcompute.io
- Size: 4.73 MB
- Stars: 4
- Watchers: 4
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Go CrowdEngine
Official golang implementation of the CrowdCompute engine
## Building the source
Clone the repository to your desired destination:
```
$ git clone https://github.com/crowdcompute/crowdengine
```
Build the `gocc` binary:
```
$ cd crowdengine
$ make build
```
You can now run the `gocc` binary in build/bin/gocc
## Running gocc
Requirements: docker
### Gocc CLI Flags
`gocc` can be supplied with command-line flags. Here is a list of some important flags:
* `--datadir` Data directory to store `gocc` data
* `--addr` P2P listening interface
* `--port` P2P listening port
* `--maxpeers` Maximum number of peers to connect
* `--rpc` Enable the RPC interface
* `--rpcservices` List of rpc services allowed
* `--rpcwhitelist` Allow IP addresses to access the RPC servers
* `--socket` Enable IPC-RPC interface
* `--socketpath` Path of the socker/pipe file
* `--http` Enable the HTTP-RPC server
* `--httpport` HTTP-RPC server listening port
* `--httpaddr` HTTP-RPC server listening interface
* `--httporigin` HTTP-RPC cross-origin value
* `--ws` Enable the WS-RPC server
* `--wsport` WS-RPC server listening port
* `--wsaddr` WS-RPC server listening interface
* `--wsorigin` WS-RPC cross-origin value
### Gocc Configuration
You can pass a `toml` configuration file to the binary instead of specifying each flag with the following command:
```
$ gocc --config /path/to/your_config.toml
```
### Node Communication and Interaction
CrowdEngine provides a Plain-text JSON RPC request–response protocol which can be used by decentralized applications(DApps) or clients to interact with a node. Requests and responses are formatted in JSON and transferred over HTTP, Websockets and IPC.
#### JSONRPC2.0 HTTP
CrowdEngine exposes an HTTP server which accepts JSONRPC requests. The following flags can be used to enable the JSONRPC2.0 HTTP interface:
```
$ gocc --rpc --http --httpport --httpaddr 0.0.0.0 --httporigin "*"
```
#### JSONRPC2.0 Websocket
CrowdEngine exposes a Websocket server which accepts JSONRPC requests. The following flags can be used to enable the JSONRPC2.0 Websocket interface:
```
$ gocc --rpc --ws --wsport --wsaddr 0.0.0.0 --wsorigin "*"
```
#### JSONRPC2.0 IPC
System programs can interact with `gocc` by writing/reading to a given socket/pipe file, which is created by default within the data directory. To enable socket/pipe use the following command
```
$ gocc --rpc --socket --socketpath /where/to/save/gocc.ipc
```