---
# System prepended metadata

title: Certo Documentación General

---

# Certo Documentación General

## Bitacora general de Certo
https://docs.google.com/spreadsheets/d/1LtRqs_kj3zKctQmNoTJr7GxaAZ273uX1fRF_cSkN7Io/edit#gid=0

### Pestañas:
|Nombre| Descripción| 
|------|------------|
|Main| Info básica de las técnologias que se utilizan dentro de la solución.|
|Web| Info para realizar el deploy de la página web de CERTO|
|NodeNginx| Info para la configuración de nginx con ssl para un nodo besu |
|Manager| Configuración del docker-compose para la creación de una instancia manager y la configuración de nginx para la misma |
|BlockExplorer| Info para el deploy del blockexplorer |

## Repos de Github

### Organización
https://github.com/certo-digital

|Nombre| Descripción| 
|------|------------|
|certo-manager| Aplicacion para gestionar la cuenta y firmar transacciones |
|certo-api | Aplicacion principal, permite interactuar con la blockchain de CERTO| 
|certo-website | Website de CERTO|
|certo-blockchain | Contratos inteligentes utilizados en CERTO|

## **Instancias AWS**

Solicitar las llaves para acceder a las instancias al administrador de CERTO que se encuentra en la carpeta `AWS Accesos` en el drive de CERTO.

|Nombre| Descripción| Public IP | Dominio |
|------|------------|------|------------|
|Dev \| API | Pruebas API Certo| 34.231.242.44 | 
|Dev \| Manager | Pruebas Certo Manager(ex-signer)| 18.204.243.137 | https://demosigner.certo.digital/|
|Dev \| Node 1 | Nodo de pruebas Besu | 3.234.255.162 | |
|Prod \| Node 1 | Nodo signer 1 blockchain Besu| 3.238.202.119 | https://node.certo.digital |
|Prod \| Node 2 | Nodo signer 2 blockchain Besu| 18.204.243.137 | |
|Prod \| Node 3 | Nodo signer 3 blockchain Besu| 18.204.243.137 | |
|Prod \| API | API proucción de Certo| 34.236.36.72 | https://api.certo.digital|
|Prod \| BlockExplorer | Explorador de bloques | 18.204.243.137 | http://explorer.certo.digital/|



### **Dev | API**
Instancia de pruebas antes de pre-lanzamiento a producción de nuevos cambios del API CERTO.

### **Dev | Manager**
Es el manager de certo en donde se gestiona una cuenta de prueba para poder realizar la firma transacciones necesarias para interactuar con los contratos inteligentes deployados en la blockchain de certo.

Acá se gestiona la cuenta utilizada para el demo de certo https://certo.digital/demo


#### Configuración docker-compose.yml
```
version: '3.8'
services:
 certo-signer:
   image: certodigital/certo-manager
   container_name: certo-manager
   ports:
     - 3001:3001 # API Rest Services - expose if needed/wanted
   environment: 
     - IPFS_PORT=5001
     - IPFS_HOST=18.204.243.137 # IMPORTANT - Change this IP
     - IPFS_PROTOCOL=http
 ipfs:
   image: trugrouptech/colprofede-ipfs
   container_name: ipfs
   ports:
     - '4001:4001' # IPFS swarm - expose if needed/wanted
     - '5001:5001' # IPFS api - expose if needed/wanted
     - '8080:8080' # IPFS gateway - expose if needed/wanted
```


### **Dev | Node 1**
Nodo de prueba para recrear la interacción con la blockchain de Certo. Cuenta con la misma configuración de un nodo Besu tradicional.

### **Prod | Node 1,2 y 3**
Nodos de producción de blockchain privada de Certo, los nodos estan conectados entre sí. Utiliza el cliente besu (https://besu.hyperledger.org/en/stable/)

#### Configuración de un nodo Besu
https://github.com/bogos/besu-image-creator

Comandos utilizados para interactuar con el nodo Besu, revisar documentación para detalles
https://besu.hyperledger.org/en/stable/Reference/API-Methods/

##### Num Peers
```
curl -X POST --data '{"jsonrpc":"2.0","method":"net_peerCount","params":[],"id":53}' http://127.0.0.1:8545
```

##### List Peers
```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_peers","params":[],"id":1}' http://127.0.0.1:8545
```

##### Get Enode
```
curl -X POST --data '{"jsonrpc":"2.0","method":"net_enode","params":[],"id":1}' http://127.0.0.1:8545
```
##### Add Enode
```
curl -X POST --data '{"jsonrpc":"2.0","method":"admin_addPeer","params":["{ENODE_URL}"],"id":1}' http://127.0.0.1:8545
````

### **Prod | API**
Instancia de producción de la solución Certo, cuenta con 2 versiones
- Sincrónico-sin colas (https://api.certo.digital)

#### Configuración docker-compose.yml
```
version: '3.8'
services:
 certo-api:
   image: trugrouptech/certo-api:demo
   container_name: certo-api
   ports:
     - 3000:3000 # API Rest Services - expose if needed/wanted
   environment: 
     - IPFS_PORT=5001
     - IPFS_HOST=34.236.36.72 # IMPORTANT - Change this IP
     - IPFS_PROTOCOL=http
     - BESU_PORT=8545
     - BESU_HOST=3.238.202.119 # IMPORTANT - Change this IP
     - BESU_PROTOCOL=http
     - GLOBAL_CONTRACT=0x7b4E46a74Be4e9534503bCe144F499554645A3c6
 ipfs:
   image: proycertificados/colprofede-ipfs 
   container_name: ipfs
   ports:
     - '4001:4001' # IPFS swarm - expose if needed/wanted
     - '5001:5001' # IPFS api - expose if needed/wanted
     - '8080:8080' # IPFS gateway - expose if needed/wanted
```

- Asincrónico-con colas (https://api.certo.digital/v2/)

#### Configuración docker-compose.yml
```
version: '3.8'
services:
 certo-api-image:
   image: bogos/certo-api-image:queue
   container_name: certo-api-image
   ports:
     - 3002:3002 # API Rest Services - expose if needed/wanted
   environment:
     - IPFS_PORT=5001
     - IPFS_HOST=34.236.36.72 # IMPORTANT - Change this IP
     - IPFS_PROTOCOL=http
     - BESU_PORT=8545
     - BESU_HOST=3.238.202.119 # IMPORTANT - Change this IP
     - BESU_PROTOCOL=http
     - GLOBAL_CONTRACT=0x7b4E46a74Be4e9534503bCe144F499554645A3c6
     - REDIS_HOST=34.236.36.72
     - REDIS_PORT=6379
 redis:
   image: redis:latest
   ports:
    - 6379:6379
   volumes:
    - ./config/redis.conf:/redis.conf
   command: [ "redis-server", "/redis.conf" ]
```

La primera espera una respuesta de la blockchain a la hora de realizar una transacción. Se necesita esperar una respuesta de la blockchain para seguir interactuando con la aplicación.

La segunda encola las transacciones y las ejecuta en 2do plano. No hay una necesidad de esperar una respuesta de la blockchain para seguir interactuando la aplicación. Se utiliza BULL QUEUE para encolar las transacciones (https://github.com/OptimalBits/bull)

### **Prod \| BlockExplorer**
Instancia que permite visualizar las transacciones realizadas en blockchain de producción.
Se utiliza EPIRUS para la creación del explorador de bloques. (https://github.com/web3labs/epirus-free)

