Satoshi Qazi Muhammed 866a44380a Depend on the fixed crypto stack, and let Lock Threads run again
@pezkuwi/util, util-crypto and x-fetch now require ^14.0.26, which brings
@pezkuwi/wasm-crypto 7.5.20 in place of 7.5.17. The lockfile moves with it.

axios moves to ^1.20.0 in resolutions, with the lockfile entries that the
Dependabot PR for it (#11) left out; without them `yarn install --immutable`
refused to run and every check on that PR failed.

Lock Threads has failed on every scheduled run: lock-threads v4 rejects a
github-token longer than 100 characters, and GitHub's tokens now are. v6.0.2
fixes the validation. Since v5 the action also locks discussions by default;
process-only keeps it to issues and pull requests, as before and as the job's
permissions allow.
2026-10-08 21:50:37 +04:00
2026-01-09 04:11:37 +03:00
2022-01-13 10:07:07 +02:00
2021-01-06 13:53:58 +01:00
2020-09-21 14:59:46 +02:00
2021-06-08 18:04:57 +03:00
2025-01-01 23:49:09 +01:00
2025-03-15 13:23:26 +00:00
2026-01-09 04:11:37 +03:00
2026-01-05 21:00:07 +00:00
2023-12-28 14:05:16 +08:00
2023-05-18 11:21:13 +03:00
2023-05-18 11:21:13 +03:00

@pezkuwi/phishing

A curated list of potentially less-than-honest sites inclusive of a simple JS utility function to check any host against this list.

How the lists are kept

These lists are Pezkuwi's copy of polkadot-js/phishing: they follow upstream, with a few entries of our own.

  • Daily sync. sync-upstream.yml takes upstream's lists every day, lays pezkuwi/overlay.json over them, and commits the result to master. On a day out of bounds it writes nothing and opens an issue instead: more than 25 sites unblocked or 5000 added, more than 10 scam addresses dropped, one of our own domains blocked, or one of our entries lost (scripts/lists.mjs).
  • Our entries. overlay.json holds the sites we block that upstream does not (deny), upstream entries we deliberately do not block (undeny), and our own domains, which no entry may ever block (protect). Each entry records why and since when. Change our entries there, not in all.json, which every sync rewrites from upstream.
  • Publishing. phishing.pezkuwichain.io pulls master every hour and checks the lists again before it serves them (pezkuwi/host/).
  • Checks. lists.yml runs the rules' tests and scripts/checkLists.mjs on every change. Neither needs the build toolchain.

Additions

Report a new site or scam address to polkadot-js/phishing, and the daily sync brings it here. A site that targets Pezkuwi specifically, and that upstream would not list, goes in the deny section of pezkuwi/overlay.json, with its reason and date.

Availability

Changes reach phishing.pezkuwichain.io/all.json and phishing.pezkuwichain.io/address.json within the hour after they land on master. These can be consumed via @pezkuwi/phishing and other tools capable of parsing JSON.

Notable users

The following wallets integrate either address or site blocking from these lists:

Integration

Since the lists are published as JSON, integration for any non-JS wallets (only a JS library that is provided) should be simple - retrieve the applicable list, parse the JSON, and do the required checks either on the host or address as per the requirements. The Javascript library does have some features that may be worth thinking about for other integrations -

  • instead of retrieving the list each time a request is made, a local copy is cached for 45 minutes and then re-retrieved when the timer expires (as a request is made)
  • for address checks, the check is done on the decoded ss58 address to ensure that network-jumps with the same keys are avoided (so addresses do not have to be re-added for other networks, a single entry will cover all)

Contributing

These lists are intended to be maintained with active input from the community, so contributions are welcome, either via a pull request (edit above as described in additions) or by logging an issue.

S
Description
No description provided
Readme Apache-2.0
72 MiB
1 Watchers 0 Forks
Languages
JavaScript 50.4%
TypeScript 23.5%
HTML 13.2%
Shell 12.9%