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:
- Bir dağıtım örneği
- Dağıtım aşaması
- Sunucu dağıtımı
- Diğer düğümleri dağıtın
- Frontend dağıtım
- Blockchain ağını yapılandırın
- Diğer onur düğümleri ekleyin
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.
- Süper kullanıcı olun.
su -
- Sisteminizi yükseltin.
apt update -y && apt upgrade -y && apt dist-upgrade -y
- Install sudo。
apt install sudo -y
- Kullanıcınızı sudo grubuna ekleyin.
usermod -a -G sudo user
- Yeniden başlattıktan sonra değişiklikler geçerli olur.
Golang
Go'yu Resmi Dokümantasyona göre yükleyin.
- Go'nun en son kararlı sürümünü (> 1.10.x) Golang resmi web sitesinden veya komut satırından indirin:
wget https://dl.google.com/go/go1.11.2.linux-amd64.tar.gz
- Tarball'ı
/usr/local
dizinine çıkarmak için tar kullanın.
tar -C /usr/local -xzf go1.11.2.linux-amd64.tar.gz
- PATH ortam değişkenlerine
/usr/local/go/bin
ekleyin (/etc/profile
veya$HOME/.profile
konumunda bulunur).
export PATH=$PATH:/usr/local/go/bin
- Değişikliklerin etkili olması için "source" dosyasını çalıştırın, örneğin:
source $HOME/.profile
- Geçici dosyaları silin:
rm go1.11.2.linux-amd64.tar.gz
PostgreSQL
- PostgreSQL (> v.10) ve psql'yi kurun:
sudo apt install -y postgresql
Centrifugo
- Centrifugo V.1.8.0'ı GitHub 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/
- 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.
- Blok zinciri platformu için bir dizin oluşturun:
sudo mkdir /opt/backenddir
- Kullanıcınızı dizinin sahibi yapın:
sudo chown user /opt/backenddir/
- 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
- 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'"
- 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
- 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
- GitHub'dan github-backend'i indirin:
- 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
- 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
- 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
- İ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
- 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-ibax
Bu dosyalarla hizmetler oluşturamadıysanız, farklı konsollardaki dizinlerden ikili dosyaları çalıştırabilirsiniz.
- Centrifugo çalıştırın:
/opt/backenddir/centrifugo/centrifugo \
-a 192.168.1.1 -p 8000 \
--config /opt/backenddir/centrifugo/config.json
- 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:
- Bağımlılıklar ve ortam ayarları
- Veritabanı oluştur
- Centrifugo
- go-ibax'ı yükleyin
- 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
- İ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/
- 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
- Veritabanını başlatın:
./go-ibax initDatabase --config\=node2/config.toml
- Çalıştır centrifugo:
/opt/backenddir/centrifugo/centrifugo \
-a 192.168.1.2 -p 8000 \
--config/opt/backenddir/centrifugo/config.json
- Ç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:
-
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
- İ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/
- 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
- 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ı
- 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
- Node.js'yi yükleyin:
sudo apt install -y nodejs
- Yarn Github 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
- Kur Yarn:
sudo dpkg -i yarn_1.7.0_all.deb && rm yarn_1.7.0_all.deb
Bir Weaver uygulaması oluşturun
- 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
- Install Weaver dependencies via Yarn:
cd/opt/backenddir/ibax-front/ \
&& yarn install
Blok zinciri ağı için yapılandırma dosyasını ekleyin
- 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
- 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
- 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.
- 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.
-
Weaver'ı çalıştırın;
-
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
-
Weaver'da Geliştirici> İçe Aktar'a gidin;
-
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
- 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;
- 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.
-
Ana Sayfa> Rol'e gidin ve Konsensüs'e tıklayın;
-
Oluşturanın hesabını role atamak için Ata'yı tıklayın.
Diğer düğümler için sahip hesabı oluşturun
-
Weaver'ı çalıştırın;
-
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. -
Hesaba giriş yaptıktan sonra, şu anda herhangi bir rol oluşturulmadığı için lütfen Rolsüz seçeneğini seçin.
-
Ana Sayfa> Kişisel Bilgiler'e gidin ve kişisel bilgilerin başlığına tıklayın;
-
Hesap ayrıntılarını ekleyin (kişisel bilgi başlığı, açıklama vb.).
Doğrulayıcı rolüyle düğüm sahibini atayın
- Yeni düğüm sahibi tarafından yapılan işlemler:
- Ana Sayfa> Doğrulayıcı'ya gidin;
- Talep Oluştur'a tıklayın ve doğrulayıcı adayın başvuru formunu doldurun;
- İstek gönder'e tıklayın.
- Oluşturucu tarafından yapılan işlemler:
- Konsensüs rolüyle oturum açın (Consensus);
- Ana Sayfa> Doğrulayıcı'ya gidin;
- Adayın isteğine göre oylamaya başlamak için "Oynat" simgesine tıklayın;
- Ana Sayfa> Oy'a gidin ve Oylama durumunu güncelle'yi tıklayın;
- 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.