Oroz is a modern Proof-of-Stake (PoS) blockchain platform with advanced governance, delegation, and configurable protocol parameters. Built in Go, it provides enterprise-grade security, scalability, and developer-friendly tools.
- Proof-of-Stake Consensus: Stake-weighted proposer selection with BFT finality
- On-Chain Governance: Validator voting for protocol parameter changes
- Delegation System: Stake delegation with configurable validator commissions
- Slashing Protection: Double-signing detection and downtime penalties
- Configurable Parameters: All protocol parameters updatable via governance
- Rich API: 20+ REST endpoints for blockchain interaction
- P2P Network: Automatic peer discovery and sync mechanism
- Developer Tools: CLI tools for key management and transactions
- Go: 1.21 or higher
- Storage: 10GB+ available space
- Memory: 4GB+ RAM recommended
- Network: Internet connection for P2P networking
git clone https://github.com/mine3krish/oroz-blockchain.git
cd oroz-blockchain
go mod download
go build -o cmd/oroz-node cmd/node/main.go
go build -o cmd/orozkey cmd/orozkey/main.go
go build -o cmd/oroztx cmd/oroztx/main.go./bin/orozkey --action new --file alice.walletEdit configs/genesis.json with your wallet address and initial stake.
./bin/oroz-node --config config.json./bin/oroztx --wallet alice.wallet --to 0xRECIPIENT --amount 1000000000000000000- State Management: LevelDB-based persistent state with account balances, stakes, and governance data
- Consensus Engine: Stake-weighted proposer selection with checkpoint voting
- Transaction Pool: In-memory mempool with validation and fee estimation
- P2P Network: TCP-based networking with peer discovery and block propagation
- REST API: HTTP server for external integrations and wallet interactions
| Type | Description | Required Fields |
|---|---|---|
transfer |
Send tokens between accounts | to, amount |
stake |
Stake tokens for validation | amount |
unstake |
Unstake tokens | amount |
register_validator |
Register as validator | amount, pubkey |
delegate |
Delegate stake to validator | to, amount |
undelegate |
Remove delegation | to, amount |
param_change_proposal |
Propose parameter change | to (param), amount (value) |
vote_param_change |
Vote on proposal | to (param), data (yes/no) |
{
"state_path": "data/state.db",
"block_path": "data/blocks.db",
"genesis_path": "configs/genesis.json",
"wallet_path": "alice.wallet",
"port": 8080,
"api_port": 8001,
"peers": ["localhost:8081"]
}All configurable via governance:
block_reward: Block reward amount (wei)block_time: Block interval (seconds)finality_depth: Blocks for finalitymin_validator_stake: Minimum stake to become validatormax_validators: Maximum active validatorspayout_interval: Reward distribution interval (blocks)commission: Default validator commission (%)downtime_window: Blocks to track for downtimefee_per_byte: Transaction fee per byte
GET /balance/{address}- Get account balanceGET /account/{address}- Get account details (balance, nonce, stake)GET /address/{address}- Same as account
POST /sendtx- Broadcast transactionGET /tx/{hash}- Get transaction by hashGET /addresstxns/{address}- Get transactions for addressPOST /estimateFee- Estimate transaction fee
GET /block/{height}- Get block by heightGET /blocks?start={}&end={}- Get block rangeGET /blocktxns/{height}- Get transactions in blockGET /chaininfo- Get blockchain infoGET /mempool- Get pending transactions
GET /validators- List all validatorsGET /validator/{address}- Get validator detailsPOST /register_validator- Register as validatorGET /delegations?validator={}- Get delegations to validatorGET /delegator_rewards?delegator={}- Get delegation history
POST /param_proposal- Submit parameter change proposalPOST /param_vote- Vote on proposalGET /param_proposals- List all proposalsGET /param_proposal_status?param={}- Get proposal statusGET /param_proposal_votes?param={}- Get votes for proposalGET /protocol_params- Get current parameters
- Submit Proposal (validator only):
./bin/oroztx --wallet validator.wallet --type param_change_proposal --to block_reward --amount 2000000000000000000- Vote on Proposal (validator only):
./bin/oroztx --wallet validator.wallet --type vote_param_change --to block_reward --data yes- Automatic Execution:
- Changes apply when >2/3 validator stake votes "yes"
- Proposals expire after 100 blocks if not passed
- Ed25519 Signatures: All transactions cryptographically signed
- Double-Signing Protection: Validators slashed for conflicting blocks/votes
- Downtime Slashing: Validators jailed for missing too many blocks
- Replay Protection: Nonce-based transaction ordering
- Rate Limiting: API endpoints protected against DoS
- Finality: BFT-style checkpoints prevent deep reorganizations
# Install dependencies
go mod download
# Build all binaries
make build
# Run tests
go test ./...
# Start development node
./bin/oroz-node --genesis configs/genesis.json --wallet alice.wallet- Add type to
tx.govalidation - Implement logic in
Apply()method - Add API endpoint in
server.go - Update documentation
# Check node status
curl localhost:8001/chaininfo
# Monitor mempool
curl localhost:8001/mempool
# View validators
curl localhost:8001/validators- Block height and sync status
- Mempool size and pending transactions
- Connected peers count
- Validator uptime and performance
Node won't start:
- Check genesis file path and format
- Verify wallet file exists and is readable
- Ensure ports are not in use
Transaction rejected:
- Check nonce is correct (
/account/{address}) - Verify sufficient balance for amount + fee
- Validate transaction signature and format
Peer connection failed:
- Confirm peer address and port
- Check firewall settings
- Verify both nodes are on same network
Validator not proposing:
- Ensure sufficient stake (>= min_validator_stake)
- Check if jailed (
/validator/{address}) - Verify not exceeding max_validators limit
# Verbose logging
./bin/oroz-node --config config.json --debug
# Manual transaction
./bin/oroztx --wallet test.wallet --to 0xDEADBEEF --amount 1000 --api http://localhost:8001- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
- Follow Go conventions and
gofmt - Add tests for new features
- Document public APIs
- Update README for user-facing changes
- Smart Contracts (EVM compatibility)
- Cross-chain bridges
- Light client support
- Mobile wallet apps
- Consensus algorithm improvements
- Sharding implementation