@ocap/tx-protocols 1.13.65 → 1.13.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  const Error = require('@ocap/util/lib/error');
2
+ const Joi = require('@ocap/validator');
2
3
  const { Runner, pipes } = require('@ocap/tx-pipeline');
3
- const { account, Joi } = require('@ocap/state');
4
+ const { account } = require('@ocap/state');
4
5
  const { toBase58 } = require('@ocap/util');
5
6
 
6
7
  const runner = new Runner();
@@ -1,8 +1,9 @@
1
1
  /* eslint-disable max-len */
2
2
  const get = require('lodash/get');
3
+ const Joi = require('@ocap/validator');
3
4
  const Error = require('@ocap/util/lib/error');
4
5
  const getListField = require('@ocap/util/lib/get-list-field');
5
- const { delegation, account, Joi } = require('@ocap/state');
6
+ const { delegation, account } = require('@ocap/state');
6
7
  const { Runner, pipes } = require('@ocap/tx-pipeline');
7
8
  const { toDelegateAddress } = require('@arcblock/did-util');
8
9
 
@@ -1,8 +1,9 @@
1
1
  const Error = require('@ocap/util/lib/error');
2
+ const Joi = require('@ocap/validator');
2
3
  const getRelatedAddresses = require('@ocap/util/lib/get-related-addr');
3
4
  const { Runner, pipes } = require('@ocap/tx-pipeline');
4
5
  const { fromPublicKey, toTypeInfo } = require('@arcblock/did');
5
- const { account, Joi } = require('@ocap/state');
6
+ const { account } = require('@ocap/state');
6
7
 
7
8
  // eslint-disable-next-line global-require
8
9
  const debug = require('debug')(`${require('../../../package.json').name}:migrate`);
@@ -1,8 +1,9 @@
1
1
  const get = require('lodash/get');
2
2
  const cloneDeep = require('lodash/cloneDeep');
3
+ const Joi = require('@ocap/validator');
3
4
  const getListField = require('@ocap/util/lib/get-list-field');
4
5
  const { Runner, pipes } = require('@ocap/tx-pipeline');
5
- const { delegation, account, Joi } = require('@ocap/state');
6
+ const { delegation, account } = require('@ocap/state');
6
7
  const { toDelegateAddress } = require('@arcblock/did-util');
7
8
 
8
9
  // eslint-disable-next-line global-require
@@ -1,14 +1,17 @@
1
1
  /* eslint-disable indent */
2
2
  const Error = require('@ocap/util/lib/error');
3
+ const isEmpty = require('lodash/isEmpty');
3
4
  const cloneDeep = require('lodash/cloneDeep');
5
+ const Joi = require('@ocap/validator');
4
6
  const { Runner, pipes } = require('@ocap/tx-pipeline');
5
- const { account, asset, Joi } = require('@ocap/state');
7
+ const { account, asset } = require('@ocap/state');
6
8
  const { toAssetAddress } = require('@arcblock/did-util');
7
9
 
8
10
  // eslint-disable-next-line global-require
9
11
  const debug = require('debug')(`${require('../../../package.json').name}:create-asset`);
10
12
 
11
13
  const { decodeAnySafe } = require('../../util');
14
+ const ensureTxFee = require('../rollup/pipes/ensure-tx-fee');
12
15
 
13
16
  const runner = new Runner();
14
17
 
