Saltar al contenido principal

Instalación de Giveth TRACE para el desarrollo local

Giveth TRACE ha quedado oficialmente en desuso. Después de 5 fieles años de servicio, la plataforma, servicios y productos de Giveth han sido completamente trasladados e incorporados a https://giveth.io/. Con el cierre de la red Rinkeby y el bajo número de usuarios que la utilizan, la Giveth DAO decidió dar fin a la dApp original en el tercer trimestre de 2022. El código fue y siempre será open-source y se puede encontrar en los repositorios públicos de Giveth en Github.

Esta documentación quedará disponible con el fin de tener una referencia histórica de la primera etapa de Giveth.


Esta es una guía completa que guiará a los nuevos colaboradores sobre cómo ejecutar Giveth TRACE localmente. Nos ocuparemos de 2 repositorios que se encuentran en Giveth Github: el giveth-dapp para el front-end y feathers-giveth para la interfaz de contratos inteligentes y la base de datos de back-end.

Instalación de feathers

Encabezado de instalación de feathers

Paquetes y aplicaciones necesarios:

  • yarn
  • NodeJS v10.24.0
  • MongoDB
  • Redis
  • MetaMask

linux

Si su sistema operativo es una distribución de Linux, puede usar los scripts de instalación todo en uno, un agradecimiento especial al colaborador de Dapp Jurek Brisbane, disponible aquí junto con un video de Youtube .

Cualquier sistema operativo

  1. Haga clic en la Estrella de este repositorio cerca de la esquina superior derecha de esta página web (si lo desea).
  2. Únase a nuestro Discord de colaboradores si aún no lo ha hecho.
  3. Haga un forl este repositorio haciendo clic en el botón Fork en la esquina superior derecha de esta página web. Continúe siguiendo los pasos de instrucciones de su propio repositorio de feathers-giveth.
  4. El resto de estos pasos deben realizarse desde la línea de comandos de su máquina. Clone su propio repositorio "feathers-giveth". Copie el enlace del botón "Clonar o descargar" cerca de la parte superior derecha de la página de inicio de este repositorio.
    clon de git git@github.com:Giveth/feathers-giveth.git
  5. Cambie los directorios a Feathers-Giveth:
    cd feathers-giveth/
  6. Asegúrese de tener NodeJS (v10.24.0), yarn (v0.27.5 o superior) y npm (5.4.1 o superior) instalado.
  7. Instale las dependencias desde el directorio Feathers-Giveth:
    yarn install
  8. Instale Mongo (recomendamos instalar a través de Brew).
  9. Ejecute Mongo en una ventana de terminal mongod o en segundo plano mongod --fork --syslog.
  10. Instale Redis (recomendamos instalar a través de Brew brew install redis).
  11. Ejecute Redis en la ventana de terminal redis-server o en segundo plano redis-server --daemonize yes.
  12. (opcionalmente) Instale IPFS (recomendamos instalar a través de Brew). *Si no instala ipfs, la carga de imágenes se verá afectada. Puede actualizar el valor de configuración ipfsGateway para usar una puerta de enlace ipfs pública, por ejemplo. https://ipfs.io/ipfs/, sin embargo, sus cargas se eliminarán en algún momento.

Ejecutar servidor

El servidor Feathers deberá conectarse a un nodo Ethereum a través de WebSocket. Por lo general, será una instancia TestRPC local. El parámetro de configuración blockchain.nodeUrl se usa para establecer una conexión. El nodoUrl predeterminado es ws://localhost:8545

  1. Necesitamos desplegar cualquier contrato al que pretendemos llamar. NOTA: El siguiente cmd borrará el directorio data, comenzando así en un estado limpio.

    yarn deploy-local

    Después de la implementación local, asegúrese de copiar y pegar la dirección de MiniMeToken en default.json.

  2. Proporcionamos una manera fácil de iniciar el puente y 2 instancias de ganache-cli. MUY IMPORTANTE: este comando habilita las redes Home Ganache y Foreign Ganache; si está utilizando MetaMask, deberá agregar un RPC personalizado a la configuración de su red; http://localhost:8546 será Foreign Ganache, y Home Ganache normalmente se agrega de forma predeterminada, que es http://localhost:8545 si es necesario.

    yarn start:networks
  3. Dado que bridge & ganache-cli ahora se está ejecutando, abra una nueva ventana de terminal y navegue hasta el mismo directorio de feathers-giveth.

  4. Opcionalmente, abra una nueva ventana de terminal e inicie el ipfs daemon.

    ipfs daemon
  5. Ejecute los archivos de migración de la base de datos (si es la primera vez que desea iniciar la aplicación, no es necesario para ejecutar las migraciones).

     ./node_modules/.bin/migrate-mongo up
  6. Inicie su aplicación.

     yarn start

