Skip to content

Commit fbaebd5

Browse files
authored
Merge pull request #2373 from nervosnetwork/develop
Deploy to testnet
2 parents 1664d75 + d43caaf commit fbaebd5

File tree

11 files changed

+89
-61
lines changed

11 files changed

+89
-61
lines changed

app/controllers/api/v2/scripts_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ def ckb_transactions
2121
base_query = CkbTransaction.joins(:cell_dependencies).
2222
where(cell_dependencies: { contract_cell_id: contract_cell_ids }).
2323
order("cell_dependencies.block_number DESC, cell_dependencies.tx_index DESC").
24-
limit(10000)
24+
limit(Settings.query_default_limit)
2525
@ckb_transactions = CkbTransaction.from("(#{base_query.to_sql}) AS ckb_transactions").
2626
order("block_number DESC, tx_index DESC").
2727
page(@page).
@@ -43,7 +43,7 @@ def referring_cells
4343

4444
scope = Contract.referring_cells_query(@contracts).
4545
order("block_timestamp DESC, cell_index DESC").
46-
limit(10000)
46+
limit(Settings.query_default_limit)
4747
if params[:args].present?
4848
type_script = TypeScript.find_by(args: params[:args])
4949
scope = scope.or(CellOutput.where(type_script_id: type_script.id))

app/interactions/addresses/ckb_transactions.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ def execute
1313
raise AddressNotFoundError if address.is_a?(NullAddress)
1414

1515
address_id = address.map(&:id)
16-
account_books = AccountBook.where(address_id:).order("ckb_transaction_id desc").select(:ckb_transaction_id).distinct.limit(5000)
16+
account_books = AccountBook.where(address_id:).order("ckb_transaction_id desc").select(:ckb_transaction_id).distinct.limit(Settings.query_default_limit)
1717
records = CkbTransaction.where(tx_status: :committed, id: account_books.map(&:ckb_transaction_id)).order(transactions_ordering).page(page).per(page_size)
1818
options = paginate_options(records, address_id)
1919
options.merge!(params: { previews: true, address: })
@@ -35,7 +35,7 @@ def transactions_ordering
3535
def paginate_options(records, address_id)
3636
total_count = AccountBook.where(address_id:).distinct.count
3737
FastJsonapi::PaginationMetaGenerator.new(
38-
request:, records:, page:, page_size:, total_count:,
38+
request:, records:, page:, page_size:, total_pages: records.total_pages, total_count:,
3939
).call
4040
end
4141

app/lib/fast_jsonapi/pagination_meta_generator.rb

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,19 @@ class PaginationMetaGenerator
33
DEFAULT_PAGE = 1
44
DEFAULT_PER_PAGE = 20
55

6-
def initialize(request:, records:, page:, page_size:, records_counter: nil, total_count: nil)
6+
def initialize(request:, records:, page:, page_size:, total_pages: nil, records_counter: nil, total_count: nil)
77
@url = request.base_url + request.path + query_string(request.query_parameters)
88
@page = page.to_i
99
@page_size = limit_page_size(records, page_size.to_i)
1010
@records = records
1111
@records_counter = records_counter || records
1212
@total_count = total_count || @records_counter.total_count.to_i
13-
@total_pages = total_pages
14-
@hash = { links: {}, meta: { total: @total_count, page_size: @page_size } }
13+
@total_pages = total_pages || calculated_total_pages
14+
@hash = { links: {}, meta: { total: @total_count, page_size: @page_size, total_pages: @total_pages } }
1515
end
1616

17-
def total_pages
18-
(total_count / @page_size).ceil
17+
def calculated_total_pages
18+
(total_count.to_f / @page_size).ceil
1919
end
2020

2121
def call
@@ -31,10 +31,6 @@ def current_page
3131
records.current_page
3232
end
3333

34-
def last_page?
35-
current_page == total_pages
36-
end
37-
3834
def next_page
3935
current_page + 1 unless last_page? || out_of_range?
4036
end

app/models/daily_statistic.rb

