From 14540320c5a50b00a4954f73473f805ba86f5225 Mon Sep 17 00:00:00 2001 From: implx <1c@ua.fm> Date: Sun, 25 Sep 2022 23:38:38 +0400 Subject: [PATCH] Add IMPLX Network (#246) Co-authored-by: yuriy.bulah --- .../address-validation.service.spec.ts | 12 +++++++++- angular/src/shared/defaults.ts | 16 ++++++++++++- angular/src/shared/networks/IMPLX.ts | 24 +++++++++++++++++++ angular/src/shared/networks/index.ts | 1 + 4 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 angular/src/shared/networks/IMPLX.ts diff --git a/angular/src/app/services/address-validation.service.spec.ts b/angular/src/app/services/address-validation.service.spec.ts index eec738df..b68ffbd1 100644 --- a/angular/src/app/services/address-validation.service.spec.ts +++ b/angular/src/app/services/address-validation.service.spec.ts @@ -1,6 +1,6 @@ import { EnvironmentService } from './environment.service'; import { AddressValidationService } from './address-validation.service'; -import { BTC44, BTC84, CITY, CRS, STRAX } from 'src/shared/networks'; +import { BTC44, BTC84, CITY, CRS, STRAX, IMPLX } from 'src/shared/networks'; describe('AddressValidationService', () => { let service: AddressValidationService; @@ -53,4 +53,14 @@ describe('AddressValidationService', () => { expect(service.validate('XReyTxFTRQKomq8x74aNNHmR6ZKE3Uquwg').networks.find((n: { id: string; }) => n.id == 'STRAX')).toBeDefined(); }); + + it('Validate Impleum Base58 address', () => { + const network = new IMPLX(); + expect(service.validateByNetwork('implx1q3pk7w924s72jy8amzptnwyn0509xvy3nrn2gff', network)).toBeTrue(); + expect(service.validateByNetwork('XxKEYMx47uZY9uyam3LK3bECS9gvX9ojJF', network)).toBeTrue(); + expect(service.validateByNetwork('implx1q6r3zyaap5dmatzcddq8363cr5hd49jy4r4vxez', network)).toBeTrue(); + expect(service.validateByNetwork('Xhh9Cb3u8MHdEkTDsiMnQ1GVE654Hr56Wm', network)).toBeTrue(); + + expect(service.validate('Xr9UFDUhpz3Wq8kSV3h8kAwK31fhumDWLU').networks.find((n: { id: string; }) => n.id == 'IMPLX')).toBeDefined(); + }); }); diff --git a/angular/src/shared/defaults.ts b/angular/src/shared/defaults.ts index 02975d49..bd43aaa1 100644 --- a/angular/src/shared/defaults.ts +++ b/angular/src/shared/defaults.ts @@ -1,5 +1,5 @@ import { Account } from './interfaces'; -import { BTC, CITY, CRS, CY, IDENTITY, NOSTR, RSC, SBC, STRAX, TCRS, TSTRAX, X42 } from './networks'; +import { BTC, CITY, CRS, CY, IDENTITY, NOSTR, RSC, SBC, STRAX, TCRS, TSTRAX, X42 , IMPLX} from './networks'; const { v4: uuidv4 } = require('uuid'); export class Defaults { @@ -17,6 +17,7 @@ export class Defaults { networks.push(new TCRS()); networks.push(new TSTRAX()); networks.push(new X42()); + networks.push(new IMPLX()); return networks; } @@ -78,6 +79,19 @@ export class Defaults { purposeAddress: 44, icon: 'paid', }, + { + identifier: uuidv4(), + selected: false, + networkType: 'IMPLX', + mode: 'normal', + index: 0, + name: 'Impleum', + type: 'coin', + network: 701, + purpose: 44, + purposeAddress: 44, + icon: 'paid', + }, { identifier: uuidv4(), index: 0, diff --git a/angular/src/shared/networks/IMPLX.ts b/angular/src/shared/networks/IMPLX.ts new file mode 100644 index 00000000..fe29e79b --- /dev/null +++ b/angular/src/shared/networks/IMPLX.ts @@ -0,0 +1,24 @@ +import { Network } from './network'; + +export class IMPLX implements Network { + id = 'IMPLX'; + name = 'ImpleumX'; + symbol = 'IMPLX'; + network = 701; + purpose = 44; + messagePrefix = '\x18Bitcoin Signed Message:\n'; + bech32 = 'implx'; + bip32 = { + public: 0x0488b21e, + private: 0x0488ade4, + }; + pubKeyHash = 76; + scriptHash = 141; + wif = 0x08; + feeRate = 10000; + minFeeRate = 10000; + testnet = false; + isProofOfStake = true; + smartContractSupport = false; + type = 'coin'; +} diff --git a/angular/src/shared/networks/index.ts b/angular/src/shared/networks/index.ts index 5c188ef6..d56ee823 100644 --- a/angular/src/shared/networks/index.ts +++ b/angular/src/shared/networks/index.ts @@ -11,3 +11,4 @@ export * from './SBC'; export * from './RSC'; export * from './CY'; export * from './X42'; +export * from './IMPLX';