2024-04-18 12:46:41 -05:00
|
|
|
# DGF Prototype
|
|
|
|
Decentralized Governance Framework
|
|
|
|
|
|
|
|
## Local development setup
|
|
|
|
|
|
|
|
Clone this repository to a directory on your machine
|
|
|
|
|
|
|
|
git clone https://gitea.dgov.io/DGF/dgf-prototype
|
|
|
|
|
|
|
|
### Nginx
|
|
|
|
|
|
|
|
1. Install nginx
|
|
|
|
|
|
|
|
brew install nginx
|
|
|
|
|
|
|
|
|
|
|
|
1. Install mkcert
|
|
|
|
|
|
|
|
brew install mkcert
|
|
|
|
|
|
|
|
1. Install root CA
|
|
|
|
|
|
|
|
mkcert -install
|
|
|
|
|
|
|
|
1. Create a certificate
|
|
|
|
|
|
|
|
mkcert dgfprototype.dev
|
|
|
|
|
|
|
|
1. Create certificates directory
|
|
|
|
|
2024-04-18 13:06:37 -05:00
|
|
|
sudo mkdir /etc/nginx/certs
|
2024-04-18 12:46:41 -05:00
|
|
|
|
2024-04-18 13:43:28 -05:00
|
|
|
1. Move the certificate to the certificates directory
|
2024-04-18 12:46:41 -05:00
|
|
|
|
2024-04-18 13:43:28 -05:00
|
|
|
sudo mv dgfprototype.*.pem /etc/nginx/certs/
|
2024-04-18 12:46:41 -05:00
|
|
|
|
|
|
|
1. Add the following to the `http` section of `/etc/nginx/nginx.conf`
|
|
|
|
|
|
|
|
map $http_upgrade $connection_upgrade {
|
|
|
|
default upgrade;
|
|
|
|
'' close;
|
|
|
|
}
|
|
|
|
|
|
|
|
1. Add the following to a new file `/etc/nginx/sites-available/dgfprototype_dev`
|
|
|
|
|
|
|
|
server {
|
|
|
|
listen 443 ssl;
|
|
|
|
|
|
|
|
server_name dgfprototype.dev;
|
|
|
|
ssl_certificate /etc/nginx/certs/dgfprototype.dev.pem;
|
|
|
|
ssl_certificate_key /etc/nginx/certs/dgfprototype.dev-key.pem;
|
|
|
|
|
|
|
|
location /api/ {
|
|
|
|
proxy_pass http://127.0.0.1:3003/;
|
|
|
|
}
|
|
|
|
|
|
|
|
location / {
|
|
|
|
proxy_pass http://127.0.0.1:3002/;
|
|
|
|
proxy_http_version 1.1;
|
|
|
|
proxy_set_header Upgrade $http_upgrade;
|
|
|
|
proxy_set_header Connection $connection_upgrade;
|
|
|
|
proxy_set_header Host $host;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-04-18 13:34:46 -05:00
|
|
|
1. Create a symbolic link in `sites-enabled/`
|
2024-04-18 13:20:02 -05:00
|
|
|
|
2024-04-18 13:34:46 -05:00
|
|
|
sudo ln -s /etc/nginx/sites-available/dgfprototype_dev /etc/nginx/sites-enabled
|
2024-04-18 13:20:02 -05:00
|
|
|
|
|
|
|
1. Restart nginx
|
|
|
|
|
2024-04-18 13:24:14 -05:00
|
|
|
sudo systemctl restart nginx
|
2024-04-18 12:46:41 -05:00
|
|
|
|
2024-04-18 13:39:22 -05:00
|
|
|
or
|
|
|
|
|
|
|
|
sudo brew services restart nginx
|
|
|
|
|
2024-04-18 12:46:41 -05:00
|
|
|
### API
|
|
|
|
|
|
|
|
1. In a new terminal window, navigate to `dgf-prototype/backend`
|
|
|
|
|
|
|
|
1. Install the project
|
|
|
|
|
|
|
|
npm install
|
|
|
|
|
|
|
|
1. Copy the example configuration file
|
|
|
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
|
|
|
1. Edit `.env` and set the following values
|
|
|
|
|
|
|
|
PORT=3003
|
|
|
|
|
|
|
|
1. Create the data directory
|
|
|
|
|
|
|
|
mkdir data
|
|
|
|
|
|
|
|
1. Run the daemon
|
|
|
|
|
|
|
|
node index.js
|
|
|
|
|
|
|
|
### Hardhat
|
|
|
|
|
|
|
|
1. In a new terminal window, navigate to `dgf-prototype/ethereum`
|
|
|
|
|
|
|
|
1. Install the project
|
|
|
|
|
|
|
|
npm install
|
|
|
|
|
|
|
|
1. Run a hardhat node
|
|
|
|
|
|
|
|
npx hardhat node
|
|
|
|
|
|
|
|
1. In a separate terminal window, navigate again to `dgf-prototype/ethereum`
|
|
|
|
|
|
|
|
1. Build and deploy the contracts
|
|
|
|
|
|
|
|
npm run deploy-local
|
|
|
|
|
|
|
|
### Metamask
|
|
|
|
|
|
|
|
1. Install the Metamask extension in your browser
|
|
|
|
|
|
|
|
1. In the Metamask extension, click the list of networks in the top left, and click "Add Network"
|
|
|
|
|
|
|
|
1. At the bottom of the list of popular networks, click "Add a network manually"
|
|
|
|
|
|
|
|
- Network name: Hardhat local
|
|
|
|
- RPC URL: http://127.0.0.1:8545/
|
|
|
|
- Chain ID: 1337
|
|
|
|
- Currency symbol: ETH
|
|
|
|
|
|
|
|
### Frontend
|
|
|
|
|
|
|
|
1. In a new terminal window, navigate to `dgf-prototype/client`
|
|
|
|
|
|
|
|
2. Install the project
|
|
|
|
|
|
|
|
npm install
|
|
|
|
|
|
|
|
3. Run the development server
|
|
|
|
|
|
|
|
vite dev
|
|
|
|
|
|
|
|
4. Now you should be able to open the site at https://dgfprototype.dev
|
|
|
|
|
|
|
|
|
2024-03-16 13:53:21 -05:00
|
|
|
## To run automatic staking
|
|
|
|
|
|
|
|
1. Clone this repository to a directory on your machine
|
|
|
|
|
|
|
|
git clone https://gitea.dgov.io/DGF/dgf-prototype
|
|
|
|
|
|
|
|
1. Change to the `ethereum` directory
|
|
|
|
|
|
|
|
cd ethereum
|
|
|
|
|
|
|
|
1. Install the project using `npm`
|
|
|
|
|
|
|
|
npm install
|
|
|
|
|
|
|
|
1. Copy the example configuration file
|
|
|
|
|
|
|
|
cp .env.example .env
|
|
|
|
|
|
|
|
1. Export your Sepolia private key from MetaMask and add it to your `.env` file
|
|
|
|
|
2024-03-16 13:54:06 -05:00
|
|
|
SEPOLIA_PRIVATE_KEY="YOURKEY"
|
2024-03-16 13:53:21 -05:00
|
|
|
|
|
|
|
1. Run the automatic staking script
|
|
|
|
|
|
|
|
npm run automatic-staking-sepolia
|