Lines changed: 63 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class DailyStatistic < ApplicationRecord
55
transactions_count addresses_count total_dao_deposit live_cells_count dead_cells_count avg_hash_rate avg_difficulty uncle_rate
66
total_depositors_count address_balance_distribution total_tx_fee occupied_capacity daily_dao_deposit daily_dao_depositors_count
77
circulation_ratio daily_dao_withdraw nodes_count circulating_supply burnt locked_capacity treasury_amount mining_reward
8-
deposit_compensation liquidity created_at_unixtimestamp ckb_hodl_wave holder_count knowledge_size
8+
deposit_compensation liquidity created_at_unixtimestamp ckb_hodl_wave holder_count knowledge_size activity_address_contract_distribution
99
).freeze
1010
MILLISECONDS_IN_DAY = BigDecimal(24 * 60 * 60 * 1000)
1111
GENESIS_TIMESTAMP = 1573852190812
@@ -409,8 +409,26 @@ def liquidity
409409
dead_query = CellOutput.dead.generated_before(to_be_counted_date.to_i * 1000 - 1).consumed_after(to_be_counted_date.to_i * 1000).select(:address_id).to_sql
410410
combined_query = "#{live_query} UNION #{dead_query}"
411411
count_query = "SELECT COUNT(DISTINCT address_id) AS count FROM (#{combined_query}) AS combined_results;"
412-
count = ActiveRecord::Base.connection.execute(count_query).first["count"]
413-
count
412+
ActiveRecord::Base.connection.execute(count_query).first["count"]
413+
end
414+
415+
define_logic :activity_address_contract_distribution do
416+
block_ids = blocks_in_current_period.pluck(:id)
417+
uniq_address_ids = CellOutput.established_status.where(block_id: block_ids).select(:address_id).distinct.map { |cell_output| cell_output.address_id }
418+
results = Address.joins(:lock_script).where(id: uniq_address_ids).group(:code_hash).count
419+
parsed_results =
420+
results.each_with_object({}) do |(key, value), hash|
421+
hex_key = "0x#{key.unpack1('H*')}"
422+
hash[hex_key] = value
423+
end.sort_by { |_k, v| -v }
424+
data =
425+
parsed_results.map do |result|
426+
{ Contract.where(is_lock_script: true).where.not(name: nil).where("type_hash = ? OR data_hash = ?", result[0], result[0]).first&.name => result[1] }
427+
end
428+
nil_sum = data.select { |item| item.keys.include?(nil) }.sum { |item| item[nil] }
429+
filtered_data = data.reject { |item| item.keys.include?(nil) }
430+
filtered_data << { "Others" => nil_sum } if nil_sum > 0
431+
filtered_data
414432
end
415433

416434
private
@@ -534,47 +552,48 @@ def aggron_first_day?
534552
#
535553
# Table name: daily_statistics
536554
#
537-
# id :bigint not null, primary key
538-
# transactions_count :string default("0")
539-
# addresses_count :string default("0")
540-
# total_dao_deposit :string default("0.0")
541-
# block_timestamp :decimal(30, )
542-
# created_at_unixtimestamp :integer
543-
# created_at :datetime not null
544-
# updated_at :datetime not null
545-
# dao_depositors_count :string default("0")
546-
# unclaimed_compensation :string default("0")
547-
# claimed_compensation :string default("0")
548-
# average_deposit_time :string default("0")
549-
# estimated_apc :string default("0")
550-
# mining_reward :string default("0")
551-
# deposit_compensation :string default("0")
552-
# treasury_amount :string default("0")
553-
# live_cells_count :string default("0")
554-
# dead_cells_count :string default("0")
555-
# avg_hash_rate :string default("0")
556-
# avg_difficulty :string default("0")
557-
# uncle_rate :string default("0")
558-
# total_depositors_count :string default("0")
559-
# total_tx_fee :decimal(30, )
560-
# address_balance_distribution :jsonb
561-
# occupied_capacity :decimal(30, )
562-
# daily_dao_deposit :decimal(30, )
563-
# daily_dao_depositors_count :integer
564-
# daily_dao_withdraw :decimal(30, )
565-
# circulation_ratio :decimal(, )
566-
# total_supply :decimal(30, )
567-
# circulating_supply :decimal(, )
568-
# block_time_distribution :jsonb
569-
# epoch_time_distribution :jsonb
570-
# epoch_length_distribution :jsonb
571-
# average_block_time :jsonb
572-
# nodes_distribution :jsonb
573-
# nodes_count :integer
574-
# locked_capacity :decimal(30, )
575-
# ckb_hodl_wave :jsonb
576-
# holder_count :integer
577-
# knowledge_size :decimal(30, )
555+
# id :bigint not null, primary key
556+
# transactions_count :string default("0")
557+
# addresses_count :string default("0")
558+
# total_dao_deposit :string default("0.0")
559+
# block_timestamp :decimal(30, )
560+
# created_at_unixtimestamp :integer
561+
# created_at :datetime not null
562+
# updated_at :datetime not null
563+
# dao_depositors_count :string default("0")
564+
# unclaimed_compensation :string default("0")
565+
# claimed_compensation :string default("0")
566+
# average_deposit_time :string default("0")
567+
# estimated_apc :string default("0")
568+
# mining_reward :string default("0")
569+
# deposit_compensation :string default("0")
570+
# treasury_amount :string default("0")
571+
# live_cells_count :string default("0")
572+
# dead_cells_count :string default("0")
573+
# avg_hash_rate :string default("0")
574+
# avg_difficulty :string default("0")
575+
# uncle_rate :string default("0")
576+
# total_depositors_count :string default("0")
577+
# total_tx_fee :decimal(30, )
578+
# address_balance_distribution :jsonb
579+
# occupied_capacity :decimal(30, )
580+
# daily_dao_deposit :decimal(30, )
581+
# daily_dao_depositors_count :integer
582+
# daily_dao_withdraw :decimal(30, )
583+
# circulation_ratio :decimal(, )
584+
# total_supply :decimal(30, )
585+
# circulating_supply :decimal(, )
586+
# block_time_distribution :jsonb
587+
# epoch_time_distribution :jsonb
588+
# epoch_length_distribution :jsonb
589+
# average_block_time :jsonb
590+
# nodes_distribution :jsonb
591+
# nodes_count :integer
592+
# locked_capacity :decimal(30, )
593+
# ckb_hodl_wave :jsonb
594+
# holder_count :integer
595+
# knowledge_size :decimal(30, )
596+
# activity_address_contract_distribution :jsonb
578597
#
579598
# Indexes
580599
#

