ささいなブロックを作りましょう


注:この記事はCrypto Currently .

いくつかの問題は、問題を待っている解決策は、この新しい技術は、コンピューティングの驚異であることを待っている.しかし、何が正確にブロックチェーンですか?
ブロックチェーン

a digital ledger in which transactions made in bitcoin or another cryptocurrency are recorded chronologically and publicly. >


より一般的な用語では、新しいデータがブロックと呼ばれるコンテナに格納され、過去にデータが追加された不変のチェーン(したがって、ブロックチェーン)に追加されるパブリックデータベースです.ビットコインと他の暗号通貨の場合、これらのデータはトランザクションのグループです.しかし、データはもちろん、任意のタイプのことができます.
Blockchain技術は、BitcoinやLitecoinのような新しい、完全にデジタル通貨を発行したり、中央当局によって管理されていません.これは、今日の銀行システムが詐欺または失敗の対象であると思っている個人に新しい自由をもたらします.また、ブロックチェーンはEthereumのようなテクノロジーの形で分散コンピューティングに革命をもたらしましたsmart contracts .
この記事では、Pythonの2コードの50行以下の単純なブロックを作成します.それは、Snakecoinと呼ばれています.
まず最初に、ブロックがどのように見えるかを定義します.ブロックチェーンでは、各ブロックはタイムスタンプと、必要に応じてインデックスが格納されます.Snakecoinでは、両方を格納するつもりです.そして、ブロックチェーンを通して完全性を確実にするのを助けるために、各々のブロックは、自己識別ハッシュを持ちます.Bitcoinのように、各ブロックのハッシュはブロックのインデックス、タイムスタンプ、データ、および前のブロックのハッシュのハッシュの暗号ハッシュであるでしょう.ああ、データはあなたが望む何でもすることができます.
import hashlib as hasher

class Block:
  def __init__(self, index, timestamp, data, previous_hash):
    self.index = index
    self.timestamp = timestamp
    self.data = data
    self.previous_hash = previous_hash
    self.hash = self.hash_block()

  def hash_block(self):
    sha = hasher.sha256()
    sha.update(str(self.index) + 
               str(self.timestamp) + 
               str(self.data) + 
               str(self.previous_hash))
    return sha.hexdigest()
すごい!ブロック構造がありますが、ブロックチェーンを作成しています.実際のチェーンにブロックを追加する必要があります.前に述べたように、各ブロックは前のブロックからの情報が必要です.しかし、それが言われて、問題は起こります:ブロックチェーンの最初のブロックは、どのようにそこに着きますか?さて、最初のブロック、またはジェネシスブロックは特別なブロックです.多くの場合、それは手動で追加されるか、それが追加されることができる独特の論理を持ちます.
簡単に創世記ブロックを返す関数を作成します.このブロックはインデックス0であり、任意のデータ値と“前ハッシュ”パラメータの任意の値を持ちます.
import datetime as date

def create_genesis_block():
  # Manually construct a block with
  # index zero and arbitrary previous hash
  return Block(0, date.datetime.now(), "Genesis Block", "0")
ジェネシスブロックを作成できるようになりましたので、ブロックチェーン内の次のブロックを生成する関数が必要です.この関数は、チェイン内の前のブロックをパラメーターとして生成し、生成するブロックのデータを作成し、適切なデータを使用して新しいブロックを返します.前のブロックから新しいブロックのハッシュ情報は、各ブロックでのブロックの整合性が増加します.我々がこれをしなかったならば、外側の党が「過去を変えて」、そして、我々のチェーンを彼ら自身の全く新しいものと取り替えることはより簡単です.ハッシュのこのチェーンは、暗号の証明として機能し、一度ブロックを置き換えることができないまたは削除することができないブロックに追加されることを確認します.
def next_block(last_block):
  this_index = last_block.index + 1
  this_timestamp = date.datetime.now()
  this_data = "Hey! I'm block " + str(this_index)
  this_hash = last_block.hash
  return Block(this_index, this_timestamp, this_data, this_hash)
それは大変な仕事の大半だ.今、私たちのブロックを作成することができます!私たちの場合では、blockchain自体は単純なPythonリストです.リストの最初の要素は創世記ブロックです.もちろん、次のブロックを追加する必要があります.Snakecoinは、最も便利なブロックであるため、我々は20の新しいブロックを追加します.forループでこれを行うことができます.
# Create the blockchain and add the genesis block
blockchain = [create_genesis_block()]
previous_block = blockchain[0]

# How many blocks should we add to the chain
# after the genesis block
num_of_blocks_to_add = 20

# Add blocks to the chain
for i in range(0, num_of_blocks_to_add):
  block_to_add = next_block(previous_block)
  blockchain.append(block_to_add)
  previous_block = block_to_add
  # Tell everyone about it!
  print "Block #{} has been added to the blockchain!".format(block_to_add.index)
  print "Hash: {}\n".format(block_to_add.hash)
我々がこれまでに作ったものをテストしましょう.

そこに行く!私たちのブロックチェーンの作品.あなたがコンソールでより多くの情報を見たいならば、あなたはそうすることができましたedit the complete source file 各ブロックのタイムスタンプやデータを出力します.
それはすべてのことです.今日の生産ブロックのサイズにSnakecoinスケールを作るために、我々は複数のマシンと1のチェーンに変更を追跡するためにサーバー層のようなより多くの機能を追加する必要がありますproof-of-work algorithm 与えられた期間に追加されるブロックの量を制限します.
より多くの技術を取得したい場合は、元のBitcoinhere . 幸運と幸せなハッキングの最高!

読書ありがとうございます!
, Github , Snapchat , Medium ,