Serverless Functions
This repository contains different serverless function used in the operations of the protocol.
Functions
/debug
This is a debug function that returns a status "OK" and prints call information to the logs.
You may use this in local development to test out calls easily.
/updateOracles
This function updates the BLU/DAI TWAP oracle and the SGD/DAI TWAP oracle. It's scheduled to run at fixed interval to update stale results on the oracle.
Set the env ORACLE_UPDATE_SGD
to allow this function to update the SGD/DAI oracle when the oracle is available.
Development
Set environment variables
For development, copy the .env.example
to .env
and set the necessary environment variables:
NETWORK
- Choose between "local", "development" or "production". Local runs against a local blockchain, development runs against the rinkeby blockchain and production runs against mainnet.
ALCHEMY_KEY
- API key from alchemy for the providers.
TELEGRAM_BOT_TOKEN
& TELEGRAM_CHAT_ID
- To configure the telegram bot. Use botfather to create a new bot when testing locally.
ORACLE_UPDATER_KEY
- Private key with Ethers on the network defined in NETWORK
. Does not require special permission since the oracle can be updated by anyone. In local environment, you can use key #1 or #2.
ORACLE_UPDATE_SGD
- Allow updateOracle
to update SGD/DAI oracle.
Running the functions locally.
Run npm run dev
and visit localhost:3000/debug
to visit the debug function.
Creating new functions
- Read https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml
- Configure the routes at
serverless.yml
- Add the functions logic in
src/functionHandlers
using one of the request handlers insrc/middlewares
(see debug function for template)