Ir para o conteúdo principal

Instalando Giveth TRACE para Desenvolvimento Local

Giveth TRACE foi oficialmente descontinuado. Depois de 5 anos de serviços, Giveth e suas plataformas, serviços e produtos migraram totalmente para Giveth.io. Com a descontinuação da rede Rinkeby e a baixa frequência de usuários, o Giveth DAO decidiu encerrar seu dApp original no terceiro trimestre de 2022. O código é e sempre será aberto. Você pode encontrá-lo nestes repositórios do Github.

Toda a documentação do Giveth TRACE vai permanecer disponível para referência histórica.


Esse é um guia abrangente que mostrará aos novos colaboradores sobre como executar o Giveth TRACE localmente. Estaremos lidando com 2 repositórios encontrados no Github Giveth: o giveth-dapp para o front-end, feathers-giveth para a interface de contrato inteligente e banco de dados de back-end.

Instalação dos Feathers

Pacotes e aplicativos necessários:

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

Linux

Se o seu sistema operacional for qualquer distribuição do Linux, você pode usar os scripts de instalação todos em um.

Agradecimentos especiais ao colaborador do Dapp Jurek Brisbane, disponível aqui junto com um vídeo do Youtube.

Qualquer OS

  1. Clique em Star nesse repositório próximo ao canto superior direito dessa página (se quiser).

  2. Junte-se ao nosso Discord se ainda não for um membro.

  3. Faça um Fork desse repositório clicando no botão Fork no canto superior direito dessa página. Continue seguindo as instruções de seu próprio repositório de Feathers.

  4. Os próximos devem ser feitos a partir da linha de comando do seu computador. Clone seu próprio repositório "feathers-giveth". Copie o link do botão "Clone or download" próximo ao canto superior direito da página inicial desse repositório.

         git clone git@github.com:Giveth/feathers-giveth.git
  1. Altere os diretórios para feathers-giveth:
      cd feathers-giveth/
  1. Verifique se você tem NodeJS (v10.24.0), yarn (v0.27.5 ou superior) e npm (5.4.1 ou superior) instalados.

  2. Instale as dependências do diretório feathers-giveth:

      yarn install
  1. Instale o Mongo (recomendamos instalar via Brew).

  2. Execute o Mongo em seu terminal mongod ou em segundo plano mongod --fork --syslog.

  3. Instale o Redis (recomendamos instalar via Brew brew install redis)

  4. Execute o Redis na janela do terminal redis-server ou em segundo plano redis-server --daemonize yes.

  5. (opcionalmente) Instale o IPFS (recomendamos instalar via Brew).

*Se você não instalar o ipfs, o upload da imagem será afetado. Você pode atualizar o valor de configuração ipfsGateway para usar um gateway ipfs público ex. https://ipfs.io/ipfs/, mas seus uploads serão removidos em algum momento.

Execute o Servidor

O servidor Feathers precisará se conectar a um node Ethereum via WebSocket. Normalmente, essa será uma instância TestRPC local.

O parâmetro de configuração blockchain.nodeUrl é usado para estabelecer uma conexão. O nodeUrl padrão é ws://localhost:8545

  1. Precisamos implantar qualquer contrato para o qual pretendemos chamar. NOTA: O próximo cmd limpará o diretório data, iniciando assim em um estado limpo.

      yarn deploy-local

Após a implantação local, certifique-se de copiar e colar o endereço MiniMeToken em default.json.

  1. Fornecemos uma maneira fácil de iniciar a bridge & 2 instâncias de ganache-cli. MUITO IMPORTANTE: esse comando habilita as redes Home Ganache e Foreign Ganache; se você estiver usando a MetaMask, você precisará adicionar um RPC personalizado à sua configuração de rede; http://localhost:8546 será Foreign Ganache, e Home Ganache é normalmente adicionado por padrão, que é http://localhost:8545 se necessário.
   yarn start:networks
  1. Como a bridge & ganache-cli agora está em execução, abra uma nova janela de terminal e navegue até o mesmo diretório feathers-giveth.

  2. Opcionalmente, abra uma nova janela terminal e inicie o daemon ipfs.

   ipfs daemon
  1. Execute os arquivos de migração de banco de dados (se for a primeira vez que você deseja iniciar o aplicativo, não será necessário executar as migrações).

      ./node_modules/.bin/migrate-mongo up
  2. Inicie seu aplicativo.

    yarn start

