sbt compile- Build projectsbt test- Run unit testssbt it:test- Integration tests (requires Docker)sbt it2:test- Bootstrap/mainnet sync testssbt "testOnly *ClassName"- Run specific test classsbt ergoWallet/test- Test wallet module onlysbt scalafmtCheck- Check code formattingsbt assembly- Create fat JAR
- Scala: 2.12.20 (primary), scalafmt with 90 char limit
- Imports: Sorted, no wildcards, grouped by package
- Naming: PascalCase classes, camelCase methods, UPPER_SNAKE constants
- Error Handling: Use
Try,Either,ValidationResult- avoid exceptions - Logging: Extend
ScorexLoggingtrait for proper logging - File Limits: Max 800 lines per file, 160 chars per line
- Formatting: Follow .scalafmt.conf and scalastyle-config.xml rules
- ergo/: Main node application with Akka HTTP API
- ergo-core/: Core protocols (P2P, blocks, Autolykos PoW)
- ergo-wallet/: Transaction signing and wallet operations
- avldb/: Authenticated AVL+ tree with LevelDB persistence
- Use
ErgoCorePropertyTestbase for property tests - Follow existing test patterns in similar files
- Type annotations for public methods
- Prefer immutable data structures and functional patterns
- Code Changes: Only modify code in
src/test/folders - Production Code: Do not touch production code in
src/main/directories - Test Focus: All development work should be test-related only