Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deploy to testnet #2373

Merged
merged 2 commits into from
Dec 25, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions app/controllers/api/v2/scripts_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ def ckb_transactions
base_query = CkbTransaction.joins(:cell_dependencies).
where(cell_dependencies: { contract_cell_id: contract_cell_ids }).
order("cell_dependencies.block_number DESC, cell_dependencies.tx_index DESC").
limit(10000)
limit(Settings.query_default_limit)
@ckb_transactions = CkbTransaction.from("(#{base_query.to_sql}) AS ckb_transactions").
order("block_number DESC, tx_index DESC").
page(@page).
Expand All @@ -43,7 +43,7 @@ def referring_cells

scope = Contract.referring_cells_query(@contracts).
order("block_timestamp DESC, cell_index DESC").
limit(10000)
limit(Settings.query_default_limit)
if params[:args].present?
type_script = TypeScript.find_by(args: params[:args])
scope = scope.or(CellOutput.where(type_script_id: type_script.id))
Expand Down
4 changes: 2 additions & 2 deletions app/interactions/addresses/ckb_transactions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ def execute
raise AddressNotFoundError if address.is_a?(NullAddress)

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

Expand Down
14 changes: 5 additions & 9 deletions app/lib/fast_jsonapi/pagination_meta_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,19 @@ class PaginationMetaGenerator
DEFAULT_PAGE = 1
DEFAULT_PER_PAGE = 20

def initialize(request:, records:, page:, page_size:, records_counter: nil, total_count: nil)
def initialize(request:, records:, page:, page_size:, total_pages: nil, records_counter: nil, total_count: nil)
@url = request.base_url + request.path + query_string(request.query_parameters)
@page = page.to_i
@page_size = limit_page_size(records, page_size.to_i)
@records = records
@records_counter = records_counter || records
@total_count = total_count || @records_counter.total_count.to_i
@total_pages = total_pages
@hash = { links: {}, meta: { total: @total_count, page_size: @page_size } }
@total_pages = total_pages || calculated_total_pages
@hash = { links: {}, meta: { total: @total_count, page_size: @page_size, total_pages: @total_pages } }
end

def total_pages
(total_count / @page_size).ceil
def calculated_total_pages
(total_count.to_f / @page_size).ceil
end

def call
Expand All @@ -31,10 +31,6 @@ def current_page
records.current_page
end

def last_page?
current_page == total_pages
end

def next_page
current_page + 1 unless last_page? || out_of_range?
end
Expand Down
107 changes: 63 additions & 44 deletions app/models/daily_statistic.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ class DailyStatistic < ApplicationRecord
transactions_count addresses_count total_dao_deposit live_cells_count dead_cells_count avg_hash_rate avg_difficulty uncle_rate
total_depositors_count address_balance_distribution total_tx_fee occupied_capacity daily_dao_deposit daily_dao_depositors_count
circulation_ratio daily_dao_withdraw nodes_count circulating_supply burnt locked_capacity treasury_amount mining_reward
deposit_compensation liquidity created_at_unixtimestamp ckb_hodl_wave holder_count knowledge_size
deposit_compensation liquidity created_at_unixtimestamp ckb_hodl_wave holder_count knowledge_size activity_address_contract_distribution
).freeze
MILLISECONDS_IN_DAY = BigDecimal(24 * 60 * 60 * 1000)
GENESIS_TIMESTAMP = 1573852190812
Expand Down Expand Up @@ -409,8 +409,26 @@ def liquidity
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
combined_query = "#{live_query} UNION #{dead_query}"
count_query = "SELECT COUNT(DISTINCT address_id) AS count FROM (#{combined_query}) AS combined_results;"
count = ActiveRecord::Base.connection.execute(count_query).first["count"]
count
ActiveRecord::Base.connection.execute(count_query).first["count"]
end

define_logic :activity_address_contract_distribution do
block_ids = blocks_in_current_period.pluck(:id)
uniq_address_ids = CellOutput.established_status.where(block_id: block_ids).select(:address_id).distinct.map { |cell_output| cell_output.address_id }
results = Address.joins(:lock_script).where(id: uniq_address_ids).group(:code_hash).count
parsed_results =
results.each_with_object({}) do |(key, value), hash|
hex_key = "0x#{key.unpack1('H*')}"
hash[hex_key] = value
end.sort_by { |_k, v| -v }
data =
parsed_results.map do |result|
{ Contract.where(is_lock_script: true).where.not(name: nil).where("type_hash = ? OR data_hash = ?", result[0], result[0]).first&.name => result[1] }
end
nil_sum = data.select { |item| item.keys.include?(nil) }.sum { |item| item[nil] }
filtered_data = data.reject { |item| item.keys.include?(nil) }
filtered_data << { "Others" => nil_sum } if nil_sum > 0
filtered_data
end

