@debridge-finance/borderless-validation-sdk 0.5.1 → 0.6.0
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.
- package/dist/cjs/helpers/address.js +7 -0
- package/dist/cjs/helpers/address.js.map +1 -1
- package/dist/cjs/helpers/evm-intent-id.js +2 -1
- package/dist/cjs/helpers/evm-intent-id.js.map +1 -1
- package/dist/cjs/helpers/execution-metadata.js +122 -0
- package/dist/cjs/helpers/execution-metadata.js.map +1 -0
- package/dist/cjs/helpers/solana-instruction.js +7 -1
- package/dist/cjs/helpers/solana-instruction.js.map +1 -1
- package/dist/cjs/helpers/solana-intent-id.js +46 -20
- package/dist/cjs/helpers/solana-intent-id.js.map +1 -1
- package/dist/cjs/types/request.js +1 -1
- package/dist/cjs/types/request.js.map +1 -1
- package/dist/cjs/types/response.js +44 -3
- package/dist/cjs/types/response.js.map +1 -1
- package/dist/cjs/types/validation.js +35 -2
- package/dist/cjs/types/validation.js.map +1 -1
- package/dist/cjs/validations/dln-metadata.js +6 -0
- package/dist/cjs/validations/dln-metadata.js.map +1 -1
- package/dist/cjs/validations/evm-permit.js +13 -4
- package/dist/cjs/validations/evm-permit.js.map +1 -1
- package/dist/cjs/validations/execution-metadata.js +163 -0
- package/dist/cjs/validations/execution-metadata.js.map +1 -0
- package/dist/cjs/validations/intent.js +0 -15
- package/dist/cjs/validations/intent.js.map +1 -1
- package/dist/cjs/validations/low-input-sweep-bundle.js +33 -14
- package/dist/cjs/validations/low-input-sweep-bundle.js.map +1 -1
- package/dist/cjs/validations/low-input-sweep-consolidation.js +75 -0
- package/dist/cjs/validations/low-input-sweep-consolidation.js.map +1 -0
- package/dist/cjs/validations/low-input-sweep.js +19 -13
- package/dist/cjs/validations/low-input-sweep.js.map +1 -1
- package/dist/cjs/validations/solana-compute-budget.js +111 -0
- package/dist/cjs/validations/solana-compute-budget.js.map +1 -0
- package/dist/cjs/validations/solana-op-budget.js +1 -1
- package/dist/cjs/validations/solana-op-budget.js.map +1 -1
- package/dist/cjs/validations/solana-op-wrap.js +1 -1
- package/dist/cjs/validations/solana-op-wrap.js.map +1 -1
- package/dist/cjs/validations/solana-preparation.js +193 -0
- package/dist/cjs/validations/solana-preparation.js.map +1 -0
- package/dist/cjs/validations/solana-required-actions.js +65 -29
- package/dist/cjs/validations/solana-required-actions.js.map +1 -1
- package/dist/cjs/validations/solana-transaction.js +35 -67
- package/dist/cjs/validations/solana-transaction.js.map +1 -1
- package/dist/cjs/validations/trade-grouping.js +6 -8
- package/dist/cjs/validations/trade-grouping.js.map +1 -1
- package/dist/cjs/validations/trade-index-matching.js +110 -0
- package/dist/cjs/validations/trade-index-matching.js.map +1 -0
- package/dist/cjs/validations/trade-matching.js +10 -5
- package/dist/cjs/validations/trade-matching.js.map +1 -1
- package/dist/cjs/validator.js +4 -0
- package/dist/cjs/validator.js.map +1 -1
- package/dist/cjs/whitelists/environment-config.js +2 -0
- package/dist/cjs/whitelists/environment-config.js.map +1 -1
- package/dist/esm/helpers/address.js +6 -0
- package/dist/esm/helpers/address.js.map +1 -1
- package/dist/esm/helpers/evm-intent-id.js +2 -1
- package/dist/esm/helpers/evm-intent-id.js.map +1 -1
- package/dist/esm/helpers/execution-metadata.js +114 -0
- package/dist/esm/helpers/execution-metadata.js.map +1 -0
- package/dist/esm/helpers/solana-instruction.js +6 -0
- package/dist/esm/helpers/solana-instruction.js.map +1 -1
- package/dist/esm/helpers/solana-intent-id.js +47 -21
- package/dist/esm/helpers/solana-intent-id.js.map +1 -1
- package/dist/esm/types/request.js +1 -1
- package/dist/esm/types/request.js.map +1 -1
- package/dist/esm/types/response.js +45 -4
- package/dist/esm/types/response.js.map +1 -1
- package/dist/esm/types/validation.js +35 -2
- package/dist/esm/types/validation.js.map +1 -1
- package/dist/esm/validations/dln-metadata.js +5 -0
- package/dist/esm/validations/dln-metadata.js.map +1 -1
- package/dist/esm/validations/evm-permit.js +13 -4
- package/dist/esm/validations/evm-permit.js.map +1 -1
- package/dist/esm/validations/execution-metadata.js +160 -0
- package/dist/esm/validations/execution-metadata.js.map +1 -0
- package/dist/esm/validations/intent.js +1 -16
- package/dist/esm/validations/intent.js.map +1 -1
- package/dist/esm/validations/low-input-sweep-bundle.js +33 -14
- package/dist/esm/validations/low-input-sweep-bundle.js.map +1 -1
- package/dist/esm/validations/low-input-sweep-consolidation.js +72 -0
- package/dist/esm/validations/low-input-sweep-consolidation.js.map +1 -0
- package/dist/esm/validations/low-input-sweep.js +19 -13
- package/dist/esm/validations/low-input-sweep.js.map +1 -1
- package/dist/esm/validations/solana-compute-budget.js +107 -0
- package/dist/esm/validations/solana-compute-budget.js.map +1 -0
- package/dist/esm/validations/solana-op-budget.js +1 -1
- package/dist/esm/validations/solana-op-budget.js.map +1 -1
- package/dist/esm/validations/solana-op-wrap.js +1 -1
- package/dist/esm/validations/solana-op-wrap.js.map +1 -1
- package/dist/esm/validations/solana-preparation.js +190 -0
- package/dist/esm/validations/solana-preparation.js.map +1 -0
- package/dist/esm/validations/solana-required-actions.js +65 -29
- package/dist/esm/validations/solana-required-actions.js.map +1 -1
- package/dist/esm/validations/solana-transaction.js +35 -67
- package/dist/esm/validations/solana-transaction.js.map +1 -1
- package/dist/esm/validations/trade-grouping.js +8 -10
- package/dist/esm/validations/trade-grouping.js.map +1 -1
- package/dist/esm/validations/trade-index-matching.js +107 -0
- package/dist/esm/validations/trade-index-matching.js.map +1 -0
- package/dist/esm/validations/trade-matching.js +10 -5
- package/dist/esm/validations/trade-matching.js.map +1 -1
- package/dist/esm/validator.js +4 -0
- package/dist/esm/validator.js.map +1 -1
- package/dist/esm/whitelists/environment-config.js +2 -0
- package/dist/esm/whitelists/environment-config.js.map +1 -1
- package/dist/types/helpers/address.d.ts +1 -0
- package/dist/types/helpers/address.d.ts.map +1 -1
- package/dist/types/helpers/evm-intent-id.d.ts.map +1 -1
- package/dist/types/helpers/execution-metadata.d.ts +38 -0
- package/dist/types/helpers/execution-metadata.d.ts.map +1 -0
- package/dist/types/helpers/solana-instruction.d.ts +4 -0
- package/dist/types/helpers/solana-instruction.d.ts.map +1 -1
- package/dist/types/helpers/solana-intent-id.d.ts.map +1 -1
- package/dist/types/types/request.d.ts +1 -2
- package/dist/types/types/request.d.ts.map +1 -1
- package/dist/types/types/response.d.ts +53 -24
- package/dist/types/types/response.d.ts.map +1 -1
- package/dist/types/types/validation.d.ts +32 -1
- package/dist/types/types/validation.d.ts.map +1 -1
- package/dist/types/validations/dln-metadata.d.ts +1 -0
- package/dist/types/validations/dln-metadata.d.ts.map +1 -1
- package/dist/types/validations/evm-permit.d.ts.map +1 -1
- package/dist/types/validations/execution-metadata.d.ts +3 -0
- package/dist/types/validations/execution-metadata.d.ts.map +1 -0
- package/dist/types/validations/low-input-sweep-bundle.d.ts.map +1 -1
- package/dist/types/validations/low-input-sweep-consolidation.d.ts +5 -0
- package/dist/types/validations/low-input-sweep-consolidation.d.ts.map +1 -0
- package/dist/types/validations/low-input-sweep.d.ts.map +1 -1
- package/dist/types/validations/solana-compute-budget.d.ts +5 -0
- package/dist/types/validations/solana-compute-budget.d.ts.map +1 -0
- package/dist/types/validations/solana-preparation.d.ts +3 -0
- package/dist/types/validations/solana-preparation.d.ts.map +1 -0
- package/dist/types/validations/solana-required-actions.d.ts.map +1 -1
- package/dist/types/validations/solana-transaction.d.ts.map +1 -1
- package/dist/types/validations/trade-index-matching.d.ts +4 -0
- package/dist/types/validations/trade-index-matching.d.ts.map +1 -0
- package/dist/types/validations/trade-matching.d.ts.map +1 -1
- package/dist/types/validator.d.ts.map +1 -1
- package/dist/types/whitelists/environment-config.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -2,13 +2,17 @@ import { ViolationCode, SolanaActionKind, SolanaActionOperation, } from "../type
|
|
|
2
2
|
import { validateSolanaTransactionActions, validateSolanaSignTransactionActions, } from "./solana-transaction.js";
|
|
3
3
|
import { validateSolanaSignActions } from "./solana-sign.js";
|
|
4
4
|
import { validateSolanaEmbeddedIntentActions } from "./solana-embedded-intent.js";
|
|
5
|
+
import { validateSolanaPreparationActions } from "./solana-preparation.js";
|
|
5
6
|
export function validateSolanaRequiredActions(request, actions, basePath, realChainId, quoteMode, trades, responseTrades, srcChainAuthorityAddress, intent, envConfig, quoteTradeSubsetUnverifiable) {
|
|
6
7
|
return [
|
|
7
8
|
...validateUniqueActionIds(actions, basePath),
|
|
8
9
|
...validateRequiredActionsOrder(actions, basePath, quoteMode),
|
|
9
10
|
...validateAAConstraints(request, actions, basePath),
|
|
11
|
+
...validateOnChainActionKinds(request, actions, basePath),
|
|
12
|
+
...validateOnChainIntentPresence(request, actions, basePath, quoteMode),
|
|
10
13
|
...validateNoOperationActions(actions, basePath),
|
|
11
14
|
...validateNoCompensationActions(actions, basePath),
|
|
15
|
+
...validateSolanaPreparationActions(actions, basePath, realChainId, envConfig.solanaIntentProgram),
|
|
12
16
|
...validateSolanaTransactionActions(actions, basePath, realChainId, quoteMode, srcChainAuthorityAddress, request, trades, responseTrades, intent.inputToken, envConfig, quoteTradeSubsetUnverifiable),
|
|
13
17
|
...validateSolanaSignTransactionActions(actions, basePath, realChainId, quoteMode, srcChainAuthorityAddress, request, trades, responseTrades, intent.inputToken, envConfig, quoteTradeSubsetUnverifiable),
|
|
14
18
|
...validateSolanaSignActions(actions, basePath, realChainId, quoteMode, intent, envConfig),
|
|
@@ -59,37 +63,69 @@ function validateRequiredActionsOrder(actions, basePath, quoteMode) {
|
|
|
59
63
|
function isIntentRepresentationAction(action) {
|
|
60
64
|
return action.actions.includes(SolanaActionOperation.Intent);
|
|
61
65
|
}
|
|
62
|
-
// CRITICAL: AA
|
|
66
|
+
// CRITICAL: AA forbids user-submitted transactions. Without AA, co-signed
|
|
67
|
+
// preparation is permitted only when on-chain submission was explicitly requested.
|
|
63
68
|
function validateAAConstraints(request, actions, basePath) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
actual: action.type,
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
else {
|
|
79
|
-
// AA=false normally uses Transaction. The on-chain intent flow is the one
|
|
80
|
-
// exception: API and wallet co-sign an Intent SignTransaction for taker broadcast.
|
|
81
|
-
if (action.type === SolanaActionKind.SignTransaction
|
|
82
|
-
&& !action.actions.includes(SolanaActionOperation.Intent)) {
|
|
83
|
-
violations.push({
|
|
84
|
-
code: ViolationCode.SolanaForbiddenSignTransactionWithoutAA,
|
|
85
|
-
message: "SignTransaction action is forbidden when enableAccountAbstraction=false",
|
|
86
|
-
path: `${basePath}.requiredActions[${i}].type`,
|
|
87
|
-
actual: action.type,
|
|
88
|
-
});
|
|
89
|
-
}
|
|
90
|
-
}
|
|
69
|
+
return actions.flatMap((action, index) => validateActionAAConstraint(request, action, `${basePath}.requiredActions[${index}]`));
|
|
70
|
+
}
|
|
71
|
+
function validateActionAAConstraint(request, action, actionPath) {
|
|
72
|
+
if (request.enableAccountAbstraction && action.type === SolanaActionKind.Transaction) {
|
|
73
|
+
return [{
|
|
74
|
+
code: ViolationCode.SolanaForbiddenTransactionWithAA,
|
|
75
|
+
message: "Transaction action is forbidden when enableAccountAbstraction=true",
|
|
76
|
+
path: `${actionPath}.type`,
|
|
77
|
+
actual: action.type,
|
|
78
|
+
}];
|
|
91
79
|
}
|
|
92
|
-
|
|
80
|
+
// Without an explicit on-chain request, only the embedded Intent may use
|
|
81
|
+
// SignTransaction without AA; standalone preparation still uses Transaction.
|
|
82
|
+
if (!request.enableAccountAbstraction
|
|
83
|
+
&& request.intentOnChainSubmission !== true
|
|
84
|
+
&& action.type === SolanaActionKind.SignTransaction
|
|
85
|
+
&& !action.actions.includes(SolanaActionOperation.Intent)) {
|
|
86
|
+
return [{
|
|
87
|
+
code: ViolationCode.SolanaForbiddenSignTransactionWithoutAA,
|
|
88
|
+
message: "preparation SignTransaction requires AA or explicitly requested on-chain intent submission",
|
|
89
|
+
path: `${actionPath}.type`,
|
|
90
|
+
actual: action.type,
|
|
91
|
+
}];
|
|
92
|
+
}
|
|
93
|
+
return [];
|
|
94
|
+
}
|
|
95
|
+
// CRITICAL: explicit on-chain submission requires co-signed transactions for
|
|
96
|
+
// preparation and Intent alike. Changing the action type must not change the mode.
|
|
97
|
+
function validateOnChainActionKinds(request, actions, basePath) {
|
|
98
|
+
if (request.intentOnChainSubmission !== true)
|
|
99
|
+
return [];
|
|
100
|
+
return actions.flatMap((action, index) => {
|
|
101
|
+
if (action.type === SolanaActionKind.SignTransaction)
|
|
102
|
+
return [];
|
|
103
|
+
return [{
|
|
104
|
+
code: ViolationCode.SolanaOnChainActionKindInvalid,
|
|
105
|
+
message: "on-chain Solana intent submission requires SignTransaction for every required action",
|
|
106
|
+
path: `${basePath}.requiredActions[${index}].type`,
|
|
107
|
+
expected: SolanaActionKind.SignTransaction,
|
|
108
|
+
actual: action.type,
|
|
109
|
+
}];
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
// CRITICAL: preparation or a separate message signature cannot replace the
|
|
113
|
+
// requested embedded Intent. Quote responses may omit the Intent action entirely.
|
|
114
|
+
// Duplicate representations and embedded payloads are checked independently.
|
|
115
|
+
function validateOnChainIntentPresence(request, actions, basePath, quoteMode) {
|
|
116
|
+
if (request.intentOnChainSubmission !== true || quoteMode)
|
|
117
|
+
return [];
|
|
118
|
+
const intentActions = actions.filter(action => action.type === SolanaActionKind.SignTransaction
|
|
119
|
+
&& action.actions.includes(SolanaActionOperation.Intent));
|
|
120
|
+
if (intentActions.length > 0)
|
|
121
|
+
return [];
|
|
122
|
+
return [{
|
|
123
|
+
code: ViolationCode.OnChainIntentTransactionMissing,
|
|
124
|
+
message: "on-chain Solana intent submission requires an embedded Intent SignTransaction",
|
|
125
|
+
path: `${basePath}.requiredActions`,
|
|
126
|
+
expected: { embeddedIntentActionCount: 1 },
|
|
127
|
+
actual: { embeddedIntentActionCount: 0 },
|
|
128
|
+
}];
|
|
93
129
|
}
|
|
94
130
|
// HIGH: Operation actions must be absent
|
|
95
131
|
function validateNoOperationActions(actions, basePath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-required-actions.js","sourceRoot":"","sources":["../../../src/validations/solana-required-actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEH,aAAa,EAGb,gBAAgB,EAChB,qBAAqB,GAKxB,MAAM,UAAU,CAAC;AAClB,OAAO,EACH,gCAAgC,EAChC,oCAAoC,GACvC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"solana-required-actions.js","sourceRoot":"","sources":["../../../src/validations/solana-required-actions.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ import { resolveInstructions, isClassicApprove, isCustomApprove, isSystemTransfe
|
|
|
5
5
|
import { COMPUTE_BUDGET_PROGRAM, } from "../whitelists/solana/programs.js";
|
|
6
6
|
import { validateSolanaBudgetInstructions } from "./solana-op-budget.js";
|
|
7
7
|
import { validateSolanaWrapInstructions } from "./solana-op-wrap.js";
|
|
8
|
+
import { isSolanaComputeBudgetAllowed, validateSolanaComputeBudgetInstructions, } from "./solana-compute-budget.js";
|
|
8
9
|
const ALLOWED_TX_ACTIONS = new Set([
|
|
9
10
|
SolanaActionOperation.Wrap,
|
|
10
11
|
SolanaActionOperation.Budget,
|
|
@@ -29,7 +30,7 @@ export function validateSolanaTransactionActions(actions, basePath, realChainId,
|
|
|
29
30
|
}
|
|
30
31
|
const accountKeys = getStaticAccountKeys(decoded.transaction);
|
|
31
32
|
const resolved = resolveInstructions(decoded.transaction.message.compiledInstructions, accountKeys);
|
|
32
|
-
violations.push(...validateTransactionFeePayer(decoded.transaction, actionPath, realChainId, quoteMode, srcChainAuthorityAddress), ...
|
|
33
|
+
violations.push(...validateTransactionFeePayer(decoded.transaction, actionPath, realChainId, quoteMode, srcChainAuthorityAddress), ...validateSolanaComputeBudgetInstructions(resolved, actionPath, request, isFirstTransactionAction), ...validateAllowedInstructions(decoded.transaction, actionPath, getAllowedTransactionPrograms(envConfig.solanaTransactionAllowedPrograms, request), ViolationCode.SolanaTransactionForbiddenInstruction, "Transaction"), ...validateDeclaredOperationsForInstructions(resolved, action, actionPath, envConfig), ...validateIntentActionInstructions(resolved, action, actionPath, envConfig), ...validateSolanaBudgetInstructions(action, resolved, actionPath, request, trades, responseTrades, realChainId, quoteMode, srcChainAuthorityAddress, envConfig, quoteTradeSubsetUnverifiable), ...validateSolanaWrapInstructions(action, resolved, actionPath, inputTokens, realChainId, quoteMode, srcChainAuthorityAddress, quoteTradeSubsetUnverifiable), ...validateNoUnclassifiedInstructions(resolved, actionPath, buildClassifiers(envConfig.solanaIntentProgram, ix => isSolanaComputeBudgetAllowed(request) && isComputeBudget(ix))));
|
|
33
34
|
}
|
|
34
35
|
return violations;
|
|
35
36
|
}
|
|
@@ -54,19 +55,12 @@ export function validateSolanaSignTransactionActions(actions, basePath, realChai
|
|
|
54
55
|
}
|
|
55
56
|
const accountKeys = getStaticAccountKeys(decoded.transaction);
|
|
56
57
|
const resolved = resolveInstructions(decoded.transaction.message.compiledInstructions, accountKeys);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const allowedPrograms =
|
|
60
|
-
|
|
61
|
-
...envConfig.solanaSignTransactionAllowedPrograms,
|
|
62
|
-
COMPUTE_BUDGET_PROGRAM,
|
|
63
|
-
])
|
|
64
|
-
: envConfig.solanaSignTransactionAllowedPrograms;
|
|
65
|
-
violations.push(...validateAllowedInstructions(decoded.transaction, actionPath, allowedPrograms, ViolationCode.SolanaSignTransactionForbiddenInstruction, actionType), ...(isNonAaIntentSubmission
|
|
58
|
+
// Ordinary non-AA embedded intents also carry ComputeBudget. The request
|
|
59
|
+
// policy removes it again for AA and explicitly requested on-chain mode.
|
|
60
|
+
const allowedPrograms = getAllowedTransactionPrograms(new Set([...envConfig.solanaSignTransactionAllowedPrograms, COMPUTE_BUDGET_PROGRAM]), request);
|
|
61
|
+
violations.push(...validateAllowedInstructions(decoded.transaction, actionPath, allowedPrograms, ViolationCode.SolanaSignTransactionForbiddenInstruction, actionType), ...(!request.enableAccountAbstraction
|
|
66
62
|
? validateTransactionFeePayer(decoded.transaction, actionPath, realChainId, quoteMode, srcChainAuthorityAddress)
|
|
67
|
-
: []), ...(
|
|
68
|
-
? validateTransactionComputeBudget(decoded.transaction, actionPath, true)
|
|
69
|
-
: []), ...validateDeclaredOperationsForInstructions(resolved, action, actionPath, envConfig), ...validateIntentActionInstructions(resolved, action, actionPath, envConfig), ...validateSolanaBudgetInstructions(action, resolved, actionPath, request, trades, responseTrades, realChainId, quoteMode, srcChainAuthorityAddress, envConfig, quoteTradeSubsetUnverifiable), ...validateSolanaWrapInstructions(action, resolved, actionPath, inputTokens, realChainId, quoteMode, srcChainAuthorityAddress, quoteTradeSubsetUnverifiable), ...validateNoUnclassifiedInstructions(resolved, actionPath, buildClassifiers(envConfig.solanaIntentProgram, isIntentSubmission ? isMemoOrComputeBudget : isMemo)));
|
|
63
|
+
: []), ...validateSolanaComputeBudgetInstructions(resolved, actionPath, request, true), ...validateDeclaredOperationsForInstructions(resolved, action, actionPath, envConfig), ...validateIntentActionInstructions(resolved, action, actionPath, envConfig), ...validateSolanaBudgetInstructions(action, resolved, actionPath, request, trades, responseTrades, realChainId, quoteMode, srcChainAuthorityAddress, envConfig, quoteTradeSubsetUnverifiable), ...validateSolanaWrapInstructions(action, resolved, actionPath, inputTokens, realChainId, quoteMode, srcChainAuthorityAddress, quoteTradeSubsetUnverifiable), ...validateNoUnclassifiedInstructions(resolved, actionPath, buildClassifiers(envConfig.solanaIntentProgram, ix => isMemo(ix) || (isSolanaComputeBudgetAllowed(request) && isComputeBudget(ix)))));
|
|
70
64
|
}
|
|
71
65
|
return violations;
|
|
72
66
|
}
|
|
@@ -132,7 +126,7 @@ function validateIntentActionInstructions(resolved, action, actionPath, envConfi
|
|
|
132
126
|
// =============================================
|
|
133
127
|
// HIGH: actions[] must only contain unique Wrap, Budget, Intent operations
|
|
134
128
|
function validateActionsList(action, actionPath) {
|
|
135
|
-
const violations =
|
|
129
|
+
const violations = validatePreparationOperationPresent(action, actionPath);
|
|
136
130
|
const invalid = action.actions.filter(a => !ALLOWED_TX_ACTIONS.has(a));
|
|
137
131
|
const duplicates = findDuplicateActions(action.actions);
|
|
138
132
|
if (invalid.length > 0) {
|
|
@@ -155,6 +149,25 @@ function validateActionsList(action, actionPath) {
|
|
|
155
149
|
}
|
|
156
150
|
return violations;
|
|
157
151
|
}
|
|
152
|
+
// HIGH: a SignTransaction without Intent must declare Wrap or Budget.
|
|
153
|
+
// Their validators also require the corresponding instructions.
|
|
154
|
+
// Ordinary Transaction actions may legitimately contain only ComputeBudget;
|
|
155
|
+
// the shared response schema and an empty quote requiredActions list stay valid.
|
|
156
|
+
function validatePreparationOperationPresent(action, actionPath) {
|
|
157
|
+
if (action.type !== SolanaActionKind.SignTransaction
|
|
158
|
+
|| action.actions.includes(SolanaActionOperation.Intent)
|
|
159
|
+
|| action.actions.includes(SolanaActionOperation.Wrap)
|
|
160
|
+
|| action.actions.includes(SolanaActionOperation.Budget))
|
|
161
|
+
return [];
|
|
162
|
+
// Existing Wrap/Budget and Intent validators require the actual instructions
|
|
163
|
+
// when their labels are present; a fictitious label cannot satisfy validation.
|
|
164
|
+
return [{
|
|
165
|
+
code: ViolationCode.SolanaPreparationOperationMissing,
|
|
166
|
+
message: "SignTransaction without Intent must declare at least one operation: Wrap or Budget",
|
|
167
|
+
path: `${actionPath}.actions`,
|
|
168
|
+
actual: action.actions,
|
|
169
|
+
}];
|
|
170
|
+
}
|
|
158
171
|
function findDuplicateActions(actions) {
|
|
159
172
|
const seen = new Set();
|
|
160
173
|
const duplicates = new Set();
|
|
@@ -195,9 +208,7 @@ function validateTransactionFeePayer(transaction, actionPath, realChainId, quote
|
|
|
195
208
|
if (quoteMode || !srcChainAuthorityAddress)
|
|
196
209
|
return [];
|
|
197
210
|
const feePayer = getFeePayer(transaction);
|
|
198
|
-
if (!feePayer)
|
|
199
|
-
return [];
|
|
200
|
-
if (!addressEquals(realChainId, feePayer, srcChainAuthorityAddress)) {
|
|
211
|
+
if (feePayer === undefined || !addressEquals(realChainId, feePayer, srcChainAuthorityAddress)) {
|
|
201
212
|
return [{
|
|
202
213
|
code: ViolationCode.SolanaTransactionFeePayerMismatch,
|
|
203
214
|
message: "Transaction feePayer must equal request.trades[].srcChainAuthorityAddress",
|
|
@@ -208,54 +219,14 @@ function validateTransactionFeePayer(transaction, actionPath, realChainId, quote
|
|
|
208
219
|
}
|
|
209
220
|
return [];
|
|
210
221
|
}
|
|
211
|
-
//
|
|
212
|
-
//
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const computeBudgetIndices = getComputeBudgetInstructionIndices(instructions, accountKeys);
|
|
218
|
-
const leadingComputeBudgetCount = countLeadingComputeBudgetInstructions(instructions, accountKeys);
|
|
219
|
-
if (!isFirstTransactionAction && computeBudgetIndices.length === 0)
|
|
220
|
-
return [];
|
|
221
|
-
if (leadingComputeBudgetCount < computeBudgetIndices.length) {
|
|
222
|
-
return [{
|
|
223
|
-
code: ViolationCode.SolanaTransactionComputeBudgetMissing,
|
|
224
|
-
message: "ComputeBudget instructions must be at the beginning of Transaction",
|
|
225
|
-
path: `${actionPath}.data.data`,
|
|
226
|
-
expected: computeBudgetIndices.map((_, i) => i),
|
|
227
|
-
actual: computeBudgetIndices,
|
|
228
|
-
}];
|
|
229
|
-
}
|
|
230
|
-
if (leadingComputeBudgetCount < 2) {
|
|
231
|
-
return [{
|
|
232
|
-
code: ViolationCode.SolanaTransactionComputeBudgetMissing,
|
|
233
|
-
message: "Transaction must have at least 2 ComputeBudget instructions at the beginning",
|
|
234
|
-
path: `${actionPath}.data.data`,
|
|
235
|
-
expected: 2,
|
|
236
|
-
actual: leadingComputeBudgetCount,
|
|
237
|
-
}];
|
|
222
|
+
// Keep the program allowlist aligned with the request-based instruction policy.
|
|
223
|
+
// Copy the shared whitelist: a validation must never mutate environment config.
|
|
224
|
+
function getAllowedTransactionPrograms(programs, request) {
|
|
225
|
+
const allowed = new Set(programs);
|
|
226
|
+
if (!isSolanaComputeBudgetAllowed(request)) {
|
|
227
|
+
allowed.delete(COMPUTE_BUDGET_PROGRAM);
|
|
238
228
|
}
|
|
239
|
-
return
|
|
240
|
-
}
|
|
241
|
-
function getComputeBudgetInstructionIndices(instructions, accountKeys) {
|
|
242
|
-
const indices = [];
|
|
243
|
-
for (let i = 0; i < instructions.length; i++) {
|
|
244
|
-
const programId = accountKeys[instructions[i].programIdIndex];
|
|
245
|
-
if (programId === COMPUTE_BUDGET_PROGRAM)
|
|
246
|
-
indices.push(i);
|
|
247
|
-
}
|
|
248
|
-
return indices;
|
|
249
|
-
}
|
|
250
|
-
function countLeadingComputeBudgetInstructions(instructions, accountKeys) {
|
|
251
|
-
let count = 0;
|
|
252
|
-
for (let i = 0; i < instructions.length; i++) {
|
|
253
|
-
const programId = accountKeys[instructions[i].programIdIndex];
|
|
254
|
-
if (programId !== COMPUTE_BUDGET_PROGRAM)
|
|
255
|
-
break;
|
|
256
|
-
count++;
|
|
257
|
-
}
|
|
258
|
-
return count;
|
|
229
|
+
return allowed;
|
|
259
230
|
}
|
|
260
231
|
// CRITICAL: no instructions from disallowed programs
|
|
261
232
|
function validateAllowedInstructions(transaction, actionPath, allowedPrograms, violationCode, label) {
|
|
@@ -299,9 +270,6 @@ function buildClassifiers(intentProgram, leadClassifier) {
|
|
|
299
270
|
(ix) => isIntentInstruction(ix, intentProgram),
|
|
300
271
|
];
|
|
301
272
|
}
|
|
302
|
-
function isMemoOrComputeBudget(ix) {
|
|
303
|
-
return isMemo(ix) || isComputeBudget(ix);
|
|
304
|
-
}
|
|
305
273
|
// CRITICAL: every instruction from an allowed program must be recognized by at least one classifier.
|
|
306
274
|
function validateNoUnclassifiedInstructions(resolved, actionPath, classifiers) {
|
|
307
275
|
const violations = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"solana-transaction.js","sourceRoot":"","sources":["../../../src/validations/solana-transaction.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"solana-transaction.js","sourceRoot":"","sources":["../../../src/validations/solana-transaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@ import { ViolationCode, } from "../types/index.js";
|
|
|
3
3
|
import { resolveChainId } from "../whitelists/subscription-to-chain-id.js";
|
|
4
4
|
import { addressEquals, getAddressIdentityKey } from "../helpers/address.js";
|
|
5
5
|
import { serializeDlnHook } from "../helpers/evm-dln-hook-pack.js";
|
|
6
|
-
import { hexEquals
|
|
7
|
-
import {
|
|
6
|
+
import { hexEquals } from "../helpers/hex.js";
|
|
7
|
+
import { getDlnMetadataGroupingKey } from "./dln-metadata.js";
|
|
8
8
|
import { getResponseExternalCallHash, ResponseExternalCallHashKind } from "./external-call.js";
|
|
9
9
|
import { hasAnyExecutionAddress } from "../helpers/quote-mode.js";
|
|
10
10
|
import { interactionsEqual, interactionsKey } from "../helpers/interactions.js";
|
|
@@ -25,9 +25,9 @@ export function getRequestTradeIndex(ctx, intentTradeIndex) {
|
|
|
25
25
|
// partner costs, hooks, or metadata checks.
|
|
26
26
|
//
|
|
27
27
|
// NOTE: the API may further split a group into multiple intents based on
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
28
|
+
// dlnHook, dlnMetadata, and pre/post interactions. One group can therefore
|
|
29
|
+
// correspond to one or more response intents. Bundle-level executionMetadata
|
|
30
|
+
// does not distinguish these subsets.
|
|
31
31
|
export function groupTrades(trades, quoteMode, consolidationMode = false, tradePairs, sweptTradeIndices) {
|
|
32
32
|
const map = new Map();
|
|
33
33
|
const violations = [];
|
|
@@ -235,8 +235,7 @@ function validateIntentDifferentiation(contexts) {
|
|
|
235
235
|
function intentDifferentiationKey(intent, realChainId) {
|
|
236
236
|
const parts = [
|
|
237
237
|
intent.externalCallHash ?? "",
|
|
238
|
-
|
|
239
|
-
intent.executionMetadata ?? "",
|
|
238
|
+
getDlnMetadataGroupingKey(intent.dlnMetadata),
|
|
240
239
|
interactionsKey(realChainId, intent.preInteractions),
|
|
241
240
|
interactionsKey(realChainId, intent.postInteractions),
|
|
242
241
|
];
|
|
@@ -285,7 +284,7 @@ function selectIntentTrades(group, intent) {
|
|
|
285
284
|
function tradeDifferentiationKey(trade, responseTrade, realChainId) {
|
|
286
285
|
const parts = [
|
|
287
286
|
computeTradeExternalCallHash(trade, responseTrade) ?? "",
|
|
288
|
-
|
|
287
|
+
getDlnMetadataGroupingKey(trade.dlnMetadata),
|
|
289
288
|
interactionsKey(realChainId, trade.preInteractions),
|
|
290
289
|
interactionsKey(realChainId, trade.postInteractions),
|
|
291
290
|
];
|
|
@@ -293,8 +292,7 @@ function tradeDifferentiationKey(trade, responseTrade, realChainId) {
|
|
|
293
292
|
}
|
|
294
293
|
function tradeMatchesIntent(trade, responseTrade, intent, realChainId) {
|
|
295
294
|
return hexEquals(intent.externalCallHash, computeTradeExternalCallHash(trade, responseTrade))
|
|
296
|
-
&&
|
|
297
|
-
&& isEmptyHex(intent.executionMetadata)
|
|
295
|
+
&& getDlnMetadataGroupingKey(intent.dlnMetadata) === getDlnMetadataGroupingKey(trade.dlnMetadata)
|
|
298
296
|
&& interactionsEqual(realChainId, intent.preInteractions, trade.preInteractions)
|
|
299
297
|
&& interactionsEqual(realChainId, intent.postInteractions, trade.postInteractions);
|
|
300
298
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trade-grouping.js","sourceRoot":"","sources":["../../../src/validations/trade-grouping.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trade-grouping.js","sourceRoot":"","sources":["../../../src/validations/trade-grouping.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { ViolationCode } from "../types/index.js";
|
|
2
|
+
// Binds each response trade to the explicitly named request entry, never to a
|
|
3
|
+
// similar route. This validates indices only: trade, intent and budget validators
|
|
4
|
+
// must still check the contents using these same pairs.
|
|
5
|
+
export function matchTradesByRequestIndex(requestTrades, responseTrades, consolidationMode, sweptTradeIndices) {
|
|
6
|
+
const result = { pairs: [], violations: [] };
|
|
7
|
+
const seen = new Set();
|
|
8
|
+
let previousIndex = -1;
|
|
9
|
+
for (let i = 0; i < responseTrades.length; i++) {
|
|
10
|
+
const tradeIndex = responseTrades[i].tradeIndex;
|
|
11
|
+
const violation = validateTradeIndex(tradeIndex, requestTrades.length, seen, sweptTradeIndices, i);
|
|
12
|
+
if (violation !== undefined) {
|
|
13
|
+
result.violations.push(violation);
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
// The check above guarantees a valid number, but does not narrow its TypeScript type.
|
|
17
|
+
const requestIndex = tradeIndex;
|
|
18
|
+
result.violations.push(...validateTradeIndexOrder(requestIndex, previousIndex, i));
|
|
19
|
+
seen.add(requestIndex);
|
|
20
|
+
previousIndex = requestIndex;
|
|
21
|
+
result.pairs.push({
|
|
22
|
+
requestIndex,
|
|
23
|
+
responseIndex: i,
|
|
24
|
+
requestTrade: requestTrades[requestIndex],
|
|
25
|
+
responseTrade: responseTrades[i],
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (!consolidationMode) {
|
|
29
|
+
result.violations.push(...validateTradeIndexCoverage(requestTrades.length, sweptTradeIndices, result.pairs));
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
// CRITICAL: an explicit index must name one non-swept request entry exactly once.
|
|
34
|
+
// The range guard is also required for direct callers that bypass schema parsing.
|
|
35
|
+
function validateTradeIndex(tradeIndex, tradeCount, seen, sweptTradeIndices, responseIndex) {
|
|
36
|
+
const path = `response.trades[${responseIndex}].tradeIndex`;
|
|
37
|
+
if (tradeIndex === undefined) {
|
|
38
|
+
return {
|
|
39
|
+
code: ViolationCode.TradeIndexMissing,
|
|
40
|
+
message: "tradeIndex must be present on every trade in an indexed response",
|
|
41
|
+
path,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (!Number.isSafeInteger(tradeIndex) || tradeIndex < 0 || tradeIndex >= tradeCount) {
|
|
45
|
+
return {
|
|
46
|
+
code: ViolationCode.TradeIndexInvalid,
|
|
47
|
+
message: "tradeIndex must identify an existing request trade",
|
|
48
|
+
path,
|
|
49
|
+
actual: tradeIndex,
|
|
50
|
+
details: { min: 0, maxExclusive: tradeCount },
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
return validateTradeIndexReuse(tradeIndex, seen, sweptTradeIndices, path);
|
|
54
|
+
}
|
|
55
|
+
// CRITICAL: one request input cannot authorize two exchanges or an exchange and a sweep.
|
|
56
|
+
function validateTradeIndexReuse(tradeIndex, seen, sweptTradeIndices, path) {
|
|
57
|
+
if (seen.has(tradeIndex)) {
|
|
58
|
+
return {
|
|
59
|
+
code: ViolationCode.TradeIndexDuplicate,
|
|
60
|
+
message: "a request trade must not appear more than once in response.trades",
|
|
61
|
+
path,
|
|
62
|
+
actual: tradeIndex,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (sweptTradeIndices.has(tradeIndex)) {
|
|
66
|
+
return {
|
|
67
|
+
code: ViolationCode.TradeIndexSwept,
|
|
68
|
+
message: "a request trade must not appear both as an exchange and a sweep",
|
|
69
|
+
path,
|
|
70
|
+
actual: tradeIndex,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
return undefined;
|
|
74
|
+
}
|
|
75
|
+
// HIGH: preserve request order because consolidation checks treat the last
|
|
76
|
+
// response trade as the final balancing trade. Its request index also defines
|
|
77
|
+
// the cutoff for permitted sweeps. Allowing reordering requires updating those
|
|
78
|
+
// checks first; explicit `tradeIndex` values alone do not remove this dependency.
|
|
79
|
+
function validateTradeIndexOrder(tradeIndex, previousIndex, responseIndex) {
|
|
80
|
+
if (tradeIndex > previousIndex)
|
|
81
|
+
return [];
|
|
82
|
+
return [{
|
|
83
|
+
code: ViolationCode.TradeIndexOrderMismatch,
|
|
84
|
+
message: "response trade indices must preserve the original request order",
|
|
85
|
+
path: `response.trades[${responseIndex}].tradeIndex`,
|
|
86
|
+
actual: tradeIndex,
|
|
87
|
+
details: { previousTradeIndex: previousIndex },
|
|
88
|
+
}];
|
|
89
|
+
}
|
|
90
|
+
// CRITICAL: outside consolidation, every non-swept request trade must be present.
|
|
91
|
+
// Equal array lengths alone cannot detect a duplicated or substituted index.
|
|
92
|
+
function validateTradeIndexCoverage(requestTradeCount, sweptTradeIndices, pairs) {
|
|
93
|
+
const expected = Array.from({ length: requestTradeCount }, (_, index) => index)
|
|
94
|
+
.filter(index => !sweptTradeIndices.has(index));
|
|
95
|
+
const actual = pairs.map(pair => pair.requestIndex);
|
|
96
|
+
if (expected.length === actual.length
|
|
97
|
+
&& expected.every((expectedIndex, i) => expectedIndex === actual[i]))
|
|
98
|
+
return [];
|
|
99
|
+
return [{
|
|
100
|
+
code: ViolationCode.TradeIndexCoverageMismatch,
|
|
101
|
+
message: "response trades must cover every non-swept request trade in order outside consolidation",
|
|
102
|
+
path: "response.trades",
|
|
103
|
+
expected: { tradeIndices: expected },
|
|
104
|
+
actual: { tradeIndices: actual },
|
|
105
|
+
}];
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=trade-index-matching.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trade-index-matching.js","sourceRoot":"","sources":["../../../src/validations/trade-index-matching.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
import { ViolationCode } from "../types/index.js";
|
|
2
2
|
import { addressEquals } from "../helpers/address.js";
|
|
3
3
|
import { resolveChainId } from "../whitelists/subscription-to-chain-id.js";
|
|
4
|
+
import { matchTradesByRequestIndex } from "./trade-index-matching.js";
|
|
4
5
|
// Builds the request↔response trade mapping used by validators that need a
|
|
5
6
|
// concrete request trade for every response trade.
|
|
6
7
|
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
8
|
+
// An explicit tradeIndex selects the original request trade, including after
|
|
9
|
+
// consolidation skips. Its contents are still checked against that request trade.
|
|
10
|
+
// Legacy matching is retained only when ALL indices are absent: positional for
|
|
11
|
+
// non-consolidation, greedy and order-preserving for consolidation. Removing all
|
|
12
|
+
// indices therefore retains the legacy ambiguity; partial/invalid indices never
|
|
13
|
+
// select this compatibility path. Consolidation sweeps require explicit indices.
|
|
12
14
|
export function matchTrades(requestTrades, responseTrades, quoteMode, consolidationMode, sweptTradeIndices) {
|
|
15
|
+
if (responseTrades.some(trade => trade.tradeIndex !== undefined)) {
|
|
16
|
+
return matchTradesByRequestIndex(requestTrades, responseTrades, consolidationMode, sweptTradeIndices);
|
|
17
|
+
}
|
|
13
18
|
if (!consolidationMode) {
|
|
14
19
|
return {
|
|
15
20
|
pairs: pairTradesByIndex(requestTrades, responseTrades, sweptTradeIndices),
|