PHP WebShell
Текущая директория: /opt/BitGoJS/modules/sdk-coin-dot/src/lib
Просмотр файла: txnSchema.ts
import joi from 'joi';
import Utils from './utils';
const addressSchema = joi.string().custom((addr) => Utils.isValidAddress(addr));
const proxyTypes = [
'Any',
'NonTransfer',
'Governance',
'Staking',
'UnusedSudoBalances',
'IdentityJudgement',
'CancelProxy',
];
export const BaseTransactionSchema = joi.object({
sender: addressSchema.required(),
blockNumber: joi.number().required(),
blockHash: joi.string().required(),
genesisHash: joi.string().required(),
specVersion: joi.number().required(),
specName: joi.string().valid('kusama', 'polkadot', 'westend', 'statemint', 'statemine').required(),
transactionVersion: joi.number().required(),
chainName: joi.string().required(),
eraPeriod: joi.number().required(),
nonce: joi.number().required(),
tip: joi.number().optional(),
});
export const SigningPayloadTransactionSchema = joi.object({
eraPeriod: joi.number().optional(),
blockHash: joi.string().required(),
nonce: joi.number().required(),
tip: joi.number().optional(),
});
export const SignedTransactionSchema = joi.object({
sender: addressSchema.required(),
nonce: joi.number().required(),
eraPeriod: joi.number().optional(),
tip: joi.number().optional(),
});
export const TransferTransactionSchema = joi.object({
amount: joi.string().required(),
to: addressSchema.required(),
});
export const TransferAllTransactionSchema = joi.object({
to: addressSchema.required(),
});
const CreateStakeTransactionSchema = joi.object({
value: joi.string().required(),
controller: joi.string().optional(),
payee: [
joi.string(),
joi.object({
account: joi.string().optional(),
controller: joi.equal(null).optional(),
staked: joi.equal(null).optional(),
stash: joi.equal(null).optional(),
}),
joi.object({
Account: joi.string().required(),
}),
],
addToStake: joi.boolean().equal(false).optional(),
});
const StakeMoreTransactionSchema = joi.object({
value: joi.string().required(),
addToStake: joi.boolean().equal(true).required(),
controller: joi.forbidden(), // Only allow undefined
payee: joi.forbidden(), // Only allow undefined
});
export const StakeTransactionSchema = joi
.alternatives(CreateStakeTransactionSchema, StakeMoreTransactionSchema)
.match('one');
export const AddressInitializationSchema = joi.object({
proxyType: joi
.string()
.valid(...proxyTypes)
.required(),
delegate: addressSchema.required(),
delay: joi.string().required(),
});
export const AnonymousAddressInitializationSchema = joi.object({
proxyType: joi
.string()
.valid(...proxyTypes)
.required(),
index: joi.number().required(),
delay: joi.number().required(),
});
export const BatchTransactionSchema = joi.object({
calls: joi
.alternatives()
.try(
joi.array().items(joi.string()),
joi.array().items(joi.object({ callIndex: joi.string(), args: joi.object() }))
),
});
export const ProxyTransactionSchema = joi.object({
real: addressSchema.required(),
forceProxyType: joi
.string()
.valid(...proxyTypes)
.required(),
amount: joi.string().required(),
to: addressSchema.required(),
});
export const UnstakeTransactionSchema = joi.object({
value: joi.string().required(),
});
export const WithdrawUnstakedTransactionSchema = joi.object({
value: joi.number().required(),
});
export const ClaimTransactionSchema = joi.object({
claimEra: joi.string().required(),
validatorStash: addressSchema.required(),
});
Выполнить команду
Для локальной разработки. Не используйте в интернете!