private
Expand Down Expand Up @@ -534,47 +552,48 @@ def aggron_first_day?
#
# Table name: daily_statistics
#
# id :bigint not null, primary key
# transactions_count :string default("0")
# addresses_count :string default("0")
# total_dao_deposit :string default("0.0")
# block_timestamp :decimal(30, )
# created_at_unixtimestamp :integer
# created_at :datetime not null
# updated_at :datetime not null
# dao_depositors_count :string default("0")
# unclaimed_compensation :string default("0")
# claimed_compensation :string default("0")
# average_deposit_time :string default("0")
# estimated_apc :string default("0")
# mining_reward :string default("0")
# deposit_compensation :string default("0")
# treasury_amount :string default("0")
# live_cells_count :string default("0")
# dead_cells_count :string default("0")
# avg_hash_rate :string default("0")
# avg_difficulty :string default("0")
# uncle_rate :string default("0")
# total_depositors_count :string default("0")
# total_tx_fee :decimal(30, )
# address_balance_distribution :jsonb
# occupied_capacity :decimal(30, )
# daily_dao_deposit :decimal(30, )
# daily_dao_depositors_count :integer
# daily_dao_withdraw :decimal(30, )
# circulation_ratio :decimal(, )
# total_supply :decimal(30, )
# circulating_supply :decimal(, )
# block_time_distribution :jsonb
# epoch_time_distribution :jsonb
# epoch_length_distribution :jsonb
# average_block_time :jsonb
# nodes_distribution :jsonb
# nodes_count :integer
# locked_capacity :decimal(30, )
# ckb_hodl_wave :jsonb
# holder_count :integer
# knowledge_size :decimal(30, )
# id :bigint not null, primary key
# transactions_count :string default("0")
# addresses_count :string default("0")
# total_dao_deposit :string default("0.0")
# block_timestamp :decimal(30, )
# created_at_unixtimestamp :integer
# created_at :datetime not null
# updated_at :datetime not null
# dao_depositors_count :string default("0")
# unclaimed_compensation :string default("0")
# claimed_compensation :string default("0")
# average_deposit_time :string default("0")
# estimated_apc :string default("0")
# mining_reward :string default("0")
# deposit_compensation :string default("0")
# treasury_amount :string default("0")
# live_cells_count :string default("0")
# dead_cells_count :string default("0")
# avg_hash_rate :string default("0")
# avg_difficulty :string default("0")
# uncle_rate :string default("0")
# total_depositors_count :string default("0")
# total_tx_fee :decimal(30, )
# address_balance_distribution :jsonb
# occupied_capacity :decimal(30, )
# daily_dao_deposit :decimal(30, )
# daily_dao_depositors_count :integer
# daily_dao_withdraw :decimal(30, )
# circulation_ratio :decimal(, )
# total_supply :decimal(30, )
# circulating_supply :decimal(, )
# block_time_distribution :jsonb
# epoch_time_distribution :jsonb
# epoch_length_distribution :jsonb
# average_block_time :jsonb
# nodes_distribution :jsonb
# nodes_count :integer
# locked_capacity :decimal(30, )
# ckb_hodl_wave :jsonb
# holder_count :integer
# knowledge_size :decimal(30, )
# activity_address_contract_distribution :jsonb
#
# Indexes
#
Expand Down
4 changes: 4 additions & 0 deletions app/serializers/daily_statistic_serializer.rb
Original file line number Diff line number Diff line change
Expand Up @@ -138,4 +138,8 @@ class DailyStatisticSerializer
attribute :knowledge_size, if: Proc.new { |_record, params|
params.present? && params[:indicator].include?("knowledge_size")
}

attribute :activity_address_contract_distribution, if: Proc.new { |_record, params|
params.present? && params[:indicator].include?("activity_address_contract_distribution")
}
end
2 changes: 1 addition & 1 deletion app/services/charts/daily_statistic_generator.rb
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ def updated_attrs
treasury_amount estimated_apc live_cells_count dead_cells_count avg_hash_rate
avg_difficulty uncle_rate address_balance_distribution
total_tx_fee occupied_capacity daily_dao_deposit total_supply block_time_distribution
epoch_time_distribution epoch_length_distribution locked_capacity ckb_hodl_wave holder_count
epoch_time_distribution epoch_length_distribution locked_capacity ckb_hodl_wave holder_count activity_address_contract_distribution
}

established_order + others
Expand Down
1 change: 1 addition & 0 deletions config/settings.mainnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ type_id_code_hash: "0x0000000000000000000000000000000000000000000000000054595045
homepage_transactions_records_count: 15
homepage_block_records_count: 15
proposal_window: 10
query_default_limit: 5000

# rgbpp code hash
rgbpp_code_hash:
Expand Down
1 change: 1 addition & 0 deletions config/settings.testnet.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ type_id_code_hash: "0x0000000000000000000000000000000000000000000000000054595045
homepage_transactions_records_count: 15
homepage_block_records_count: 15
proposal_window: 10
query_default_limit: 5000

# rgbpp code hash
rgbpp_code_hash:
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class AddActivityAddressContractDistributionToDailyStatistic < ActiveRecord::Migration[7.0]
def change
add_column :daily_statistics, :activity_address_contract_distribution, :jsonb
end
end
6 changes: 4 additions & 2 deletions db/structure.sql
Original file line number Diff line number Diff line change
Expand Up @@ -1574,7 +1574,8 @@ CREATE TABLE public.daily_statistics (
locked_capacity numeric(30,0),
ckb_hodl_wave jsonb,
holder_count integer,
knowledge_size numeric(30,0)
knowledge_size numeric(30,0),
activity_address_contract_distribution jsonb
);


Expand Down Expand Up @@ -6327,6 +6328,7 @@ INSERT INTO "schema_migrations" (version) VALUES
('20241205023729'),
('20241212022531'),
('20241213053309'),
('20241218085721');
('20241218085721'),
('20241225045757');


Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class AddressLiveCellsControllerTest < ActionDispatch::IntegrationTest
address = create(:address, :with_udt_transactions)
valid_get api_v1_address_live_cell_url(address.address_hash)

assert_equal ({ "data" => [], "meta" => { "total" => 0, "page_size" => 20 } }), json
assert_equal ({ "data" => [], "meta" => { "total" => 0, "page_size" => 20, "total_pages" => 0 } }), json
end

test "should return all live cells" do
Expand Down
Loading