Kill Ganache

Se você encontrar erros como o saldo da carteira não carregando, é muito provável que o Ganache esteja travado.

netstat -vanp tcp | grep 8545

Encontre o processo que está sendo executado em *.8545 e 127.0.0.1.8545, e mate-o com kill -9 PID (localizado na última coluna).

IPFS Support

Se o ipfsApi for um node ipfs válido ao qual podemos nos conectar, iremos fixar cada hash ipfs armazenado em feathers. Atualmente, não removemos nenhum hash ipfs órfão (hashes sem referências em feathers). No futuro, forneceremos um script que você pode executar como um cronjob para desafixar quaisquer hashes órfãos.

Vídeo Passo a Passo

Vídeo tutorial: https://tinyurl.com/y9lx6jrl

Scripts

O diretório feathers-giveth/scripts contém alguns scripts para ajudar no desenvolvimento.

  • deploy.js - implanta um novo contrato de vault e liquidPledge

  • getState.js - imprime o estado atual dos contratos de vault e liquidPledgeing implantados

  • confirm.js - confirma todos os pagamentos pendentes na vault

  • makeUserAdmin.js - torna um usuário administrador

Testando

Simplesmente execute yarn test, e todos os seus testes no diretório /src serão executados.

Estão incluído alguns testes de integração, portanto, para executar testes, você precisa executar um mongodb em seu sistema local (na porta 27017).

Debugging

Você pode controlar o nível de log com a variável env LOG_LEVEL. Os níveis disponíveis podem ser encontrados em: https://github.com/winstonjs/winston/tree/2.x#logging-levels

Para habilitar o registro de depuração, basta iniciar o servidor com LOG_LEVEL=debug yarn start.

Produção

Usamos o docker-compose para orquestrar nossos docker containers em nossos servidores de produção.

  • certifique-se de ter um arquivo chamado production.json na pasta config.

  • Instale o docker e o docker-compose em seu servidor.

  • execute esse comando: docker-compose -f docker-compose-production.yml up -d.

PS: É bom ver Github Actions config(./.github/workflows/CI-CD.yml) para entender melhor a estrutura de implantação.

RSK

  1. Você precisará baixar o rsk node. Após a instalação, você executará o node com a rede regtest para desenvolvimento local.
  java -jar rskj-core-0.5.2-ORCHID-all.jar co.rsk.Start --regtest

ou

  java -Drsk.conf.file=rsk.conf -jar rskj-core-0.5.2-ORCHID-all.jar co.rsk.Start
  1. Precisamos implantar todos os contratos que pretendemos chamar. NOTA: Você também precisará garantir que seu node rsk esteja em um estado limpo (redefinido) para que os endereços configurados estejam corretos.
   npm run deploy-local:rsk
  1. Opcionalmente, abra uma nova janela de terminal e inicie o daemon ipfs.
   ipfs daemon
  1. Inicie seu aplicativo.
    yarn start:rsk

Audit Log

O sistema de log de auditoria registra cada criação, atualização, patch e Remover em Campanhas, Traces, Eventos, Usuários, PledgeAdmins, Comunidades, Doações. Para habilitar o log de auditoria localmente, você deve alterar o enableAuditLog na configuração para true, então

  • cd alce
  • docker-compose up

Você pode ver os logs após logar em localhost:5601 com usuário:elastic, senha: changeme.

Uso

Cada um desses serviços está disponível via rRest ou WebSocket:

campaigns
communities
donations
donationsHistory
traces
uploads
users
emails
homePaymentsTransactions
subscriptions

