如何结合 AccounId 和时间戳为 Substrate 中的 Storage 映射创建一个新键

How to combine AccounId and the time stamp to create a new key for Storage map in Substrate

我正在尝试通过组合帐户 ID 和时间戳

创建一个新的密钥来将数据存储到 StorageMap

我不确定如何获取帐户的字符串表示并连接时间戳

let origin_account = ensure_signed(origin);
let time = <pallet_timestamp::Module<T>>::get();

听起来您想使用以下两种方式之一:

  1. 使用元组将两条信息表示为单个键:
/// Any signal messages waiting to be sent.
#[pallet::storage]
pub(super) type MyMap<T: Config> = StorageMap<
    _,
    Blake2_128Concat,
    (T::AccountId, T::Moment), // <--- key will be a tuple of the two data
    ValueType,
>;

let origin_account = ensure_signed(origin)?;
let time = <pallet_timestamp::Module<T>>::get();
let value = 99;
MyMap::<T>::insert((origin_account, time), value);
  1. 或者您想使用双映射,它明确支持两个键。
#[pallet::storage]
pub(super) type MyDoubleMap<T: Config> = StorageDoubleMap<
    _,
    Blake2_128Concat,
    T::AccountId, // <-- key 1
    Blake2_128Concat,
    T::Moment, // <-- key 2
    ValueType,
>;

let origin_account = ensure_signed(origin)?;
let time = <pallet_timestamp::Module<T>>::get();
let value = 99;
MyDoubleMap::<T>::insert(origin_account, time, value);