app/serializers/daily_statistic_serializer.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,4 +138,8 @@ class DailyStatisticSerializer
138138
attribute :knowledge_size, if: Proc.new { |_record, params|
139139
params.present? && params[:indicator].include?("knowledge_size")
140140
}
141+
142+
attribute :activity_address_contract_distribution, if: Proc.new { |_record, params|
143+
params.present? && params[:indicator].include?("activity_address_contract_distribution")
144+
}
141145
end

app/services/charts/daily_statistic_generator.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def updated_attrs
3636
treasury_amount estimated_apc live_cells_count dead_cells_count avg_hash_rate
3737
avg_difficulty uncle_rate address_balance_distribution
3838
total_tx_fee occupied_capacity daily_dao_deposit total_supply block_time_distribution
39-
epoch_time_distribution epoch_length_distribution locked_capacity ckb_hodl_wave holder_count
39+
epoch_time_distribution epoch_length_distribution locked_capacity ckb_hodl_wave holder_count activity_address_contract_distribution
4040
}
4141

4242
established_order + others

config/settings.mainnet.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ type_id_code_hash: "0x0000000000000000000000000000000000000000000000000054595045
8484
homepage_transactions_records_count: 15
8585
homepage_block_records_count: 15
8686
proposal_window: 10
87+
query_default_limit: 5000
8788

8889
# rgbpp code hash
8990
rgbpp_code_hash:

config/settings.testnet.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ type_id_code_hash: "0x0000000000000000000000000000000000000000000000000054595045
8484
homepage_transactions_records_count: 15
8585
homepage_block_records_count: 15
8686
proposal_window: 10
87+
query_default_limit: 5000
8788

8889
# rgbpp code hash
8990
rgbpp_code_hash:
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class AddActivityAddressContractDistributionToDailyStatistic < ActiveRecord::Migration[7.0]
2+
def change
3+
add_column :daily_statistics, :activity_address_contract_distribution, :jsonb
4+
end
5+
end

db/structure.sql

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1574,7 +1574,8 @@ CREATE TABLE public.daily_statistics (
15741574
locked_capacity numeric(30,0),
15751575
ckb_hodl_wave jsonb,
15761576
holder_count integer,
1577-
knowledge_size numeric(30,0)
1577+
knowledge_size numeric(30,0),
1578+
activity_address_contract_distribution jsonb
15781579
);
15791580

15801581

@@ -6327,6 +6328,7 @@ INSERT INTO "schema_migrations" (version) VALUES
63276328
('20241205023729'),
63286329
('20241212022531'),
63296330
('20241213053309'),
6330-
('20241218085721');
6331+
('20241218085721'),
6332+
('20241225045757');
63316333

63326334

0 commit comments

Comments
 (0)