From 28762cb486107e0b6766a5f7bd4fd8049fb1cd00 Mon Sep 17 00:00:00 2001 From: WoeOm <1015996366@qq.com> Date: Thu, 27 Aug 2020 16:18:07 +0800 Subject: [PATCH] add darwinia-parachain (#3534) --- .../src/api/spec/darwinia-parachain.ts | 229 ++++++++++++++++++ packages/apps-config/src/api/spec/index.ts | 2 + .../apps-config/src/settings/endpoints.ts | 6 + packages/apps-config/src/ui/general/index.ts | 2 + packages/apps-config/src/ui/logos/index.ts | 3 + .../src/ui/logos/nodes/darwinia.png | Bin 0 -> 14839 bytes 6 files changed, 242 insertions(+) create mode 100644 packages/apps-config/src/api/spec/darwinia-parachain.ts create mode 100644 packages/apps-config/src/ui/logos/nodes/darwinia.png diff --git a/packages/apps-config/src/api/spec/darwinia-parachain.ts b/packages/apps-config/src/api/spec/darwinia-parachain.ts new file mode 100644 index 0000000000..f8c0301ed6 --- /dev/null +++ b/packages/apps-config/src/api/spec/darwinia-parachain.ts @@ -0,0 +1,229 @@ +// Copyright 2017-2020 @polkadot/apps-config authors & contributors +// This software may be modified and distributed under the terms +// of the Apache-2.0 license. See the LICENSE file for details. + +// structs need to be in order +/* eslint-disable sort-keys */ + +export default { + Address: 'AccountId', + LookupSource: 'AccountId', + BalanceLock: { + id: 'LockIdentifier', + lock_for: 'LockFor', + lock_reasons: 'LockReasons', + amount: 'Balance', + reasons: 'Reasons' + }, + LockFor: { + _enum: { + Common: 'Common', + Staking: 'StakingLock' + } + }, + Common: { + amount: 'Balance' + }, + StakingLock: { + staking_amount: 'Balance', + unbondings: 'Vec' + }, + LockReasons: { + _enum: { + Fee: null, + Misc: null, + All: null + } + }, + Unbonding: { + amount: 'Balance', + until: 'BlockNumber' + }, + AccountData: { + free: 'Balance', + reserved: 'Balance', + free_kton: 'Balance', + reserved_kton: 'Balance', + misc_frozen: 'Balance', + fee_frozen: 'Balance' + }, + RingBalance: 'Balance', + KtonBalance: 'Balance', + TsInMs: 'u64', + Power: 'u32', + DepositId: 'U256', + StakingBalanceT: { + _enum: { + RingBalance: 'Balance', + KtonBalance: 'Balance' + } + }, + StakingLedgerT: { + stash: 'AccountId', + active_ring: 'Compact', + active_deposit_ring: 'Compact', + active_kton: 'Compact', + deposit_items: 'Vec', + ring_staking_lock: 'StakingLock', + kton_staking_lock: 'StakingLock', + claimed_rewards: 'Vec', + total: 'Compact', + active: 'Compact', + unlocking: 'Vec' + }, + TimeDepositItem: { + value: 'Compact', + start_time: 'Compact', + expire_time: 'Compact' + }, + RewardDestination: { + _enum: { + Staked: 'Staked', + Stash: null, + Controller: null + } + }, + Staked: { + promise_month: 'u8' + }, + ExposureT: { + own_ring_balance: 'Compact', + own_kton_balance: 'Compact', + own_power: 'Power', + total_power: 'Power', + others: 'Vec', + total: 'Compact', + own: 'Compact' + }, + IndividualExposure: { + who: 'AccountId', + ring_balance: 'Compact', + kton_balance: 'Compact', + power: 'Power', + value: 'Compact' + }, + ElectionResultT: { + elected_stashes: 'Vec', + exposures: 'Vec<(AccountId, ExposureT)>', + compute: 'ElectionCompute' + }, + RKT: { + r: 'Balance', + k: 'Balance' + }, + SpanRecord: { + slashed: 'RKT', + paid_out: 'RKT' + }, + UnappliedSlash: { + validator: 'AccountId', + own: 'RKT', + others: 'Vec<(AccountId, RKT)>', + reporters: 'Vec', + payout: 'RKT' + }, + TreasuryProposal: { + proposer: 'AccountId', + beneficiary: 'AccountId', + ring_value: 'Balance', + kton_value: 'Balance', + ring_bond: 'Balance', + kton_bond: 'Balance', + value: 'Balance', + bond: 'Balance' + }, + EthTransactionIndex: '(H256, u64)', + EthHeaderBrief: { + total_difficulty: 'U256', + parent_hash: 'H256', + number: 'EthBlockNumber', + relayer: 'AccountId' + }, + EthBlockNumber: 'u64', + EthHeaderThing: { + eth_header: 'EthHeader', + ethash_proof: 'Vec', + mmr_root: 'MMRHash', + mmr_proof: 'Vec' + }, + EthHeader: { + parent_hash: 'H256', + timestamp: 'u64', + number: 'EthBlockNumber', + author: 'EthAddress', + transactions_root: 'H256', + uncles_hash: 'H256', + extra_data: 'Bytes', + state_root: 'H256', + receipts_root: 'H256', + log_bloom: 'Bloom', + gas_used: 'U256', + gas_limit: 'U256', + difficulty: 'U256', + seal: 'Vec', + hash: 'Option' + }, + EthAddress: 'H160', + Bloom: '[u8; 256; Bloom]', + H128: '[u8; 16; H128]', + EthashProof: { + dag_nodes: '(H512, H512)', + proof: 'Vec' + }, + Receipt: { + gas_used: 'U256', + log_bloom: 'Bloom', + logs: 'Vec', + outcome: 'TransactionOutcome' + }, + EthereumNetworkType: { + _enum: { + Mainnet: null, + Ropsten: null + } + }, + RedeemFor: { + _enum: { + Ring: null, + Kton: null, + Deposit: null + } + }, + EthereumReceiptProof: { + index: 'u64', + proof: 'Bytes', + header_hash: 'H256' + }, + MMRProof: 'Vec', + OtherSignature: { + _enum: { + Eth: 'EcdsaSignature', + Tron: 'EcdsaSignature' + } + }, + EcdsaSignature: '[u8; 65; EcdsaSignature]', + OtherAddress: { + _enum: { + Eth: '[u8; 20; EthereumAddress]', + Tron: '[u8; 20; TronAddress]' + } + }, + AddressT: '[u8; 20; AddressT]', + MerkleMountainRangeRootLog: { + prefix: '[u8; 4; Prefix]', + mmr_root: 'Hash' + }, + Round: 'u64', + TcBlockNumber: 'Vec', + TcHeaderHash: 'Vec', + TcHeaderMMR: 'Vec', + MMRHash: 'Vec', + GameId: 'TcBlockNumber', + RawHeaderThing: 'Vec', + BalancesRuntimeDispatchInfo: { + usable_balance: 'Balance' + }, + StakingRuntimeDispatchInfo: { + power: 'Power' + } +}; diff --git a/packages/apps-config/src/api/spec/index.ts b/packages/apps-config/src/api/spec/index.ts index 3cd0b7cd68..ae52650806 100644 --- a/packages/apps-config/src/api/spec/index.ts +++ b/packages/apps-config/src/api/spec/index.ts @@ -5,6 +5,7 @@ import acala from './acala'; import centrifugeChain from './centrifuge-chain'; import crab from './crab'; +import darwiniaParachain from './darwinia-parachain'; import testPara from './cumulus-test-parachain'; import edgeware from './edgeware'; import encointerNodeNotee from './encointer-node-notee'; @@ -22,6 +23,7 @@ export default { acala, 'centrifuge-chain': centrifugeChain, 'cumulus-test-parachain': testPara, + 'darwinia-parachain': darwiniaParachain, edgeware, 'encointer-node': encointerNodeNotee, 'encointer-node-notee': encointerNodeNotee, diff --git a/packages/apps-config/src/settings/endpoints.ts b/packages/apps-config/src/settings/endpoints.ts index 9e18b36bdf..2cf9253bbf 100644 --- a/packages/apps-config/src/settings/endpoints.ts +++ b/packages/apps-config/src/settings/endpoints.ts @@ -152,6 +152,12 @@ function createTest (t: TFunction): LinkOption[] { text: t('rpc.rococo.acala', 'Mandala PC1 (Acala Testpara, hosted by Acala)', { ns: 'apps-config' }), value: 'wss://rococo-1.acala.laminar.one' }, + { + info: 'rococoDarwinia', + isChild: true, + text: t('rpc.rococo.darwinia', 'Darwinia PC1 (Darwinia Testpara, hosted by Darwinia Network)', { ns: 'apps-config' }), + value: 'wss://parachain-rpc.darwinia.network' + }, { info: 'rococoLaminar', isChild: true, diff --git a/packages/apps-config/src/ui/general/index.ts b/packages/apps-config/src/ui/general/index.ts index 70b5d380e3..655ed72c4a 100644 --- a/packages/apps-config/src/ui/general/index.ts +++ b/packages/apps-config/src/ui/general/index.ts @@ -14,6 +14,7 @@ const chainRoccoTick = '#22bb22'; const chainRoccoTrack = '#bb2222'; const chainRoccoTrick = '#2222bb'; const chainRoccoAcala = '#173DC9'; +const chainRoccoDarwinia = '#7C30DD'; const laminarRoccoAcala = '#004FFF'; const chainWestend = '#da68a7'; @@ -38,6 +39,7 @@ const chainColors: Record = [ ['Track', chainRoccoTrack], ['Trick', chainRoccoTrick], ['acala mandala pc1', chainRoccoAcala], + ['darwinia parachain', chainRoccoDarwinia], ['laminar turbulence pc1', laminarRoccoAcala], ['Westend', chainWestend] ].reduce((colors, [chain, color]): Record => ({ diff --git a/packages/apps-config/src/ui/logos/index.ts b/packages/apps-config/src/ui/logos/index.ts index 525df25b0c..8d9ccb6a05 100644 --- a/packages/apps-config/src/ui/logos/index.ts +++ b/packages/apps-config/src/ui/logos/index.ts @@ -15,6 +15,7 @@ import chainRococoTrick from './chains/rococo-trick.svg'; import nodeAcala from './nodes/acala-circle.svg'; import nodeCentrifuge from './nodes/centrifuge.png'; import nodeCrab from './nodes/crab.svg'; +import nodeDarwinia from './nodes/darwinia.png'; import nodeEdgeware from './nodes/edgeware-circle.svg'; import nodeEncointerNotee from './nodes/encointer-notee.svg'; import nodeEncointerTeeproxy from './nodes/encointer-teeproxy.svg'; @@ -53,6 +54,7 @@ const nodeLogos: Record = [ ['centrifuge chain', nodeCentrifuge], ['Centrifuge Chain Node', nodeCentrifuge], ['crab', nodeCrab], + ['darwinia parachain', nodeDarwinia], ['Edgeware Node', nodeEdgeware], ['Encointer Node', nodeEncointerNotee], ['Encointer Node noTEE', nodeEncointerNotee], @@ -86,6 +88,7 @@ const namedLogos: Record = { polkadot: nodePolkadot, rococo: chainRococo, rococoAcala: nodeAcala, + rococoDarwinia: nodeDarwinia, rococoLaminar: nodeLaminar, rococoTick: chainRococoTick, rococoTrack: chainRococoTrack, diff --git a/packages/apps-config/src/ui/logos/nodes/darwinia.png b/packages/apps-config/src/ui/logos/nodes/darwinia.png new file mode 100644 index 0000000000000000000000000000000000000000..893ba7bd2812871a3e6dddc8b2bcad947166f331 GIT binary patch literal 14839 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