Измените 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`