Измените Aura на ошибку Babe при использовании frontier pallet-ethereum и pallet-evm

Я пытаюсь вставить ethereum-pallet в свой собственный проект, следуя шаблону узла Frontier.

При изменении Arua на Babe произошла ошибка компиляции. Я не знаю, как это исправить сейчас.

Код на границе:

pub struct EthereumFindAuthor<F>(PhantomData<F>);
impl<F: FindAuthor<u32>> FindAuthor<H160> for EthereumFindAuthor<F>
{
    fn find_author<'a, I>(digests: I) -> Option<H160> where
        I: 'a + IntoIterator<Item=(ConsensusEngineId, &'a [u8])>
    {
        if let Some(author_index) = F::find_author(digests) {
            let authority_id = Aura::authorities()[author_index as usize].clone();
            return Some(H160::from_slice(&authority_id.to_raw_vec()[4..24]));
        }
        None
    }
}

impl frame_ethereum::Trait for Runtime {
    type Event = Event;
    type FindAuthor = EthereumFindAuthor<Aura>;
}

Эти коды работают нормально.

Код, над которым я работаю:

Я просто заменяю это Arua с участием Babe.

node-template/runtime/src/lib.rs
pub struct EthereumFindAuthor<F>(PhantomData<F>);
impl<F: FindAuthor<u32>> FindAuthor<H160> for EthereumFindAuthor<F>
{
    fn find_author<'a, I>(digests: I) -> Option<H160> where
        I: 'a + IntoIterator<Item=(ConsensusEngineId, &'a [u8])>
    {
        if let Some(author_index) = F::find_author(digests) {
            let authority_id = Babe::authorities()[author_index as usize].clone();
            return Some(H160::from_slice(&authority_id.0.to_raw_vec()[4..24]));
        }
        None
    }
}

impl frame_ethereum::Trait for Runtime {
    type Event = Event;
    type FindAuthor = EthereumFindAuthor<Babe>;
}

ошибка:

  error[E0277]: the trait bound `EthereumFindAuthor<pallet_babe::Module<Runtime>>: frame_support::traits::FindAuthor<sp_core::H160>` is not satisfied
     --> /home/wpf/working/github/darwinia-fork/darwinia-common/bin/node-template/runtime/src/lib.rs:665:20
      |
  665 |     type FindAuthor = EthereumFindAuthor<Babe>;
      |                       ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `frame_support::traits::FindAuthor<sp_core::H160>` is not implemented for `EthereumFindAuthor<pallet_babe::Module<Runtime>>`
      | 
     ::: /home/wpf/.cargo/git/checkouts/frontier-fc3e77a5f0fa55ab/c288899/frame/ethereum/src/lib.rs:60:22
      |
  60  |     type FindAuthor: FindAuthor<H160>;
      |                      ---------------- required by this bound in `pallet_ethereum::Trait`

0 ответов

Другие вопросы по тегам