Skip to content

chronologic/keeper-payment-contract

Repository files navigation

keeper-payment-contract

This is a supporting repository for the Keeper project.
🗞 https://twitter.com/keep_project/status/1389704394833219585

Repository overview

Normally, ETH transfers don't generate events you could search for or listen to, which is a problem if you want to monitor an address for incoming transfers. This repository holds the smart contract that proxies ETH payments for the Keeper service and generates appropriate events. The repository is also meant to be used as a dependency in other repositories.

Environment variables

This repo uses dotenv to load environment variables.

For development, and .env file should be created based on the .env.example template file. The .env file should never be commited.

In production, environment variables can be injected directly.

Below is a list of possible environment variables.

Name Type Default Description
DEPLOYER_ADDRESS string Address of the deployer
DEPLOYER_PRIVATE_KEY string Private key of the deployer
ETHERSCAN_API_KEY string API key for Etherscan to automatically deploy contract source code via truffle-plugin-verify
MAINNET_RPC_URL string RPC URL for mainnet (.e.g from Infura)
ROPSTEN_RPC_URL string RPC URL for ropsten (.e.g from Infura)

Deployment

Run one of the following:

  • npm run deploy:dev
  • npm run deploy:ropsten
  • npm run deploy:mainnet

To deploy to the desired network.

After deployment, you may also run:

  • npm run verify:ropsten
  • npm run verify:mainnet

To verify source code on Etherscan.

Creating a release

Run npm run build-release. This will compile the source code and switch to release branch. The compiled code can then be commited and tagged, e.g. v1.0.1.

Development

Run npm run ganache:dev to start a local ganache instance. Then you can do npm run deploy:dev to deploy to that instance to interact with the contract.

Testing

Tests are located in /test directory. Run npm run ganache:test to start a local ganache instance for testing. Then run npm run test to execute the test suite.