Recommended: JavaScript SDK with React Hooks
For new React apps, we recommend the JavaScript SDK with React Hooks (
@dynamic-labs-sdk/react-hooks) instead of the legacy React SDK documented here. The JS SDK comes with many benefits such as a much smaller bundle size and other optimizations. Use the React quickstart (JavaScript SDK) to get started.What the user sees
When verification returns a screening block, the SDK disconnects the wallet and renders its access-denied view inside the widget:- Title: “This address seems corrupted.”
- Body: “This wallet has been correlated to illicit activity and cannot access this site.”
- Action: “Try another method”, which returns the user to the wallet list.
Keep any copy you write here neutral and final. The user usually cannot change a screening result, so offer a different wallet rather than a retry that will fail again.
Changing the copy
Override thedyn_no_access.chainalysis keys through the locale prop on DynamicContextProvider:
chainalysis key name is historical. These keys drive the access-denied view for every screening provider. For the full locale object and how to add other languages, see Adapt Copy With Translations.
Reacting in your own code
To act on a block outside the widget (clear app state, log it, or route the user elsewhere), check the reason passed to onAuthFailure for aChainalysisError:
ChainalysisError is the error class for every screening block, whichever provider produced the match. Its walletPublicKey holds the blocked address.
Server-side, subscribe to the wallet.sanctions.blocked webhook event to record blocks. The webhook fires whether or not the user is still on the page.
See also
- Address Screening — what screening checks, and bringing your own vendor key
- Access Lists — blocking or allowing specific addresses yourself