50行ruby程式碼開發一個區塊鏈

longmanma發表於2021-09-09


區塊鏈是什麼?作為一個Ruby開發者,理解區塊鏈的最好辦法,就是親自動手實現一個。只需要50行Ruby程式碼你就能徹底理解區塊鏈的核心原理!

區塊鏈 = 區塊組成的連結串列?

class Block

  attr_reader :timestamp
  attr_reader :data
  attr_reader :previous_hash
  attr_reader :hash

  def initialize(data, previous_hash)
    @timestamp     = Time.now
    @data          = data
    @previous_hash = previous_hash
    @hash          = calc_hash  end

  def self.first( data="Genesis" )    # create genesis (big bang! first) block
    ## note: uses all zero for previous_hash ("0")
    Block.new( data, "0000000000000000000000000000000000000000000000000000000000000000" )  end

  def self.next( previous, data="Transaction Data..." )
    Block.new( data, previous.hash )  endprivate  def calc_hash
    sha = Digest::SHA256.new
    sha.update( @timestamp.to_s + @previous_hash + @data )
    sha.hexdigest  endend  # class Block####### let's get started##   build a blockchain a block at a timeb0 = Block.first( "Genesis" )
b1 = Block.next( b0, "Transaction Data..." )
b2 = Block.next( b1, "Transaction Data......" )
b3 = Block.next( b2, "More Transaction Data..." )

blockchain = [b0, b1, b2, b3]

pp blockchain

執行上面程式:

~$ ruby blockchain.rb

將會輸出類似下面的結果:

[#<0x1eed2a0><0x1eec9a0><0x1eec838><0x1eec6d0>0x1eec6d0>0x1eec838>0x1eec9a0>0x1eed2a0>



<0x1e204f0><0x1e56e20><0x1e2bd58><0x1fa8338>0x1fa8338>0x1e2bd58>0x1e56e20>0x1e204f0>



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2730/viewspace-2801232/,如需轉載,請註明出處,否則將追究法律責任。

相關文章