Skip to content

Commit 089c3d2

Browse files
authored
Merge pull request #30 from TheWaWaR/indexer-in-ckb
feat: use ckb-indexer from ckb rpc
2 parents 6bbaf18 + 02ad366 commit 089c3d2

10 files changed

+27
-61
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
2+
# 2.2.0
3+
* **breaking change** Use ckb-indexer from ckb rpc
4+
- `DefaultCellCollector::new` API changed
5+
- remove `IndexerRpcClient::get_indexer_info` rpc method
6+
- rename `IndexerRpcClient::get_tip` to `IndexerRpcClient::get_indexer_tip`
7+
18
# 2.1.0
29
* Support omni-lock supply mode
310
* Use anyhow::Error to replace Box<dyn std::error::Error>

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "ckb-sdk"
3-
version = "2.1.0"
3+
version = "2.2.0"
44
authors = ["Linfeng Qian <[email protected]>", "Nervos Core Dev <[email protected]>"]
55
edition = "2018"
66
license = "MIT"
@@ -44,7 +44,7 @@ ckb-mock-tx-types = { version = "0.4.0", optional = true }
4444
ckb-chain-spec = { version = "=0.104.0", optional = true }
4545
ckb-script = { version = "=0.104.0", optional = true }
4646

47-
sparse-merkle-tree = "0.5.3"
47+
sparse-merkle-tree = "0.5.4"
4848
lazy_static = "1.3.0"
4949

5050
[features]

examples/transfer_from_multisig.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,10 +81,6 @@ struct GenTxArgs {
8181
/// CKB rpc url
8282
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8114")]
8383
ckb_rpc: String,
84-
85-
/// CKB indexer rpc url
86-
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8116")]
87-
ckb_indexer: String,
8884
}
8985

9086
#[derive(Args)]
@@ -246,8 +242,7 @@ fn build_transfer_tx(
246242
DefaultCellDepResolver::from_genesis(&BlockView::from(genesis_block))?
247243
};
248244
let header_dep_resolver = DefaultHeaderDepResolver::new(args.ckb_rpc.as_str());
249-
let mut cell_collector =
250-
DefaultCellCollector::new(args.ckb_indexer.as_str(), args.ckb_rpc.as_str());
245+
let mut cell_collector = DefaultCellCollector::new(args.ckb_rpc.as_str());
251246
let tx_dep_provider = DefaultTransactionDependencyProvider::new(args.ckb_rpc.as_str(), 10);
252247

253248
// Build base transaction

