Skip to content
This repository has been archived by the owner on Apr 9, 2024. It is now read-only.

Commit

Permalink
feat(rpc): add extra para in rpc get_balance (#450)
Browse files Browse the repository at this point in the history
* add extra::ExtraType in rpc get_balance

* add test test_dao_get_balance

* rm unused code.

* update rpc readme
  • Loading branch information
EthanYuan committed Oct 8, 2022
1 parent 0331ef9 commit 0e06dfc
Show file tree
Hide file tree
Showing 12 changed files with 169 additions and 13 deletions.
5 changes: 5 additions & 0 deletions core/rpc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ The error code ranges are as follows:
- `item`: [`JsonItem`](#type-jsonitem)
- `asset_infos`: `Array<`[`AssetInfo`](#type-assetinfo)`>`
- `tip_block_number`: [`BlockNumber`](#type-blocknumber)`|null`
- `extra`: `"Dao"|"Cellbase"|null`
- result
- `tip_block_number`: [`BlockNumber`](#type-blocknumber)
- `balances`: `Array<`[`Balance`](#type-balance)`>`
Expand All @@ -135,6 +136,10 @@ To return the balance of specified assets for the given item.
- If `tip_block_number` is not null, the query is based on the historical blockchain with the specified tip.
- `asset_infos` - Specify a set of asset types for the query.
- If `asset_infos` is empty, the query returns the balance of any asset matching the query parameters.
- `extra` - Specify the filter applying to the querying.
- If `extra` is null, the query does not apply extra filter.
- If `extra` is `Dao`, the query will filter and keep the balance of cells that satisfy `type script` as `Dao`.
- If `extra` is `Cellbase`, the query will filter and keep the balance of cells satisfying `Cellbase`.

**Returns**

Expand Down
2 changes: 1 addition & 1 deletion core/rpc/core/src/impl/query.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ impl<C: CkbRpc> MercuryRpcImpl<C> {
payload.tip_block_number.map(Into::into),
tip_epoch_number.clone(),
None,
None,
payload.extra,
&mut PaginationRequest::default(),
)
.await?;
Expand Down
1 change: 1 addition & 0 deletions core/rpc/types/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -323,6 +323,7 @@ pub struct BurnInfo {
pub struct GetBalancePayload {
pub item: JsonItem,
pub asset_infos: HashSet<AssetInfo>,
pub extra: Option<ExtraType>,
pub tip_block_number: Option<BlockNumber>,
}

Expand Down
10 changes: 0 additions & 10 deletions core/storage/src/relational/insert.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,6 @@ pub const BLAKE_160_HSAH_LEN: usize = 20;
pub const IO_TYPE_INPUT: u8 = 0;
pub const IO_TYPE_OUTPUT: u8 = 1;

#[macro_export]
macro_rules! save_batch_slice {
($tx: expr$ (, $table: expr)*) => {{
$(if $tx.save_batch_slice(&$table, BATCH_SIZE_THRESHOLD, &[]).await.is_err() {
$tx.rollback().await?;
return Ok(());
})*
}};
}

impl RelationalStorage {
pub(crate) async fn insert_block_table(
&self,
Expand Down
3 changes: 3 additions & 0 deletions integration/src/tests/build_adjust_account_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ fn test_adjust_account() {
let payload = GetBalancePayload {
item: JsonItem::Address(acp_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let response = mercury_client.get_balance(payload.clone()).unwrap();
Expand Down Expand Up @@ -79,6 +80,7 @@ fn test_adjust_account_pw_lock() {
let payload = GetBalancePayload {
item: JsonItem::Address(pw_lock_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let response = mercury_client.get_balance(payload.clone()).unwrap();
Expand Down Expand Up @@ -144,6 +146,7 @@ fn test_adjust_account_from_multi() {
let payload = GetBalancePayload {
item: JsonItem::Address(acp_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let response = mercury_client.get_balance(payload.clone()).unwrap();
Expand Down
4 changes: 4 additions & 0 deletions integration/src/tests/build_dao_related_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ fn test_dao_by_address() {
let balance_payload = GetBalancePayload {
item: JsonItem::Address(address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(balance_payload.clone()).unwrap();
Expand Down Expand Up @@ -193,6 +194,7 @@ fn test_dao_pool_money() {
let balance_payload = GetBalancePayload {
item: JsonItem::Address(address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(balance_payload).unwrap();
Expand Down Expand Up @@ -257,6 +259,7 @@ fn test_dao_by_out_point() {
let balance_payload_1 = GetBalancePayload {
item: JsonItem::Address(address_1.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client
Expand All @@ -270,6 +273,7 @@ fn test_dao_by_out_point() {
let balance_payload_2 = GetBalancePayload {
item: JsonItem::Address(address_2.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client
Expand Down
5 changes: 5 additions & 0 deletions integration/src/tests/build_simple_transfer_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ fn test_simple_transfer_ckb() {
let payload = GetBalancePayload {
item: JsonItem::Address(to_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -67,6 +68,7 @@ fn test_simple_transfer_ckb() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let from_balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -130,6 +132,7 @@ fn test_simple_transfer_udt_to_provide_capacity() {
let payload = GetBalancePayload {
item: JsonItem::Identity(hex::encode(to_identity.0)),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -201,6 +204,7 @@ fn test_simple_transfer_udt_from_provide_capacity() {
let payload = GetBalancePayload {
item: JsonItem::Identity(hex::encode(to_identity.0)),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -212,6 +216,7 @@ fn test_simple_transfer_udt_from_provide_capacity() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let from_balance = mercury_client.get_balance(payload).unwrap();
Expand Down
2 changes: 2 additions & 0 deletions integration/src/tests/build_sudt_issue_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ fn test_issue_udt_from_provide_capacity() {
let payload_to = GetBalancePayload {
item: JsonItem::Identity(to_identity.encode()),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload_to).unwrap();
Expand Down Expand Up @@ -110,6 +111,7 @@ fn test_issue_udt_from_multi_item() {
let payload_to = GetBalancePayload {
item: JsonItem::Identity(to_identity.encode()),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload_to.clone()).unwrap();
Expand Down
21 changes: 21 additions & 0 deletions integration/src/tests/build_transfer_transaction_ckb.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ fn test_transfer_ckb_from_provide_capacity() {
let payload = GetBalancePayload {
item: JsonItem::Address(to_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -65,6 +66,7 @@ fn test_transfer_ckb_from_provide_capacity() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let from_balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -131,6 +133,7 @@ fn test_transfer_ckb_to_provide_capacity() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let from_balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -181,6 +184,7 @@ fn test_change_to_new_output() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address_1.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -189,6 +193,7 @@ fn test_change_to_new_output() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_acp_address_1.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -226,6 +231,7 @@ fn test_change_to_new_output() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address_2.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -295,6 +301,7 @@ fn test_transfer_ckb_from_provide_capacity_out_point() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_2_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -343,6 +350,7 @@ fn test_transfer_ckb_from_provide_capacity_to_acp_address() {
let payload = GetBalancePayload {
item: JsonItem::Address(to_acp_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -390,6 +398,7 @@ fn test_transfer_ckb_from_provide_capacity_pay_fee_to() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let from_balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -408,6 +417,7 @@ fn test_transfer_ckb_from_provide_capacity_pay_fee_to() {
let payload = GetBalancePayload {
item: JsonItem::Address(to_address_secp.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -471,6 +481,7 @@ fn test_transfer_ckb_to_provide_capacity_to_pay_fee() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -486,6 +497,7 @@ fn test_transfer_ckb_to_provide_capacity_to_pay_fee() {
let payload = GetBalancePayload {
item: JsonItem::Address(to_acp_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -543,6 +555,7 @@ fn test_change_to_new_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address_1.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -551,6 +564,7 @@ fn test_change_to_new_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_acp_address_1.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -590,6 +604,7 @@ fn test_change_to_new_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address_3.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -601,6 +616,7 @@ fn test_change_to_new_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_acp_address_2.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -614,6 +630,7 @@ fn test_change_to_new_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_acp_address_1.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -674,6 +691,7 @@ fn test_change_need_pool() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address_2.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -756,6 +774,7 @@ fn test_change_to_output_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address_3.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -765,6 +784,7 @@ fn test_change_to_output_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_acp_address_2.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -780,6 +800,7 @@ fn test_change_to_output_acp() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_acp_address_1.to_string()),
asset_infos: asset_infos.clone(),
extra: None,
tip_block_number: None,
};
let balance = mercury_client.get_balance(payload).unwrap();
Expand Down
4 changes: 4 additions & 0 deletions integration/src/tests/build_transfer_transaction_ckb_pw.rs
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ fn test_transfer_ckb_from_provide_capacity_pw() {
let payload = GetBalancePayload {
item: JsonItem::Address(to_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -61,6 +62,7 @@ fn test_transfer_ckb_from_provide_capacity_pw() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let from_balance = mercury_client.get_balance(payload).unwrap();
Expand Down Expand Up @@ -111,6 +113,7 @@ fn test_transfer_ckb_from_provide_capacity_pw_pay_fee_to() {
let payload = GetBalancePayload {
item: JsonItem::Address(to_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let to_balance = mercury_client.get_balance(payload).unwrap();
Expand All @@ -126,6 +129,7 @@ fn test_transfer_ckb_from_provide_capacity_pw_pay_fee_to() {
let payload = GetBalancePayload {
item: JsonItem::Address(from_address.to_string()),
asset_infos,
extra: None,
tip_block_number: None,
};
let from_balance = mercury_client.get_balance(payload).unwrap();
Expand Down
Loading

0 comments on commit 0e06dfc

Please sign in to comment.