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
Clique em Star nesse repositório próximo ao canto superior direito dessa página (se quiser).
Junte-se ao nosso Discord se ainda não for um membro.
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.
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
- Altere os diretórios para feathers-giveth:
cd feathers-giveth/
Verifique se você tem NodeJS (v10.24.0), yarn (v0.27.5 ou superior) e npm (5.4.1 ou superior) instalados.
Instale as dependências do diretório feathers-giveth:
yarn install
Instale o Mongo (recomendamos instalar via Brew).
Execute o Mongo em seu terminal
mongod
ou em segundo planomongod --fork --syslog
.Instale o Redis (recomendamos instalar via Brew
brew install redis
)Execute o Redis na janela do terminal
redis-server
ou em segundo planoredis-server --daemonize yes
.(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
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.
- 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
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.
Opcionalmente, abra uma nova janela terminal e inicie o daemon ipfs.
ipfs daemon
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
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 liquidPledgegetState.js
- imprime o estado atual dos contratos de vault e liquidPledgeing implantadosconfirm.js
- confirma todos os pagamentos pendentes na vaultmakeUserAdmin.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
- 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
- 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
- Opcionalmente, abra uma nova janela de terminal e inicie o daemon ipfs.
ipfs daemon
- 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
Clique em Star no repositório
giveth-dapp
próximo ao canto superior direito desta página da web (se desejar).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.
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.
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:
- 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
- Altere os diretórios para giveth-dapp:
cd giveth-dapp
Certifique-se de ter NodeJS (v10) e yarn (v1.22.10 ou superior) instalados.
Instale as dependências do diretório giveth-dapp:
yarn install
- É isso - agora você está pronto para executar o giveth-dapp! Vá para a seção Run DApp para obter mais instruções.
Windows
Instale a versão mais recente do Python a partir desse Link. (Certifique-se de que o Python seja adicionado ao $PATH.)
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.
Após o download, instale os pacotes marcados nessa imagem.
Em seguida, execute o comando abaixo no prompt de comando
npm config set msvs_version 2017
Após isso, você deve instalar o NodeJS versão 10 LTS (é melhor ser v10.24.1 LTS).
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.
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"
No prompt de comando do administrador, mude para o diretório no qual deseja armazenar este repositório.
cd C:\some\directory\for\repositories
- Verifique novamente a versão do node com o comando CMD:
node -v
- 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
- É isso - agora você está pronto para executar o giveth-dapp!
Execute
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.Inicie o Dapp.
yarn start
Assim que o dapp estiver no seu navegador, clique em "Entrar" no menu principal.
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.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ável | Valor Padrão | Descrição |
---|---|---|
PORT | 3010 | Porta 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_DECIMALS | 8 | Quantos 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_URL | Difere por REACT_APP_ENVIRONMENT | Substitui a URL de conexão de Feathers injetadas no ambiente. |
REACT_APP_NODE_CONNECTION_URL | Difere por REACT_APP_ENVIRONMENT | Substitui a URL de conexão do node EVM para fazer transações EVM. |
REACT_APP_LIQUIDPLEDGING_ADDRESS | Difere por REACT_APP_ENVIRONMENT | Substitui o endereço do contrato Liquid Pledge. |
REACT_APP_DAC_FACTORY_ADDRESS | Difere por REACT_APP_ENVIRONMENT | Substitui o endereço do contrato das Comunidades. |
REACT_APP_CAMPAIGN_FACTORY_ADDRESS | Difere por REACT_APP_ENVIRONMENT | Substitui o endereço do contrato do Campaign Factory. |
REACT_APP_MILESTONE_FACTORY_ADDRESS | Difere por REACT_APP_ENVIRONMENT | Substitui o endereço do contrato MilestoneFactory. |
REACT_APP_TOKEN_ADDRESSES | Difere por REACT_APP_ENVIRONMENT | Substitui os endereços de token em bridge. Esta é uma string de objeto JSON com nome do token: endereço do token. |
REACT_APP_BLOCKEXPLORER | Difere por REACT_APP_ENVIRONMENT | Substitui a URL base do explorador de blocos. O DApp assume que a API do blockexplorer é \<BLOCKEXPLORER\>/tx/\<TRANSACTION_HASH\> |
REACT_APP_DEFAULT_GASPRICE | 10 | Substitui 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:
Argumento | Valores Esperados | Tipos |
---|---|---|
título | Título do milestone | string |
description | A descrição do milestone | string |
recipientAddress | O endereço do Recipiente | string |
reviewerAddress | O endereço do reviewer | string |
selectedFiatType | Um tipo de fiat válido (i.e. USD) | string |
date | Uma string de data de milestone válida | string |
token | Um símbolo de token válido(i.e. DAI) | string |
tokenAddress | Um endereço de token válido | string |
maxAmount | Uma quantidade máxima de ETH ou token válidos | número |
fiatAmount | Uma quantidade máxima válida de fiat (dependente do selectedFiatType) | número |
isCapped | Determina se o milestone deve ser limitado | 0 or 1 (boolean) |
requireReviewer | Determina se o milestone deve exigir um revisor | 0 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
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.
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.
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.
Nome | Blockchain | Branch Deployed | Auto Deploy | Uso |
---|---|---|---|---|
mainnet | Ethereum Main Network | master | não | A implantação da mainnet por enquanto está abandonada devido aos altos custos de transação até que uma solução sustentável seja encontrada. |
alpha | Rinkeby Test Network | master | não | Ambiente usado como versão de produção até que a escalabilidade seja resolvida. |
release | Rinkeby Test Network | release | sim | Ambiente para teste de controle de qualidade de release candidate por não desenvolvedores. |
develop | Rinkeby Test Network | develop | sim | Ambiente 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.