# Bir IBAX Ağının Kurulması

Bu bölümde, size kendi blok zinciri ağınızı nasıl kuracağınızı göstereceğiz.

# Bir dağıtım örneği

Örnek olarak aşağıdaki üç düğümle bir blok zinciri ağı kurulacaktır.

Üç ağ düğümü:

  • Düğüm 1, blok zinciri ağındaki yeni bloklar oluşturabilen ve kendisine bağlı istemcilerden işlemler gönderebilen ilk düğümdür;
  • Düğüm 2, kendisine bağlı istemcilerden yeni bloklar oluşturabilen ve işlemler gönderebilen başka bir onur düğümüdür;
  • Düğüm 3, yeni bloklar oluşturamayan ancak kendisine bağlı istemcilerden işlem gönderebilen bir koruyucu düğümdür.

Dağıtılacak üç düğümün yapılandırmaları:

  • Her düğüm kendi PostgreSQL veritabanı sistemi örneğini kullanır;
  • Her düğüm kendi Centrifugo hizmet örneğini kullanır;
  • Sunucu tarafı github arka ucu, diğer arka uç bileşenleriyle aynı ana bilgisayara dağıtılır.

Düğümler tarafından kullanılan örnek adresler ve bağlantı noktaları aşağıdaki tabloda açıklanmıştır:

Node Component IP & port
1 PostgreSQL 127.0.0.1:5432
1 Centrifugo 192.168.1.1:8000
1 go-ibax (TCP service) 192.168.1.1:7078
1 go-ibax (API service) 192.168.1.1:7079
2 PostgreSQL 127.0.0.1:5432
2 Centrifugo 192.168.1.2:8000
2 go-ibax (TCP service) 192.168.1.2:7078
2 go-ibax (API service) 192.168.1.2:7079
3 PostgreSQL 127.0.0.1:5432
3 Centrifugo 192.168.1.3:8000
3 go-ibax (TCP service) 192.168.1.3:7078
3 go-ibax (API service) 192.168.1.3:7079

# Dağıtım aşaması

Kendi blok zinciri ağınız birkaç aşamada devreye alınmalıdır:

# Sunucu dağıtımı

# İlk düğümü dağıtın

İlk düğüm özel bir düğümdür çünkü blok zinciri ağını başlatmak çok önemlidir. Blok zincirinin ilk bloğu, ilk düğüm tarafından oluşturulur ve diğer tüm düğümler blok zincirini ondan indirir. İlk düğümün sahibi platform yaratıcısıdır.

# Bağımlılıklar ve ortam ayarları

# sudo

Debian 9'un tüm komutları, root olmayan bir kullanıcı olarak çalıştırılmalıdır. Ancak, bazı sistem komutlarının yürütülmesi için süper kullanıcı izinleri gerekir. Varsayılan olarak, sudo Debian 9'da kurulu değildir, önce onu kurmalısınız.

  1. Süper kullanıcı olun.
su -
  1. Sisteminizi yükseltin.
apt update -y && apt upgrade -y && apt dist-upgrade -y
  1. Install sudo。
apt install sudo -y
  1. Kullanıcınızı sudo grubuna ekleyin.
usermod -a -G sudo user
  1. Yeniden başlattıktan sonra değişiklikler geçerli olur.

# Golang

Go'yu Resmi Dokümantasyona (opens new window) göre yükleyin.

  1. Go'nun en son kararlı sürümünü (> 1.10.x) Golang resmi web sitesinden (opens new window) veya komut satırından indirin:
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
  1. Tarball'ı /usr/local dizinine çıkarmak için tar kullanın.
tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz
  1. PATH ortam değişkenlerine /usr/local/go/bin ekleyin (/etc/profile veya $HOME/.profile konumunda bulunur).
export PATH=$PATH:/usr/local/go/bin
  1. Değişikliklerin etkili olması için "source" dosyasını çalıştırın, örneğin:
source $HOME/.profile
  1. Geçici dosyaları silin:
rm go1.11.2.linux-amd64.tar.gz

# PostgreSQL

  1. PostgreSQL (> v.10) ve psql'yi kurun:
sudo apt install -y postgresql

# Centrifugo

  1. Centrifugo V.1.8.0'ı GitHub (opens new window) adresinden veya komut satırından indirin:
