#[pallet::weight(0)]
pub fn create_claim(
origin: OriginFor<T>,
claim: Vec<u8>
) -> DispatchResultWithPostInfo {
let sender = ensure_signed(origin)?;
ensure!(!Proofs::<T>::contains_key(&claim), Error::<T>::ProofAlreadyExist);
Proofs::<T>::insert(
&claim,
(sender.clone(),frame_system::Pallet::<T>::block_number())
);
Self::deposit_event(Event::ClaimCreated(sender, claim));
Ok(().into())
}
#[pallet::weight(0)]
pub fn revoke_claim(
origin: OriginFor<T>,
claim: Vec<u8>
) -> DispatchResultWithPostInfo {
let sender = ensure_signed(origin)?;
let (owner, _) = Proofs::<T>::get(&claim).ok_or(Error::<T>::ClaimNotExist)?;
ensure!(owner == sender, Error::<T>::NotClaimOwner);
Proofs::<T>::remove(&claim);
Self::deposit_event(Event::ClaimRevoked(sender, claim));
Ok(().into())
}
#[pallet::weight(0)]
pub fn translate_claim(
dest: OriginFor<T>,
claim: Vec<u8>
) -> DispatchResultWithPostInfo {
let receiver = ensure_signed(dest)?;
let (_, _) = Proofs::<T>::get(&claim).ok_or(Error::<T>::ClaimNotExist)?;
Proofs::<T>::mutate(&claim, |d| match d {
Some(data) => *data = (receiver.clone(),frame_system::Pallet::<T>::block_number()),
_ => (),
});
Self::deposit_event(Event::ClaimTraslated(receiver, claim));
Ok(().into())
}