https://github.com/interlay/bob-rust-challenge
https://github.com/interlay/bob-rust-challenge
Last synced: 9 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/interlay/bob-rust-challenge
- Owner: interlay
- Created: 2025-03-27T14:53:07.000Z (12 months ago)
- Default Branch: master
- Last Pushed: 2025-03-31T10:47:02.000Z (11 months ago)
- Last Synced: 2025-05-14T02:41:25.550Z (10 months ago)
- Language: Rust
- Size: 9.77 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# BOB Rust Challenge
A distributed bulletin board system implementation challenge in Rust.
## Overview
This challenge involves implementing a distributed bulletin board system with the following key features:
- Message posting with signatures
- Message retrieval by public key
- Network communication using TCP
- Concurrent request handling
- In-memory message storage
## Requirements
### 1. Cryptographic Signatures
Implement a signature scheme in `src/crypto.rs`:
- Implement message signing
- Support message verification with public keys
- Handle errors appropriately
- Include comprehensive tests
### 2. Message Storage
Implement a storage interface in `src/store.rs`:
- Store messages by public key
- Support concurrent access
- Handle errors appropriately
- Include comprehensive tests
### 3. Network Server
Implement a TCP server in `src/server.rs`:
- Handle multiple concurrent connections
- Process post and get requests
- Verify signatures for post operations
- Return appropriate responses
- Handle errors appropriately
- Include comprehensive tests
## Project Structure
```
src/
├── crypto.rs # Cryptographic signature implementation
├── error.rs # Error types
├── lib.rs # Library exports
├── server.rs # Network server implementation
└── store.rs # Message storage implementation
```
## Implementation Details
### Message Posting
- Messages must be signed with a private key
- Signatures must be verified using the corresponding public key
- Messages are stored and indexed by public key
### Message Retrieval
- Messages can be retrieved using a public key
- Returns all messages posted with that public key
- No signature verification needed for retrieval
### Network Protocol
- JSON-based request/response format
- TCP-based communication
- Support for concurrent connections
## Getting Started
1. Clone the repository
2. Implement the required functionality
3. Run the tests: `cargo test`
4. Run the server: `cargo run`
## Testing
The project includes comprehensive tests for each component:
- Cryptographic signature tests
- Storage interface tests
- Network server tests
- Integration tests
Run the tests with:
```bash
cargo test
```
## Evaluation Criteria
The implementation will be evaluated based on:
- Correctness of the cryptographic implementation
- Proper error handling
- Code organization and readability
- Test coverage
- Performance with concurrent connections
- Documentation quality