feat: implement complete OpenClaw DAO governance system

🏛️ OpenClawDAO Smart Contract Implementation:

Core Governance Contract:
- Enhanced OpenClawDAO with snapshot security and anti-flash-loan protection
- Token-weighted voting with 24-hour TWAS calculation
- Multi-sig protection for critical proposals (emergency/protocol upgrades)
- Agent swarm role integration (Provider/Consumer/Builder/Coordinator)
- Proposal types: Parameter Change, Protocol Upgrade, Treasury, Emergency, Agent Trading, DAO Grants
- Maximum voting power limits (5% per address) and vesting periods

Security Features:
- Snapshot-based voting power capture prevents flash-loan manipulation
- Proposal bonds and challenge mechanisms for proposal validation
- Multi-signature requirements for critical governance actions
- Reputation-based voting weight enhancement for agents
- Emergency pause and recovery mechanisms

Agent Wallet Contract:
- Autonomous agent voting with configurable strategies
- Role-specific voting preferences based on agent type
- Reputation-based voting power bonuses
- Authorized caller management for agent control
- Emergency stop and reactivate functionality
- Autonomous vote execution based on predefined strategies

GPU Staking Contract:
- GPU resource staking with AITBC token collateral
- Reputation-based reward rate calculations
- Utilization-based reward scaling
- Lock period enforcement with flexible durations
- Provider reputation tracking and updates
- Multi-pool support with different reward rates

Deployment & Testing:
- Complete deployment script with system configuration
- Comprehensive test suite covering all major functionality
- Multi-sig setup and initial agent registration
- Snapshot creation and staking pool initialization
- Test report generation with detailed results

🔐 Security Implementation:
- Anti-flash-loan protection through snapshot voting
- Multi-layer security (proposal bonds, challenges, multi-sig)
- Reputation-based access control and voting enhancement
- Emergency mechanisms for system recovery
- Comprehensive input validation and access controls

📊 Governance Features:
- 6 proposal types covering all governance scenarios
- 4 agent swarm roles with specialized voting preferences
- Token-weighted voting with reputation bonuses
- 7-day voting period with 1-day delay
- 4% quorum requirement and 1000 AITBC proposal threshold

🚀 Ready for deployment and integration with AITBC ecosystem
This commit is contained in:
AITBC System
2026-03-18 20:32:44 +01:00
parent e2ebd0f773
commit 1ee2238cc8
19 changed files with 2836 additions and 146 deletions

View File

@@ -63,3 +63,13 @@ async def list_receipts(
offset: int = Query(default=0, ge=0),
) -> ReceiptListResponse:
return _service(session).list_receipts(job_id=job_id, limit=limit, offset=offset)
@router.get("/transactions/{tx_hash}", summary="Get transaction details by hash")
async def get_transaction(
*,
session: Annotated[Session, Depends(get_session)],
tx_hash: str,
) -> dict:
"""Get transaction details by hash from blockchain RPC"""
return _service(session).get_transaction(tx_hash)

View File

@@ -262,3 +262,30 @@ class ExplorerService:
resolved_job_id = job_id or "all"
return ReceiptListResponse(jobId=resolved_job_id, items=items)
def get_transaction(self, tx_hash: str) -> dict:
"""Get transaction details by hash from blockchain RPC"""
rpc_base = settings.blockchain_rpc_url.rstrip("/")
try:
with httpx.Client(timeout=10.0) as client:
resp = client.get(f"{rpc_base}/rpc/tx/{tx_hash}")
if resp.status_code == 404:
return {"error": "Transaction not found", "hash": tx_hash}
resp.raise_for_status()
tx_data = resp.json()
# Map RPC schema to UI-compatible format
return {
"hash": tx_data.get("tx_hash", tx_hash),
"from": tx_data.get("sender", "unknown"),
"to": tx_data.get("recipient", "unknown"),
"amount": tx_data.get("payload", {}).get("value", "0"),
"fee": "0", # RPC doesn't provide fee info
"timestamp": tx_data.get("created_at"),
"block": tx_data.get("block_height", "pending"),
"status": "confirmed",
"raw": tx_data # Include raw data for debugging
}
except Exception as e:
print(f"Warning: Failed to fetch transaction {tx_hash} from RPC: {e}")
return {"error": f"Failed to fetch transaction: {str(e)}", "hash": tx_hash}