Skip to content

CVM (EVM Comatible)#15

Open
Casraw wants to merge 183 commits intomasterfrom
cvm
Open

CVM (EVM Comatible)#15
Casraw wants to merge 183 commits intomasterfrom
cvm

Conversation

@Casraw
Copy link
Copy Markdown
Owner

@Casraw Casraw commented Nov 15, 2025

Complete your own CVM (Cascoin Virtual Machine) with EVM compatibility


Note

Medium Risk
Moderate risk because it significantly changes CI/release behavior, builds third-party crypto/EVM libraries from source in CI, and adds an SSH-based deployment workflow that can affect testnet environments if misconfigured.

Overview
The build workflow is expanded to compile and package additional dependencies for EVM compatibility and post-quantum crypto on Linux by building EVMC/evmone and liboqs from source, enabling --enable-evmc/--enable-quantum at ./configure, and bundling these libraries into the Linux distribution tarball.

CI is reworked to run on default runners, adds a new macOS (macos-14) build + distribution artifact, and tweaks the Windows cross-build to use the MinGW POSIX threading toolchain and updated cache keys; artifacts are now suffixed with ${{ github.run_id }} and the release job is updated to download and publish Linux/Windows/macOS assets accordingly.

A new Deploy Testnet workflow is added that can run automatically after a successful build (or manually via a run_id), downloads the Linux distribution artifact, then deploys it over SSH to multiple testnet servers, restarts daemons, verifies processes, and cleans up SSH materials. Documentation/spec files under .kiro/specs/ are added (no runtime code changes), and .gitignore now ignores mcp.json.

Written by Cursor Bugbot for commit 80b0afe. This will update automatically on new commits. Configure here.

Casraw added 30 commits November 3, 2025 11:02
- Add full implementation of CVM-EVM hybrid architecture
- Integrate EVMC host interface with comprehensive trust features
- Implement enhanced VM engine with cross-format contract execution
- Add new modules for block validation, storage, and gas management
- Introduce trust context and reputation-based execution controls
- Complete bytecode detection and optimization utilities
- Update build configuration and Makefile to support new CVM components
- Implement EVM RPC and transaction priority management
- Add reputation signature and resource management modules
Completes Phase 1 and Phase 2 of CVM-EVM enhancement, providing full Ethereum Virtual Machine compatibility with Cascoin's trust-aware architecture.
Casraw added 20 commits February 5, 2026 14:17
…upport

- Bump version from 4.0.0 to 4.1.0 across configure scripts and version headers
- Fix EVMC/EVMOne library linking for Windows cross-compilation by adding libevmone-standalone
- Update liboqs minimal build configuration to use correct SIG_ prefix format
- Add qttools support to native Qt build with lrelease and linguist tools
- Enable linguist feature flags in native Qt configuration for translation support
- Add native Qt patches directory for qttools dependency handling
- Create quantum registry stub implementation for script validation
- Update encrypted mempool and L2 faucet implementations
- Improve Falcon quantum signature algorithm implementation
- Add Windows build documentation updates
- Consolidate build system makefiles for better cross-platform compatibility
…m handling

- Add quantum endianness fix specification documents (.kiro/specs/)
- Reverse byte order in DecodeDestination() to store LE in WitnessV2Quantum
- Add LE→BE reversal in EncodeDestination() visitor for Bech32m encoding
- Remove compensating byte reversals from VerifyWitnessV2Quantum() in interpreter.cpp
- Remove compensating byte reversals from ProduceSignature() in sign.cpp
- Remove compensating byte reversals from IsSolvable() in sign.cpp
- Remove compensating byte reversals from IsMine() in ismine.cpp
- Fix hash function mismatch in VerifyQuantumTransaction() (Hash→CSHA256)
- Add quantum endianness property tests in quantum_endianness_property_tests.cpp
- Update quantum_tests.cpp with additional test coverage
- Add SafeInvoke utility header for Qt thread-safe operations
- Update Makefile.test.include to include new test files
- Update base58.cpp, block_validator.cpp, enhanced_vm.cpp for consistency
- Update Qt models (beenftpage.cpp, beenfttablemodel.cpp/h, hivetablemodel.cpp)
Establishes LE as canonical byte order throughout the quantum witness pipeline, eliminating ad-hoc compensating reversals and fixing the hash function mismatch between GetQuantumID() and VerifyQuantumTransaction().
- Add template parameter T to allow QPointer of any QObject-derived type
- Extract guard.data() to intermediate QObject* variable for clarity
- Maintain null-check safety before invoking queued method
- Improve code readability by separating pointer extraction from method invocation
- Add three new RPC endpoints for contract management: listmycontracts, getcontractstorage, and getcontractreceipts
- Implement listmycontracts to enumerate all contracts deployed by wallet addresses with metadata
- Implement getcontractstorage to retrieve all storage entries for a given contract address
- Implement getcontractreceipts to fetch transaction receipts associated with a contract
- Create new cvmdashboard_contracts.h UI component for contract list, details, storage browser, and transaction history
- Add contract interaction interface with ABI-based function call support
- Update CVMDatabase with new query methods for contract enumeration and receipt filtering
- Add comprehensive test suite in cvm_dashboard_contracts_tests.cpp
- Update build system Makefiles to include new components and tests
- Add detailed specification documents (design.md, requirements.md, tasks.md) for contract management feature
- Enables wallet users to view, manage, and interact with deployed contracts through the dashboard
- Fix for showing 0 mices after a day running
description: 'Release-Job überspringen?'
required: false
default: 'true'
type: boolean
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