Mata a Ganache

Si se encuentra con errores como que el saldo de la billetera no se carga, es muy probable que Ganache esté atascado. netstat-vanp tcp | grep 8545 Encuentre el proceso que está escuchando en *.8545 y 127.0.0.1.8545, y elimínelo con kill -9 PID (que está en la última columna).

Soporte IPFS

Si ipfsApi es un nodo ipfs válido al que podemos conectarnos, fijaremos cada hash ipfs que esté almacenado en plumas. Actualmente no eliminamos ningún hash ipfs huérfano (hashes sin referencias en plumas). En el futuro, proporcionaremos un script que puede ejecutar como un cronjob para desanclar cualquier hash huérfano.

Recorrido en vídeo

Tutorial de video tutorial aquí: https://tinyurl.com/y9lx6jrl

Scripts

El directorio feathers-giveth/scripts contiene algunos scripts para ayudar al desarrollo.

  • deploy.js: implementa una nueva bóveda y un contrato de LiquidPledging

  • getState.js: imprime el estado actual de la bóveda implementada y los contratos de liquidPledging

  • confirm.js - confirma cualquier pago que esté pendiente en la bóveda

  • makeUserAdmin.js - hacer que un usuario sea administrador

Pruebas

Simplemente ejecuta yarn test y se ejecutarán todas tus pruebas en el directorio /src. Se incluyen algunas pruebas de integración, por lo que para ejecutar las pruebas, debe ejecutar mongodb en su sistema local (en el puerto 27017).

Depuración

Puede controlar el nivel de registro con la variable de entorno LOG_LEVEL. Los niveles disponibles se pueden encontrar en: https://github.com/winstonjs/winston/tree/2.x#logging-levels

Para habilitar el registro de depuración, simplemente inicie el servidor con LOG_LEVEL=debug yarn start.

Producción

Usamos docker-compose para orquestar nuestros contenedores docker en nuestros servidores de producción.

  • asegúrese de tener un archivo llamado production.json en la carpeta de configuración.
  • Instale docker y docker-compose en su servidor.
  • ejecute este comando: docker-compose -f docker-compose-production.yml up -d.

PD: Es bueno ver la configuración de Github Actions (./.github/workflows/CI-CD.yml) para comprender mejor la estructura de implementación.

RSK

  1. Deberá descargar el nodo rsk. Después de la instalación, ejecutará el nodo con la red regtest para el desarrollo local.

    java -jar rskj-core-0.5.2-ORCHID-all.jar co.rsk.Start --regtest

    o

    java -Drsk.conf.file=rsk.conf -jar rskj-core-0.5.2-ORCHID-all.jar co.rsk.Start
  2. Necesitamos implementar cualquier contrato que tengamos la intención de llamar. NOTA: También deberá asegurarse de que su nodo rsk esté en un estado limpio (restablecido) para que las direcciones configuradas sean correctas.

    npm run deploy-local:rsk
  3. Opcionalmente, abra una nueva ventana de terminal e inicie el ipfs daemon.

    ipfs daemon
  4. Inicie su aplicación.

    yarn start: rsk

Registro de auditoría

El sistema de registro de auditoría registra cada creación, actualización, parche y Eliminar en Campañas, Traces, Eventos, Usuarios, PledgeAdmins, Comunidades, Donaciones. Para habilitar el registro de auditoría localmente, debe cambiar enableAuditLog en config a true, entonces

  • cd elk
  • docker-compose up

Puede ver los registros después de iniciar sesión en localhost: 5601 con usuario: elastic, contraseña: changeme.

Uso

Cada uno de estos servicios está disponible a través de rRest o WebSocket:

campañas
comunidades
donaciones
donationsHistory
traces
uploads
usuarios
correos electrónicos
homePaymentsTransactions
suscripciones