Se o servidor estiver usando as configurações padrão, você poderá ver os dados de qualquer um desses serviços por meio do navegador da Web em http://localhost:3030/SERVICE_NAME

PS: Para acessar todos os recursos, como criar comunidades e campanhas, sugere-se tornar o campo isAdmin verdadeiro, para seu usuário em seu MongoDb local.

Giveth DApp (Giveth TRACE front-end) Instalação

Começando

Nas seções a seguir, você aprenderá tudo o que precisa saber para executar o DApp localmente e começar a contribuir. Todas as etapas também são descritas nesse incrível Video Tutorial Walkthrough de Oz.

Pré-requisitos

  • NodeJS v10 LTS.
  • yarn (v1.22.10 or higher)
  • git
  1. Clique em Star no repositório giveth-dapp próximo ao canto superior direito desta página da web (se desejar).

  2. Junte-se a nós no Element ou Discord

  3. Fork esse repositório clicando no botão Fork no canto superior direito desta página da web. Continue seguindo as instruções do seu próprio repositório giveth-dapp.

  4. Clone seu próprio repositório "giveth-dapp". Copie o link do botão "Clone or download" próximo ao canto superior direito da página inicial deste repositório.

  5. O restante dessas etapas deve ser feito a partir da linha de comando de sua máquina. Consulte a seção OSX e Linux ou Windows para continuar.

OSX and Linux

Se o seu sistema operacional for qualquer distribuição do Linux, você pode usar os scripts de instalação todos em um. Agradecimentos especiais ao colaborador do Dapp Jurek Brisbane, disponível aqui junto com um vídeo no Youtube, caso contrário, tente o seguinte:

  1. Do diretório desejado que você deseja copiar a pasta "giveth-dapp" com os arquivos de origem.
    git clone git@github.com:Giveth/giveth-dapp.git

NOTA: Por favor, use o branch develop para contribuir.

   git clone -b develop git@github.com:Giveth/giveth-dapp.git
  1. Altere os diretórios para giveth-dapp:
    cd giveth-dapp
  1. Certifique-se de ter NodeJS (v10) e yarn (v1.22.10 ou superior) instalados.

  2. Instale as dependências do diretório giveth-dapp:

    yarn install
  1. É isso - agora você está pronto para executar o giveth-dapp! Vá para a seção Run DApp para obter mais instruções.

Windows

  1. Instale a versão mais recente do Python a partir desse Link. (Certifique-se de que o Python seja adicionado ao $PATH.)

  2. Instale o Microsoft Visual Studio 2017 (verifique a versão) desse link. Giveth-Dapp precisa do módulo node-gyp e node-gyp precisa do VS C++ 2017 Build Tools para ser instalado.

  3. Após o download, instale os pacotes marcados nessa imagem.

  4. Em seguida, execute o comando abaixo no prompt de comando

   npm config set msvs_version 2017
  1. Após isso, você deve instalar o NodeJS versão 10 LTS (é melhor ser v10.24.1 LTS).

  2. Baixe e execute o instalador node-v10.24.1-x64.msi e continue com a instalação normalmente. Certifique-se de ter a opção "Enable in PATH" habilitada antes de instalar.

  3. Abra a linha de comando no modo de administrador clicando com o botão direito do mouse no aplicativo cmd.exe e selecionando "Executar como administrador"

  4. No prompt de comando do administrador, mude para o diretório no qual deseja armazenar este repositório.

   cd C:\some\directory\for\repositories
  1. Verifique novamente a versão do node com o comando CMD:
   node -v
  1. Depois disso, instale a versão mais recente do Yarn. Tenha cuidado para não instalar pacotes com NPM. Se você já tentou "npm install", exclua a pasta "node modules" primeiro.
    yarn install
  1. É isso - agora você está pronto para executar o giveth-dapp!

