added genshiro rococo testnet (#5566)

Co-authored-by: Alex D <pr0fedt@gmail.com>
This commit is contained in:
Alex D 2021-06-11 19:29:48 +03:00 committed by GitHub
parent 4c2f1d935c
commit 5bb204654d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 113 additions and 58 deletions

View File

@ -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",

View File

@ -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
}
]
};

View 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;

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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,

View File

@ -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