examples/transfer_from_omnilock.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -112,10 +112,6 @@ struct GenTxArgs {
112112
/// CKB rpc url
113113
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8114")]
114114
ckb_rpc: String,
115-
116-
/// CKB indexer rpc url
117-
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8116")]
118-
ckb_indexer: String,
119115
}
120116
#[derive(Args)]
121117
struct SignTxArgs {
@@ -289,8 +285,7 @@ fn build_transfer_tx(
289285
let mut cell_dep_resolver = DefaultCellDepResolver::from_genesis(&genesis_block)?;
290286
cell_dep_resolver.insert(cell.script_id, cell.cell_dep, "Omni Lock".to_string());
291287
let header_dep_resolver = DefaultHeaderDepResolver::new(args.ckb_rpc.as_str());
292-
let mut cell_collector =
293-
DefaultCellCollector::new(args.ckb_indexer.as_str(), args.ckb_rpc.as_str());
288+
let mut cell_collector = DefaultCellCollector::new(args.ckb_rpc.as_str());
294289
let tx_dep_provider = DefaultTransactionDependencyProvider::new(args.ckb_rpc.as_str(), 10);
295290

296291
// Build base transaction

examples/transfer_from_omnilock_ethereum.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -113,10 +113,6 @@ struct GenTxArgs {
113113
/// CKB rpc url
114114
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8114")]
115115
ckb_rpc: String,
116-
117-
/// CKB indexer rpc url
118-
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8116")]
119-
ckb_indexer: String,
120116
}
121117
#[derive(Args)]
122118
struct SignTxArgs {
@@ -296,8 +292,7 @@ fn build_transfer_tx(
296292
let mut cell_dep_resolver = DefaultCellDepResolver::from_genesis(&genesis_block)?;
297293
cell_dep_resolver.insert(cell.script_id, cell.cell_dep, "Omni Lock".to_string());
298294
let header_dep_resolver = DefaultHeaderDepResolver::new(args.ckb_rpc.as_str());
299-
let mut cell_collector =
300-
DefaultCellCollector::new(args.ckb_indexer.as_str(), args.ckb_rpc.as_str());
295+
let mut cell_collector = DefaultCellCollector::new(args.ckb_rpc.as_str());
301296
let tx_dep_provider = DefaultTransactionDependencyProvider::new(args.ckb_rpc.as_str(), 10);
302297

303298
// Build base transaction

examples/transfer_from_omnilock_multisig.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,10 +140,6 @@ struct GenTxArgs {
140140
/// CKB rpc url
141141
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8114")]
142142
ckb_rpc: String,
143-
144-
/// CKB indexer rpc url
145-
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8116")]
146-
ckb_indexer: String,
147143
}
148144
#[derive(Args)]
149145
struct SignTxArgs {
@@ -345,8 +341,7 @@ fn build_transfer_tx(
345341
let mut cell_dep_resolver = DefaultCellDepResolver::from_genesis(&genesis_block)?;
346342
cell_dep_resolver.insert(cell.script_id, cell.cell_dep, "Omni Lock".to_string());
347343
let header_dep_resolver = DefaultHeaderDepResolver::new(args.ckb_rpc.as_str());
348-
let mut cell_collector =
349-
DefaultCellCollector::new(args.ckb_indexer.as_str(), args.ckb_rpc.as_str());
344+
let mut cell_collector = DefaultCellCollector::new(args.ckb_rpc.as_str());
350345
let tx_dep_provider = DefaultTransactionDependencyProvider::new(args.ckb_rpc.as_str(), 10);
351346

352347
// Build base transaction

examples/transfer_from_sighash.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,6 @@ struct Args {
4747
/// CKB rpc url
4848
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8114")]
4949
ckb_rpc: String,
50-
51-
/// CKB indexer rpc url
52-
#[clap(long, value_name = "URL", default_value = "http://127.0.0.1:8116")]
53-
ckb_indexer: String,
5450
}
5551

5652
fn main() -> Result<(), Box<dyn StdErr>> {
@@ -114,8 +110,7 @@ fn build_transfer_tx(
114110
DefaultCellDepResolver::from_genesis(&BlockView::from(genesis_block))?
115111
};
116112
let header_dep_resolver = DefaultHeaderDepResolver::new(args.ckb_rpc.as_str());
117-
let mut cell_collector =
118-
DefaultCellCollector::new(args.ckb_indexer.as_str(), args.ckb_rpc.as_str());
113+
let mut cell_collector = DefaultCellCollector::new(args.ckb_rpc.as_str());
119114
let tx_dep_provider = DefaultTransactionDependencyProvider::new(args.ckb_rpc.as_str(), 10);
120115

121116
// Build the transaction

src/rpc/ckb_indexer.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,6 @@ pub struct CellsCapacity {
8383
pub block_number: BlockNumber,
8484
}
8585

86-
#[derive(Deserialize, Clone, Debug)]
87-
pub struct IndexerInfo {
88-
pub version: String,
89-
}
90-
9186
#[derive(Deserialize, Clone, Debug)]
9287
pub struct Cell {
9388
pub output: CellOutput,
@@ -131,9 +126,8 @@ pub struct Pagination<T> {
131126
}
132127

133128
crate::jsonrpc!(pub struct IndexerRpcClient {
134-
pub fn get_tip(&mut self) -> Option<Tip>;
129+
pub fn get_indexer_tip(&mut self) -> Option<Tip>;
135130
pub fn get_cells(&mut self, search_key: SearchKey, order: Order, limit: Uint32, after: Option<JsonBytes>) -> Pagination<Cell>;
136131
pub fn get_transactions(&mut self, search_key: SearchKey, order: Order, limit: Uint32, after: Option<JsonBytes>) -> Pagination<Tx>;
137132
pub fn get_cells_capacity(&mut self, search_key: SearchKey) -> Option<CellsCapacity>;
138-
pub fn get_indexer_info(&mut self) -> IndexerInfo;
139133
});

src/traits/default_impls.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,8 @@ pub struct DefaultCellCollector {
250250
}
251251

252252
impl DefaultCellCollector {
253-
pub fn new(indexer_client: &str, ckb_client: &str) -> DefaultCellCollector {
254-
let indexer_client = IndexerRpcClient::new(indexer_client);
253+
pub fn new(ckb_client: &str) -> DefaultCellCollector {
254+
let indexer_client = IndexerRpcClient::new(ckb_client);
255255
let ckb_client = CkbRpcClient::new(ckb_client);
256256
DefaultCellCollector {
257257
indexer_client,
@@ -280,7 +280,7 @@ impl DefaultCellCollector {
280280
for _ in 0..100 {
281281
match self
282282
.indexer_client
283-
.get_tip()
283+
.get_indexer_tip()
284284
.map_err(|err| CellCollectorError::Internal(err.into()))?
285285
{
286286
Some(Tip { block_number, .. }) => {

src/unlock/rc_data.rs

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ lazy_static! {
2323
]);
2424
}
2525

26+
#[allow(clippy::upper_case_acronyms)]
2627
type SMT = SparseMerkleTree<CKBBlake2bHasher, SmtH256, DefaultStore<SmtH256>>;
2728
pub type Result<T> = ::core::result::Result<T, RcDataError>;
2829

@@ -109,18 +110,6 @@ impl RcRuleDataBuilder {
109110
*self.smt.root()
110111
}
111112

112-
/// get the proof of the proof_pairs.
113-
fn proof(&self, proof_pairs: &[(SmtH256, SmtH256)]) -> Result<Vec<u8>> {
114-
let proof = self
115-
.smt
116-
.merkle_proof(proof_pairs.iter().map(|(k, _)| *k).collect())
117-
.map_err(|err| RcDataError::BuildTree(err.to_string()))?;
118-
let compiled_proof = proof
119-
.compile(proof_pairs.to_vec())
120-
.map_err(|e| RcDataError::CompileProof(e.to_string()))?;
121-
Ok(compiled_proof.into())
122-
}
123-
124113
/// Build smt with the given hashes
125114
/// # Arguments
126115
/// * `hashes` The given the hashes.
@@ -136,13 +125,14 @@ impl RcRuleDataBuilder {
136125
/// # Return
137126
/// The smt_tree root and the proofs of the proof_keys.
138127
pub fn proof_keys(&mut self, keys: &[SmtH256]) -> Result<Vec<u8>> {
139-
let proof_v = match self.list_type {
140-
ListType::White => *SMT_EXISTING,
141-
ListType::Black => *SMT_NOT_EXISTING,
142-
};
143-
let proof_pairs: Vec<(SmtH256, SmtH256)> =
144-
keys.iter().map(|hash| (*hash, proof_v)).collect();
145-
self.proof(&proof_pairs)
128+
let proof = self
129+
.smt
130+
.merkle_proof(keys.to_vec())
131+
.map_err(|err| RcDataError::BuildTree(err.to_string()))?;
132+
let compiled_proof = proof
133+
.compile(keys.to_vec())
134+
.map_err(|e| RcDataError::CompileProof(e.to_string()))?;
135+
Ok(compiled_proof.into())
146136
}
147137

148138
/// Build the rc_rule after key/value pairs are set.

0 commit comments

Comments
 (0)