Si el servidor utiliza configuraciones predeterminadas, puede ver los datos de cualquiera de estos servicios a través de su navegador web en http://localhost:3030/SERVICE_NAME

PD: para acceder a todas las funciones, como crear "comunidades" y "campañas", se recomienda haga que el campo isAdmin sea verdadero, para su usuario en su MongoDb local.

Instalación de Giveth DApp (Giveth TRACE front-end)

Encabezado de instalación de Giveth-DApp

Empezando

En las siguientes secciones, aprenderá todo lo que necesita saber para ejecutar la DApp localmente y comenzar a contribuir. Todos los pasos también se describen en este increíble Tutorial en video de Oz.

Requisitos previos

  • NodeJS v10 LTS.
  • yarn (v1.22.10 o superior)
  • git

Instalar

  1. Haga clic en Estrella en el repositorio giveth-dapp cerca de la esquina superior derecha de esta página web (si lo desea).
  2. Únase a nosotros en Element o Discord si aún no lo ha hecho.
  3. Haga un fork de este repositorio haciendo clic en el botón Fork en la esquina superior derecha de esta página web. Continúe siguiendo los pasos de instrucciones de su propio repositorio giveth-dapp.
  4. Clone su propio repositorio "giveth-dapp". Copie el enlace del botón "Clonar o descargar" cerca de la parte superior derecha de la página de inicio de este repositorio.
  5. El resto de estos pasos deben realizarse desde la línea de comandos de su máquina. Consulte la sección OSX y Linux o Windows para continuar.

OSX y Linux

Si su sistema operativo es cualquier distribución de Linux, puede usar los scripts de instalación todo en uno, un agradecimiento especial al colaborador de Dapp Jurek Brisbane, disponible aquí junto con un video de Youtube , de lo contrario, intente lo siguiente:

  1. Desde el directorio deseado en el que desea copiar la carpeta "giveth-dapp" con los archivos de origen.
    git clone git@github.com:Giveth/giveth-dapp.git
    NOTA: utilice la rama develop para contribuir.
    git clone -b develop git@github.com:Giveth/giveth-dapp.git
  2. Cambiar directorios a giveth-dapp:
    cd giveth-dapp
  3. Asegúrese de tener NodeJS (v10) y yarn (v1.22.10 o superior) instalados.
  4. Instale las dependencias desde el directorio giveth-dapp:
    yarn install
  5. Eso es todo: ¡ahora está listo para ejecutar giveth-dapp! Dirígete a la sección Ejecutar DApp para obtener más instrucciones.

Windows

  1. Instale la última versión de Python desde este Enlace. (Asegúrese de que Python esté agregado a $PATH).
  2. Instale Microsoft Visual Studio 2017 (compruebe dos veces la versión) desde este enlace. Giveth-Dapp necesita el módulo node-gyp, y node-gyp necesita que se instalen las herramientas de compilación VS C++ 2017.
  3. Después de la descarga, instale los paquetes marcados en esta imagen.
  4. Luego ejecute el comando a continuación en el símbolo del sistema
    npm config set msvs_version 2017
  5. Después de instalar lo anterior, debe instalar NodeJS versión 10 LTS (es mejor que sea v10.24.1 LTS).
  6. Descargue y ejecute el instalador node-v10.24.1-x64.msi, luego continúe con la instalación normalmente. Asegúrese de tener habilitada la opción "Enable in PATH" antes de instalar.
  7. Abra la línea de comandos en modo administrador haciendo clic derecho en la aplicación cmd.exe y seleccionando "Ejecutar como administrador"
  8. En el símbolo del sistema del administrador, cambie al directorio donde desea almacenar este repositorio.
    cd C:\algún\directorio\para\repositorios
  9. Verifique dos veces la versión del nodo con el comando CMD:
    node -v
  10. Después de eso, instala la última versión de Yarn. Tenga cuidado de no instalar paquetes con NPM. Si ya probó "npm install", primero debe eliminar la carpeta "módulos de nodo".
    yarn install
  11. Eso es todo: ¡ahora está listo para ejecutar giveth-dapp!