Execute

  1. O Dapp Giveth precisará se conectar a um servidor feathers-giveth. Siga as instruções readme feathers-giveth para instalar e executar o servidor antes de prosseguir. Alternativamente, você pode alterar a configuração para se conectar ao ambiente develop, veja a seção Configuration.

  2. Inicie o Dapp.

    yarn start
  1. Assim que o dapp estiver no seu navegador, clique em "Entrar" no menu principal.

  2. Para testar localmente, escolha qualquer um dos arquivos da carteira encontrados na pasta giveth-dapp/keystores/ usando a senha da carteira: password. NÃO OS USE EM NENHUM EVM DA MAINNET.

  3. Usando o token de teste

Para usar o token de teste, você precisa importar o keystore.json usado em sua conta para a MetaMask. Após a importação, clique em 'Adicionar token' > 'Token personalizado' e insira o endereço do MiniMe Token que pode ser encontrado ao implantar os contratos (deve ser 0xe78A0F7E598Cc8b0Bb87894B0F60dD2a88d6a8Ab por padrão, mas certifique-se de verificar). O saldo do token deve aparecer automaticamente e o símbolo do token é MMT. No entanto, no DApp o símbolo do token é referido como ANT, b/c o DApp precisa ser capaz de buscar uma taxa de conversão.

NOTA: Ao redefinir os feathers ou reimplantar os contratos, você precisa remover o keystore da Metamask e seguir este procedimento novamente.

Build

yarn run build

NOTA: devido a algumas bibliotecas web3 que não são transpiladas do es6, temos que usar nossos giveth-react-scripts fork de scripts de reação.

Configuração

O DApp possui muitas variáveis de ambiente de nodes que podem ser usadas para alterar o comportamento do DApp sem alterar o código. Você pode configurá-los através de arquivos .env ou .env.local na pasta DApp.

Nome VariávelValor PadrãoDescrição
PORT3010Porta na qual o DApp é executado
REACT_APP_ENVIRONMENT'localhost'Local de feathers que o DApp deve se conectar. Por padrão, ele se conecta ao localhost feathers. Os valores permitidos são: localhost, develop, release, alpha, mainnet. Consulte Ambientes de implantação.
REACT_APP_DECIMALS8Quantos decimais devem ser mostrados para valores de criptomoeda. Observe que os cálculos ainda são feitos com 18 casas decimais.
REACT_APP_FEATHERJS_CONNECTION_URLDifere por REACT_APP_ENVIRONMENTSubstitui a URL de conexão de Feathers injetadas no ambiente.
REACT_APP_NODE_CONNECTION_URLDifere por REACT_APP_ENVIRONMENTSubstitui a URL de conexão do node EVM para fazer transações EVM.
REACT_APP_LIQUIDPLEDGING_ADDRESSDifere por REACT_APP_ENVIRONMENTSubstitui o endereço do contrato Liquid Pledge.
REACT_APP_DAC_FACTORY_ADDRESSDifere por REACT_APP_ENVIRONMENTSubstitui o endereço do contrato das Comunidades.
REACT_APP_CAMPAIGN_FACTORY_ADDRESSDifere por REACT_APP_ENVIRONMENTSubstitui o endereço do contrato do Campaign Factory.
REACT_APP_MILESTONE_FACTORY_ADDRESSDifere por REACT_APP_ENVIRONMENTSubstitui o endereço do contrato MilestoneFactory.
REACT_APP_TOKEN_ADDRESSESDifere por REACT_APP_ENVIRONMENTSubstitui os endereços de token em bridge. Esta é uma string de objeto JSON com nome do token: endereço do token.
REACT_APP_BLOCKEXPLORERDifere por REACT_APP_ENVIRONMENTSubstitui a URL base do explorador de blocos. O DApp assume que a API do blockexplorer é \<BLOCKEXPLORER\>/tx/\<TRANSACTION_HASH\>
REACT_APP_DEFAULT_GASPRICE10Substitui o gasPrice padrão usado se o serviço ethgasstation estiver inativo. O valor está em gwei
REACT_APP_ANALYTICS_KEY""Substitui a chave de análise Segment.