wget https://github.com/centrifugal/centrifugo/releases/download/v1.8.0/centrifugo-1.8.0-linux-amd64.zip \
&& unzip centrifugo-1.8.0-linux-amd64.zip \
&& mkdir centrifugo \
&& mv centrifugo-1.8.0-linux-amd64/* centrifugo/
  1. Geçici dosyaları silin:
rm -R centrifugo-1.8.0-linux-amd64 \
&& rm centrifugo-1.8.0-linux-amd64.zip

# Dizin yapısı

Debian 9 sistemi için blockchain platformu tarafından kullanılan tüm yazılımların ayrı bir dizinde saklanması önerilir.

/opt/backenddir dizini burada kullanılır, ancak herhangi bir dizini kullanabilirsiniz. Bu durumda, lütfen tüm komutları ve yapılandırma dosyalarını buna göre değiştirin.

  1. Blok zinciri platformu için bir dizin oluşturun:
sudo mkdir /opt/backenddir
  1. Kullanıcınızı dizinin sahibi yapın:
sudo chown user /opt/backenddir/
  1. Centrifugo, go-ibax ve düğüm verileri için alt dizinler oluşturun. Tüm düğüm verileri, "X" düğüm numarası olmak üzere "nodeX" adlı bir dizinde depolanır. Dağıtılacak düğüme göre, "düğüm1" Düğüm 1'dir, "düğüm2" Düğüm 2'dir vb.
mkdir /opt/backenddir/go-ibax \
mkdir /opt/backenddir/go-ibax/node1 \
mkdir /opt/backenddir/centrifugo \

# Veritabanı oluştur

  1. Kullanıcı parolasını postgres varsayılan parolası 123456 ile değiştirin. Kendi parolanızı belirleyebilirsiniz, ancak bunu config.toml düğüm yapılandırma dosyasında değiştirmelisiniz.
sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD '123456'"
  1. Düğüm için geçerli bir durum veritabanı oluşturun, örneğin chaindb:
sudo -u postgres psql -c "CREATE DATABASE chaindb"

# Centrifugo Yapılandırın

  1. Centrifugo yapılandırma dosyasını oluşturun:
echo '{"secret":"CENT_SECRET"}' > /opt/backenddir/centrifugo/config.json

Kendi gizlinizi ayarlayabilirsiniz, ancak bunu config.toml düğüm yapılandırma dosyasında da değiştirmelisiniz.

# go-ibax'ı kurun

  1. GitHub'dan github-backend'i indirin:
  2. go-ibax ikili dosyasını /opt/backenddir/go-ibax dizinine kopyalayın. Varsayılan Go çalışma alanını kullanıyorsanız, ikili dosyalar $HOME/go/bin dizininde bulunur:
cp $HOME/go/bin/go-ibax /opt/backenddir/go-ibax

# İlk düğümü yapılandırın

  1. Düğüm 1 için yapılandırma dosyasını oluşturun:
/opt/backenddir/go-ibax config \
 --dataDir=/opt/backenddir/node1 \
 --dbName=chaindb \
 --centSecret="CENT_SECRET" --centUrl=http://192.168.1.1:8000 \
 --httpHost=192.168.1.1 \
 --httpPort=7079 \
 --tcpHost=192.168.1.1 \
 --tcpPort=7078
  1. Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 1'in anahtarlarını oluşturun:
/opt/backenddir/go-ibax generateKeys \
 --config=/opt/backenddir/node1/config.toml
  1. İlk bloğu oluşturun:

Not

Kendi blok zinciri ağınızı oluşturmak istiyorsanız, `--test=true' seçeneğini kullanmalısınız. Aksi takdirde yeni bir hesap oluşturamazsınız.

/opt/backenddir/go-ibax generateFirstBlock \
 --config=/opt/backenddir/node1/config.toml \
 --test=true
  1. Veritabanını başlatın:
/opt/backenddir/go-ibax initDatabase \
 --config=/opt/backenddir/node1/config.toml

# İlk düğüm sunucusunu başlatın

İlk düğüm sunucusunu başlatmak için aşağıdaki iki hizmeti başlatmanız gerekir:

  • Centrifugo
  • go-imax

Bu dosyalarla hizmetler oluşturamadıysanız, farklı konsollardaki dizinlerden ikili dosyaları çalıştırabilirsiniz.

  1. Centrifugo çalıştırın:
/opt/backenddir/centrifugo/centrifugo \
 -a 192.168.1.1 -p 8000 \
 --config /opt/backenddir/centrifugo/config.json
  1. go-ibax'ı çalıştırın:
/opt/backenddir/go-ibax start \
 --config=/opt/backenddir/node1/config.toml

# Diğer düğümleri dağıtın

Diğer tüm düğümlerin (Düğüm 2 ve Düğüm 3) konuşlandırılması birincisine benzer olsa da, üç fark vardır:

  • İlk bloğu oluşturmanız gerekmez. Ancak, Düğüm 1'den geçerli düğüm veri dizinine kopyalanması gerekir;
  • Düğüm, --nodesAddr seçeneğini yapılandırarak Düğüm 1'den blokları indirmelidir;
  • Düğüm kendi adreslerini ve portlarını kullanmalıdır.

# Düğüm 2

Aşağıda gösterildiği gibi çalıştırma talimatlarını izleyin:

  1. Bağımlılıklar ve ortam ayarları
  2. Veritabanı oluştur
  3. Centrifugo
  4. go-ibax'ı yükleyin
  5. Düğüm 2 için yapılandırma dosyasını oluşturun:
 /opt/backenddir/go-ibax config \
--dataDir=/opt/backenddir/node2 \
--dbName=chaindb \
--centSecret="CENT_SECRET" --centUrl=http://192.168.1.2:8000 \
--httpHost=192.168.1.2 \
--httpPort=7079 \
--tcpHost=192.168.1.2 \
--tcpPort=7078 \
--nodesAddr=192.168.1.1
  1. İlk blok dosyasını Düğüm 2'ye kopyalayın. Örneğin, bu işlemi Düğüm 2 üzerinden scp üzerinden gerçekleştirebilirsiniz:
 scp user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node2/
  1. Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 2'nin anahtarlarını oluşturun:
 /opt/backenddir/go-ibax generateKeys \
--config=/opt/backenddir/node2/config.toml
  1. Veritabanını başlatın:
 ./go-ibax initDatabase --config\=node2/config.toml
  1. Çalıştır centrifugo:
/opt/backenddir/centrifugo/centrifugo \
-a 192.168.1.2 -p 8000 \
--config/opt/backenddir/centrifugo/config.json
  1. Çalıştır go-ibax:
/opt/backenddir/go-ibax start \
 --config=/opt/backenddir/node2/config.toml

Sonuç olarak, düğüm bloğu ilk düğümden indirir. Bu düğüm bir doğrulama düğümü olmadığı için yeni bir blok oluşturamaz. Düğüm 2, daha sonra doğrulama düğümleri listesine eklenecektir.

# Düğüm 3

Aşağıda gösterildiği gibi çalıştırma talimatlarını izleyin:

  1. Bağımlılıklar ve ortam ayarları

  2. Veritabanı oluştur

  3. Centrifugo

  4. go-ibax'ı yükleyin

  5. Düğüm 3 için yapılandırma dosyasını oluşturun:

 /opt/backenddir/go-ibax config \
--dataDir=/opt/backenddir/node3 \
--dbName=chaindb \
--centSecret="CENT_SECRET" --centUrl=http://192.168.1.3:8000 \
--httpHost=192.168.1.3 \
--httpPort=7079 \
--tcpHost=192.168.1.3 \
--tcpPort=7078 \
--nodesAddr=192.168.1.1
  1. İlk blok dosyasını Düğüm 3'e kopyalayın. Örneğin, bu işlemi Düğüm 3'te scp aracılığıyla gerçekleştirebilirsiniz:
 scp user@192.168.1.1:/opt/backenddir/node1/1block /opt/backenddir/node3/
  1. Düğümün ve hesabın genel ve özel anahtarları dahil olmak üzere Düğüm 3'ün anahtarını oluşturun:
 /opt/backenddir/go-ibax generateKeys \
--config=/opt/backenddir/node3/config.toml
  1. Veritabanını başlatın:
 ./go-ibax initDatabase --config=node3/config.toml

9.Çalıştır centrifugo:

 /opt/backenddir/centrifugo/centrifugo \
-a 192.168.1.3 -p 8000 \
--config/opt/backenddir/centrifugo/config.json

10.Çalıştır go-ibax:

 /opt/backenddir/go-ibax start \
 --config=/opt/backenddir/node3/config.toml

Sonuç olarak, düğüm bloğu ilk düğümden indirir. Bu düğüm bir doğrulama düğümü olmadığı için yeni bir blok oluşturamaz. İstemci düğüme bağlı olabilir ve ağa işlemler gönderebilir.

# Front-end dağıtımı

Yalnızca Debian 9 (Stretch) 64-bit Resmi Sürümüne GNOME GUI yüklendikten sonra, Govis istemcisi "yarn" paket yöneticisiyle oluşturulabilir.

# Yazılım önkoşulları

  1. Node.js LTS sürüm 8.11'i Node.js resmi web sitesinden veya komut satırından indirin:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash
  1. Node.js'yi yükleyin:
sudo apt install -y nodejs
  1. Yarn Github (opens new window) deposundan veya komut satırından Yarn 1.7.0 sürümünü indirin:
cd/opt/backenddir \
&& wget https://github.com/yarnpkg/yarn/releases/download/v1.7.0/yarn_1.7.0_all.deb
  1. Kur Yarn:
sudo dpkg -i yarn_1.7.0_all.deb && rm yarn_1.7.0_all.deb

# Bir Weaver uygulaması oluşturun

  1. Weaver'ın en son sürümünü github-frontend'den git aracılığıyla indirin:
cd/opt/backenddir \
&& git clone https://github.com/ibax-io/ibax-front.git
  1. Install Weaver dependencies via Yarn:
cd/opt/backenddir/ibax-front/ \
&& yarn install

# Blok zinciri ağı için yapılandırma dosyasını ekleyin

  1. Düğüm bağlantısı hakkında bilgi içeren bir settings.json dosyası oluşturun:
cp/opt/backenddir/ibax-front/public/settings.json.dist \
 /opt/backenddir/ibax-front/public/public/settings.json
  1. settings.json dosyasını herhangi bir metin düzenleyicide düzenleyin ve gerekli ayarları bu biçimde ekleyin:
http://Node_IP-address:Node_HTTP-Port

Üç düğüm için settings.json dosyası örnekleri:

{
  "fullNodes": [
    "http://192.168.1.1:7079",
    "http://192.168.1.2:7079",
    "http://192.168.1.3:7079"
  ]
}

Weaver Masaüstü Uygulaması Oluşturun

1.Masaüstü sürümünü oluşturmak için yarn kullanın:

cd/opt/backenddir/ibax-front \
&& yarn build-desktop

2.Masaüstü sürümü, AppImage son eki biçiminde paketlenecektir:

yarn release --publish never -l

Oluşturulduktan sonra uygulamanız kullanılabilir ancak bağlantı konfigürasyonu değiştirilemez. Bu ayarların değiştirilmesi gerekiyorsa, uygulamanın yeni bir sürümü oluşturulmalıdır.

# Weaver Web Uygulaması Oluşturun

  1. Bir web uygulaması oluşturun:
cd/opt/backenddir/ibax-front/ \
&& yarn build

Oluşturulduktan sonra yeniden dağıtılabilir dosyalar /build dizinine yerleştirilecektir. Dağıtım için istediğiniz herhangi bir web sunucusunu kullanabilirsiniz ve settings.json dosyası da bu dizine yerleştirilmelidir. Bağlantı ayarları değiştirilirse uygulamayı yeniden oluşturmaya gerek olmadığını unutmayın. Bunun yerine settings.json dosyasını düzenleyin ve web sunucusunu yeniden başlatın.

  1. Geliştirme veya test amacıyla Yarn'ın web sunucusunu oluşturabilirsiniz:
sudo yarn global add serve \
&& serve -s build

Bundan sonra, Weaver web uygulamanız şu konumda kullanılabilir olacaktır: http://localhost:5000.

# Blok zinciri ağını yapılandırın

# İçerik oluşturucu hesabını oluşturun

İlk düğüm sahibi için bir hesap oluşturun. Bu hesap, yeni blok zinciri platformunun yaratıcısıdır ve yönetici erişimine sahiptir.

  1. Weaver'ı çalıştırın;

  2. Aşağıdaki verileri kullanarak mevcut hesabı içe aktarın:

/opt/backenddir/node1/PrivateKey dosyasında bulunan düğüm sahibinin özel anahtarının yedeğini yükleyin.

Not

Bu dizinde iki özel anahtar dosyası vardır. PrivateKey dosyası, düğüm sahibinin hesabını oluşturmak için kullanılır. 'NodePrivateKey' dosyası, düğümün kendisinin özel anahtarıdır ve gizli tutulmalıdır.

3.Hesaba giriş yaptıktan sonra, şu anda herhangi bir rol oluşturulmadığı için lütfen Rolsüz seçeneğini seçiniz.

# Uygulamaları, rolleri ve şablonları içe aktarın

Şu anda, blockchain platformu boş bir durumda. Temel ekosistem işlevlerini destekleyen roller, şablonlar ve uygulama çerçeveleri ekleyerek yapılandırabilirsiniz.

1.Uygulama deposunu klonlayın;

cd/opt/backenddir \
&& git clone https://github.com/ibax-io/dapps.git
  1. Weaver'da Geliştirici> İçe Aktar'a gidin;

  2. Uygulamaları aşağıdaki sıraya göre içe aktarın:

 A./opt/backenddir/dapps/system.json 
 B./opt/backenddir/dapps/conditions.json 
 C./opt/backenddir/dapps/basic.json 
 D./opt/backenddir/dapps/lang_res.json
  1. Yönetici> Rol'e gidin ve Varsayılan Rolü Yükle'ye tıklayın;

5.Sağ üst köşedeki konfigürasyon dosyası menüsünden sistemden çıkın;

6.Sisteme Yönetici olarak giriş yapın;

  1. Ana Sayfa> Oy> Şablon Listesi'ne gidin ve Varsayılan Şablonu Yükle'ye tıklayın.

# İlk düğümü düğüm listesine ekleyin

1.Geliştirici> Platform Parametreleri'ne gidin ve first_nodes parametresini tıklayın;

2.İlk blok zinciri ağ düğümünün parametrelerini belirtin.

  • public_key - Düğümün genel anahtarı /opt/backenddir/node1/NodePublicKey dosyasında bulunur;
{"api_address":"http://192.168.1.1:7079","public_key":"%node_public_key%","tcp_address":"192.168.1.1:7078"}

# Başka Honor düğümleri ekleyin

# Konsensüs rol grubuna üye ekleyin

Varsayılan olarak, yalnızca fikir birliği rolü (Consensus) grubundaki üyeler, diğer ana düğümleri eklemek için gereken oylamaya katılabilir. Bu, yeni bir ana düğüm eklemeden önce ekosistem üyelerinin role atanması gerektiği anlamına gelir. Bu bölümde, içerik oluşturucunun hesabı, fikir birliği rol grubunun tek üyesi olarak belirlenir. Bir üretim ortamında, bu rolün yönetişimi gerçekleştiren platform üyelerine atanması gerekir.

  1. Ana Sayfa> Rol'e gidin ve Konsensüs'e tıklayın;

  2. Oluşturanın hesabını role atamak için Ata'yı tıklayın.

# Diğer düğümler için sahip hesabı oluşturun

  1. Weaver'ı çalıştırın;

  2. Aşağıdaki verileri kullanarak mevcut hesabı içe aktarın: – /opt/backenddir/node2/PrivateKey dosyasında bulunan düğüm sahibinin özel anahtarının yedeğini yükleyin.

  3. Hesaba giriş yaptıktan sonra, şu anda herhangi bir rol oluşturulmadığı için lütfen Rolsüz seçeneğini seçin.

  4. Ana Sayfa> Kişisel Bilgiler'e gidin ve kişisel bilgilerin başlığına tıklayın;

  5. Hesap ayrıntılarını ekleyin (kişisel bilgi başlığı, açıklama vb.).

# Doğrulayıcı rolüyle düğüm sahibini atayın

  1. Yeni düğüm sahibi tarafından yapılan işlemler:
    1. Ana Sayfa> Doğrulayıcı'ya gidin;
    2. Talep Oluştur'a tıklayın ve doğrulayıcı adayın başvuru formunu doldurun;
    3. İstek gönder'e tıklayın.
  2. Oluşturucu tarafından yapılan işlemler:
    1. Konsensüs rolüyle oturum açın (Consensus);
    2. Ana Sayfa> Doğrulayıcı'ya gidin;
    3. Adayın isteğine göre oylamaya başlamak için "Oynat" simgesine tıklayın;
    4. Ana Sayfa> Oy'a gidin ve Oylama durumunu güncelle'yi tıklayın;
    5. Oylama adına tıklayın ve düğüm sahibi için oy verin.

Sonuç olarak, yeni düğümün sahibinin hesabına Doğrulayıcı rolü atanır ve yeni düğüm, ana düğümler listesine eklenir.