Ejecutar

  1. La dapp de Giveth deberá conectarse a un servidor feathers-giveth. Siga las instrucciones de readme de Feathers-Giveth para instalar y ejecutar el servidor antes de continuar. Alternativamente, puede cambiar la configuración para conectarse al entorno develop, consulte la sección Configuración.

  2. Inicie la dapp.

    yarn start
  3. Una vez que la dapp esté activa en su navegador, haga clic en "Iniciar sesión" en el menú principal.

  4. Para probar localmente, elija cualquiera de los archivos de billetera que se encuentran en la carpeta giveth-dapp/keystores/ usando la contraseña de la billetera: password. NO USE ESTOS EN NINGÚN EVM DE LA MAINNET.

  5. Usando el token de prueba Para usar el token de prueba, debe importar el keystore.json que usa para su cuenta a MetaMask. Después de importar, haga clic en 'Agregar token' > 'Token personalizado' e ingrese la dirección del token MiniMe que se puede encontrar al implementar los contratos (debería ser 0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab por defecto, pero asegúrese de comprobarlo). El saldo del token debería aparecer automáticamente y el símbolo del token es MMT. Sin embargo, en la DApp, el símbolo del token se denomina ANT, porque la DApp debe poder obtener una tasa de conversión.

NOTA: Al restablecer feathers o volver a implementar los contratos, debe eliminar el almacén de claves de Metamask y seguir este procedimiento nuevamente.

Construir

yarn run build

NOTA: debido a algunas bibliotecas web3 que no se transpilan desde es6, tenemos que usar nuestros giveth-react-scripts fork de react-scripts.

Configuración

La DApp tiene varias variables de entorno de node que se pueden usar para modificar el comportamiento de la DApp sin cambiar el código. Puede configurarlos a través de los archivos .env o .env.local en la carpeta DApp.

Nombre de la variableValor predeterminadoDescripción
PUERTO3010Puerto en el que se ejecuta la DApp
REACT_APP_ENVIRONMENT'localhost'A qué entorno de feathers debe conectarse la DApp. Por defecto se conecta a las feathers localhost. Los valores permitidos son: localhost, develop, release, alpha, mainnet. Consulte Entornos de implementación.
REACT_APP_DECIMALS8Cuántos decimales se deben mostrar para los valores de criptomonedas. Tenga en cuenta que los cálculos todavía se hacen con 18 decimales.
REACT_APP_FEATHERJS_CONNECTION_URLDifiere por REACT_APP_ENVIRONMENTSobrescribe la URL de conexión de las feathers inyectadas en el entorno.
REACT_APP_NODE_CONNECTION_URLDifiere por REACT_APP_ENVIRONMENTSobrescribe la URL de conexión del nodo EVM para realizar transacciones EVM.
REACT_APP_LIQUIDPLEDGING_ADDRESSDifiere por REACT_APP_ENVIRONMENTSobrescribe la dirección del contrato de Liquid Pledge.
REACT_APP_DAC_FACTORY_ADDRESSDifiere por REACT_APP_ENVIRONMENTSobrescribe la dirección del contrato de Comunidades.
REACT_APP_CAMPAIGN_FACTORY_ADDRESSDifiere por REACT_APP_ENVIRONMENTSobrescribe la dirección del contrato de Campaign Factory.
REACT_APP_MILESTONE_FACTORY_ADDRESSDifiere por REACT_APP_ENVIRONMENTSobrescribe la dirección del contrato de MilestoneFactory.
REACT_APP_TOKEN_ADDRESSESDifiere por REACT_APP_ENVIRONMENTSobrescribe las direcciones de token puenteadas. Esta es una cadena de objeto JSON con nombre de token: dirección de token.
REACT_APP_BLOCKEXPLORERDifiere por REACT_APP_ENVIRONMENTSobrescribe la URL base del explorador de bloques. La DApp asume que dicha API de blockexplorer es \<BLOCKEXPLORER\>/tx/\<TRANSACTION_HASH\>
REACT_APP_DEFAULT_GASPRICE10Sobrescribe el precio de gas predeterminado que se usa si el servicio de ethgasstation está inactivo. El valor está en gwei.
REACT_APP_ANALYTICS_KEY""Sobrescribe la clave de análisis Segment.

Ejemplo de archivo .env.local que hace que la DApp se ejecute en el puerto 8080, se conecta al entorno de desarrollo y usa el explorador de bloques personalizado:

PUERTO=8080
REACT_APP_ENVIRONMENT='develop'
REACT_APP_BLOCKEXPLORER='www.awesomeopensourceexplorer.io'

El resto de la configuración se puede encontrar en configuration.js

Análisis

Segment Analytics se puede habilitar configurando REACT_APP_ANALYTICS_KEY.

Cadenas de consulta

¡La vista de creación/propuesta de hitos ahora admite argumentos de cadena de consulta! Los siguientes argumentos están disponibles:

ArgumentoValores esperadosTipo
titleEl título del hitostring
descriptionLa descripción del hitostring
recipientAddressLa dirección del destinatariostring
reviewerAddressLa dirección del revisorstring
selectedFiatTypeUn tipo de fiat válido (es decir, USD)string
dateUn string de fecha de hito válidastring
tokenUn símbolo de token válido (es decir, DAI)string
tokenAddressUna dirección de token válidastring
maxAmountUna cantidad máxima válida de ETH o tokennúmero
fiatAmountUna cantidad máxima válida de dinero fiduciario (según el tipo de fiat seleccionado)número
isCappedDetermina si el hito debe tener un tope0 o 1 (booleano)
requireReviewerDetermina si el hito debe requerir un revisor0 o 1 (booleano)

Desarrollo local

Al principio, le gustaría ejecutar la DApp localmente. Cuando ejecuta testrpc localmente en modo determinista, puede usar cualquiera de los almacenes de claves en giveth-dapp/keystores como su billetera. Esto le proporcionará acceso a las cuentas de testrpc para el desarrollo local. Cada almacén de claves utiliza la misma contraseña: password. NO USE ESTOS EN NINGÚN EVM DE LA MAINNET

Los almacenes de claves están sembrados con 10.000 tokens ANT para probar las donaciones. Para empezar a probar las donaciones, asegúrese de agregar el almacén de claves de su cuenta a MetaMask y cambie MetaMask a Ganache. El modo de donación debe muestrar el saldo apropiado al donar en tokens ANT.

NOTA: si obtiene un error de nonce en MetaMask o si la DApp no ​​se carga con su MetaMask desbloqueada, podría deberse a que MetaMask está confundido. Debe ir a "configuración" -> "Restablecer cuenta" en MetaMask para restablecer los datos de la cuenta nonce y en caché.

Pruebas de desarrollo y relaciones públicas

  1. Giveth Dapp se implementa automáticamente desde la branch develop y está disponible en Rinkeby develop.giveth.io. Todas las solicitudes de Pull request(PR) se implementan automáticamente y la vista previa de relaciones públicas se generará al enviarlas. Para obtener información sobre cómo acceder a las vistas previas de relaciones públicas, consulte Proceso de desarrollo y control de calidad en nuestro wiki.
  2. Para usar la DApp, deberá crear una cuenta. Si esta es su primera vez, haga clic en "registrarse" para crear una cuenta. Si ya tiene un archivo de llavero válido, utilícelo para iniciar sesión.
  3. Necesitará probar ether en la red Rinkeby. Vaya a la página de "billetera" para ver su nueva dirección (0x..). Copie esa dirección y use Faucet para obtener algo: https://faucet.rinkeby.io/.

Deployment Environments

At Giveth, we are using the gitflow branching model to deploy to 4 different environments.

NombreBlokchainBranch desplegadaImplementación automáticaUso
MainnetRed principal de EthereummasternoDespliegue de la Mainnet por ahora abandonado debido a los altos costos de transacción hasta que se encuentre una solución sostenible.
alphaRinkeby Test NetworkmasternoEntorno utilizado como versión de producción hasta que se resuelva la escalabilidad.
releaseRinkeby Test NetworkreleasesiEntorno para pruebas de control de calidad de candidatos de lanzamiento por parte de no-desarrolladores.
developRinkeby Test NetworkdevelopsiEntorno de desarrollo para la integración de nuevas funcionalidades. Las ramas de funciones y solicitudes de incorporación de cambios también se implementan automáticamente en este entorno.

Puede cambiar el entorno al que se conecta la DApp a través de las variables de entorno del nodo. Consulte la sección Configuración para obtener más detalles.