diff --git a/app/jobs/import_rgbpp_cells_job.rb b/app/jobs/import_rgbpp_cells_job.rb index df0d374a7..120c72581 100644 --- a/app/jobs/import_rgbpp_cells_job.rb +++ b/app/jobs/import_rgbpp_cells_job.rb @@ -46,7 +46,6 @@ def perform(cell_ids) lock_type: "rgbpp", cell_output_id: cell_output.id, } - rescue StandardError => e Rails.logger.error("Handle rgbpp cell (id: #{cell_output.id}) failed: #{e.message}") raise e @@ -86,7 +85,7 @@ def build_utxo_map(cell_outputs) end def fetch_raw_transactions!(utxo_map) - txids = utxo_map.values.map { _1[:txid] }.uniq + txids = utxo_map.values.pluck(:txid).uniq raw_tx_data = {} txids.each do |txid| @@ -124,7 +123,7 @@ def build_transactions!(cell_outputs, raw_tx_data, utxo_map) unique_transaction_attributes = transaction_attributes.values BitcoinTransaction.upsert_all(unique_transaction_attributes, unique_by: :txid) - BitcoinTransaction.where(txid: unique_transaction_attributes.map { |tx| tx[:txid] }).index_by(&:txid) + BitcoinTransaction.where(txid: unique_transaction_attributes.pluck(:txid)).index_by(&:txid) end def build_op_returns!(raw_tx, tx, ckb_tx) @@ -174,6 +173,10 @@ def build_address!(address_hash, cell_output) BtcAccountBook.find_or_create_by!(ckb_transaction_id: cell_output.ckb_transaction_id, bitcoin_address_id: bitcoin_address.id) + if cell_output.consumed_by_id + BtcAccountBook.find_or_create_by!(ckb_transaction_id: cell_output.consumed_by_id, bitcoin_address_id: bitcoin_address.id) + end + bitcoin_address end