Skip to content

Commit

Permalink
Merge pull request #750 from nervosnetwork/rc/v0.12.1
Browse files Browse the repository at this point in the history
Rc/v0.12.1
  • Loading branch information
shaojunda authored Nov 30, 2020
2 parents 11b025e + 49f9122 commit b0c6a3a
Show file tree
Hide file tree
Showing 15 changed files with 71 additions and 20 deletions.
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# [v0.12.1](https://github.com/nervosnetwork/ckb-explorer/compare/v0.12.0...v0.12.1) (2020-11-30)


### Bug Fixes

[#749](https://github.com/nervosnetwork/ckb-explorer/pull/749): fix dao contract cache bug


### Features

[#747](https://github.com/nervosnetwork/ckb-explorer/pull/747): support short acp address



# [v0.12.0](https://github.com/nervosnetwork/ckb-explorer/compare/v0.11.2...v0.12.0) (2020-11-10)


Expand Down
4 changes: 2 additions & 2 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@ GIT

GIT
remote: https://github.com/nervosnetwork/ckb-sdk-ruby.git
revision: dfe4c30f3be49f89d2c8d88170a199cfa053d4fe
revision: bbe04b45aabcc112c2c13540a68ded989cc2eb00
branch: develop
specs:
ckb-sdk-ruby (0.37.0)
ckb-sdk-ruby (0.38.1)
bitcoin-secp256k1 (~> 0.5.2)
net-http-persistent (~> 3.1.0)
rbnacl (~> 7.1.1)
Expand Down
12 changes: 8 additions & 4 deletions RELEASENOTES.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
### Adapted CKB Version
[ckb 0.25.1](https://github.com/nervosnetwork/ckb/releases/tag/v0.25.1) and above
# [v0.12.1](https://github.com/nervosnetwork/ckb-explorer/compare/v0.12.0...v0.12.1) (2020-11-30)


### Bug Fixes

[#749](https://github.com/nervosnetwork/ckb-explorer/pull/749): fix dao contract cache bug

# [v0.12.0](https://github.com/nervosnetwork/ckb-explorer/compare/v0.11.2...v0.12.0) (2020-11-10)

### Features

* [#739](https://github.com/nervosnetwork/ckb-explorer/pull/739): support querying transactions in the transaction pool
[#747](https://github.com/nervosnetwork/ckb-explorer/pull/747): support short acp address

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ def show
address = Address.find_address!(params[:id])
raise Api::V1::Exceptions::AddressNotFoundError if address.is_a?(NullAddress)

ckb_dao_transactions = address.ckb_dao_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase).recent.page(@page).per(@page_size)
ckb_dao_transactions = address.ckb_dao_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase, :updated_at).recent.page(@page).per(@page_size)
json =
Rails.cache.realize(ckb_dao_transactions.cache_key, version: ckb_dao_transactions.cache_version) do
records_counter = RecordCounters::AddressDaoTransactions.new(address)
Expand Down
5 changes: 2 additions & 3 deletions app/controllers/api/v1/address_transactions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@ def show
@address = Address.find_address!(params[:id])
raise Api::V1::Exceptions::AddressNotFoundError if @address.is_a?(NullAddress)

@ckb_transactions = @address.custom_ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase).recent.page(@page).per(@page_size)

@ckb_transactions = @address.custom_ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase, :updated_at).recent.page(@page).per(@page_size)
json =
Rails.cache.realize(@ckb_transactions.cache_key, version: @ckb_transactions.cache_version) do
Rails.cache.realize("#{@ckb_transactions.cache_key}/#{@address.query_address}", version: @ckb_transactions.cache_version) do
records_counter = RecordCounters::AddressTransactions.new(@address)
@options = FastJsonapi::PaginationMetaGenerator.new(request: request, records: @ckb_transactions, page: @page, page_size: @page_size, records_counter: records_counter).call
json_result
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ def show
udt = Udt.find_by(type_hash: params[:type_hash], published: true)
raise Api::V1::Exceptions::UdtNotFoundError if udt.blank?

ckb_dao_transactions = address.ckb_udt_transactions(udt.id).select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase).recent.page(@page).per(@page_size)
ckb_dao_transactions = address.ckb_udt_transactions(udt.id).select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase, :updated_at).recent.page(@page).per(@page_size)
json =
Rails.cache.realize(ckb_dao_transactions.cache_key, version: ckb_dao_transactions.cache_version) do
records_counter = RecordCounters::AddressUdtTransactions.new(address, udt.id)
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/api/v1/block_transactions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class BlockTransactionsController < ApplicationController

def show
block = Block.find_by!(block_hash: params[:id])
ckb_transactions = block.ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase).order(:id).page(@page).per(@page_size)
ckb_transactions = block.ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase, :updated_at).order(:id).page(@page).per(@page_size)
json =
Rails.cache.realize(ckb_transactions.cache_key, version: ckb_transactions.cache_version) do
records_counter = RecordCounters::BlockTransactions.new(block)
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/api/v1/blocks_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ class BlocksController < ApplicationController

