mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-27 01:07:57 +00:00
Storage chains: serve transactions over IPFS/bitswap (#7963)
* IPFS server for transactions * Style * Indent * Log message * CLI option * Apply suggestions from code review Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com> * Style * Style * Minor fixes Co-authored-by: Pierre Krieger <pierre.krieger1708@gmail.com>
This commit is contained in:
@@ -448,20 +448,6 @@ impl<Block: BlockT> BlockchainDb<Block> {
|
||||
header.digest().log(DigestItem::as_changes_trie_root)
|
||||
.cloned()))
|
||||
}
|
||||
|
||||
fn extrinsic(&self, hash: &Block::Hash) -> ClientResult<Option<Block::Extrinsic>> {
|
||||
match self.db.get(columns::TRANSACTION, hash.as_ref()) {
|
||||
Some(ex) => {
|
||||
match Decode::decode(&mut &ex[..]) {
|
||||
Ok(ex) => Ok(Some(ex)),
|
||||
Err(err) => Err(sp_blockchain::Error::Backend(
|
||||
format!("Error decoding extrinsic {}: {}", hash, err)
|
||||
)),
|
||||
}
|
||||
},
|
||||
None => Ok(None),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<Block: BlockT> sc_client_api::blockchain::HeaderBackend<Block> for BlockchainDb<Block> {
|
||||
@@ -532,7 +518,7 @@ impl<Block: BlockT> sc_client_api::blockchain::Backend<Block> for BlockchainDb<B
|
||||
match Vec::<Block::Hash>::decode(&mut &body[..]) {
|
||||
Ok(hashes) => {
|
||||
let extrinsics: ClientResult<Vec<Block::Extrinsic>> = hashes.into_iter().map(
|
||||
|h| self.extrinsic(&h) .and_then(|maybe_ex| maybe_ex.ok_or_else(
|
||||
|h| self.extrinsic(&h).and_then(|maybe_ex| maybe_ex.ok_or_else(
|
||||
|| sp_blockchain::Error::Backend(
|
||||
format!("Missing transaction: {}", h))))
|
||||
).collect();
|
||||
@@ -576,6 +562,24 @@ impl<Block: BlockT> sc_client_api::blockchain::Backend<Block> for BlockchainDb<B
|
||||
fn children(&self, parent_hash: Block::Hash) -> ClientResult<Vec<Block::Hash>> {
|
||||
children::read_children(&*self.db, columns::META, meta_keys::CHILDREN_PREFIX, parent_hash)
|
||||
}
|
||||
|
||||
fn extrinsic(&self, hash: &Block::Hash) -> ClientResult<Option<Block::Extrinsic>> {
|
||||
match self.db.get(columns::TRANSACTION, hash.as_ref()) {
|
||||
Some(ex) => {
|
||||
match Decode::decode(&mut &ex[..]) {
|
||||
Ok(ex) => Ok(Some(ex)),
|
||||
Err(err) => Err(sp_blockchain::Error::Backend(
|
||||
format!("Error decoding extrinsic {}: {}", hash, err)
|
||||
)),
|
||||
}
|
||||
},
|
||||
None => Ok(None),
|
||||
}
|
||||
}
|
||||
|
||||
fn have_extrinsic(&self, hash: &Block::Hash) -> ClientResult<bool> {
|
||||
Ok(self.db.contains(columns::TRANSACTION, hash.as_ref()))
|
||||
}
|
||||
}
|
||||
|
||||
impl<Block: BlockT> sc_client_api::blockchain::ProvideCache<Block> for BlockchainDb<Block> {
|
||||
|
||||
@@ -401,7 +401,13 @@ pub fn read_meta<Block>(db: &dyn Database<DbHash>, col_header: u32) -> Result<
|
||||
}
|
||||
{
|
||||
let hash = header.hash();
|
||||
debug!("DB Opened blockchain db, fetched {} = {:?} ({})", desc, hash, header.number());
|
||||
debug!(
|
||||
target: "db",
|
||||
"Opened blockchain db, fetched {} = {:?} ({})",
|
||||
desc,
|
||||
hash,
|
||||
header.number()
|
||||
);
|
||||
Ok((hash, *header.number()))
|
||||
} else {
|
||||
Ok((genesis_hash.clone(), Zero::zero()))
|
||||
|
||||
Reference in New Issue
Block a user