@@ -85,28 +88,34 @@ runner.use(
85
88
  // Ensure parent exist
86
89
  runner.use(pipes.ExtractState({ from: 'itx.parent', to: 'parentAsset', status: 'INVALID_ASSET', table: 'asset' }));
87
90
 
91
+ runner.use(ensureTxFee);
92
+
88
93
  // Update asset state
89
94
  runner.use(
90
95
  async (context, next) => {
91
- const { tx, itx, assetData, statedb, senderState } = context;
96
+ const { tx, itx, assetData, statedb, senderState, senderUpdates, vaultState, vaultUpdates } = context;
92
97
 
93
- const [newSenderState, assetState] = await Promise.all([
94
- // Update owner state
98
+ const [newSenderState, assetState, newVaultState] = await Promise.all([
95
99
  statedb.account.update(
96
100
  senderState.address,
97
- account.update(senderState, { nonce: tx.nonce, pk: tx.pk }, context),
101
+ account.update(senderState, { nonce: tx.nonce, pk: tx.pk, ...senderUpdates }, context),
98
102
  context
99
103
  ),
100
- // Create asset state
104
+
101
105
  statedb.asset.create(
102
106
  itx.address,
103
107
  asset.create({ ...itx, data: assetData, owner: senderState.address }, context),
104
108
  context
105
109
  ),
110
+
111
+ isEmpty(vaultUpdates)
112
+ ? vaultState
113
+ : statedb.account.update(vaultState.address, account.update(vaultState, vaultUpdates, context), context),
106
114
  ]);
107
115
 
108
116
  context.senderState = newSenderState;
109
117
  context.assetState = assetState;
118
+ context.vaultState = newVaultState;
110
119
 
111
120
  debug('createAsset', assetState);
112
121
 
@@ -1,6 +1,7 @@
1
1
  const Error = require('@ocap/util/lib/error');
2
+ const Joi = require('@ocap/validator');
2
3
  const { Runner, pipes } = require('@ocap/tx-pipeline');
3
- const { account, asset, Joi } = require('@ocap/state');
4
+ const { account, asset } = require('@ocap/state');
4
5
 
5
6
  // eslint-disable-next-line global-require
6
7
  const debug = require('debug')(`${require('../../../package.json').name}:update-asset`);
@@ -14,6 +14,7 @@ const { toFactoryAddress } = require('@arcblock/did-util');
14
14
  const debug = require('debug')(`${require('../../../package.json').name}:create-factory`);
15
15
 
16
16
  const { decodeAnySafe } = require('../../util');
17
+ const ensureTxFee = require('../rollup/pipes/ensure-tx-fee');
17
18
 
18
19
  const runner = new Runner();
19
20
 
@@ -101,18 +102,19 @@ runner.use((context, next) => {
101
102
  return next(new Error('INVALID_FACTORY_INPUT', 'Not all input.assets exist on chain'));
102
103
  });
103
104
 
105
+ runner.use(ensureTxFee);
106
+
104
107
  // Create factory state
105
- // TODO: we need to support charging when creating new nft-factory
106
108
  runner.use(
107
109
  async (context, next) => {
108
- const { tx, itx, statedb, senderState, factoryProps } = context;
110
+ const { tx, itx, statedb, senderState, senderUpdates, vaultState, vaultUpdates, factoryProps } = context;
109
111
  const tokens = { [context.config.token.address]: '0' };
110
112
 
111
- const [newSenderState, factoryState] = await Promise.all([
113
+ const [newSenderState, factoryState, newVaultState] = await Promise.all([
112
114
  // Update owner state
113
115
  statedb.account.update(
114
116
  senderState.address,
115
- account.update(senderState, { nonce: tx.nonce, pk: tx.pk }, context),
117
+ account.update(senderState, { nonce: tx.nonce, pk: tx.pk, ...senderUpdates }, context),
116
118
  context
117
119
  ),
118
120
 
@@ -122,10 +124,15 @@ runner.use(
122
124
  factory.create({ ...factoryProps, tokens, owner: senderState.address }, context),
123
125
  context
124
126
  ),
127
+
128
+ isEmpty(vaultUpdates)
129
+ ? vaultState
130
+ : statedb.account.update(vaultState.address, account.update(vaultState, vaultUpdates, context), context),
125
131
  ]);
126
132
 
127
133
  context.senderState = newSenderState;
128
134
  context.factoryState = factoryState;
135
+ context.vaultState = newVaultState;
129
136
 
130
137
  debug('createFactory', factoryState);
131
138
 
@@ -1,7 +1,8 @@
1
1
  const Error = require('@ocap/util/lib/error');
2
+ const Joi = require('@ocap/validator');
2
3
  const { BN } = require('@ocap/util');
3
4
  const { Runner, pipes } = require('@ocap/tx-pipeline');
4
- const { account, asset, stake, evidence, Joi } = require('@ocap/state');
5
+ const { account, asset, stake, evidence } = require('@ocap/state');
5
6
 
6
7
  // eslint-disable-next-line global-require
7
8
  const debug = require('debug')(`${require('../../../package.json').name}:acquire-asset-v2`);
@@ -16,7 +17,7 @@ runner.use(pipes.VerifyMultiSig(0));
16
17
  const schema = Joi.object({
17
18
  address: Joi.DID().role('ROLE_STAKE').required(),
18
19
  evidence: Joi.object({
19
- hash: Joi.string().regex(Joi.hashRegexp).required(),
20
+ hash: Joi.string().regex(Joi.patterns.txHash).required(),
20
21
  }).required(),
21
22
  data: Joi.any().optional(),
22
23
  }).options({ stripUnknown: true, noDefaults: false });
@@ -1,10 +1,11 @@
1
1
  const pick = require('lodash/pick');
2
2
  const { promisify } = require('util');
3
3
  const isEmpty = require('empty-value');
4
+ const Joi = require('@ocap/validator');
4
5
  const Error = require('@ocap/util/lib/error');
5
6
  const { Runner, pipes } = require('@ocap/tx-pipeline');
6
7
  const { toStakeAddress } = require('@arcblock/did-util');
7
- const { account, asset, stake, Joi } = require('@ocap/state');
8
+ const { account, asset, stake } = require('@ocap/state');
8
9
 
9
10
  // eslint-disable-next-line global-require
10
11
  const debug = require('debug')(`${require('../../../package.json').name}:acquire-asset-v2`);
@@ -1,10 +1,11 @@
1
1
  const uniqBy = require('lodash/uniqBy');
2
2
  const groupBy = require('lodash/groupBy');
3
3
  const cloneDeep = require('lodash/cloneDeep');
4
+ const Joi = require('@ocap/validator');
4
5
  const Error = require('@ocap/util/lib/error');
5
6
  const { BN } = require('@ocap/util');
6
7
  const { Runner, pipes } = require('@ocap/tx-pipeline');
7
- const { account, stake, evidence, rollupBlock, Joi } = require('@ocap/state');
8
+ const { account, stake, evidence, rollupBlock } = require('@ocap/state');
8
9
 
9
10
  // eslint-disable-next-line global-require
10
11
  const debug = require('debug')(`${require('../../../package.json').name}:claim-block-reward`);
@@ -19,9 +20,9 @@ const runner = new Runner();
19
20
  const schema = Joi.object({
20
21
  rollup: Joi.DID().role('ROLE_ROLLUP').required(),
21
22
  blockHeight: Joi.number().integer().greater(0).required(),
22
- blockHash: Joi.string().regex(Joi.hashRegexp).required(),
23
+ blockHash: Joi.string().regex(Joi.patterns.txHash).required(),
23
24
  evidence: Joi.object({
24
- hash: Joi.string().regex(Joi.hashRegexp).required(),
25
+ hash: Joi.string().regex(Joi.patterns.txHash).required(),
25
26
  }).required(),
26
27
  publisher: Joi.DID().wallet('ethereum').required(),
27
28
  data: Joi.any().optional(),
@@ -2,10 +2,11 @@
2
2
  const pick = require('lodash/pick');
3
3
  const Error = require('@ocap/util/lib/error');
4
4
  const MerkleTree = require('@ocap/merkle-tree');
5
+ const Joi = require('@ocap/validator');
5
6
  const { formatMessage } = require('@ocap/message');
6
7
  const { toStakeAddress } = require('@arcblock/did-util');
7
8
  const { Runner, pipes } = require('@ocap/tx-pipeline');
8
- const { account, stake, rollup, rollupBlock, tx: Tx, Joi } = require('@ocap/state');
9
+ const { account, stake, rollup, rollupBlock, tx: Tx } = require('@ocap/state');
9
10
 
10
11
  // eslint-disable-next-line global-require
11
12
  const debug = require('debug')(`${require('../../../package.json').name}:create-rollup-block`);
@@ -19,18 +20,18 @@ const runner = new Runner();
19
20
 
20
21
  // 1. verify itx
21
22
  const schema = Joi.object({
22
- hash: Joi.string().regex(Joi.hashRegexp).required(),
23
+ hash: Joi.string().regex(Joi.patterns.txHash).required(),
23
24
  height: Joi.number().integer().greater(0).required(),
24
- merkleRoot: Joi.string().regex(Joi.hashRegexp).required(),
25
+ merkleRoot: Joi.string().regex(Joi.patterns.txHash).required(),
25
26
  previousHash: Joi.string().when('height', {
26
27
  is: 1,
27
28
  then: Joi.string().optional().allow(''),
28
- otherwise: Joi.string().regex(Joi.hashRegexp).required(),
29
+ otherwise: Joi.string().regex(Joi.patterns.txHash).required(),
29
30
  }),
30
- txsHash: Joi.string().regex(Joi.hashRegexp).required(),
31
- txsList: Joi.array().items(Joi.string().regex(Joi.hashRegexp).required()).min(1).unique().required(),
31
+ txsHash: Joi.string().regex(Joi.patterns.txHash).required(),
32
+ txsList: Joi.array().items(Joi.string().regex(Joi.patterns.txHash).required()).min(1).unique().required(),
32
33
  proposer: Joi.DID().wallet('ethereum').required(),
33
- signaturesList: Joi.multiSigSchema.min(1).required(),
34
+ signaturesList: Joi.schemas.multiSig.min(1).required(),
34
35
  rollup: Joi.DID().role('ROLE_ROLLUP').required(),
35
36
  minReward: Joi.BN().min(0).required(),
36
37
  data: Joi.any().optional(),
@@ -12,6 +12,7 @@ const { toRollupAddress } = require('@arcblock/did-util');
12
12
  const debug = require('debug')(`${require('../../../package.json').name}:create-rollup`);
13
13
 
14
14
  const { decodeAnySafe } = require('../../util');
15
+ const ensureTxFee = require('./pipes/ensure-tx-fee');
15
16
 
16
17
  const runner = new Runner();
17
18
 
@@ -105,13 +106,20 @@ runner.use(
105
106
  ])
106
107
  );
107
108
 
109
+ runner.use(ensureTxFee);
110
+
108
111
  // 5. create rollup state
109
112
  runner.use(
110
113
  async (context, next) => {
111
- const { tx, formattedItx, rollupData, statedb, senderState } = context;
114
+ const { tx, formattedItx, rollupData, statedb, senderState, senderUpdates, vaultState, vaultUpdates } = context;
115
+
116
+ const [newSenderState, rollupState, newVaultState] = await Promise.all([
117
+ statedb.account.update(
118
+ senderState.address,
119
+ account.update(senderState, { nonce: tx.nonce, ...senderUpdates }, context),
120
+ context
121
+ ),
112
122
 
113
- const [newSenderState, rollupState] = await Promise.all([
114
- statedb.account.update(senderState.address, account.update(senderState, { nonce: tx.nonce }, context), context),
115
123
  statedb.rollup.create(
116
124
  formattedItx.address,
117
125
  rollup.create(
@@ -128,6 +136,10 @@ runner.use(
128
136
  ),
129
137
  context
130
138
  ),
139
+
140
+ isEmpty(vaultUpdates)
141
+ ? vaultState
142
+ : statedb.account.update(vaultState.address, account.update(vaultState, vaultUpdates, context), context),
131
143
  ]);
132
144
 
133
145
  // FIXME: create-rollup 的时候不能校验 stake,还是在这里创建 stake?如果在这里创建 stake,是否需要多签?
@@ -135,6 +147,7 @@ runner.use(
135
147
 
136
148
  context.senderState = newSenderState;
137
149
  context.rollupState = rollupState;
150
+ context.vaultState = newVaultState;
138
151
 
139
152
  debug('create-rollup', rollupState);
140
153
 
@@ -2,9 +2,10 @@
2
2
  const MerkleTree = require('@ocap/merkle-tree');
3
3
  const joinUrl = require('url-join');
4
4
  const Error = require('@ocap/util/lib/error');
5
+ const Joi = require('@ocap/validator');
5
6
  const { BN, toHex } = require('@ocap/util');
6
7
  const { Runner, pipes } = require('@ocap/tx-pipeline');
7
- const { account, rollup, stake, evidence, Joi } = require('@ocap/state');
8
+ const { account, rollup, stake, evidence } = require('@ocap/state');
8
9
  const { toStakeAddress } = require('@arcblock/did-util');
9
10
  const { isEthereumDid } = require('@arcblock/did');
10
11
 
@@ -24,9 +25,9 @@ const schema = Joi.object({
24
25
  .uri({ scheme: [/https?/] })
25
26
  .required(),
26
27
  evidence: Joi.object({
27
- hash: Joi.string().regex(Joi.hashRegexp).required(),
28
+ hash: Joi.string().regex(Joi.patterns.txHash).required(),
28
29
  }).required(),
29
- signaturesList: Joi.multiSigSchema.min(1).required(),
30
+ signaturesList: Joi.schemas.multiSig.min(1).required(),
30
31
  data: Joi.any().optional(),
31
32
  }).options({ stripUnknown: true, noDefaults: false });
32
33
  runner.use(({ itx }, next) => {
@@ -1,8 +1,9 @@
1
1
  /* eslint-disable indent */
2
2
  const MerkleTree = require('@ocap/merkle-tree');
3
3
  const Error = require('@ocap/util/lib/error');
4
+ const Joi = require('@ocap/validator');
4
5
  const { Runner, pipes } = require('@ocap/tx-pipeline');
5
- const { account, rollup, stake, evidence, Joi } = require('@ocap/state');
6
+ const { account, rollup, stake, evidence } = require('@ocap/state');
6
7
  const { toStakeAddress } = require('@arcblock/did-util');
7
8
 
8
9
  // eslint-disable-next-line global-require
@@ -18,9 +19,9 @@ const runner = new Runner();
18
19
  const schema = Joi.object({
19
20
  rollup: Joi.DID().role('ROLE_ROLLUP').required(),
20
21
  evidence: Joi.object({
21
- hash: Joi.string().regex(Joi.hashRegexp).required(),
22
+ hash: Joi.string().regex(Joi.patterns.txHash).required(),
22
23
  }).required(),
23
- signaturesList: Joi.multiSigSchema.min(1).required(),
24
+ signaturesList: Joi.schemas.multiSig.min(1).required(),
24
25
  data: Joi.any().optional(),
25
26
  }).options({ stripUnknown: true, noDefaults: false });
26
27
  runner.use(({ itx }, next) => {
@@ -0,0 +1,38 @@
1
+ const Error = require('@ocap/util/lib/error');
2
+ const { fromTokenToUnit, BN } = require('@ocap/util');
3
+
4
+ const { applyTokenUpdates } = require('../../../util');
5
+
6
+ // FIXME: There maybe bug for tx that decrease senderState token balance
7
+ module.exports = async (context, next) => {
8
+ const { config, statedb, txType, senderState } = context;
9
+ const txFee = config.transaction.txFee[txType];
10
+ const vaultState = await statedb.account.get(config.vaults.txFee, context);
11
+
12
+ if (!txFee) {
13
+ context.senderUpdates = { tokens: {} };
14
+ context.vaultUpdates = { tokens: {} };
15
+ context.vaultState = vaultState;
16
+ context.updatedAccounts = [];
17
+ return next();
18
+ }
19
+
20
+ const expected = fromTokenToUnit(txFee, config.token.decimal);
21
+ const actual = new BN(senderState.tokens[config.token.address] || 0);
22
+ if (actual.lt(expected)) {
23
+ return next(new Error('INSUFFICIENT_FUND', `Insufficient fund to pay for tx fee, expected ${txFee}`));
24
+ }
25
+
26
+ const tokenChange = { address: config.token.address, value: expected.toString(10) };
27
+
28
+ context.senderUpdates = applyTokenUpdates([tokenChange], senderState, 'sub');
29
+ context.vaultUpdates = applyTokenUpdates([tokenChange], vaultState, 'add');
30
+ context.vaultState = vaultState;
31
+
32
+ context.updatedAccounts = [
33
+ { address: senderState.address, token: config.token.address, delta: `-${tokenChange.value}`, action: 'fee' },
34
+ { address: vaultState.address, token: config.token.address, delta: tokenChange.value, action: 'fee' },
35
+ ];
36
+
37
+ return next();
38
+ };
@@ -1,6 +1,7 @@
1
1
  const Error = require('@ocap/util/lib/error');
2
+ const Joi = require('@ocap/validator');
2
3
  const { Runner, pipes } = require('@ocap/tx-pipeline');
3
- const { account, rollup, Joi } = require('@ocap/state');
4
+ const { account, rollup } = require('@ocap/state');
4
5
 
5
6
  // eslint-disable-next-line global-require
6
7
  const debug = require('debug')(`${require('../../../package.json').name}:update-rollup`);
@@ -1,14 +1,16 @@
1
1
  const isEmpty = require('empty-value');
2
2
  const cloneDeep = require('lodash/cloneDeep');
3
+ const Joi = require('@ocap/validator');
3
4
  const Error = require('@ocap/util/lib/error');
4
5
  const { Runner, pipes } = require('@ocap/tx-pipeline');
5
- const { account, token, Joi } = require('@ocap/state');
6
+ const { account, token } = require('@ocap/state');
6
7
  const { toTokenAddress } = require('@arcblock/did-util');
7
8
  const { fromTokenToUnit } = require('@ocap/util');
8
9
 
9
10
  // eslint-disable-next-line global-require
10
11
  const debug = require('debug')(`${require('../../../package.json').name}:create-token`);
11
12
  const { decodeAnySafe } = require('../../util');
13
+ const ensureTxFee = require('../rollup/pipes/ensure-tx-fee');
12
14
 
13
15
  const MAX_TOTAL_SUPPLY = fromTokenToUnit(10000 * 100000000, 18); // 32
14
16
 
@@ -26,7 +28,7 @@ const schema = Joi.object({
26
28
  icon: Joi.string().optional().valid(''),
27
29
  totalSupply: Joi.BN().greater(0).max(MAX_TOTAL_SUPPLY).required(),
28
30
  initialSupply: Joi.BN().greater(0).max(Joi.ref('totalSupply')).required(),
29
- foreignToken: Joi.foreignTokenSchema.optional().default(null),
31
+ foreignToken: Joi.schemas.foreignToken.optional().default(null),
30
32
  data: Joi.any().optional(),
31
33
  }).options({ stripUnknown: true, noDefaults: false });
32
34
 
@@ -86,26 +88,34 @@ runner.use(async (context, next) => {
86
88
  return next();
87
89
  });
88
90
 
91
+ runner.use(ensureTxFee);
92
+
89
93
  // Update sender state, token state
90
94
  runner.use(
91
95
  async (context, next) => {
92
- const { tx, itx, statedb, senderState } = context;
96
+ const { tx, itx, statedb, senderState, senderUpdates, vaultState, vaultUpdates } = context;
93
97
  const data = decodeAnySafe(itx.data);
94
98
 
95
- const senderTokens = senderState.tokens || {};
96
- senderTokens[itx.address] = itx.initialSupply;
99
+ // We are definitely creating a different token, so it is safe to set tokens to initial supply
100
+ senderUpdates.tokens[itx.address] = itx.initialSupply;
97
101
 
98
- const [newSenderState, tokenState] = await Promise.all([
102
+ const [newSenderState, tokenState, newVaultState] = await Promise.all([
99
103
  statedb.account.update(
100
104
  senderState.address,
101
- account.update(senderState, { tokens: senderTokens, nonce: tx.nonce, pk: tx.pk }, context),
105
+ account.update(senderState, { nonce: tx.nonce, pk: tx.pk, ...senderUpdates }, context),
102
106
  context
103
107
  ),
108
+
104
109
  statedb.token.create(itx.address, token.create({ ...itx, data, issuer: senderState.address }, context), context),
110
+
111
+ isEmpty(vaultUpdates)
112
+ ? vaultState
113
+ : statedb.account.update(vaultState.address, account.update(vaultState, vaultUpdates, context), context),
105
114
  ]);
106
115
 
107
116
  context.senderState = newSenderState;
108
117
  context.tokenState = tokenState;
118
+ context.vaultState = newVaultState;
109
119
 
110
120
  debug('create token v2', tokenState);
111
121
 
@@ -1,9 +1,10 @@
1
1
  /* eslint-disable indent */
2
2
  const Error = require('@ocap/util/lib/error');
3
+ const Joi = require('@ocap/validator');
3
4
  const getListField = require('@ocap/util/lib/get-list-field');
4
5
  const { BN, fromUnitToToken } = require('@ocap/util');
5
6
  const { Runner, pipes } = require('@ocap/tx-pipeline');
6
- const { account, stake, evidence, Joi } = require('@ocap/state');
7
+ const { account, stake, evidence } = require('@ocap/state');
7
8
  const { toStakeAddress } = require('@arcblock/did-util');
8
9
 
9
10
  // eslint-disable-next-line global-require
@@ -14,11 +15,11 @@ const VerifyPaused = require('../rollup/pipes/verify-paused');
14
15
  const { applyTokenUpdates, getTxFee, getBNSum, getRewardLocker } = require('../../util');
15
16
 
16
17
  const schema = Joi.object({
17
- token: Joi.tokenInputSchema.required(),
18
+ token: Joi.schemas.tokenInput.required(),
18
19
  to: Joi.DID().wallet('ethereum').required(),
19
20
  proposer: Joi.DID().wallet('ethereum').required(),
20
21
  evidence: Joi.object({
21
- hash: Joi.string().regex(Joi.hashRegexp).required(),
22
+ hash: Joi.string().regex(Joi.patterns.txHash).required(),
22
23
  }).required(),
23
24
  rollup: Joi.DID().role('ROLE_ROLLUP').required(),
24
25
  actualFee: Joi.BN().min(0).required(),
@@ -1,9 +1,10 @@
1
1
  /* eslint-disable indent */
2
2
  const Error = require('@ocap/util/lib/error');
3
+ const Joi = require('@ocap/validator');
3
4
  const getListField = require('@ocap/util/lib/get-list-field');
4
5
  const { BN, fromUnitToToken } = require('@ocap/util');
5
6
  const { Runner, pipes } = require('@ocap/tx-pipeline');
6
- const { account, stake, Joi } = require('@ocap/state');
7
+ const { account, stake } = require('@ocap/state');
7
8
  const { toStakeAddress } = require('@arcblock/did-util');
8
9
 
9
10
  // eslint-disable-next-line global-require
@@ -15,7 +16,7 @@ const { applyTokenUpdates, getTxFee, getBNSum, getRewardLocker } = require('../.
15
16
  const verifyMultiSigV2 = pipes.VerifyMultiSigV2({ signersKey: 'signers' });
16
17
 
17
18
  const schema = Joi.object({
18
- token: Joi.tokenInputSchema.required(),
19
+ token: Joi.schemas.tokenInput.required(),
19
20
  to: Joi.DID().wallet('ethereum').required(),
20
21
  rollup: Joi.DID().role('ROLE_ROLLUP').required(),
21
22
  proposer: Joi.DID().wallet('ethereum').optional().allow('').default(''),
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "1.13.65",
6
+ "version": "1.13.66",
7
7
  "description": "Predefined tx pipeline sets to execute certain type of transactions",
8
8
  "main": "lib/index.js",
9
9
  "files": [
@@ -19,16 +19,17 @@
19
19
  "author": "wangshijun <wangshijun2010@gmail.com> (http://github.com/wangshijun)",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "@arcblock/did": "1.13.65",
23
- "@arcblock/did-util": "1.13.65",
24
- "@ocap/asset": "1.13.65",
25
- "@ocap/mcrypto": "1.13.65",
26
- "@ocap/merkle-tree": "1.13.65",
27
- "@ocap/message": "1.13.65",
28
- "@ocap/state": "1.13.65",
29
- "@ocap/tx-pipeline": "1.13.65",
30
- "@ocap/util": "1.13.65",
31
- "@ocap/wallet": "1.13.65",
22
+ "@arcblock/did": "1.13.66",
23
+ "@arcblock/did-util": "1.13.66",
24
+ "@ocap/asset": "1.13.66",
25
+ "@ocap/mcrypto": "1.13.66",
26
+ "@ocap/merkle-tree": "1.13.66",
27
+ "@ocap/message": "1.13.66",
28
+ "@ocap/state": "1.13.66",
29
+ "@ocap/tx-pipeline": "1.13.66",
30
+ "@ocap/util": "1.13.66",
31
+ "@ocap/validator": "1.13.66",
32
+ "@ocap/wallet": "1.13.66",
32
33
  "debug": "^4.3.2",
33
34
  "empty-value": "^1.0.1",
34
35
  "lodash": "^4.17.21",
@@ -41,5 +42,5 @@
41
42
  "devDependencies": {
42
43
  "jest": "^27.3.1"
43
44
  },
44
- "gitHead": "4011996e1800845142aa5c889b58726129a99ec3"
45
+ "gitHead": "1395a8dccee398dd0aed47c2b54a2c6e350d8621"
45
46
  }