def index
if from_home_page?
blocks = Block.recent.limit(ENV["HOMEPAGE_BLOCK_RECORDS_COUNT"].to_i).select(:id, :miner_hash, :number, :timestamp, :reward, :ckb_transactions_count, :live_cell_changes)
blocks = Block.recent.limit(ENV["HOMEPAGE_BLOCK_RECORDS_COUNT"].to_i).select(:id, :miner_hash, :number, :timestamp, :reward, :ckb_transactions_count, :live_cell_changes, :updated_at)
json =
Rails.cache.realize(blocks.cache_key, version: blocks.cache_version, race_condition_ttl: 3.seconds) do
BlockListSerializer.new(blocks).serialized_json
end
else
blocks = Block.recent.select(:id, :miner_hash, :number, :timestamp, :reward, :ckb_transactions_count, :live_cell_changes).page(@page).per(@page_size)
blocks = Block.recent.select(:id, :miner_hash, :number, :timestamp, :reward, :ckb_transactions_count, :live_cell_changes, :updated_at).page(@page).per(@page_size)
json =
Rails.cache.realize(blocks.cache_key, version: blocks.cache_version, race_condition_ttl: 3.seconds) do
records_counter = RecordCounters::Blocks.new
Expand Down
4 changes: 2 additions & 2 deletions app/controllers/api/v1/ckb_transactions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@ class CkbTransactionsController < ApplicationController

def index
if from_home_page?
ckb_transactions = CkbTransaction.recent.normal.limit(ENV["HOMEPAGE_TRANSACTIONS_RECORDS_COUNT"].to_i).select(:id, :tx_hash, :block_number, :block_timestamp, :live_cell_changes, :capacity_involved)
ckb_transactions = CkbTransaction.recent.normal.limit(ENV["HOMEPAGE_TRANSACTIONS_RECORDS_COUNT"].to_i).select(:id, :tx_hash, :block_number, :block_timestamp, :live_cell_changes, :capacity_involved, :updated_at)
json =
Rails.cache.realize(ckb_transactions.cache_key, version: ckb_transactions.cache_version, race_condition_ttl: 3.seconds) do
CkbTransactionListSerializer.new(ckb_transactions).serialized_json
end
render json: json
else
ckb_transactions = CkbTransaction.recent.normal.page(@page).per(@page_size).select(:id, :tx_hash, :block_number, :block_timestamp, :live_cell_changes, :capacity_involved)
ckb_transactions = CkbTransaction.recent.normal.page(@page).per(@page_size).select(:id, :tx_hash, :block_number, :block_timestamp, :live_cell_changes, :capacity_involved, :updated_at)
json =
Rails.cache.realize(ckb_transactions.cache_key, version: ckb_transactions.cache_version, race_condition_ttl: 3.seconds) do
records_counter = RecordCounters::Transactions.new
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/api/v1/contract_transactions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ def show
raise Api::V1::Exceptions::ContractNotFoundError if params[:id] != DaoContract::CONTRACT_NAME

dao_contract = DaoContract.default_contract
ckb_transactions = dao_contract.ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase).recent.page(@page).per(@page_size)
ckb_transactions = dao_contract.ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase, :updated_at).recent.page(@page).per(@page_size)
json =
Rails.cache.realize(ckb_transactions.cache_key, version: ckb_transactions.cache_version) do
records_counter = RecordCounters::DaoTransactions.new(dao_contract)
Expand Down
2 changes: 1 addition & 1 deletion app/controllers/api/v1/udt_transactions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ class UdtTransactionsController < ApplicationController

def show
udt = Udt.find_by!(type_hash: params[:id], published: true)
ckb_transactions = udt.ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase).recent.page(@page).per(@page_size)
ckb_transactions = udt.ckb_transactions.select(:id, :tx_hash, :block_id, :block_number, :block_timestamp, :is_cellbase, :updated_at).recent.page(@page).per(@page_size)
json =
Rails.cache.realize(ckb_transactions.cache_key, version: ckb_transactions.cache_version) do
records_counter = RecordCounters::UdtTransactions.new(udt)
Expand Down
1 change: 1 addition & 0 deletions app/models/null_address.rb
Original file line number Diff line number Diff line change
Expand Up @@ -68,4 +68,5 @@ def unclaimed_compensation
end

alias_method :cached_lock_script, :lock_script
alias_method :query_address, :address_hash
end
6 changes: 5 additions & 1 deletion app/serializers/address_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
class AddressSerializer
include FastJsonapi::ObjectSerializer

attributes :address_hash, :lock_info
attributes :lock_info

attribute :address_hash do |object|
object.query_address
end
attribute :balance do |object|
object.balance.to_s
end
Expand Down
29 changes: 29 additions & 0 deletions lib/tasks/migration/update_short_acp_address.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
namespace :migration do
task :update_short_acp_address, [:mode] => :environment do |_, args|
mode = args[:mode].downcase
if mode == "testnet"
code_hash = "0x3419a1c09eb2567f6552ee7a8ecffd64155cffe0f1796e6e61ec088d740c1356"
else
code_hash = "0xd369597ff47f29fbc0d47d2e3775370d1250b85140c670e4718af712983a2354"
end
puts "mode: #{mode}"
address_ids = LockScript.where(code_hash: code_hash).pluck(:address_id).uniq
addresses = Address.where(id: address_ids)
progress_bar = ProgressBar.create({
total: addresses.count,
format: "%e %B %p%% %c/%C"
})

addresses.each do |address|
s = address.lock_script
lock = CKB::Types::Script.new(s.to_node_lock)
short_acp_address = CKB::Address.new(lock, mode: mode).generate
puts "full address: #{address.address_hash}, short acp address: #{short_acp_address}"
address.update(address_hash: short_acp_address)

progress_bar.increment
end

puts "done"
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ class Api::V1::UdtTransactionsControllerTest < ActionDispatch::IntegrationTest
page = 2
page_size = 10
udt = create(:udt, :with_transactions, published: true)
udt_ckb_transactions = udt.ckb_transactions.order(block_timestamp: :desc).page(page).per(page_size)
udt_ckb_transactions = udt.ckb_transactions.order("block_timestamp desc nulls last, id desc").page(page).per(page_size)

valid_get api_v1_udt_transaction_url(udt.type_hash), params: { page: page }

Expand Down

0 comments on commit b0c6a3a

Please sign in to comment.