git.delta.rocks / unique-network / refs/commits / 122746ff539a

difftreelog

source

primitives/evm-mapping/src/lib.rs1.5 KiBsourcehistory
1// Copyright 2019-2022 Unique Network (Gibraltar) Ltd.2// This file is part of Unique Network.34// Unique Network is free software: you can redistribute it and/or modify5// it under the terms of the GNU General Public License as published by6// the Free Software Foundation, either version 3 of the License, or7// (at your option) any later version.89// Unique Network is distributed in the hope that it will be useful,10// but WITHOUT ANY WARRANTY; without even the implied warranty of11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the12// GNU General Public License for more details.1314// You should have received a copy of the GNU General Public License15// along with Unique Network. If not, see <http://www.gnu.org/licenses/>.1617#![cfg_attr(not(feature = "std"), no_std)]1819use frame_support::sp_runtime::AccountId32;20use sp_core::H160;2122/// Transforms substrate addresses to ethereum (Reverse of `EvmAddressMapping`)23/// pallet_evm doesn't have this, as it only checks if eth address24/// is owned by substrate via `EnsureAddressOrigin` trait25///26/// This trait implementations shouldn't conflict with used `EnsureAddressOrigin`27pub trait EvmBackwardsAddressMapping<AccountId> {28	fn from_account_id(account_id: AccountId) -> H160;29}3031/// Should have same mapping as EnsureAddressTruncated32pub struct MapBackwardsAddressTruncated;33impl EvmBackwardsAddressMapping<AccountId32> for MapBackwardsAddressTruncated {34	fn from_account_id(account_id: AccountId32) -> H160 {35		let mut out = [0; 20];36		out.copy_from_slice(&(account_id.as_ref() as &[u8])[0..20]);37		H160(out)38	}39}