Simple arithmetic service compatible with SingularityNET
- Clone the git repository:
git clone https://github.com/singnet/example-service.git
cd example-service
- Install the dependencies and compile the protobuf file:
pip3 install -r requirements.txt
sh buildproto.sh
- Run the example service directly (without
SNET Daemon
):
python3 run_example_service.py --no-daemon
- To test it run the script:
python3 test_example_service.py
To get the ORGANIZATION_ID
and SERVICE_ID
you must have already published a service
(check this link).
Create the SNET Daemon
's config JSON file (snetd.config.json
).
{
"DAEMON_END_POINT": "__DAEMON_HOST__:__DAEMON_PORT__",
"BLOCKCHAIN_NETWORK_SELECTED": "__NETWORK__",
"IPFS_END_POINT": "http://ipfs.singularitynet.io:80",
"PASSTHROUGH_ENDPOINT": "http://__SERVICE_GRPC_HOST__:__SERVICE_GRPC_PORT__",
"ORGANIZATION_ID": "__ORGANIZATION_ID__",
"SERVICE_ID": "__SERVICE_ID__",
"PAYMENT_CHANNEL_STORAGE_SERVER": {
"DATA_DIR": "/opt/singnet/etcd/__NETWORK__"
},
"LOG": {
"LEVEL": "debug",
"OUTPUT": {
"TYPE": "stdout"
}
}
}
For example, using the Ropsten testnet, replace tags with:
__DAEMON_HOST__:__DAEMON_PORT__
: localhost:7000__NETWORK__
: ropsten (main for Mainnet)http://__SERVICE_GRPC_HOST__:__SERVICE_GRPC_PORT__
: http://localhost:7003__ORGANIZATION_ID__
: my-organization__SERVICE_ID__
: my-service
See SingularityNet daemon configuration for detailed configuration description.
- Run the script without flag to launch both
SNET Daemon
and the service. But first, download the latestSNET Daemon
release here.
python3 run_example_service.py
- Build the docker image and run a container from it:
docker build \
-t snet_example_service \
https://github.com/singnet/example-service.git#master
export ETCD_HOST=$HOME/.snet/etcd/example-service/
export ETCD_CONTAINER=/opt/singnet/etcd/
docker run \
-p 7000:7000 \
-v $ETCD_HOST:$ETCD_CONTAINER \
-ti snet_example_service bash
Note that the $ETCD_(HOST|CONTAINER)
are useful to keep your service's etcd folder outside the container.
From this point we follow the tutorial in the Docker Container's prompt.
After this, run the service (with SNET Daemon
), make sure you have the snetd.config.json
file in the service folder:
# cat snetd.config.json
{
"DAEMON_END_POINT": "0.0.0.0:7000",
"BLOCKCHAIN_NETWORK_SELECTED": "ropsten",
"IPFS_END_POINT": "http://ipfs.singularitynet.io:80",
"PASSTHROUGH_ENDPOINT": "http://localhost:7003",
"ORGANIZATION_ID": "my-organization",
"SERVICE_ID": "my-service",
"PAYMENT_CHANNEL_STORAGE_SERVER": {
"DATA_DIR": "/opt/singnet/etcd/ropsten"
},
"LOG": {
"LEVEL": "debug",
"OUTPUT": {
"TYPE": "stdout"
}
}
}
# python3 run_example_service.py --daemon-config snetd.config.json &
- Invoke the test script (from the same Docker Container):
# python3 test_example_service.py
This project is licensed under the MIT License - see the LICENSE file for details.