@paystage/preflight 0.1.0 → 0.1.1
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/evaluate.d.ts.map +1 -1
- package/dist/evaluate.js +6 -0
- package/dist/evaluate.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/known-drainers.d.ts +12 -0
- package/dist/known-drainers.d.ts.map +1 -0
- package/dist/known-drainers.js +91 -0
- package/dist/known-drainers.js.map +1 -0
- package/package.json +1 -1
package/dist/evaluate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate.d.ts","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,MAAM,EAEZ,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,QAAQ,GAAG,YAAY,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,cAAc,CAAC,EAAE,YAAY,CAAC;IAC9B,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAyHD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,cAAc,EAClB,MAAM,EAAE,MAAM,GACb,cAAc,CA2EhB"}
|
package/dist/evaluate.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { humanToAtomic, atomicToHuman, } from "@paystage/policy";
|
|
2
|
+
import { isKnownDrainer } from "./known-drainers.js";
|
|
2
3
|
function eq(a, b) {
|
|
3
4
|
return a.toLowerCase() === b.toLowerCase();
|
|
4
5
|
}
|
|
@@ -41,6 +42,11 @@ function evaluateAccept(accept, policy) {
|
|
|
41
42
|
reasons.push(`maxTimeoutSeconds ${accept.maxTimeoutSeconds} exceeds policy max_timeout_seconds ${policy.max_timeout_seconds}`);
|
|
42
43
|
return { accept, status: "do_not_pay", reasons };
|
|
43
44
|
}
|
|
45
|
+
// Rule 7a: known drainers — hard deny before unknown_payee review
|
|
46
|
+
if (isKnownDrainer(accept.payTo)) {
|
|
47
|
+
reasons.push("known drainer");
|
|
48
|
+
return { accept, status: "do_not_pay", reasons };
|
|
49
|
+
}
|
|
44
50
|
// Rule 7: payee allowlist
|
|
45
51
|
const payeeAllowed = policy.allowed_pay_to.some((p) => eq(p, accept.payTo));
|
|
46
52
|
if (!payeeAllowed) {
|
package/dist/evaluate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,aAAa,GAGd,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../src/evaluate.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export type { AcceptOption, PaymentResource, PaymentRequest, Decision, AcceptSta
|
|
|
3
3
|
export { normalizePaymentRequired } from "./normalize.js";
|
|
4
4
|
export { createServer, startServer } from "./server.js";
|
|
5
5
|
export type { PaymentRequired, PaymentAccept, EvaluationResult, EvaluationDecision, AcceptEvaluation, } from "./types.js";
|
|
6
|
+
export { isKnownDrainer, KNOWN_DRAINERS, SOURCES } from "./known-drainers.js";
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,YAAY,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,cAAc,GACf,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACxD,YAAY,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { evaluatePayment } from "./evaluate.js";
|
|
2
2
|
export { normalizePaymentRequired } from "./normalize.js";
|
|
3
3
|
export { createServer, startServer } from "./server.js";
|
|
4
|
+
export { isKnownDrainer, KNOWN_DRAINERS, SOURCES } from "./known-drainers.js";
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAUhD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQxD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface KnownDrainerSource {
|
|
2
|
+
name: string;
|
|
3
|
+
url: string;
|
|
4
|
+
retrieved: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const SOURCES: readonly KnownDrainerSource[];
|
|
7
|
+
/**
|
|
8
|
+
* Small curated subset. Do not add addresses without a public citation.
|
|
9
|
+
*/
|
|
10
|
+
export declare const KNOWN_DRAINERS: readonly string[];
|
|
11
|
+
export declare function isKnownDrainer(addr: string): boolean;
|
|
12
|
+
//# sourceMappingURL=known-drainers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-drainers.d.ts","sourceRoot":"","sources":["../src/known-drainers.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,eAAO,MAAM,OAAO,EAAE,SAAS,kBAAkB,EAoChD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EA0C1C,CAAC;AAMH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGpD"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// Curated hard-deny payees. Matching is checksum-agnostic (lowercase).
|
|
2
|
+
// See KNOWN_DRAINERS.md for curation policy and how to extend.
|
|
3
|
+
export const SOURCES = [
|
|
4
|
+
{
|
|
5
|
+
name: "MyEtherWallet ethereum-lists address darklist",
|
|
6
|
+
url: "https://github.com/MyEtherWallet/ethereum-lists/blob/master/src/addresses/addresses-darklist.json",
|
|
7
|
+
retrieved: "2026-11-02",
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
name: "MetaMask eth-phishing-detect (domain list; related ecosystem)",
|
|
11
|
+
url: "https://github.com/MetaMask/eth-phishing-detect",
|
|
12
|
+
retrieved: "2026-11-02",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: "Ethereum burn / non-receivable sentinel 0x…dEaD",
|
|
16
|
+
url: "https://etherscan.io/address/0x000000000000000000000000000000000000dead",
|
|
17
|
+
retrieved: "2026-11-02",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: "0xCERT IOC address feed (Base incidents incl. 0xCERT-2026-0230)",
|
|
21
|
+
url: "https://www.0xcert.com/iocs",
|
|
22
|
+
retrieved: "2026-11-02",
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: "Matcha Meta / CryptoTimes SwapNet approval-drain advisory",
|
|
26
|
+
url: "https://www.cryptotimes.io/2026/01/26/security-alert-matcha-meta-flags-swapnet-bug-as-over-16-8m-is-drained/",
|
|
27
|
+
retrieved: "2026-11-02",
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: "Chainabuse contract-exploit reports (Base EIP-7702 / USDC drains)",
|
|
31
|
+
url: "https://chainabuse.com/category/contract-exploit",
|
|
32
|
+
retrieved: "2026-11-02",
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: "Chainabuse address report (Base USDC theft Jul 2026)",
|
|
36
|
+
url: "https://chainabuse.com/address/0x2cff890f0378a11913b6129b2e97417a2c302680",
|
|
37
|
+
retrieved: "2026-11-02",
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Small curated subset. Do not add addresses without a public citation.
|
|
42
|
+
*/
|
|
43
|
+
export const KNOWN_DRAINERS = Object.freeze([
|
|
44
|
+
// Canonical burn address — non-receivable sink (demo + sentinel).
|
|
45
|
+
"0x000000000000000000000000000000000000dead",
|
|
46
|
+
// MEW darklist: "XRP phishing website (ripple.com.pt) this wallet collects funds…"
|
|
47
|
+
"0x09750ad360fdb7a2ee23669c4503c974d86d8694",
|
|
48
|
+
// MEW darklist: XRP phishing website (ripple.com.pt) via Coinswitch
|
|
49
|
+
"0xc915ec7f4cfd1c0a8aba090f03bfaab588aef9b4",
|
|
50
|
+
"0xecb6ffac05d8b4660b99b475b359fe454c77d153",
|
|
51
|
+
"0x7f85a82a2da50540412f6e526f1d00a0690a77b8",
|
|
52
|
+
// MEW darklist: "Scam address for various fake twitter accounts and fake giveaways"
|
|
53
|
+
"0x08389b19ad52f0d983609ab785b3a43a0e90355f",
|
|
54
|
+
// MEW darklist: Fake MEW / myelherwallel.com wallet
|
|
55
|
+
"0xd0cc2b24980cbcca47ef755da88b220a82291407",
|
|
56
|
+
// MEW darklist: Fake MyEtherWallet
|
|
57
|
+
"0xdafc2a2d4e070f863cfcb5887bc2516e05e18877",
|
|
58
|
+
// MEW darklist: Fake giveaway site asking to pay miner fees
|
|
59
|
+
"0x8444173280e5fdc0525494638123b014cffcc521",
|
|
60
|
+
// MEW darklist: Trust-trading scam
|
|
61
|
+
"0x5d82db63cf0c54d47006d416bdc7dab09ea2f3f1",
|
|
62
|
+
// --- Added 2026-11-02 NZDT ---
|
|
63
|
+
// 0xCERT-2026-0230 Base attacker EOA (GoPlus Security; PeckShield); Basescan phishing label
|
|
64
|
+
// https://www.0xcert.com/iocs
|
|
65
|
+
"0x0b5126e1bc27c0de77e02e97945760a674edb034",
|
|
66
|
+
// 0xCERT-2026-0230 Base exploit contract (GoPlus)
|
|
67
|
+
// https://www.0xcert.com/iocs
|
|
68
|
+
"0xcdfe91301356da873562ef513828a60dba1f569d",
|
|
69
|
+
// SwapNet router — Matcha Meta approval-drain advisory (arbitrary call); CryptoTimes 2026-01-26; Basescan Exploit
|
|
70
|
+
// https://www.cryptotimes.io/2026/01/26/security-alert-matcha-meta-flags-swapnet-bug-as-over-16-8m-is-drained/
|
|
71
|
+
"0x616000e384ef1c2b52f5f3a88d57a3b64f23757e",
|
|
72
|
+
// Chainabuse Base EIP-7702 drain 2026-10-08; Basescan phishing
|
|
73
|
+
// https://chainabuse.com/category/contract-exploit
|
|
74
|
+
"0xc9002a87e2e3efdcc26cfb0bc9034b919d38fb03",
|
|
75
|
+
// Chainabuse Base drain forwarder 2026-10-08
|
|
76
|
+
// https://chainabuse.com/category/contract-exploit
|
|
77
|
+
"0x101a548bcda171b5f00179aaca0ac32074a2b86a",
|
|
78
|
+
// Chainabuse Base USDC theft Jul 2026
|
|
79
|
+
// https://chainabuse.com/address/0x2cff890f0378a11913b6129b2e97417a2c302680
|
|
80
|
+
"0x678245175aae05ba3301a7812a38f1a2592a97a8",
|
|
81
|
+
// Chainabuse reported drain receiver (Bitget Swap2 incident report)
|
|
82
|
+
// https://chainabuse.com/category/contract-exploit
|
|
83
|
+
"0x9cc58d06f299f2a37050403eb9c90482f38ee3ad",
|
|
84
|
+
]);
|
|
85
|
+
const SET = new Set(KNOWN_DRAINERS.map((a) => a.toLowerCase()));
|
|
86
|
+
export function isKnownDrainer(addr) {
|
|
87
|
+
if (typeof addr !== "string" || addr.length === 0)
|
|
88
|
+
return false;
|
|
89
|
+
return SET.has(addr.toLowerCase());
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=known-drainers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"known-drainers.js","sourceRoot":"","sources":["../src/known-drainers.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,+DAA+D;AAQ/D,MAAM,CAAC,MAAM,OAAO,GAAkC;IACpD;QACE,IAAI,EAAE,+CAA+C;QACrD,GAAG,EAAE,mGAAmG;QACxG,SAAS,EAAE,YAAY;KACxB;IACD;QACE,IAAI,EAAE,+DAA+D;QACrE,GAAG,EAAE,iDAAiD;QACtD,SAAS,EAAE,YAAY;KACxB;IACD;QACE,IAAI,EAAE,iDAAiD;QACvD,GAAG,EAAE,yEAAyE;QAC9E,SAAS,EAAE,YAAY;KACxB;IACD;QACE,IAAI,EAAE,iEAAiE;QACvE,GAAG,EAAE,6BAA6B;QAClC,SAAS,EAAE,YAAY;KACxB;IACD;QACE,IAAI,EAAE,2DAA2D;QACjE,GAAG,EAAE,8GAA8G;QACnH,SAAS,EAAE,YAAY;KACxB;IACD;QACE,IAAI,EAAE,mEAAmE;QACzE,GAAG,EAAE,kDAAkD;QACvD,SAAS,EAAE,YAAY;KACxB;IACD;QACE,IAAI,EAAE,sDAAsD;QAC5D,GAAG,EAAE,2EAA2E;QAChF,SAAS,EAAE,YAAY;KACxB;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB,MAAM,CAAC,MAAM,CAAC;IAC7D,kEAAkE;IAClE,4CAA4C;IAC5C,mFAAmF;IACnF,4CAA4C;IAC5C,oEAAoE;IACpE,4CAA4C;IAC5C,4CAA4C;IAC5C,4CAA4C;IAC5C,oFAAoF;IACpF,4CAA4C;IAC5C,oDAAoD;IACpD,4CAA4C;IAC5C,mCAAmC;IACnC,4CAA4C;IAC5C,4DAA4D;IAC5D,4CAA4C;IAC5C,mCAAmC;IACnC,4CAA4C;IAE5C,gCAAgC;IAChC,4FAA4F;IAC5F,8BAA8B;IAC9B,4CAA4C;IAC5C,kDAAkD;IAClD,8BAA8B;IAC9B,4CAA4C;IAC5C,kHAAkH;IAClH,+GAA+G;IAC/G,4CAA4C;IAC5C,+DAA+D;IAC/D,mDAAmD;IACnD,4CAA4C;IAC5C,6CAA6C;IAC7C,mDAAmD;IACnD,4CAA4C;IAC5C,sCAAsC;IACtC,4EAA4E;IAC5E,4CAA4C;IAC5C,oEAAoE;IACpE,mDAAmD;IACnD,4CAA4C;CAC7C,CAAC,CAAC;AAEH,MAAM,GAAG,GAAwB,IAAI,GAAG,CACtC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAC3C,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAChE,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACrC,CAAC"}
|