186 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
			
		
		
	
	
			186 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
# 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
 | 
						|
 | 
						|
        sudo mkdir /etc/nginx/certs
 | 
						|
 | 
						|
1. Move the certificate to the certificates directory
 | 
						|
 | 
						|
        sudo mv dgfprototype.*.pem /etc/nginx/certs/
 | 
						|
 | 
						|
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;
 | 
						|
                }
 | 
						|
        }
 | 
						|
 | 
						|
1. Create a symbolic link in `sites-enabled/`
 | 
						|
 | 
						|
        sudo ln -s /etc/nginx/sites-available/dgfprototype_dev /etc/nginx/sites-enabled
 | 
						|
 | 
						|
1. Restart nginx
 | 
						|
 | 
						|
        sudo systemctl restart nginx
 | 
						|
 | 
						|
    or
 | 
						|
 | 
						|
        sudo brew services restart nginx
 | 
						|
 | 
						|
1. Edit `/etc/hosts` to add the domain alias
 | 
						|
 | 
						|
        127.0.0.1  dgfprototype.dev
 | 
						|
 | 
						|
### 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. Copy the example configuration file
 | 
						|
 | 
						|
        cp .env.example .env
 | 
						|
 | 
						|
1. In `.env`, set a value for `SEED_PHRASE` or `LOCAL_PRIVATE_KEY`
 | 
						|
 | 
						|
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/frontend`
 | 
						|
 | 
						|
1. Install the project
 | 
						|
 | 
						|
        npm install
 | 
						|
 | 
						|
1. Install `vite`
 | 
						|
 | 
						|
        npm i -g vite
 | 
						|
 | 
						|
1. Run the development server
 | 
						|
 | 
						|
        vite dev
 | 
						|
 | 
						|
1. Now you should be able to open the site at https://dgfprototype.dev
 | 
						|
 | 
						|
 | 
						|
## 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
 | 
						|
 | 
						|
        SEPOLIA_PRIVATE_KEY="YOURKEY"
 | 
						|
 | 
						|
1. Run the automatic staking script
 | 
						|
 | 
						|
        npm run automatic-staking-sepolia |