This Tangle Blueprint provides a secure code execution service that runs arbitrary code snippets in a Trusted Execution Environment (TEE). It supports multiple programming languages and ensures secure isolation through sandboxing and resource limits.
The service is designed to be:
- π Secure: Runs code in isolated environments with strict resource limits
- π Language-agnostic: Supports multiple programming languages
- β‘ Fast: Optimized for quick code execution and response
- π‘οΈ Safe: Leverages TEE for secure code execution
- π Scalable: Handles concurrent executions with proper resource management
Before running this project, ensure you have:
Install cargo-tangle:
cargo install cargo-tangle --git https://github.com/tangle-network/blueprint.git --force
- Build the Project:
cargo build
- Run Tests:
cargo test
- Deploy the Blueprint:
cargo tangle blueprint deploy
curl -X POST http://localhost:8080/execute \
-H "Content-Type: application/json" \
-d '{
"language": "python",
"code": "print(\"Hello, World!\")",
"input": null,
"timeout": 30
}'
Response format:
{
"stdout": "Hello, World!\n",
"stderr": "",
"status": "success",
"execution_time": 123,
"memory_usage": 1024
}
let result = execute_code(
"python".to_string(),
"print('Hello from Tangle!')",
None,
context
).await?;
The service can be configured through environment variables:
CODE_EXEC_PORT
: HTTP server port (default: 8080)MAX_CONCURRENT_EXECUTIONS
: Maximum concurrent code executions (default: 10)
Resource limits can be customized in ResourceLimits
:
ResourceLimits {
memory: 256 * 1024 * 1024, // 256MB
cpu_time: 30, // 30 seconds
processes: 32, // Max 32 processes
file_size: 10 * 1024 * 1024, // 10MB
disk_space: 100 * 1024 * 1024, // 100MB
}
The blueprint consists of several key components:
- CodeExecutionService: Core service managing code execution
- Sandbox: Isolated environment for secure code execution
- Language Executors: Language-specific execution implementations
- HTTP Server: RESTful API for code execution requests
- Resource Monitor: Tracks and limits resource usage
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE)
- MIT license (LICENSE-MIT)