Sıfır maliyet ile Bitcoin Lightning Network masternode kurulumu ve canlıya alınması


Bitcoin Blockchain mimarisine uzun yıllardır gelen pahalı ve yavaş transfer eleştirilerine karşın geliştirme ekipleri uzunca bir süredir bu durumu iyileştirmek adına Lightning Network teknolojisi üzerinde çalışıyordu. Zira bu duruma radikal bir adım gerekiyordu ve Segwit veya benzeri hardforklar bir çözüm sağlayamamıştı. Lightning network geliştiricilerinin Testnet adını verdikleri test platformunda gerçekleştirdikleri işlem demolarını takip edebiliyorduk, son dönemlerde de Mainnet adı verilen canlı sistemde masternode (cüzdan barındıran, transferlere aracılık eden sunucular) sunucuların ortaya çıktığına şahit olmaya başladık.

Günümüz Bitcoin teknolojisinde Proof of Work konsepti nedeniyle sadece madenciler (miner) transferlerden gelir elde ediyorlar, cüzdan barındıran masternode’ ların bu barındırmadan Proof of Stake çalışan kripto para sistemlerindeki gibi bir kazançları bulunmuyor yani masternode sunucusu işletmenin kendi cüzdan hesabınızı barındırmaktan başka bir faydası bulunmuyor kişilere. Fakat Lightning Network teknolojisinde işler biraz değişiyor zira Lightning Network üzerinden gerçekleştirilen transferlerde artık masternode sahipleri de bu transfer miktarlarından belli bir komisyon oranı alacaklar.

Lightning Network teknolojisi henüz çok yeni ve pratikte bitcoin mimarisi henüz bu network üzerine yerleşmiş durumda değil, ne zaman bu sistem üzerine tamamen geçileceği veya ne zaman yaygınlaşacağı da soru işareti fakat hem bu teknoloji henüz yeniyken ve ilerisi adına ciddi bir potansiyel taşırken hem de işletmek için gerekli olan bakiye çok düşükken elimizdeki ücretsiz sunucu barındırma alternatiflerini de değerlendirerek bir masternode sunucu açmamızda ve beklememizde fayda var. Zira ileride yıllar önce bitcoin madenciliğine başlamış olanları görüp hayıflandığımız gibi hayıflanmayalım. Ayrıca Proof of Stake çalışan diğer kripto paralardaki masternode yürütmek için gerekli bakiyelerin maliyetlerine ve onların masternode sahiplerinin kazancına bakınca ilerisi adına bu fırsatı kesinlikle değerlendirmeliyiz.




Zamanında bir Dash masternode u işletmek için gerekli bakiye çok düşük miktarları geçmiyordu şu an astronomik maliyetleri bulunuyor ve ciddi gelir elde ediyor Dash masternode sahipleri.

Bu tarihçeyi ve örnekleri de göze alarak ücretsiz sunucu yatırımı ve sadece çok ufak bir BTC yatırımı ile (lightning network cüzdanımızda kullanmak üzere)  masternode umuzu Lightning Network üzerinde faaliyete geçirip bekleyeceğiz. Bu yazımda çok az teknik bilgi ve Bitcoin dünyasına biraz aşinalık ile nasıl bir masternode kurup faaliyete alacağınızı anlatacağım.

Şunu da unutmayalım; bitcoin teknolojisi belki hiçbir zaman lightning network üzerine yerleşmeyebilir belki bu çok uzun zaman da alabilir veya yarın quantum proof of work teknolojisi gündeme gelir ve lightning network askıya alınır. Bunlar tabii çok ihtimalde olmasa da ufak da olsa olası durumlar. Ayrıca lightning network e tamamen geçiş sağlandığında diğer Proof of Stake çalışan kripto para masternode larındaki gibi en az 10.000, 100.000 bitcoin yüklenmesi gerekir gibi kısıtlar da gelebilir. Fakat biz yine de önümüzdeki mevcut durumu göz önüne alarak bu network te bir masternode oluşturacağız. Bu anlamda da henüz bir maliyete katlanmadan giriş yapmak ve süreci izleyip görmek bizim için daha mantıklı olacak.

Bu yazıda Lightning Network çalışma prensibi, algoritması ve sisteme getireceği faydalar olmayacak, içerikte;

1-     En uzun vadeli sistemimizi barındırabilecek sıfır maliyetli bulut barındırma sistemleri
2-     Sunucu kurulumu ve sunucuya nasıl bağlanacağımız
3-     Sunumuza Lightning Network cüzdan ve node uygulamalarının kurulumu
4-     Lightning Network masternode umuzun aktifleştirilmesi ve diğer node lar ile bağlantı sağlanması
5-     Lightning Network cüzdan hesabı yönetimi konuları ele alınaca
6-     Ve olası soru ve sorunlarımıza ilişkin bilgilendirmeler paylaşılacak.

Kurulum Öncesi 


Lightning Network node’ u Windows, Linux ve MacOS işletim sistemleri üzerine kurabiliriz. Bu yazıda Linux işletim sistemi üzerinden kurulumu anlatıyor olacağız. Windows ve MacOS üzerinde kurulum için internette faydalı makaleler bulabilirsiniz. Ben işletim sistemi olarak Ubuntu Server 17.10 sürümünü seçtim fakat diğer Linux dağıtımları üzerine de kurulum yapılabilir. Kurulum adımları diğer Linux dağıtımlarında da pek fark göstermeyecektir. GUI paketlerine ve desktop arayüzüne ihtiyacımız olmayacak bu yüzden bu paketler kurulu olmayacak, tüm süreçleri terminal konsol ekranı üzerinden halledeceğiz. Ayrıca bu şekilde sistem kaynaklarından da tasarruf etmiş olacağız.

