added genshiro rococo testnet (#5566)
Co-authored-by: Alex D <pr0fedt@gmail.com>
This commit is contained in:
parent
4c2f1d935c
commit
5bb204654d
@ -13,7 +13,7 @@
|
||||
"@darwinia/types": "^1.1.0-alpha.21",
|
||||
"@docknetwork/node-types": "^0.4.6",
|
||||
"@edgeware/node-types": "^3.5.1-erup-4",
|
||||
"@equilab/definitions": "1.1.1",
|
||||
"@equilab/definitions": "1.2.2",
|
||||
"@interlay/polkabtc-types": "^0.7.3",
|
||||
"@kiltprotocol/type-definitions": "^0.1.6",
|
||||
"@laminar/type-definitions": "^0.3.1",
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
// Copyright 2017-2021 @polkadot/apps-config authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { ApiInterfaceRx, AugmentedQuery } from '@polkadot/api/types';
|
||||
import type { ApiInterfaceRx, AugmentedQuery, RxResult } from '@polkadot/api/types';
|
||||
import type { AccountData, AccountId, AccountIndex, Address, Balance } from '@polkadot/types/interfaces';
|
||||
import type { Codec, OverrideBundleDefinition } from '@polkadot/types/types';
|
||||
import type { Observable } from '@polkadot/x-rxjs';
|
||||
|
||||
import eq from '@equilab/definitions';
|
||||
import { equilibrium } from '@equilab/definitions';
|
||||
import BN from 'bn.js';
|
||||
|
||||
import { Enum } from '@polkadot/types';
|
||||
@ -31,17 +31,20 @@ interface Currency extends Enum {
|
||||
|
||||
type CommonBalanceMap = ApiInterfaceRx['query']['balances']['account'];
|
||||
|
||||
type EqBalanceDoubleMap = AugmentedQuery<
|
||||
type EqBalanceDoubleMap<T> = AugmentedQuery<
|
||||
'rxjs',
|
||||
(key1: AccountIndex | AccountId | Address | string, key2: Currency | string) => Observable<SignedBalance>,
|
||||
(key1: AccountIndex | AccountId | Address | string, key2: T | string) => Observable<SignedBalance>,
|
||||
[AccountId, Currency]
|
||||
>
|
||||
|
||||
const transformBalanceStorage = (
|
||||
query: EqBalanceDoubleMap,
|
||||
arg: Currency | string,
|
||||
transform: <SB extends Enum>(data: SB) => AccountData
|
||||
const transformBalanceStorage = <T>(
|
||||
query: EqBalanceDoubleMap<T>,
|
||||
currency: string,
|
||||
transform: <SB extends Enum>(data: SB) => AccountData,
|
||||
currencyToAsset: (arg: string) => T
|
||||
): CommonBalanceMap => {
|
||||
const arg = currencyToAsset(currency);
|
||||
|
||||
// HACK as we cannot properly transform queryMulti result, define AccountData getters on standard Enum
|
||||
if (!(Enum as { hacked?: boolean }).hacked) {
|
||||
(Enum as { hacked?: boolean }).hacked = true;
|
||||
@ -78,51 +81,55 @@ const signedBalancePredicate = (raw: Codec): raw is SignedBalance =>
|
||||
Object.prototype.hasOwnProperty.call(raw, key)
|
||||
);
|
||||
|
||||
export const createCustomAccount = <A = string>(currency: string, currencyToAsset: (curr: string) => A, accountDataType = 'AccountData'):
|
||||
(instanceId: string, api: ApiInterfaceRx) => RxResult<(arg: string | Uint8Array | AccountId) => Observable<AccountData>> => (instanceId: string, api: ApiInterfaceRx) => {
|
||||
const registry = api.registry;
|
||||
|
||||
const transform = <SB extends Enum>(balance: SB): AccountData => {
|
||||
let free = registry.createType('Balance');
|
||||
const reserved = registry.createType('Balance');
|
||||
const miscFrozen = registry.createType('Balance');
|
||||
const feeFrozen = registry.createType('Balance');
|
||||
|
||||
if (signedBalancePredicate(balance)) {
|
||||
if (balance.isPositive) {
|
||||
free = registry.createType('Balance', balance.asPositive);
|
||||
} else if (balance.isNegative) {
|
||||
free = registry.createType('Balance', balance.asNegative.mul(new BN(-1)));
|
||||
}
|
||||
}
|
||||
|
||||
return registry.createType(accountDataType as 'AccountData', { feeFrozen, free, miscFrozen, reserved });
|
||||
};
|
||||
|
||||
return transformBalanceStorage(
|
||||
api.query.eqBalances.account as unknown as EqBalanceDoubleMap<A>,
|
||||
currency,
|
||||
transform,
|
||||
currencyToAsset
|
||||
);
|
||||
};
|
||||
|
||||
const definitions: OverrideBundleDefinition = {
|
||||
derives: {
|
||||
...eq.equilibrium.instances.balances.reduce(
|
||||
...equilibrium.instances.balances.reduce(
|
||||
(all, cur) => ({
|
||||
...all,
|
||||
[cur]: {
|
||||
customAccount: (instanceId: string, api: ApiInterfaceRx) => {
|
||||
const registry = api.registry;
|
||||
|
||||
const transform = <SB extends Enum>(balance: SB): AccountData => {
|
||||
let free = registry.createType('Balance');
|
||||
const reserved = registry.createType('Balance');
|
||||
const miscFrozen = registry.createType('Balance');
|
||||
const feeFrozen = registry.createType('Balance');
|
||||
|
||||
if (signedBalancePredicate(balance)) {
|
||||
if (balance.isPositive) {
|
||||
free = registry.createType('Balance', balance.asPositive);
|
||||
} else if (balance.isNegative) {
|
||||
free = registry.createType('Balance', balance.asNegative.mul(new BN(-1)));
|
||||
}
|
||||
}
|
||||
|
||||
return registry.createType('AccountData', { feeFrozen, free, miscFrozen, reserved });
|
||||
};
|
||||
|
||||
return transformBalanceStorage(
|
||||
api.query.eqBalances.account as unknown as EqBalanceDoubleMap,
|
||||
cur,
|
||||
transform
|
||||
);
|
||||
}
|
||||
customAccount: createCustomAccount(cur, (currency: string) => currency)
|
||||
}
|
||||
}),
|
||||
{}
|
||||
)
|
||||
},
|
||||
|
||||
instances: eq.equilibrium.instances,
|
||||
instances: equilibrium.instances,
|
||||
|
||||
types: [
|
||||
{
|
||||
// on all versions
|
||||
minmax: [0, undefined],
|
||||
types: eq.equilibrium.types
|
||||
types: equilibrium.types
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
44
packages/apps-config/src/api/spec/genshiro.ts
Normal file
44
packages/apps-config/src/api/spec/genshiro.ts
Normal file
@ -0,0 +1,44 @@
|
||||
// Copyright 2017-2021 @polkadot/apps-config authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { OverrideBundleDefinition } from '@polkadot/types/types';
|
||||
|
||||
import { genshiro } from '@equilab/definitions';
|
||||
|
||||
import { createCustomAccount } from './equilibrium';
|
||||
|
||||
export const u64FromCurrency = (currency: string): number => {
|
||||
const buf = Buffer.from(currency.toLowerCase());
|
||||
const size = buf.length;
|
||||
|
||||
return buf.reduce(
|
||||
(val, digit, i) => val + Math.pow(256, size - 1 - i) * digit,
|
||||
0
|
||||
);
|
||||
};
|
||||
|
||||
const definitions: OverrideBundleDefinition = {
|
||||
derives: {
|
||||
...genshiro.instances.balances.reduce(
|
||||
(all, cur) => ({
|
||||
...all,
|
||||
[cur]: {
|
||||
customAccount: createCustomAccount(cur, (currency: string) => ({ 0: u64FromCurrency(currency) }), 'CompatAccountData')
|
||||
}
|
||||
}),
|
||||
{}
|
||||
)
|
||||
},
|
||||
|
||||
instances: genshiro.instances,
|
||||
|
||||
types: [
|
||||
{
|
||||
// on all versions
|
||||
minmax: [0, undefined],
|
||||
types: genshiro.types
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
export default definitions;
|
||||
@ -35,6 +35,7 @@ import galital from './galital';
|
||||
import galitalParachain from './galital-parachain';
|
||||
import galois from './galois';
|
||||
import gamepower from './gamepower';
|
||||
import genshiro from './genshiro';
|
||||
import hanonycash from './hanonycash';
|
||||
import hydrate from './hydrate';
|
||||
import idavoll from './idavoll';
|
||||
@ -99,6 +100,7 @@ const spec: Record<string, OverrideBundleDefinition> = {
|
||||
'Darwinia Crab PC2': darwiniaParachain,
|
||||
'Darwinia PC2': darwiniaParachain,
|
||||
Equilibrium: equilibrium,
|
||||
Genshiro: genshiro,
|
||||
Pangolin: pangolin,
|
||||
VLN: vln,
|
||||
'VLN-PC': vlnrococo,
|
||||
|
||||
@ -170,15 +170,6 @@ export function createRococo (t: TFunction): EndpointOption {
|
||||
Encointer: 'wss://rococo.encointer.org'
|
||||
}
|
||||
},
|
||||
{
|
||||
info: 'rococoEquilibrium',
|
||||
isDisabled: true, // Rococo reset
|
||||
paraId: 42,
|
||||
text: t('rpc.rococo.equilibrium', 'Equilibrium', { ns: 'apps-config' }),
|
||||
providers: {
|
||||
Equilibrium: 'wss://rococo.equilibrium.io'
|
||||
}
|
||||
},
|
||||
{
|
||||
info: 'rococoGalital',
|
||||
isDisabled: true, // Rococo reset
|
||||
@ -188,6 +179,14 @@ export function createRococo (t: TFunction): EndpointOption {
|
||||
StarkleyTech: 'wss://galital-rpc.starkleytech.com'
|
||||
}
|
||||
},
|
||||
{
|
||||
info: 'rococoGenshiro',
|
||||
paraId: 2021,
|
||||
text: t('rpc.rococo.genshiro', 'Genshiro', { ns: 'apps-config' }),
|
||||
providers: {
|
||||
Equilibrium: 'wss://gens-rococo.equilibrium.io'
|
||||
}
|
||||
},
|
||||
{
|
||||
info: 'rococoHalongbay',
|
||||
paraId: 2018,
|
||||
|
||||
@ -22,8 +22,10 @@ const chainClover = 'linear-gradient(to right, #52ad75, #7cc773)';
|
||||
const chainChainx = '#F6C94A';
|
||||
const chainDarwinia = 'linear-gradient(-45deg, #FE3876 0%, #7C30DD 71%, #3A30DD 100%)';
|
||||
const chainDotMog = '#020609';
|
||||
const chainEquilibrium = '#1792ff';
|
||||
const chainGalital = '#00063F';
|
||||
const chainGamePower = '#5d21a5';
|
||||
const chainGenshiro = '#e8662d';
|
||||
const chainHanonycash = '#0099CC';
|
||||
const chainHydrate = '#000000';
|
||||
const chainIntegritee = '#15bcff';
|
||||
@ -98,11 +100,9 @@ const nodeDotMog = '#020609';
|
||||
const nodeEdgeware = '#0a95df';
|
||||
const nodeEncointerNotee = '#cc0000';
|
||||
const nodeEncointerTeeproxy = '#0000cc';
|
||||
const nodeEquilibrium = '#1792ff';
|
||||
const nodeGalital = '#00063F;';
|
||||
const nodeGamePower = '#5d21a5';
|
||||
const nodeGeek = '#4f46e5';
|
||||
const nodeGenshiro = '#e8662d';
|
||||
const nodeIpse = '#08a1e8';
|
||||
const nodeJupiter = '#7143ff';
|
||||
const nodeKonomi = '#007aff';
|
||||
@ -149,7 +149,7 @@ export { emptyColor };
|
||||
|
||||
// Alphabetical overrides based on the actual matched chain name
|
||||
// NOTE: This is as retrieved via the system.chain RPC
|
||||
export const chainColors = Object.entries({
|
||||
export const chainColors: Record<string, string> = Object.entries({
|
||||
'acala mandala pc1': chainRoccoAcala,
|
||||
'acala mandala pc2': chainRoccoAcala,
|
||||
'Apron PC1': chainApron,
|
||||
@ -170,11 +170,12 @@ export const chainColors = Object.entries({
|
||||
'DOTMog.com NET': chainDotMog,
|
||||
'Encointer Canary': nodeEncointerNotee,
|
||||
'Encointer PC1': nodeEncointerNotee,
|
||||
Equilibrium: nodeEquilibrium,
|
||||
EquilibriumTestnet: nodeGenshiro,
|
||||
Equilibrium: chainEquilibrium,
|
||||
EquilibriumTestnet: chainGenshiro,
|
||||
Galital: chainGalital,
|
||||
Galois: chainGalois,
|
||||
'GamePower Network': chainGamePower,
|
||||
'Genshiro Rococo Testnet': chainGenshiro,
|
||||
'Halongbay PC1': chainPolkaFoundry,
|
||||
hanonycash: chainHanonycash,
|
||||
'HydraDX Hydrate': chainHydrate,
|
||||
|
||||
@ -140,11 +140,12 @@ export const chainLogos = Object.entries({
|
||||
'Encointer Canary': nodeEncointerNotee,
|
||||
'Encointer PC1': nodeEncointerNotee,
|
||||
Equilibrium: chainEquilibrium,
|
||||
EquilibriumTestnet: chainGenshiro,
|
||||
EquilibriumTestnet: chainEquilibrium,
|
||||
Galital: nodeGalital,
|
||||
Galois: nodeMath,
|
||||
'GamePower Network': nodeGamePower,
|
||||
GEEK: nodeGeek,
|
||||
'Genshiro Rococo Testnet': chainEquilibrium,
|
||||
'HydraDX Hydrate': chainHydrate,
|
||||
'HydraDX Snakenet': chainSnakenet,
|
||||
'HydraDX Snakenet Gen2': chainSnakenet,
|
||||
@ -460,6 +461,7 @@ export const namedLogos: Record<string, unknown> = {
|
||||
rococoEave: nodeEave,
|
||||
rococoEncointer: nodeEncointerNotee,
|
||||
rococoGalital: nodeGalital,
|
||||
rococoGenshiro: chainGenshiro,
|
||||
rococoHydrate: chainHydrate,
|
||||
rococoIdavoll: nodeIdavoll,
|
||||
rococoIntegritee: nodeIntegritee,
|
||||
|
||||
10
yarn.lock
10
yarn.lock
@ -1595,10 +1595,10 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@equilab/definitions@npm:1.1.1":
|
||||
version: 1.1.1
|
||||
resolution: "@equilab/definitions@npm:1.1.1"
|
||||
checksum: f18fc7df822e0421fb0d2f127e2be9004e059f45769610e9df1115291951b153320a00bb28919a3b2c4dd682f6564f47040068f2128171afbfc47d979295de04
|
||||
"@equilab/definitions@npm:1.2.2":
|
||||
version: 1.2.2
|
||||
resolution: "@equilab/definitions@npm:1.2.2"
|
||||
checksum: 7ec5fa94337f2a36679ea47509c42968e8ff11b6920b58c7dfec85abd189dca8da44bc28021ccca192486e54710f2a9fda731f025058da6256218873b34054b0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2535,7 +2535,7 @@ __metadata:
|
||||
"@darwinia/types": ^1.1.0-alpha.21
|
||||
"@docknetwork/node-types": ^0.4.6
|
||||
"@edgeware/node-types": ^3.5.1-erup-4
|
||||
"@equilab/definitions": 1.1.1
|
||||
"@equilab/definitions": 1.2.2
|
||||
"@interlay/polkabtc-types": ^0.7.3
|
||||
"@kiltprotocol/type-definitions": ^0.1.6
|
||||
"@laminar/type-definitions": ^0.3.1
|
||||
|
||||
Loading…
Reference in New Issue
Block a user