From c50011b82a585954cdd23dee3d02168194a795c0 Mon Sep 17 00:00:00 2001 From: chiefbiiko <22937570+chiefbiiko@users.noreply.github.com> Date: Mon, 25 Apr 2022 13:08:23 +0200 Subject: [PATCH] Add t0rn Rococo parachain (#7443) --- packages/apps-config/src/api/spec/index.ts | 2 + packages/apps-config/src/api/spec/t0rn.ts | 203 ++++++++++++++++++ .../src/endpoints/testingRelayRococo.ts | 8 + packages/apps-config/src/ui/colors.ts | 3 + .../apps-config/src/ui/logos/chains/t0rn.png | Bin 0 -> 28186 bytes packages/apps-config/src/ui/logos/index.ts | 4 + .../apps/public/locales/en/apps-config.json | 1 + 7 files changed, 221 insertions(+) create mode 100644 packages/apps-config/src/api/spec/t0rn.ts create mode 100644 packages/apps-config/src/ui/logos/chains/t0rn.png diff --git a/packages/apps-config/src/api/spec/index.ts b/packages/apps-config/src/api/spec/index.ts index a97fbc9974..80a5aa8f6b 100644 --- a/packages/apps-config/src/api/spec/index.ts +++ b/packages/apps-config/src/api/spec/index.ts @@ -107,6 +107,7 @@ import subsocial from './subsocial'; import subspace from './subspace'; import substrateContractsNode from './substrateContractsNode'; import swapdex from './swapdex'; +import t0rn from './t0rn'; import ternoa from './ternoa'; import trustbase from './trustbase'; import turing from './turing'; @@ -257,6 +258,7 @@ const spec: Record = { 'substrate-contracts-node': substrateContractsNode, subzero: zero, swapdex, + t0rn, ternoa, trustbase, turing, diff --git a/packages/apps-config/src/api/spec/t0rn.ts b/packages/apps-config/src/api/spec/t0rn.ts new file mode 100644 index 0000000000..18e9514fa5 --- /dev/null +++ b/packages/apps-config/src/api/spec/t0rn.ts @@ -0,0 +1,203 @@ +// Copyright 2017-2022 @polkadot/apps-config authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { OverrideBundleDefinition } from '@polkadot/types/types'; + +/* eslint-disable sort-keys */ + +const definitions: OverrideBundleDefinition = { + types: [ + { + // on all versions + minmax: [0, undefined], + types: { + GatewayVendor: { _enum: ['Substrate', 'Ethereum'] }, + GatewayType: { + _enum: { + ProgrammableInternal: 'u32', + ProgrammableExternal: 'u32', + TxOnly: 'u32' + } + }, + GatewayGenesisConfig: { + modules_encoded: 'Option', + extrinsics_version: 'u8', + genesis_hash: 'Bytes' + }, + GatewaySysProps: { ss58_format: 'u16', token_symbol: 'Bytes', token_decimals: 'u8' }, + AllowedSideEffect: '[u8; 4]', + BlockNumber: 'u64', + Compose: { + name: 'Vec', + code_txt: 'Vec', + exec_type: 'Vec', + dest: 'AccountId', + value: 'Balance', + bytes: 'Vec', + input_data: 'Vec' + }, + CircuitOutboundMessage: { + name: 'Bytes', + module_name: 'Bytes', + method_name: 'Bytes', + sender: 'Option', + target: 'Option', + arguments: 'Vec', + expected_output: 'Vec', + extra_payload: 'Option' + }, + GatewayExpectedOutput: { + _enum: { + Storage: null, + Events: null, + Extrinsic: null, + Output: null + } + }, + ProofTriePointer: { _enum: { State: 0, Transaction: 1, Receipts: 2 } }, + GatewayPointer: { + id: 'ChainId', + vendor: 'GatewayVendor', + gateway_type: 'GatewayType' + }, + ExtraMessagePayload: { + signer: 'Bytes', + module_name: 'Bytes', + method_name: 'Bytes', + call_bytes: 'Bytes', + signature: 'Bytes', + extra: 'Bytes', + tx_signed: 'Bytes', + custom_payload: 'Option' + }, + ContractActionDesc: { + action_id: 'Hash', + target_id: 'Option', + to: 'Option' + }, + TargetId: '[u8; 4]', + SideEffect: { + target: 'TargetId', + prize: 'BalanceOf', + ordered_at: 'BlockNumber', + encoded_action: 'Bytes', + encoded_args: 'Vec', + signature: 'Bytes', + enforce_executioner: 'Option' + }, + SideEffectId: 'Hash', + ConfirmedSideEffect: { + err: 'Option', + output: 'Option', + encoded_effect: 'Bytes', + inclusion_proof: 'Option', + executioner: 'AccountId', + received_at: 'BlockNumber', + cost: 'Option' + }, + FullSideEffect: { input: 'SideEffect', confirmed: 'Option' }, + XtxId: 'Hash', + XdnsRecordId: 'Hash', + XdnsRecord: { + url: 'Vec', + gateway_abi: 'GatewayABIConfig', + gateway_genesis: 'GatewayGenesisConfig', + gateway_vendor: 'GatewayVendor', + gateway_type: 'GatewayType', + gateway_id: 'ChainId', + gateway_sys_props: 'GatewaySysProps', + registrant: 'Option', + last_finalized: 'Option' + }, + FetchXdnsRecordsResponse: { xdns_records: 'Vec>' }, + ChainId: '[u8; 4]', + RegistryContractId: 'Hash', + RegistryContract: { + code_txt: 'Vec', + bytes: 'Vec', + author: 'AccountId', + author_fees_per_single_use: 'Option', + abi: 'Option>', + action_descriptions: 'Vec>', + info: 'Option>', + meta: 'ContractMetadata' + }, + RawAliveContractInfo: { + trie_id: 'TrieId', + storage_size: 'u32', + pair_count: 'u32', + code_hash: 'CodeHash', + rent_allowance: 'Balance', + rent_paid: 'Balance', + deduct_block: 'BlockNumber', + last_write: 'Option', + _reserved: 'Option<()>' + }, + Address: 'MultiAddress', + LookupSource: 'MultiAddress', + DispatchMessageId: { channelId: 'ChannelId', nonce: 'u64' }, + ChannelId: { _enum: ['Basic', 'Incentivized'] }, + MessageNonce: 'u64', + Message: { data: 'Vec', proof: 'Proof' }, + Proof: { + blockHash: 'H256', + txIndex: 'u32', + data: '(Vec>, Vec>)' + }, + EthereumHeaderId: { number: 'u64', hash: 'H256' }, + EthereumHeader: { + parentHash: 'H256', + timestamp: 'u64', + number: 'u64', + author: 'H160', + transactionsRoot: 'H256', + ommersHash: 'H256', + extraData: 'Vec', + stateRoot: 'H256', + receiptsRoot: 'H256', + logBloom: 'Bloom', + gasUsed: 'U256', + gasLimit: 'U256', + difficulty: 'U256', + seal: 'Vec>', + baseFee: 'Option' + }, + StoredHeader: { + submitter: 'Option', + header: 'EthereumHeader', + totalDifficulty: 'U256', + finalized: 'bool' + }, + EthashProofData: { dagNodes: '[H512; 2]', proof: 'Vec' }, + Bloom: '[u8; 256]', + PruningRange: { oldestUnprunedBlock: 'u64', oldestBlockToKeep: 'u64' }, + EthereumDifficultyConfig: { + byzantiumForkBlock: 'u64', + constantinopleForkBlock: 'u64', + muirGlacierForkBlock: 'u64', + londonForkBlock: 'u64' + }, + AssetId: { _enum: { ETH: null, Token: 'H160' } }, + TokenId: 'u128', + TokenData: { tokenContract: 'H160', tokenId: 'U256' }, + TokenInfoOf: { owner: 'AccountId', metadata: 'Vec', data: 'TokenData' }, + GatewayABIConfig: { + block_number_type_size: 'u16', + hash_size: 'u16', + hasher: 'HasherAlgo', + crypto: 'CryptoAlgo', + address_length: 'u16', + value_type_size: 'u16', + decimals: 'u16', + structs: 'Vec' + }, + HasherAlgo: { _enum: ['Blake2', 'Keccak256'] }, + CryptoAlgo: { _enum: ['Ed25519', 'Sr25519', 'Ecdsa'] }, + StructDecl: { name: 'Type', fields: 'Vec', offsets: 'Vec' }, + Parachain: { relay_chain_id: 'ChainId', id: 'u32' } + } + } + ] +}; + +export default definitions; diff --git a/packages/apps-config/src/endpoints/testingRelayRococo.ts b/packages/apps-config/src/endpoints/testingRelayRococo.ts index 8840c07142..1ac4d5980f 100644 --- a/packages/apps-config/src/endpoints/testingRelayRococo.ts +++ b/packages/apps-config/src/endpoints/testingRelayRococo.ts @@ -189,6 +189,14 @@ export function createRococo (t: TFunction): EndpointOption { DataHighway: 'wss://spreehafen.datahighway.com' } }, + { + info: 't0rn', + paraId: 3333, + text: t('rpc.rococo.t3rn', 't0rn', { ns: 'apps-config' }), + providers: { + t3rn: 'wss://dev.net.t3rn.io' + } + }, { info: 'rococoZeitgeist', isDisabled: true, // See https://github.com/polkadot-js/apps/issues/5842 diff --git a/packages/apps-config/src/ui/colors.ts b/packages/apps-config/src/ui/colors.ts index 84142e91e0..44f2d331d5 100644 --- a/packages/apps-config/src/ui/colors.ts +++ b/packages/apps-config/src/ui/colors.ts @@ -134,6 +134,7 @@ const chainUnique = '#40BCFF'; const chainIdavoll = '#ff43ff'; const chainSubDAO = 'linear-gradient(50deg, #F20092 0%, #FF4D5D 100%)'; const chainSwapdex = '#E94082'; +const chainT0rn = '#212322'; const chainTinker = '#161616'; const chainTrustBase = '#ff43aa'; const chainTuring = '#A8278C'; @@ -410,6 +411,7 @@ export const chainColors: Record = Object.entries({ 'SubGame Staging': nodeSubGame, Subspace: nodeSubspace, swapdex: chainSwapdex, + t0rn: chainT0rn, Tick: chainRoccoTick, Track: chainRoccoTrack, Trick: chainRoccoTrick, @@ -451,6 +453,7 @@ export const nodeColors = Object.entries({ centrifuge: nodeCentrifuge, 'centrifuge chain': nodeCentrifuge, 'Centrifuge Chain Node': nodeCentrifuge, + 'Circuit Collator': chainT0rn, Coinversation: nodeCoinversation, 'Competitors Club': nodeCompetitorsClub, 'Crown Sterling': nodeCrownSterling, diff --git a/packages/apps-config/src/ui/logos/chains/t0rn.png b/packages/apps-config/src/ui/logos/chains/t0rn.png new file mode 100644 index 0000000000000000000000000000000000000000..6c2878524747d1279a2e790d4b2c3b7fe6248ab0 GIT binary patch literal 28186 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 literal 0 HcmV?d00001 diff --git a/packages/apps-config/src/ui/logos/index.ts b/packages/apps-config/src/ui/logos/index.ts index 9254a493a5..d0fcbbb788 100644 --- a/packages/apps-config/src/ui/logos/index.ts +++ b/packages/apps-config/src/ui/logos/index.ts @@ -49,6 +49,7 @@ import chainShiden from './chains/shiden.png'; import chainSnakenet from './chains/snakenet.svg'; import chainSpanner from './chains/spanner.png'; import chainStandard from './chains/standard.png'; +import chainT0rn from './chains/t0rn.png'; import chainKusamaDataHighway from './chains/tanganika.png'; import chainTinker from './chains/tinker.png'; import nodeTotem from './chains/totem.svg'; @@ -362,6 +363,7 @@ export const chainLogos = Object.entries({ subsocialX: nodeSubsocialX, subspace: nodeSubspace, swapdex: nodeSwapdex, + t0rn: chainT0rn, Tick: chainRococoTick, Track: chainRococoTrack, Trick: chainRococoTrick, @@ -543,6 +545,7 @@ export const nodeLogos = Object.entries({ 'substrate-node': nodeSubstrate, 'subzero node': nodeZero, swapdex: nodeSwapdex, + t0rn: chainT0rn, 'Ternoa Node': nodeTernoa, 'Totem Parachain Collator': nodeTotem, 'TrustBase Collator': nodeTrustBase, @@ -797,6 +800,7 @@ export const namedLogos: Record = { substrate: nodeSubstrate, substrateContractsNode: nodeSubstrateContractsNode, swapdex: nodeSwapdex, + t0rn: chainT0rn, tanganika: chainKusamaDataHighway, 'ternoa-testnet': nodeTernoa, 'totem-parachain': nodeTotem, diff --git a/packages/apps/public/locales/en/apps-config.json b/packages/apps/public/locales/en/apps-config.json index 49e4c47c46..f458b65e0a 100644 --- a/packages/apps/public/locales/en/apps-config.json +++ b/packages/apps/public/locales/en/apps-config.json @@ -144,6 +144,7 @@ "rpc.rococo.spreehafen": "Spreehafen", "rpc.rococo.statemint": "Statemint", "rpc.rococo.subsocial": "SoonsocialX", + "rpc.rococo.t3rn": "t0rn", "rpc.rococo.tinker": "InvArch Tinkernet", "rpc.rococo.zeitgeist": "Zeitgeist PC", "rpc.spanner": "Spanner",