UNPKG

@ton/ton

Version:

[![Version npm](https://img.shields.io/npm/v/ton.svg?logo=npm)](https://www.npmjs.com/package/ton)

248 lines (247 loc) 14 kB
"use strict"; /** * Copyright (c) Whales Corp. * All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ Object.defineProperty(exports, "__esModule", { value: true }); const createTestClient4_1 = require("../utils/createTestClient4"); const core_1 = require("@ton/core"); const ConfigParser_1 = require("./ConfigParser"); const client = (0, createTestClient4_1.createTestClient4)("mainnet"); const KNOWN_BLOCK = 31091335; const BLOCK_AT_31_10_25 = 53519168; const TESTNET_BLOCK = 32762926; const testnetClient = (0, createTestClient4_1.createTestClient4)("testnet"); describe('ConfigContract', () => { it('should return correct burning config', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [13])).config.cell; const config13 = (0, ConfigParser_1.configParse13)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 13).beginParse()); expect(config13).toEqual({ deposit: 1000000000n, bitPrice: 1n, cellPrice: 500n }); }); it('should return correct complaint pricing', async () => { const serializedConfigsCell = (await client.getConfig(KNOWN_BLOCK, [5])).config.cell; const config5 = (0, ConfigParser_1.configParse5)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 5).beginParse()); expect(config5.blackholeAddr.equals(core_1.Address.parse('Ef___________________________________________7Sg'))).toBe(true); expect(config5.feeBurnNominator).toEqual(1); expect(config5.feeBurnDenominator).toEqual(2); }); it('should return correct workckain description', async () => { const serializedConfigsCell = (await client.getConfig(KNOWN_BLOCK, [12])).config.cell; const config12 = (0, ConfigParser_1.configParse12)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 12).beginParse()); expect(config12.get(0)).toEqual({ enabledSince: 1573821854, actialMinSplit: 0, min_split: 0, max_split: 4, basic: true, active: true, accept_msgs: true, flags: 0, zerostateRootHash: Buffer.from('55b13f6d0e1d0c34c9c2160f6f918e92d82bf9ddcf8de2e4c94a3fdf39d15446', 'hex'), zerostateFileHash: Buffer.from('ee0bedfe4b32761fb35e9e1d8818ea720cad1a0e7b4d2ed673c488e72e910342', 'hex'), version: 0, format: { vmMode: 0n, vmVersion: -1 }, workchain_v2: undefined }); }); it('should parse config7', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [7])).config.cell; const config7 = (0, ConfigParser_1.configParse7)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 7).beginParse()); expect(config7).toEqual({ toMint: { '239': 666666666666n, '4294967279': 1000000000000n } }); }); it('should parse config9', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [9])).config.cell; const config9 = (0, ConfigParser_1.configParse9)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 9).beginParse()); expect(config9).toEqual(new Set([0, 1, 9, 10, 12, 14, 15, 16, 17, 18, 20, 21, 22, 23, 24, 25, 28, 34])); }); it('should parse config10', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [10])).config.cell; const config10 = (0, ConfigParser_1.configParse10)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 10).beginParse()); expect(config10).toEqual(new Set([0, 1, 9, 10, 12, 14, 15, 16, 17, 32, 34, 36, -1001, -1000])); }); it('should parse config14', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [14])).config.cell; const config14 = (0, ConfigParser_1.configParse14)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 14).beginParse()); expect(config14).toEqual({ masterchainBlockFee: 1700000000n, workchainBlockFee: 1000000000n }); }); it('should parse config22', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [22])).config.cell; const config22 = (0, ConfigParser_1.configParseBlockLimits)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 22).beginParse()); expect(config22).toEqual({ bytes: { underload: 131072, softLimit: 524288, hardLimit: 1048576 }, gas: { underload: 200000, softLimit: 1000000, hardLimit: 2500000 }, ltDelta: { underload: 1000, softLimit: 5000, hardLimit: 10000 } }); }); it('should parse config23', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [23])).config.cell; const config23 = (0, ConfigParser_1.configParseBlockLimits)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 23).beginParse()); expect(config23).toEqual({ bytes: { underload: 262144, softLimit: 1048576, hardLimit: 2097152 }, gas: { underload: 2000000, softLimit: 10000000, hardLimit: 20000000 }, ltDelta: { underload: 1000, softLimit: 5000, hardLimit: 10000 } }); }); it('should parse config31', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [31])).config.cell; const config31 = (0, ConfigParser_1.configParse31)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 31).beginParse()); expect(config31.map((e) => e.toString())).toEqual([ core_1.Address.parse('-1:0000000000000000000000000000000000000000000000000000000000000000').toString(), core_1.Address.parse('-1:0ebd7ff9ca70e06e9e22a8922f5ae75211a9d6a34a8094e8e1587b606bdbb662').toString(), core_1.Address.parse('-1:3333333333333333333333333333333333333333333333333333333333333333').toString(), core_1.Address.parse('-1:3b9bbfd0ad5338b9700f0833380ee17d463e51c1ae671ee6f08901bde899b202').toString(), core_1.Address.parse('-1:4d5c0210b35daddaa219fac459dba0fdefb1fae4e97a0d0797739fe050d694ca').toString(), core_1.Address.parse('-1:dd24c4a1f2b88f8b7053513b5cc6c5a31bc44b2a72dcb4d8c0338af0f0d37ec5').toString(), core_1.Address.parse('-1:ead7da389bde317c5fb285807ce507baad31c35fe5534b3c418785e901f64c68').toString() ]); }); it('should parse config44', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [44])).config.cell; const config44 = (0, ConfigParser_1.configParse44)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 44).beginParse()); expect(config44.suspendedUntil).toEqual(1803189600); expect(config44.addresses.length).toEqual(180); expect(config44.addresses[4].toString()).toEqual(core_1.Address.parse('0:0927afd84711fea63794c619ded2288c7479b3ec16c927f0360ed76603f6df06').toString()); }); it('should parse config45', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [45])).config.cell; const config45 = (0, ConfigParser_1.configParse45)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 45).beginParse()); expect(config45.map((e) => ({ hash: e.hash.toString('hex'), gasUsed: e.gasUsed }))).toEqual([{ hash: '89468f02c78e570802e39979c8516fc38df07ea76a48357e0536f2ba7b3ee37b', gasUsed: 1000n }]); }); it('should parse jettonBridgeParams', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25, [79])).config.cell; const config79 = (0, ConfigParser_1.loadJettonBridgeParams)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 79).beginParse()); expect(config79?.bridgeAddress.toString()).toEqual(core_1.Address.parse('Ef-1JetbPF9ubc1ga-57oHoOyDA1IShJt-BVlJnA9rrVTfrB').toString()); expect(config79?.jettonBridgePrices?.bridgeBurnFee).toEqual(1000000000n); expect(config79?.oracles.length).toEqual(9); expect(config79?.oracles[3].addr.toString()).toEqual(core_1.Address.parse('Uf8ceN7cTemTe4ZV6AIbg5f8LsHZsYV1UaiGntvkME0KtKP8').toString()); }); it('should return correct workchain_v2 description', async () => { const serializedConfigsCell = (await testnetClient.getConfig(TESTNET_BLOCK, [12])).config.cell; const config12 = (0, ConfigParser_1.configParse12)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 12).beginParse()); const wcData = config12.get(0); expect(wcData.workchain_v2).not.toBeUndefined(); // https://test-explorer.toncenter.com/config?workchain=-1&shard=8000000000000000&seqno=32764024&roothash=B17E08E4F2C06630D5DF348BE2D2545784515B772AB645CE9A05DA37AFB80D48&filehash=5A60AAA67F3F20BB7F1DAA5A14CEA90CDDA508FB3B18B64EF1144183833B8618#configparam12 expect(wcData).toEqual({ enabledSince: 1573821854, actialMinSplit: 0, min_split: 0, max_split: 0, basic: true, active: true, accept_msgs: true, flags: 0, zerostateRootHash: Buffer.from('55b13f6d0e1d0c34c9c2160f6f918e92d82bf9ddcf8de2e4c94a3fdf39d15446', 'hex'), zerostateFileHash: Buffer.from('ee0bedfe4b32761fb35e9e1d8818ea720cad1a0e7b4d2ed673c488e72e910342', 'hex'), version: 0, format: { vmMode: 0n, vmVersion: -1 }, workchain_v2: { split_merge_timings: { split_merge_delay: 100, split_merge_interval: 100, min_split_merge_interval: 30, max_split_merge_delay: 1000, }, persistent_state_split_depth: 4 } }); }); it('should return correct config17', async () => { const serializedConfigsCell = (await client.getConfig(KNOWN_BLOCK, [17])).config.cell; const config17 = (0, ConfigParser_1.configParse17)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 17).beginParse()); expect(config17).toEqual({ minStake: 300000000000000n, maxStake: 10000000000000000n, minTotalStake: 75000000000000000n, maxStakeFactor: 196608 }); }); it('should return correct config18', async () => { const serializedConfigsCell = (await client.getConfig(KNOWN_BLOCK, [18])).config.cell; const config18 = (0, ConfigParser_1.configParse18)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 18).beginParse()); expect(config18[0]).toEqual({ utime_since: 0, bit_price_ps: 1n, cell_price_ps: 500n, mc_bit_price_ps: 1000n, mc_cell_price_ps: 500000n }); }); it('should return correct prevValidators', async () => { const serializedConfigsCell = (await client.getConfig(KNOWN_BLOCK, [32])).config.cell; const config32 = (0, ConfigParser_1.configParseValidatorSet)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 32).beginParse()); expect(config32.timeSince).toEqual(1689145096); expect(config32.timeUntil).toEqual(1689210632); expect(config32.total).toEqual(331); expect(config32.main).toEqual(100); expect(config32.totalWeight).toEqual(1152921504606846812n); expect(config32.list.get(0)).toEqual({ publicKey: Buffer.from('9828e815ea69180cac1ae2b02f15f285a9cef71ec11c7709acc31128a303448c', 'hex'), weight: 5077814413300977n, adnlAddress: Buffer.from('e2e5cadaa61c6d84f86a3618d496ea0bd98c79edc796af9895b82fb83cb666b9', 'hex') }); }); it('should return correct ethereum bridge', async () => { const serializedConfigsCell = (await client.getConfig(KNOWN_BLOCK, [71])).config.cell; const config71 = (0, ConfigParser_1.configParseBridge)((0, ConfigParser_1.loadConfigParamById)(serializedConfigsCell, 71).beginParse()); expect(config71.bridgeAddress.equals(core_1.Address.parse('Ef_dJMSh8riPi3BTUTtcxsWjG8RLKnLctNjAM4rw8NN-xWdr'))).toBe(true); expect(config71.oracleMultisigAddress.equals(core_1.Address.parse('Ef87m7_QrVM4uXAPCDM4DuF9Rj5Rwa5nHubwiQG96JmyAjQY'))).toBe(true); expect(config71.oracles.get('Ef8DfObDUrNqz66pr_7xMbUYckUFbIIvRh1FSNeVSLWrvo1M')).toEqual(Buffer.from('000000000000000000000000cf4a7c26186aa41390e246fa04115a0495085ab9', 'hex')); expect(config71.externalChainAddress).toEqual(Buffer.from('000000000000000000000000582d872a1b094fc48f5de31d3b73f2d9be47def1', 'hex')); }); it('should not raise error when loading full config', async () => { const serializedConfigsCell = (await client.getConfig(BLOCK_AT_31_10_25)).config.cell; (0, ConfigParser_1.parseFullConfig)((0, ConfigParser_1.loadConfigParamsAsSlice)(serializedConfigsCell)); }); it('should not raise error when parsing testnet config', async () => { const serializedConfigsCell = (await testnetClient.getConfig(TESTNET_BLOCK)).config.cell; (0, ConfigParser_1.parseFullConfig)((0, ConfigParser_1.loadConfigParamsAsSlice)(serializedConfigsCell)); }); });