Exemplo de arquivo .env.local que faz o DApp rodar na porta 8080, conecta-se ao ambiente develop e usa o blockexplorer customizado:

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

O resto da configuração pode ser encontrada em configuration.js

Análise

O Segment Analytics pode ser ativado definindo como REACT_APP_ANALYTICS_KEY.

Strings de Consulta

A visualização de criação/proposta de milestones agora suporta argumentos de string de consulta! Os seguintes argumentos estão disponíveis:

ArgumentoValores EsperadosTipos
títuloTítulo do milestonestring
descriptionA descrição do milestonestring
recipientAddressO endereço do Recipientestring
reviewerAddressO endereço do reviewerstring
selectedFiatTypeUm tipo de fiat válido (i.e. USD)string
dateUma string de data de milestone válidastring
tokenUm símbolo de token válido(i.e. DAI)string
tokenAddressUm endereço de token válidostring
maxAmountUma quantidade máxima de ETH ou token válidosnúmero
fiatAmountUma quantidade máxima válida de fiat (dependente do selectedFiatType)número
isCappedDetermina se o milestone deve ser limitado0 or 1 (boolean)
requireReviewerDetermina se o milestone deve exigir um revisor0 or 1 (boolean)

Desenvolvimento Local

A princípio, você gostaria de executar o DApp localmente. Ao executar o testrpc localmente no modo determinístico, você pode usar qualquer um dos keystores no giveth-dapp/keystores como sua carteira.

Isso fornecerá acesso às contas testrpc para desenvolvimento local. Cada keystore usa a mesma senha: password. NÃO OS USE EM NENHUM EVM DA MAINNET

Os keystores são semeados com 10.000 tokens ANT para testar doações. Antes de começar a testar doações, certifique-se de adicionar o keystore da sua conta ao MetaMask e mude a MetaMask para Ganache. O modal de doação deve em seguida, mostre o saldo apropriado ao doar em tokens ANT

NOTA: Se você receber um erro nonce na MetaMask ou se o DApp não carregar com a sua MetaMask desbloqueada, pode ser que a MetaMask esteja confusa. Para resolver isso, vá em "configurações" -> "Redefinir conta" na MetaMask para redefinir os dados da conta nonce & cache.

Desenvolvimento e testes de relações públicas

  1. O Giveth Dapp é implantado automaticamente a partir da branch de desenvolvimento e está disponível no Rinkeby develop.giveth.io. Todas as pull requests são implantadas automaticamente e a visualização de PR será gerada após o envio. Para saber como acessar as visualizações de relações públicas, consulte Processo de desenvolvimento e garantia de qualidade em nosso wiki.

  2. Para usar o DApp você precisará criar uma conta. Se essa é sua primeira vez, clique em "inscrever-se" e faça seu registro. Se você já tiver uma keychain válida, use-a para fazer login.

  3. Você precisará do ether de teste na rede Rinkeby. Visite a sua "carteira" para ver seu novo endereço (0x..). Copie esse endereço e use o Faucet para obter alguns: https://faucet.rinkeby.io/.

Ambientes de Implantação

Na Giveth, estamos usando o modelo de branch gitflow para implantar em 4 ambientes diferentes.

NomeBlockchainBranch DeployedAuto DeployUso
mainnetEthereum Main NetworkmasternãoA implantação da mainnet por enquanto está abandonada devido aos altos custos de transação até que uma solução sustentável seja encontrada.
alphaRinkeby Test NetworkmasternãoAmbiente usado como versão de produção até que a escalabilidade seja resolvida.
releaseRinkeby Test NetworkreleasesimAmbiente para teste de controle de qualidade de release candidate por não desenvolvedores.
developRinkeby Test NetworkdevelopsimAmbiente de desenvolvimento para integração de novos recursos. As ramificações de recurso e pull request também são implantadas automaticamente nesse ambiente.

Você pode alterar o ambiente ao qual o DApp se conecta por meio das variáveis de ambiente do node. Consulte a seção Configuração para obter mais detalhes.