v0.2.1 - Nip-40 implemented
This commit is contained in:
75
README.md
75
README.md
@@ -14,76 +14,9 @@ Do NOT modify the formatting, add emojis, or change the text. Keep the simple fo
|
||||
- [x] NIP-13: Proof of Work
|
||||
- [x] NIP-15: End of Stored Events Notice
|
||||
- [x] NIP-20: Command Results
|
||||
- [ ] NIP-22: Event `created_at` Limits
|
||||
- [ ] NIP-25: Reactions
|
||||
- [ ] NIP-26: Delegated Event Signing
|
||||
- [ ] NIP-28: Public Chat
|
||||
- [ ] NIP-33: Parameterized Replaceable Events
|
||||
- [ ] NIP-40: Expiration Timestamp
|
||||
- [x] NIP-33: Parameterized Replaceable Events
|
||||
- [x] NIP-40: Expiration Timestamp
|
||||
- [ ] NIP-42: Authentication of clients to relays
|
||||
- [ ] NIP-45: Counting results. [experimental](#count)
|
||||
- [ ] NIP-50: Keywords filter. [experimental](#search)
|
||||
- [ ] NIP-45: Counting results.
|
||||
- [ ] NIP-50: Keywords filter.
|
||||
- [ ] NIP-70: Protected Events
|
||||
|
||||
## NIP-13: Proof of Work Configuration
|
||||
|
||||
The relay supports NIP-13 Proof of Work validation with configurable settings. PoW validation helps prevent spam and ensures computational commitment from event publishers.
|
||||
|
||||
### Environment Variables
|
||||
|
||||
Configure PoW validation using these environment variables:
|
||||
|
||||
- `RELAY_POW_ENABLED` - Enable/disable PoW validation (default: `1`)
|
||||
- `1`, `true`, or `yes` to enable
|
||||
- `0`, `false`, or `no` to disable
|
||||
|
||||
- `RELAY_MIN_POW_DIFFICULTY` - Minimum required difficulty (default: `0`)
|
||||
- Range: `0-64` (reasonable bounds)
|
||||
- `0` = no minimum requirement (events without PoW are accepted)
|
||||
- Higher values require more computational work
|
||||
|
||||
- `RELAY_POW_MODE` - Validation mode (default: `basic`)
|
||||
- `basic` - Basic PoW validation
|
||||
- `full` - Full validation with nonce tag requirements
|
||||
- `strict` - Strict anti-spam mode with committed target validation
|
||||
- `disabled` - Disable PoW validation entirely
|
||||
|
||||
### Examples
|
||||
|
||||
```bash
|
||||
# Basic setup - accept events with or without PoW
|
||||
export RELAY_POW_ENABLED=1
|
||||
export RELAY_MIN_POW_DIFFICULTY=0
|
||||
export RELAY_POW_MODE=basic
|
||||
|
||||
# Anti-spam setup - require minimum difficulty 16
|
||||
export RELAY_POW_ENABLED=1
|
||||
export RELAY_MIN_POW_DIFFICULTY=16
|
||||
export RELAY_POW_MODE=strict
|
||||
|
||||
# Disable PoW validation completely
|
||||
export RELAY_POW_ENABLED=0
|
||||
```
|
||||
|
||||
### Behavior
|
||||
|
||||
- **min_difficulty=0**: Events without PoW are accepted; events with PoW are validated
|
||||
- **min_difficulty>0**: All events must have valid PoW meeting minimum difficulty
|
||||
- **strict mode**: Additional validation prevents difficulty commitment gaming
|
||||
- **NIP-11 integration**: PoW configuration is advertised via relay information document
|
||||
|
||||
### Testing
|
||||
|
||||
Run the comprehensive PoW test suite:
|
||||
|
||||
```bash
|
||||
./tests/13_nip_test.sh
|
||||
```
|
||||
|
||||
The test suite validates:
|
||||
- NIP-11 PoW support advertisement
|
||||
- Event acceptance without PoW (when min_difficulty=0)
|
||||
- Event validation with valid PoW
|
||||
- Configuration via environment variables
|
||||
- NIP-13 reference event validation
|
||||
|
||||
|
||||
Reference in New Issue
Block a user