Skip to content

Commit

Permalink
Adding metrics events for blockaid
Browse files Browse the repository at this point in the history
  • Loading branch information
jpuri committed Jul 26, 2023
1 parent 98279b6 commit e0ebae6
Show file tree
Hide file tree
Showing 3 changed files with 46 additions and 0 deletions.
21 changes: 21 additions & 0 deletions app/scripts/controllers/transactions/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@ import {
isEIP1559Transaction,
} from '../../../../shared/modules/transaction.utils';
import { ORIGIN_METAMASK } from '../../../../shared/constants/app';
///: BEGIN:ONLY_INCLUDE_IN(blockaid)
import {
BlockaidReason,
BlockaidResultType,
} from '../../../../shared/constants/security-provider';
///: END:ONLY_INCLUDE_IN
import {
calcGasTotal,
getSwapsTokensReceivedFromTxMeta,
Expand Down Expand Up @@ -338,6 +344,7 @@ export default class TransactionController extends EventEmitter {
* @param {boolean} opts.swaps.hasApproveTx - Whether this transaction required an approval transaction
* @param {boolean} opts.swaps.meta - Additional metadata to store for the transaction
* @param {TransactionType} opts.type - Type of transaction to add, such as 'cancel' or 'swap'
* @param {TransactionType} opts.securityAlertResponse - Response from security provider
* @returns {Promise<{transactionMeta: TransactionMeta, result: Promise<string>}>} An object containing the transaction metadata, and a promise that resolves to the transaction hash after being submitted to the network
*/
async addTransaction(
Expand All @@ -350,6 +357,7 @@ export default class TransactionController extends EventEmitter {
sendFlowHistory,
swaps: { hasApproveTx, meta } = {},
type,
securityAlertResponse,
} = {},
) {
log.debug(`MetaMaskController addTransaction ${JSON.stringify(txParams)}`);
Expand All @@ -361,6 +369,7 @@ export default class TransactionController extends EventEmitter {
sendFlowHistory,
swaps: { hasApproveTx, meta },
type,
securityAlertResponse,
});

return {
Expand Down Expand Up @@ -1549,6 +1558,9 @@ export default class TransactionController extends EventEmitter {
txParams: normalizedTxParams,
origin,
sendFlowHistory,
///: BEGIN:ONLY_INCLUDE_IN(blockaid)
securityAlertResponse: options?.securityAlertResponse,
///: END:ONLY_INCLUDE_IN
});

// Add actionId to txMeta to check if same actionId is seen again
Expand Down Expand Up @@ -2272,6 +2284,9 @@ export default class TransactionController extends EventEmitter {
finalApprovalAmount,
contractMethodName,
securityProviderResponse,
///: BEGIN:ONLY_INCLUDE_IN(blockaid)
securityAlertResponse,
///: END:ONLY_INCLUDE_IN
} = txMeta;

const source = referrer === ORIGIN_METAMASK ? 'user' : 'dapp';
Expand Down Expand Up @@ -2448,6 +2463,12 @@ export default class TransactionController extends EventEmitter {
transaction_type: transactionType,
transaction_speed_up: type === TransactionType.retry,
ui_customizations: uiCustomizations,
///: BEGIN:ONLY_INCLUDE_IN(blockaid)
security_alert_response:
securityAlertResponse?.result_type ?? BlockaidResultType.NotApplicable,
security_alert_reason:
securityAlertResponse?.reason ?? BlockaidReason.notApplicable,
///: END:ONLY_INCLUDE_IN
};

if (transactionContractMethod === contractMethodNames.APPROVE) {
Expand Down
22 changes: 22 additions & 0 deletions app/scripts/controllers/transactions/index.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -2163,6 +2163,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: null,
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
default_gas: '0.000031501',
Expand Down Expand Up @@ -2250,6 +2252,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: null,
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
default_gas: '0.000031501',
Expand Down Expand Up @@ -2349,6 +2353,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: null,
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
default_gas: '0.000031501',
Expand Down Expand Up @@ -2438,6 +2444,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: null,
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
default_gas: '0.000031501',
Expand Down Expand Up @@ -2505,6 +2513,10 @@ describe('Transaction Controller', function () {
securityProviderResponse: {
flagAsDangerous: 0,
},
securityAlertResponse: {
result_type: 'Benign',
reason: 'none',
},
};

const expectedPayload = {
Expand All @@ -2529,6 +2541,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: null,
security_alert_response: 'Benign',
security_alert_reason: 'none',
},
sensitiveProperties: {
gas_price: '2',
Expand Down Expand Up @@ -2601,6 +2615,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: null,
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
baz: 3.0,
Expand Down Expand Up @@ -2675,6 +2691,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: ['flagged_as_malicious'],
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
baz: 3.0,
Expand Down Expand Up @@ -2749,6 +2767,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: ['flagged_as_safety_unknown'],
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
baz: 3.0,
Expand Down Expand Up @@ -2831,6 +2851,8 @@ describe('Transaction Controller', function () {
device_model: 'N/A',
transaction_speed_up: false,
ui_customizations: null,
security_alert_reason: 'not_applicable',
security_alert_response: 'not_applicable',
},
sensitiveProperties: {
baz: 3.0,
Expand Down
3 changes: 3 additions & 0 deletions shared/constants/security-provider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,16 @@ export enum BlockaidReason {
/** Malicious trade that results in the victim being rained */
unfairTrade = 'unfair_trade',

notApplicable = 'not_applicable',

other = 'other',
}

export enum BlockaidResultType {
Malicious = 'Malicious',
Warning = 'Warning',
Benign = 'Benign',
NotApplicable = 'not_applicable',
}

/**
Expand Down

0 comments on commit e0ebae6

Please sign in to comment.