I've implemented unified accounts in a NPoS consensus-based substrate chain, and modified the polkadot-js/apps accordingly as well. The transactions through metamask go through successfully, but I'm getting this (screenshot attached) error on each extrinsic performed through the polkadot-js/apps. These are the types that I've added to polkadot-js/apps/packages/apps-config/src/api/typesBundle.ts:

"types": [
      "minmax": [
      "types": {
        "AccountId": "EthereumAccountId",
        "AccountId20": "EthereumAccountId",
        "AccountId32": "EthereumAccountId",
        "Address": "AccountId",
        "LookupSource": "AccountId",
        "Lookup0": "AccountId",
        "EthereumSignature": {
          "r": "H256",
          "s": "H256",
          "v": "U8"
        "ExtrinsicSignature": "EthereumSignature"

Error Screenshot

  • I think it has something to do with the mappings of the types. The Address type should be mapped to the EthereumAccountId type no?
    – Abdulbee
    Feb 6, 2023 at 11:52
  • same issue with that as well @Abdulbee
    – Discardo
    Feb 6, 2023 at 12:34

1 Answer 1


I've fixed it by making these changes in my runtime:

  1. In the frame_system::Config, changed Lookup from type Lookup = AccountIdLookup<AccountId, ()>; to type Lookup = sp_runtime::traits::IdentityLookup<AccountId>;.
  2. And changed the Address type from pub type Address = sp_runtime::MultiAddress<AccountId, ()>; to pub type Address = AccountId;

where AccountId is the AccountId20.

  • awesome, thanks for sharing this! it just helped me solve the same issue after applying AccountId20 to my chain! May 11, 2023 at 23:50
  • Glad that it helped :)
    – Discardo
    May 13, 2023 at 8:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.