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 at 11:52
  • same issue with that as well @Abdulbee
    – Discardo
    Feb 6 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 at 23:50
  • Glad that it helped :)
    – Discardo
    May 13 at 8:50

Your Answer

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

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