skip_release input defined but never checked

Medium Severity

The skip_release workflow input is defined with default: 'true', suggesting the intent is to skip the release job by default on manual triggers. However, the release job's if condition only checks github.event_name == 'workflow_dispatch' and never references inputs.skip_release. This means every manual workflow dispatch will attempt to create a release, which is the opposite of the intended behavior implied by the default value of 'true'.

Additional Locations (1)

Fix in Cursor Fix in Web

Comment thread .github/workflows/build.yml
--with-boost="$BOOST_ROOT" \
MOC="$QT_HOST_BINS/moc" \
UIC="$QT_HOST_BINS/uic" \
RCC="$QT_HOST_BINS/rcc"
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

macOS build missing CVM and quantum support flags

Low Severity

The macOS build's configure step omits --enable-evmc, --with-evmc, --with-evmone, and --enable-quantum flags that are present in the Linux build, and it doesn't install the required dependencies (liboqs, EVMC, evmone). Given this PR is specifically about CVM (EVM Compatible) support, the macOS distribution will lack the core feature being introduced.

Fix in Cursor Fix in Web

else
echo "::error::Keine Run-ID angegeben und kein workflow_run Event"
exit 1
fi
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deploy workflow fails when run_id is empty

Medium Severity

The run_id input description says "leer = letzter erfolgreicher Build" (empty = last successful build), but when a user triggers workflow_dispatch with an empty run_id, the logic falls through to the else branch and exits with an error. The promised fallback to the last successful build is never implemented, so the documented default behavior doesn't work.

Fix in Cursor Fix in Web

chmod +x cascoind cascoin-cli cascoin-tx cascoin-qt cascoind-wrapper cascoin-qt-wrapper 2>/dev/null || true

echo "==> Starting testnet daemon..."
nohup /root/testnetcascoin/cascoind -testnet -shrinkdebugfile > /dev/null 2>&1 &
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seed server deploy missing shared libraries for new dependencies

High Severity

The seed server deployment copies only binaries (no shared libraries) and starts cascoind without setting LD_LIBRARY_PATH. Server 1 and Server 2 deploy the full distribution archive including lib/x86_64-linux-gnu/ and set LD_LIBRARY_PATH, but the seed server path copies individual binaries from the bin/ directory only. With the newly added dynamic dependencies on libevmone, liboqs, and libevmc, the daemon on the seed server will fail to start due to missing shared libraries. The error is also silenced since stdout/stderr goes to /dev/null.

Fix in Cursor Fix in Web

Copy link
Copy Markdown

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.

Comment thread .github/workflows/build.yml
- Remove access control enforcement from block validation (moved to TX submission)
- Log deployment operations for auditing without blocking block acceptance
- Update bytecode extraction to check full witness stack with legacy fallback support
- Fix nonce management by removing duplicate GetNextNonce() calls in DeployContract
- Change failed deployments to consume gas and advance nonce instead of invalidating block
- Add deployment metadata tracking (TX hash and block height) to contract records
- Update contract call failures to not invalidate blocks, matching EVM semantics
- Improve error logging with transaction hash, caller/deployer, and contract address context
- Initialize TrustContext with database reference for reputation lookups
- Ensure failed executions consume full gas limit when VM cannot report actual usage
…zation

- Rename variable `final` to `final_val` in reputation calculation to avoid naming conflicts
- Add serialization support for `unique_partners` std::set in BehaviorMetrics using vector conversion
- Include `securehat.h` header in block_validator.cpp for HAT integration
- Implement `UpdateActivityMetrics()` helper function to update behavior and temporal metrics after CVM activity
- Call `UpdateActivityMetrics()` after contract deployment (both metadata-only and full execution)
- Call `UpdateActivityMetrics()` after contract execution calls to track caller interactions
- Add purple "deploy" edge type to trust graph visualization for contract deployment relationships
- Implement fallback visualization showing contract deployers as standalone nodes when no trust relationships exist
- Display wallet-centric contract deployment graph with contract metadata (format, code size)
@sonarqubecloud
Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
10 Security Hotspots
4.0% Duplication on New Code (required ≤ 3%)
E Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant