如何访问从链下工作人员发送到托盘的信息并将其发送回链 Substrate Pallet V2

问题描述

我有一个托盘实现如下

#[pallet::storage]
#[pallet::getter(fn get_paper_document)]
pub(super) type PaperDocument<T: Config> = StorageMap<
    _,Blake2_128Concat,(T::AccountId,Vec<u8>),(T::Moment,Vec<u8>,T::BlockNumber),ValueQuery
>;

#[pallet::error]
pub enum Error<T> {
    PaperExists,}


#[pallet::weight(0)]
pub fn insert_paper_document(
    origin: OriginFor<T>,paper_document: Vec<u8>,paper_hex: Vec<u8>,paper_hash: Vec<u8>,) -> dispatchResultWithPostInfo {
    let origin_account = ensure_signed(origin);
    let  p = origin_account.unwrap();


    let block_number = <frame_system::Module<T>>::block_number();
    let time = <pallet_timestamp::Module<T>>::get();


    let acc = Self::get_paper_document((p.clone(),paper_hash.clone()));
    ensure!(!PaperDocument::<T>::contains_key(
        &(p.clone(),paper_hash.clone())
    ),Error::<T>::PaperExists);

    // DO NOT PANIC!
    let paper_str = match str::from_utf8(&*paper_document) {
        | Ok(v) => v,| Err(e) => "",};

    PaperDocument::<T>::insert(
        (p.clone(),paper_hash.clone()),(time,paper_document,block_number)
    );

    Ok(().into())
}


#[pallet::hooks]
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {

    fn offchain_worker(block_number: T::BlockNumber) {
        log::info!("Hello World from offchain workers!");
        log::info!("{:?}",block_number);
    }
}

我需要访问发送的数据 对 insert_paper_document 的 RPC 调用 来自链下工作人员,对其进行处理,然后 将其保存到 onchain 存储中。 有什么例子可以做 这与基板托盘 v2?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)