Add Polkadot RPCs to the Dapp examples and wallet (#44)

Co-authored-by: Ben Kremer <contact@bkrem.dev>
This commit is contained in:
hamidraandBen Kremer authored and GitHub committed 2022-08-11 11:43:12 +02:00
1 parent 6a77191dd3
commit 1406ce3999
26 files changed
+821 -8

No files matched your search

+1
View File
@@ -11,6 +11,7 @@
},
"dependencies": {
"@ethereumjs/tx": "^3.5.0",
"@polkadot/util-crypto": "^10.1.2",
"@solana/web3.js": "^1.36.0",
"@walletconnect/encoding": "^1.0.1",
"@walletconnect/qrcode-modal": "^1.7.8",
@@ -0,0 +1,17 @@
<svg width="1672" height="1672" viewBox="0 0 1672 1672" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="836.274" cy="836.219" r="835.436" fill="#E6007A"/>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="1672" height="1672">
<circle cx="836.274" cy="836.219" r="835.436" fill="#C4C4C4"/>
</mask>
<g mask="url(#mask0)">
<rect x="-299.919" y="-66.0518" width="2840.48" height="1871.38" fill="url(#paint0_linear)"/>
<path d="M-30.6062 -2704.78C4.61255 -2283.66 177.141 -1879.1 455.772 -1562.26C741.535 -1237.35 1137.41 -1018.51 1561.82 -940.645C1770.91 -902.158 1989.36 -894.998 2199.33 -931.247C2399.05 -965.706 2600.56 -1052.97 2713.35 -1230.64C2763.73 -1309.4 2794.49 -1402.94 2793.15 -1496.92C2791.81 -1597.16 2749.46 -1687.56 2687.49 -1764.54C2618.84 -1850.01 2531.01 -1922.51 2444.08 -1989.19C2358.04 -2054.98 2265.31 -2113.16 2164.11 -2152.99C1939.42 -2240.7 1716.07 -2191.92 1500.75 -2101.07C1272.49 -2004.86 1051.82 -1891.19 830.697 -1780.65C378.201 -1554.65 -84.1033 -1331.33 -586.53 -1244.51C-712.694 -1222.59 -841.087 -1210.05 -969.035 -1208.71C-1083.61 -1207.37 -1207.99 -1208.26 -1318.99 -1239.59C-1368.03 -1253.46 -1418.41 -1276.74 -1446.94 -1321.04C-1483.94 -1378.32 -1471.02 -1449.93 -1454.97 -1511.69C-1427.77 -1614.62 -1376.5 -1710.39 -1310.08 -1793.18C-1172.77 -1964.58 -977.951 -2078.25 -768.866 -2137.77C-649.389 -2171.78 -525.454 -2189.24 -401.519 -2195.95C-282.042 -2202.21 -154.987 -2206.69 -36.4019 -2187C79.5085 -2168.2 159.754 -2095.7 199.431 -1985.61C239.554 -1875.07 232.421 -1757.82 228.409 -1642.36C222.614 -1469.17 236.879 -1221.69 431.252 -1150.98C532.005 -1114.28 652.374 -1152.77 750.897 -1181.41C853.434 -1211.4 953.295 -1250.78 1048.7 -1298.66C1147.22 -1348.34 1240.84 -1406.96 1328.22 -1474.54C1403.12 -1531.82 1490.05 -1596.27 1540.43 -1677.72C1576.09 -1735.45 1596.6 -1814.66 1533.29 -1860.31C1529.73 -1862.99 1523.48 -1862.54 1519.92 -1860.31C1336.69 -1747.98 1235.05 -1546.14 1196.71 -1339.39C1161.04 -1146.51 1161.93 -908.871 1290.77 -748.21C1394.2 -619.323 1597.04 -584.864 1724.99 -701.22C1786.07 -756.713 1805.24 -842.19 1777.15 -919.611C1743.71 -1011.35 1658.12 -1076.24 1564.94 -1098.62C1442.35 -1128.16 1313.06 -1095.04 1197.15 -1054.76C1089.71 -1017.17 986.73 -967.944 888.207 -911.109C682.689 -792.515 496.34 -644.385 306.426 -502.519C112.499 -357.969 -86.7783 -217.894 -310.574 -123.467C-561.565 -16.9561 -834.846 36.7468 -1107.68 33.1667C-1230.72 31.3765 -1371.15 29.1389 -1483.94 -25.9065C-1605.2 -85.4272 -1642.65 -211.629 -1611.89 -336.936C-1582.47 -456.872 -1509.36 -558.46 -1427.33 -647.517C-1345.74 -736.127 -1252.57 -813.996 -1152.71 -881.124C-953.431 -1014.49 -729.635 -1106.23 -500.489 -1173.81C-442.98 -1190.81 -385.025 -1206.03 -327.069 -1219.9C-264.656 -1235.12 -195.556 -1257.49 -130.913 -1253.46C14.8662 -1244.07 37.157 -1068.64 62.1223 -955.413C173.574 -455.529 216.818 67.1785 428.577 538.868C454.88 597.942 483.858 655.672 515.956 711.613C537.801 750.1 564.549 791.719 611.805 799.327C715.233 814.991 778.092 683.419 808.853 606.445C849.421 504.409 883.749 368.362 853.434 259.166C826.685 163.844 737.523 128.489 646.132 136.992C532.005 147.733 424.119 204.121 320.692 249.321C191.407 305.708 63.4595 366.124 -63.1504 428.33C-314.587 551.847 -562.457 682.524 -814.339 806.04C-1316.77 1054.42 -1846.39 1276.84 -2409 1336.36C-2544.08 1350.68 -2679.6 1355.15 -2815.13 1348.44C-2810.67 1352.91 -2806.21 1357.39 -2801.76 1361.86C-2798.19 1187.33 -2665.34 1045.02 -2507.52 987.287C-2332.32 923.292 -2139.73 971.624 -1983.25 1062.47C-1814.29 1160.93 -1684.11 1309.06 -1563.74 1461.21C-1446.5 1609.79 -1332.81 1760.61 -1202.19 1898.45C-720.273 2405.49 -88.1157 2767.54 593.081 2922.38C750.006 2958.18 928.329 2991.75 1065.64 2884.34C1165.5 2806.02 1210.53 2679.38 1227.02 2557.2C1246.19 2410.86 1230.14 2255.57 1185.12 2115.05C1135.18 1959.31 1027.74 1849.67 860.121 1837.14C679.122 1823.71 492.774 1895.31 320.692 1940.96C106.257 1997.8 -107.731 2054.63 -322.165 2111.47C-533.925 2167.41 -745.239 2223.8 -956.998 2279.74C-1061.32 2307.48 -1166.08 2335.23 -1270.4 2362.98C-1374.28 2390.72 -1478.59 2425.18 -1584.25 2444.43C-1685.9 2462.77 -1767.92 2415.34 -1771.94 2307.93C-1775.06 2230.51 -1747.42 2153.98 -1713.98 2085.51C-1633.29 1920.37 -1542.35 1760.61 -1442.04 1606.66C-1236.07 1289.81 -990.879 998.476 -713.586 742.044C-646.269 679.839 -577.168 619.423 -506.284 561.245C-512.526 561.245 -518.767 561.245 -525.009 561.245C-308.791 729.514 -286.946 1030.25 -243.257 1280.42C-215.171 1441.52 -179.952 1601.74 -138.938 1760.16C-117.985 1840.72 -95.2485 1920.82 -70.7292 2000.48C-50.6677 2066.27 -33.281 2136.53 -2.07446 2197.84C18.8787 2238.56 50.9771 2279.74 99.1243 2286.45C145.934 2293.16 184.719 2264.52 212.36 2229.17C252.928 2176.36 278.34 2110.57 306.426 2050.6C339.861 1979.45 371.959 1907.4 402.275 1834.9C521.306 1550.72 616.709 1256.25 687.146 956.408C766.5 616.738 813.756 269.459 828.468 -79.6094C828.914 -93.0352 810.19 -97.5103 803.503 -86.3223C646.132 184.43 573.02 501.277 599.322 813.648C621.167 1075.45 725.04 1353.81 994.755 1442.42C1129.39 1486.72 1276.51 1480.91 1414.71 1457.63C1558.7 1433.47 1700.02 1390.95 1832.88 1330.54C2095.46 1211.05 2322.38 1012.35 2442.3 745.625C2498.92 619.87 2531.46 482.48 2529.68 344.196C2528.34 224.707 2506.94 80.6042 2412.43 -3.08276C2304.1 -99.3003 2160.55 -42.4648 2059.35 34.5093C1952.35 115.958 1862.75 219.784 1792.75 334.35C1457.95 881.224 1581.44 1586.07 1764.22 2163.83C1946.56 2739.34Line truncated
</g>
<path d="M579.661 1151H750.827L805.398 953.118C812.923 925.833 851.29 925.85 858.791 953.141L913.173 1151H1084.01L1215 645H1054.61L1013.65 845.811C1007.7 874.972 966.681 875.778 959.61 846.872L910.233 645H753.767L705.665 848.126C698.797 877.128 657.69 876.566 651.603 847.387L637.158 778.138C620.973 700.547 553.102 645 474.48 645H449L579.661 1151Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear" x1="-232.429" y1="816.169" x2="2713.69" y2="813.592" gradientUnits="userSpaceOnUse">
<stop stop-color="#F79420" stop-opacity="0.92"/>
<stop offset="1" stop-color="#C4C4C4" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

+23 -2
View File
@@ -1,12 +1,29 @@
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
import { ChainsMap } from "caip-api";
import { BLOCKCHAIN_LOGO_BASE_URL } from "../constants";
import { JsonRpcRequest } from "@walletconnect/jsonrpc-utils";
import {
NamespaceMetadata,
ChainMetadata,
ChainRequestRender,
} from "../helpers";
export const PolkadotChainData: ChainsMap = {
["91b171bb158e2d3848fa23a9f1c25182"]: {
id: "polkadot:91b171bb158e2d3848fa23a9f1c25182",
name: "Polkadot Mainnet",
rpc: ["wss://rpc.polkadot.io"],
slip44: 0,
testnet: false,
},
["e143f23803ac50e8f6f8e62695d1ce9e"]: {
id: "polkadot:e143f23803ac50e8f6f8e62695d1ce9e",
name: "Polkadot Testnet (Westend)",
rpc: ["wss://westend-rpc.polkadot.io"],
slip44: 0,
testnet: false,
},
};
export const PolkadotMetadata: NamespaceMetadata = {
// eslint-disable-next-line no-useless-computed-key
["91b171bb158e2d3848fa23a9f1c25182"]: {
@@ -15,6 +32,10 @@ export const PolkadotMetadata: NamespaceMetadata = {
"polkadot:91b171bb158e2d3848fa23a9f1c25182.png",
rgb: "230, 1, 122",
},
["e143f23803ac50e8f6f8e62695d1ce9e"]: {
logo: "/assets/westend-logo.svg",
rgb: "218, 104, 167",
},
};
export function getChainMetadata(chainId: string): ChainMetadata {
@@ -8,6 +8,7 @@ export const DEFAULT_MAIN_CHAINS = [
"eip155:42220",
"cosmos:cosmoshub-4",
"solana:4sGjMW1sUnHzSxGspuhpqLDx6wiyjNtZ",
"polkadot:91b171bb158e2d3848fa23a9f1c25182",
];
export const DEFAULT_TEST_CHAINS = [
@@ -18,6 +19,7 @@ export const DEFAULT_TEST_CHAINS = [
"eip155:421611",
"eip155:44787",
"solana:8E9rvCKLFQia2Y35HXjjpWzj8weVo44K",
"polkadot:e143f23803ac50e8f6f8e62695d1ce9e",
];
export const DEFAULT_CHAINS = [...DEFAULT_MAIN_CHAINS, ...DEFAULT_TEST_CHAINS];
@@ -71,5 +73,15 @@ export enum DEFAULT_SOLANA_METHODS {
export enum DEFAULT_SOLANA_EVENTS {}
/**
* POLKADOT
*/
export enum DEFAULT_POLKADOT_METHODS {
POLKADOT_SIGN_TRANSACTION = "polkadot_signTransaction",
POLKADOT_SIGN_MESSAGE = "polkadot_signMessage",
}
export enum DEFAULT_POLKADOT_EVENTS {}
export const DEFAULT_GITHUB_REPO_URL =
"https://github.com/WalletConnect/web-examples/tree/main/dapps/react-dapp-v2";
@@ -7,6 +7,7 @@ import {
useState,
} from "react";
import { SolanaChainData } from "../chains/solana";
import { PolkadotChainData } from "../chains/polkadot";
import { ChainNamespaces, getAllChainNamespaces } from "../helpers";
@@ -41,6 +42,8 @@ export function ChainDataContextProvider({
try {
if (namespace === "solana") {
chains = SolanaChainData;
} else if (namespace === "polkadot") {
chains = PolkadotChainData;
} else {
chains = await apiGetChainNamespace(namespace);
}
@@ -29,8 +29,10 @@ import {
DEFAULT_COSMOS_METHODS,
DEFAULT_EIP155_METHODS,
DEFAULT_SOLANA_METHODS,
DEFAULT_POLKADOT_METHODS,
} from "../constants";
import { useChainData } from "./ChainDataContext";
import { signatureVerify, cryptoWaitReady } from "@polkadot/util-crypto";
/**
* Types
@@ -61,6 +63,10 @@ interface IContext {
testSignMessage: TRpcRequestCallback;
testSignTransaction: TRpcRequestCallback;
};
polkadotRpc: {
testSignMessage: TRpcRequestCallback;
testSignTransaction: TRpcRequestCallback;
};
rpcResult?: IFormattedRpcResponse | null;
isRpcRequestPending: boolean;
isTestnet: boolean;
@@ -613,7 +619,77 @@ export function JsonRpcContextProvider({
}
),
};
// -------- POLKADOT RPC METHODS --------
const polkadotRpc = {
testSignTransaction: _createJsonRpcRequestHandler(
async (chainId: string, address: string): Promise<IFormattedRpcResponse> => {
// Below example is a scale encoded payload for system.remark("this is a test wallet-connect remark") transaction.
// decode url: https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/extrinsics/decode/0x00019074686973206973206120746573742077616c6c65742d636f6e6e6563742072656d61726b
const transactionPayload =
"0x00019074686973206973206120746573742077616c6c65742d636f6e6e6563742072656d61726b05010000222400000d00000091b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3dc1f37ce7899cf20f63f5ea343f33e9e7b229c7e245049c2a7afc236861fc8b4";
try {
const result = await client!.request<{ payload: string; signature: string }>({
chainId,
topic: session!.topic,
request: {
method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_TRANSACTION,
params: {
address,
transactionPayload,
},
},
});
// sr25519 signatures need to wait for WASM to load
await cryptoWaitReady();
const { isValid: valid } = signatureVerify(transactionPayload, result.signature, address);
return {
method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_TRANSACTION,
address,
valid,
result: result.signature,
};
} catch (error: any) {
throw new Error(error);
}
},
),
testSignMessage: _createJsonRpcRequestHandler(
async (chainId: string, address: string): Promise<IFormattedRpcResponse> => {
const message = `This is an example message to be signed - ${Date.now()}`;
try {
const result = await client!.request<{ signature: string }>({
chainId,
topic: session!.topic,
request: {
method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_MESSAGE,
params: {
address,
message,
},
},
});
// sr25519 signatures need to wait for WASM to load
await cryptoWaitReady();
const { isValid: valid } = signatureVerify(message, result.signature, address);
return {
method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_MESSAGE,
address,
valid,
result: result.signature,
};
} catch (error: any) {
throw new Error(error);
}
},
),
};
return (
<JsonRpcContext.Provider
value={{
@@ -621,6 +697,7 @@ export function JsonRpcContextProvider({
ethereumRpc,
cosmosRpc,
solanaRpc,
polkadotRpc,
rpcResult: result,
isRpcRequestPending: pending,
isTestnet,
@@ -6,6 +6,8 @@ import {
DEFAULT_EIP_155_EVENTS,
DEFAULT_SOLANA_EVENTS,
DEFAULT_SOLANA_METHODS,
DEFAULT_POLKADOT_EVENTS,
DEFAULT_POLKADOT_METHODS,
} from "../constants";
export const getNamespacesFromChains = (chains: string[]) => {
@@ -28,6 +30,8 @@ export const getSupportedMethodsByNamespace = (namespace: string) => {
return Object.values(DEFAULT_COSMOS_METHODS);
case "solana":
return Object.values(DEFAULT_SOLANA_METHODS);
case "polkadot":
return Object.values(DEFAULT_POLKADOT_METHODS);
default:
throw new Error(`No default methods for namespace: ${namespace}`);
}
@@ -41,6 +45,8 @@ export const getSupportedEventsByNamespace = (namespace: string) => {
return Object.values(DEFAULT_COSMOS_EVENTS);
case "solana":
return Object.values(DEFAULT_SOLANA_EVENTS);
case "polkadot":
return Object.values(DEFAULT_POLKADOT_EVENTS);
default:
throw new Error(`No default events for namespace: ${namespace}`);
}
+24
View File
@@ -11,6 +11,7 @@ import {
DEFAULT_EIP155_METHODS,
DEFAULT_MAIN_CHAINS,
DEFAULT_SOLANA_METHODS,
DEFAULT_POLKADOT_METHODS,
DEFAULT_TEST_CHAINS,
} from "../constants";
import { AccountAction, setLocaleStorageTestnetFlag } from "../helpers";
@@ -64,6 +65,7 @@ const Home: NextPage = () => {
ethereumRpc,
cosmosRpc,
solanaRpc,
polkadotRpc,
isRpcRequestPending,
rpcResult,
isTestnet,
@@ -185,6 +187,26 @@ const Home: NextPage = () => {
];
};
const getPolkadotActions = (): AccountAction[] => {
const onSignTransaction = async (chainId: string, address: string) => {
openRequestModal();
await polkadotRpc.testSignTransaction(chainId, address);
};
const onSignMessage = async (chainId: string, address: string) => {
openRequestModal();
await polkadotRpc.testSignMessage(chainId, address);
};
return [
{
method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_TRANSACTION,
callback: onSignTransaction,
},
{
method: DEFAULT_POLKADOT_METHODS.POLKADOT_SIGN_MESSAGE,
callback: onSignMessage,
},
];
};
const getBlockchainActions = (chainId: string) => {
const [namespace] = chainId.split(":");
switch (namespace) {
@@ -194,6 +216,8 @@ const Home: NextPage = () => {
return getCosmosActions();
case "solana":
return getSolanaActions();
case "polkadot":
return getPolkadotActions();
default:
break;
}
+157 -1
View File
@@ -1966,6 +1966,16 @@
resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-12.2.4.tgz#0134c4cd5df39033347614ce5fc26af485ac9048"
integrity sha512-5Pl1tdMJWLy4rvzU1ecx0nHWgDPqoYuvYoXE/5X0Clu9si/yOuBIj573F2kOTY7mu0LX2wgCJVSnyK0abHBxIw==
"@noble/hashes@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183"
integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==
"@noble/secp256k1@1.6.3":
version "1.6.3"
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94"
integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -2015,6 +2025,135 @@
schema-utils "^2.6.5"
source-map "^0.7.3"
"@polkadot/networks@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.1.2.tgz#a42c93c5dd1f56b99ca50ec9d4e8076088148086"
integrity sha512-67ZPqdhLYDGNX1jMEa3+hujh9j30Dr9AdqgdjE8Z3GdWoEVRp9Zda3DXMnDIQlRBQ32pRZty7dFhIq61Bv/whQ==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/util" "10.1.2"
"@substrate/ss58-registry" "^1.25.0"
"@polkadot/util-crypto@^10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-10.1.2.tgz#60779ad64e79542a06302ae7d9a2515482b563f4"
integrity sha512-lSgxSLF/XkksL8St3kyw8SCLic0JvyIf8uOezQZYyjSJKT3Gl8gGu9wCAKNAmboU0FgO8cnLO9AcAEkhCHvnyw==
dependencies:
"@babel/runtime" "^7.18.9"
"@noble/hashes" "1.1.2"
"@noble/secp256k1" "1.6.3"
"@polkadot/networks" "10.1.2"
"@polkadot/util" "10.1.2"
"@polkadot/wasm-crypto" "^6.3.1"
"@polkadot/x-bigint" "10.1.2"
"@polkadot/x-randomvalues" "10.1.2"
"@scure/base" "1.1.1"
ed2curve "^0.3.0"
tweetnacl "^1.0.3"
"@polkadot/util@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.1.2.tgz#2eded0c159c16c4a3c48ff45c4ced05c62fb4660"
integrity sha512-gYSpJyrrw5gZWgTVu6PJ1PBUzi3GqwmaK6XRgi4deHmQRn9TEXTToGtHmleJWnaTCRW8Vvh5B5RNNV2C/+va4w==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-bigint" "10.1.2"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-textdecoder" "10.1.2"
"@polkadot/x-textencoder" "10.1.2"
"@types/bn.js" "^5.1.0"
bn.js "^5.2.1"
"@polkadot/wasm-bridge@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-6.3.1.tgz#439fa78e80947a7cb695443e1f64b25c30bb1487"
integrity sha512-1TYkHsb9AEFhU9uZj3biEnN2yKQNzdrwSjiTvfCYnt97pnEkKsZI6cku+YPZQv5w/x9CQa5Yua9e2DVVZSivGA==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-crypto-asmjs@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.3.1.tgz#e8f469c9cf4a7709c8131a96f857291953f3e30a"
integrity sha512-zbombRfA5v/mUWQQhgg2YwaxhRmxRIrvskw65x+lruax3b6xPBFDs7yplopiJU3r8h2pTgQvX/DUksvqz2TCRQ==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-crypto-init@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.3.1.tgz#b590220c53c94b9a54d5dc236d0cbe943db76706"
integrity sha512-9yaUBcu+snwjJLmPPGl3cyGRQ1afyFGm16qzTM0sgG/ZCfUlK4uk8KWZe+sBUKgoxb2oXY7Y4WklKgQI1YBdfw==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-bridge" "6.3.1"
"@polkadot/wasm-crypto-asmjs" "6.3.1"
"@polkadot/wasm-crypto-wasm" "6.3.1"
"@polkadot/wasm-crypto-wasm@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.3.1.tgz#67f720e7f9694fef096abe9d60abbac02e032383"
integrity sha512-idSlzKGVzCfeCMRHsacRvqwojSaTadFxL/Dbls4z1thvfa3U9Ku0d2qVtlwg7Hj+tYWDiuP8Kygs+6bQwfs0XA==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-util" "6.3.1"
"@polkadot/wasm-crypto@^6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-6.3.1.tgz#63f5798aca2b2ff0696f190e6862d9781d8f280c"
integrity sha512-OO8h0qeVkqp4xYZaRVl4iuWOEtq282pNBHDKb6SOJuI2g59eWGcKh4EQU9Me2VP6qzojIqptrkrVt7KQXC68gA==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-bridge" "6.3.1"
"@polkadot/wasm-crypto-asmjs" "6.3.1"
"@polkadot/wasm-crypto-init" "6.3.1"
"@polkadot/wasm-crypto-wasm" "6.3.1"
"@polkadot/wasm-util" "6.3.1"
"@polkadot/wasm-util@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-6.3.1.tgz#439ebb68a436317af388ed6438b8f879df3afcda"
integrity sha512-12oAv5J7Yoc9m6jixrSaQCxpOkWOyzHx3DMC8qmLjRiwdBWxqLmImOVRVnFsbaxqSbhBIHRuJphVxWE+GZETDg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-bigint@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.1.2.tgz#5070af6a3a5aa66eba85597837ce6eb44ad7dc02"
integrity sha512-TCwv3NjQdfLb7CBYR8EA5t0CrMfYx3IF4hKjctuplL+mDNI0VzNn4qVKW62AjouI8kMbn7VyBPfoBeuYX8Ixrw==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-global@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.1.2.tgz#66c2ceb6ef5043bc6bddd5e944f35e64e9d6a0a9"
integrity sha512-//r3NVLYdYQs0So0IK8Pa0pnL5pPi0geQWE6qjTtPD0oszuN9SUDqDlFQj3I3vqQOwgybbzBGNYRRinP8B2xUg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-randomvalues@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.1.2.tgz#8a0f15eb0558f837dd10060ad808707fe8b64c05"
integrity sha512-KOu6iZWye9KD6qoahiqZ0alrT/5FSGL4XXLhVSg69xAqD6yG2oi2aKA6cZpDU19uZGqVneqsgpebDsrZ0nLUEg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-textdecoder@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.1.2.tgz#833627fc55b388483857de922b534b70fc349a0a"
integrity sha512-liMlSSKfLGTvcUPz1fMicH2HoKLgSjzxFYsbNfXJOe9GobQfSrAOcprM0j4gNJqN5EoZhze9Sf1rMTORQwomtg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-textencoder@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.1.2.tgz#a728a89d117456749211fcf520ca0e846654df89"
integrity sha512-bSMvesZ43Er6+jogt9IfwWN/E8bhkl4a9nNnpyS/vTh+j6n/DfDQrvYpKDpRIn7oJA6lfs/mL9Jo5jjJTngaxg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
@@ -2101,6 +2240,11 @@
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.4.tgz#0c8b74c50f29ee44f423f7416829c0bf8bb5eb27"
integrity sha512-LwzQKA4vzIct1zNZzBmRKI9QuNpLgTQMEjsQLf3BXuGYb3QPTP4Yjf6mkdX+X1mYttZ808QpOwAzZjv28kq7DA==
"@scure/base@1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
"@sinonjs/commons@^1.7.0":
version "1.8.3"
resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d"
@@ -2279,6 +2423,11 @@
"@stablelib/random" "^1.0.1"
"@stablelib/wipe" "^1.0.1"
"@substrate/ss58-registry@^1.25.0":
version "1.25.0"
resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.25.0.tgz#0fcd8c9c0e53963a88fbed41f2cbd8a1a5c74cde"
integrity sha512-LmCH4QJRdHaeLsLTPSgJaXguMoIW+Ig9fA9LRPpeya9HefVAJ7gZuUYinldv+QmX7evNm5CL0rspNUS8l1DvXg==
"@surma/rollup-plugin-off-main-thread@^1.1.1":
version "1.4.2"
resolved "https://registry.yarnpkg.com/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-1.4.2.tgz#e6786b6af5799f82f7ab3a82e53f6182d2b91a58"
@@ -5652,6 +5801,13 @@ duplexify@^3.4.2, duplexify@^3.6.0:
readable-stream "^2.0.0"
stream-shift "^1.0.0"
ed2curve@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d"
integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==
dependencies:
tweetnacl "1.x.x"
ee-first@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
@@ -12947,7 +13103,7 @@ tweetnacl-util@^0.15.0:
resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b"
integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==
tweetnacl@^1.0.0, tweetnacl@^1.0.3:
tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==
+1
View File
@@ -13,6 +13,7 @@
"@cosmjs/proto-signing": "0.28.4",
"@json-rpc-tools/utils": "1.7.6",
"@nextui-org/react": "1.0.8-beta.5",
"@polkadot/keyring": "^10.1.2",
"@solana/web3.js": "1.43.0",
"@walletconnect/sign-client": "2.0.0-rc.1",
"@walletconnect/utils": "2.0.0-rc.1",
@@ -0,0 +1,9 @@
<svg width="800" height="800" viewBox="0 0 800 800" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="800" height="800" rx="400" fill="#E6007A"/>
<path d="M400.072 246.038C452.666 246.038 495.302 221.181 495.302 190.519C495.302 159.857 452.666 135 400.072 135C347.478 135 304.843 159.857 304.843 190.519C304.843 221.181 347.478 246.038 400.072 246.038Z" fill="white"/>
<path d="M400.072 664.364C452.666 664.364 495.302 639.507 495.302 608.845C495.302 578.183 452.666 553.326 400.072 553.326C347.478 553.326 304.843 578.183 304.843 608.845C304.843 639.507 347.478 664.364 400.072 664.364Z" fill="white"/>
<path d="M267.363 322.89C293.66 277.233 293.489 227.785 266.982 212.443C240.475 197.102 197.668 221.677 171.371 267.333C145.074 312.989 145.245 362.438 171.753 377.779C198.26 393.121 241.066 368.546 267.363 322.89Z" fill="white"/>
<path d="M628.731 532.027C655.028 486.371 654.872 436.931 628.382 421.6C601.893 406.269 559.101 430.852 532.804 476.508C506.507 522.165 506.663 571.605 533.153 586.936C559.643 602.267 602.434 577.684 628.731 532.027Z" fill="white"/>
<path d="M266.996 586.923C293.503 571.582 293.674 522.133 267.377 476.477C241.08 430.821 198.274 406.246 171.766 421.587C145.259 436.929 145.088 486.377 171.385 532.034C197.682 577.69 240.488 602.265 266.996 586.923Z" fill="white"/>
<path d="M628.405 377.792C654.894 362.461 655.051 313.02 628.754 267.364C602.457 221.708 559.665 197.124 533.175 212.455C506.686 227.787 506.53 277.227 532.827 322.883C559.124 368.539 601.915 393.123 628.405 377.792Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

@@ -0,0 +1,17 @@
<svg width="1672" height="1672" viewBox="0 0 1672 1672" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="836.274" cy="836.219" r="835.436" fill="#E6007A"/>
<mask id="mask0" mask-type="alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="1672" height="1672">
<circle cx="836.274" cy="836.219" r="835.436" fill="#C4C4C4"/>
</mask>
<g mask="url(#mask0)">
<rect x="-299.919" y="-66.0518" width="2840.48" height="1871.38" fill="url(#paint0_linear)"/>
<path d="M-30.6062 -2704.78C4.61255 -2283.66 177.141 -1879.1 455.772 -1562.26C741.535 -1237.35 1137.41 -1018.51 1561.82 -940.645C1770.91 -902.158 1989.36 -894.998 2199.33 -931.247C2399.05 -965.706 2600.56 -1052.97 2713.35 -1230.64C2763.73 -1309.4 2794.49 -1402.94 2793.15 -1496.92C2791.81 -1597.16 2749.46 -1687.56 2687.49 -1764.54C2618.84 -1850.01 2531.01 -1922.51 2444.08 -1989.19C2358.04 -2054.98 2265.31 -2113.16 2164.11 -2152.99C1939.42 -2240.7 1716.07 -2191.92 1500.75 -2101.07C1272.49 -2004.86 1051.82 -1891.19 830.697 -1780.65C378.201 -1554.65 -84.1033 -1331.33 -586.53 -1244.51C-712.694 -1222.59 -841.087 -1210.05 -969.035 -1208.71C-1083.61 -1207.37 -1207.99 -1208.26 -1318.99 -1239.59C-1368.03 -1253.46 -1418.41 -1276.74 -1446.94 -1321.04C-1483.94 -1378.32 -1471.02 -1449.93 -1454.97 -1511.69C-1427.77 -1614.62 -1376.5 -1710.39 -1310.08 -1793.18C-1172.77 -1964.58 -977.951 -2078.25 -768.866 -2137.77C-649.389 -2171.78 -525.454 -2189.24 -401.519 -2195.95C-282.042 -2202.21 -154.987 -2206.69 -36.4019 -2187C79.5085 -2168.2 159.754 -2095.7 199.431 -1985.61C239.554 -1875.07 232.421 -1757.82 228.409 -1642.36C222.614 -1469.17 236.879 -1221.69 431.252 -1150.98C532.005 -1114.28 652.374 -1152.77 750.897 -1181.41C853.434 -1211.4 953.295 -1250.78 1048.7 -1298.66C1147.22 -1348.34 1240.84 -1406.96 1328.22 -1474.54C1403.12 -1531.82 1490.05 -1596.27 1540.43 -1677.72C1576.09 -1735.45 1596.6 -1814.66 1533.29 -1860.31C1529.73 -1862.99 1523.48 -1862.54 1519.92 -1860.31C1336.69 -1747.98 1235.05 -1546.14 1196.71 -1339.39C1161.04 -1146.51 1161.93 -908.871 1290.77 -748.21C1394.2 -619.323 1597.04 -584.864 1724.99 -701.22C1786.07 -756.713 1805.24 -842.19 1777.15 -919.611C1743.71 -1011.35 1658.12 -1076.24 1564.94 -1098.62C1442.35 -1128.16 1313.06 -1095.04 1197.15 -1054.76C1089.71 -1017.17 986.73 -967.944 888.207 -911.109C682.689 -792.515 496.34 -644.385 306.426 -502.519C112.499 -357.969 -86.7783 -217.894 -310.574 -123.467C-561.565 -16.9561 -834.846 36.7468 -1107.68 33.1667C-1230.72 31.3765 -1371.15 29.1389 -1483.94 -25.9065C-1605.2 -85.4272 -1642.65 -211.629 -1611.89 -336.936C-1582.47 -456.872 -1509.36 -558.46 -1427.33 -647.517C-1345.74 -736.127 -1252.57 -813.996 -1152.71 -881.124C-953.431 -1014.49 -729.635 -1106.23 -500.489 -1173.81C-442.98 -1190.81 -385.025 -1206.03 -327.069 -1219.9C-264.656 -1235.12 -195.556 -1257.49 -130.913 -1253.46C14.8662 -1244.07 37.157 -1068.64 62.1223 -955.413C173.574 -455.529 216.818 67.1785 428.577 538.868C454.88 597.942 483.858 655.672 515.956 711.613C537.801 750.1 564.549 791.719 611.805 799.327C715.233 814.991 778.092 683.419 808.853 606.445C849.421 504.409 883.749 368.362 853.434 259.166C826.685 163.844 737.523 128.489 646.132 136.992C532.005 147.733 424.119 204.121 320.692 249.321C191.407 305.708 63.4595 366.124 -63.1504 428.33C-314.587 551.847 -562.457 682.524 -814.339 806.04C-1316.77 1054.42 -1846.39 1276.84 -2409 1336.36C-2544.08 1350.68 -2679.6 1355.15 -2815.13 1348.44C-2810.67 1352.91 -2806.21 1357.39 -2801.76 1361.86C-2798.19 1187.33 -2665.34 1045.02 -2507.52 987.287C-2332.32 923.292 -2139.73 971.624 -1983.25 1062.47C-1814.29 1160.93 -1684.11 1309.06 -1563.74 1461.21C-1446.5 1609.79 -1332.81 1760.61 -1202.19 1898.45C-720.273 2405.49 -88.1157 2767.54 593.081 2922.38C750.006 2958.18 928.329 2991.75 1065.64 2884.34C1165.5 2806.02 1210.53 2679.38 1227.02 2557.2C1246.19 2410.86 1230.14 2255.57 1185.12 2115.05C1135.18 1959.31 1027.74 1849.67 860.121 1837.14C679.122 1823.71 492.774 1895.31 320.692 1940.96C106.257 1997.8 -107.731 2054.63 -322.165 2111.47C-533.925 2167.41 -745.239 2223.8 -956.998 2279.74C-1061.32 2307.48 -1166.08 2335.23 -1270.4 2362.98C-1374.28 2390.72 -1478.59 2425.18 -1584.25 2444.43C-1685.9 2462.77 -1767.92 2415.34 -1771.94 2307.93C-1775.06 2230.51 -1747.42 2153.98 -1713.98 2085.51C-1633.29 1920.37 -1542.35 1760.61 -1442.04 1606.66C-1236.07 1289.81 -990.879 998.476 -713.586 742.044C-646.269 679.839 -577.168 619.423 -506.284 561.245C-512.526 561.245 -518.767 561.245 -525.009 561.245C-308.791 729.514 -286.946 1030.25 -243.257 1280.42C-215.171 1441.52 -179.952 1601.74 -138.938 1760.16C-117.985 1840.72 -95.2485 1920.82 -70.7292 2000.48C-50.6677 2066.27 -33.281 2136.53 -2.07446 2197.84C18.8787 2238.56 50.9771 2279.74 99.1243 2286.45C145.934 2293.16 184.719 2264.52 212.36 2229.17C252.928 2176.36 278.34 2110.57 306.426 2050.6C339.861 1979.45 371.959 1907.4 402.275 1834.9C521.306 1550.72 616.709 1256.25 687.146 956.408C766.5 616.738 813.756 269.459 828.468 -79.6094C828.914 -93.0352 810.19 -97.5103 803.503 -86.3223C646.132 184.43 573.02 501.277 599.322 813.648C621.167 1075.45 725.04 1353.81 994.755 1442.42C1129.39 1486.72 1276.51 1480.91 1414.71 1457.63C1558.7 1433.47 1700.02 1390.95 1832.88 1330.54C2095.46 1211.05 2322.38 1012.35 2442.3 745.625C2498.92 619.87 2531.46 482.48 2529.68 344.196C2528.34 224.707 2506.94 80.6042 2412.43 -3.08276C2304.1 -99.3003 2160.55 -42.4648 2059.35 34.5093C1952.35 115.958 1862.75 219.784 1792.75 334.35C1457.95 881.224 1581.44 1586.07 1764.22 2163.83C1946.56 2739.34Line truncated
</g>
<path d="M579.661 1151H750.827L805.398 953.118C812.923 925.833 851.29 925.85 858.791 953.141L913.173 1151H1084.01L1215 645H1054.61L1013.65 845.811C1007.7 874.972 966.681 875.778 959.61 846.872L910.233 645H753.767L705.665 848.126C698.797 877.128 657.69 876.566 651.603 847.387L637.158 778.138C620.973 700.547 553.102 645 474.48 645H449L579.661 1151Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear" x1="-232.429" y1="816.169" x2="2713.69" y2="813.592" gradientUnits="userSpaceOnUse">
<stop stop-color="#F79420" stop-opacity="0.92"/>
<stop offset="1" stop-color="#C4C4C4" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 27 KiB

@@ -3,6 +3,7 @@ import SessionProposalModal from '@/views/SessionProposalModal'
import SessionSendTransactionModal from '@/views/SessionSendTransactionModal'
import SessionSignCosmosModal from '@/views/SessionSignCosmosModal'
import SessionRequestModal from '@/views/SessionSignModal'
import SessionSignPolkadotModal from '@/views/SessionSignPolkadotModal'
import SessionSignSolanaModal from '@/views/SessionSignSolanaModal'
import SessionSignTypedDataModal from '@/views/SessionSignTypedDataModal'
import SessionUnsuportedMethodModal from '@/views/SessionUnsuportedMethodModal'
@@ -21,6 +22,7 @@ export default function Modal() {
{view === 'SessionUnsuportedMethodModal' && <SessionUnsuportedMethodModal />}
{view === 'SessionSignCosmosModal' && <SessionSignCosmosModal />}
{view === 'SessionSignSolanaModal' && <SessionSignSolanaModal />}
{view === 'SessionSignPolkadotModal' && <SessionSignPolkadotModal />}
</NextModal>
)
}
@@ -0,0 +1,35 @@
/**
* Types
*/
export type TPolkadotChain = keyof typeof POLKADOT_MAINNET_CHAINS
/**
* Chains
*/
export const POLKADOT_MAINNET_CHAINS = {
'polkadot:91b171bb158e2d3848fa23a9f1c25182': {
chainId: '91b171bb158e2d3848fa23a9f1c25182',
name: 'Polkadot',
logo: '/chain-logos/polkadot.svg',
rgb: '230, 1, 122',
rpc: ''
}
}
export const POLKADOT_TEST_CHAINS = {
'polkadot:e143f23803ac50e8f6f8e62695d1ce9e': {
chainId: 'e143f23803ac50e8f6f8e62695d1ce9e',
name: 'Polkadot Westend',
logo: '/chain-logos/westend.svg',
rgb: '218, 104, 167',
rpc: ''
}
}
/**
* Methods
*/
export const POLKADOT_SIGNING_METHODS = {
POLKADOT_SIGN_TRANSACTION: 'polkadot_signTransaction',
POLKADOT_SIGN_MESSAGE: 'polkadot_signMessage'
}
@@ -2,6 +2,7 @@ import SettingsStore from '@/store/SettingsStore'
import { createOrRestoreCosmosWallet } from '@/utils/CosmosWalletUtil'
import { createOrRestoreEIP155Wallet } from '@/utils/EIP155WalletUtil'
import { createOrRestoreSolanaWallet } from '@/utils/SolanaWalletUtil'
import { createOrRestorePolkadotWallet } from '@/utils/PolkadotWalletUtil'
import { createSignClient } from '@/utils/WalletConnectUtil'
import { useCallback, useEffect, useState } from 'react'
@@ -13,10 +14,12 @@ export default function useInitialization() {
const { eip155Addresses } = createOrRestoreEIP155Wallet()
const { cosmosAddresses } = await createOrRestoreCosmosWallet()
const { solanaAddresses } = await createOrRestoreSolanaWallet()
const { polkadotAddresses } = await createOrRestorePolkadotWallet()
SettingsStore.setEIP155Address(eip155Addresses[0])
SettingsStore.setCosmosAddress(cosmosAddresses[0])
SettingsStore.setSolanaAddress(solanaAddresses[0])
SettingsStore.setPolkadotAddress(polkadotAddresses[0])
await createSignClient()
@@ -1,6 +1,7 @@
import { COSMOS_SIGNING_METHODS } from '@/data/COSMOSData'
import { EIP155_SIGNING_METHODS } from '@/data/EIP155Data'
import { SOLANA_SIGNING_METHODS } from '@/data/SolanaData'
import { POLKADOT_SIGNING_METHODS } from '@/data/PolkadotData'
import ModalStore from '@/store/ModalStore'
import { signClient } from '@/utils/WalletConnectUtil'
import { SignClientTypes } from '@walletconnect/types'
@@ -48,7 +49,9 @@ export default function useWalletConnectEventsManager(initialized: boolean) {
case SOLANA_SIGNING_METHODS.SOLANA_SIGN_MESSAGE:
case SOLANA_SIGNING_METHODS.SOLANA_SIGN_TRANSACTION:
return ModalStore.open('SessionSignSolanaModal', { requestEvent, requestSession })
case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE:
case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION:
return ModalStore.open('SessionSignPolkadotModal', { requestEvent, requestSession })
default:
return ModalStore.open('SessionUnsuportedMethodModal', { requestEvent, requestSession })
}
@@ -0,0 +1,60 @@
import { Keyring } from '@polkadot/keyring'
import { cryptoWaitReady, mnemonicGenerate } from '@polkadot/util-crypto'
import { KeyringPair } from '@polkadot/keyring/types'
import { stringToU8a, u8aToHex, hexToU8a } from '@polkadot/util'
import { HexString } from '@polkadot/util/types'
/**
* Types
*/
interface IInitArguments {
mnemonic?: string
}
/**
* Library
*/
export default class PolkadotLib {
keypair: KeyringPair
mnemonic: string
constructor(keypair: KeyringPair, mnemonic: string) {
this.keypair = keypair
this.mnemonic = mnemonic
}
static async init({ mnemonic }: IInitArguments) {
// wait till WASM is initialized, in case it is not initialized already (WASM is required for 'sr25519').
await cryptoWaitReady()
// create a keyring to load the account.
const keyring = new Keyring({ type: 'sr25519', ss58Format: 1 })
mnemonic = mnemonic || mnemonicGenerate()
const keypair = keyring.createFromUri(mnemonic)
return new PolkadotLib(keypair, mnemonic)
}
public getAddress() {
return this.keypair.address
}
public getMnemonic() {
return this.mnemonic
}
public async signMessage(message: string) {
// create the message, actual signature and verify
const messageU8a = stringToU8a(message)
const sigU8a = this.keypair.sign(messageU8a)
const signature = u8aToHex(sigU8a)
return { signature }
}
public async signTransaction(payload: HexString) {
const sigU8a = this.keypair.sign(hexToU8a(payload), { withType: true })
const signature = u8aToHex(sigU8a)
return { payload, signature }
}
}
+10 -1
View File
@@ -4,13 +4,16 @@ import PageHeader from '@/components/PageHeader'
import { COSMOS_MAINNET_CHAINS } from '@/data/COSMOSData'
import { EIP155_MAINNET_CHAINS, EIP155_TEST_CHAINS } from '@/data/EIP155Data'
import { SOLANA_MAINNET_CHAINS, SOLANA_TEST_CHAINS } from '@/data/SolanaData'
import { POLKADOT_MAINNET_CHAINS, POLKADOT_TEST_CHAINS } from '@/data/PolkadotData'
import SettingsStore from '@/store/SettingsStore'
import { Text } from '@nextui-org/react'
import { Fragment } from 'react'
import { useSnapshot } from 'valtio'
export default function HomePage() {
const { testNets, eip155Address, cosmosAddress, solanaAddress } = useSnapshot(SettingsStore.state)
const { testNets, eip155Address, cosmosAddress, solanaAddress, polkadotAddress } = useSnapshot(
SettingsStore.state
)
return (
<Fragment>
@@ -29,6 +32,9 @@ export default function HomePage() {
{Object.values(SOLANA_MAINNET_CHAINS).map(({ name, logo, rgb }) => (
<AccountCard key={name} name={name} logo={logo} rgb={rgb} address={solanaAddress} />
))}
{Object.values(POLKADOT_MAINNET_CHAINS).map(({ name, logo, rgb }) => (
<AccountCard key={name} name={name} logo={logo} rgb={rgb} address={polkadotAddress} />
))}
{testNets ? (
<Fragment>
@@ -41,6 +47,9 @@ export default function HomePage() {
{Object.values(SOLANA_TEST_CHAINS).map(({ name, logo, rgb }) => (
<AccountCard key={name} name={name} logo={logo} rgb={rgb} address={solanaAddress} />
))}
{Object.values(POLKADOT_TEST_CHAINS).map(({ name, logo, rgb }) => (
<AccountCard key={name} name={name} logo={logo} rgb={rgb} address={polkadotAddress} />
))}
</Fragment>
) : null}
</Fragment>
@@ -20,6 +20,7 @@ interface State {
| 'SessionUnsuportedMethodModal'
| 'SessionSignCosmosModal'
| 'SessionSignSolanaModal'
| 'SessionSignPolkadotModal'
data?: ModalData
}
@@ -9,6 +9,7 @@ interface State {
eip155Address: string
cosmosAddress: string
solanaAddress: string
polkadotAddress: string
}
/**
@@ -19,7 +20,8 @@ const state = proxy<State>({
account: 0,
eip155Address: '',
cosmosAddress: '',
solanaAddress: ''
solanaAddress: '',
polkadotAddress: ''
})
/**
@@ -44,6 +46,10 @@ const SettingsStore = {
state.solanaAddress = solanaAddress
},
setPolkadotAddress(polkadotAddress: string) {
state.polkadotAddress = polkadotAddress
},
toggleTestNets() {
state.testNets = !state.testNets
if (state.testNets) {
@@ -94,6 +94,13 @@ export function isSolanaChain(chain: string) {
return chain.includes('solana')
}
/**
* Check if chain is part of POLKADOT standard
*/
export function isPolkadotChain(chain: string) {
return chain.includes('polkadot')
}
/**
* Formats chainId to its name
*/
@@ -0,0 +1,33 @@
import { POLKADOT_SIGNING_METHODS } from '@/data/PolkadotData'
import { getWalletAddressFromParams } from '@/utils/HelperUtil'
import { polkadotAddresses, polkadotWallets } from '@/utils/PolkadotWalletUtil'
import { formatJsonRpcError, formatJsonRpcResult } from '@json-rpc-tools/utils'
import { SignClientTypes } from '@walletconnect/types'
import { getSdkError } from '@walletconnect/utils'
export async function approvePolkadotRequest(
requestEvent: SignClientTypes.EventArguments['session_request']
) {
const { params, id } = requestEvent
const { request } = params
const wallet = polkadotWallets[getWalletAddressFromParams(polkadotAddresses, params)]
switch (request.method) {
case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_MESSAGE:
const signature = await wallet.signMessage(request.params.message)
return formatJsonRpcResult(id, signature)
case POLKADOT_SIGNING_METHODS.POLKADOT_SIGN_TRANSACTION:
const signedTx = await wallet.signTransaction(request.params.transactionPayload)
return formatJsonRpcResult(id, signedTx)
default:
throw new Error(getSdkError('INVALID_METHOD').message)
}
}
export function rejectPolkadotRequest(request: SignClientTypes.EventArguments['session_request']) {
const { id } = request
return formatJsonRpcError(id, getSdkError('USER_REJECTED_METHODS').message)
}
@@ -0,0 +1,43 @@
import PolkadotLib from '@/lib/PolkadotLib'
export let wallet1: PolkadotLib
export let wallet2: PolkadotLib
export let polkadotWallets: Record<string, PolkadotLib>
export let polkadotAddresses: string[]
let address1: string
let address2: string
/**
* Utilities
*/
export async function createOrRestorePolkadotWallet() {
const mnemonic1 = localStorage.getItem('POLKADOT_MNEMONIC_1')
const mnemonic2 = localStorage.getItem('POLKADOT_MNEMONIC_2')
if (mnemonic1 && mnemonic2) {
wallet1 = await PolkadotLib.init({ mnemonic: mnemonic1 })
wallet2 = await PolkadotLib.init({ mnemonic: mnemonic2 })
} else {
wallet1 = await PolkadotLib.init({})
wallet2 = await PolkadotLib.init({})
// Don't store mnemonic in local storage in a production project!
localStorage.setItem('POLKADOT_MNEMONIC_1', wallet1.getMnemonic())
localStorage.setItem('POLKADOT_MNEMONIC_2', wallet2.getMnemonic())
}
address1 = wallet1.getAddress()
address2 = wallet2.getAddress()
polkadotWallets = {
[address1]: wallet1,
[address2]: wallet2
}
polkadotAddresses = Object.keys(polkadotWallets)
return {
polkadotWallets,
polkadotAddresses
}
}
@@ -5,7 +5,8 @@ import SessionProposalChainCard from '@/components/SessionProposalChainCard'
import ModalStore from '@/store/ModalStore'
import { cosmosAddresses } from '@/utils/CosmosWalletUtil'
import { eip155Addresses } from '@/utils/EIP155WalletUtil'
import { isCosmosChain, isEIP155Chain, isSolanaChain } from '@/utils/HelperUtil'
import { polkadotAddresses } from '@/utils/PolkadotWalletUtil'
import { isCosmosChain, isEIP155Chain, isSolanaChain, isPolkadotChain } from '@/utils/HelperUtil'
import { solanaAddresses } from '@/utils/SolanaWalletUtil'
import { signClient } from '@/utils/WalletConnectUtil'
import { Button, Divider, Modal, Text } from '@nextui-org/react'
@@ -112,6 +113,15 @@ export default function SessionProposalModal() {
chain={chain}
/>
)
} else if (isPolkadotChain(chain)) {
return (
<ProposalSelectSection
addresses={polkadotAddresses}
selectedAddresses={selectedAccounts[chain]}
onSelect={onSelectAccount}
chain={chain}
/>
)
}
}
@@ -0,0 +1,78 @@
import ProjectInfoCard from '@/components/ProjectInfoCard'
import RequestDataCard from '@/components/RequestDataCard'
import RequesDetailsCard from '@/components/RequestDetalilsCard'
import RequestMethodCard from '@/components/RequestMethodCard'
import RequestModalContainer from '@/components/RequestModalContainer'
import ModalStore from '@/store/ModalStore'
import { approvePolkadotRequest, rejectPolkadotRequest } from '@/utils/PolkadotRequestHandlerUtil'
import { signClient } from '@/utils/WalletConnectUtil'
import { Button, Divider, Modal, Text } from '@nextui-org/react'
import { Fragment } from 'react'
export default function SessionSignPolkadotModal() {
// Get request and wallet data from store
const requestEvent = ModalStore.state.data?.requestEvent
const requestSession = ModalStore.state.data?.requestSession
// Ensure request and wallet are defined
if (!requestEvent || !requestSession) {
return <Text>Missing request data</Text>
}
// Get required request data
const { topic, params } = requestEvent
const { request, chainId } = params
// Handle approve action (logic varies based on request method)
async function onApprove() {
if (requestEvent) {
const response = await approvePolkadotRequest(requestEvent)
await signClient.respond({
topic,
response
})
ModalStore.close()
}
}
// Handle reject action
async function onReject() {
if (requestEvent) {
const response = rejectPolkadotRequest(requestEvent)
await signClient.respond({
topic,
response
})
ModalStore.close()
}
}
return (
<Fragment>
<RequestModalContainer title="Sign Message">
<ProjectInfoCard metadata={requestSession.peer.metadata} />
<Divider y={2} />
<RequesDetailsCard chains={[chainId ?? '']} protocol={requestSession.relay.protocol} />
<Divider y={2} />
<RequestDataCard data={params} />
<Divider y={2} />
<RequestMethodCard methods={[request.method]} />
</RequestModalContainer>
<Modal.Footer>
<Button auto flat color="error" onClick={onReject}>
Reject
</Button>
<Button auto flat color="success" onClick={onApprove}>
Approve
</Button>
</Modal.Footer>
</Fragment>
)
}
+180 -1
View File
@@ -100,6 +100,13 @@
dependencies:
regenerator-runtime "^0.13.4"
"@babel/runtime@^7.18.9":
version "7.18.9"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a"
integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==
dependencies:
regenerator-runtime "^0.13.4"
"@babel/template@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.16.7.tgz#8d126c8701fde4d66b264b3eba3d96f07666d155"
@@ -1106,11 +1113,21 @@
"@react-types/shared" "3.11.0"
"@stitches/react" "1.2.7"
"@noble/hashes@1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.1.2.tgz#e9e035b9b166ca0af657a7848eb2718f0f22f183"
integrity sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==
"@noble/hashes@^1":
version "1.0.0"
resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.0.0.tgz#d5e38bfbdaba174805a4e649f13be9a9ed3351ae"
integrity sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==
"@noble/secp256k1@1.6.3":
version "1.6.3"
resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.6.3.tgz#7eed12d9f4404b416999d0c87686836c4c5c9b94"
integrity sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
@@ -1146,6 +1163,144 @@
enc-utils "^3.0.0"
randombytes "^2.1.0"
"@polkadot/keyring@^10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/keyring/-/keyring-10.1.2.tgz#a7e70bd091d2ceb48e7fee005cc3dbe6cf8c8d32"
integrity sha512-b6hP3JFGYjsNNT3NO7I8fWRPqovgL4IvjvLttkfzpM6eM1zRRupqQ+Q50Jdl/3YUcr26PcxQcdRqJku4WyDABg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/util" "10.1.2"
"@polkadot/util-crypto" "10.1.2"
"@polkadot/networks@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/networks/-/networks-10.1.2.tgz#a42c93c5dd1f56b99ca50ec9d4e8076088148086"
integrity sha512-67ZPqdhLYDGNX1jMEa3+hujh9j30Dr9AdqgdjE8Z3GdWoEVRp9Zda3DXMnDIQlRBQ32pRZty7dFhIq61Bv/whQ==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/util" "10.1.2"
"@substrate/ss58-registry" "^1.25.0"
"@polkadot/util-crypto@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/util-crypto/-/util-crypto-10.1.2.tgz#60779ad64e79542a06302ae7d9a2515482b563f4"
integrity sha512-lSgxSLF/XkksL8St3kyw8SCLic0JvyIf8uOezQZYyjSJKT3Gl8gGu9wCAKNAmboU0FgO8cnLO9AcAEkhCHvnyw==
dependencies:
"@babel/runtime" "^7.18.9"
"@noble/hashes" "1.1.2"
"@noble/secp256k1" "1.6.3"
"@polkadot/networks" "10.1.2"
"@polkadot/util" "10.1.2"
"@polkadot/wasm-crypto" "^6.3.1"
"@polkadot/x-bigint" "10.1.2"
"@polkadot/x-randomvalues" "10.1.2"
"@scure/base" "1.1.1"
ed2curve "^0.3.0"
tweetnacl "^1.0.3"
"@polkadot/util@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/util/-/util-10.1.2.tgz#2eded0c159c16c4a3c48ff45c4ced05c62fb4660"
integrity sha512-gYSpJyrrw5gZWgTVu6PJ1PBUzi3GqwmaK6XRgi4deHmQRn9TEXTToGtHmleJWnaTCRW8Vvh5B5RNNV2C/+va4w==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-bigint" "10.1.2"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-textdecoder" "10.1.2"
"@polkadot/x-textencoder" "10.1.2"
"@types/bn.js" "^5.1.0"
bn.js "^5.2.1"
"@polkadot/wasm-bridge@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-bridge/-/wasm-bridge-6.3.1.tgz#439fa78e80947a7cb695443e1f64b25c30bb1487"
integrity sha512-1TYkHsb9AEFhU9uZj3biEnN2yKQNzdrwSjiTvfCYnt97pnEkKsZI6cku+YPZQv5w/x9CQa5Yua9e2DVVZSivGA==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-crypto-asmjs@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-6.3.1.tgz#e8f469c9cf4a7709c8131a96f857291953f3e30a"
integrity sha512-zbombRfA5v/mUWQQhgg2YwaxhRmxRIrvskw65x+lruax3b6xPBFDs7yplopiJU3r8h2pTgQvX/DUksvqz2TCRQ==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-crypto-init@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-init/-/wasm-crypto-init-6.3.1.tgz#b590220c53c94b9a54d5dc236d0cbe943db76706"
integrity sha512-9yaUBcu+snwjJLmPPGl3cyGRQ1afyFGm16qzTM0sgG/ZCfUlK4uk8KWZe+sBUKgoxb2oXY7Y4WklKgQI1YBdfw==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-bridge" "6.3.1"
"@polkadot/wasm-crypto-asmjs" "6.3.1"
"@polkadot/wasm-crypto-wasm" "6.3.1"
"@polkadot/wasm-crypto-wasm@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-6.3.1.tgz#67f720e7f9694fef096abe9d60abbac02e032383"
integrity sha512-idSlzKGVzCfeCMRHsacRvqwojSaTadFxL/Dbls4z1thvfa3U9Ku0d2qVtlwg7Hj+tYWDiuP8Kygs+6bQwfs0XA==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-util" "6.3.1"
"@polkadot/wasm-crypto@^6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-crypto/-/wasm-crypto-6.3.1.tgz#63f5798aca2b2ff0696f190e6862d9781d8f280c"
integrity sha512-OO8h0qeVkqp4xYZaRVl4iuWOEtq282pNBHDKb6SOJuI2g59eWGcKh4EQU9Me2VP6qzojIqptrkrVt7KQXC68gA==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/wasm-bridge" "6.3.1"
"@polkadot/wasm-crypto-asmjs" "6.3.1"
"@polkadot/wasm-crypto-init" "6.3.1"
"@polkadot/wasm-crypto-wasm" "6.3.1"
"@polkadot/wasm-util" "6.3.1"
"@polkadot/wasm-util@6.3.1":
version "6.3.1"
resolved "https://registry.yarnpkg.com/@polkadot/wasm-util/-/wasm-util-6.3.1.tgz#439ebb68a436317af388ed6438b8f879df3afcda"
integrity sha512-12oAv5J7Yoc9m6jixrSaQCxpOkWOyzHx3DMC8qmLjRiwdBWxqLmImOVRVnFsbaxqSbhBIHRuJphVxWE+GZETDg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-bigint@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-bigint/-/x-bigint-10.1.2.tgz#5070af6a3a5aa66eba85597837ce6eb44ad7dc02"
integrity sha512-TCwv3NjQdfLb7CBYR8EA5t0CrMfYx3IF4hKjctuplL+mDNI0VzNn4qVKW62AjouI8kMbn7VyBPfoBeuYX8Ixrw==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-global@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-global/-/x-global-10.1.2.tgz#66c2ceb6ef5043bc6bddd5e944f35e64e9d6a0a9"
integrity sha512-//r3NVLYdYQs0So0IK8Pa0pnL5pPi0geQWE6qjTtPD0oszuN9SUDqDlFQj3I3vqQOwgybbzBGNYRRinP8B2xUg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-randomvalues@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-randomvalues/-/x-randomvalues-10.1.2.tgz#8a0f15eb0558f837dd10060ad808707fe8b64c05"
integrity sha512-KOu6iZWye9KD6qoahiqZ0alrT/5FSGL4XXLhVSg69xAqD6yG2oi2aKA6cZpDU19uZGqVneqsgpebDsrZ0nLUEg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-textdecoder@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-textdecoder/-/x-textdecoder-10.1.2.tgz#833627fc55b388483857de922b534b70fc349a0a"
integrity sha512-liMlSSKfLGTvcUPz1fMicH2HoKLgSjzxFYsbNfXJOe9GobQfSrAOcprM0j4gNJqN5EoZhze9Sf1rMTORQwomtg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@polkadot/x-textencoder@10.1.2":
version "10.1.2"
resolved "https://registry.yarnpkg.com/@polkadot/x-textencoder/-/x-textencoder-10.1.2.tgz#a728a89d117456749211fcf520ca0e846654df89"
integrity sha512-bSMvesZ43Er6+jogt9IfwWN/E8bhkl4a9nNnpyS/vTh+j6n/DfDQrvYpKDpRIn7oJA6lfs/mL9Jo5jjJTngaxg==
dependencies:
"@babel/runtime" "^7.18.9"
"@polkadot/x-global" "10.1.2"
"@protobufjs/aspromise@^1.1.1", "@protobufjs/aspromise@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@protobufjs/aspromise/-/aspromise-1.1.2.tgz#9b8b0cc663d669a7d8f6f5d0893a14d348f30fbf"
@@ -1635,6 +1790,11 @@
resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz#6801033be7ff87a6b7cadaf5b337c9f366a3c4b0"
integrity sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==
"@scure/base@1.1.1":
version "1.1.1"
resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938"
integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==
"@solana/buffer-layout-utils@^0.2.0":
version "0.2.0"
resolved "https://registry.yarnpkg.com/@solana/buffer-layout-utils/-/buffer-layout-utils-0.2.0.tgz#b45a6cab3293a2eb7597cceb474f229889d875ca"
@@ -1835,6 +1995,18 @@
resolved "https://registry.yarnpkg.com/@stitches/react/-/react-1.2.7.tgz#aea2403fac726db66d1740d29557e3910b1a1dc7"
integrity sha512-6AxpUag7OW55ANzRnuy7R15FEyQeZ66fytVo3BBilFIU0mfo3t49CAMcEAL/A1SbhSj/FCdWkn/XrbjGBTJTzg==
"@substrate/ss58-registry@^1.25.0":
version "1.25.0"
resolved "https://registry.yarnpkg.com/@substrate/ss58-registry/-/ss58-registry-1.25.0.tgz#0fcd8c9c0e53963a88fbed41f2cbd8a1a5c74cde"
integrity sha512-LmCH4QJRdHaeLsLTPSgJaXguMoIW+Ig9fA9LRPpeya9HefVAJ7gZuUYinldv+QmX7evNm5CL0rspNUS8l1DvXg==
"@types/bn.js@^5.1.0":
version "5.1.0"
resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.0.tgz#32c5d271503a12653c62cf4d2b45e6eab8cebc68"
integrity sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==
dependencies:
"@types/node" "*"
"@types/connect@^3.4.33":
version "3.4.35"
resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
@@ -2832,6 +3004,13 @@ doctrine@^3.0.0:
dependencies:
esutils "^2.0.2"
ed2curve@^0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/ed2curve/-/ed2curve-0.3.0.tgz#322b575152a45305429d546b071823a93129a05d"
integrity sha512-8w2fmmq3hv9rCrcI7g9hms2pMunQr1JINfcjwR9tAyZqhtyaMN991lF/ZfHfr5tzZQ8c7y7aBgZbjfbd0fjFwQ==
dependencies:
tweetnacl "1.x.x"
elliptic@6.5.4, elliptic@^6.4.0, elliptic@^6.5.3, elliptic@^6.5.4:
version "6.5.4"
resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
@@ -5131,7 +5310,7 @@ tunnel-agent@^0.6.0:
dependencies:
safe-buffer "^5.0.1"
tweetnacl@^1.0.0, tweetnacl@^1.0.3:
tweetnacl@1.x.x, tweetnacl@^1.0.0, tweetnacl@^1.0.3:
version "1.0.3"
resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596"
integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==