Professional Documents
Culture Documents
Blockchain Olusturma
Blockchain Olusturma
ANA SAYFA LİSTELER ALTCOİNLER BLOCKCHAİN BİTCOİN ANALİZ YATIRIM ÖNE ÇIKAN KRİPTO PARA ETHEREUM İLETİŞİM
ANALİZLER ⌂ Anasayfa » Blockchain » Adım Adım Kendi Blokchain’ini Oluşturma Arama için entera basın
TradingView Kriptopara
Sinyal Bulucu Kullanımı
28 Ocak 2018
RaiBlocks Hakkında
Bilmeniz Gereken 7 Şey
28 Ocak 2018
24 Ocak 2018 Kripto Para Blockchain ya da Türkçe ifadeyle Blok Zincir’in ne olduğunu öğrenmek için öncelikle aşağıdaki yazıya bir göz
Piyasası Analizi: BTC, ETH, atın;
BCH, XRP, IOTA, LTC,
NEM, ADA Blok Zincir nedir?
24 Ocak 2018
Yukarıdaki yazıyı okuduysanız devam edebiliriz. Bu yazıda blockchain’in ne olduğunu çok farklı bir yöntemle
IOStoken Nedir ve Nasıl öğreneceğiz: kendi blockchain’imizi oluşturacağız! Blockchain oluşturma tabii çok kolay bir işlem
Satın Alınır? – Tam Rehber değildir. Bunun için en azından bir takım temel teknik bilgi ve altyapıya sahip olmanız gerekiyor.
24 Ocak 2018
Şu an burada bu yazıyı okuyorsun, çünkü benim gibi, kripto paraların yükselişi konusunda kafayı yemişsin.
PIVX Nedir ve Nasıl Satın Ve blockchain’in nasıl çalıştığını ve arkasındaki temel teknolojiyi bilmeyi arzuluyorsun. Bunun
Alınır – Adım Adım Tam ötesinde Blockchain oluşturma yöntemlerini merak ediyorsun.
Rehber
23 Ocak 2018 Ancak blockchain’i anlamak kolay değildir – ya da en azından benim için değildi. Bol bol videolar izledim,
dersler aldım ve genelde hayal kırıklığı yaşadım.
Türk Kripto Para
Borsalarının İşlem Hacimleri Yaparak öğrenmeyi severim. Bazıları böyledir. Günlerce okur, çalışır fakat hiç birşey anlamaz. Bir kez yapar
22 Ocak 2018 ve her şeyi kavrar. Ben öyleyim. Konuyu, kod düzeyinde ele almam lazım. Aynı şeyi siz de yaparsanız, bu
rehberin sonunda, blokchain’in nasıl çalıştığına dair sağlam bir kavrayışa sahip olacaksınız artı işleyen bir
Blockchain’iniz olacak. Blockchain oluşturma noktasında uzmanlık kazanmış olacaksınız.
SON YORUMLAR
İçindekiler [gizle]
Evrim
Dönmezgel:
Video yapma Başlamadan önce… BİTCOİN HABERLERİNİ KAÇIRMA
noktasında çok
Bir blockchain ya da blok zincirin, bloklar olarak adlandırılan değişmez, sıralı bir kayıt zinciri olduğunu Bitcoin ile ilgili en son haberleri a
yorum alıyorum lakin
unutmayın. İşlem (transaction), dosya veya istediğiniz herhangi bir veriyi içerebilirler. Ancak önemli blogumuza e-mail ile üye olun.
yazmak sanki...
olan, hash yöntemleriyle birbirine zincirlenmiş olmalarıdır.
Evrim E-posta Adresi
Hash’in ne olduğundan emin değilseniz, buradaki kısa açıklamayı okuyabilirsiniz.
Dönmezgel:
Merhaba, Bu rehber kimleri hedefliyor? HTTP üzerinden Blockchain ile konuşacağımız için temel Python bilgisine Abone ol
Stellar
sahip olmanız gerek. Ayrıca HTTP isteklerinin (request) işleyişi hakkında biraz bilgi sahibi olmanız gerekir.
madenciliğe dayalı bir para
birimine sahip... Neye ihtiyacınız olacak? Sisteminizde Python 3.6+ (pip ile birlikte) kurulu olduğundan emin olun. Ayrıca,
Flask’ı ve Requests kitaplığını yüklemelisiniz: İLK TÜRKÇE BİTCOİN KİTABI (ÜC
Ayrıca Postman veya cURL gibi bir HTTP istemcisine de ihtiyacınız olacak.
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 1/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 2/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
BORSA """
Blockchain’in Olmazsa Olmazı: B
self.current_transactions.append({
Toleransı
'sender': sender,
Yeni Türk Kripto Para 2 Ocak 2018
Borsası OVIS Yayında! - 'recipient': recipient,
Çalışır? Blockchain’imiz oluşturulduğunda onu bir genesis bloğu ile tohumlamak gerekir. Genesis bloğunun ne
5 Ocak 2018 olduğunu öğrenmek için bu yazımızı okuyun. Genesis bloğu başlangıç bloğudur ve hiçbir öncülü olmayan bir MADENCİLİK
Kucoin Shares ile Düzenli
bloktur. Madencilik sonucu üretilen genesis bloğumuza (veya iş ispatına) bir “ kanıt
” eklememiz gerekecek.
Madencilik hakkında ilerleyen kısımlarda konuşacağız.
Pasif Gelir Kazanma Bitcoin Madencileri 159 Ülkeden
2 Ocak 2018 Constructor’ımızda genesis bloğunun oluşturulmasına ilaveten new_block (), new_transaction () ve hash () Üretiyor!
23 Kasım 2017
yöntemlerini de inceleyelim:
Bitcoin Çılgınlığının Kalbi:
Coinbase Yeni Başlayanlar için Ethereum M
import hashlib
7 Aralık 2017 1 Eylül 2017
import json
ABD Mahkemesi 15 Bin from time import time Madencilik Donanım Karşılaştırm
Bitcoin Kullanıcısının class Blockchain(object): 19 Ağustos 2017
Bilgilerini İstiyor def __init__(self):
30 Kasım 2017 self.current_transactions = [] Bitcoin Madenciliği
19 Ağustos 2017
self.chain = []
Merkezi Olmayan Borsa # Genesis blokunu oluşturuyoruz
Nedir Bitcoin Madenciliği Kârlılığını Hes
self.new_block(previous_hash=1, proof=100)
6 Eylül 2017 15 Ağustos 2017
def new_block(self, proof, previous_hash=None):
Yukarıdaki kod gayet açıklayıcı. Temsili blok zincirimizi neredeyse bitirdik. Ancak bu noktada, yeni blokların
nasıl oluşturulduğunu ya da çıkarıldığını merak ediyor olmalısınız.
İş İspatını Anlamak
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 3/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
İş ispatı algoritması (PoW – Proof of Work) yeni blokların blok zincirde nasıl oluşturulduğu veya çıkarıldığıyla
(madencilik) ilgilidir. Blockchain oluşturma sürecinin önemli adımlarından biridir. PoW’un amacı,
matematiksel bir problemi çözen bir numarayı bulmaktır. Numaranın bulunması zor olmalı (Bakınız:
Zorluk), ancak hesaplama açısından -ağdaki herkes tarafından- doğrulanması kolay olmalıdır. İş ispatının
arkasında yatan temel fikir budur.
İş ispatını (PoW) anlamaya yardımcı olması için çok basit bir örneğe bakacağız.
X tamsayısının hash değerinin başka bir y ile çarpılmasının 0 ile bitmesi gerektiğine karar verelim.
Yani hash (x * y) = ac23dc … 0 gibi bir şey elde edeceğiz.
Bitcoin’de, İş İspatı algoritmasına Hashcash denir. Ve yukarıdaki temel örneğimizden çok farklı değildir.
Madencilerin yeni bir blok oluşturmak için çözmeye çalıştıkları algoritma budur. Genel olarak, zorluk bir
dizedeki (string) aranan karakterlerin sayısına göre belirlenir. Madenciler daha sonra çözüm için bir koin ile
ödüllendirilirler.
Bir önceki bloğun çözümü ile kıyaslandığında, 4 tane 0 ile başlayan bir hash üretilen bir p sayısı bulalım.
import hashlib
import json
from time import time
from uuid import uuid4
class Blockchain(object):
...
def proof_of_work(self, last_proof):
"""
Basit bir İş İspatı algoritması:
:param last_proof:
:return:
"""
proof = 0
while self.valid_proof(last_proof, proof) is False:
proof += 1
return proof
@staticmethod
def valid_proof(last_proof, proof):
"""
İspatı doğrula: hash(last_proof, proof) 4 adet 0 ile başlıyor mu?
:param last_proof: Önceki İspat
:param proof: Mevcut İspat
:return: True if correct, False if not.
"""
guess = f'{last_proof}{proof}'.encode()
guess_hash = hashlib.sha256(guess).hexdigest()
return guess_hash[:4] == "0000"
Algoritmanın zorluğunu ayarlamak için önde gelen sıfırların sayısını değiştirebiliriz. Ama 4 yeterli. Tek bir
sıfırın eklenmesinin, bir çözüm bulmak için gereken zamana büyük bir fark yarattığını öğreneceksiniz.
Sınıfımız (class) neredeyse tamamlandı ve onunla HTTP istekleri kullanarak etkileşime geçmeye hazırız.
Üç metot oluşturacağız:
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 4/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
Flask Kurulumu
“Sunucumuz” blockchain ağımızda tek bir düğüm (node) oluşturacaktır. Kodu oluşturalım:
import hashlib
import json
from textwrap import dedent
from time import time
from uuid import uuid4
from flask import Flask
class Blockchain(object):
...
# Düğümümüzü (Node) somutlaştırıyoruz..
app = Flask(__name__)
# Bu düğüm için genel olarak benzersiz bir adres oluşturuyoruz.
node_identifier = str(uuid4()).replace('-', '')
# Blok zincirimizi somutlaştırıyoruz..
blockchain = Blockchain()
@app.route('/mine', methods=['GET'])
def mine():
return "Yeni blok çıkaracağız"
@app.route('/transactions/new', methods=['POST'])
def new_transaction():
return "Yeni işlem ekleyeceğiz"
@app.route('/chain', methods=['GET'])
def full_chain():
response = {
'chain': blockchain.chain,
'length': len(blockchain.chain),
}
return jsonify(response), 200
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
Düğümümüzü (node) başlattık. Flask hakkında daha fazla bilgi için buraya tıklayın.
Düğümümüz için rasgele bir isim oluşturduk.
Blockchain sınıfını hazırladık.
Bir GET isteği olan /mine endpoint’i oluşturduk.
Verileri ona gönderirken bir POST isteği olan /transactions/new endpoint’i oluşturduk.
Full blok zincirini döndüren /chain endpoint’i oluşturduk.
Sunucuyu 5000 port’undan çalıştırdık.
İşlem Endpoint’i
Bir işlem talebi aşağıdaki gibi görünecektir. Kullanıcının sunucuya gönderdiği şey budur:
{
"sender": "benim adresim",
"recipient": "başka birinin adresi",
"amount": 5
}
İşlemleri bir bloğa eklemek için kullanılan sınıf yöntemimiz zaten olduğundan, geri kalanı kolaydır. İşlem
ekleme fonksiyonunu yazalım:
import hashlib
import json
from textwrap import dedent
from time import time
from uuid import uuid4
from flask import Flask, jsonify, request
...
@app.route('/transactions/new', methods=['POST'])
def new_transaction():
values = request.get_json()
# Zorunlu alanların POST ile gönderilen verinin içinde olduğunu kontrol ediyoruz..
required = ['sender', 'recipient', 'amount']
if not all(k in values for k in required):
return 'Missing values', 400
# Yeni işlem oluşturuyoruz
index = blockchain.new_transaction(values['sender'], values['recipient'], values['amount'])
response = {'message': f'İşlem {index} blokuna eklenecektir'}
return jsonify(response), 201
Madencilik Endpoint’i
Madencilik endpoint’imiz büyünün gerçekleştiği yerdir. Üç şey yapmak zorundayız:
İş ispatını hesaplamalıyız
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 5/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
1 adet koin veren bir işlem ekleyerek madenciyi ödüllendirmeliyiz
Yeni bloğu zincire ekleyerek çıkarmalı ya da kazımalıyız.
import hashlib
import json
from time import time
from uuid import uuid4
from flask import Flask, jsonify, request
...
@app.route('/mine', methods=['GET'])
def mine():
# Sonraki kanıtı almak için iş kanıtı algoritmamızı çalıştırıyoruz...
last_block = blockchain.last_block
last_proof = last_block['proof']
proof = blockchain.proof_of_work(last_proof)
# Kanıtı bulduğumuz için ödül alıyoruz..
blockchain.new_transaction(
sender="0",
recipient=node_identifier,
amount=1,
)
# Yeni bloğu zincire ekleyerek çıkarıyoruz..
block = blockchain.new_block(proof)
response = {
'message': "Yeni blok çıkarıldı",
'index': block['index'],
'transactions': block['transactions'],
'proof': block['proof'],
'previous_hash': block['previous_hash'],
}
return jsonify(response), 200
Çıkarılan bloğun alıcısının düğümümüzün adresi olduğunu unutmayın. Ve burada yaptığımız şeylerin çoğu
Blockchain sınıfındaki yöntemlerle etkileşim kuruyor. Bu noktada işimiz bitti ve blok zincirimizle etkileşime
geçmeye başlayabiliriz.
Sunucuyu çalıştırın:
$ python blockchain.py
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 6/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
http://localhost:5000/transactions/new adresine POST talebi göndererek işlem (transaction)
oluşturmaya çalışalım;
Sunucumu restart ettim ve 2 tane daha blok çıkararak toplamda 3 blok elde ettim.
Şimdi http://localhost:5000/chain adresine istek göndererek zincirin tamamını talep edelim;
{
"chain": [
{
"index": 1,
"previous_hash": 1,
"proof": 100,
"timestamp": 1506280650.770839,
"transactions": []
},
{
"index": 2,
"previous_hash": "c099bc...bfb7",
"proof": 35293,
"timestamp": 1506280664.717925,
"transactions": [
{
"amount": 1,
"recipient": "8bbcb347e0634905b0cac7955bae152b",
"sender": "0"
}
]
},
{
"index": 3,
"previous_hash": "eff91a...10f2",
"proof": 35089,
"timestamp": 1506280666.1086972,
"transactions": [
{
"amount": 1,
"recipient": "8bbcb347e0634905b0cac7955bae152b",
"sender": "0"
}
]
}
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 7/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
],
"length": 3
}
...
from urllib.parse import urlparse
...
class Blockchain(object):
def __init__(self):
...
self.nodes = set()
...
def register_node(self, address):
"""
Düğüm listesine yeni bir düğüm ekliyoruz..
:param address: Düğüm adresi. Örneğin. 'http://192.168.0.5:5000'
:return: None
"""
parsed_url = urlparse(address)
self.nodes.add(parsed_url.netloc)
Düğümlerin listesini tutmak için bir set () kullandık. Bu, yeni düğümlerin eklenmesinin eş-kuvvette olmasını
sağlamanın ucuz bir yoludur.
...
import requests
class Blockchain(object)
...
def valid_chain(self, chain):
"""
Verilen bir blok zincirin geçerli olup olmadığını belirliyoruz..
:param chain: A blockchain
:return: True if valid, False if not
"""
last_block = chain[0]
current_index = 1
while current_index < len(chain):
block = chain[current_index]
print(f'{last_block}')
print(f'{block}')
print("\n-----------\n")
# Blok hash değerinin doğru olup olmadığını kontrol ediyoruz..
if block['previous_hash'] != self.hash(last_block):
return False
# İş kanıtının doğru olup olmadığını kontrol ediyoruz..
if not self.valid_proof(last_block['proof'], block['proof']):
return False
last_block = block
current_index += 1
return True
def resolve_conflicts(self):
"""
Bu konsensüs algoritmamızdır. Çatışmaları,
zincirimizi ağdaki en uzun zincirle değiştirerek çözer.
:return: True if our chain was replaced, False if not
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 8/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
"""
neighbours = self.nodes
new_chain = None
# Bizimkilerden daha uzun zincirleri arıyoruz...
max_length = len(self.chain)
# Ağımızdaki tüm düğümlerden gelen zincirleri alıp doğruluyoruz:
response = requests.get(f'http://{node}/chain')
if response.status_code == 200:
length = response.json()['length']
chain = response.json()['chain']
# Zincirin uzunluğunu ve doğruluğunu kontrol ediyoruz..
if length > max_length and self.valid_chain(chain):
max_length = length
new_chain = chain
# Kendimizinkinden daha uzun ve geçerli zincir bulduğumuzda replace ediyoruz..
if new_chain:
self.chain = new_chain
return True
return False
İlk yöntem olan valid_chain (), bir zincirin her bir blok boyunca döngü yapılarak geçerli olup olmadığını
kontrol etmekten ve hem hash değerinin hem de kanıtın doğrulamasından sorumludur.
İki endpoint’i API’mize kaydettirelim; bir tanesi komşu düğümler eklemek ve diğeri çatışmaları çözmek için:
@app.route('/nodes/register', methods=['POST'])
def register_nodes():
values = request.get_json()
nodes = values.get('nodes')
if nodes is None:
return "Hata: Lütfen geçerli düğüm listesi sunun", 400
for node in nodes:
blockchain.register_node(node)
response = {
'message': 'Yeni düğümler eklendi',
'total_nodes': list(blockchain.nodes),
}
return jsonify(response), 201
@app.route('/nodes/resolve', methods=['GET'])
def consensus():
replaced = blockchain.resolve_conflicts()
if replaced:
response = {
'message': 'Zincirimiz değiştirildi',
'new_chain': blockchain.chain
}
else:
response = {
'message': 'Zincirimiz yetkili',
'chain': blockchain.chain
}
return jsonify(response), 200
Bu noktada isterseniz farklı bir makine kullanabilir ve ağınızda farklı düğümleri döndürebilirsiniz. Ya da aynı
makinedeki farklı bağlantı noktalarını kullanarak işlemleri hızlandırabilirsiniz. Ben makinemde, farklı bir
bağlantı noktasında başka bir düğüm oluşturdum ve mevcut düğümüme kaydettim. Böylece, iki düğümüm
var:
http://localhost:5000 ve http://localhost:5001.
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 9/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
Sonrasında zincirin uzun olduğundan emin olmak için 2nci düğüm üzerinde yeni bloklar çıkardım. Konsensüs
algoritmasının replace edildiği 1nci düğüm üzerinde GET /nodes/resolve komutunu çağırdım.
Ve işte tamamlandı! Blockchain oluşturma yöntemini öğrendiniz! Gidip birkaç arkadaşınızdan blok zincirinizi
test etmesini isteyin.
Umarım bu rehber size yeni bir şeyler yaratmak için ilham kaynağı olmuştur. Kripto paralar konusunda çok
mutlu ve umutluyum, çünkü Blockchain’in ekonomileri, hükümetleri ve kayıt tutma konusundaki
düşüncelerimizi hızla değiştireceğine inanıyorum.
Kaynak
Facebook Yorumları
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 10/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
Yorum ekle...
14
Genel Bakış
Etiketler: BİTCOİN BLOCKCHAİN BLOCKCHAİN ÖĞRENME BLOK ZİNCİR BLOK ZİNCİRİ BLOKZİNCİR
İLGİLİ YAZILAR
TradingView Kriptopara 28 Ocak 2018 Kripto Para 24 Ocak 2018 Kripto Para
Sinyal Bulucu Kullanımı Piyasası Analizi: BTC, ETH, Piyasası Analizi: BTC, ETH,
8 YORUM
28 Ocak 2018 BCH, XRP, XLM, LTC, NEM, BCH, XRP, IOTA, LTC, NEM,
ADA ADA
28 Ocak 2018 24 Ocak 2018
Tosba
20:13 / 4 Ekim 2017
Ahmet
16:26 / 10 Ekim 2017
baris
14:37 / 13 Ekim 2017
bitcoin
17:41 / 23 Kasım 2017
burak aksu
18:08 / 2 Kasım 2017
Bu konuyu videolu bir şekilde ele alsanız veya varsa videolu ele alan atsanız olur mu? Açıkcası
kodlama bilmediğim için anlamadım hazır indirdiğim blockchain dosyasınıda postman’de
çalıştıramadım. Yardımcı olur musunuz ?
Cevapla
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 11/12
13.02.2018 Adım Adım Blockchain Oluşturma - Bitcoin Türkiye
Cevapla
Temmuz
17:37 / 23 Kasım 2017
Merhaba,
Ben btcmatik Pazarlama Muduru Temmuz. Yakın zamanda Turkiye pazarında resmi olarak faaliyete
gececek olan btcmatik.com markası olarak, bitcoin borsası uzerine bir proje baslatmıs bulunmaktayız.
Bu surecte gerek mackolik gerekse diger firmalarla olan calismalarinizi yakindan takip ediyoruz.
btcmatik.com suan icin web sayfamiz tasarim asamasinda olup pazar arastirmasi yapmaktayiz. bu
surec icerisinde sizlerden online borsa ve bitcoin uzerine olan tum platformlarda yerimizi almayi
hedefledigimiz bir paket fiyat teklifi talep ediyorum. Eger reklam aginizda firmamizi tanitabilecegimiz
uygun alanlar varsa trafigi satin almak istiyoruz. En kisa surede donus yapmanizi rica ederim.
Iyi Calismalar,
Temmuz Ozturk
mail : temmuz@btcmatik.com
Cevapla
bitcoin
17:45 / 23 Kasım 2017
Mustafa Ozsoy
01:57 / 3 Şubat 2018
Coin Turkey Org olarak coin turk üretilecek projeye katılmak için sizi mutlaka bekliyorum.
Yazılarınızı okudum bize katılın sizin gibi biriyle ilk adımları başlatmak bana gurur verir.
Cevapla
CEVAPLA
İsim *
E-posta *
Siteniz
Yorumu gönder
SON YORUMLAR
https://bitcoinlerim.com/blockchain-olusturma-blockchain-ogren/ 12/12