# Safe Network Node (sn_node)
## Overview
The `sn_node` directory provides the `safenode` binary, which is the node implementation for the Safe Network. This directory contains the core logic for node operations, including API definitions, error handling, event management, and data validation.
## Table of Contents
- [Overview](#overview)
- [Installation](#installation)
- [Usage](#usage)
- [Directory Structure](#directory-structure)
- [Testing](#testing)
- [Contributing](#contributing)
- [Conventional Commits](#conventional-commits)
- [License](#license)
## Installation
Follow the main project's installation guide to set up the `safenode` binary.
## Usage
To run the `safenode` binary, follow the instructions in the main project's usage guide.
## Directory Structure
- `src/`: Source code files
- `api.rs`: API definitions
- `error.rs`: Error types and handling
- `event.rs`: Event-related logic
- `get_validation.rs`: Validation for GET requests
- `put_validation.rs`: Validation for PUT requests
- `replication.rs`: Data replication logic
- `spends.rs`: Logic related to spending tokens or resources
- `tests/`: Test files
- `common/mod.rs`: Common utilities for tests
- `data_with_churn.rs`: Tests related to data with churn
- `sequential_transfers.rs`: Tests for sequential data transfers
- `storage_payments.rs`: Tests related to storage payments
- `verify_data_location.rs`: Tests for verifying data locations
## Testing
To run tests, navigate to the `sn_node` directory and execute:
```bash
cargo test
```
## Contributing
Please feel free to clone and modify this project. Pull requests are welcome.
## Conventional Commits
We follow the [Conventional Commits](https://www.conventionalcommits.org/) specification for all commits. Make sure your commit messages adhere to this standard.
## License
This Safe Network repository is licensed under the General Public License (GPL), version 3 ([LICENSE](LICENSE) http://www.gnu.org/licenses/gpl-3.0.en.html).
---
Feel free to modify or expand upon this README as needed. Would you like to add or change anything else?