Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 3x 3x 3x 3x 3x 29x 2x 27x 1x 26x 3x 29x 26x 26x 26x 10x 16x 16x 16x | /* * Copyright © 2019 Lisk Foundation * * See the LICENSE file at the top-level directory of this distribution * for licensing information. * * Unless otherwise agreed in a custom licensing agreement with the Lisk Foundation, * no part of this software, including this file, may be copied, modified, * propagated, or distributed except according to the terms contained in the * LICENSE file. * * Removal or modification of this copyright notice is prohibited. * */ import { validateNetworkIdentifier } from '@liskhq/lisk-validator'; import { DelegateTransaction } from './10_delegate_transaction'; import { DELEGATE_FEE, USERNAME_MAX_LENGTH } from './constants'; import { TransactionJSON } from './transaction_types'; import { createBaseTransaction } from './utils'; export interface RegisterDelegateInputs { readonly passphrase?: string; readonly secondPassphrase?: string; readonly timeOffset?: number; readonly username: string; readonly networkIdentifier: string; } const validateInputs = ({ username, networkIdentifier, }: RegisterDelegateInputs): void => { if (!username || typeof username !== 'string') { throw new Error('Please provide a username. Expected string.'); } if (username.length > USERNAME_MAX_LENGTH) { throw new Error( `Username length does not match requirements. Expected to be no more than ${USERNAME_MAX_LENGTH} characters.`, ); } validateNetworkIdentifier(networkIdentifier); }; export const registerDelegate = ( inputs: RegisterDelegateInputs, ): Partial<TransactionJSON> => { validateInputs(inputs); const { username, passphrase, secondPassphrase, networkIdentifier } = inputs; const transaction = { ...createBaseTransaction(inputs), type: 10, fee: DELEGATE_FEE.toString(), asset: { username }, networkIdentifier, }; if (!passphrase) { return transaction; } const delegateTransaction = new DelegateTransaction(transaction); delegateTransaction.sign(passphrase, secondPassphrase); return delegateTransaction.toJSON(); }; |