fix: resolve remaining CI issues — services, hardhat, Rust, mypy
All checks were successful
API Endpoint Tests / test-api-endpoints (push) Successful in 38s
Integration Tests / test-service-integration (push) Successful in 43s
Package Tests / test-python-packages (map[name:aitbc-core path:packages/py/aitbc-core]) (push) Successful in 21s
Package Tests / test-python-packages (map[name:aitbc-agent-sdk path:packages/py/aitbc-agent-sdk]) (push) Successful in 36s
Package Tests / test-python-packages (map[name:aitbc-crypto path:packages/py/aitbc-crypto]) (push) Successful in 19s
Package Tests / test-python-packages (map[name:aitbc-sdk path:packages/py/aitbc-sdk]) (push) Successful in 20s
Package Tests / test-javascript-packages (map[name:aitbc-sdk-js path:packages/js/aitbc-sdk]) (push) Successful in 16s
Python Tests / test-python (push) Successful in 1m4s
Package Tests / test-javascript-packages (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Successful in 1m13s
Rust ZK Components Tests / test-rust-zk (push) Successful in 44s
Security Scanning / security-scan (push) Successful in 42s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Successful in 39s
Smart Contract Tests / test-solidity (map[name:zk-circuits path:apps/zk-circuits]) (push) Successful in 44s
Smart Contract Tests / lint-solidity (push) Successful in 48s
All checks were successful
API Endpoint Tests / test-api-endpoints (push) Successful in 38s
Integration Tests / test-service-integration (push) Successful in 43s
Package Tests / test-python-packages (map[name:aitbc-core path:packages/py/aitbc-core]) (push) Successful in 21s
Package Tests / test-python-packages (map[name:aitbc-agent-sdk path:packages/py/aitbc-agent-sdk]) (push) Successful in 36s
Package Tests / test-python-packages (map[name:aitbc-crypto path:packages/py/aitbc-crypto]) (push) Successful in 19s
Package Tests / test-python-packages (map[name:aitbc-sdk path:packages/py/aitbc-sdk]) (push) Successful in 20s
Package Tests / test-javascript-packages (map[name:aitbc-sdk-js path:packages/js/aitbc-sdk]) (push) Successful in 16s
Python Tests / test-python (push) Successful in 1m4s
Package Tests / test-javascript-packages (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Successful in 1m13s
Rust ZK Components Tests / test-rust-zk (push) Successful in 44s
Security Scanning / security-scan (push) Successful in 42s
Smart Contract Tests / test-solidity (map[name:aitbc-token path:packages/solidity/aitbc-token]) (push) Successful in 39s
Smart Contract Tests / test-solidity (map[name:zk-circuits path:apps/zk-circuits]) (push) Successful in 44s
Smart Contract Tests / lint-solidity (push) Successful in 48s
Service health checks: - Exchange API uses /api/health not /health — updated test script and workflow wait loops to check /api/health as fallback - Increased wait time to 2s intervals, 15 retries for service readiness - Performance tests now hit /health endpoints (not root /) Hardhat compilation: - aitbc-token was missing peer deps for @nomicfoundation/hardhat-toolbox - Installed all 11 required peer packages (ethers, typechain, etc.) - Contracts now compile (19 Solidity files) and all 17 tests pass Rust workflow: - Fixed HOME mismatch: gitea-runner HOME=/opt/gitea-runner vs euid root HOME=/root — explicitly set HOME=/root in all steps - Set RUSTUP_HOME and CARGO_HOME for consistent toolchain location Mypy type annotations (aitbc-agent-sdk): - agent.py: narrow key types to RSA (isinstance check before sign/verify), fix supported_models Optional type, add __post_init__ return type - compute_provider.py: add return types to all methods, declare pricing_model/dynamic_pricing attrs, rename register→create_provider to avoid signature conflict with parent, fix Optional safety - swarm_coordinator.py: add return types to all 8 untyped methods
This commit is contained in:
@@ -41,14 +41,15 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "Waiting for AITBC services..."
|
echo "Waiting for AITBC services..."
|
||||||
for port in 8000 8001 8003 8006; do
|
for port in 8000 8001 8003 8006; do
|
||||||
for i in $(seq 1 10); do
|
for i in $(seq 1 15); do
|
||||||
if curl -sf "http://localhost:$port/" >/dev/null 2>&1 || \
|
if curl -sf "http://localhost:$port/health" >/dev/null 2>&1 || \
|
||||||
curl -sf "http://localhost:$port/health" >/dev/null 2>&1; then
|
curl -sf "http://localhost:$port/api/health" >/dev/null 2>&1 || \
|
||||||
|
curl -sf "http://localhost:$port/" >/dev/null 2>&1; then
|
||||||
echo "✅ Port $port ready"
|
echo "✅ Port $port ready"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
[ "$i" -eq 10 ] && echo "⚠️ Port $port not ready"
|
[ "$i" -eq 15 ] && echo "⚠️ Port $port not ready"
|
||||||
sleep 1
|
sleep 2
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -56,12 +56,13 @@ jobs:
|
|||||||
for port in 8000 8001 8003 8006; do
|
for port in 8000 8001 8003 8006; do
|
||||||
for i in $(seq 1 15); do
|
for i in $(seq 1 15); do
|
||||||
if curl -sf "http://localhost:$port/health" >/dev/null 2>&1 || \
|
if curl -sf "http://localhost:$port/health" >/dev/null 2>&1 || \
|
||||||
|
curl -sf "http://localhost:$port/api/health" >/dev/null 2>&1 || \
|
||||||
curl -sf "http://localhost:$port/" >/dev/null 2>&1; then
|
curl -sf "http://localhost:$port/" >/dev/null 2>&1; then
|
||||||
echo "✅ Port $port ready"
|
echo "✅ Port $port ready"
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
[ "$i" -eq 15 ] && echo "⚠️ Port $port not ready"
|
[ "$i" -eq 15 ] && echo "⚠️ Port $port not ready"
|
||||||
sleep 1
|
sleep 2
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
@@ -30,29 +30,41 @@ jobs:
|
|||||||
|
|
||||||
- name: Verify Rust toolchain
|
- name: Verify Rust toolchain
|
||||||
run: |
|
run: |
|
||||||
|
# Fix HOME mismatch (gitea-runner HOME vs euid root)
|
||||||
|
export HOME=/root
|
||||||
|
export RUSTUP_HOME="$HOME/.rustup"
|
||||||
|
export CARGO_HOME="$HOME/.cargo"
|
||||||
|
export PATH="$CARGO_HOME/bin:$PATH"
|
||||||
|
|
||||||
if ! command -v rustc >/dev/null 2>&1; then
|
if ! command -v rustc >/dev/null 2>&1; then
|
||||||
echo "Installing Rust..."
|
echo "Installing Rust..."
|
||||||
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
|
||||||
source "$HOME/.cargo/env"
|
|
||||||
fi
|
fi
|
||||||
|
source "$CARGO_HOME/env" 2>/dev/null || true
|
||||||
rustc --version
|
rustc --version
|
||||||
cargo --version
|
cargo --version
|
||||||
rustup component add rustfmt clippy 2>/dev/null || true
|
rustup component add rustfmt clippy 2>/dev/null || true
|
||||||
|
|
||||||
- name: Check formatting
|
- name: Check formatting
|
||||||
run: |
|
run: |
|
||||||
|
export HOME=/root
|
||||||
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
source "$HOME/.cargo/env" 2>/dev/null || true
|
source "$HOME/.cargo/env" 2>/dev/null || true
|
||||||
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
||||||
cargo fmt -- --check 2>/dev/null && echo "✅ Formatting OK" || echo "⚠️ Format warnings"
|
cargo fmt -- --check 2>/dev/null && echo "✅ Formatting OK" || echo "⚠️ Format warnings"
|
||||||
|
|
||||||
- name: Run Clippy
|
- name: Run Clippy
|
||||||
run: |
|
run: |
|
||||||
|
export HOME=/root
|
||||||
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
source "$HOME/.cargo/env" 2>/dev/null || true
|
source "$HOME/.cargo/env" 2>/dev/null || true
|
||||||
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
||||||
cargo clippy -- -D warnings 2>/dev/null && echo "✅ Clippy OK" || echo "⚠️ Clippy warnings"
|
cargo clippy -- -D warnings 2>/dev/null && echo "✅ Clippy OK" || echo "⚠️ Clippy warnings"
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: |
|
run: |
|
||||||
|
export HOME=/root
|
||||||
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
source "$HOME/.cargo/env" 2>/dev/null || true
|
source "$HOME/.cargo/env" 2>/dev/null || true
|
||||||
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
||||||
cargo build --release
|
cargo build --release
|
||||||
@@ -60,6 +72,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Run tests
|
- name: Run tests
|
||||||
run: |
|
run: |
|
||||||
|
export HOME=/root
|
||||||
|
export PATH="$HOME/.cargo/bin:$PATH"
|
||||||
source "$HOME/.cargo/env" 2>/dev/null || true
|
source "$HOME/.cargo/env" 2>/dev/null || true
|
||||||
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
cd /var/lib/aitbc-workspaces/rust-zk-tests/repo/gpu_acceleration/research/gpu_zk_research
|
||||||
cargo test && echo "✅ Tests passed" || echo "⚠️ Tests completed with issues"
|
cargo test && echo "✅ Tests passed" || echo "⚠️ Tests completed with issues"
|
||||||
|
|||||||
@@ -21,12 +21,12 @@ class AgentCapabilities:
|
|||||||
"""Agent capability specification"""
|
"""Agent capability specification"""
|
||||||
compute_type: str # "inference", "training", "processing"
|
compute_type: str # "inference", "training", "processing"
|
||||||
gpu_memory: Optional[int] = None
|
gpu_memory: Optional[int] = None
|
||||||
supported_models: List[str] = None
|
supported_models: Optional[List[str]] = None
|
||||||
performance_score: float = 0.0
|
performance_score: float = 0.0
|
||||||
max_concurrent_jobs: int = 1
|
max_concurrent_jobs: int = 1
|
||||||
specialization: Optional[str] = None
|
specialization: Optional[str] = None
|
||||||
|
|
||||||
def __post_init__(self):
|
def __post_init__(self) -> None:
|
||||||
if self.supported_models is None:
|
if self.supported_models is None:
|
||||||
self.supported_models = []
|
self.supported_models = []
|
||||||
|
|
||||||
@@ -47,6 +47,9 @@ class AgentIdentity:
|
|||||||
password=None
|
password=None
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not isinstance(private_key, rsa.RSAPrivateKey):
|
||||||
|
raise TypeError("Only RSA private keys are supported")
|
||||||
|
|
||||||
signature = private_key.sign(
|
signature = private_key.sign(
|
||||||
message_str.encode(),
|
message_str.encode(),
|
||||||
padding.PSS(
|
padding.PSS(
|
||||||
@@ -65,6 +68,9 @@ class AgentIdentity:
|
|||||||
self.public_key.encode()
|
self.public_key.encode()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if not isinstance(public_key, rsa.RSAPublicKey):
|
||||||
|
raise TypeError("Only RSA public keys are supported")
|
||||||
|
|
||||||
try:
|
try:
|
||||||
public_key.verify(
|
public_key.verify(
|
||||||
bytes.fromhex(signature),
|
bytes.fromhex(signature),
|
||||||
|
|||||||
@@ -37,16 +37,18 @@ class JobExecution:
|
|||||||
class ComputeProvider(Agent):
|
class ComputeProvider(Agent):
|
||||||
"""Agent that provides computational resources"""
|
"""Agent that provides computational resources"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.current_offers: List[ResourceOffer] = []
|
self.current_offers: List[ResourceOffer] = []
|
||||||
self.active_jobs: List[JobExecution] = []
|
self.active_jobs: List[JobExecution] = []
|
||||||
self.earnings = 0.0
|
self.earnings: float = 0.0
|
||||||
self.utilization_rate = 0.0
|
self.utilization_rate: float = 0.0
|
||||||
|
self.pricing_model: Dict[str, Any] = {}
|
||||||
|
self.dynamic_pricing: Dict[str, Any] = {}
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def register(cls, name: str, capabilities: Dict[str, Any], pricing_model: Dict[str, Any]) -> 'ComputeProvider':
|
def create_provider(cls, name: str, capabilities: Dict[str, Any], pricing_model: Dict[str, Any]) -> 'ComputeProvider':
|
||||||
"""Register as a compute provider"""
|
"""Create and register a compute provider"""
|
||||||
agent = super().create(name, "compute_provider", capabilities)
|
agent = super().create(name, "compute_provider", capabilities)
|
||||||
provider = cls(agent.identity, agent.capabilities)
|
provider = cls(agent.identity, agent.capabilities)
|
||||||
provider.pricing_model = pricing_model
|
provider.pricing_model = pricing_model
|
||||||
@@ -112,7 +114,7 @@ class ComputeProvider(Agent):
|
|||||||
logger.error(f"Failed to enable dynamic pricing: {e}")
|
logger.error(f"Failed to enable dynamic pricing: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def _dynamic_pricing_loop(self):
|
async def _dynamic_pricing_loop(self) -> None:
|
||||||
"""Background task for dynamic price adjustments"""
|
"""Background task for dynamic price adjustments"""
|
||||||
while getattr(self, 'dynamic_pricing', {}).get('enabled', False):
|
while getattr(self, 'dynamic_pricing', {}).get('enabled', False):
|
||||||
try:
|
try:
|
||||||
@@ -173,7 +175,7 @@ class ComputeProvider(Agent):
|
|||||||
logger.error(f"Failed to accept job: {e}")
|
logger.error(f"Failed to accept job: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def _execute_job(self, job: JobExecution, job_request: Dict[str, Any]):
|
async def _execute_job(self, job: JobExecution, job_request: Dict[str, Any]) -> None:
|
||||||
"""Execute a computational job"""
|
"""Execute a computational job"""
|
||||||
try:
|
try:
|
||||||
# Simulate job execution
|
# Simulate job execution
|
||||||
@@ -202,7 +204,7 @@ class ComputeProvider(Agent):
|
|||||||
job.status = "failed"
|
job.status = "failed"
|
||||||
logger.error(f"Job execution failed: {job.job_id} - {e}")
|
logger.error(f"Job execution failed: {job.job_id} - {e}")
|
||||||
|
|
||||||
async def _notify_job_completion(self, job: JobExecution, earnings: float):
|
async def _notify_job_completion(self, job: JobExecution, earnings: float) -> None:
|
||||||
"""Notify consumer about job completion"""
|
"""Notify consumer about job completion"""
|
||||||
notification = {
|
notification = {
|
||||||
"job_id": job.job_id,
|
"job_id": job.job_id,
|
||||||
@@ -215,7 +217,7 @@ class ComputeProvider(Agent):
|
|||||||
|
|
||||||
await self.send_message(job.consumer_id, "job_completion", notification)
|
await self.send_message(job.consumer_id, "job_completion", notification)
|
||||||
|
|
||||||
def _update_utilization(self):
|
def _update_utilization(self) -> None:
|
||||||
"""Update current utilization rate"""
|
"""Update current utilization rate"""
|
||||||
self.utilization_rate = len(self.active_jobs) / self.capabilities.max_concurrent_jobs
|
self.utilization_rate = len(self.active_jobs) / self.capabilities.max_concurrent_jobs
|
||||||
|
|
||||||
@@ -227,8 +229,8 @@ class ComputeProvider(Agent):
|
|||||||
"utilization_rate": self.utilization_rate,
|
"utilization_rate": self.utilization_rate,
|
||||||
"active_jobs": len(self.active_jobs),
|
"active_jobs": len(self.active_jobs),
|
||||||
"total_earnings": self.earnings,
|
"total_earnings": self.earnings,
|
||||||
"average_job_duration": sum(j.actual_duration.total_seconds() for j in completed_jobs) / len(completed_jobs) if completed_jobs else 0,
|
"average_job_duration": sum(j.actual_duration.total_seconds() for j in completed_jobs if j.actual_duration) / len(completed_jobs) if completed_jobs else 0,
|
||||||
"quality_score": sum(j.quality_score for j in completed_jobs if j.quality_score) / len(completed_jobs) if completed_jobs else 0,
|
"quality_score": sum(j.quality_score for j in completed_jobs if j.quality_score is not None) / len(completed_jobs) if completed_jobs else 0,
|
||||||
"current_offers": len(self.current_offers)
|
"current_offers": len(self.current_offers)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Swarm Coordinator - for agents participating in collective intelligence
|
|||||||
import asyncio
|
import asyncio
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
from typing import Dict, List, Optional, Any
|
from typing import Dict, List, Optional, Any # noqa: F401
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from .agent import Agent
|
from .agent import Agent
|
||||||
@@ -37,7 +37,7 @@ class SwarmDecision:
|
|||||||
class SwarmCoordinator(Agent):
|
class SwarmCoordinator(Agent):
|
||||||
"""Agent that participates in swarm intelligence"""
|
"""Agent that participates in swarm intelligence"""
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args: Any, **kwargs: Any) -> None:
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.joined_swarms: Dict[str, Dict[str, Any]] = {}
|
self.joined_swarms: Dict[str, Dict[str, Any]] = {}
|
||||||
self.swarm_reputation: Dict[str, float] = {}
|
self.swarm_reputation: Dict[str, float] = {}
|
||||||
@@ -91,7 +91,7 @@ class SwarmCoordinator(Agent):
|
|||||||
logger.error(f"Failed to join swarm {swarm_type}: {e}")
|
logger.error(f"Failed to join swarm {swarm_type}: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def _swarm_participation_loop(self, swarm_id: str):
|
async def _swarm_participation_loop(self, swarm_id: str) -> None:
|
||||||
"""Background task for active swarm participation"""
|
"""Background task for active swarm participation"""
|
||||||
while swarm_id in self.joined_swarms:
|
while swarm_id in self.joined_swarms:
|
||||||
try:
|
try:
|
||||||
@@ -145,7 +145,7 @@ class SwarmCoordinator(Agent):
|
|||||||
logger.error(f"Failed to broadcast to swarm: {e}")
|
logger.error(f"Failed to broadcast to swarm: {e}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
async def _contribute_swarm_data(self, swarm_id: str):
|
async def _contribute_swarm_data(self, swarm_id: str) -> None:
|
||||||
"""Contribute data to swarm intelligence"""
|
"""Contribute data to swarm intelligence"""
|
||||||
try:
|
try:
|
||||||
swarm_type = self.joined_swarms[swarm_id]["type"]
|
swarm_type = self.joined_swarms[swarm_id]["type"]
|
||||||
@@ -308,22 +308,22 @@ class SwarmCoordinator(Agent):
|
|||||||
logger.error(f"Failed to analyze swarm benefits: {e}")
|
logger.error(f"Failed to analyze swarm benefits: {e}")
|
||||||
return {"error": str(e)}
|
return {"error": str(e)}
|
||||||
|
|
||||||
async def _register_with_swarm(self, swarm_id: str, registration: Dict[str, Any]):
|
async def _register_with_swarm(self, swarm_id: str, registration: Dict[str, Any]) -> None:
|
||||||
"""Register with swarm coordinator (placeholder)"""
|
"""Register with swarm coordinator (placeholder)"""
|
||||||
# TODO: Implement actual swarm registration
|
# TODO: Implement actual swarm registration
|
||||||
await asyncio.sleep(0.1)
|
await asyncio.sleep(0.1)
|
||||||
|
|
||||||
async def _broadcast_to_swarm_network(self, message: SwarmMessage):
|
async def _broadcast_to_swarm_network(self, message: SwarmMessage) -> None:
|
||||||
"""Broadcast message to swarm network (placeholder)"""
|
"""Broadcast message to swarm network (placeholder)"""
|
||||||
# TODO: Implement actual swarm broadcasting
|
# TODO: Implement actual swarm broadcasting
|
||||||
await asyncio.sleep(0.1)
|
await asyncio.sleep(0.1)
|
||||||
|
|
||||||
async def _process_swarm_messages(self, swarm_id: str):
|
async def _process_swarm_messages(self, swarm_id: str) -> None:
|
||||||
"""Process incoming swarm messages (placeholder)"""
|
"""Process incoming swarm messages (placeholder)"""
|
||||||
# TODO: Implement actual message processing
|
# TODO: Implement actual message processing
|
||||||
await asyncio.sleep(0.1)
|
await asyncio.sleep(0.1)
|
||||||
|
|
||||||
async def _participate_in_decisions(self, swarm_id: str):
|
async def _participate_in_decisions(self, swarm_id: str) -> None:
|
||||||
"""Participate in swarm decision making (placeholder)"""
|
"""Participate in swarm decision making (placeholder)"""
|
||||||
# TODO: Implement actual decision participation
|
# TODO: Implement actual decision participation
|
||||||
await asyncio.sleep(0.1)
|
await asyncio.sleep(0.1)
|
||||||
|
|||||||
@@ -1,18 +1,18 @@
|
|||||||
{
|
{
|
||||||
"_format": "hh-sol-cache-2",
|
"_format": "hh-sol-cache-2",
|
||||||
"files": {
|
"files": {
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/contracts/AIToken.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/contracts/AIToken.sol": {
|
||||||
"lastModificationDate": 1758948750896,
|
"lastModificationDate": 1774686815247,
|
||||||
"contentHash": "9da3e499c2dda7c4cfdc56c633b86873",
|
"contentHash": "9da3e499c2dda7c4cfdc56c633b86873",
|
||||||
"sourceName": "contracts/AIToken.sol",
|
"sourceName": "contracts/AIToken.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -42,18 +42,18 @@
|
|||||||
"AIToken"
|
"AIToken"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/access/AccessControl.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/access/AccessControl.sol": {
|
||||||
"lastModificationDate": 1758948616475,
|
"lastModificationDate": 1774782027955,
|
||||||
"contentHash": "d0e2c05f09a3aea7cd299bbd4a435ee2",
|
"contentHash": "798a29e3c30dbd3eda1a67add26571e2",
|
||||||
"sourceName": "@openzeppelin/contracts/access/AccessControl.sol",
|
"sourceName": "@openzeppelin/contracts/access/AccessControl.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -82,18 +82,54 @@
|
|||||||
"AccessControl"
|
"AccessControl"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
|
||||||
"lastModificationDate": 1758948616511,
|
"lastModificationDate": 1774782027963,
|
||||||
"contentHash": "59dfce11284f2636db261df9b6a18f81",
|
"contentHash": "b038f3665d2262af34fe6009e3cd78dd",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
|
"sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.20"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"ECDSA"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/token/ERC20/ERC20.sol": {
|
||||||
|
"lastModificationDate": 1774782027967,
|
||||||
|
"contentHash": "d15c4d05583536e080f1960ab282772d",
|
||||||
|
"sourceName": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.25",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -123,54 +159,18 @@
|
|||||||
"ERC20"
|
"ERC20"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/cryptography/ECDSA.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
|
||||||
"lastModificationDate": 1758948616491,
|
"lastModificationDate": 1774782027987,
|
||||||
"contentHash": "81de029d56aa803972be03c5d277cb6c",
|
"contentHash": "fab97298382d4c32182a66ec35255b71",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/cryptography/ECDSA.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.24",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [],
|
|
||||||
"versionPragmas": [
|
|
||||||
"^0.8.20"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"ECDSA"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol": {
|
|
||||||
"lastModificationDate": 1758948616595,
|
|
||||||
"contentHash": "260f3968eefa3bbd30520cff5384cd93",
|
|
||||||
"sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
|
"sourceName": "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -191,60 +191,24 @@
|
|||||||
"../Strings.sol"
|
"../Strings.sol"
|
||||||
],
|
],
|
||||||
"versionPragmas": [
|
"versionPragmas": [
|
||||||
"^0.8.20"
|
"^0.8.24"
|
||||||
],
|
],
|
||||||
"artifacts": [
|
"artifacts": [
|
||||||
"MessageHashUtils"
|
"MessageHashUtils"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/access/IAccessControl.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/Context.sol": {
|
||||||
"lastModificationDate": 1758948616567,
|
"lastModificationDate": 1774782027959,
|
||||||
"contentHash": "def1e8f7b6cac577cf2600655bf3bdf8",
|
|
||||||
"sourceName": "@openzeppelin/contracts/access/IAccessControl.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.24",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [],
|
|
||||||
"versionPragmas": [
|
|
||||||
">=0.8.4"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"IAccessControl"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/Context.sol": {
|
|
||||||
"lastModificationDate": 1758948616483,
|
|
||||||
"contentHash": "67bfbc07588eb8683b3fd8f6f909563e",
|
"contentHash": "67bfbc07588eb8683b3fd8f6f909563e",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/Context.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Context.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -269,18 +233,18 @@
|
|||||||
"Context"
|
"Context"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol": {
|
||||||
"lastModificationDate": 1758948616511,
|
"lastModificationDate": 1774782027967,
|
||||||
"contentHash": "0906d06dca25210d4696dcef6dad2909",
|
"contentHash": "0906d06dca25210d4696dcef6dad2909",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
|
"sourceName": "@openzeppelin/contracts/utils/introspection/ERC165.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -307,18 +271,54 @@
|
|||||||
"ERC165"
|
"ERC165"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/access/IAccessControl.sol": {
|
||||||
"lastModificationDate": 1758948616575,
|
"lastModificationDate": 1774782027979,
|
||||||
"contentHash": "7074c93b1ea0a122063f26ddd1db1032",
|
"contentHash": "def1e8f7b6cac577cf2600655bf3bdf8",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
|
"sourceName": "@openzeppelin/contracts/access/IAccessControl.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [],
|
||||||
|
"versionPragmas": [
|
||||||
|
">=0.8.4"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"IAccessControl"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
|
||||||
|
"lastModificationDate": 1774782027983,
|
||||||
|
"contentHash": "7074c93b1ea0a122063f26ddd1db1032",
|
||||||
|
"sourceName": "@openzeppelin/contracts/utils/introspection/IERC165.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.25",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -343,18 +343,18 @@
|
|||||||
"IERC165"
|
"IERC165"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/interfaces/draft-IERC6093.sol": {
|
||||||
"lastModificationDate": 1758948616491,
|
"lastModificationDate": 1774782027963,
|
||||||
"contentHash": "5041977bbe908de2e6ed0270447f79ad",
|
"contentHash": "bcc76f4747d56c28c40ae272ef3470a6",
|
||||||
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
|
"sourceName": "@openzeppelin/contracts/interfaces/draft-IERC6093.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -381,18 +381,18 @@
|
|||||||
"IERC721Errors"
|
"IERC721Errors"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
|
||||||
"lastModificationDate": 1758948616579,
|
"lastModificationDate": 1774782027983,
|
||||||
"contentHash": "9261adf6457863de3e9892f51317ec89",
|
"contentHash": "9261adf6457863de3e9892f51317ec89",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -417,18 +417,18 @@
|
|||||||
"IERC20"
|
"IERC20"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
|
||||||
"lastModificationDate": 1758948616579,
|
"lastModificationDate": 1774782027983,
|
||||||
"contentHash": "513778b30d2750f5d2b9b19bbcf748a5",
|
"contentHash": "513778b30d2750f5d2b9b19bbcf748a5",
|
||||||
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
|
"sourceName": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -455,18 +455,18 @@
|
|||||||
"IERC20Metadata"
|
"IERC20Metadata"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/Strings.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/Strings.sol": {
|
||||||
"lastModificationDate": 1758948616623,
|
"lastModificationDate": 1774782027999,
|
||||||
"contentHash": "d8f70caf0e0c77dc908176ed44812fb7",
|
"contentHash": "d2fa243e766a193585b7e9bf36898d80",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/Strings.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Strings.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -486,27 +486,104 @@
|
|||||||
"imports": [
|
"imports": [
|
||||||
"./math/Math.sol",
|
"./math/Math.sol",
|
||||||
"./math/SafeCast.sol",
|
"./math/SafeCast.sol",
|
||||||
"./math/SignedMath.sol"
|
"./math/SignedMath.sol",
|
||||||
|
"./Bytes.sol"
|
||||||
],
|
],
|
||||||
"versionPragmas": [
|
"versionPragmas": [
|
||||||
"^0.8.20"
|
"^0.8.24"
|
||||||
],
|
],
|
||||||
"artifacts": [
|
"artifacts": [
|
||||||
"Strings"
|
"Strings"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/Bytes.sol": {
|
||||||
"lastModificationDate": 1758948616595,
|
"lastModificationDate": 1774782027959,
|
||||||
"contentHash": "5ec781e33d3a9ac91ffdc83d94420412",
|
"contentHash": "3b32ea3a40a2d708f61e7161f081ca93",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/math/Math.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Bytes.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"./math/Math.sol"
|
||||||
|
],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.24"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"Bytes"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": {
|
||||||
|
"lastModificationDate": 1774782027995,
|
||||||
|
"contentHash": "ae3528afb8bdb0a7dcfba5b115ee8074",
|
||||||
|
"sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.25",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"evmVersion": "cancun",
|
||||||
|
"outputSelection": {
|
||||||
|
"*": {
|
||||||
|
"*": [
|
||||||
|
"abi",
|
||||||
|
"evm.bytecode",
|
||||||
|
"evm.deployedBytecode",
|
||||||
|
"evm.methodIdentifiers",
|
||||||
|
"metadata"
|
||||||
|
],
|
||||||
|
"": [
|
||||||
|
"ast"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"imports": [
|
||||||
|
"./SafeCast.sol"
|
||||||
|
],
|
||||||
|
"versionPragmas": [
|
||||||
|
"^0.8.20"
|
||||||
|
],
|
||||||
|
"artifacts": [
|
||||||
|
"SignedMath"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/math/Math.sol": {
|
||||||
|
"lastModificationDate": 1774782027987,
|
||||||
|
"contentHash": "5b8c6935ac52b7494df19d6feb38f5cc",
|
||||||
|
"sourceName": "@openzeppelin/contracts/utils/math/Math.sol",
|
||||||
|
"solcConfig": {
|
||||||
|
"version": "0.8.25",
|
||||||
|
"settings": {
|
||||||
|
"optimizer": {
|
||||||
|
"enabled": true,
|
||||||
|
"runs": 200
|
||||||
|
},
|
||||||
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -534,56 +611,18 @@
|
|||||||
"Math"
|
"Math"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/math/SignedMath.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
|
||||||
"lastModificationDate": 1758948616619,
|
"lastModificationDate": 1774782027995,
|
||||||
"contentHash": "ae3528afb8bdb0a7dcfba5b115ee8074",
|
"contentHash": "f28a38cd37f4225d0a91fb5405dd850f",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/math/SignedMath.sol",
|
|
||||||
"solcConfig": {
|
|
||||||
"version": "0.8.24",
|
|
||||||
"settings": {
|
|
||||||
"optimizer": {
|
|
||||||
"enabled": true,
|
|
||||||
"runs": 200
|
|
||||||
},
|
|
||||||
"evmVersion": "paris",
|
|
||||||
"outputSelection": {
|
|
||||||
"*": {
|
|
||||||
"*": [
|
|
||||||
"abi",
|
|
||||||
"evm.bytecode",
|
|
||||||
"evm.deployedBytecode",
|
|
||||||
"evm.methodIdentifiers",
|
|
||||||
"metadata"
|
|
||||||
],
|
|
||||||
"": [
|
|
||||||
"ast"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"imports": [
|
|
||||||
"./SafeCast.sol"
|
|
||||||
],
|
|
||||||
"versionPragmas": [
|
|
||||||
"^0.8.20"
|
|
||||||
],
|
|
||||||
"artifacts": [
|
|
||||||
"SignedMath"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/math/SafeCast.sol": {
|
|
||||||
"lastModificationDate": 1758948616611,
|
|
||||||
"contentHash": "2adca1150f58fc6f3d1f0a0f22ee7cca",
|
|
||||||
"sourceName": "@openzeppelin/contracts/utils/math/SafeCast.sol",
|
"sourceName": "@openzeppelin/contracts/utils/math/SafeCast.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -608,18 +647,18 @@
|
|||||||
"SafeCast"
|
"SafeCast"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/Panic.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/node_modules/@openzeppelin/contracts/utils/Panic.sol": {
|
||||||
"lastModificationDate": 1758948616603,
|
"lastModificationDate": 1774782027991,
|
||||||
"contentHash": "2133dc13536b4a6a98131e431fac59e1",
|
"contentHash": "2133dc13536b4a6a98131e431fac59e1",
|
||||||
"sourceName": "@openzeppelin/contracts/utils/Panic.sol",
|
"sourceName": "@openzeppelin/contracts/utils/Panic.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
@@ -644,18 +683,18 @@
|
|||||||
"Panic"
|
"Panic"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"/home/oib/windsurf/aitbc/packages/solidity/aitbc-token/contracts/AITokenRegistry.sol": {
|
"/opt/aitbc/packages/solidity/aitbc-token/contracts/AITokenRegistry.sol": {
|
||||||
"lastModificationDate": 1758946778726,
|
"lastModificationDate": 1774686815247,
|
||||||
"contentHash": "5e787829fa19b0a69c958e431fea5757",
|
"contentHash": "5e787829fa19b0a69c958e431fea5757",
|
||||||
"sourceName": "contracts/AITokenRegistry.sol",
|
"sourceName": "contracts/AITokenRegistry.sol",
|
||||||
"solcConfig": {
|
"solcConfig": {
|
||||||
"version": "0.8.24",
|
"version": "0.8.25",
|
||||||
"settings": {
|
"settings": {
|
||||||
"optimizer": {
|
"optimizer": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"runs": 200
|
"runs": 200
|
||||||
},
|
},
|
||||||
"evmVersion": "paris",
|
"evmVersion": "cancun",
|
||||||
"outputSelection": {
|
"outputSelection": {
|
||||||
"*": {
|
"*": {
|
||||||
"*": [
|
"*": [
|
||||||
|
|||||||
@@ -11,14 +11,25 @@
|
|||||||
"deploy": "hardhat run scripts/deploy.ts --network localhost"
|
"deploy": "hardhat run scripts/deploy.ts --network localhost"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
"@nomicfoundation/hardhat-chai-matchers": "^2.1.2",
|
||||||
|
"@nomicfoundation/hardhat-ethers": "^3.1.3",
|
||||||
|
"@nomicfoundation/hardhat-ignition-ethers": "^0.15.17",
|
||||||
|
"@nomicfoundation/hardhat-network-helpers": "^1.1.2",
|
||||||
"@nomicfoundation/hardhat-toolbox": "^5.0.0",
|
"@nomicfoundation/hardhat-toolbox": "^5.0.0",
|
||||||
|
"@nomicfoundation/hardhat-verify": "^2.1.3",
|
||||||
|
"@typechain/ethers-v6": "^0.5.1",
|
||||||
|
"@typechain/hardhat": "^9.1.0",
|
||||||
"@types/chai": "^4.3.11",
|
"@types/chai": "^4.3.11",
|
||||||
"@types/mocha": "^10.0.10",
|
"@types/mocha": "^10.0.10",
|
||||||
"@types/node": "^20.11.30",
|
"@types/node": "^20.11.30",
|
||||||
"chai": "^4.4.1",
|
"chai": "^4.4.1",
|
||||||
|
"ethers": "^6.16.0",
|
||||||
"hardhat": "^2.22.1",
|
"hardhat": "^2.22.1",
|
||||||
|
"hardhat-gas-reporter": "^1.0.10",
|
||||||
"prettier": "^3.2.5",
|
"prettier": "^3.2.5",
|
||||||
|
"solidity-coverage": "^0.8.17",
|
||||||
"ts-node": "^10.9.2",
|
"ts-node": "^10.9.2",
|
||||||
|
"typechain": "^8.3.2",
|
||||||
"typescript": "^5.9.2"
|
"typescript": "^5.9.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
|||||||
@@ -2,3 +2,4 @@
|
|||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
export type { ECDSA } from "./ECDSA";
|
export type { ECDSA } from "./ECDSA";
|
||||||
|
export type { MessageHashUtils } from "./MessageHashUtils";
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ const _abi = [
|
|||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
const _bytecode =
|
const _bytecode =
|
||||||
"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d3fa6b95cf4f76e64227a9b2373ccb228efd9715fd7983e0646867999cceb9fb64736f6c63430008180033";
|
"0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea26469706673582212201a6180167efb6562d882d394cd3a11d9f504b5200f4d3561a6332af0022ccaeb64736f6c63430008190033";
|
||||||
|
|
||||||
type StringsConstructorParams =
|
type StringsConstructorParams =
|
||||||
| [signer?: Signer]
|
| [signer?: Signer]
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ const _abi = [
|
|||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
const _bytecode =
|
const _bytecode =
|
||||||
"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a02ae933cd95f2ee943a9a3e5cbf4c6b7a6f7cc463d2cb58fac8fce23a0ba09464736f6c63430008180033";
|
"0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122026f40e2f9829b7940304d9f14a6e9e5677a59dd8116e9080cf27c2c2bc85ef5b64736f6c63430008190033";
|
||||||
|
|
||||||
type ECDSAConstructorParams =
|
type ECDSAConstructorParams =
|
||||||
| [signer?: Signer]
|
| [signer?: Signer]
|
||||||
|
|||||||
@@ -2,3 +2,4 @@
|
|||||||
/* tslint:disable */
|
/* tslint:disable */
|
||||||
/* eslint-disable */
|
/* eslint-disable */
|
||||||
export { ECDSA__factory } from "./ECDSA__factory";
|
export { ECDSA__factory } from "./ECDSA__factory";
|
||||||
|
export { MessageHashUtils__factory } from "./MessageHashUtils__factory";
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ const _abi = [
|
|||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
const _bytecode =
|
const _bytecode =
|
||||||
"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201c97bba8d553a67561101942b2a9afa3628667de55efed8df898d3aab783793c64736f6c63430008180033";
|
"0x60556032600b8282823980515f1a607314602657634e487b7160e01b5f525f60045260245ffd5b305f52607381538281f3fe730000000000000000000000000000000000000000301460806040525f80fdfea264697066735822122004223638d8d1e86abf400699f30c266341b4680b04bb0c8679d0cbf532d1c6d664736f6c63430008190033";
|
||||||
|
|
||||||
type SafeCastConstructorParams =
|
type SafeCastConstructorParams =
|
||||||
| [signer?: Signer]
|
| [signer?: Signer]
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -49,6 +49,10 @@ declare module "hardhat/types/runtime" {
|
|||||||
name: "ECDSA",
|
name: "ECDSA",
|
||||||
signerOrOptions?: ethers.Signer | FactoryOptions
|
signerOrOptions?: ethers.Signer | FactoryOptions
|
||||||
): Promise<Contracts.ECDSA__factory>;
|
): Promise<Contracts.ECDSA__factory>;
|
||||||
|
getContractFactory(
|
||||||
|
name: "MessageHashUtils",
|
||||||
|
signerOrOptions?: ethers.Signer | FactoryOptions
|
||||||
|
): Promise<Contracts.MessageHashUtils__factory>;
|
||||||
getContractFactory(
|
getContractFactory(
|
||||||
name: "ERC165",
|
name: "ERC165",
|
||||||
signerOrOptions?: ethers.Signer | FactoryOptions
|
signerOrOptions?: ethers.Signer | FactoryOptions
|
||||||
@@ -119,6 +123,11 @@ declare module "hardhat/types/runtime" {
|
|||||||
address: string | ethers.Addressable,
|
address: string | ethers.Addressable,
|
||||||
signer?: ethers.Signer
|
signer?: ethers.Signer
|
||||||
): Promise<Contracts.ECDSA>;
|
): Promise<Contracts.ECDSA>;
|
||||||
|
getContractAt(
|
||||||
|
name: "MessageHashUtils",
|
||||||
|
address: string | ethers.Addressable,
|
||||||
|
signer?: ethers.Signer
|
||||||
|
): Promise<Contracts.MessageHashUtils>;
|
||||||
getContractAt(
|
getContractAt(
|
||||||
name: "ERC165",
|
name: "ERC165",
|
||||||
address: string | ethers.Addressable,
|
address: string | ethers.Addressable,
|
||||||
@@ -186,6 +195,10 @@ declare module "hardhat/types/runtime" {
|
|||||||
name: "ECDSA",
|
name: "ECDSA",
|
||||||
signerOrOptions?: ethers.Signer | DeployContractOptions
|
signerOrOptions?: ethers.Signer | DeployContractOptions
|
||||||
): Promise<Contracts.ECDSA>;
|
): Promise<Contracts.ECDSA>;
|
||||||
|
deployContract(
|
||||||
|
name: "MessageHashUtils",
|
||||||
|
signerOrOptions?: ethers.Signer | DeployContractOptions
|
||||||
|
): Promise<Contracts.MessageHashUtils>;
|
||||||
deployContract(
|
deployContract(
|
||||||
name: "ERC165",
|
name: "ERC165",
|
||||||
signerOrOptions?: ethers.Signer | DeployContractOptions
|
signerOrOptions?: ethers.Signer | DeployContractOptions
|
||||||
@@ -256,6 +269,11 @@ declare module "hardhat/types/runtime" {
|
|||||||
args: any[],
|
args: any[],
|
||||||
signerOrOptions?: ethers.Signer | DeployContractOptions
|
signerOrOptions?: ethers.Signer | DeployContractOptions
|
||||||
): Promise<Contracts.ECDSA>;
|
): Promise<Contracts.ECDSA>;
|
||||||
|
deployContract(
|
||||||
|
name: "MessageHashUtils",
|
||||||
|
args: any[],
|
||||||
|
signerOrOptions?: ethers.Signer | DeployContractOptions
|
||||||
|
): Promise<Contracts.MessageHashUtils>;
|
||||||
deployContract(
|
deployContract(
|
||||||
name: "ERC165",
|
name: "ERC165",
|
||||||
args: any[],
|
args: any[],
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ export type { IERC20 } from "./@openzeppelin/contracts/token/ERC20/IERC20";
|
|||||||
export { IERC20__factory } from "./factories/@openzeppelin/contracts/token/ERC20/IERC20__factory";
|
export { IERC20__factory } from "./factories/@openzeppelin/contracts/token/ERC20/IERC20__factory";
|
||||||
export type { ECDSA } from "./@openzeppelin/contracts/utils/cryptography/ECDSA";
|
export type { ECDSA } from "./@openzeppelin/contracts/utils/cryptography/ECDSA";
|
||||||
export { ECDSA__factory } from "./factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory";
|
export { ECDSA__factory } from "./factories/@openzeppelin/contracts/utils/cryptography/ECDSA__factory";
|
||||||
|
export type { MessageHashUtils } from "./@openzeppelin/contracts/utils/cryptography/MessageHashUtils";
|
||||||
|
export { MessageHashUtils__factory } from "./factories/@openzeppelin/contracts/utils/cryptography/MessageHashUtils__factory";
|
||||||
export type { ERC165 } from "./@openzeppelin/contracts/utils/introspection/ERC165";
|
export type { ERC165 } from "./@openzeppelin/contracts/utils/introspection/ERC165";
|
||||||
export { ERC165__factory } from "./factories/@openzeppelin/contracts/utils/introspection/ERC165__factory";
|
export { ERC165__factory } from "./factories/@openzeppelin/contracts/utils/introspection/ERC165__factory";
|
||||||
export type { IERC165 } from "./@openzeppelin/contracts/utils/introspection/IERC165";
|
export type { IERC165 } from "./@openzeppelin/contracts/utils/introspection/IERC165";
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import sys
|
|||||||
# Service ports (must match systemd config)
|
# Service ports (must match systemd config)
|
||||||
SERVICES = {
|
SERVICES = {
|
||||||
"coordinator": {"url": "http://localhost:8000", "endpoints": ["/", "/health", "/info"]},
|
"coordinator": {"url": "http://localhost:8000", "endpoints": ["/", "/health", "/info"]},
|
||||||
"exchange": {"url": "http://localhost:8001", "endpoints": ["/", "/health", "/info"]},
|
"exchange": {"url": "http://localhost:8001", "endpoints": ["/", "/api/health", "/health", "/info"]},
|
||||||
"wallet": {"url": "http://localhost:8003", "endpoints": ["/", "/health", "/wallets"]},
|
"wallet": {"url": "http://localhost:8003", "endpoints": ["/", "/health", "/wallets"]},
|
||||||
"blockchain_rpc": {"url": "http://localhost:8006", "endpoints": []},
|
"blockchain_rpc": {"url": "http://localhost:8006", "endpoints": []},
|
||||||
}
|
}
|
||||||
@@ -105,9 +105,9 @@ def main():
|
|||||||
|
|
||||||
print("\n⚡ Performance tests...")
|
print("\n⚡ Performance tests...")
|
||||||
perf = test_performance([
|
perf = test_performance([
|
||||||
("Coordinator", "http://localhost:8000/"),
|
("Coordinator", "http://localhost:8000/health"),
|
||||||
("Exchange", "http://localhost:8001/"),
|
("Exchange", "http://localhost:8001/api/health"),
|
||||||
("Wallet", "http://localhost:8003/"),
|
("Wallet", "http://localhost:8003/health"),
|
||||||
])
|
])
|
||||||
all_results["performance"] = perf
|
all_results["performance"] = perf
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user