Доступ к внешним данным субстрата внутри конструктора блоков

#rust #substrate #polkadot

Вопрос:

Во время построения блока из внешних данных в block-builder мне нужно получить доступ к отдельным внешним данным, а именно к идентификатору подписывающего лица и nonce. Я предполагаю, что эти данные являются частью SignaturePayload Extrinsic признака, но не могу найти способ их получить.

 pub fn build(mut self) -> Result<BuiltBlock<Block, backend::StateBackendFor<B, Block>>, Error> {
    let extrinsics = self.extrinsics.clone();
    extrinsics.into_iter().for_each(|xt| {
        // Here I'm trying to get the data from the extrinsic, something like:
        // let nonce = xt.nonce;
        // let account_id = xt.account_id;
    }

    // The rest of the build function logic
}
 

Как я могу получить идентификатор учетной записи подписавшего и его номер здесь?

Комментарии:

1. Я могу продолжить расследование и протестировать, но я бы подумал, что ensure_signed! макрос, как он используется в палете балансов , должен соответствовать этому варианту использования.

2. Могу ли я использовать ensure_signed вне среды выполнения? Если да, то я не понимаю, как его использовать, чтобы получить nonce