Neden Linux tercih ettim diye sorarsanız; öncelikle ücretsiz lisans ve minimum kaynak üzerinde stabil çalışması, Lightning Network geliştiricilerinin de bu sistemleri Linux üzerinde geliştirmeleri nedeniyle Linux sürümün daha stabil çalışması ve sorun olduğunda birçok kaynaktan destek edinebiliyor olmanız yeterince geçerli bir sebep.

Daha stabil bir sürüm olması nedeniyle Ubuntu 16.04.3 LTS (Life Time Support) üzerine de kurulum yapılabilir fakat ben hem güncel olması hem de biraz da merak nedeniyle 17.10 sürümünü tercih ettim.

Yine bu yazıda bulut barındırma (cloud hosting) sanal sunucu çözümleri üzerinden gideceğiz zira yerel makinenize kurmanız demek hem bir cihazınızı bu işe dedike etmeniz hem de internet kotanızın bir kısmını buna ayırmanız ve sistemi sürekte ayakta tutmanız anlamına gerekiyor. Ayrıca SSD diskiniz yoksa hiç bu alternatifi düşünmeyiniz derim. 175 GB a yakın bir blockchain veritabanı indireceğiz hem de sürekli senkronlanması nedeniyle de kesintisiz ve hızlı bir internet erişimine ihtiyacımız olacak. Belli saatlerde sunucumu açarım gibi fikirleriniz olabilir fakat Lightning Network henüz çok stabil olmadığı ve bazı kesintilerde sistemi tekrar ayağa kaldırmak gerçekten sıkıntılı olduğu için yerel makinize kurulumu tavsiye etmiyorum.

Linux üzerinde 1 Vcpu, 3-4 gb Ram, 25 GB SSD (işletim sistemi) ve 200 GB SSD (Blockchain ve Lightning Node dosyaları için) bulunan, statik IP adresine sahip bir sistem işimizi görecektir. Duruma göre ileride disk alanını arttırma ihtiyacımız olabilir.

 1. Bulut Barındırma (Cloud Hosting) Sağlanması

Öncelikle node’ umuzun çalışacağı sunucuyu kurup konfigüre etmemiz gerekiyor. Bunun için internet üzerinden birçok alternatif mevcut; Google Cloud, DigitalOcean, Microsoft Azure Cloud Amazon Cloud..vs gibi.

Bizim önceliğimiz maliyetsiz şekilde bizi en uzun süre götürecek olan servis sağlayıcı üzerinden sunucumuzu yapılandırmak olacak.  Henüz Lightning Network’ ün gidişatı ve akıbeti ne olacak kestiremiyoruz, ayrıca node sahiplerine maliyetlerini çıkartıp kara geçirecek bir yatırım mıdır  önümüzdeki aylarda göreceğiz. Bu süreçte ücretsiz node’ umuzu oluşturup süreç netleştiğinde yatırım kararımızın gidişatına karar veriyor olacağız.

Aşağıda ücretsiz krediler sağlayan alternatifleri paylaştım, bunlardan hangisi üzerinden işlem yaparsanız yapın sizden doğrulama için kredi kartı bilgisi isteyecek ve 1$ lık bir çekim yapacaktır.

Önerim 30 TL limitli bir sanal kredi kartı oluşturup bu sanal kredi kartıyla üyeliğinizi gerçekleştirmek ve üyelik işlemleri sonrası sanal kredi kartınızı pasife almanızdır. Zira bu sistemlerde yapacağınız yanlış işlemler size ekstra maliyete neden olabilir (yanlışlıkla snapshot almak, ekstra statik ip almak, ekstra disk alanı almak, ücretsiz üyelik sonunda sizden onaysız otomatik uzatma parası çekilmesi..vs) bu tür işlemlerde direk sizden para çekmesin diye pasife almanızı öneririm, en kötü durumda sistem bakiyeniz olmadığı bilgisini size iletecektir.

Microsoft Azure : Ücretsiz 200$ kredi sağlıyor, Azure üzerinden Ubuntu sanal sunucu yapılandırabilirsiniz. Şimdiye kadar Azure üzerinden Ubuntu yapılandırmadığım için yorum yapamayacağım. Windows server sistemler üzerinde sıkıntı yaşamamıştım.


Amazon Cloud : Bir yıl ücretsiz baz özelliklerde ubuntu sanal sunucusu veriyor fakat sağladığı disk alanı yetersiz olduğu için Lightning Network kurulumu için ekstra disk alanı satın almanız gerekiyor.
Yönetim konsolu üzerinden SSH key dosyalarını indirip biçimlendirerek Putty üzerinden sunucunuza rahatça bağlanabilirsiniz.

Ücretsiz 1 yıllık deneme bağlantısı : https://aws.amazon.com/free/

Digital Ocean : Maliyetini karşılayarak devam ettirmek gibi bir tercih olursa DigitalOcean hem uygun maliyetleri hem de bulut barındırma işinde geçmişi, tecrübesi ve referansları, barındırdığı Linux sistemlere Putty, WinSCP ile rahatça bağlanabiliyor olmamız nedeniyle ön plana çıkıyor. Ayrıca internet üzerinde birçok özel indirim kuponu bulmak ta mümkün.

Bu kurulum adımlarında tek dezavantajı temel paketlerinde  Lightning Network kurulumu için yetersiz disk alanı olması, ekstra disk alanı eklemeniz gerekliliği ve bunu disk alanını temel diske değil de harici bir disk olarak sunuyor olması sebebiyle Linux üzerinde bu diski biçimlendirip, tanıtmanız ve node kurulumunda da parametreleri buna göre değiştirmeye dikkat etmeniz gerekmesi. Bunun için biraz Linux bilgisi de gerekiyor, bu yazıda basitçe bu disk biçimlendirme ve kurulum işlemlerini nasıl yapacağınıza değineceğim.

