Skip to content

Commit 7ff8788

Browse files
committed
Merge branch 'issue-297-2' into staging
2 parents 6944471 + 741f07c commit 7ff8788

24 files changed

+159
-512
lines changed

app/controllers/api/v1/address_dao_transactions_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ def show
88
address = Address.find_address!(params[:id])
99
raise Api::V1::Exceptions::AddressNotFoundError if address.is_a?(NullAddress)
1010

11-
ckb_dao_transactions = address.ckb_dao_transactions.select(:id, :tx_hash, :block_id, :block_number, :tags, :block_timestamp, :is_cellbase, :updated_at, :created_at).
12-
recent.page(@page).per(@page_size).fast_page
11+
ckb_dao_transactions = address.ckb_dao_transactions.select(:id, :tx_hash, :block_id, :block_number, :tags, :block_timestamp, :is_cellbase, :updated_at, :created_at, :tx_index).
12+
recent.page(@page).per(@page_size)
1313
json =
1414
Rails.cache.realize(ckb_dao_transactions.cache_key, version: ckb_dao_transactions.cache_version) do
1515
records_counter = RecordCounters::AddressDaoTransactions.new(address)

app/controllers/api/v1/address_udt_transactions_controller.rb

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,14 @@ def show
1212
udt = Udt.find_by(type_hash: params[:type_hash], published: true)
1313
raise Api::V1::Exceptions::UdtNotFoundError if udt.blank?
1414

15-
ckb_dao_transactions = address.ckb_udt_transactions(udt.id).
15+
ckb_udt_transactions = address.ckb_udt_transactions(udt.id).
1616
select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase, :updated_at, :created_at, :tags).
1717
recent.page(@page).per(@page_size).fast_page
1818
json =
19-
Rails.cache.realize(ckb_dao_transactions.cache_key, version: ckb_dao_transactions.cache_version) do
19+
Rails.cache.realize(ckb_udt_transactions.cache_key, version: ckb_udt_transactions.cache_version) do
2020
records_counter = RecordCounters::AddressUdtTransactions.new(address, udt.id)
21-
options = FastJsonapi::PaginationMetaGenerator.new(request:, records: ckb_dao_transactions, page: @page, page_size: @page_size, records_counter:).call
22-
CkbTransactionsSerializer.new(ckb_dao_transactions, options.merge(params: { previews: true })).serialized_json
21+
options = FastJsonapi::PaginationMetaGenerator.new(request:, records: ckb_udt_transactions, page: @page, page_size: @page_size, records_counter:).call
22+
CkbTransactionsSerializer.new(ckb_udt_transactions, options.merge(params: { previews: true })).serialized_json
2323
end
2424

2525
render json:

app/jobs/revert_block_job.rb

Lines changed: 4 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ def update_address_balance_and_ckb_transactions_count(local_tip_block)
5151
address.live_cells_count = address.cell_outputs.live.count
5252
# address.ckb_transactions_count = address.custom_ckb_transactions.count
5353
address.ckb_transactions_count = AccountBook.where(address_id: address.id).count
54-
address.dao_transactions_count = AddressDaoTransaction.where(address_id: address.id).count
54+
address.dao_transactions_count = DaoEvent.processed.where(address_id: address.id).distinct(:ckb_transaction_id).count
5555
address.cal_balance!
5656
address.save!
5757
end
@@ -91,8 +91,7 @@ def revert_dao_contract_related_operations(local_tip_block)
9191
revert_withdraw_from_dao(dao_contract, dao_events)
9292
revert_issue_interest(dao_contract, dao_events)
9393
revert_deposit_to_dao(dao_contract, dao_events)
94-
revert_new_dao_depositor(dao_contract, dao_events)
95-
revert_take_away_all_deposit(dao_contract, dao_events)
94+
dao_contract.update(depositors_count: DaoEvent.depositor.count)
9695
end
9796

9897
def recalculate_udt_accounts(udt_type_hashes, local_tip_block)
@@ -123,24 +122,6 @@ def revert_mining_info(local_tip_block)
123122
miner_address.decrement!(:mined_blocks_count)
124123
end
125124

126-
def revert_dao_contract_related_operations(local_tip_block)
127-
dao_events = DaoEvent.where(block: local_tip_block).processed
128-
dao_contract = DaoContract.default_contract
129-
revert_withdraw_from_dao(dao_contract, dao_events)
130-
revert_issue_interest(dao_contract, dao_events)
131-
revert_deposit_to_dao(dao_contract, dao_events)
132-
revert_new_dao_depositor(dao_contract, dao_events)
133-
revert_take_away_all_deposit(dao_contract, dao_events)
134-
end
135-
136-
def revert_take_away_all_deposit(dao_contract, dao_events)
137-
take_away_all_deposit_dao_events = dao_events.where(event_type: "take_away_all_deposit")
138-
take_away_all_deposit_dao_events.each do |event|
139-
dao_contract.increment!(:depositors_count)
140-
event.reverted!
141-
end
142-
end
143-
144125
def revert_issue_interest(dao_contract, dao_events)
145126
issue_interest_dao_events = dao_events.where(event_type: "issue_interest")
146127
issue_interest_dao_events.each do |event|
@@ -153,6 +134,8 @@ def revert_issue_interest(dao_contract, dao_events)
153134

154135
def revert_withdraw_from_dao(dao_contract, dao_events)
155136
withdraw_from_dao_events = dao_events.where(event_type: "withdraw_from_dao")
137+
ids = withdraw_from_dao_events.pluck(:ckb_transaction_id)
138+
DaoEvent.processed.where(withdrawn_transaction_id: ids).update_all(withdrawn_transaction_id: nil)
156139
withdraw_from_dao_events.each do |event|
157140
dao_contract.decrement!(:withdraw_transactions_count)
158141
dao_contract.increment!(:total_deposit, event.value)
@@ -162,15 +145,6 @@ def revert_withdraw_from_dao(dao_contract, dao_events)
162145
end
163146
end
164147

165-
def revert_new_dao_depositor(dao_contract, dao_events)
166-
new_dao_depositor_events = dao_events.where(event_type: "new_dao_depositor")
167-
new_dao_depositor_events.each do |event|
168-
dao_contract.decrement!(:depositors_count)
169-
dao_contract.decrement!(:total_depositors_count)
170-
event.reverted!
171-
end
172-
end
173-
174148
def revert_deposit_to_dao(dao_contract, dao_events)
175149
deposit_to_dao_events = dao_events.where(event_type: "deposit_to_dao")
176150
deposit_to_dao_events.each do |event|

app/models/address.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class Address < ApplicationRecord
1313
has_many :udt_accounts
1414
has_many :dao_events
1515
belongs_to :lock_script, optional: true
16+
has_many :ckb_dao_transactions, -> { distinct }, through: :dao_events, source: :ckb_transaction
1617

1718
has_one :bitcoin_address_mapping, foreign_key: "ckb_address_id"
1819
has_one :bitcoin_address, through: :bitcoin_address_mapping
@@ -33,8 +34,6 @@ def custom_ckb_transactions
3334
ckb_transactions
3435
end
3536

36-
has_and_belongs_to_many :ckb_dao_transactions, class_name: "CkbTransaction", join_table: "address_dao_transactions"
37-
3837
def ckb_udt_transactions(udt)
3938
udt = Udt.find_by_id(udt) unless udt.is_a?(Udt)
4039
udt&.ckb_transactions || []

app/models/address_dao_transaction.rb

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)