Nebulas 101 - 01 Compilação e Instalação de Nebulas

A versão actual da Mainnet da Nebulas é 2.0, denominada Nebulas Nova.

A Nebulas Nova visa descobrir o valor dos dados da blockchain, e representa o futuro da colaboração.

Veja a nossa introdução no YouTube para uma explicação mais detalhada..

Pode descarregar o código fonte da Nebulas e compilar a blockchain privada localmente.

Para aprender sobre Nebulas, por favor leia o White Paper Não-Técnico de Nebulas.

Para aprender sobre a técnologia, por favor leia o White Paper Técnico e código no github de Nebulas.

Nebulas apenas pode correr em Mac e Linux, de momento. A versão Windows irá ser lançada brevevemente.

Ambiente de desenvolvimento para Golang

Para já, Nebulas foi implementada em Golang e C++.

Componentes Versão Descrição
Golang The Go Programming Language, version >= 1.12

Mac OSX

Homebrew é recomendado para instalar Golang em Mac.

# install
brew install go

# environment variables
export GOPATH=/caminho/para/areadetrabalho
Nota: GOPATH é o directório de trabalho que pode ser escolhido por si. Depois de configurar o GOPATH, os seus projectos Go terão de ser colocados no directório GOPATH.

Linux

# download
wget https://dl.google.com/go/go1.12.linux-amd64.tar.gz

# extração
tar -C /usr/local -xzf go1.12.linux-amd64.tar.gz

# variáveis do ambiente de trabalho
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/caminho/para/areadetrabalho

Compilação Nebulas

Download

Clone o código fonte com os seguintes comandos:

# entra na área de trabalho
cd /caminho/para/areadetrabalho

# descarrega
git clone https://github.com/nebulasio/go-nebulas.git

# entra no repositório
cd go-nebulas

# o branch/ramo principal é o mais estável
git checkout master

Compile Neb

Prepare o seu ambiente de execução:

cd /caminho/para/areadetrabalho
source setup.sh

Compile NEB. Pode agora criar o executável da Nebulas:

cd /caminho/para/areadetrabalho
make build

Uma vez que a compilação tiver acabado irá encontrar um ficheiro neb executável no directório raiz. ../../_images/101-01-make-build.pngmake build

Execute NEB

Bloco Génese

Antes de lançar uma nova chain Nebulas, temos de definir a configuração do bloco génese.

Configuração do Bloco Génese

# Ficheiro de texto Neb génese. Esquema é definido em core/pb/genesis.proto.

meta {
    # Identidade da chain
  chain_id: 100
}

consensus {
    dpos {
    # Dinastia inicial, incluíndo todos os mineradores iniciais
        dynasty: [
            [ miner address ],
            ...
        ]
    }
}

# Pré-atribuição dos tokens iniciais
token_distribution [
    {
        address: [ endereço de atribuição ]
        value: [ quantidade de atribuição de tokens ]
    },
    ...
]

Um exemplo de uma genesis.conf encontra-se em conf/default/genesis.conf.

Configuração

Antes de activar o nó neb, temos de definir a configuração do mesmo.

Configuração do Nó Neb

# Ficheiro de configuração Neb. Esquema é definido em neblet/pb/config.proto:Config.

# Configuração da rede
network {
    # Para o primeiro nó numa novo chain Nebulas, não é preciso uma `seed` (semente).
    # Caso contrário, todo o nó precisa de nós semente para serem introduzidos na chain de Nebulas.
    # semente: ["/ip4/127.0.0.1/tcp/8680/ipfs/QmP7HDFcYmJL12Ez4ZNVCKjKedfE7f48f1LAkUc3Whz4jP"]

    # Host de serviço de rede P2p. Suporta múltiplos Ips e portas.
    listen: ["0.0.0.0:8680"]

    # A chave privada é usada para gerar o ID do nó. Se não usar chave privada, o nó vai gerar um novo ID de nó.
    # private_key: "conf/network/id_ed25519"
}

# Configuração da Chain
chain {
    # ID da Chain de Rede
    chain_id: 100

    # Local de armazenamento da base de dados
    datadir: "data.db"

    # Local da keystore das contas
    keydir: "keydir"

    # Configuração do bloco de génese
    genesis: "conf/default/genesis.conf"

    # Algoritmo da assinatura
    signature_ciphers: ["ECC_SECP256K1"]

    # Endereço do minerador
    miner: "n1SAQy3ix1pZj8MPzNeVqpAmu1nCVqb5w8c"

    # Endereço Coinbase, todas as recompensas recebidas pelo minerador acima serão enviadas para este endereço
    coinbase: "n1FF1nz6tarkDVwWQkMnnwFPuPKUaQTdptE"

    # A palavra passe para o ficheiro da keystore do minerador
    passphrase: "passphrase"
}

# Configuração do API
rpc {
    # Porta do API GRPC
    rpc_listen: ["127.0.0.1:8684"]

    # Porta do API HTTP
    http_listen: ["127.0.0.1:8685"]

    # O módulo aberto
    http_module: ["api", "admin"]
}

# Configuração do registo
app {
    # Nível de registo: [debug, info, warn, error, fatal]
    log_level: "info"

    # Local do registo
    log_file: "logs"

    # Abrir registo de falhas
    enable_crash_report: false
}

# Configuração do NBRE
nbre {
    # directório raíz do NBRE, onde as bibliotecas se encontram
    root_dir: "nbre"
    # path do directório dos registos do NBRE
    log_dir: "conf/nbre/logs"
    # directório da db do NBRE
    data_dir: "conf/nbre/nbre.db"
    # directório do executável do NBRE
    nbre_path: "nbre/bin/nbre"
    # Endereço do administrador usado para submeter transacções e autorizar contas específicas
    # a fazer submissões IR. Para mais detalhes, por favor consulte os documentos do NBRE.
    admin_address: "n1S9RrRPC46T9byYBS868YuZgzqGuiPCY1m"
    # Altura quando o DIP entra em efeito
    start_height: 2307000
    # Socket IPC do NEB e NBRE
    ipc_listen: "127.0.0.1"
    ipc_port: 8688
}

# Configuração de métricas
stats {
    # Abrir nó de métricas
    enable_metrics: false

    # Configuração influxdb
    influxdb: {
        host: "http://localhost:8086"
        db: "nebulas"
        user: "admin"
        password: "admin"
    }
}

Muitos exemplos podem ser encontrados em $GOPATH/src/github.com/nebulasio/go-nebulas/conf/

Operar nós

A chain Nebulas que está a operar de momento é privada e diferente da Testnet e Mainnet oficial.

Activa o teu primeiro nó Nebulas com os seguintes comandos:

cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/default/config.conf

Depois de iniciar, o seguinte deverá aparecer no terminal: ../../_images/101-01-seed-node-start.pngseed node start

Por padrão, o nó que usa conf/default/config.conf não irá minerar novos blocos. Activa o teu primeiro nó de mineração Nebulas com os próximos comandos:

cd $GOPATH/src/github.com/nebulasio/go-nebulas
./neb -c conf/example/miner.conf

Depois do nó iniciar, se a conexão com o nó semente suceder, irá ver o seguinte registo, que estará no ficheiro de registo logs/miner.1/neb.log): ../../_images/101-01-node-start.pngnode start

Nota: Pode iniciar vários nós localmente. Por favor confirme que as portas nos ficheiros de configuração dos nós são diferentes para não haverem conflictos.

Próximo passo: Tutorial 2

Envio de Transações com Nebulas