Please refer to the Configuration first.
On your local machine install:
- Python 2 (v2.6-v2.7)/Python3 (v3.5+)
- Ansible v2.3+
- Git
The playbook will automatically install Docker, docker-compose, Python, Git and it dependencies (such as curl, ca-certificates, apt-transport-https, etc.) to the node. Also this playbooks creates an additional non-sudo docker user to run service as.
ansible-playbook -i hosts.yml site.ymlTo be used with the ansible-playbook command, for example:
ansible-playbook -i hosts.yml site.yml --ask-become-pass-
--ask-pass- ask for the password used to connect to the bridge VM. -
--ask-become-pass- ask for thebecomepassword used to execute some commands (such as Docker installation) with root privileges. -
-i <file>- use specified file as ahosts.ymlfile. -
-e "<variable>=<value>"- override default variable. -
--private-key=<file_name>- if private keyfile is required to connect to the ubuntu instance. -
--user=<username>- connect as this username
The deployed components have the following services:
| Component | Service Name |
|---|---|
| Oracle | poabridge |
| Monitor | tokenbridge-monitor |
Use the default SysVinit commands to start, stop, restart, and rebuild the service and to check the status of the service.
Commands format:
sudo service <service_name> [start|stop|restart|status|rebuild]If the bridge does not handle an event properly (i.e. a transaction stalls due to a low gas price), the Redis DB can be rolled back. You must identify which watcher needs to re-run. For example, if the validator signatures were collected but the transaction with signatures was not sent to the Foreign network, the collected-signatures watcher must look at the block where the corresponding CollectedSignatures event was raised.
Execute the reset-lastBlock.sh script in the bridge root directory. For example, if you've installed your bridge with this deployment script and all the default parameters, use the following set of commands:
$ sudo su poadocker
$ cd ~/bridge
$ docker-compose stop bridge_affirmation bridge_request bridge_collected
$ docker-compose exec bridge_senderhome bash ./reset-lastBlock.sh <watcher> <block num>
$ exit
$ sudo service poabridge restartwhere the could be one of the following:
signature-requestcollected-signaturesaffirmation-request
In case some tx from your bridge validator account were done outside the bridge, you might need to update nonce counters.
- ssh to your bridge node and run:
$ sudo su poadocker $ cd ~/bridge - stop running docker containers using the nonce by running:
$ docker-compose stop bridge_senderhome bridge_senderforeign - Connect to the redis container:
you should get a shell prompt from inside the docker container, similar to this:
$ docker-compose exec redis /bin/bashroot@redis:/data# - connect to redis database by running
redis-cli, prompt should change once again to127.0.0.1:6379> - list existing keys by running
keys *, output should look like this:127.0.0.1:6379> keys * 1) "erc-native-affirmation-request:lastProcessedBlock" 2) "erc-native-collected-signatures:lastProcessedBlock" 3) "erc-native-signature-request:lastProcessedBlock" 4) "home:nonce" 5) "foreign:nonce" - delete keys containing last used nonces on both networks
127.0.0.1:6379> del "home:nonce" "foreign:nonce" - exit from redis container by running
exittwice - start the rest of bridge containers:
$ docker-compose start bridge_senderhome bridge_senderforeign
If the syslog_server_port option in the hosts.yml file is not set, all logs will be stored in /var/log/docker/ folder in the set of folders with the bridge_ prefix.
If the syslog_server_port is set, logs will be redirected to the specified server and cannot be accessed on the bridge machine.
syslog_server_port: "<protocol>://<ip>:<port>" # When this parameter is set all bridge logs will be redirected to the <ip>:<port> address.