Skip to content

Commit

Permalink
fix: tx fee calculation bug
Browse files Browse the repository at this point in the history
  • Loading branch information
shaojunda committed Jul 18, 2019
1 parent 0ed1457 commit 1f708c8
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 30 deletions.
28 changes: 1 addition & 27 deletions app/models/ckb_sync/persist.rb
Original file line number Diff line number Diff line change
Expand Up @@ -144,23 +144,6 @@ def sync_tip_block_number_type(sync_type)
"#{sync_type}_tip_block_number"
end

def build_display_input(cell_input)
cell = cell_input.previous_output["cell"]

if cell.blank?
cellbase = Cellbase.new(cell_input.ckb_transaction.block)
{ id: nil, from_cellbase: true, capacity: nil, address_hash: nil, target_block_number: cellbase.target_block_number }
else
previous_cell_output = cell_input.previous_cell_output

return if previous_cell_output.blank?

cell_input.update(previous_cell_output_id: previous_cell_output.id)
address_hash = previous_cell_output.address_hash
{ id: cell_input.id, from_cellbase: false, capacity: previous_cell_output.capacity, address_hash: address_hash }
end
end

def build_type_script(cell_output, type_script)
return if type_script.blank?

Expand All @@ -180,33 +163,24 @@ def build_lock_script(cell_output, verify_script, address)

def build_cell_input(ckb_transaction, input)
cell = input.previous_output.cell
previous_cell_output = nil
previous_cell_output = CellOutput.available.where(tx_hash: cell.tx_hash, cell_index: cell.index).first if cell.present?

ckb_transaction.cell_inputs.build(
previous_output: input.previous_output,
since: input.since,
previous_cell_output_id: previous_cell_output&.id,
block: ckb_transaction.block,
from_cell_base: cell.blank?
)
end

def build_cell_output(ckb_transaction, output, address, cell_index)
tx_hash = ckb_transaction.tx_hash
previous_output = CellInput.where("previous_output -> 'cell' @> ?", { tx_hash: tx_hash, index: cell_index.to_s }.to_json)
consumed_by_id = nil
consumed_by_id = CkbTransaction.find_by(tx_hash: tx_hash) if previous_output.exists?

ckb_transaction.cell_outputs.build(
capacity: output.capacity,
data: output.data,
address: address,
block: ckb_transaction.block,
tx_hash: ckb_transaction.tx_hash,
cell_index: cell_index,
generated_by: ckb_transaction,
consumed_by_id: consumed_by_id
generated_by: ckb_transaction
)
end

Expand Down
6 changes: 3 additions & 3 deletions app/models/ckb_transaction.rb
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ def display_inputs
cellbase = Cellbase.new(block)
display_inputs << { id: nil, from_cellbase: true, capacity: nil, address_hash: nil, target_block_number: cellbase.target_block_number }
else
inputs.order(:id).each do |input|
self.cell_inputs.order(:id).each do |input|
previous_cell_output = input.previous_cell_output
display_inputs << { id: input.id, from_cellbase: false, capacity: previous_cell_output.capacity, address_hash: previous_cell_output.address_hash }
end
Expand All @@ -43,11 +43,11 @@ def display_inputs
def display_outputs
display_outputs = []
if is_cellbase
output = outputs.order(:id).first
output = cell_outputs.order(:id).first
cellbase = Cellbase.new(block)
display_outputs << { id: output.id, capacity: output.capacity, address_hash: output.address_hash, target_block_number: cellbase.target_block_number, block_reward: cellbase.block_reward, commit_reward: cellbase.commit_reward, proposal_reward: cellbase.proposal_reward }
else
outputs.order(:id).each do |output|
cell_outputs.order(:id).each do |output|
display_outputs << { id: output.id, capacity: output.capacity, address_hash: output.address_hash }
end
end
Expand Down

0 comments on commit 1f708c8

Please sign in to comment.