You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/ipips/ipip-0383.md
+34-36Lines changed: 34 additions & 36 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,7 +33,6 @@ The first step in a larger strategy to enable decentralized content moderation
33
33
in IPFS setups is to agree in a denylist format that different implementations
34
34
can rely on and share.
35
35
36
-
37
36
## Detailed design
38
37
39
38
See :cite[compact-denylist-format].
@@ -57,46 +56,46 @@ following aspects, which are a must for such a system:
57
56
The proposed design is part of a holistic approach to content-moderation for IPFS for which we have the following detailed wishlist of items ultimately related to the denylist format:
58
57
59
58
- Regarding the type of blocking:
60
-
- Ability to block content from being retrieved, stored or served by multihash
61
-
- Ability to block content that is referenced with an IPFS-path from a blocked multihash or traversing a blocked multihash.
62
-
- Ability to block by regexp-matching an IPFS path
63
-
- Ability to block based on content-type (i.e. only store/serve plain-text,and pictures)
64
-
- Ability to block based on CID codec (only allow Codec X)
65
-
- Ability to block based on multihash function (”no identity multihashes”)
66
-
- Ability to block IPNS names
59
+
- Ability to block content from being retrieved, stored or served by multihash
60
+
- Ability to block content that is referenced with an IPFS-path from a blocked multihash or traversing a blocked multihash.
61
+
- Ability to block by regexp-matching an IPFS path
62
+
- Ability to block based on content-type (i.e. only store/serve plain-text,and pictures)
63
+
- Ability to block based on CID codec (only allow Codec X)
64
+
- Ability to block based on multihash function (”no identity multihashes”)
65
+
- Ability to block IPNS names
67
66
68
67
- Regarding the lists:
69
-
- Compact format, compression friendly
70
-
- Line-based so that updates can be watched
71
-
- Lists support CIDs
72
-
- Lists support CIDs+path (explicit)
73
-
- Lists support CIDs+path (implicit - everything referenced from CID)
74
-
- Lists support double-hashed multi-hashes
75
-
- Lists support double-hashed cid+path (current badbits format)
76
-
- Lists can be edited by hand on a text editor
77
-
- Lists are ipfs-replication-friendly (adding a new entry does not require downloading more than 1 IPFS block, to sync the list).
78
-
- Lists support comments
79
-
- Lists support gateway http error hints (i.e. type of block)
80
-
-`echo "/ipfs/cid" >> ~/.config/ipfs/denylists/custom` should work
81
-
- Lists have a header section with information about the list.
68
+
- Compact format, compression friendly
69
+
- Line-based so that updates can be watched
70
+
- Lists support CIDs
71
+
- Lists support CIDs+path (explicit)
72
+
- Lists support CIDs+path (implicit - everything referenced from CID)
73
+
- Lists support double-hashed multi-hashes
74
+
- Lists support double-hashed cid+path (current badbits format)
75
+
- Lists can be edited by hand on a text editor
76
+
- Lists are ipfs-replication-friendly (adding a new entry does not require downloading more than 1 IPFS block, to sync the list).
77
+
- Lists support comments
78
+
- Lists support gateway http error hints (i.e. type of block)
79
+
-`echo "/ipfs/cid" >> ~/.config/ipfs/denylists/custom` should work
80
+
- Lists have a header section with information about the list.
82
81
83
82
- Regarding the implementation:
84
-
- Multiple denylists should be supported
85
-
- Hot-reloading of list (no restart of IPFS required)
86
-
- List removal does not require restart
87
-
- Minimal introduction of latency
88
-
- Minimal memory footprint (i.e. only read minimum amount of data into memory)
89
-
- Clean denylist module entrypoints (easy integration in current ipfs stack layers)
90
-
- Portable architecture (to other IPFS implementations). i.e. good interfaces to switch from an embedded implementation to something that could run separately, or embedded in other languages (i.e. even servicing multiple ipfs daemons).
91
-
- Text-based API. `ipfs deny <cid>` and the like are nice-to-have but not a must to work with denylists.
92
-
- Security in mind: do not enable amplification attacks through lists (i.e. someone requesting a recursively blocked CID repeteadly over the gateway endpoint causes traversal of the whole CID-DAG.
83
+
- Multiple denylists should be supported
84
+
- Hot-reloading of list (no restart of IPFS required)
85
+
- List removal does not require restart
86
+
- Minimal introduction of latency
87
+
- Minimal memory footprint (i.e. only read minimum amount of data into memory)
88
+
- Clean denylist module entrypoints (easy integration in current ipfs stack layers)
89
+
- Portable architecture (to other IPFS implementations). i.e. good interfaces to switch from an embedded implementation to something that could run separately, or embedded in other languages (i.e. even servicing multiple ipfs daemons).
90
+
- Text-based API. `ipfs deny <cid>` and the like are nice-to-have but not a must to work with denylists.
91
+
- Security in mind: do not enable amplification attacks through lists (i.e. someone requesting a recursively blocked CID repeteadly over the gateway endpoint causes traversal of the whole CID-DAG.
93
92
94
93
- Regarding list distribution:
95
-
- Ability to subscribe to multiple lists, and fetch any updates as they happen
96
-
- Ability to publish own lists so that others can subscribe to them
97
-
- List-subscription configuration or file details remote lists that the user is subscribed to. Editable by hand.
98
-
- Ability to subscribe to list subscriptions.
99
-
- List subscriptions can carry context (i.e. publisher, email, type of blocking.
94
+
- Ability to subscribe to multiple lists, and fetch any updates as they happen
95
+
- Ability to publish own lists so that others can subscribe to them
96
+
- List-subscription configuration or file details remote lists that the user is subscribed to. Editable by hand.
97
+
- Ability to subscribe to list subscriptions.
98
+
- List subscriptions can carry context (i.e. publisher, email, type of blocking.
100
99
101
100
### User benefit
102
101
@@ -113,7 +112,6 @@ The old JSON-based Protocol Labs denylist format
113
112
[https://badbits.dwebops.pub/denylist.json](https://web.archive.org/web/20230610082307/https://badbits.dwebops.pub/denylist.json) can be easily converted into the
114
113
proposed compact format. This is shown at <https://badbits.dwebops.pub/badbits.deny>.
115
114
116
-
117
115
### Alternatives
118
116
119
117
This proposal is a follow up to a [previous proposal](https://github.com/ipfs/specs/pull/340), which has several shortcomings that make it not very practical when working at scale. Both list formats can co-exist though but ultimately it will be a matter of implementation support, and it would be better to settle on one thing.
0 commit comments