@@ -32,7 +32,22 @@ respondents agree to them already), others are specific to chains or even to
3232subsets of wallets and dapps on a given chain. This requires scope objects in
3333CAIP-25 requests to negotation semantic anchors and/or network routing
3434** before** authorization can occur in the confidence that both parties agree to
35- the syntax and semantics of a given chain or notification.
35+ the syntax and semantics of a given method or notification, which may only be
36+ available on certain RPC endpoints.
37+
38+ The concept of a custom RPC endpoint or definition presumes the existence of
39+ "default" or universal endpoints and definitions, which can be hard to anchor in
40+ explicit specifications unless a namespace profile of this CAIP has been
41+ published. (This may be unnecessary in the case of younger namespaces without
42+ customization built in at the per-chain or per-dapp layer). An empty array of
43+ ` rpcEndpoints ` or ` rpcDocuments ` sent in either direction should be interpreted
44+ differently than the absence of the array. Namely, either array being present
45+ but empty in a request signals that a caller is requesting that custom endpoints
46+ or definitions NOT be considered in CAIP-25 authorizations. Present but empty
47+ arrays in a response confirms this behavior, while its absence can be taken to
48+ mean the wallet either does not support custom endpoints/definitions or the user
49+ has opted out of that degree of trust, which for privacy/fingerprinting reasons,
50+ should not be handled by distinct codepaths (See Privacy Considerations).
3651
3752## Specification
3853
@@ -164,10 +179,12 @@ Possible error messages (to be discussed with WG):
164179- rpcDocuments not conformant syntactically (not openRPC, not served as mime type JSON, etc)
165180
166181Are these error messages required at protocol level or are they implementation-specific?
167- - rpcDocuments rejected by user input
182+ - ~~rpcDocuments rejected by user input OR wallet does not support custom RPC documents~~
183+ - ^ no response in either case
168184- rpcDocuments rejected by policy/in principle
169185- rpcDocuments unreachable/404
170- - rpcEndpoints rejected by user input
186+ - ~~rpcEndpoints rejected by user input OR wallet does not support custom RPC documents~~
187+ - ^ no response in either case
171188- rpcEndpoints rejected by policy/in principle
172189- rpcEndpoints unreachable/404
173190- rpcEndpoints URL malformed
@@ -212,6 +229,16 @@ Are these error messages required at protocol level or are they implementation-s
212229
213230## Privacy Considerations
214231
232+ The trust model of custom RPC endpoints and/or definition documents is complex
233+ and reputation/discovery systems are still emerging on a per-chain basis in many
234+ ecosystems. For this reason, iterations of CAIP-25 should be considered a
235+ delicate negotiation best done progressively to avoid malicious dapps partially
236+ deanonymizing wallets by profiling their support for custom RPCs (i.e.
237+ overasking). For this reason, as with the initial CAIP-25 exchange, discovery
238+ requests rejected due to user input, due to security policy, and due to
239+ non-support at the wallet software level should not be distinguished as the RPC
240+ level.
241+
215242##### TODO
216243
217244## Changelog
0 commit comments