1 vcpu, 2 GB ram, 50 GB lık temel paketini alıp 200 GB ekstra disk alanı ekletmemiz gerekir.

60 gün boyunca kullanabileceğiniz 100$ kredi bağlantısı : https://try.digitalocean.com/performance/

Google Cloud : En önemli avantajı 300$ lık kredi sağlıyor olması.  Yazının başında paylaştığım temel özelliklerde bir makine oluşturup, statik IP adresi atayıp 8-9 ay ücretsiz kullanabilirsiniz, daha sonra ücretli üyelik devam etme kararını değerlendirirsiniz.

Google Cloud ekstra disk alanını direk temel sürücüye ekliyor, herhangi bir disk biçimlendirme, tanıtma işlemi yapmamız gerek kalmıyor, tek dezavantajı ise harici SSH bağlantılar için key dosyalarını oluşturup indirme ve Google cloud Shell i kullanma süreçlerinin uğraştırıcı olması. 

Google ın tarayıcı üzerinde çalışan SSH bağlantısı yeterli olduğu için bu gibi işlemlerin nasıl yapıldığına bu yazıda yer vermeyeceğim.

300$ ücretsiz kredi bağlantısı : https://cloud.google.com/free/

Yukarıdaki tüm bu alternatiflerin erişim bant genişliğinde (indirme\yükleme) kotaları olduğunu ve farklı paketlerde farklı maliyetlerde 1 TB, 2TB..vs gibi kotalar sunduklarını, yukarıda bahsettiğim temel paketlerin genelde 1 TB kotalı olduğunu ve ekstraların ayrıca ücretlendirileceğini belirtmek isterim.

Ayrıca tüm bu sanal sunucu barındırma hizmetlerinde kripto para madenciliğinin yasak olduğunu bilmeliyiz, şimdilik kripto para blockchain alt yapılarında masternode (düğüm) yapılandırılmasına ilişkin kısıtlamaları bulunmuyor, ileride özellikle ücretsiz veya indirimli paketlerde masternode kurulumları için de bir kısıtlamaya giderler mi bunu zaman içerisinde göreceğiz. Yüksek hacimli bir işlemci kullanımı olmadığı, blockchain veritabanı işlemleri dışında bir disk ve bant genişliği maliyeti de getirmediği için şimdilik pek olası da görünmüyor böyle bir kısıtlamaya gitmeleri.

Contabo : Almanya' nın en büyük hosting firmalarından bir tanesi. Herhangi bir kredi veya ücretsiz kullanım sunmuyor fakat 2 VCPU, 500 GB SSD diskli bir sunucuyu aylık 7 euro civarı bir maliyetle alabiliyorsunuz. Kullanmadım fakat güvenilir bir firmadır.

https://contabo.com/?show=vps 

2. Sunucu yapılandırma işlemleri
   
     2.1. DigitalOcean

Digital Ocean üzerinde her sanal makine Droplet olarak adlandırılıyor, Digital Ocean a giriş yaptıktan sonra Create > Droplet menüsünden oluşturma ekranına geçip ilgili Ubuntu x64 imajını seçtikten sonra 1 vcpu, 2 GB ram, 50 GB lık temel paketini seçmeli ve Add block storage, add volume sekmesinde 200 GB ekstra disk alanı eklemelisiniz.




Datacenter region’ ı Amerika üzerinde herhangi bir seçenek ile devam ettirmenizde fayda var, diğer seçenekleri ellemeden Hostname(sunucu adı) i girerek Create butonu ile sanal sunucunuzu oluşturabilirsiniz.

Sunucunuzu oluştuktan sonra https://www.putty.org/ adresinden sunucunuza terminal ekranından SSH bağlantı sağlayacak putty yazılımını indiriniz. E-posta adresinize sunucu bağlantı bilgileriniz gelecek (root hesap bilgileri). Aşağıdaki ekran görüntüsündeki gibi bilgilerinizi girip Saved Session sekmesine bir bağlantı profili adı verip save butonuna tıklayarak bağlantınızı ileride de kullanabilmek adına kaydedeceksiniz. Daha sonra profili seçip load a tıklayarak bağlantı bilgilerinizi tekrar kullanabilirsiniz.  Connection sekmesinde keep alive parametresi 180 vermemizin sebebi terminal kullanılmadığında bağlantıyı düşürmemesi 180 sn de bir sunucuya keep alive mesajı iletmesidir.




Connect butonu ile bağlantıyı sağlamış oluyorsunuz, açılacak ekranda kullanıcı adı root ve e-posta hesabınıza gelen şifre ile giriş yapacaksınız, ilk girişte şifreyi değiştirmeniz için yeni şifre soruyor olacak size.  Digital Ocean, Putty dışında tarayıcı üzerinde çalışan bir terminal uygulaması ile bağlantı seçeneğini de sağlıyor size.




Digital Ocean da eklediğimiz ekstra disk alanını sistemimizde harici bir disk görüneceği için bunu biçimlendirip sistemimize tanıtmamız ve Lightning node kurulumlarında da parametreleri bu diskteki dizin yolumuza göre oluşturmamız gerekiyor.

Disk Biçimlendirme ve Tanıtma İşlemleri

Öncelikle Linux un parted aracına ihtiyacımız olacak, aşağıdaki komutlarla yüklüyoruz ;

sudo apt-get update
sudo apt-get install parted

Aşağıdaki komut ile disk adını öğreniyoruz :

