This is a command line interface python service developed to anchor data on the IOTA Tangle.
Please check the IOTA testnet explorer to look for transactions or addresses.
Default address used in the service:
9E99GKDY9BYDQ9PGOHHMUWJLBDREMK9BVHUFRHVXCVUIFXLNTZMXRM9TDXJKZDAKIGZIMCJSH9Q9V9GKW
Click here to see all transactions made with this address.
To setup a new address, please run: generate_address.py and pass the address generated as argument in the CLI.
Help concerning the CLI can be found running:
python iota_service.py --help
This projects uses python 3.6.
Please run in your virtual environment:
pip install -r requirements.txt
This projects mainly uses pyota
,the official Python library for the IOTA Core.
-
Please install Elasticmq and/or Kafka. Please respect the following folder structure:
dependencies/ ├── elasticMQServer │ ├── custom.conf │ └── elasticmq-server.jar └── kafka ├── bin │ ├── ... ├── config │ ├── ... ├── libs │ ├──... ├── LICENSE ├── NOTICE └── site-docs └── ...
And custom.conf should look like this:
include classpath("application.conf")
// What is the outside visible address of this ElasticMQ node
// Used to create the queue URL (may be different from bind address!)
node-address {
protocol = http
host = localhost
port = 9324
context-path = ""
}
rest-sqs {
enabled = true
bind-port = 9324
bind-hostname = "0.0.0.0"
// Possible values: relaxed, strict
sqs-limits = strict
}
// Should the node-address be generated from the bind port/hostname
// Set this to true e.g. when assigning port automatically by using port 0.
generate-node-address = false
queues {
input_messages {
defaultVisibilityTimeout = 10 seconds
receiveMessageWait = 0 seconds
deadLettersQueue {
name = "queue1-dead-letters"
maxReceiveCount = 10 // from 1 to 1000
}
}
output_messages {
defaultVisibilityTimeout = 10 seconds
receiveMessageWait = 0 seconds
deadLettersQueue {
name = "queue2-dead-letters"
maxReceiveCount = 10 // from 1 to 1000
}
}
error_messages {
defaultVisibilityTimeout = 10 seconds
receiveMessageWait = 0 seconds
deadLettersQueue {
name = "error_queue-dead-letters"
maxReceiveCount = 10 // from 1 to 1000
}
}
}
-
Useful scripts are in bin/
a) In bin/elasticMQ/, to run the ElasticMQ server:./start-elasticMQ.sh
b) In bin/kafka/, to run the Kafka server and create the topics, execute successively:
./start_zookeeper.sh ./start-kafka.sh ./create-all-topics.sh
-
Then, in a terminal, run successively in ubirch-iota-service/, the scripts sender.py then receiver.py and receiver_errors.py, with the flag --server='SQS' or --server='KAFKA'
-
Finally, start the service.
python iota_service.py --server='SQS'
Or:
python iota_service.py --server='KAFKA'
Where:
- --server='SQS' to use elasticMQ's SQS queuing service
- --server='KAFKA' to use Apache's Kafka messaging service.
You can run it multiple times to increase throughput.
Once the service is running, logs are recorded in iota_service.log
This project is publicized under the Apache License 2.0.