+{remainingSessions}
@@ -551,7 +551,7 @@ const SessionAvatar = ({ session }: SessionAvatarProps) => {
key={publicKey}
className={cn(
"ring-2 ring-background border-primary relative inline-block rounded-full bg-white",
- sizeClasses["lg"]
+ sizeClasses["lg"],
)}
>
diff --git a/src/containers/wallet_connect/index.tsx b/src/containers/wallet_connect/index.tsx
index 2637a87..23406a5 100644
--- a/src/containers/wallet_connect/index.tsx
+++ b/src/containers/wallet_connect/index.tsx
@@ -1,6 +1,6 @@
"use client";
-import * as React from "react";
+import {useState, useCallback, Fragment} from "react";
import { useSafeEffect } from "@/hooks/useSafeEffect";
import { WalletKitTypes } from "@reown/walletkit";
import { ProposalTypes } from "@walletconnect/types";
@@ -58,30 +58,30 @@ export default function Container({ config, account, wallet }: ContainerProps) {
const [_, actions] = useWalletKit();
const [sessionProposalModal, setSessionProposalModal] =
- React.useState
({
+ useState({
open: false,
params: null,
});
const [personalSignModal, setPersonalSignModal] =
- React.useState({
+ useState({
open: false,
event: null,
});
const [transactionSignModal, setTransactionSignModal] =
- React.useState({
+ useState({
open: false,
event: null,
});
const [sessionAuthenticateModal, setSessionAuthenticateModal] =
- React.useState({
+ useState({
open: false,
message: null,
});
- const onSessionProposal = React.useCallback(
+ const onSessionProposal = useCallback(
async (proposal: WalletKitTypes.SessionProposal) => {
const { params } = proposal;
setSessionProposalModal({
@@ -89,10 +89,10 @@ export default function Container({ config, account, wallet }: ContainerProps) {
params,
});
},
- []
+ [],
);
- const onSessionDisconnect = React.useCallback(async () => {
+ const onSessionDisconnect = useCallback(async () => {
const walletKit = WalletKitService.getWalletKit();
if (!walletKit) return;
@@ -101,7 +101,7 @@ export default function Container({ config, account, wallet }: ContainerProps) {
actions.setActiveSessions(activeSessions);
}, [actions]);
- const onSessionRequest = React.useCallback(
+ const onSessionRequest = useCallback(
async (event: WalletKitTypes.SessionRequest) => {
console.log("event", JSON.stringify(event));
@@ -138,10 +138,10 @@ export default function Container({ config, account, wallet }: ContainerProps) {
variant: "destructive",
});
},
- [toast]
+ [toast],
);
- const onSessionAuthenticate = React.useCallback(
+ const onSessionAuthenticate = useCallback(
async (event: WalletKitTypes.SessionAuthenticate) => {
const authParams = event.params.authPayload;
const message =
@@ -153,7 +153,7 @@ export default function Container({ config, account, wallet }: ContainerProps) {
message,
});
},
- [account]
+ [account],
);
useSafeEffect(() => {
@@ -178,7 +178,7 @@ export default function Container({ config, account, wallet }: ContainerProps) {
}, [onSessionProposal, onSessionDisconnect, onSessionRequest]);
return (
-
+
-
+
);
}
@@ -222,7 +222,7 @@ function SessionProposalModal({
const walletKit = WalletKitService.getWalletKit();
const [_, actions] = useWalletKit();
const { toast } = useToast();
- const [isConnecting, setIsConnecting] = React.useState(false);
+ const [isConnecting, setIsConnecting] = useState(false);
if (!params || !walletKit) return null;
@@ -364,7 +364,7 @@ function PersonalSignModal({
}: PersonalSignModalProps) {
const { event } = modal;
const walletKit = WalletKitService.getWalletKit();
- const [isSigning, setIsSigning] = React.useState(false);
+ const [isSigning, setIsSigning] = useState(false);
const { toast } = useToast();
if (!event || !walletKit) return null;
@@ -547,16 +547,16 @@ function TransactionSignModal({
const walletKit = WalletKitService.getWalletKit();
const { toast } = useToast();
- const [isSigning, setIsSigning] = React.useState(false);
- const [contractLoading, setContractLoading] = React.useState(true);
- const [functionName, setFunctionName] = React.useState(null);
+ const [isSigning, setIsSigning] = useState(false);
+ const [contractLoading, setContractLoading] = useState(true);
+ const [functionName, setFunctionName] = useState(null);
- const fetchContractDetails = React.useCallback(
+ const fetchContractDetails = useCallback(
async (address: string, data: string) => {
try {
const contract = await WalletKitService.getContractDetails(
community,
- address
+ address,
);
const abi = WalletKitService.parseAbi(contract?.ABI ?? "[]");
@@ -566,7 +566,7 @@ function TransactionSignModal({
const functionSelector = encodedTransaction?.data.slice(0, 10);
const functionName = abi.find(
- (item) => item.signature === functionSelector
+ (item) => item.signature === functionSelector,
)?.name;
setFunctionName(functionName ?? null);
@@ -577,7 +577,7 @@ function TransactionSignModal({
setContractLoading(false);
}
},
- [community, event]
+ [community, event],
);
useSafeEffect(() => {
@@ -590,7 +590,7 @@ function TransactionSignModal({
fetchContractDetails(
event.params.request.params[0].to,
- event.params.request.params[0].data
+ event.params.request.params[0].data,
);
}, [event?.params?.request?.params, fetchContractDetails]);
@@ -612,7 +612,7 @@ function TransactionSignModal({
const hash = await wallet.call(
encodedTransaction.to,
encodedTransaction.data,
- encodedTransaction.value
+ encodedTransaction.value,
);
await wallet.waitForTransactionSuccess(hash);
@@ -762,7 +762,7 @@ function SessionAuthenticateModal({
setModal,
}: SessionAuthenticateModalProps) {
const { message } = modal;
- const [isSigning, setIsSigning] = React.useState(false);
+ const [isSigning, setIsSigning] = useState(false);
const onApprove = async () => {
setModal({ open: false, message: null });
diff --git a/src/hooks/theme.ts b/src/hooks/theme.ts
index d0b9667..c0c947a 100644
--- a/src/hooks/theme.ts
+++ b/src/hooks/theme.ts
@@ -6,7 +6,7 @@ export const useThemeUpdater = (community?: ConfigCommunity) => {
if (community?.theme) {
document.documentElement.style.setProperty(
"--primary",
- community.theme.primary
+ community.theme.primary,
);
}
}, [community]);
diff --git a/src/hooks/useFocusEffect.ts b/src/hooks/useFocusEffect.ts
index ef17696..218cf2c 100644
--- a/src/hooks/useFocusEffect.ts
+++ b/src/hooks/useFocusEffect.ts
@@ -4,7 +4,7 @@ import { useSafeEffect } from "./useSafeEffect";
// Custom hook to execute an effect when the page is focused.
export const useFocusEffect = (
effect: EffectCallback, // The effect function to run when the page is focused.
- deps: DependencyList // Dependencies for the effect. If any change, the effect is re-run.
+ deps: DependencyList, // Dependencies for the effect. If any change, the effect is re-run.
) => {
// Use a custom version of useEffect that handles cleanup and dependencies safely.
useSafeEffect(() => {
diff --git a/src/hooks/useScrollableWindow.ts b/src/hooks/useScrollableWindow.ts
index 0d3d953..c8aa323 100644
--- a/src/hooks/useScrollableWindow.ts
+++ b/src/hooks/useScrollableWindow.ts
@@ -15,7 +15,7 @@ const FETCHER_THRESHOLD = 100;
*/
export const useScrollableWindowFetcher = (
fetchFunction: () => Promise,
- refetchDelay = 500
+ refetchDelay = 500,
): MutableRefObject => {
const elementRef = useRef(null);
diff --git a/src/services/account/aes.ts b/src/services/account/aes.ts
index 62daac4..284c6ee 100644
--- a/src/services/account/aes.ts
+++ b/src/services/account/aes.ts
@@ -609,7 +609,7 @@ function convertToInt32(bytes: Uint8Array): Array {
(bytes[i] << 24) |
(bytes[i + 1] << 16) |
(bytes[i + 2] << 8) |
- bytes[i + 3]
+ bytes[i + 3],
);
}
return result;
diff --git a/src/services/account/ethers.ts b/src/services/account/ethers.ts
index d78b07b..0476709 100644
--- a/src/services/account/ethers.ts
+++ b/src/services/account/ethers.ts
@@ -33,13 +33,13 @@ export function getAccount(data: any, _key: string): KeystoreAccount {
const ciphertext = spelunk(data, "crypto.ciphertext:data!");
const computedMAC = hexlify(
- keccak256(concat([key.slice(16, 32), ciphertext]))
+ keccak256(concat([key.slice(16, 32), ciphertext])),
).substring(2);
assertArgument(
computedMAC === spelunk(data, "crypto.mac:string!").toLowerCase(),
"incorrect password",
"password",
- "[ REDACTED ]"
+ "[ REDACTED ]",
);
const privateKey = decrypt(data, key.slice(0, 16), ciphertext);
@@ -61,7 +61,7 @@ export function getAccount(data: any, _key: string): KeystoreAccount {
getAddress(check) === address,
"keystore address/privateKey mismatch",
"address",
- data.address
+ data.address,
);
}
@@ -317,7 +317,7 @@ export function getDecryptKdfParams(data: any): KdfParams {
algorithm === "sha256" || algorithm === "sha512",
"invalid kdf.pdf",
"kdf.pdf",
- prf
+ prf,
);
const count = spelunk(data, "crypto.kdfparams.c:int!");
diff --git a/src/services/account/index.ts b/src/services/account/index.ts
index f6a9422..d1b8bb3 100644
--- a/src/services/account/index.ts
+++ b/src/services/account/index.ts
@@ -42,7 +42,7 @@ export class CWAccount {
const account = await getAccountAddress(
communityConfig,
- connectedWallet.address
+ connectedWallet.address,
);
if (!account) {
@@ -56,7 +56,7 @@ export class CWAccount {
baseUrl: string,
hash: string,
walletPassword: string,
- config: Config
+ config: Config,
) {
const [_, encoded] = hash.split("#/wallet/");
@@ -71,7 +71,7 @@ export class CWAccount {
[account, signer] = await parsePrivateKeyFromHash(
baseUrl,
hash,
- walletPassword
+ walletPassword,
);
if (!account || !signer) {
@@ -117,7 +117,7 @@ export class CWAccount {
this.account,
to,
amount,
- description
+ description,
);
return hash;
@@ -138,7 +138,7 @@ export class CWAccount {
to,
this.account,
dataBytes,
- BigInt(value ?? 0)
+ BigInt(value ?? 0),
);
return hash;
diff --git a/src/services/account/urlAccount.ts b/src/services/account/urlAccount.ts
index 51feea2..9db2db0 100644
--- a/src/services/account/urlAccount.ts
+++ b/src/services/account/urlAccount.ts
@@ -4,7 +4,7 @@ import { getAccount, getDecryptKdfParams, getPassword } from "./ethers";
export const parsePrivateKeyFromHash = async (
baseUrl: string,
hash: string,
- walletPassword: string
+ walletPassword: string,
): Promise<[string, HDNodeWallet | Wallet] | [undefined, undefined]> => {
const encodedURL = new URL(`${baseUrl}/${hash.replace("#/", "")}`);
const encoded = encodedURL.pathname.replace("/wallet/", "");
@@ -15,7 +15,7 @@ export const parsePrivateKeyFromHash = async (
}
const decoded = Buffer.from(encoded.replace("v3-", ""), "base64").toString(
- "utf-8"
+ "utf-8",
);
const [account, encryptedPrivateKey] = decoded.split("|");
@@ -56,7 +56,7 @@ export const parsePrivateKeyFromHash = async (
export const parseLegacyWalletFromHash = async (
baseUrl: string,
hash: string,
- walletPassword: string
+ walletPassword: string,
): Promise => {
const encodedURL = new URL(`${baseUrl}/${hash.replace("#/", "")}`);
const encoded = encodedURL.pathname.replace("/wallet/", "");
@@ -70,7 +70,7 @@ export const parseLegacyWalletFromHash = async (
const wallet = await Wallet.fromEncryptedJson(
encryptedPrivateKey,
- walletPassword
+ walletPassword,
);
return wallet;
@@ -82,7 +82,7 @@ export const parseLegacyWalletFromHash = async (
export const generateWalletHash = async (
account: string,
wallet: HDNodeWallet | Wallet,
- walletPassword: string
+ walletPassword: string,
): Promise => {
const encryptedPrivateKey = await wallet.encrypt(walletPassword);
diff --git a/src/services/config/communities.json b/src/services/config/communities.json
index 0627ed7..9ed0818 100644
--- a/src/services/config/communities.json
+++ b/src/services/config/communities.json
@@ -1,1820 +1,2158 @@
[
- {
- "community": {
- "name": "Citizen Wallet (CTZN)",
- "description": "The token powering the Citizen Wallet economy.",
- "url": "https://citizenwallet.xyz",
- "alias": "ctzn",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/ctzn.svg",
- "theme": {
- "primary": "#9563D3"
- },
- "profile": {
- "address": "0x8dA817724Eb6A2aA47c0F8d8b8A98b9B3C2Ddb68",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0x0D9B0790E97e3426C161580dF4Ee853E4A7C4607",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0x0D9B0790E97e3426C161580dF4Ee853E4A7C4607": {
- "standard": "erc20",
- "name": "Citizen Wallet",
- "address": "0x0D9B0790E97e3426C161580dF4Ee853E4A7C4607",
- "symbol": "CTZN",
- "decimals": 18,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 137,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0x3A3E25871c5C6C84D5f397829FF316a37F7FD596",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "About",
- "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/ctzn.svg",
- "url": "https://citizenwallet.xyz/pay-with-ctzn",
- "launch_mode": "webview"
- }
- ],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/ctzn.json",
- "version": 4
- },
- {
- "community": {
- "name": "Brussels Pay",
- "description": "Open and local payments for Brussels",
- "url": "https://pay.brussels",
- "alias": "wallet.pay.brussels",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/wallet.pay.brussels.png",
- "custom_domain": "wallet.pay.brussels",
- "hidden": false,
- "theme": {
- "primary": "#3331c4"
- },
- "profile": {
- "address": "0x56Cc38bDa01bE6eC6D854513C995f6621Ee71229",
- "chain_id": 100
- },
- "primary_token": {
- "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
- "chain_id": 100
- },
- "primary_account_factory": {
- "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "chain_id": 100
- },
- "primary_card_manager": {
- "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
- "chain_id": 100
- }
- },
- "tokens": {
- "100:0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1": {
- "standard": "erc20",
- "name": "pay.brussels",
- "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
- "symbol": "EURb",
- "decimals": 6,
- "chain_id": 100
- }
- },
- "scan": {
- "url": "https://gnosisscan.io",
- "name": "Gnosis Explorer"
- },
- "accounts": {
- "100:0xBABCf159c4e3186cf48e4a48bC0AeC17CF9d90FE": {
- "chain_id": 100,
- "entrypoint_address": "0xAAEb9DC18aDadae9b3aE7ec2b47842565A81113f",
- "paymaster_address": "0xcA1B9EC1117340818C1c1fdd1B48Ea79E57C140F",
- "account_factory_address": "0xBABCf159c4e3186cf48e4a48bC0AeC17CF9d90FE",
- "paymaster_type": "cw"
- },
- "100:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 100,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0xE69C843898E21C0E95eA7DD310cD850AAc0aB897",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "cards": {
- "100:0x1EaF6B6A6967608aF6c77224f087b042095891EB": {
- "chain_id": 100,
- "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
- "type": "classic"
- },
- "100:0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28": {
- "chain_id": 100,
- "instance_id": "brussels-pay",
- "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
- "type": "safe"
- }
- },
- "chains": {
- "100": {
- "id": 100,
- "node": {
- "url": "https://engine.pay.brussels",
- "ws_url": "wss://engine.pay.brussels"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "Top Up",
- "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/wallet.pay.brussels.png",
- "url": "https://checkout.pay.brussels/topup",
- "action": "topup",
- "signature": true
- }
- ],
- "config_location": "https://wallet.pay.brussels/config/community.json",
- "version": 4
- },
- {
- "community": {
- "name": "Gratitude Token",
- "description": "Express your gratitude towards someone by sending them a token of gratitude.",
- "url": "https://citizenwallet.xyz/gratitude",
- "alias": "gratitude",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/gt.svg",
- "theme": {
- "primary": "#4EC19D"
- },
- "profile": {
- "address": "0xEEc0F3257369c6bCD2Fd8755CbEf8A95b12Bc4c9",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
- "chain_id": 42220
- },
- "primary_card_manager": {
- "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1": {
- "standard": "erc20",
- "name": "Gratitude Token",
- "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
- "symbol": "GT",
- "decimals": 0,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD": {
- "chain_id": 42220,
- "entrypoint_address": "0x985ec7d08D9d15Ea79876E35FAdEFD58A627187E",
- "paymaster_address": "0x8dd43eE72f6A816b8eB0411B712D96cDd95246d8",
- "account_factory_address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
- "paymaster_type": "cw"
- },
- "42220:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 42220,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0xF05ba2641b31AF70c2678e3324eD8b9C53093FbE",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "cards": {
- "42220:0x1EaF6B6A6967608aF6c77224f087b042095891EB": {
- "chain_id": 42220,
- "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
- "type": "classic"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://gratitude.citizenwallet.xyz/config/community.json",
- "version": 4
- },
- {
- "community": {
- "name": "SFLUV Community",
- "description": "A community currency for the city of San Francisco.",
- "url": "https://sfluv.org",
- "alias": "wallet.sfluv.org",
- "custom_domain": "wallet.sfluv.org",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/sfluv.svg",
- "theme": {
- "primary": "#eb6c6c"
- },
- "profile": {
- "address": "0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0x58a2993A618Afee681DE23dECBCF535A58A080BA",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x5e987a6c4bb4239d498E78c34e986acf29c81E8e",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0x58a2993A618Afee681DE23dECBCF535A58A080BA": {
- "standard": "erc20",
- "name": "SFLUV V1.1",
- "address": "0x58a2993A618Afee681DE23dECBCF535A58A080BA",
- "symbol": "SFLUV",
- "decimals": 6,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x5e987a6c4bb4239d498E78c34e986acf29c81E8e": {
- "chain_id": 137,
- "entrypoint_address": "0x2d01C5E40Aa6a8478eD0FFbF2784EBb9bf67C46A",
- "paymaster_address": "0x7FC98D0a2bd7f766bAca37388eB0F6Db37666B33",
- "account_factory_address": "0x5e987a6c4bb4239d498E78c34e986acf29c81E8e",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "About",
- "icon": "https://wallet.sfluv.org/uploads/logo.svg",
- "url": "https://app.sfluv.org",
- "launch_mode": "webview",
- "signature": true,
- "hidden": true
- }
- ],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.sfluv.org.json",
- "version": 4
- },
- {
- "community": {
- "name": "Bolivia Pay",
- "description": "A community for Ethereum Bolivia.",
- "url": "https://www.ethereumbolivia.org",
- "alias": "boliviapay",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/boliviapay.png",
- "theme": {
- "primary": "#009393"
- },
- "profile": {
- "address": "0x898C2737f2Cb52622711A89D85A1D5E0B881BDeA",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0xc2132D05D31c914a87C6611C10748AEb04B58e8F": {
- "standard": "erc20",
- "name": "(PoS) Tether USD",
- "address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
- "symbol": "USDT",
- "decimals": 6,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 137,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0x9a81Bd50D56485Cc863Ecb169812c7a821996C8c",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "config_location": "https://config.internal.citizenwallet.xyz/v4/boliviapay.json",
- "version": 4
- },
- {
- "community": {
- "name": "Breadchain Community Token",
- "description": "BREAD is a digital community token and solidarity primitive developed by Breadchain Cooperative that generates yield for post-capitalist organizations",
- "url": "https://breadchain.xyz/",
- "alias": "bread",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/bread.svg",
- "profile": {
- "address": "0x6b3a1f4277391526413F583c23D5B9EF4d2fE986",
- "chain_id": 100
- },
- "primary_token": {
- "address": "0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3",
- "chain_id": 100
- },
- "primary_account_factory": {
- "address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
- "chain_id": 100
- }
- },
- "tokens": {
- "100:0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3": {
- "standard": "erc20",
- "name": "Breadchain Community Token",
- "address": "0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3",
- "symbol": "BREAD",
- "decimals": 18,
- "chain_id": 100
- }
- },
- "scan": {
- "url": "https://gnosisscan.io",
- "name": "Gnosis Explorer"
- },
- "accounts": {
- "100:0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9": {
- "chain_id": 100,
- "entrypoint_address": "0xcA0a75EF803a364C83c5EAE7Eb889aE7419c9dF2",
- "paymaster_address": "0xbE2Cb3358aa14621134e923B68b8429315368E32",
- "account_factory_address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
- "paymaster_type": "cw"
- },
- "100:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 100,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0x5C41F1114AB13aF5d66bac485924D03556d0cd51",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "chains": {
- "100": {
- "id": 100,
- "node": {
- "url": "https://100.engine.citizenwallet.xyz",
- "ws_url": "wss://100.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "Market",
- "icon": "https://bread.citizenwallet.xyz/uploads/logo.svg",
- "url": "https://marketplace.citizenwallet.xyz/bread",
- "launch_mode": "webview"
- }
- ],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/bread.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "Commons Hub Brussels",
- "description": "Community Token for the Commons Hub Brussels community",
- "url": "https://commonshub.brussels",
- "alias": "wallet.commonshub.brussels",
- "custom_domain": "wallet.commonshub.brussels",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/chb.png",
- "theme": {
- "primary": "#ff4c02"
- },
- "profile": {
- "address": "0xc06bE1BbbeEAF2f34F3d5b76069D2560aee184Ae",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x65DD32834927de9E57E72a3E2130a19f81C6371D",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x307A9456C4057F7C7438a174EFf3f25fc0eA6e87",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x65DD32834927de9E57E72a3E2130a19f81C6371D": {
- "standard": "erc20",
- "name": "Commons Hub Token",
- "address": "0x65DD32834927de9E57E72a3E2130a19f81C6371D",
- "symbol": "CHT",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "CELO Explorer"
- },
- "accounts": {
- "42220:0x307A9456C4057F7C7438a174EFf3f25fc0eA6e87": {
- "chain_id": 42220,
- "entrypoint_address": "0xb7608dDA592d319687C89c4479e320b5a7740117",
- "paymaster_address": "0x4E127A1DAa66568B4a91E8c5615120a6Ea5442E3",
- "account_factory_address": "0x307A9456C4057F7C7438a174EFf3f25fc0eA6e87",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "cards": {
- "42220:0xc0F9e0907C8de79fd5902b61e463dFEdc5dc8570": {
- "chain_id": 42220,
- "address": "0xc0F9e0907C8de79fd5902b61e463dFEdc5dc8570",
- "type": "classic"
- }
- },
- "plugins": [
- {
- "name": "Market",
- "icon": "https://marketplace.citizenwallet.xyz/marketplace.svg",
- "url": "https://marketplace.citizenwallet.xyz/wallet.commonshub.brussels",
- "launch_mode": "webview"
- }
- ],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.commonshub.brussels.json",
- "version": 4
- },
- {
- "community": {
- "name": "Sel de Salm",
- "description": "La communauté de Sel de Salm",
- "url": "https://citizenwallet.xyz/community-currency-documentation/sel-de-salm",
- "alias": "seldesalm",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/myrt.png",
- "theme": {
- "primary": "#6B5CA4"
- },
- "profile": {
- "address": "0x4083724953cC1cC13e76b436149B2b1e1a3E5970",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x83DfEB42347a7Ce46F1497F307a5c156D1f19CB2",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "chain_id": 42220
- },
- "primary_card_manager": {
- "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x83DfEB42347a7Ce46F1497F307a5c156D1f19CB2": {
- "standard": "erc20",
- "name": "Myrtille",
- "address": "0x83DfEB42347a7Ce46F1497F307a5c156D1f19CB2",
- "symbol": "MYRT",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 42220,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0xd07412020dA5054c3b49f47Ca61224637F1703af",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "cards": {
- "42220:0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28": {
- "chain_id": 42220,
- "instance_id": "cw-seldesalm",
- "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
- "type": "safe"
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "Informations Générales",
- "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/myrt.png",
- "url": "https://citizenwallet.xyz/community-currency-documentation/sel-de-salm",
- "launch_mode": "webview"
- },
- {
- "name": "Échanges",
- "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/myrt.png",
- "url": "https://marketplace.citizenwallet.xyz/seldesalm",
- "launch_mode": "webview"
- }
- ],
- "config_location": "https://seldesalm.citizenwallet.xyz/config/community.json",
- "version": 4
- },
- {
- "community": {
- "name": "TECHI",
- "description": "A community for TECHI users",
- "url": "https://my.techi.be",
- "alias": "my.techi.be",
- "logo": "https://my.techi.be/assets/token.svg",
- "hidden": false,
- "theme": {
- "primary": "#617FF8"
- },
- "profile": {
- "address": "0x80C141861607b8FEfD53C9E71a9c7D2D3e2e76dc",
- "chain_id": 100
- },
- "primary_token": {
- "address": "0x01D0E7117510b371Ac38f52Cc6689ff8875280FA",
- "chain_id": 100
- },
- "primary_account_factory": {
- "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "chain_id": 100
- },
- "primary_card_manager": {
- "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
- "chain_id": 100
- }
- },
- "tokens": {
- "100:0x01D0E7117510b371Ac38f52Cc6689ff8875280FA": {
- "standard": "erc20",
- "name": "TECHI",
- "address": "0x01D0E7117510b371Ac38f52Cc6689ff8875280FA",
- "symbol": "TECHI",
- "decimals": 6,
- "chain_id": 100
- }
- },
- "scan": {
- "url": "https://gnosisscan.io",
- "name": "Gnosis Explorer"
- },
- "accounts": {
- "100:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 100,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0x68c5a20f233264DB124a3c95a200bbD20b3b9762",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "chains": {
- "100": {
- "id": 100,
- "node": {
- "url": "https://engine.my.techi.be",
- "ws_url": "wss://engine.my.techi.be"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://my.techi.be/assets/community.json",
- "version": 4
- },
- {
- "community": {
- "name": "Regens Unite",
- "description": "A community currency for the Regens Unite community.",
- "url": "https://www.regensunite.earth/",
- "alias": "wallet.regensunite.earth",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/rgn.svg",
- "custom_domain": "wallet.regensunite.earth",
- "hidden": true,
- "profile": {
- "address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x9406Cc6185a346906296840746125a0E44976454",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e": {
- "standard": "erc20",
- "name": "Regens Unite Token",
- "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
- "symbol": "RGN",
- "decimals": 6,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x9406Cc6185a346906296840746125a0E44976454": {
- "chain_id": 137,
- "entrypoint_address": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
- "paymaster_address": "0x250711045d58b6310f0635C7D110BFe663cE1da5",
- "account_factory_address": "0x9406Cc6185a346906296840746125a0E44976454",
- "paymaster_type": "payg",
- "gas_extra_percentage": 50
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.regensunite.earth.json",
- "version": 4
- },
- {
- "community": {
- "name": "Gratitude Token",
- "description": "Express your gratitude towards someone by sending them a token.",
- "url": "https://citizenwallet.xyz/gratitude",
- "alias": "gt.celo",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/gt.svg",
- "custom_domain": null,
- "hidden": true,
- "theme": {
- "primary": "#a256ff"
- },
- "profile": {
- "address": "0xEEc0F3257369c6bCD2Fd8755CbEf8A95b12Bc4c9",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1": {
- "standard": "erc20",
- "name": "Gratitude Token",
- "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
- "symbol": "GT",
- "decimals": 0,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD": {
- "chain_id": 42220,
- "entrypoint_address": "0x985ec7d08D9d15Ea79876E35FAdEFD58A627187E",
- "paymaster_address": "0x8dd43eE72f6A816b8eB0411B712D96cDd95246d8",
- "account_factory_address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/gt.celo.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "Celo Euro",
- "description": "Celo Euro is a stablecoin for the Celo Community.",
- "url": "https://celo.org/",
- "alias": "ceur.celo",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/ceur.svg",
- "hidden": true,
- "theme": {
- "primary": "#a256ff"
- },
- "profile": {
- "address": "0x0334C579E61aF6922D5deFEF02A361FBb2D6f406",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0xdA529eBEd3D459dac9d9D3D45b8Cae2D5796c098",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73": {
- "standard": "erc20",
- "name": "Celo Euro",
- "address": "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73",
- "symbol": "cEUR",
- "decimals": 18,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0xdA529eBEd3D459dac9d9D3D45b8Cae2D5796c098": {
- "chain_id": 42220,
- "entrypoint_address": "0xc3142BCBA2285d0a48A38e7Ea9Cbf28a12B235bB",
- "paymaster_address": "0xedbEA8c0F25B34510149EaD4f72867B0d3D2264F",
- "account_factory_address": "0xdA529eBEd3D459dac9d9D3D45b8Cae2D5796c098",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/ceur.celo.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "EUR e-money",
- "description": "Token by Monerium EMI, a regulated entity, licensed in the EEA.",
- "url": "https://monerium.com/tokens/",
- "alias": "eure.polygon",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/eure.svg",
- "hidden": true,
- "profile": {
- "address": "0xF5F7317EDb8E88CaE09071B0C4F0fd6EA20B21f9",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x5bA08d9fC7b90f79B2b856bdB09FC9EB32e83616",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6": {
- "standard": "erc20",
- "name": "EUR emoney",
- "address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6",
- "symbol": "EURe",
- "decimals": 18,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x5bA08d9fC7b90f79B2b856bdB09FC9EB32e83616": {
- "chain_id": 137,
- "entrypoint_address": "0x2027Bde7C276D5F128587E3107c68A488ee31c72",
- "paymaster_address": "0xB2cb6b75C2357Ca94dBdF58897E468E45fAC83Ec",
- "account_factory_address": "0x5bA08d9fC7b90f79B2b856bdB09FC9EB32e83616",
- "paymaster_type": "cw",
- "gas_extra_percentage": 50
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/eure.polygon.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "USDC on Polygon",
- "description": "The community of people using USDC on Polygon.",
- "url": "https://en.wikipedia.org/wiki/USD_Coin",
- "alias": "app",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/usdc.svg",
- "hidden": true,
- "theme": {
- "primary": "#0052ff"
- },
- "profile": {
- "address": "0xA63DFccB8a39a3DFE4479b33190b12019Ee594E7",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x270758454C012A1f51428b68aE473D728CCdFe88",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": {
- "standard": "erc20",
- "name": "USD Coin",
- "address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
- "symbol": "USDC",
- "decimals": 6,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x270758454C012A1f51428b68aE473D728CCdFe88": {
- "chain_id": 137,
- "entrypoint_address": "0x466AA6ed2B7Bb829841F5aAEA9e82B840eC0feF9",
- "paymaster_address": "0xB5D1C0167E6325466E2918e9fda8cc41384C0291",
- "account_factory_address": "0x270758454C012A1f51428b68aE473D728CCdFe88",
- "paymaster_type": "cw",
- "gas_extra_percentage": 50
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/app.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "USDC on Base",
- "description": "The community of people using USDC on Base.",
- "url": "https://en.wikipedia.org/wiki/USD_Coin",
- "alias": "usdc.base",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/usdc.svg",
- "hidden": true,
- "theme": {
- "primary": "#0052ff"
- },
- "profile": {
- "address": "0x51Ef5Add405CCF63c206A80AF8c2B3cEE0282830",
- "chain_id": 8453
- },
- "primary_token": {
- "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
- "chain_id": 8453
- },
- "primary_account_factory": {
- "address": "0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99",
- "chain_id": 8453
- }
- },
- "tokens": {
- "8453:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": {
- "standard": "erc20",
- "name": "USD Coin",
- "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
- "symbol": "USDC",
- "decimals": 6,
- "chain_id": 8453
- }
- },
- "scan": {
- "url": "https://basescan.org",
- "name": "Base Explorer"
- },
- "accounts": {
- "8453:0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99": {
- "chain_id": 8453,
- "entrypoint_address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
- "paymaster_address": "0xA63DFccB8a39a3DFE4479b33190b12019Ee594E7",
- "account_factory_address": "0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99",
- "paymaster_type": "cw",
- "gas_extra_percentage": 50
- }
- },
- "chains": {
- "8453": {
- "id": 8453,
- "node": {
- "url": "https://8453.engine.citizenwallet.xyz",
- "ws_url": "wss://8453.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/usdc.base.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "OAK Community",
- "description": "A community currency for the city of Oakland.",
- "url": "https://www.oak.community/",
- "alias": "wallet.oak.community",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/oak.svg",
- "custom_domain": "wallet.oak.community",
- "hidden": true,
- "profile": {
- "address": "0xFE213c74e25505B232CE4C7f89647408bE6f71d2",
- "chain_id": 8453
- },
- "primary_token": {
- "address": "0x845598Da418890a674cbaBA26b70807aF0c61dFE",
- "chain_id": 8453
- },
- "primary_account_factory": {
- "address": "0x9406Cc6185a346906296840746125a0E44976454",
- "chain_id": 8453
- }
- },
- "tokens": {
- "8453:0x845598Da418890a674cbaBA26b70807aF0c61dFE": {
- "standard": "erc20",
- "name": "OAK Community Currency",
- "address": "0x845598Da418890a674cbaBA26b70807aF0c61dFE",
- "symbol": "OAK",
- "decimals": 6,
- "chain_id": 8453
- }
- },
- "scan": {
- "url": "https://basescan.org",
- "name": "Base Explorer"
- },
- "accounts": {
- "8453:0x9406Cc6185a346906296840746125a0E44976454": {
- "chain_id": 8453,
- "entrypoint_address": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
- "paymaster_address": "0x123",
- "account_factory_address": "0x9406Cc6185a346906296840746125a0E44976454",
- "paymaster_type": "payg"
- }
- },
- "chains": {
- "8453": {
- "id": 8453,
- "node": {
- "url": "https://8453.engine.citizenwallet.xyz",
- "ws_url": "wss://8453.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.oak.community.json",
- "version": 4
- },
- {
- "community": {
- "name": "Stable Coin",
- "description": "SBC is a digital dollar stablecoin issued by Brale",
- "url": "https://brale.xyz/",
- "alias": "sbc.polygon",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/sbc.svg",
- "hidden": true,
- "profile": {
- "address": "0xcA0a75EF803a364C83c5EAE7Eb889aE7419c9dF2",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0xfdcC3dd6671eaB0709A4C0f3F53De9a333d80798",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x3Be13D9325C8C9174C3819d3d868D5D3aB8Fc8a5",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0xfdcC3dd6671eaB0709A4C0f3F53De9a333d80798": {
- "standard": "erc20",
- "name": "Stable Coin",
- "address": "0xfdcC3dd6671eaB0709A4C0f3F53De9a333d80798",
- "symbol": "SBC",
- "decimals": 18,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x3Be13D9325C8C9174C3819d3d868D5D3aB8Fc8a5": {
- "chain_id": 137,
- "entrypoint_address": "0xe84423Ba1A3f3535B09237245e22dBda5E27eB88",
- "paymaster_address": "0x123",
- "account_factory_address": "0x3Be13D9325C8C9174C3819d3d868D5D3aB8Fc8a5",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/sbc.polygon.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "Zinne.brussels",
- "description": "A community currency for the city of Brussels",
- "url": "https://zinne.brussels",
- "alias": "zinne",
- "logo": "https://citizenwallet.xyz/zinne/zinne-coin.svg",
- "hidden": true,
- "profile": {
- "address": "0x23DB3D3Da510e60aF40902A04850E1F3a744905c",
- "chain_id": 137
- },
- "primary_token": {
- "address": "0x5491a3d35F148a44F0af4D718B9636A6e55eBc2D",
- "chain_id": 137
- },
- "primary_account_factory": {
- "address": "0x11af2639817692D2b805BcE0e1e405E530B20006",
- "chain_id": 137
- }
- },
- "tokens": {
- "137:0x5491a3d35F148a44F0af4D718B9636A6e55eBc2D": {
- "standard": "erc20",
- "name": "Zinne.brussels Token",
- "address": "0x5491a3d35F148a44F0af4D718B9636A6e55eBc2D",
- "symbol": "ZINNE",
- "decimals": 6,
- "chain_id": 137
- }
- },
- "scan": {
- "url": "https://polygonscan.com",
- "name": "Polygon Explorer"
- },
- "accounts": {
- "137:0x11af2639817692D2b805BcE0e1e405E530B20006": {
- "chain_id": 137,
- "entrypoint_address": "0xF5507B3042f1C63625D856a2ABFF046243A5D74e",
- "paymaster_address": "0xBb796D122Ec1aBDeD081D50B06a072f981c7E62b",
- "account_factory_address": "0x11af2639817692D2b805BcE0e1e405E530B20006",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "137": {
- "id": 137,
- "node": {
- "url": "https://137.engine.citizenwallet.xyz",
- "ws_url": "wss://137.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/zinne.brussels.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "Regens Unite Time Bank",
- "description": "Make time to regen",
- "url": "https://regensunite.earth",
- "alias": "timebank.regensunite.earth",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/rgn.svg",
- "hidden": true,
- "profile": {
- "address": "0x605A827DF8C405D16Ec70AAb8d9a47D21db45c09",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x186DaBD027e228C988777907465807FDab270894",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x39b77d77f7677997871b304094a05295eb71e240",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x186DaBD027e228C988777907465807FDab270894": {
- "standard": "erc20",
- "name": "Regen Hour",
- "address": "0x186DaBD027e228C988777907465807FDab270894",
- "symbol": "rHour",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "CELO Explorer"
- },
- "accounts": {
- "42220:0x39b77d77f7677997871b304094a05295eb71e240": {
- "chain_id": 42220,
- "entrypoint_address": "0x41176F0C9b8f795Cb99e2DD5Db16017978eeFa4d",
- "paymaster_address": "0xe45858bf63176595c2920822581917c7C705a12f",
- "account_factory_address": "0x39b77d77f7677997871b304094a05295eb71e240",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "Market",
- "icon": "https://timebank.regensunite.earth/uploads/logo.svg",
- "url": "https://marketplace.citizenwallet.xyz/timebank.regensunite.earth",
- "launch_mode": "webview"
- }
- ],
- "config_location": "https://timebank.regensunite.earth/indexer",
- "version": 4
- },
- {
- "community": {
- "name": "MOOS Token",
- "description": "A community currency for MOOS.",
- "url": "https://www.moos.garden/",
- "alias": "moos",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/moos.svg",
- "hidden": true,
- "profile": {
- "address": "0x2e4542Be47408d05F41703386eFaf4338Ee1D341",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x230542eda83346929e4E54f4a98e1ca1A4BFc0c3",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x671f0662de72268d0f3966Fb62dFc6ee6389e244",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x230542eda83346929e4E54f4a98e1ca1A4BFc0c3": {
- "standard": "erc20",
- "name": "MOOS Token",
- "address": "0x230542eda83346929e4E54f4a98e1ca1A4BFc0c3",
- "symbol": "MOOS",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0x671f0662de72268d0f3966Fb62dFc6ee6389e244": {
- "chain_id": 42220,
- "entrypoint_address": "0x45a8e6AaDCc48D1Ce19eCbE07Ccd3a536EF712ed",
- "paymaster_address": "0x55E519bfD63c7152D9F7B88Acd712A37F0BEC482",
- "account_factory_address": "0x671f0662de72268d0f3966Fb62dFc6ee6389e244",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "Market",
- "icon": "https://moos.citizenwallet.xyz/wallet-config/_images/moos.svg",
- "url": "https://marketplace.citizenwallet.xyz/moos",
- "launch_mode": "webview"
- }
- ],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/moos.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "Bonne Heure",
- "description": "Système d'Échange Local de Villers-la-Ville",
- "url": "https://selcoupdepouce.be",
- "alias": "selcoupdepouce",
- "logo": "https://topup.citizenwallet.xyz/communities/selcoupdepouce/sel-coin.svg",
- "hidden": true,
- "profile": {
- "address": "0xfB8F1e7ED42599638B3c509679E2F43937002C56",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x5Cdbc862BF4E20D98456D4c41D4A5239aDd496d3",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x4Cc883b7E8E0BCB2e293703EF06426F9b4A5A284",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x5Cdbc862BF4E20D98456D4c41D4A5239aDd496d3": {
- "standard": "erc20",
- "name": "Bonne Heure",
- "address": "0x5Cdbc862BF4E20D98456D4c41D4A5239aDd496d3",
- "symbol": "BHR",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0x4Cc883b7E8E0BCB2e293703EF06426F9b4A5A284": {
- "chain_id": 42220,
- "entrypoint_address": "0xA90904F33df36899d810d040b8d5b3b77265Bb05",
- "paymaster_address": "0x635032605337aB36A46D767905108e67EE687a72",
- "account_factory_address": "0x4Cc883b7E8E0BCB2e293703EF06426F9b4A5A284",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "plugins": [
- {
- "name": "Market",
- "icon": "https://marketplace.citizenwallet.xyz/marketplace.svg",
- "url": "https://marketplace.citizenwallet.xyz/selcoupdepouce",
- "launch_mode": "browser"
- }
- ],
- "config_location": "https://config.internal.citizenwallet.xyz/v4/selcoupdepouce.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "CI token",
- "description": "Monnaie locale du Cercle Informatique de l’ULB",
- "url": "https://citizenwallet.xyz/cit",
- "alias": "cit.celo",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/cit.celo.svg",
- "hidden": true,
- "profile": {
- "address": "0x4cB296BEc9FAd0B5e1E4FF1A2F307B425724AC82",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x12e26FAED228c425BceA8a8dd7658a9CeD944dd9",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x0a9f4B7e7Ec393fF25dc9267289Be259Ec3FB970",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x12e26FAED228c425BceA8a8dd7658a9CeD944dd9": {
- "standard": "erc20",
- "name": "CI token",
- "address": "0x12e26FAED228c425BceA8a8dd7658a9CeD944dd9",
- "symbol": "CIT",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0x0a9f4B7e7Ec393fF25dc9267289Be259Ec3FB970": {
- "chain_id": 42220,
- "entrypoint_address": "0xB8d9412f3A91A00ca762B5c35cd0863E9b716D68",
- "paymaster_address": "0x452F7ff3e55fe29f481841985dE7f4939FD645fa",
- "account_factory_address": "0x0a9f4B7e7Ec393fF25dc9267289Be259Ec3FB970",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "config_location": "https://config.internal.citizenwallet.xyz/v4/cit.celo.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "Wolugo",
- "description": "A community for the Woluwe-Saint-Pierre civic engagement platform",
- "url": "https://wolugo.be",
- "alias": "wallet.wolugo.be",
- "custom_domain": "wallet.wolugo.be",
- "logo": "https://wallet.wolugo.be/uploads/logo.svg",
- "theme": {
- "primary": "#81e2c1"
- },
- "hidden": true,
- "profile": {
- "address": "0x07e7b95B35866302b3A089feF4CFA3061061a51d",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x13Dd4B3cD2f2Be3eb41cD0C3E2ce9F8d8C93A451",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x8474153A00C959f2cB64852949954DBC68415Bb3",
- "chain_id": 42220
- },
- "card_factory": {
- "address": "0xA3E1446E332a098A1f3b0555c5d149b4784A095F",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x13Dd4B3cD2f2Be3eb41cD0C3E2ce9F8d8C93A451": {
- "standard": "erc20",
- "name": "Wolu",
- "address": "0x13Dd4B3cD2f2Be3eb41cD0C3E2ce9F8d8C93A451",
- "symbol": "WOLU",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "CELO Explorer"
- },
- "accounts": {
- "42220:0x8474153A00C959f2cB64852949954DBC68415Bb3": {
- "chain_id": 42220,
- "entrypoint_address": "0x0F805BC1ED718FB9C7C18439cB11E1C17C6538C4",
- "paymaster_address": "0xF2EFEC3cBFaDE0bB6108620cbF7Cc608d27DCF3c",
- "account_factory_address": "0x8474153A00C959f2cB64852949954DBC68415Bb3",
- "paymaster_type": "cw"
- }
- },
- "cards": {
- "42220:0xA3E1446E332a098A1f3b0555c5d149b4784A095F": {
- "chain_id": 42220,
- "address": "0xA3E1446E332a098A1f3b0555c5d149b4784A095F",
- "type": "classic"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.wolugo.be.json",
- "version": 4
- },
- {
- "community": {
- "name": "Woluwe Test",
- "description": "Local currency for the Woluwe Test community.",
- "url": "https://wollet-v2.citizenwallet.net/token",
- "alias": "wtc.celo",
- "logo": "https://wtc.celo.citizenwallet.xyz/wallet-config/_images/wtc.celo.svg",
- "hidden": true,
- "profile": {
- "address": "0xB99a7B1574f051020EB4cb2fce5d48EE07592AfF",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0xc53Cb35591959cA62471dA9fF6AC16629A89874a",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0xE79E19594A749330036280c685E2719d58d99052",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0xc53Cb35591959cA62471dA9fF6AC16629A89874a": {
- "standard": "erc20",
- "name": "Woluwe Test Coin",
- "address": "0xc53Cb35591959cA62471dA9fF6AC16629A89874a",
- "symbol": "WTC",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0xE79E19594A749330036280c685E2719d58d99052": {
- "chain_id": 42220,
- "entrypoint_address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
- "paymaster_address": "0x3fefC19674f3F6E43B1dFf1861E07c303B9eAAc9",
- "account_factory_address": "0xE79E19594A749330036280c685E2719d58d99052",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "config_location": "https://config.internal.citizenwallet.xyz/v4/wtc.celo.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "ETHGlobal London Token",
- "description": "The community of people using ETHLDN on Base.",
- "url": "https://en.wikipedia.org/wiki/USD_Coin",
- "alias": "testnet-ethldn",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/testnet-ethldn.svg",
- "hidden": true,
- "profile": {
- "address": "0x0785D720279f42326846D5396b5F44b97d0BfECd",
- "chain_id": 84532
- },
- "primary_token": {
- "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
- "chain_id": 84532
- },
- "primary_account_factory": {
- "address": "0xc1654087C580f868F08E34cd1c01eDB1d3673b82",
- "chain_id": 84532
- }
- },
- "tokens": {
- "84532:0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e": {
- "standard": "erc20",
- "name": "ETHGlobal London Token",
- "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
- "symbol": "ETHLDN",
- "decimals": 6,
- "chain_id": 84532
- }
- },
- "scan": {
- "url": "https://sepolia.basescan.org",
- "name": "Base Sepolia Explorer"
- },
- "accounts": {
- "84532:0xc1654087C580f868F08E34cd1c01eDB1d3673b82": {
- "chain_id": 84532,
- "entrypoint_address": "0xBABCf159c4e3186cf48e4a48bC0AeC17CF9d90FE",
- "paymaster_address": "0x389182aCCeE26D953d5188BF4b92c49339DcC9FC",
- "account_factory_address": "0xc1654087C580f868F08E34cd1c01eDB1d3673b82",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "84532": {
- "id": 84532,
- "node": {
- "url": "https://84532.engine.citizenwallet.xyz",
- "ws_url": "wss://84532.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "config_location": "https://config.internal.citizenwallet.xyz/v4/testnet-ethldn.json",
- "version": 4
- },
- {
- "community": {
- "name": "Celo Community Point",
- "description": "This is a community for the Celo Point",
- "url": "https://citizenwallet.xyz",
- "alias": "celo-c.citizenwallet.xyz",
- "logo": "https://celo-c.citizenwallet.xyz/uploads/logo.svg",
- "hidden": true,
- "profile": {
- "address": "0x14004E13907282cFaD05f742022E56926eE92dAd",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x3C960E72BBbD837293e75080E1d0Fee6a4640357",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0xcd8b1B9E760148c5026Bc5B0D56a5374e301FDcA",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x3C960E72BBbD837293e75080E1d0Fee6a4640357": {
- "standard": "erc20",
- "name": "Celo Community Point",
- "address": "0x3C960E72BBbD837293e75080E1d0Fee6a4640357",
- "symbol": "CeloC",
- "decimals": 6,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "CELO Explorer"
- },
- "accounts": {
- "42220:0xcd8b1B9E760148c5026Bc5B0D56a5374e301FDcA": {
- "chain_id": 42220,
- "entrypoint_address": "0x66fE9c22CcA49B257dd4F00508AC90198d99Bf27",
- "paymaster_address": "0x7f4011845Ea914b6cefc60629e1e00600c972c75",
- "account_factory_address": "0xcd8b1B9E760148c5026Bc5B0D56a5374e301FDcA",
- "paymaster_type": "cw"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "config_location": "https://config.internal.citizenwallet.xyz/v4/celo-c.citizenwallet.xyz.json",
- "version": 4
- },
- {
- "community": {
- "name": "KFMEDIA℠",
- "description": "Certified Education Organization. Solving systemic educational disparity using Web3 solutions, removing barriers of entry for underdeveloped economies.",
- "url": "https://kingfishersmedia.io",
- "alias": "wallet.kingfishersmedia.io",
- "custom_domain": "wallet.kingfishersmedia.io",
- "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/kfmpfl.png",
- "theme": {
- "primary": "#88292c"
- },
- "profile": {
- "address": "0x5f6FEb03ad8EfeCdD2a837FAA1a29DEA2bAcfd55",
- "chain_id": 42220
- },
- "primary_token": {
- "address": "0x56744910f7dEcD48c1a7FA61B4C317b15E99F156",
- "chain_id": 42220
- },
- "primary_account_factory": {
- "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "chain_id": 42220
- },
- "primary_card_manager": {
- "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
- "chain_id": 42220
- }
- },
- "tokens": {
- "42220:0x56744910f7dEcD48c1a7FA61B4C317b15E99F156": {
- "standard": "erc1155",
- "name": "KFMEDIA℠ Pathways for LATAM™",
- "address": "0x56744910f7dEcD48c1a7FA61B4C317b15E99F156",
- "symbol": "KFMPFL",
- "decimals": 0,
- "chain_id": 42220
- }
- },
- "scan": {
- "url": "https://celoscan.io",
- "name": "Celo Explorer"
- },
- "accounts": {
- "42220:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
- "chain_id": 42220,
- "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
- "paymaster_address": "0x02BDA8370d9497A5C808B2db237cfaA8f0733F36",
- "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
- "paymaster_type": "cw-safe"
- }
- },
- "chains": {
- "42220": {
- "id": 42220,
- "node": {
- "url": "https://42220.engine.citizenwallet.xyz",
- "ws_url": "wss://42220.engine.citizenwallet.xyz"
- }
- }
- },
- "ipfs": {
- "url": "https://ipfs.internal.citizenwallet.xyz"
- },
- "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.kingfishersmedia.io.json",
- "version": 4
- }
+ {
+ "community": {
+ "name": "Citizen Wallet (CTZN)",
+ "description": "The token powering the Citizen Wallet economy.",
+ "url": "https://citizenwallet.xyz",
+ "alias": "ctzn",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/ctzn.svg",
+ "theme": {
+ "primary": "#9563D3"
+ },
+ "profile": {
+ "address": "0x8dA817724Eb6A2aA47c0F8d8b8A98b9B3C2Ddb68",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0x0D9B0790E97e3426C161580dF4Ee853E4A7C4607",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0x0D9B0790E97e3426C161580dF4Ee853E4A7C4607": {
+ "standard": "erc20",
+ "name": "Citizen Wallet",
+ "address": "0x0D9B0790E97e3426C161580dF4Ee853E4A7C4607",
+ "symbol": "CTZN",
+ "decimals": 18,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 137,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0x3A3E25871c5C6C84D5f397829FF316a37F7FD596",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "About",
+ "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/ctzn.svg",
+ "url": "https://citizenwallet.xyz/pay-with-ctzn",
+ "launch_mode": "webview"
+ }
+ ],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/ctzn.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Brussels Pay",
+ "description": "Open and local payments for Brussels",
+ "url": "https://pay.brussels",
+ "alias": "wallet.pay.brussels",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/wallet.pay.brussels.png",
+ "custom_domain": "wallet.pay.brussels",
+ "hidden": false,
+ "theme": {
+ "primary": "#3331c4"
+ },
+ "profile": {
+ "address": "0x56Cc38bDa01bE6eC6D854513C995f6621Ee71229",
+ "chain_id": 100
+ },
+ "primary_token": {
+ "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
+ "chain_id": 100
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 100
+ },
+ "primary_card_manager": {
+ "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
+ "chain_id": 100
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 100
+ }
+ },
+ "tokens": {
+ "100:0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1": {
+ "standard": "erc20",
+ "name": "pay.brussels",
+ "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
+ "symbol": "EURb",
+ "decimals": 6,
+ "chain_id": 100
+ }
+ },
+ "scan": {
+ "url": "https://gnosisscan.io",
+ "name": "Gnosis Explorer"
+ },
+ "accounts": {
+ "100:0xBABCf159c4e3186cf48e4a48bC0AeC17CF9d90FE": {
+ "chain_id": 100,
+ "entrypoint_address": "0xAAEb9DC18aDadae9b3aE7ec2b47842565A81113f",
+ "paymaster_address": "0xcA1B9EC1117340818C1c1fdd1B48Ea79E57C140F",
+ "account_factory_address": "0xBABCf159c4e3186cf48e4a48bC0AeC17CF9d90FE",
+ "paymaster_type": "cw"
+ },
+ "100:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 100,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0xE69C843898E21C0E95eA7DD310cD850AAc0aB897",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "100:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 100,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "cards": {
+ "100:0x1EaF6B6A6967608aF6c77224f087b042095891EB": {
+ "chain_id": 100,
+ "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
+ "type": "classic"
+ },
+ "100:0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28": {
+ "chain_id": 100,
+ "instance_id": "brussels-pay",
+ "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
+ "type": "safe"
+ }
+ },
+ "chains": {
+ "100": {
+ "id": 100,
+ "node": {
+ "url": "https://engine.pay.brussels",
+ "ws_url": "wss://engine.pay.brussels"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "Top Up",
+ "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/wallet.pay.brussels.png",
+ "url": "https://checkout.pay.brussels/topup",
+ "action": "topup",
+ "signature": true
+ }
+ ],
+ "config_location": "https://wallet.pay.brussels/config/community.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Gratitude Token",
+ "description": "Express your gratitude towards someone by sending them a token of gratitude.",
+ "url": "https://citizenwallet.xyz/gratitude",
+ "alias": "gratitude",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/gt.svg",
+ "theme": {
+ "primary": "#4EC19D"
+ },
+ "profile": {
+ "address": "0xEEc0F3257369c6bCD2Fd8755CbEf8A95b12Bc4c9",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 42220
+ },
+ "primary_card_manager": {
+ "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1": {
+ "standard": "erc20",
+ "name": "Gratitude Token",
+ "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
+ "symbol": "GT",
+ "decimals": 0,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x985ec7d08D9d15Ea79876E35FAdEFD58A627187E",
+ "paymaster_address": "0x8dd43eE72f6A816b8eB0411B712D96cDd95246d8",
+ "account_factory_address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
+ "paymaster_type": "cw"
+ },
+ "42220:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0xF05ba2641b31AF70c2678e3324eD8b9C53093FbE",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "cards": {
+ "42220:0x1EaF6B6A6967608aF6c77224f087b042095891EB": {
+ "chain_id": 42220,
+ "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
+ "type": "classic"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://gratitude.citizenwallet.xyz/config/community.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "SFLUV Community",
+ "description": "A community currency for the city of San Francisco.",
+ "url": "https://sfluv.org",
+ "alias": "wallet.sfluv.org",
+ "custom_domain": "wallet.sfluv.org",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/sfluv.svg",
+ "theme": {
+ "primary": "#eb6c6c"
+ },
+ "profile": {
+ "address": "0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0x58a2993A618Afee681DE23dECBCF535A58A080BA",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0x58a2993A618Afee681DE23dECBCF535A58A080BA": {
+ "standard": "erc20",
+ "name": "SFLUV V1.1",
+ "address": "0x58a2993A618Afee681DE23dECBCF535A58A080BA",
+ "symbol": "SFLUV",
+ "decimals": 6,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x5e987a6c4bb4239d498E78c34e986acf29c81E8e": {
+ "chain_id": 137,
+ "entrypoint_address": "0x2d01C5E40Aa6a8478eD0FFbF2784EBb9bf67C46A",
+ "paymaster_address": "0x7FC98D0a2bd7f766bAca37388eB0F6Db37666B33",
+ "account_factory_address": "0x5e987a6c4bb4239d498E78c34e986acf29c81E8e",
+ "paymaster_type": "cw"
+ },
+ "137:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 137,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0x16679363e723535c640Fcd26E99130E5b3EEB5E2",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "About",
+ "icon": "https://wallet.sfluv.org/uploads/logo.svg",
+ "url": "https://app.sfluv.org",
+ "launch_mode": "webview",
+ "signature": true,
+ "hidden": true
+ }
+ ],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.sfluv.org.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Bolivia Pay",
+ "description": "A community for Ethereum Bolivia.",
+ "url": "https://www.ethereumbolivia.org",
+ "alias": "boliviapay",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/boliviapay.png",
+ "theme": {
+ "primary": "#009393"
+ },
+ "profile": {
+ "address": "0x898C2737f2Cb52622711A89D85A1D5E0B881BDeA",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0xc2132D05D31c914a87C6611C10748AEb04B58e8F": {
+ "standard": "erc20",
+ "name": "(PoS) Tether USD",
+ "address": "0xc2132D05D31c914a87C6611C10748AEb04B58e8F",
+ "symbol": "USDT",
+ "decimals": 6,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 137,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0x9a81Bd50D56485Cc863Ecb169812c7a821996C8c",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/boliviapay.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Breadchain Community Token",
+ "description": "BREAD is a digital community token and solidarity primitive developed by Breadchain Cooperative that generates yield for post-capitalist organizations",
+ "url": "https://breadchain.xyz/",
+ "alias": "bread",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/bread.svg",
+ "profile": {
+ "address": "0x6b3a1f4277391526413F583c23D5B9EF4d2fE986",
+ "chain_id": 100
+ },
+ "primary_token": {
+ "address": "0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3",
+ "chain_id": 100
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 100
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 100
+ }
+ },
+ "tokens": {
+ "100:0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3": {
+ "standard": "erc20",
+ "name": "Breadchain Community Token",
+ "address": "0xa555d5344f6fb6c65da19e403cb4c1ec4a1a5ee3",
+ "symbol": "BREAD",
+ "decimals": 18,
+ "chain_id": 100
+ }
+ },
+ "scan": {
+ "url": "https://gnosisscan.io",
+ "name": "Gnosis Explorer"
+ },
+ "accounts": {
+ "100:0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9": {
+ "chain_id": 100,
+ "entrypoint_address": "0xcA0a75EF803a364C83c5EAE7Eb889aE7419c9dF2",
+ "paymaster_address": "0xbE2Cb3358aa14621134e923B68b8429315368E32",
+ "account_factory_address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
+ "paymaster_type": "cw"
+ },
+ "100:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 100,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0x5C41F1114AB13aF5d66bac485924D03556d0cd51",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "100:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 100,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "100": {
+ "id": 100,
+ "node": {
+ "url": "https://100.engine.citizenwallet.xyz",
+ "ws_url": "wss://100.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "Market",
+ "icon": "https://bread.citizenwallet.xyz/uploads/logo.svg",
+ "url": "https://marketplace.citizenwallet.xyz/bread",
+ "launch_mode": "webview"
+ }
+ ],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/bread.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Commons Hub Brussels",
+ "description": "Community Token for the Commons Hub Brussels community",
+ "url": "https://commonshub.brussels",
+ "alias": "wallet.commonshub.brussels",
+ "custom_domain": "wallet.commonshub.brussels",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/chb.png",
+ "theme": {
+ "primary": "#ff4c02"
+ },
+ "profile": {
+ "address": "0xc06bE1BbbeEAF2f34F3d5b76069D2560aee184Ae",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x65DD32834927de9E57E72a3E2130a19f81C6371D",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x65DD32834927de9E57E72a3E2130a19f81C6371D": {
+ "standard": "erc20",
+ "name": "Commons Hub Token",
+ "address": "0x65DD32834927de9E57E72a3E2130a19f81C6371D",
+ "symbol": "CHT",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "CELO Explorer"
+ },
+ "accounts": {
+ "42220:0x307A9456C4057F7C7438a174EFf3f25fc0eA6e87": {
+ "chain_id": 42220,
+ "entrypoint_address": "0xb7608dDA592d319687C89c4479e320b5a7740117",
+ "paymaster_address": "0x4E127A1DAa66568B4a91E8c5615120a6Ea5442E3",
+ "account_factory_address": "0x307A9456C4057F7C7438a174EFf3f25fc0eA6e87",
+ "paymaster_type": "cw"
+ },
+ "42220:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0xe5Eb4fB0F3312649Eb7b62fba66C9E26579D7208",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "cards": {
+ "42220:0xc0F9e0907C8de79fd5902b61e463dFEdc5dc8570": {
+ "chain_id": 42220,
+ "address": "0xc0F9e0907C8de79fd5902b61e463dFEdc5dc8570",
+ "type": "classic"
+ }
+ },
+ "plugins": [
+ {
+ "name": "Market",
+ "icon": "https://marketplace.citizenwallet.xyz/marketplace.svg",
+ "url": "https://marketplace.citizenwallet.xyz/wallet.commonshub.brussels",
+ "launch_mode": "webview"
+ }
+ ],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.commonshub.brussels.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Sel de Salm",
+ "description": "La communauté de Sel de Salm",
+ "url": "https://citizenwallet.xyz/community-currency-documentation/sel-de-salm",
+ "alias": "seldesalm",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/myrt.png",
+ "theme": {
+ "primary": "#6B5CA4"
+ },
+ "profile": {
+ "address": "0x4083724953cC1cC13e76b436149B2b1e1a3E5970",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x83DfEB42347a7Ce46F1497F307a5c156D1f19CB2",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 42220
+ },
+ "primary_card_manager": {
+ "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x83DfEB42347a7Ce46F1497F307a5c156D1f19CB2": {
+ "standard": "erc20",
+ "name": "Myrtille",
+ "address": "0x83DfEB42347a7Ce46F1497F307a5c156D1f19CB2",
+ "symbol": "MYRT",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0xd07412020dA5054c3b49f47Ca61224637F1703af",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "cards": {
+ "42220:0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28": {
+ "chain_id": 42220,
+ "instance_id": "cw-seldesalm",
+ "address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
+ "type": "safe"
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "Informations Générales",
+ "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/myrt.png",
+ "url": "https://citizenwallet.xyz/community-currency-documentation/sel-de-salm",
+ "launch_mode": "webview"
+ },
+ {
+ "name": "Échanges",
+ "icon": "https://assets.citizenwallet.xyz/wallet-config/_images/myrt.png",
+ "url": "https://marketplace.citizenwallet.xyz/seldesalm",
+ "launch_mode": "webview"
+ }
+ ],
+ "config_location": "https://seldesalm.citizenwallet.xyz/config/community.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "TECHI",
+ "description": "A community for TECHI users",
+ "url": "https://my.techi.be",
+ "alias": "my.techi.be",
+ "logo": "https://my.techi.be/assets/token.svg",
+ "hidden": false,
+ "theme": {
+ "primary": "#617FF8"
+ },
+ "profile": {
+ "address": "0x80C141861607b8FEfD53C9E71a9c7D2D3e2e76dc",
+ "chain_id": 100
+ },
+ "primary_token": {
+ "address": "0x01D0E7117510b371Ac38f52Cc6689ff8875280FA",
+ "chain_id": 100
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 100
+ },
+ "primary_card_manager": {
+ "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
+ "chain_id": 100
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 100
+ }
+ },
+ "tokens": {
+ "100:0x01D0E7117510b371Ac38f52Cc6689ff8875280FA": {
+ "standard": "erc20",
+ "name": "TECHI",
+ "address": "0x01D0E7117510b371Ac38f52Cc6689ff8875280FA",
+ "symbol": "TECHI",
+ "decimals": 6,
+ "chain_id": 100
+ }
+ },
+ "scan": {
+ "url": "https://gnosisscan.io",
+ "name": "Gnosis Explorer"
+ },
+ "accounts": {
+ "100:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 100,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0x68c5a20f233264DB124a3c95a200bbD20b3b9762",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "100:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 100,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "100": {
+ "id": 100,
+ "node": {
+ "url": "https://engine.my.techi.be",
+ "ws_url": "wss://engine.my.techi.be"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://my.techi.be/assets/community.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Regens Unite",
+ "description": "A community currency for the Regens Unite community.",
+ "url": "https://www.regensunite.earth/",
+ "alias": "wallet.regensunite.earth",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/rgn.svg",
+ "custom_domain": "wallet.regensunite.earth",
+ "hidden": true,
+ "profile": {
+ "address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x9406Cc6185a346906296840746125a0E44976454",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e": {
+ "standard": "erc20",
+ "name": "Regens Unite Token",
+ "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
+ "symbol": "RGN",
+ "decimals": 6,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x9406Cc6185a346906296840746125a0E44976454": {
+ "chain_id": 137,
+ "entrypoint_address": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
+ "paymaster_address": "0x250711045d58b6310f0635C7D110BFe663cE1da5",
+ "account_factory_address": "0x9406Cc6185a346906296840746125a0E44976454",
+ "paymaster_type": "payg",
+ "gas_extra_percentage": 50
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.regensunite.earth.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Gratitude Token",
+ "description": "Express your gratitude towards someone by sending them a token.",
+ "url": "https://citizenwallet.xyz/gratitude",
+ "alias": "gt.celo",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/gt.svg",
+ "custom_domain": null,
+ "hidden": true,
+ "theme": {
+ "primary": "#a256ff"
+ },
+ "profile": {
+ "address": "0xEEc0F3257369c6bCD2Fd8755CbEf8A95b12Bc4c9",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1": {
+ "standard": "erc20",
+ "name": "Gratitude Token",
+ "address": "0x5815E61eF72c9E6107b5c5A05FD121F334f7a7f1",
+ "symbol": "GT",
+ "decimals": 0,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x985ec7d08D9d15Ea79876E35FAdEFD58A627187E",
+ "paymaster_address": "0x8dd43eE72f6A816b8eB0411B712D96cDd95246d8",
+ "account_factory_address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/gt.celo.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Celo Euro",
+ "description": "Celo Euro is a stablecoin for the Celo Community.",
+ "url": "https://celo.org/",
+ "alias": "ceur.celo",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/ceur.svg",
+ "hidden": true,
+ "theme": {
+ "primary": "#a256ff"
+ },
+ "profile": {
+ "address": "0x0334C579E61aF6922D5deFEF02A361FBb2D6f406",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0xdA529eBEd3D459dac9d9D3D45b8Cae2D5796c098",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73": {
+ "standard": "erc20",
+ "name": "Celo Euro",
+ "address": "0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73",
+ "symbol": "cEUR",
+ "decimals": 18,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0xdA529eBEd3D459dac9d9D3D45b8Cae2D5796c098": {
+ "chain_id": 42220,
+ "entrypoint_address": "0xc3142BCBA2285d0a48A38e7Ea9Cbf28a12B235bB",
+ "paymaster_address": "0xedbEA8c0F25B34510149EaD4f72867B0d3D2264F",
+ "account_factory_address": "0xdA529eBEd3D459dac9d9D3D45b8Cae2D5796c098",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/ceur.celo.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "EUR e-money",
+ "description": "Token by Monerium EMI, a regulated entity, licensed in the EEA.",
+ "url": "https://monerium.com/tokens/",
+ "alias": "eure.polygon",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/eure.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0xF5F7317EDb8E88CaE09071B0C4F0fd6EA20B21f9",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x5bA08d9fC7b90f79B2b856bdB09FC9EB32e83616",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6": {
+ "standard": "erc20",
+ "name": "EUR emoney",
+ "address": "0x18ec0A6E18E5bc3784fDd3a3634b31245ab704F6",
+ "symbol": "EURe",
+ "decimals": 18,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x5bA08d9fC7b90f79B2b856bdB09FC9EB32e83616": {
+ "chain_id": 137,
+ "entrypoint_address": "0x2027Bde7C276D5F128587E3107c68A488ee31c72",
+ "paymaster_address": "0xB2cb6b75C2357Ca94dBdF58897E468E45fAC83Ec",
+ "account_factory_address": "0x5bA08d9fC7b90f79B2b856bdB09FC9EB32e83616",
+ "paymaster_type": "cw",
+ "gas_extra_percentage": 50
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/eure.polygon.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "USDC on Polygon",
+ "description": "The community of people using USDC on Polygon.",
+ "url": "https://en.wikipedia.org/wiki/USD_Coin",
+ "alias": "app",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/usdc.svg",
+ "hidden": true,
+ "theme": {
+ "primary": "#0052ff"
+ },
+ "profile": {
+ "address": "0xA63DFccB8a39a3DFE4479b33190b12019Ee594E7",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x270758454C012A1f51428b68aE473D728CCdFe88",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174": {
+ "standard": "erc20",
+ "name": "USD Coin",
+ "address": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
+ "symbol": "USDC",
+ "decimals": 6,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x270758454C012A1f51428b68aE473D728CCdFe88": {
+ "chain_id": 137,
+ "entrypoint_address": "0x466AA6ed2B7Bb829841F5aAEA9e82B840eC0feF9",
+ "paymaster_address": "0xB5D1C0167E6325466E2918e9fda8cc41384C0291",
+ "account_factory_address": "0x270758454C012A1f51428b68aE473D728CCdFe88",
+ "paymaster_type": "cw",
+ "gas_extra_percentage": 50
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/app.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "USDC on Base",
+ "description": "The community of people using USDC on Base.",
+ "url": "https://en.wikipedia.org/wiki/USD_Coin",
+ "alias": "usdc.base",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/usdc.svg",
+ "hidden": true,
+ "theme": {
+ "primary": "#0052ff"
+ },
+ "profile": {
+ "address": "0x51Ef5Add405CCF63c206A80AF8c2B3cEE0282830",
+ "chain_id": 8453
+ },
+ "primary_token": {
+ "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
+ "chain_id": 8453
+ },
+ "primary_account_factory": {
+ "address": "0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99",
+ "chain_id": 8453
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 8453
+ }
+ },
+ "tokens": {
+ "8453:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913": {
+ "standard": "erc20",
+ "name": "USD Coin",
+ "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
+ "symbol": "USDC",
+ "decimals": 6,
+ "chain_id": 8453
+ }
+ },
+ "scan": {
+ "url": "https://basescan.org",
+ "name": "Base Explorer"
+ },
+ "accounts": {
+ "8453:0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99": {
+ "chain_id": 8453,
+ "entrypoint_address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
+ "paymaster_address": "0xA63DFccB8a39a3DFE4479b33190b12019Ee594E7",
+ "account_factory_address": "0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99",
+ "paymaster_type": "cw",
+ "gas_extra_percentage": 50
+ }
+ },
+ "sessions": {
+ "8453:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 8453,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "8453": {
+ "id": 8453,
+ "node": {
+ "url": "https://8453.engine.citizenwallet.xyz",
+ "ws_url": "wss://8453.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/usdc.base.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "OAK Community",
+ "description": "A community currency for the city of Oakland.",
+ "url": "https://www.oak.community/",
+ "alias": "wallet.oak.community",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/oak.svg",
+ "custom_domain": "wallet.oak.community",
+ "hidden": true,
+ "profile": {
+ "address": "0xFE213c74e25505B232CE4C7f89647408bE6f71d2",
+ "chain_id": 8453
+ },
+ "primary_token": {
+ "address": "0x845598Da418890a674cbaBA26b70807aF0c61dFE",
+ "chain_id": 8453
+ },
+ "primary_account_factory": {
+ "address": "0x9406Cc6185a346906296840746125a0E44976454",
+ "chain_id": 8453
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 8453
+ }
+ },
+ "tokens": {
+ "8453:0x845598Da418890a674cbaBA26b70807aF0c61dFE": {
+ "standard": "erc20",
+ "name": "OAK Community Currency",
+ "address": "0x845598Da418890a674cbaBA26b70807aF0c61dFE",
+ "symbol": "OAK",
+ "decimals": 6,
+ "chain_id": 8453
+ }
+ },
+ "scan": {
+ "url": "https://basescan.org",
+ "name": "Base Explorer"
+ },
+ "accounts": {
+ "8453:0x9406Cc6185a346906296840746125a0E44976454": {
+ "chain_id": 8453,
+ "entrypoint_address": "0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789",
+ "paymaster_address": "0x123",
+ "account_factory_address": "0x9406Cc6185a346906296840746125a0E44976454",
+ "paymaster_type": "payg"
+ }
+ },
+ "sessions": {
+ "8453:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 8453,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "8453": {
+ "id": 8453,
+ "node": {
+ "url": "https://8453.engine.citizenwallet.xyz",
+ "ws_url": "wss://8453.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.oak.community.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Stable Coin",
+ "description": "SBC is a digital dollar stablecoin issued by Brale",
+ "url": "https://brale.xyz/",
+ "alias": "sbc.polygon",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/sbc.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0xcA0a75EF803a364C83c5EAE7Eb889aE7419c9dF2",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0xfdcC3dd6671eaB0709A4C0f3F53De9a333d80798",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x3Be13D9325C8C9174C3819d3d868D5D3aB8Fc8a5",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0xfdcC3dd6671eaB0709A4C0f3F53De9a333d80798": {
+ "standard": "erc20",
+ "name": "Stable Coin",
+ "address": "0xfdcC3dd6671eaB0709A4C0f3F53De9a333d80798",
+ "symbol": "SBC",
+ "decimals": 18,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x3Be13D9325C8C9174C3819d3d868D5D3aB8Fc8a5": {
+ "chain_id": 137,
+ "entrypoint_address": "0xe84423Ba1A3f3535B09237245e22dBda5E27eB88",
+ "paymaster_address": "0x123",
+ "account_factory_address": "0x3Be13D9325C8C9174C3819d3d868D5D3aB8Fc8a5",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/sbc.polygon.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Zinne.brussels",
+ "description": "A community currency for the city of Brussels",
+ "url": "https://zinne.brussels",
+ "alias": "zinne",
+ "logo": "https://citizenwallet.xyz/zinne/zinne-coin.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0x23DB3D3Da510e60aF40902A04850E1F3a744905c",
+ "chain_id": 137
+ },
+ "primary_token": {
+ "address": "0x5491a3d35F148a44F0af4D718B9636A6e55eBc2D",
+ "chain_id": 137
+ },
+ "primary_account_factory": {
+ "address": "0x11af2639817692D2b805BcE0e1e405E530B20006",
+ "chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
+ }
+ },
+ "tokens": {
+ "137:0x5491a3d35F148a44F0af4D718B9636A6e55eBc2D": {
+ "standard": "erc20",
+ "name": "Zinne.brussels Token",
+ "address": "0x5491a3d35F148a44F0af4D718B9636A6e55eBc2D",
+ "symbol": "ZINNE",
+ "decimals": 6,
+ "chain_id": 137
+ }
+ },
+ "scan": {
+ "url": "https://polygonscan.com",
+ "name": "Polygon Explorer"
+ },
+ "accounts": {
+ "137:0x11af2639817692D2b805BcE0e1e405E530B20006": {
+ "chain_id": 137,
+ "entrypoint_address": "0xF5507B3042f1C63625D856a2ABFF046243A5D74e",
+ "paymaster_address": "0xBb796D122Ec1aBDeD081D50B06a072f981c7E62b",
+ "account_factory_address": "0x11af2639817692D2b805BcE0e1e405E530B20006",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "137": {
+ "id": 137,
+ "node": {
+ "url": "https://137.engine.citizenwallet.xyz",
+ "ws_url": "wss://137.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/zinne.brussels.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Regens Unite Time Bank",
+ "description": "Make time to regen",
+ "url": "https://regensunite.earth",
+ "alias": "timebank.regensunite.earth",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/rgn.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0x605A827DF8C405D16Ec70AAb8d9a47D21db45c09",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x186DaBD027e228C988777907465807FDab270894",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x39b77d77f7677997871b304094a05295eb71e240",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x186DaBD027e228C988777907465807FDab270894": {
+ "standard": "erc20",
+ "name": "Regen Hour",
+ "address": "0x186DaBD027e228C988777907465807FDab270894",
+ "symbol": "rHour",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "CELO Explorer"
+ },
+ "accounts": {
+ "42220:0x39b77d77f7677997871b304094a05295eb71e240": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x41176F0C9b8f795Cb99e2DD5Db16017978eeFa4d",
+ "paymaster_address": "0xe45858bf63176595c2920822581917c7C705a12f",
+ "account_factory_address": "0x39b77d77f7677997871b304094a05295eb71e240",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "Market",
+ "icon": "https://timebank.regensunite.earth/uploads/logo.svg",
+ "url": "https://marketplace.citizenwallet.xyz/timebank.regensunite.earth",
+ "launch_mode": "webview"
+ }
+ ],
+ "config_location": "https://timebank.regensunite.earth/indexer",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "MOOS Token",
+ "description": "A community currency for MOOS.",
+ "url": "https://www.moos.garden/",
+ "alias": "moos",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/moos.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0x2e4542Be47408d05F41703386eFaf4338Ee1D341",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x230542eda83346929e4E54f4a98e1ca1A4BFc0c3",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x671f0662de72268d0f3966Fb62dFc6ee6389e244",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x230542eda83346929e4E54f4a98e1ca1A4BFc0c3": {
+ "standard": "erc20",
+ "name": "MOOS Token",
+ "address": "0x230542eda83346929e4E54f4a98e1ca1A4BFc0c3",
+ "symbol": "MOOS",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0x671f0662de72268d0f3966Fb62dFc6ee6389e244": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x45a8e6AaDCc48D1Ce19eCbE07Ccd3a536EF712ed",
+ "paymaster_address": "0x55E519bfD63c7152D9F7B88Acd712A37F0BEC482",
+ "account_factory_address": "0x671f0662de72268d0f3966Fb62dFc6ee6389e244",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "Market",
+ "icon": "https://moos.citizenwallet.xyz/wallet-config/_images/moos.svg",
+ "url": "https://marketplace.citizenwallet.xyz/moos",
+ "launch_mode": "webview"
+ }
+ ],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/moos.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Bonne Heure",
+ "description": "Système d'Échange Local de Villers-la-Ville",
+ "url": "https://selcoupdepouce.be",
+ "alias": "selcoupdepouce",
+ "logo": "https://topup.citizenwallet.xyz/communities/selcoupdepouce/sel-coin.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0xfB8F1e7ED42599638B3c509679E2F43937002C56",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x5Cdbc862BF4E20D98456D4c41D4A5239aDd496d3",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x4Cc883b7E8E0BCB2e293703EF06426F9b4A5A284",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x5Cdbc862BF4E20D98456D4c41D4A5239aDd496d3": {
+ "standard": "erc20",
+ "name": "Bonne Heure",
+ "address": "0x5Cdbc862BF4E20D98456D4c41D4A5239aDd496d3",
+ "symbol": "BHR",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0x4Cc883b7E8E0BCB2e293703EF06426F9b4A5A284": {
+ "chain_id": 42220,
+ "entrypoint_address": "0xA90904F33df36899d810d040b8d5b3b77265Bb05",
+ "paymaster_address": "0x635032605337aB36A46D767905108e67EE687a72",
+ "account_factory_address": "0x4Cc883b7E8E0BCB2e293703EF06426F9b4A5A284",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "plugins": [
+ {
+ "name": "Market",
+ "icon": "https://marketplace.citizenwallet.xyz/marketplace.svg",
+ "url": "https://marketplace.citizenwallet.xyz/selcoupdepouce",
+ "launch_mode": "browser"
+ }
+ ],
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/selcoupdepouce.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "CI token",
+ "description": "Monnaie locale du Cercle Informatique de l’ULB",
+ "url": "https://citizenwallet.xyz/cit",
+ "alias": "cit.celo",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/cit.celo.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0x4cB296BEc9FAd0B5e1E4FF1A2F307B425724AC82",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x12e26FAED228c425BceA8a8dd7658a9CeD944dd9",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x0a9f4B7e7Ec393fF25dc9267289Be259Ec3FB970",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x12e26FAED228c425BceA8a8dd7658a9CeD944dd9": {
+ "standard": "erc20",
+ "name": "CI token",
+ "address": "0x12e26FAED228c425BceA8a8dd7658a9CeD944dd9",
+ "symbol": "CIT",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0x0a9f4B7e7Ec393fF25dc9267289Be259Ec3FB970": {
+ "chain_id": 42220,
+ "entrypoint_address": "0xB8d9412f3A91A00ca762B5c35cd0863E9b716D68",
+ "paymaster_address": "0x452F7ff3e55fe29f481841985dE7f4939FD645fa",
+ "account_factory_address": "0x0a9f4B7e7Ec393fF25dc9267289Be259Ec3FB970",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/cit.celo.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Wolugo",
+ "description": "A community for the Woluwe-Saint-Pierre civic engagement platform",
+ "url": "https://wolugo.be",
+ "alias": "wallet.wolugo.be",
+ "custom_domain": "wallet.wolugo.be",
+ "logo": "https://wallet.wolugo.be/uploads/logo.svg",
+ "theme": {
+ "primary": "#81e2c1"
+ },
+ "hidden": true,
+ "profile": {
+ "address": "0x07e7b95B35866302b3A089feF4CFA3061061a51d",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x13Dd4B3cD2f2Be3eb41cD0C3E2ce9F8d8C93A451",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x8474153A00C959f2cB64852949954DBC68415Bb3",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ },
+ "card_factory": {
+ "address": "0xA3E1446E332a098A1f3b0555c5d149b4784A095F",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x13Dd4B3cD2f2Be3eb41cD0C3E2ce9F8d8C93A451": {
+ "standard": "erc20",
+ "name": "Wolu",
+ "address": "0x13Dd4B3cD2f2Be3eb41cD0C3E2ce9F8d8C93A451",
+ "symbol": "WOLU",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "CELO Explorer"
+ },
+ "accounts": {
+ "42220:0x8474153A00C959f2cB64852949954DBC68415Bb3": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x0F805BC1ED718FB9C7C18439cB11E1C17C6538C4",
+ "paymaster_address": "0xF2EFEC3cBFaDE0bB6108620cbF7Cc608d27DCF3c",
+ "account_factory_address": "0x8474153A00C959f2cB64852949954DBC68415Bb3",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "cards": {
+ "42220:0xA3E1446E332a098A1f3b0555c5d149b4784A095F": {
+ "chain_id": 42220,
+ "address": "0xA3E1446E332a098A1f3b0555c5d149b4784A095F",
+ "type": "classic"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.wolugo.be.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Woluwe Test",
+ "description": "Local currency for the Woluwe Test community.",
+ "url": "https://wollet-v2.citizenwallet.net/token",
+ "alias": "wtc.celo",
+ "logo": "https://wtc.celo.citizenwallet.xyz/wallet-config/_images/wtc.celo.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0xB99a7B1574f051020EB4cb2fce5d48EE07592AfF",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0xc53Cb35591959cA62471dA9fF6AC16629A89874a",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0xE79E19594A749330036280c685E2719d58d99052",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0xc53Cb35591959cA62471dA9fF6AC16629A89874a": {
+ "standard": "erc20",
+ "name": "Woluwe Test Coin",
+ "address": "0xc53Cb35591959cA62471dA9fF6AC16629A89874a",
+ "symbol": "WTC",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0xE79E19594A749330036280c685E2719d58d99052": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
+ "paymaster_address": "0x3fefC19674f3F6E43B1dFf1861E07c303B9eAAc9",
+ "account_factory_address": "0xE79E19594A749330036280c685E2719d58d99052",
+ "paymaster_type": "cw"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/wtc.celo.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "ETHGlobal London Token",
+ "description": "The community of people using ETHLDN on Base.",
+ "url": "https://en.wikipedia.org/wiki/USD_Coin",
+ "alias": "testnet-ethldn",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/testnet-ethldn.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0x0785D720279f42326846D5396b5F44b97d0BfECd",
+ "chain_id": 84532
+ },
+ "primary_token": {
+ "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
+ "chain_id": 84532
+ },
+ "primary_account_factory": {
+ "address": "0xc1654087C580f868F08E34cd1c01eDB1d3673b82",
+ "chain_id": 84532
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 84532
+ }
+ },
+ "tokens": {
+ "84532:0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e": {
+ "standard": "erc20",
+ "name": "ETHGlobal London Token",
+ "address": "0x9b1a0D2951b11Ac26A6cBbd5aEf2c4cb014b3B6e",
+ "symbol": "ETHLDN",
+ "decimals": 6,
+ "chain_id": 84532
+ }
+ },
+ "scan": {
+ "url": "https://sepolia.basescan.org",
+ "name": "Base Sepolia Explorer"
+ },
+ "accounts": {
+ "84532:0xc1654087C580f868F08E34cd1c01eDB1d3673b82": {
+ "chain_id": 84532,
+ "entrypoint_address": "0xBABCf159c4e3186cf48e4a48bC0AeC17CF9d90FE",
+ "paymaster_address": "0x389182aCCeE26D953d5188BF4b92c49339DcC9FC",
+ "account_factory_address": "0xc1654087C580f868F08E34cd1c01eDB1d3673b82",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "84532:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 84532,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "84532": {
+ "id": 84532,
+ "node": {
+ "url": "https://84532.engine.citizenwallet.xyz",
+ "ws_url": "wss://84532.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/testnet-ethldn.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "Celo Community Point",
+ "description": "This is a community for the Celo Point",
+ "url": "https://citizenwallet.xyz",
+ "alias": "celo-c.citizenwallet.xyz",
+ "logo": "https://celo-c.citizenwallet.xyz/uploads/logo.svg",
+ "hidden": true,
+ "profile": {
+ "address": "0x14004E13907282cFaD05f742022E56926eE92dAd",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x3C960E72BBbD837293e75080E1d0Fee6a4640357",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0xcd8b1B9E760148c5026Bc5B0D56a5374e301FDcA",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x3C960E72BBbD837293e75080E1d0Fee6a4640357": {
+ "standard": "erc20",
+ "name": "Celo Community Point",
+ "address": "0x3C960E72BBbD837293e75080E1d0Fee6a4640357",
+ "symbol": "CeloC",
+ "decimals": 6,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "CELO Explorer"
+ },
+ "accounts": {
+ "42220:0xcd8b1B9E760148c5026Bc5B0D56a5374e301FDcA": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x66fE9c22CcA49B257dd4F00508AC90198d99Bf27",
+ "paymaster_address": "0x7f4011845Ea914b6cefc60629e1e00600c972c75",
+ "account_factory_address": "0xcd8b1B9E760148c5026Bc5B0D56a5374e301FDcA",
+ "paymaster_type": "cw"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/celo-c.citizenwallet.xyz.json",
+ "version": 4
+ },
+ {
+ "community": {
+ "name": "KFMEDIA℠",
+ "description": "Certified Education Organization. Solving systemic educational disparity using Web3 solutions, removing barriers of entry for underdeveloped economies.",
+ "url": "https://kingfishersmedia.io",
+ "alias": "wallet.kingfishersmedia.io",
+ "custom_domain": "wallet.kingfishersmedia.io",
+ "logo": "https://assets.citizenwallet.xyz/wallet-config/_images/kfmpfl.png",
+ "theme": {
+ "primary": "#88292c"
+ },
+ "profile": {
+ "address": "0x5f6FEb03ad8EfeCdD2a837FAA1a29DEA2bAcfd55",
+ "chain_id": 42220
+ },
+ "primary_token": {
+ "address": "0x56744910f7dEcD48c1a7FA61B4C317b15E99F156",
+ "chain_id": 42220
+ },
+ "primary_account_factory": {
+ "address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "chain_id": 42220
+ },
+ "primary_card_manager": {
+ "address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
+ "chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ }
+ },
+ "tokens": {
+ "42220:0x56744910f7dEcD48c1a7FA61B4C317b15E99F156": {
+ "standard": "erc1155",
+ "name": "KFMEDIA℠ Pathways for LATAM™",
+ "address": "0x56744910f7dEcD48c1a7FA61B4C317b15E99F156",
+ "symbol": "KFMPFL",
+ "decimals": 0,
+ "chain_id": 42220
+ }
+ },
+ "scan": {
+ "url": "https://celoscan.io",
+ "name": "Celo Explorer"
+ },
+ "accounts": {
+ "42220:0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2": {
+ "chain_id": 42220,
+ "entrypoint_address": "0x7079253c0358eF9Fd87E16488299Ef6e06F403B6",
+ "paymaster_address": "0x02BDA8370d9497A5C808B2db237cfaA8f0733F36",
+ "account_factory_address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
+ "paymaster_type": "cw-safe"
+ }
+ },
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+ "chains": {
+ "42220": {
+ "id": 42220,
+ "node": {
+ "url": "https://42220.engine.citizenwallet.xyz",
+ "ws_url": "wss://42220.engine.citizenwallet.xyz"
+ }
+ }
+ },
+ "ipfs": {
+ "url": "https://ipfs.internal.citizenwallet.xyz"
+ },
+ "config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.kingfishersmedia.io.json",
+ "version": 4
+ }
]
\ No newline at end of file
diff --git a/src/services/config/communities.local.json b/src/services/config/communities.local.json
index 31ea696..850d146 100644
--- a/src/services/config/communities.local.json
+++ b/src/services/config/communities.local.json
@@ -20,6 +20,10 @@
"primary_account_factory": {
"address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -45,6 +49,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"137": {
"id": 137,
@@ -95,6 +107,10 @@
"primary_card_manager": {
"address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
"chain_id": 100
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 100
}
},
"tokens": {
@@ -127,6 +143,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "100:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 100,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"cards": {
"100:0x1EaF6B6A6967608aF6c77224f087b042095891EB": {
"chain_id": 100,
@@ -189,6 +213,10 @@
"primary_card_manager": {
"address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -221,6 +249,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"cards": {
"42220:0x1EaF6B6A6967608aF6c77224f087b042095891EB": {
"chain_id": 42220,
@@ -266,6 +302,10 @@
"primary_account_factory": {
"address": "0x5e987a6c4bb4239d498E78c34e986acf29c81E8e",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -291,6 +331,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"137": {
"id": 137,
@@ -337,6 +385,10 @@
"primary_account_factory": {
"address": "0x940Cbb155161dc0C4aade27a4826a16Ed8ca0cb2",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -362,6 +414,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"137": {
"id": 137,
@@ -395,6 +455,10 @@
"primary_account_factory": {
"address": "0xAE76B1C6818c1DD81E20ccefD3e72B773068ABc9",
"chain_id": 100
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 100
}
},
"tokens": {
@@ -427,6 +491,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "100:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 100,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"100": {
"id": 100,
@@ -472,6 +544,10 @@
"primary_account_factory": {
"address": "0x307A9456C4057F7C7438a174EFf3f25fc0eA6e87",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -497,6 +573,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -552,6 +636,10 @@
"primary_card_manager": {
"address": "0xBA861e2DABd8316cf11Ae7CdA101d110CF581f28",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -577,6 +665,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -640,6 +736,10 @@
"primary_card_manager": {
"address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
"chain_id": 100
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 100
}
},
"tokens": {
@@ -665,6 +765,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "100:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 100,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"100": {
"id": 100,
@@ -701,6 +809,10 @@
"primary_account_factory": {
"address": "0x9406Cc6185a346906296840746125a0E44976454",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -727,6 +839,14 @@
"gas_extra_percentage": 50
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"137": {
"id": 137,
@@ -766,6 +886,10 @@
"primary_account_factory": {
"address": "0xAE6E18a9Cd26de5C8f89B886283Fc3f0bE5f04DD",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -791,6 +915,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -829,6 +961,10 @@
"primary_account_factory": {
"address": "0xdA529eBEd3D459dac9d9D3D45b8Cae2D5796c098",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -854,6 +990,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -889,6 +1033,10 @@
"primary_account_factory": {
"address": "0x5bA08d9fC7b90f79B2b856bdB09FC9EB32e83616",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -915,6 +1063,14 @@
"gas_extra_percentage": 50
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"137": {
"id": 137,
@@ -953,6 +1109,10 @@
"primary_account_factory": {
"address": "0x270758454C012A1f51428b68aE473D728CCdFe88",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -979,6 +1139,14 @@
"gas_extra_percentage": 50
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"137": {
"id": 137,
@@ -1017,6 +1185,10 @@
"primary_account_factory": {
"address": "0x05e2Fb34b4548990F96B3ba422eA3EF49D5dAa99",
"chain_id": 8453
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 8453
}
},
"tokens": {
@@ -1043,6 +1215,14 @@
"gas_extra_percentage": 50
}
},
+ "sessions": {
+ "8453:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 8453,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"8453": {
"id": 8453,
@@ -1079,6 +1259,10 @@
"primary_account_factory": {
"address": "0x9406Cc6185a346906296840746125a0E44976454",
"chain_id": 8453
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 8453
}
},
"tokens": {
@@ -1104,6 +1288,14 @@
"paymaster_type": "payg"
}
},
+ "sessions": {
+ "8453:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 8453,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"8453": {
"id": 8453,
@@ -1139,6 +1331,10 @@
"primary_account_factory": {
"address": "0x3Be13D9325C8C9174C3819d3d868D5D3aB8Fc8a5",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -1164,6 +1360,15 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+
"chains": {
"137": {
"id": 137,
@@ -1199,6 +1404,10 @@
"primary_account_factory": {
"address": "0x11af2639817692D2b805BcE0e1e405E530B20006",
"chain_id": 137
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 137
}
},
"tokens": {
@@ -1224,6 +1433,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "137:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 137,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"137": {
"id": 137,
@@ -1259,6 +1476,10 @@
"primary_account_factory": {
"address": "0x39b77d77f7677997871b304094a05295eb71e240",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -1284,6 +1505,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -1326,6 +1555,10 @@
"primary_account_factory": {
"address": "0x671f0662de72268d0f3966Fb62dFc6ee6389e244",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -1351,6 +1584,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -1393,6 +1634,10 @@
"primary_account_factory": {
"address": "0x4Cc883b7E8E0BCB2e293703EF06426F9b4A5A284",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -1418,6 +1663,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -1460,6 +1713,10 @@
"primary_account_factory": {
"address": "0x0a9f4B7e7Ec393fF25dc9267289Be259Ec3FB970",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -1485,6 +1742,16 @@
"paymaster_type": "cw"
}
},
+
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
+
"chains": {
"42220": {
"id": 42220,
@@ -1524,6 +1791,10 @@
"address": "0x8474153A00C959f2cB64852949954DBC68415Bb3",
"chain_id": 42220
},
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
+ },
"card_factory": {
"address": "0xA3E1446E332a098A1f3b0555c5d149b4784A095F",
"chain_id": 42220
@@ -1552,6 +1823,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"cards": {
"42220:0xA3E1446E332a098A1f3b0555c5d149b4784A095F": {
"chain_id": 42220,
@@ -1593,6 +1872,10 @@
"primary_account_factory": {
"address": "0xE79E19594A749330036280c685E2719d58d99052",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -1618,6 +1901,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -1652,6 +1943,10 @@
"primary_account_factory": {
"address": "0xc1654087C580f868F08E34cd1c01eDB1d3673b82",
"chain_id": 84532
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 84532
}
},
"tokens": {
@@ -1677,6 +1972,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "84532:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 84532,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"84532": {
"id": 84532,
@@ -1711,6 +2014,10 @@
"primary_account_factory": {
"address": "0xcd8b1B9E760148c5026Bc5B0D56a5374e301FDcA",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -1736,6 +2043,14 @@
"paymaster_type": "cw"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -1777,6 +2092,10 @@
"primary_card_manager": {
"address": "0x1EaF6B6A6967608aF6c77224f087b042095891EB",
"chain_id": 42220
+ },
+ "primary_session_manager": {
+ "address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "chain_id": 42220
}
},
"tokens": {
@@ -1802,6 +2121,14 @@
"paymaster_type": "cw-safe"
}
},
+ "sessions": {
+ "42220:0xE2F3DC3E638113b9496060349e5332963d9C1152": {
+ "chain_id": 42220,
+ "module_address": "0xE2F3DC3E638113b9496060349e5332963d9C1152",
+ "factory_address": "0xEd0cD3886b84369A0e29Db9a4480ADF5051c76C9",
+ "provider_address": "0xF3004A1690f97Cf5d307eDc5958a7F76b62f9FC9"
+ }
+ },
"chains": {
"42220": {
"id": 42220,
@@ -1817,4 +2144,4 @@
"config_location": "https://config.internal.citizenwallet.xyz/v4/wallet.kingfishersmedia.io.json",
"version": 4
}
-]
\ No newline at end of file
+]
diff --git a/src/services/config/index.ts b/src/services/config/index.ts
index c9f4526..701b5b2 100644
--- a/src/services/config/index.ts
+++ b/src/services/config/index.ts
@@ -18,7 +18,7 @@ const getCommunityFile = async (): Promise => {
};
export const readCommunityFile = async (
- _alias = process.env.FALLBACK_COMMUNITY_ALIAS ?? ""
+ _alias = process.env.FALLBACK_COMMUNITY_ALIAS ?? "",
): Promise => {
let alias = _alias;
if (process.env.NODE_ENV === "development") {
@@ -38,11 +38,10 @@ export const readCommunityFile = async (
};
export const getCommunityFromHeaders = async (
- headersList: ReadonlyHeaders
+ headersList: ReadonlyHeaders,
): Promise => {
const domain = headersList.get("host") || "";
- console.log("domain", domain);
let alias = domain;
if (typedManualMapping[domain]) {
alias = typedManualMapping[domain];
@@ -50,7 +49,5 @@ export const getCommunityFromHeaders = async (
alias = parseAliasFromDomain(domain, process.env.DOMAIN_BASE_PATH || "");
}
- console.log("alias", alias);
-
return readCommunityFile(alias);
};
diff --git a/src/services/config/manualMapping.json b/src/services/config/manualMapping.json
index e92d251..89edf9e 100644
--- a/src/services/config/manualMapping.json
+++ b/src/services/config/manualMapping.json
@@ -1,3 +1,3 @@
{
- "tap.pay.brussels": "wallet.pay.brussels"
-}
\ No newline at end of file
+ "tap.pay.brussels": "wallet.pay.brussels"
+}
diff --git a/src/services/storage/index.ts b/src/services/storage/index.ts
index cb59493..4a56cb8 100644
--- a/src/services/storage/index.ts
+++ b/src/services/storage/index.ts
@@ -1,14 +1,70 @@
+import { WebAuthnCredential } from "@simplewebauthn/server";
+
export class StorageService {
alias: string;
constructor(alias: string) {
this.alias = alias;
}
- setKey(key: string, value: string) {
+ setKey(key: StorageKey, value: string) {
localStorage.setItem(`${this.alias}_${key}`, value);
}
- getKey(key: string) {
+ getKey(key: StorageKey) {
return localStorage.getItem(`${this.alias}_${key}`);
}
+
+ deleteKey(key: StorageKey) {
+ localStorage.removeItem(`${this.alias}_${key}`);
+ }
+
+ savePasskey(credential: WebAuthnCredential) {
+ const existingPasskeys = this.getAllPasskeys();
+ const passkeyExists = existingPasskeys.some(
+ (passkey) => passkey.id === credential.id,
+ );
+ if (!passkeyExists) {
+ existingPasskeys.push(credential);
+ localStorage.setItem(
+ `${this.alias}_${StorageKeys.passkey}`,
+ JSON.stringify(existingPasskeys),
+ );
+ }
+ }
+
+ getAllPasskeys(): WebAuthnCredential[] {
+ const passkeys = localStorage.getItem(
+ `${this.alias}_${StorageKeys.passkey}`,
+ );
+ if (!passkeys) {
+ return [];
+ }
+
+ const storedPasskeys = JSON.parse(passkeys) as any[];
+
+ storedPasskeys.forEach((passkey) => {
+ passkey.publicKey = new Uint8Array(Object.values(passkey.publicKey));
+ });
+
+ return storedPasskeys;
+ }
}
+
+export const StorageKeys = {
+ session_private_key: "session_private_key",
+ session_hash: "session_hash",
+ session_source_value: "session_source_value",
+ session_source_type: "session_source_type",
+ passkey: "passkey",
+
+ // for passkeys
+ session_challenge_hash: "session_challenge_hash",
+ session_challenge_expiry: "session_challenge_expiry",
+
+ hash: "hash", //hash of local accounts
+
+ // for deeplinks
+ deeplink: "deeplink",
+} as const;
+
+export type StorageKey = keyof typeof StorageKeys;
diff --git a/src/services/walletkit/index.ts b/src/services/walletkit/index.ts
index 07d47b6..abd492a 100644
--- a/src/services/walletkit/index.ts
+++ b/src/services/walletkit/index.ts
@@ -124,7 +124,7 @@ class WalletKitService {
static buildNamespaces(
proposal: ProposalTypes.Struct,
- account: string
+ account: string,
): SessionTypes.Namespaces {
const chainId = WalletKitService.communityConfig.primaryToken.chain_id;
@@ -145,7 +145,7 @@ class WalletKitService {
static populateAuthPayload(
payloadParams: AuthTypes.PayloadParams,
- account: string
+ account: string,
) {
if (!WalletKitService.walletKit) return;
const chainId = WalletKitService.communityConfig.primaryToken.chain_id;
@@ -169,12 +169,12 @@ class WalletKitService {
static async getContractDetails(
community: CommunityConfig,
- address: string
+ address: string,
): Promise {
const explorerApi = "https://api.gnosisscan.io/api"; // TODO: add to community.json file
let response = await fetch(
- `${explorerApi}?module=contract&action=getsourcecode&address=${address}&apikey=${process.env.NEXT_PUBLIC_GNOSIS_SCAN_API_KEY}`
+ `${explorerApi}?module=contract&action=getsourcecode&address=${address}&apikey=${process.env.NEXT_PUBLIC_GNOSIS_SCAN_API_KEY}`,
);
let data = await response.json();
@@ -193,7 +193,7 @@ class WalletKitService {
const implementation = result.Implementation;
if (implementation) {
response = await fetch(
- `${explorerApi}?module=contract&action=getsourcecode&address=${implementation}&apikey=${process.env.NEXT_PUBLIC_GNOSIS_SCAN_API_KEY}`
+ `${explorerApi}?module=contract&action=getsourcecode&address=${implementation}&apikey=${process.env.NEXT_PUBLIC_GNOSIS_SCAN_API_KEY}`,
);
data = await response.json();
@@ -239,16 +239,16 @@ class WalletKitService {
i === 0
? `${acc}${input.name} ${input.type}`
: `${acc},${input.name} ${input.type}`,
- ""
+ "",
)})`,
signature: keccak256(
toUtf8Bytes(
`${v.name}(${v.inputs.reduce(
(acc, input, i) =>
i === 0 ? `${acc}${input.type}` : `${acc},${input.type}`,
- ""
- )})`
- )
+ "",
+ )})`,
+ ),
).slice(0, 10),
selected: false,
}));
diff --git a/src/state/account/actions.ts b/src/state/account/actions.ts
index 1537cde..4580445 100644
--- a/src/state/account/actions.ts
+++ b/src/state/account/actions.ts
@@ -13,7 +13,7 @@ import {
import { StorageService } from "@/services/storage";
import { CWAccount } from "@/services/account";
import { generateWalletHash } from "@/services/account/urlAccount";
-import { formatUnits } from "ethers";
+import { formatUnits, Wallet } from "ethers";
import { generateAccountHashPath } from "@/utils/hash";
export class AccountLogic {
@@ -43,11 +43,11 @@ export class AccountLogic {
this.account = new CWAccount(this.config, accountAddress);
}
+ // local account
async openAccount(
hash: string,
- createAccountCallback: (hashPath: string) => void
+ createAccountCallback: (hashPath: string) => void,
) {
- console.log("openAccount", hash);
const format = parseQRFormat(hash);
let accountHash: string | null = hash;
@@ -69,7 +69,7 @@ export class AccountLogic {
this.baseUrl,
accountHash,
walletPassword,
- this.config
+ this.config,
);
if (!this.account) {
throw new Error("Invalid wallet format");
@@ -80,12 +80,21 @@ export class AccountLogic {
this.state.setAccount(this.account.account);
this.state.setOwner(true);
- createAccountCallback(accountHash);
+ createAccountCallback(this.account.account);
} catch (e) {
console.error(e);
}
}
+ // session based account
+ async openSessionAccount(accountAddress: string) {
+ const privateKey = this.storage.getKey("session_private_key");
+
+ const wallet = privateKey ? new Wallet(privateKey) : undefined;
+
+ this.account = new CWAccount(this.config, accountAddress, wallet);
+ }
+
async createAccount(createAccountCallback: (hashPath: string) => void) {
try {
const walletPassword = process.env.NEXT_PUBLIC_WEB_BURNER_PASSWORD;
@@ -102,12 +111,12 @@ export class AccountLogic {
const hash = await generateWalletHash(
this.account.account,
this.account.signer,
- walletPassword
+ walletPassword,
);
const hashPath = generateAccountHashPath(
hash,
- this.config.community.alias
+ this.config.community.alias,
);
this.storage.setKey("hash", hashPath);
@@ -115,7 +124,7 @@ export class AccountLogic {
this.state.setAccount(this.account.account);
this.state.setOwner(true);
- createAccountCallback(hashPath);
+ createAccountCallback(this.account.account);
} catch (e) {
console.error(e);
}
@@ -173,7 +182,7 @@ export class AccountLogic {
const { array: logs = [] } = await this.logsService.getNewLogs(
primaryToken.address,
tokenTransferEventTopic,
- params
+ params,
);
if (logs.length > 0) {
@@ -211,7 +220,7 @@ export class AccountLogic {
const { array: logs } = await this.logsService.getLogs(
primaryToken.address,
account,
- params
+ params,
);
this.state.putLogs(logs);
@@ -272,7 +281,7 @@ export class AccountLogic {
const logs = await this.logsService.getLogs(
primaryToken.address,
tokenTransferEventTopic,
- params
+ params,
);
this.logsPagination = logs.meta;
@@ -293,17 +302,20 @@ export class AccountLogic {
async send(
to: string,
amount: string,
- description?: string
+ description?: string,
): Promise {
try {
if (!this.account) {
throw new Error("Account not set");
}
+ this.state.sendRequest();
const tx = await this.account.send(to, amount, description);
+ this.state.sendSuccess();
return tx;
} catch (error) {
+ this.state.sendFailure(error as string);
console.error(error);
}
@@ -317,14 +329,14 @@ export class AccountLogic {
export const useAccount = (
baseUrl: string,
- config: Config
+ config: Config,
): [UseBoundStore>, AccountLogic] => {
- const sendStore = useAccountStore;
+ const accountStore = useAccountStore;
const actions = useMemo(
- () => new AccountLogic(baseUrl, sendStore.getState(), config),
- [baseUrl, sendStore, config]
+ () => new AccountLogic(baseUrl, accountStore.getState(), config),
+ [baseUrl, accountStore, config],
);
- return [sendStore, actions];
+ return [accountStore, actions];
};
diff --git a/src/state/account/state.ts b/src/state/account/state.ts
index 3c3c636..df4975c 100644
--- a/src/state/account/state.ts
+++ b/src/state/account/state.ts
@@ -39,9 +39,7 @@ export const useAccountStore = create((set) => ({
const existingLogs = [...state.logs];
logs.forEach((log) => {
- const existingLog = existingLogs.find(
- (t) => t.hash === log.hash
- );
+ const existingLog = existingLogs.find((t) => t.hash === log.hash);
if (!existingLog) {
existingLogs.unshift(log);
@@ -55,9 +53,7 @@ export const useAccountStore = create((set) => ({
const existingLogs = [...state.logs];
logs.forEach((log) => {
- const index = existingLogs.findIndex(
- (t) => t.hash === log.hash
- );
+ const index = existingLogs.findIndex((t) => t.hash === log.hash);
if (index === -1) {
existingLogs.push(log);
diff --git a/src/state/profiles/actions.ts b/src/state/profiles/actions.ts
index 717eb13..22e0d25 100644
--- a/src/state/profiles/actions.ts
+++ b/src/state/profiles/actions.ts
@@ -40,7 +40,7 @@ export class ProfilesActions {
const profile = await getProfileFromAddress(
ipfsDomain,
this.communityConfig,
- account
+ account,
);
if (!profile) {
@@ -64,7 +64,7 @@ export class ProfilesActions {
const profile = await getProfileFromUsername(
ipfsDomain,
this.communityConfig,
- username
+ username,
);
if (!profile) {
@@ -81,7 +81,7 @@ export class ProfilesActions {
debouncedLoadProfileFromUsername = debounce(
this.loadProfileFromUsername,
- 500
+ 500,
);
clear() {
@@ -90,13 +90,13 @@ export class ProfilesActions {
}
export const useProfiles = (
- config: Config
+ config: Config,
): [UseBoundStore>, ProfilesActions] => {
const profilesStore = useProfilesStore;
const actions = useMemo(
() => new ProfilesActions(profilesStore.getState(), config),
- [profilesStore, config]
+ [profilesStore, config],
);
return [profilesStore, actions];
diff --git a/src/state/profiles/selectors.ts b/src/state/profiles/selectors.ts
index c6143b8..91eb8b5 100644
--- a/src/state/profiles/selectors.ts
+++ b/src/state/profiles/selectors.ts
@@ -12,6 +12,6 @@ export const selectFilteredProfiles =
(profile) =>
profile.name.toLowerCase().trim().includes(lowerCaseInput) ||
profile.username.toLowerCase().trim().includes(lowerCaseInput) ||
- profile.account.toLowerCase().trim().includes(lowerCaseInput)
+ profile.account.toLowerCase().trim().includes(lowerCaseInput),
);
};
diff --git a/src/state/profiles/state.ts b/src/state/profiles/state.ts
index d9cfbc9..89119b6 100644
--- a/src/state/profiles/state.ts
+++ b/src/state/profiles/state.ts
@@ -27,7 +27,7 @@ export const getEmptyProfile = (account: string): Profile => {
export const getMinterProfile = (
account: string,
- community: ConfigCommunity
+ community: ConfigCommunity,
): Profile => {
return {
account,
@@ -42,7 +42,7 @@ export const getMinterProfile = (
export const getBurnerProfile = (
account: string,
- community: ConfigCommunity
+ community: ConfigCommunity,
): Profile => {
return {
account,
diff --git a/src/state/receive/actions.ts b/src/state/receive/actions.ts
index 7a368b2..407c91d 100644
--- a/src/state/receive/actions.ts
+++ b/src/state/receive/actions.ts
@@ -23,13 +23,13 @@ class SendLogic {
export const useReceive = (): [
UseBoundStore>,
- SendLogic
+ SendLogic,
] => {
const receiveStore = useReceiveStore;
const actions = useMemo(
() => new SendLogic(receiveStore.getState()),
- [receiveStore]
+ [receiveStore],
);
return [receiveStore, actions];
diff --git a/src/state/receive/selectors.ts b/src/state/receive/selectors.ts
index 4a49172..7075574 100644
--- a/src/state/receive/selectors.ts
+++ b/src/state/receive/selectors.ts
@@ -2,12 +2,13 @@ import { generateReceiveLink, CommunityConfig } from "@citizenwallet/sdk";
import { ReceiveState } from "./state";
export const generateSelectReceiveDeepLink =
- (account: string, communityConfig: CommunityConfig) => (state: ReceiveState) => {
+ (account: string, communityConfig: CommunityConfig) =>
+ (state: ReceiveState) => {
return generateReceiveLink(
state.baseUrl,
communityConfig,
account,
state.amount,
- state.description
+ state.description,
);
};
diff --git a/src/state/send/actions.ts b/src/state/send/actions.ts
index ffb475c..e0693cd 100644
--- a/src/state/send/actions.ts
+++ b/src/state/send/actions.ts
@@ -23,12 +23,7 @@ class SendActions {
throw new Error("Unsupported QR code format");
}
- const alias = parseAliasFromReceiveLink(data);
- if (!alias) {
- throw new Error("QR code from another community");
- }
-
- const [to, amount] = parseQRCode(data);
+ const [to, amount, description] = parseQRCode(data);
if (!to) {
throw new Error("Invalid QR code");
}
@@ -39,6 +34,10 @@ class SendActions {
this.updateAmount(amount);
}
+ if (description) {
+ this.updateDescription(description);
+ }
+
if (format === QRFormat.receiveUrl) {
const message = parseMessageFromReceiveLink(data);
@@ -89,7 +88,7 @@ class SendActions {
export const useSend = (): [
UseBoundStore>,
- SendActions
+ SendActions,
] => {
const sendStore = useSendStore;
diff --git a/src/state/session/action.ts b/src/state/session/action.ts
new file mode 100644
index 0000000..58b856e
--- /dev/null
+++ b/src/state/session/action.ts
@@ -0,0 +1,235 @@
+import {
+ Config as cwConfig,
+ CommunityConfig as cwCommunityConfig,
+ getTwoFAAddress as cwGetTwoFAAddress,
+ isSessionExpired as cwIsSessionExpired,
+ generateConnectionMessage as cwGenerateConnectionMessage,
+ verifyConnectedUrl as cwVerifyConnectedUrl,
+} from "@citizenwallet/sdk";
+import { AuthMethod, SessionState, useSessionStore } from "./state";
+import { StorageKeys, StorageService } from "@/services/storage";
+import { Wallet } from "ethers";
+import { WebAuthnCredential } from "@simplewebauthn/server";
+import { StoreApi, UseBoundStore } from "zustand";
+import { useMemo } from "react";
+import { CWAccount } from "@/services/account";
+import { getBytes } from "ethers";
+
+export interface AuthSession {
+ method: AuthMethod | null;
+ accountAddress: string | null;
+ isReadOnly: boolean;
+ isSessionExpired: boolean;
+}
+
+export class SessionLogic {
+ baseUrl: string;
+ state: SessionState;
+ communityConfig: cwCommunityConfig;
+ storage: StorageService;
+ cwAccount?: CWAccount;
+
+ constructor(baseUrl: string, state: SessionState, config: cwConfig) {
+ this.baseUrl = baseUrl;
+ this.state = state;
+ this.communityConfig = new cwCommunityConfig(config);
+ this.storage = new StorageService(this.communityConfig.community.alias);
+ }
+
+ storePrivateKey(privateKey: string) {
+ this.storage.setKey("session_private_key", privateKey);
+ this.state.setPrivateKey(privateKey);
+ }
+
+ storeSessionHash(hash: string) {
+ this.storage.setKey("session_hash", hash);
+ this.state.setHash(hash);
+ }
+
+ storeSourceValue(sourceValue: string) {
+ this.storage.setKey("session_source_value", sourceValue);
+ this.state.setSourceValue(sourceValue);
+ }
+
+ storeSourceType(sourceType: string) {
+ this.storage.setKey("session_source_type", sourceType);
+ this.state.setSourceType(sourceType);
+ }
+
+ storePasskey(passkey: WebAuthnCredential) {
+ this.storage.savePasskey(passkey);
+ this.state.appendPasskey(passkey);
+ }
+
+ storePasskeyChallenge(challengeHash: string, challengeExpiry: number) {
+ this.storage.setKey("session_challenge_hash", challengeHash);
+ this.storage.setKey("session_challenge_expiry", challengeExpiry.toString());
+ }
+
+ getPasskeys(): WebAuthnCredential[] {
+ const passkeys = this.storage.getAllPasskeys();
+
+ return passkeys;
+ }
+
+ async getAccountAddress() {
+ const sourceValue =
+ this.state.sourceValue || this.storage.getKey("session_source_value");
+
+ if (!sourceValue) {
+ throw new Error("Source value not found");
+ }
+
+ const sourceType =
+ this.state.sourceType || this.storage.getKey("session_source_type");
+
+ if (!sourceType) {
+ throw new Error("Source type not found");
+ }
+
+ const accountAddress = await cwGetTwoFAAddress({
+ community: this.communityConfig,
+ source: sourceValue,
+ type: sourceType,
+ });
+
+ return accountAddress;
+ }
+
+ async isSessionExpired() {
+ const accountAddress = await this.getAccountAddress();
+
+ if (!accountAddress) {
+ throw new Error("Account address not found");
+ }
+
+ const privateKey =
+ this.state.privateKey || this.storage.getKey("session_private_key");
+
+ if (!privateKey) {
+ throw new Error("Private key not found");
+ }
+
+ const signer = new Wallet(privateKey);
+
+ const isExpired = await cwIsSessionExpired({
+ community: this.communityConfig,
+ account: accountAddress,
+ owner: signer.address,
+ });
+
+ return isExpired;
+ }
+
+ async evalAuthSession(): Promise {
+ const walletHash = this.storage.getKey(StorageKeys.hash);
+ const sourceType = this.storage.getKey(StorageKeys.session_source_type);
+ const sourceValue = this.storage.getKey(StorageKeys.session_source_value);
+
+ try {
+ this.state.setIsLoading(true);
+
+ if (walletHash) {
+ const walletPassword = process.env.NEXT_PUBLIC_WEB_BURNER_PASSWORD;
+ if (!walletPassword) {
+ throw new Error("Wallet password not set");
+ }
+ const account = await CWAccount.fromHash(
+ this.baseUrl,
+ walletHash,
+ walletPassword,
+ this.communityConfig.config
+ );
+ const expiryTime = Date.now() + 1000 * 60 * 5; // 5 mins
+ const signer = account.signer;
+ let verifyConnectionResult: string | null = null;
+
+ if (signer) {
+ // verify account ownership
+ const connectionHash = cwGenerateConnectionMessage(
+ signer.address,
+ expiryTime.toString()
+ );
+ const connectionHashInBytes = getBytes(connectionHash);
+ const signedConnectionHash = await signer.signMessage(
+ connectionHashInBytes
+ );
+
+ const params = new URLSearchParams();
+ params.set("sigAuthAccount", signer.address);
+ params.set("sigAuthExpiry", expiryTime.toString());
+ params.set("sigAuthSignature", signedConnectionHash);
+
+ verifyConnectionResult = await cwVerifyConnectedUrl(
+ this.communityConfig,
+ {
+ params,
+ }
+ );
+ }
+
+ this.state.setAuthMethod("local");
+ this.state.setAccountAddress(account.account);
+ this.state.setIsReadOnly(!signer || !verifyConnectionResult);
+ this.state.setIsSessionExpired(false);
+ this.state.setIsLoading(false);
+ return;
+ }
+
+ if (sourceValue && sourceType === "email") {
+ const accountAddress = await this.getAccountAddress();
+ const isSessionExpired = await this.isSessionExpired();
+
+ this.state.setAuthMethod("email");
+ this.state.setAccountAddress(accountAddress);
+ this.state.setIsReadOnly(false);
+ this.state.setIsSessionExpired(isSessionExpired);
+ this.state.setIsLoading(false);
+ return;
+ }
+
+ if (sourceValue && sourceType === "passkey") {
+ const accountAddress = await this.getAccountAddress();
+ const isSessionExpired = await this.isSessionExpired();
+
+ this.state.setAuthMethod("passkey");
+ this.state.setAccountAddress(accountAddress);
+ this.state.setIsReadOnly(false);
+ this.state.setIsSessionExpired(isSessionExpired);
+ this.state.setIsLoading(false);
+ return;
+ }
+
+ this.state.setIsLoading(false);
+ this.state.setAuthMethod(null);
+ this.state.setAccountAddress(null);
+ this.state.setIsReadOnly(true);
+ this.state.setIsSessionExpired(false);
+ } catch (error) {
+ console.error("Error checking auth method:", error);
+ this.state.isLoading = false;
+ this.state.setAuthMethod(null);
+ this.state.setAccountAddress(null);
+ this.state.setIsReadOnly(true);
+ this.state.setIsSessionExpired(false);
+ }
+ }
+
+ clear() {
+ this.state.clear();
+ }
+}
+
+export const useSession = (
+ baseUrl: string,
+ config: cwConfig
+): [UseBoundStore>, SessionLogic] => {
+ const sessionStore = useSessionStore;
+
+ const actions = useMemo(
+ () => new SessionLogic(baseUrl, sessionStore.getState(), config),
+ [baseUrl, sessionStore, config]
+ );
+
+ return [sessionStore, actions];
+};
diff --git a/src/state/session/state.ts b/src/state/session/state.ts
new file mode 100644
index 0000000..63b089e
--- /dev/null
+++ b/src/state/session/state.ts
@@ -0,0 +1,83 @@
+import { create } from "zustand";
+import { WebAuthnCredential } from "@simplewebauthn/server";
+export type AuthMethod = "passkey" | "local" | "email";
+
+export interface SessionState {
+ sourceValue: string | null;
+ sourceType: string | null;
+ privateKey: string | null;
+ hash: string | null; // convert to bytes when signing
+ passkeys: WebAuthnCredential[];
+ isLoading: boolean;
+ authMethod: AuthMethod | null;
+ accountAddress: string | null;
+ isReadOnly: boolean;
+ isSessionExpired: boolean;
+
+
+ setSourceValue: (sourceValue: string) => void;
+ resetSourceValue: () => void;
+
+ setSourceType: (sourceType: string) => void;
+ resetSourceType: () => void;
+
+ setPrivateKey: (privateKey: string) => void;
+ resetPrivateKey: () => void;
+
+ setHash: (hash: string) => void;
+ resetHash: () => void;
+
+ appendPasskey: (passkey: WebAuthnCredential) => void;
+ resetPasskey: () => void;
+
+ setAuthMethod: (authMethod: AuthMethod | null) => void;
+ setAccountAddress: (accountAddress: string | null) => void;
+ setIsReadOnly: (isReadOnly: boolean) => void;
+ setIsSessionExpired: (isSessionExpired: boolean) => void;
+ setIsLoading: (isLoading: boolean) => void;
+
+ clear: () => void;
+}
+
+const initialState = () => ({
+ sourceValue: null,
+ sourceType: null,
+ privateKey: null,
+ hash: null,
+ passkeys: [],
+ isLoading: true,
+ authMethod: null,
+ accountAddress: null,
+ isReadOnly: true,
+ isSessionExpired: false,
+});
+
+export const useSessionStore = create()((set) => ({
+ ...initialState(),
+
+ setSourceValue: (sourceValue) => set({ sourceValue }),
+ resetSourceValue: () => set({ sourceValue: null }),
+
+ setSourceType: (sourceType) => set({ sourceType }),
+ resetSourceType: () => set({ sourceType: null }),
+
+ setPrivateKey: (privateKey) => set({ privateKey }),
+ resetPrivateKey: () => set({ privateKey: null }),
+
+ setHash: (hash) => set({ hash }),
+ resetHash: () => set({ hash: null }),
+
+ appendPasskey: (passkey) =>
+ set((state) => ({
+ passkeys: [...state.passkeys, passkey],
+ })),
+ resetPasskey: () => set({ passkeys: [] }),
+
+ setAuthMethod: (authMethod: AuthMethod | null) => set({ authMethod }),
+ setAccountAddress: (accountAddress: string | null) => set({ accountAddress }),
+ setIsReadOnly: (isReadOnly: boolean) => set({ isReadOnly }),
+ setIsSessionExpired: (isSessionExpired: boolean) => set({ isSessionExpired }),
+ setIsLoading: (isLoading: boolean) => set({ isLoading }),
+
+ clear: () => set(initialState()),
+}));
diff --git a/src/state/voucher/actions.ts b/src/state/voucher/actions.ts
index e1e5bd9..28759ad 100644
--- a/src/state/voucher/actions.ts
+++ b/src/state/voucher/actions.ts
@@ -47,7 +47,7 @@ export class VoucherActions {
(await getAccountBalance(this.communityConfig, voucher.account)) ?? 0n;
this.state.setBalance(
- formatUnits(balance, this.communityConfig.primaryToken.decimals)
+ formatUnits(balance, this.communityConfig.primaryToken.decimals),
);
this.state.voucherLoaded(voucher);
@@ -79,11 +79,11 @@ export class VoucherActions {
const profile = await getProfileFromAddress(
ipfsDomain,
this.communityConfig,
- voucher.creator
+ voucher.creator,
);
let description = `Claimed voucher from ${formatAddress(
- voucher.creator
+ voucher.creator,
)}`;
if (profile) {
description = `Claimed voucher from ${profile.username}`;
@@ -97,7 +97,7 @@ export class VoucherActions {
voucher.account,
to,
formatUnits(balance, primaryToken.decimals),
- description
+ description,
);
this.state.setClaiming(false);
@@ -118,12 +118,12 @@ export class VoucherActions {
}
export const useVoucher = (
- config: Config
+ config: Config,
): [UseBoundStore>, VoucherActions] => {
const store = useVoucherStore;
const actions = useMemo(
() => new VoucherActions(store.getState(), config),
- [store, config]
+ [store, config],
);
return [store, actions];
};
diff --git a/src/state/wallet_kit/actions.ts b/src/state/wallet_kit/actions.ts
index 5144533..6b5a6a7 100644
--- a/src/state/wallet_kit/actions.ts
+++ b/src/state/wallet_kit/actions.ts
@@ -12,7 +12,7 @@ export class WalletKitLogic {
setActiveSessions(sessions: Record) {
this.state.setActiveSessions(sessions);
}
-
+
getActiveSessions() {
return this.state.activeSessions;
}
@@ -24,13 +24,13 @@ export class WalletKitLogic {
export const useWalletKit = (): [
UseBoundStore>,
- WalletKitLogic
+ WalletKitLogic,
] => {
const walletKitStore = useWalletKitStore;
const actions = useMemo(
() => new WalletKitLogic(walletKitStore.getState()),
- [walletKitStore]
+ [walletKitStore],
);
return [walletKitStore, actions];
diff --git a/src/state/wallet_kit/state.ts b/src/state/wallet_kit/state.ts
index fb6739b..fe94592 100644
--- a/src/state/wallet_kit/state.ts
+++ b/src/state/wallet_kit/state.ts
@@ -2,8 +2,6 @@ import { WalletKitTypes } from "@reown/walletkit";
import { SessionTypes } from "@walletconnect/types";
import { create } from "zustand";
-
-
export interface WalletKitState {
sessionProposal?: WalletKitTypes.SessionProposal;
setSessionProposal: (sessionProposal: WalletKitTypes.SessionProposal) => void;
@@ -14,18 +12,16 @@ export interface WalletKitState {
clear: () => void;
}
-
const initialState = () => ({
- sessionProposal: undefined,
- activeSessions: {},
+ sessionProposal: undefined,
+ activeSessions: {},
});
-
export const useWalletKitStore = create((set) => ({
- ...initialState(),
- setSessionProposal: (sessionProposal) => set((state) => ({ sessionProposal })),
- setActiveSessions: (sessions) => set((state) => ({ activeSessions: sessions })),
- clear: () => set(initialState()),
+ ...initialState(),
+ setSessionProposal: (sessionProposal) =>
+ set((state) => ({ sessionProposal })),
+ setActiveSessions: (sessions) =>
+ set((state) => ({ activeSessions: sessions })),
+ clear: () => set(initialState()),
}));
-
-
diff --git a/src/utils/date.ts b/src/utils/date.ts
index 87e698e..854f661 100644
--- a/src/utils/date.ts
+++ b/src/utils/date.ts
@@ -9,7 +9,7 @@ export const formatDate = (date: Date) => {
minute: "2-digit",
second: "2-digit",
// hour12: true,
- }
+ },
).format(new Date(date));
return formattedDate;
diff --git a/src/utils/formatting.ts b/src/utils/formatting.ts
index 9e5c26d..396f1d6 100644
--- a/src/utils/formatting.ts
+++ b/src/utils/formatting.ts
@@ -8,7 +8,7 @@ export const formatUrl = (url: string) => {
export const formatCurrency = (
value: string,
- allowDecimals: boolean = true
+ allowDecimals: boolean = true,
) => {
// Remove all non-digit or non-decimal point characters
value = value.replace(/[^0-9.]/g, "");
diff --git a/src/utils/webauthn.ts b/src/utils/webauthn.ts
new file mode 100644
index 0000000..3d402cf
--- /dev/null
+++ b/src/utils/webauthn.ts
@@ -0,0 +1,11 @@
+export function extractRelyingPartyId(origin: string): string {
+ try {
+ // Create a URL object to parse the origin
+ const url = new URL(origin);
+
+ // Get and return the full hostname (removes protocol and port)
+ return url.hostname;
+ } catch (error) {
+ throw new Error("Invalid origin URL");
+ }
+}
diff --git a/tailwind.config.ts b/tailwind.config.ts
index a6c10b0..9b90e57 100644
--- a/tailwind.config.ts
+++ b/tailwind.config.ts
@@ -92,6 +92,10 @@ const config = {
"95%": { transform: "scale(0.98)" },
"100%": { transform: "scale(1)" },
},
+ "caret-blink": {
+ "0%,70%,100%": { opacity: "1" },
+ "20%,50%": { opacity: "0" },
+ },
},
animation: {
"accordion-down": "accordion-down 0.2s ease-out",
@@ -100,6 +104,7 @@ const config = {
"fade-in-slow": "fade-in 1s ease-in-out",
"fade-in-fast": "fade-in 0.15s ease-in-out",
"grow-bounce": "grow-bounce 0.4s cubic-bezier(0.34, 1.56, 0.64, 1)",
+ "caret-blink": "caret-blink 1.25s ease-out infinite",
},
backgroundImage: {
"transparent-to-white": "linear-gradient(to top, transparent, white)",
diff --git a/test/urlAccount.test.ts b/test/urlAccount.test.ts
index d4d9037..b5e11d6 100644
--- a/test/urlAccount.test.ts
+++ b/test/urlAccount.test.ts
@@ -23,7 +23,7 @@ describe("parsePrivateKeyFromHash", () => {
const [account, wallet] = await parsePrivateKeyFromHash(
baseUrl,
hash,
- walletPassword
+ walletPassword,
);
expect(account).toBe(expectedAccount);
@@ -44,7 +44,7 @@ describe("parsePrivateKeyFromHash", () => {
const [account, wallet] = await parsePrivateKeyFromHash(
baseUrl,
hash,
- walletPassword
+ walletPassword,
);
expect(account).toBe(expectedAccount);
@@ -59,7 +59,7 @@ describe("parsePrivateKeyFromHash", () => {
const [account, wallet] = await parsePrivateKeyFromHash(
baseUrl,
hash,
- walletPassword
+ walletPassword,
);
expect(account).toBeUndefined();
diff --git a/test/webauthn.test.ts b/test/webauthn.test.ts
new file mode 100644
index 0000000..2cae0db
--- /dev/null
+++ b/test/webauthn.test.ts
@@ -0,0 +1,57 @@
+// import { describe, it, expect } from "jest";
+import { extractRelyingPartyId } from "../src/utils/webauthn";
+
+describe("extractRelyingPartyId", () => {
+ it("should extract hostname from a simple URL", () => {
+ expect(extractRelyingPartyId("https://example.com")).toBe("example.com");
+ });
+
+ it("should extract full hostname from URL with subdomain", () => {
+ expect(extractRelyingPartyId("https://login.example.com")).toBe(
+ "login.example.com"
+ );
+ expect(extractRelyingPartyId("https://app.subdomain.example.com")).toBe(
+ "app.subdomain.example.com"
+ );
+ });
+
+ it("should handle URLs with ports", () => {
+ expect(extractRelyingPartyId("https://example.com:443")).toBe(
+ "example.com"
+ );
+ expect(extractRelyingPartyId("http://localhost:3000")).toBe("localhost");
+ });
+
+ it("should handle URLs with paths and query parameters", () => {
+ expect(extractRelyingPartyId("https://example.com/path")).toBe(
+ "example.com"
+ );
+ expect(
+ extractRelyingPartyId("https://login.example.com/auth?redirect=home")
+ ).toBe("login.example.com");
+ });
+
+ it("should handle special TLD domains", () => {
+ expect(extractRelyingPartyId("https://example.co.uk")).toBe(
+ "example.co.uk"
+ );
+ expect(extractRelyingPartyId("https://app.example.com.au")).toBe(
+ "app.example.com.au"
+ );
+ });
+
+ it("should handle localhost", () => {
+ expect(extractRelyingPartyId("http://localhost")).toBe("localhost");
+ expect(extractRelyingPartyId("https://localhost")).toBe("localhost");
+ });
+
+ it("should throw error for invalid URLs", () => {
+ expect(() => extractRelyingPartyId("not-a-url")).toThrow(
+ "Invalid origin URL"
+ );
+ expect(() => extractRelyingPartyId("http://")).toThrow(
+ "Invalid origin URL"
+ );
+ expect(() => extractRelyingPartyId("")).toThrow("Invalid origin URL");
+ });
+});