file /dev/disk/by-id/*

Disk adı, diskin bulunduğu konuma göre volume-nyc3-01 gibi bir isime sahip olacak, benim sistemimde bu şekilde. Şimdi bu diski formatlayıp biçimlendirmemiz ve tanıtmamız gerekecek, aşağıdaki komutlarla diski ekstra partition (bölüm) lara ayırmadan tek partition olacak şekilde; volume-nyc3-01-part01 adıyla oluşturacağız. Sırayla aşağıdaki komutları uygulayınız :

sudo parted /dev/disk/by-id/scsi-0DO_Volume_volume-nyc3-01 mklabel gpt

Alanın tamamını kapsayacak şekilde partition oluşturuyoruz :

sudo parted -a opt /dev/disk/by-id/scsi-0DO_Volume_volume-nyc3-01 mkpart primary 0% 100%

Ext4 biçimine göre formatlıyoruz :

sudo mkfs.ext4 /dev/disk/by-id/scsi-0DO_Volume_volume-nyc3-01-part1

Tanımlamalar doğru olmuş mu kontrol ediyoruz :

sudo lsblk –fs

İşletim sistemine tanımlıyoruz :

sudo mkdir /mnt/volume-nyc3-01-part1
sudo mount -o defaults,discard /dev/disk/by-id/scsi-0DO_Volume_volume-nyc3-01-part1 /mnt/volume-nyc3-01-part1

Tanımlamaları kontrol ediyoruz :

df -h -x tmpfs -x devtmpfs

Boot dosyasına tanımları giriyoruz :

sudo nano /etc/fstab

Aşağıdaki satırı gireceksiniz :

/dev/disk/by-id/scsi-0DO_Volume_volume-nyc3-01-part1 /mnt/volume-nyc3-01-part1 ext4 defaults,nofail,discard 0 2

CTRL ve X tuşlarına basarak çıkıyoruz, çıkarken kayıt uyarısı gelecek Y tuşu ile Enter’ layarak çıkıyoruz.

Ekran görüntüsündeki gibi olmalı :




Diskimizi tanımlamış olduk, artık aşağıdaki komut ile yeni diskimize girebiliriz.

cd /mnt/volume-nyc3-01-part1/

Lightning node’ un temel kurulumlarında da biz hep bu dizini baz alacağız, kurulum parametrelerimize bu dizini ekleyeceğiz.

2.2. Google Cloud

Google Cloud üzerinde her sanal makine ComputeEngine sekmesi altında VM Instance olarak adlandırılıyor. Compute Engine, VM Instance sekmesinde Create Instance bağlantısından sunucu oluşturma ekranına geçebilirsiniz.

Aşağıdaki gibi temel baz özelliklerde bir sunucu oluşturmak işimizi görecektir. Burada önemli husus boot disk sekmesinde change seçeneği ile açılacak ekranda ilgili ubuntu disk imajımızı seçmek ve diskimizin alanını 200 gb olarak değiştirmektir. Birincil sürüde bu disk alanını sağlayacağı için ayrıca harici disk tanıtmamıza, biçimlendirmemize gerek kalmıyor. Google temel seçenekte SSD seçeneği sunmuyor, açılan ekrandan SSD disk tipini seçebiliriz. Hız olarak ciddi katkısı olsa da bu sunucuda biz maliyeti yükseltmemek adına temel disk tipi ile devam edeceğiz, SSD yi seçmeyeceğiz. Firewall başlığı altında da Allow http\Https traffic seçeneklerini de seçelim. İleride kullanışlı olabilir, özellikle cüzdan yönetim konsolu gibi özellikler gelirse. Ayrıca sunucu oluşturma ekranındaki management, disks, network, ssh seçeneğine tıklayarak network sekmesi altında rezerve static ip seçeneği ile statik ip oluşturmamız önemli. Son olarak Create butonu ile sunucumuzu oluşturacağız. İlgili ekran görüntüleri aşağıda yer almaktadır.





Sunucumuzu oluşturduktan sonra VM Instances sekmesi altında sunucumuzu görebiliriz, sunucu adımız yer alan satırda Connect > SSH bağlantısı ile sunucu konsolumuza Google’ ın tarayıcı üzerinde çalışan terminali ile bağlanabiliriz.

Konsol açıldıktan sonra root yetkisini almak için aşağıdaki komutu kullanmalıyız :

sudo su veya sudo -s






 3. Lightning Network Kurulum İşlemleri

Öncelikle bu işlemlerin Bitcoin wallet veya herhangi bir blockchain wallet kurulum işlemlerinden çok farkı olmadığını söylemekte fayda var sadece lightning node  a ait düğüm işlemleri durumu farklılaştırıyor.

Kurulum işlemlerini hızlandırmak adına dougvk’ nın Github repository (depo) de yer alan lightning repo’sunu kullanacağız, işlemlerimizi docker platformu üzerinde container olarak çalıştırarak bir hayli pratik bir şekilde halletmiş olacağız.

Adım 1. Bunun için öncelikle güncelleştirmeleri yapıp docker kurulumunu yapalım.

Not : Aşağıdaki tüm komutlar için sudo su veya sudo -s komutuyla root’ a inmeniz yani yetki alarak bu işlemleri gerçekleştirmeniz gerektiğini unutmayınız.

sudo -s
sudo apt-get update
wget -qO- https://get.docker.com/ | sh

Adım 2. Dougvk repo sunu indirip bitcoin wallet core u container da çalıştıralım, blockchain veritabanını indirelim.

git clone https://github.com/dougvk/lightning-node.git
cd lightning-node
docker build . -t dougvk/bitcoind
mkdir -p /scratch/bitcoin/mainnet/bitcoind
docker run --name bitcoind_mainnet -d -v /scratch/bitcoin/mainnet/bitcoind:/data -p 8333:8333 -p 9735:9735 dougvk/bitcoind:latest

Not: Digital Ocean da ekstra disk eklettiğinizde, yeni diskte kurulum için aşağıdaki gibi yapmalısınız bu işlemleri, bu şekilde harici diske dosyalar indirilip yapılandırılıyor olacak.

git clone https://github.com/dougvk/lightning-node.git
cd lightning-node
mkdir -p /mnt/volume-nyc3-01-part1/scratch/bitcoin/mainnet/bitcoind
docker run --name bitcoind_mainnet -d -v /mnt/volume-nyc3-01-part1/scratch/bitcoin/mainnet/bitcoind:/data -p 8333:8333 -p 9735:9735 dougvk/bitcoind:latest

Son komutu çalıştırdıktan sonra 6-7 gün beklemeniz gerekebilir, 175 GB a yakın bir dosya indirimi olacak, SSD li Digital Ocean node umda 4 gün, SSD siz Google Cloud sunucumda bir tanesinde 3 gün diğerinde 7 güne yakın sürdü bu indirme işlemim. Diğer adımlara geçmeden aşağıdaki komutlarla kontrol edebilirsiniz zaman zaman sunucunuza bağlanarak :

Yardımcı Komutlar Diskleri boyutlarıyla birlikte görüntülemek için :

df -h



Lightning node scratch klasör boyutuna bakarak kontrol etmek için :

du -h /scratch

Digital Ocean da ekstra diskteki kurulumu kontrol için :

du -h /mnt/volume-nyc3-01-part1/scratch



Adım 3. İndirme işlemlerini başlattıktan sonra aşağıdaki konfigürasyonları da gerçekleştirebiliriz :

nano /usr/local/bin/bitcoin-cli
veya
cat /usr/local/bin/bitcoin-cli

Bu komut bitcoin-cli cüzdan konfigürasyon dosyasını açacak, ilgili konfigürasyon dosyasına aşağıdaki 2 satırı aynen gireceğiz (CTRL-V ile yapıştırabilirsiniz, Putty ile bağlandıysanız Mouse u sağ click yapmanız yeterli). Bu uyarlama ile aslında bitcoin-cli komutunu bitcoind_mainnet containerımızdaki uygulamayla eşleştirmiş oluyoruz yani kısayol oluşturuyoruz.

#!/usr/bin/env bash
docker run --rm --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/data dougvk/bitcoind:latest bitcoin-cli "$@"

Digital Ocean da ekstra diskteki kurulum için ;

#!/usr/bin/env bash
docker run --rm --network container:bitcoind_mainnet -v /mnt/volume-nyc3-01-part1/scratch/bitcoin/mainnet/bitcoind:/data dougvk/bitcoind:latest bitcoin-cli "$@"

CTRL+X tuş kombinasyonu ile çıkıyoruz, kayıt için Y ve Enter tuşlarına basacaksınız sırayla.

Daha sonra oluşturduğumuz kısa yolu yetkinlendireceğiz :

chmod +x /usr/local/bin/bitcoin-cli

Yardımcı Komutlar Blockchain veritabanı indirilen en son 10 bloğu görüntülemek için :

docker logs bitcoind_mainnet --tail "10"

Tarih (date) değerlerinden en son hangi tarihteki blokları indirdiğini görebilirsiniz. İndirme işlemi blockchain in ilk yıllarından başlayarak günümüzdeki bloklara kadar devam edecek.

Yardımcı Komutlar bitcoin-cli cüzdan servislerinin durumunu, blockchain veritabanına ilişkin bazı güncel kritik bilgileri görüntülemek için aşağıdaki komutu kullanıyoruz.

bitcoin-cli getinfo




Version, uygulama versiyonunuzu gösterir, Blocks değeri Blockchain veritabanınızdaki son bloğun numarasıdır, bunu veritabanının tamamını indirdiniz mi kontrolünde kullanabilirsiniz. Testnet=false olması sizin canlı lightning-network sistemi üzerinde olduğunuzu gösterir, test sisteminin adı testnet’ tir, Fee kısımlarına şimdilik takılmayın komisyon oranlarımızı sonlara doğru belirleyeceğiz.

Eğer disk boyutları 172 GB a geldiyse veya aştıysa yukarıdaki komutla gelen çıktıdaki son bloğu “height” değerini dikkate alarak aşağıdaki bağlantı ile kontrol edip karşılaştırmanızda fayda var, bu şekilde blockchain veritabanındaki en son bloğu da indirmiş olduğumuzu teyitlemiş olacağız. Yine date değeri de en son hangi tarihte yapılmış işlemin bloğunu indirmişiz onu gösterir.

Blockchain bloklarını görüntülemek için : https://blockchain.info/blocks

Örneğin :



Adım 4. Blokchain veritabanı indirme işlemleri tamamlandıysa  aşağıdaki adımlara geçebiliriz aksi halde tamamlanmadan kesinlikle bu adımlara başlamayınız.

Lightnin-cli servisi kurulum ve konfigürasyonlarını yapacağız.

mkdir -p /scratch/bitcoin/mainnet/clightning
docker run --rm --name lightning --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/root/.bitcoin -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightningd cdecker/lightningd:latest --network=bitcoin --rgb=0066cc --alias=VERMEKİSTEDİĞİNİZNODEADINIZ --ipaddr=SUNUCUNUZDIŞIPADRESİ --log-level=debug

** Burada dikkat edilmesi gereken husus sunucu isminin Türkçe karakterler içermemesi ve ip adresi olarak Dış IP (External IP) adresinizi vermeniz gerekliliğidir, bunu ilgili barındırma sisteminizin panelinden öğrenebilirsiniz.

Digital Ocean da ekstra diskteki kurulum için ;

mkdir -p /mnt/volume-nyc3-01-part1/scratch/bitcoin/mainnet/clightning
docker run --rm --name lightning --network container:bitcoind_mainnet -v /mnt/volume-nyc3-01-part1/scratch/bitcoin/mainnet/bitcoind:/root/.bitcoin -v /mnt/volume-nyc3-01-part1/scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightningd cdecker/lightningd:latest --network=bitcoin --rgb=0066cc --alias=VERMEKİSTEDİĞİNİZNODEADINIZ --ipaddr=SUNUCUNUZDIŞIPADRESİ --log-level=debug

Son komutla birlikte lightning-cli servisi başlamış ve canlı trace takip çıktıları ekrana gelmeye başlayacak.  Bu ekranı kurulumlar bitene kadar kapatmamanızı ve takip etmenizi tavsiye ederim, node’unuzun hareketlerini, arka planda neler döndüğünü izleyebiliyor olacaksınız.

Bu ekranı kapatmadan yeni bir ekran yani yeni bir SSH\Konsol bağlantısı açarak Adım 5 e devam edelim.

Adım 5. Konfigürasyon dosyamıza kısa yol oluşturacağız (Adım 3’ te bitcoin-cli de yaptığımız gibi)

nano /usr/local/bin/lightning-cli  

Bu komut lightning-cli konfigürasyon dosyasını açacak. Aşağıdaki satırları gireceğiz.

#!/usr/bin/env bash
docker run --rm -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightning-cli cdecker/lightningd:latest "$@"

Digital Ocean da ekstra diskteki kurulum için ;

#!/usr/bin/env bash
docker run --rm -v /mnt/volume-nyc3-01-part1/scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightning-cli cdecker/lightningd:latest "$@"

CTRL+X tuş kombinasyonu ile çıkıyoruz, kayıt için Y ve Enter tuşlarına basacaksınız sırayla.

Daha sonra oluşturduğumuz kısa yolu yetkilendireceğiz :

chmod +x /usr/local/bin/lightning-cli

Yardımcı Komutlar lightning-cli getinfo durumuyla servis durumunu kontrol edebilirsiniz.



Eğer servis durumuyla ilgili anormallik varsa lightning-cli stop ve lightning-cli start komutlarını girip Adım 4’ teki docker run komut satırı ile servisi tekrar başlatmayı deneyebilirsiniz.

Adım 6.  Gerek bitcoin cüzdan gerek lightning-node servislerini kurup yapılandırmış olduk. Şimdi bir lightning network cüzdan hesabı oluşturacağız.  Aşağıdaki komutla cüzdan hesabınızı oluşturabilirsiniz, size dönecek ekran çıktısında cüzdan adresiniz yazacak, bir kenara not edin ve kaybetmeyin.

lightning-cli newaddr

Adım 7. Cüzdan hesabımızı oluşturduk, şimdi hesabımızı ve ligtning-network masternode’ umuzu aktifleştirmek için belli bir BTC oranını bu cüzdana yatırmamız gerekecek. 0,003 BTC yatırmanız yeterlidir (0,001 lik transfer kesintisi olacağı için 0,004 BTC maliyetiniz olacak). Henüz 0,005 BTC den yüksek bir yatırım yapılmasını tavsiye etmem hem uygulama ve sistem çok yeni, sıkıntılar doğabilir hem de teknolojinin geleceği hakkında net bilgilere sahip değiliz. O yüzden ileride hiçbir şey yolunda gitmese bile canımızı sıkmayacak bir tutar yatırmalıyız. Adım 8 de anlatacağımız sizin kuracağınız bağlantı sayılarına göre bu rakamı arttırabilirsiniz veya ileride tekrar ekstra transfer gerçekleştirebilirsiniz ihtiyacınıza göre. Bunu da BTC hesabınız olan bir cüzdandan veya kullandığınız bir borsa (BTCTurk, Paribu, Binance..vs gibi) varsa oradaki hesabınızdan yukarıda 6. Adımda aldığınız lightning-network cüzdan hesabınıza BTC transfer işlemiyle gerçekleştirebilirsiniz.

Transfer işlemi en fazla 1 saate kadar tamamlanmış olacaktır. https://blockchain.info/ adresinden cüzdan hesap numaranız veya transfer işlem kodunu girerek durumunu takip edebilirsiniz.

Adım 8.  Cüzdanınıza BTC bakiye durumunuzu aşağıdaki komutla kontrol ediniz :

 lightning-cli listfunds

BTC bakiyeniz aktarılmış görünüyorsa şimdi diğer node larla yani peer’ larla bağlantı kuracağız. Birden fazla node ile bağlantı kurabilirsiniz fakat diğer node lara açtığınız her kanalın size maliyeti olacağını unutmayınız, node bağlantınız koparsa sistem bu maliyeti size geri iade ediyor.

Bu adımda benim node uma bağlanmanızı rica edeceğim, örneği de kendi node adresim üzerinden vereceğim.

Benim node’ umun adı BitFast, bilgileri aşağıdaki gibidir.



PubKey 035c5140cc8efafa4fb97b0759de6b24249d716f565eb34dff6eb3ae14b4c5f961
Alias      BitFast
URI      035c5140cc8efafa4fb97b0759de6b24249d716f565eb34dff6eb3ae14b4c5f961@35.231.20.210:9735              

Aşağıdaki komut ile bağlantıyı sağlıyoruz :

lightning-cli connect 035c5140cc8efafa4fb97b0759de6b24249d716f565eb34dff6eb3ae14b4c5f961 35.231.20.210 9735

Aşağıdaki komut ile açtığımız kanalı fonluyoruz, kanalların aktifleşip ayakta tutması için belli bir miktar BTC aktarmamız gerekiyor, aksi halde kanal daha sonra kapanıyor. Yaptığım bağlantılarda 20.000 satoshi (0.0002 BTC ) yeterli oldu, sorun yaşamadı.

lightning-cli fundchannel 035c5140cc8efafa4fb97b0759de6b24249d716f565eb34dff6eb3ae14b4c5f961 20000

Kanal bağlantı durumunu görüntülüyoruz.

lightning-cli listpeers

Ekranda ilk etapta kanal durumunu (state) CHANNELD_AWAITING_LOCKIN olarak görünecektir yarım saat – 1 saat aralığında CHANNELD_NORMAL olarak görünecektir. Ara ara yukarıdaki listpeers komutu ile durumunu kontrol edebilirsiniz. CHANNELD_NORMAL olması bağlantının başarıyla sağlandığı anlamına gelir.

Bu adımdan sonra https://lnmainnet.gaben.win/ adresine giderek masternode adınızı arattığınızda sitede kendi node unuzu görüyor olacaksınız.

Adım 9. Sisteminizi kurup aktifleştirdiğinize göre artık masternode’ unuzda üzerinizden yapılacak transferlerde ne kadar komisyon alacağınızı belirleyebilirsiniz. Aşağıdaki komut ile komisyon oranlarınızı belirleyeceksiniz. Yüksek rakamlar girmenizi tavsiye etmem. 20.000 satoshi bence ilk etapta makul bir rakam.

Not: Size diğer masternode ların yapacağı bağlantılar için sizden ekstra bir bakiye talep edilmeyecektir, sistemde bağlantıyı kuran taraf her zaman kanalı fonluyor.

bitcoin-cli settxfee 0.002
lightning-cli dev-setfees 20000 10000

Son komut acil (immediate), normal ve yavaş (slow) aktarım hızları için detay komisyon oranlarını belirler.

Bitcoin-cli getinfo komutunu tekrar girerseniz Fee değerlerinin güncellenmiş olduğunu göreceksiniz.

Son Sözler

Başarıyla sunucumuzu ve lightning network masternode kurulum, konfigürasyonlarımızı gerçekleştirmiş ve canlı networkte node umuzu aktifleştirmiş olduk. Bundan sonra lightning network sürecinin nasıl işleyeceğini, yaygınlaşıp yaygınlaşmayacağını ve bize ne gibi kar ve katkılar sağlayacağını görüyor olacağız. Ara ara sunucunuza girip yukarıdaki adımlarda bahsettiğimiz getinfo ve listpeers komutlarıyla durumunu kontrol etmenizi tavsiye ederim.

Cüzdanınızı sunucu üzerinden yöneteceğiniz için sunucunuzun snapshot veya diskbackup ını almanızı, sunucu üzerindeki cüzdan dosyalarınızı yedeklemenizde fayda var.

Çözemediğiniz veya yanıtını bulamadığınız sorunlar olursa; Github üyeliği açarak https://github.com/ElementsProject/lightning ve https://github.com/dougvk/lightning-node sayfalarında çözüm aramanızda, sorunlarınızı ISSUES sekmesi altında paylaşabilirsiniz. 

 Yine bu sayfalardan uygulama güncellemelerini de takip edebilirsiniz.

Aşağıda yaşayabileceğiniz bazı olası sorunlar ve çözümler, aklınıza gelebilecek sorular ve yanıtları paylaştım, umarım sizlerler için faydalı bir makale olmuştur. Sorularınız olursa paylaşmakta çekinmeyin.

Soru ve Sorunlar

 1-     Lightning-network cüzdan hesabımı nasıl yönetebilirim; herhangi bir harici blockchain cüzdan uygulamasıyla yönetebilir miyim ? Komisyonlardan BTC kazanırsam ne yapmalıyım ?

Şimdilik oluşturduğumuz lightning-network cüzdan hesabının private key’ ini nasıl öğreniriz, wallet.dat dosyası üzerinden bunu export edebilir miyiz gibi soruların bir cevabı yok. Fakat şunu bilmeliyiz, şimdilik cüzdan bakiyemizi sunucumuza ara ara bağlanarak lightning-cli listfunds komutu takip etmeliyiz, komisyonlardan bir bakiye biriktiyse bunu kullandığımız blockchain cüzdanımıza veya borsa BTC cüzdan hesabımıza aşağıdaki komut ile transfer edebiliriz :
lightning-cli withdraw GönderilecekCüzdanHesabı Miktar(Satoshi cinsinden)
 2- Sunucum veya lightning-network uygulamamda telafi edemeyeceğim bir sorun oluştu, cüzdan hesabıma nasıl erişirim ?
      İlk soruda yanıtladığım gibi herhangi bir private key imiz olmadığı için tek yöntem yine bu sistemi bir şekilde ayağa kaldırıp sistem üzerinden erişmek. Bu yüzden yukarıdaki kurulum sonrası sistemin (sanal sunucunun) veya en basitinden cüzdan dosyalarını içeren klasörün yedeğinin alınmasını tavsiye ediyorum. Snapshot veya disk backup alarak bunu gerçekleştirebilirsiniz, cüzdan dosyalarını WinSCP benzeri bir uygulama ile sunucunuza bağlanıp yerel makinenize zaman zaman yedekleyebilirsiniz. Snapshot ve disk backup işlemlerinin sunucu barındırma sistemlerinde bir maliyeti olduğunu unutmayınız.
 3- Bitcoin blockchain veritabanım bozuldu ne yapmalıyım ?

Tekrar indirmek bir çözüm fakat 172 gb lık bir indirme işlemi ciddi bir yük zaman açısından, öncelikle bitcoin uygulamasının sunduğu reindex fonksiyonunu denemenizde fayda var. Hem kurtarma ihtimali çok yüksek hem de hızlı bir çözüm.
   4-   Bitcoin-cli getinfo komutu veya lightning-cli getinfo komutu hata veriyor ne yapmalıyım ?

lightning-cli stop ve lightning-cli start komutlarını girip Adım 4’ teki docker run komut satırı ile servisi tekrar başlatmayı denemenizde fayda var. Aksi halde docker container servislerini kontrol etmeli ve container id üzerinden container ı yeniden başlatmayı denemelisiniz.
5-     “Error response from daemon: cannot join network of a non running container” hatasının çözümü nedir ?

Bu hatayı olası bir sunucu yeniden başlatılması durumunda alabilirsiniz;  Dördüncü sorunun yanıtındaki adımları deneyiniz, sıkıntı devam ediyorsa sudo docker start bitcoind_mainnet komutunu deneyiniz.
6-   Kanal bağlantılarım lightning-cli listpeers komutunda ONCHAIND_THEIR_UNILATERAL State durumunda ne yapmalıyım ?

Sunucunuzun ip adresini değiştirdiğinizde veya bir şekilde ip değiştiğinde daha önce kurulmuş olan bağlantıların durumunda bu hatayı alabilirsiniz, maalesef bir çözümü bulunmuyor. Dördüncü sorunun yanıtındaki adımları tekrar edip listpeers komutuyla ara ara gözlemlemeyi deneyebilirsiniz, geliştiriciler 140 blok kadarlık bir ilerleme olduğunda bu tür durumların otomatik düzelebileceğini söylüyorlar fakat net bir yanıt yok. Kendi kendine düzelmesi de bir ihtimal fakat farklı node lar ile yeni bağlantılar oluşturmanızda fayda var bu durumda.  Bu bağlantı için oluşturduğunuz bakiye maalesef düzelmedikçe iade edilmeyecektir. Sunucu IP niz değiştiyse aşağıdaki 9. Sorunun yanıtındaki adımları uygulamayı unutmayınız.
 7-    Mevcut bir kanal bağlantısını nasıl kaldırabilirim ?

lightning-cli close kaldırmakistediğiniznodeadresi komutuyla kaldırıp, daha önce bu bağlantı için harcadığınız bakiyeyi geri iade alabilirsiniz.

8-    Sunucumu kapatmam veya yeniden başlatmam gerekiyor ne yapmalıyım ?

Öncelikle lightning-cli stop ve bitcoin-cli stop komutlarını vererek servisleri durdurmalı daha sonra kapatma veya yeniden başlatma işlemlerini yapmalısınız.
 Yeniden başlattığınızda bitcoin-cli getinfo ve lightning-cli getinfo komutlarıyla durumu kontrol edip anormallik varsa dördüncü sorunun yanıtındaki adımları tekrar ediniz.

9- Master node Adı veya IP adresimi değiştirebilir miyim ?

Dördüncü adımdaki docker run komutu ile güncel isim veya ip adres bilgilerini girerek değiştirebilirsiniz. Değişiklik öncesi aktif bağlantılarınız varsa 6. Sorunun yanıtını okuyunuz.

10-  Sunucu adında Unicode veya emoji karakterler kullanabilir miyim ?

Kullanabilirsiniz gibi görünüyor ilgili Unicode değerleri vererek fakat tavsiye etmem.
11- Blockchain veritabanı senkronlama işlemi tamamlanamadı, ne yapmalıyım ?

Dördüncü sorunun yanıtındaki adımları tekrar ediniz.
12- lightning-cli kurulum adımlarında "Unable to find image 'cdecker/lightningd:master' locally docker: Error response from daemon: manifest for cdecker/lightningd:master not found" hatası alıyorum.


docker run --rm --name lightning ile başlayan komutlarda cdecker/lightningd:master olan kısmı cdecker/lightningd:latest olarak güncelleyip deneyiniz.
13- Node um düzgün çalışıyordu fakat kimse bana bağlantı kuramamaya başladı ve lightning-cli komutlarında  “lightning-cli: Connecting to ‘lightning-rpc’: Connection refused” hatası almaya  başladım.


12. sorunun cevabındaki adımı tekrarlayın. örneğin : docker run --rm --name lightning --network container:bitcoind_mainnet -v /scratch/bitcoin/mainnet/bitcoind:/root/.bitcoin -v /scratch/bitcoin/mainnet/clightning:/root/.lightning --entrypoint /usr/bin/lightningd cdecker/lightningd:latest --network=bitcoin --rgb=0066cc --alias=Bitfast --ipaddr=35.231.20.210 --log-level=debug

Referanslar ve konuya ilişkin faydalı yazılar



4 yorum:

  1. Ellerine sağlık masternode için belirli bir limit sayıda satoshi miktarı var mı? Benim anladığım şuan yok.

    YanıtlaSil
    Yanıtlar
    1. Teşekkürler, doğrudur bir yerlerde deklare edilmiş sabit bir minimum miktar göremedim ben de.

      Sil
  2. merhabalar.
    elinize sağlık sade güzel anlatım için tebrikler.
    benim hiçbir yerde cevabını bulamadığım bir sorum var;
    google cloud, amazon aws vs bi yerden ücretsiz hosting alıp node kurduk ve faaliyete geçirdik diyelim bir süre sonra bu ücretsiz host sona erecek. ben hali hazırda kurulu node yapım bozulmadan id falan değişmeden başka bir hostinge nasıl taşıyacağım?

    YanıtlaSil
  3. Bilgiler için teşekkürler. Bitcoin Nedir

    YanıtlaSil

© 2011-2015 | EmreCiftci.net. Blogger tarafından desteklenmektedir.