---
# System prepended metadata

title: CODA Magic Window Automation
tags: [testnet, coda, web3, zk-SNARKs]

---

CODA Magic Window Automation
===

###### tags: `web3` `zk-SNARKs` `coda` `testnet`

:::info
- **Location:** Earth
- **Date:** Oct 25, 2019 23:00 (Melbourne Standard Time)
- **Topics**

    Why Automate
    What to Automate
    How to Automate 
    When to Monitor
    Where to Contribute 

- **Docs:** bit.ly/CodaDocs
- **Blog:** bit.ly/CodaBlog
- **Discord:** bit.ly/CodaDiscord
- **Twitter:** bit.ly/CodaTweet
:::

## Why Automate 

- The past two rounds of testnet we have an interesting challenge where certain tasks need to done during a pre-determined window a.k.a **Magic Window**
- The 4 one-hour windows are:
    - Thursday October 24th, 9–10pm UTC-7
    - Saturday October 26th 9–10am UTC-7
    - Tuesday October 29th, 9–10pm UTC-7
    - Wednesday October 30th, 9–10am UTC-7
- For more details on what tasks need to be accomplished, please check the Discord #announcements channel
- Given these windows lasts only for an hour and sometimes it might be happening when you're fast asleep
- So I chose to automate most of my tasks and watch the magic happen

## What to Automate 

- Make sure your block-producer and snark-worker daemons are monitored for any sudden crashes, and a restart script is in place
- You can follow this [link](https://forums.codaprotocol.com/t/monitoring-coda-automatic-restarts/214) to automate your daemons
- Let's say your strategy is to send 1 CODA every minute to someone else in the community during the Magic Window
- We are going to automate this strategy using `crontab` and `scripts`

## How to Automate 

- The **STEPS** are pretty simple
- Create a crontab entry to run a script during the magic window(s)
- Create the script(s) that sends 1 CODA using the CLI command

- **STEPS**
- *Crontab*
- Type `crontab -l` to see if you any entries already
- Type `crontab -e` to edit the crontab entries
- Here are my crontab entries ...use them if you find it useful
- Note: the date & time reflects my server timezone
- PS: please change the absolute directory paths and script names to reflect your installation
```
#Magic Window 1 - Thursday October 24th, 9-10pm UTC-7
* 12 25 10 * /mnt/coda/coda_send_payment_pk_to_kai.sh >> /tmp/pk_to_kai.log 2>&1
* 12 25 10 * /mnt/coda/coda_send_payment_pk_to_david.sh >> /tmp/pk_to_david.log 2>&1

Magic Window 2 - Saturday October 26th 9-10am UTC-7
* 00 27 10 * /mnt/coda/coda_send_payment_pk_to_kai.sh >> /tmp/pk_to_kai.log 2>&1
* 00 27 10 * /mnt/coda/coda_send_payment_pk_to_david.sh >> /tmp/pk_to_david.log 2>&1

Magic Window 3 - Tuesday October 29th, 9-10pm UTC-7
* 12 30 10 * /mnt/coda/coda_send_payment_pk_to_kai.sh >> /tmp/pk_to_kai.log 2>&1
* 12 30 10 * /mnt/coda/coda_send_payment_pk_to_david.sh >> /tmp/pk_to_david.log 2>&1

Magic Window 4 - Wednesday October 30th, 9-10am UTC-7
* 00 31 10 * /mnt/coda/coda_send_payment_pk_to_kai.sh >> /tmp/pk_to_kai.log 2>&1
* 00 31 10 * /mnt/coda/coda_send_payment_pk_to_david.sh >> /tmp/pk_to_david.log 2>&1
```
- *Scripts*
- coda_send_payment_pk_to_kai.sh 
```
export CODA_KAI=<Kai-Public-Key>
export CODA_PRIVKEY_PASS=<Passphrase>
echo "$(date) sending coda from pk to kai"
/usr/local/bin/coda client send-payment -amount 1 -receiver $CODA_KAI -fee 0 -privkey-path /mnt/coda/keys/pk
```
- coda_send_payment_pk_to_david.sh
```
export CODA_DAVID=<David-Public-Key>
export CODA_PRIVKEY_PASS=<Passphrase>
echo "$(date) sending coda from pk to david"
/usr/local/bin/coda client send-payment -amount 1 -receiver $CODA_DAVID -fee 0 -privkey-path /mnt/coda/keys/pk
```

## When to Monitor

- If you're awake during the magic window, you can watch your log files live then
- In one window type `tail -f /tmp/pk_to_kai.log`
- In second window type `tail -f /tmp/pk_to_david.log` 
- Otherwise, you view them later to make sure transactions went through alright
- In one window type `more /tmp/pk_to_kai.log`
- In second window type `more /tmp/pk_to_david.log`
- PS: please change the log file names to reflect your installation

## Where to Contribute

- There are several ways, one can contribute
- Join the Public Testnet
- Build on CODA if you're a developer
- Report Issues if and when you find them
