Skip to content

Commit

Permalink
feat: create uncle blocks when process node block
Browse files Browse the repository at this point in the history
  • Loading branch information
shaojunda committed Aug 1, 2019
1 parent cf623f6 commit 37a6787
Showing 1 changed file with 40 additions and 13 deletions.
53 changes: 40 additions & 13 deletions app/models/ckb_sync/node_data_processor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,34 @@ module CkbSync
class NodeDataProcessor
def call(node_block)
local_block = build_block(node_block)

node_block.uncles.each do |uncle_block|
build_uncle_block(uncle_block, local_block)
end

local_block.save

local_block
end

private

def uncle_block_hashes(node_block_uncles)
node_block_uncles.map { |uncle| uncle.to_h.dig("header", "hash") }
end

def generate_address_in_advance(cellbase)
return if cellbase.witnesses.blank?

lock_script = CkbUtils.generate_lock_script_from_cellbase(cellbase)
address = Address.find_or_create_address(lock_script)
LockScript.find_or_create_by(
args: lock_script.args,
code_hash: lock_script.code_hash,
address: address
)
end

def build_block(node_block)
header = node_block.header
epoch_info = CkbUtils.get_epoch_info(header.epoch)
Expand Down Expand Up @@ -47,19 +68,25 @@ def build_block(node_block)
)
end

def uncle_block_hashes(node_block_uncles)
node_block_uncles.map { |uncle| uncle.to_h.dig("header", "hash") }
end

def generate_address_in_advance(cellbase)
return if cellbase.witnesses.blank?

lock_script = CkbUtils.generate_lock_script_from_cellbase(cellbase)
address = Address.find_or_create_address(lock_script)
LockScript.find_or_create_by(
args: lock_script.args,
code_hash: lock_script.code_hash,
address: address
def build_uncle_block(uncle_block, local_block)
header = uncle_block.header
local_block.uncle_blocks.build(
difficulty: header.difficulty,
block_hash: header.hash,
number: header.number,
parent_hash: header.parent_hash,
seal: header.seal,
timestamp: header.timestamp,
transactions_root: header.transactions_root,
proposals_hash: header.proposals_hash,
uncles_count: header.uncles_count,
uncles_hash: header.uncles_hash,
version: header.version,
proposals: uncle_block.proposals,
proposals_count: uncle_block.proposals.count,
witnesses_root: header.witnesses_root,
epoch: header.epoch,
dao: header.dao
)
end
end
Expand Down

0 comments on commit 37a6787

Please sign in to comment.