Initialise.

This commit is contained in:
Alejandro Cabeza Romero 2026-02-03 18:12:53 +01:00
commit 77c429f2ae
No known key found for this signature in database
GPG Key ID: DA3D14AE478030FD
11 changed files with 1390 additions and 0 deletions

12
.gitignore vendored Normal file
View File

@ -0,0 +1,12 @@
.idea/
.qt/
*.bak
# CMake generated files
.cache/
build/
target/
result
# Node
resources/

204
CMakeLists.txt Normal file
View File

@ -0,0 +1,204 @@
cmake_minimum_required(VERSION 3.20)
project(logos-execution-zone-wallet-module LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
# ---- Options ----
option(LOGOS_MODULE_BUNDLE "Create local runtime bundle in target/." ON)
set(LOGOS_CORE_ROOT "" CACHE PATH "Path to logos-core root directory.")
set(LOGOS_EXECUTION_ZONE_WALLET_ROOT "" CACHE PATH "Path to logos-execution-zone-wallet source root.")
set(LOGOS_EXECUTION_ZONE_WALLET_LIB "" CACHE PATH "Path to prebuilt logos-execution-zone-wallet lib.")
set(LOGOS_EXECUTION_ZONE_WALLET_INCLUDE "" CACHE PATH "Path to prebuilt logos-execution-zone-wallet include.")
set(HAS_LOGOS_CORE_ROOT FALSE)
set(HAS_LOGOS_EXECUTION_ZONE_WALLET_ROOT FALSE)
set(HAS_LOGOS_EXECUTION_ZONE_WALLET_LIB FALSE)
set(HAS_LOGOS_EXECUTION_ZONE_WALLET_INCLUDE FALSE)
if (DEFINED LOGOS_CORE_ROOT AND NOT "${LOGOS_CORE_ROOT}" STREQUAL "")
set(HAS_LOGOS_CORE_ROOT TRUE)
endif()
if (DEFINED LOGOS_EXECUTION_ZONE_WALLET_ROOT AND NOT "${LOGOS_EXECUTION_ZONE_WALLET_ROOT}" STREQUAL "")
set(HAS_LOGOS_EXECUTION_ZONE_WALLET_ROOT TRUE)
endif()
if(DEFINED LOGOS_EXECUTION_ZONE_WALLET_LIB AND NOT "${LOGOS_EXECUTION_ZONE_WALLET_LIB}" STREQUAL "")
set(HAS_LOGOS_EXECUTION_ZONE_WALLET_LIB TRUE)
endif()
if(DEFINED LOGOS_EXECUTION_ZONE_WALLET_INCLUDE AND NOT "${LOGOS_EXECUTION_ZONE_WALLET_INCLUDE}" STREQUAL "")
set(HAS_LOGOS_EXECUTION_ZONE_WALLET_INCLUDE TRUE)
endif()
if (NOT HAS_LOGOS_CORE_ROOT)
message(FATAL_ERROR "LOGOS_CORE_ROOT must be set to the logos-core root directory.")
endif()
if(HAS_LOGOS_EXECUTION_ZONE_WALLET_LIB AND HAS_LOGOS_EXECUTION_ZONE_WALLET_INCLUDE AND NOT HAS_LOGOS_EXECUTION_ZONE_WALLET_ROOT)
message(STATUS "Using prebuilt logos-execution-zone-wallet.")
set(LOGOS_EXECUTION_ZONE_PREBUILT TRUE)
elseif(NOT HAS_LOGOS_EXECUTION_ZONE_WALLET_LIB AND NOT HAS_LOGOS_EXECUTION_ZONE_WALLET_INCLUDE AND HAS_LOGOS_EXECUTION_ZONE_WALLET_ROOT)
message(STATUS "Building logos-execution-zone-wallet from source.")
set(LOGOS_EXECUTION_ZONE_PREBUILT FALSE)
else()
message(FATAL_ERROR "Either both LOGOS_EXECUTION_ZONE_WALLET_LIB and LOGOS_EXECUTION_ZONE_WALLET_INCLUDE must be set for prebuilt logos-execution-zone-wallet, or LOGOS_EXECUTION_ZONE_WALLET_ROOT must be set to build from source.")
endif()
# ---- Qt ----
find_package(Qt6 REQUIRED COMPONENTS Core RemoteObjects)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)
# ---- Directories ----
set(WORKSPACE_ROOT "${CMAKE_BINARY_DIR}/workspace")
file(MAKE_DIRECTORY "${WORKSPACE_ROOT}")
# ---- Logos Core SDK ----
set(SDK_LIB "${LOGOS_CORE_ROOT}/lib/liblogos_sdk.a")
set(SDK_INC "${LOGOS_CORE_ROOT}/include")
# ---- OS Specifics ----
if(APPLE)
set(DYLIB_EXT ".dylib")
elseif(WIN32)
set(DYLIB_EXT ".dll")
set(IMPLIB_EXT ".lib")
else()
set(DYLIB_EXT ".so")
endif()
# NOTE (Windows):
# Rust cdylib typically produces:
# - logos_blockchain.dll (runtime)
# - logos_blockchain.lib (import lib)
# The Windows build hasn't been yet, so adjust accordingly if the DLL is named without the 'lib' prefix.
# ---- Logos Blockchain (build OR consume) ----
if(LOGOS_EXECUTION_ZONE_PREBUILT)
set(LOGOS_EXECUTION_ZONE_DYLIB "${LOGOS_EXECUTION_ZONE_WALLET_LIB}/libwallet_ffi${DYLIB_EXT}")
if(WIN32)
set(LOGOS_EXECUTION_ZONE_IMPLIB "${LOGOS_EXECUTION_ZONE_WALLET_LIB}/wallet_ffi${IMPLIB_EXT}")
endif()
add_custom_target(logos_execution_zone_libs)
else()
find_program(CARGO_EXECUTABLE cargo REQUIRED)
set(CARGO_TARGET_DIR "${WORKSPACE_ROOT}/logos-execution-zone/target")
set(INTERNAL_STAGE "${WORKSPACE_ROOT}/stage")
set(INTERNAL_STAGE_LIB "${INTERNAL_STAGE}/lib")
set(INTERNAL_STAGE_INCLUDE "${INTERNAL_STAGE}/include")
file(MAKE_DIRECTORY "${CARGO_TARGET_DIR}" "${INTERNAL_STAGE_LIB}" "${INTERNAL_STAGE_INCLUDE}")
set(LOGOS_EXECUTION_ZONE_WALLET_LIB "${INTERNAL_STAGE_LIB}")
set(LOGOS_EXECUTION_ZONE_WALLET_INCLUDE "${INTERNAL_STAGE_INCLUDE}")
set(LOGOS_EXECUTION_ZONE_DYLIB "${INTERNAL_STAGE_LIB}/libwallet_ffi${DYLIB_EXT}")
set(LOGOS_EXECUTION_ZONE_HEADER "${INTERNAL_STAGE_INCLUDE}/wallet_ffi.h")
add_custom_command(
OUTPUT "${LOGOS_EXECUTION_ZONE_DYLIB}"
COMMAND ${CMAKE_COMMAND} -E env
CARGO_TARGET_DIR=${CARGO_TARGET_DIR}
${CARGO_EXECUTABLE} build --release
--package wallet-ffi
--manifest-path "${LOGOS_EXECUTION_ZONE_WALLET_ROOT}/Cargo.toml"
COMMAND ${CMAKE_COMMAND} -E copy
"${CARGO_TARGET_DIR}/release/libwallet_ffi${DYLIB_EXT}"
"${LOGOS_EXECUTION_ZONE_DYLIB}"
DEPENDS "${LOGOS_EXECUTION_ZONE_WALLET_ROOT}/Cargo.toml"
VERBATIM
)
add_custom_command(
OUTPUT "${LOGOS_EXECUTION_ZONE_HEADER}"
COMMAND ${CMAKE_COMMAND} -E copy_if_different
"${LOGOS_EXECUTION_ZONE_WALLET_ROOT}/wallet-ffi/wallet_ffi.h"
"${LOGOS_EXECUTION_ZONE_HEADER}"
DEPENDS "${LOGOS_EXECUTION_ZONE_DYLIB}"
VERBATIM
)
add_custom_target(logos_execution_zone_libs DEPENDS "${LOGOS_EXECUTION_ZONE_DYLIB}" "${LOGOS_EXECUTION_ZONE_HEADER}")
endif()
# ---- Imported targets ----
add_library(logos_execution_zone_wallet SHARED IMPORTED GLOBAL)
set_target_properties(logos_execution_zone_wallet PROPERTIES
IMPORTED_LOCATION "${LOGOS_EXECUTION_ZONE_DYLIB}"
INTERFACE_INCLUDE_DIRECTORIES "${LOGOS_EXECUTION_ZONE_WALLET_INCLUDE}"
)
if(NOT LOGOS_EXECUTION_ZONE_PREBUILT)
add_dependencies(logos_execution_zone_wallet logos_execution_zone_libs)
endif()
if(WIN32)
set_target_properties(logos_execution_zone_wallet PROPERTIES IMPORTED_IMPLIB "${LOGOS_EXECUTION_ZONE_IMPLIB}")
endif()
add_library(logos_core STATIC IMPORTED
src/i_logos_execution_zone_wallet_module.h)
set_target_properties(logos_core PROPERTIES
IMPORTED_LOCATION "${SDK_LIB}"
)
add_library(logos_cpp_sdk INTERFACE)
target_include_directories(logos_cpp_sdk INTERFACE "${SDK_INC}")
# ---- Plugin ----
set(PLUGIN_TARGET liblogos-execution-zone-wallet-module)
qt_add_plugin(${PLUGIN_TARGET} CLASS_NAME LogosExecutionZoneWalletModule)
target_sources(${PLUGIN_TARGET} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src/i_logos_execution_zone_wallet_module.h
${CMAKE_CURRENT_SOURCE_DIR}/src/logos_execution_zone_wallet_module.h
${CMAKE_CURRENT_SOURCE_DIR}/src/logos_execution_zone_wallet_module.cpp
${CMAKE_CURRENT_SOURCE_DIR}/metadata.json
)
set_property(TARGET ${PLUGIN_TARGET} PROPERTY PUBLIC_HEADER
${CMAKE_CURRENT_SOURCE_DIR}/src/i_logos_execution_zone_wallet_module.h
)
target_include_directories(${PLUGIN_TARGET} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/src
)
target_link_libraries(${PLUGIN_TARGET} PRIVATE
Qt6::Core
Qt6::RemoteObjects
logos_execution_zone_wallet
logos_cpp_sdk
logos_core
)
add_dependencies(${PLUGIN_TARGET} logos_execution_zone_libs)
if(APPLE)
set_target_properties(${PLUGIN_TARGET} PROPERTIES
BUILD_RPATH "@loader_path"
INSTALL_RPATH "@loader_path"
)
elseif(UNIX)
set_target_properties(${PLUGIN_TARGET} PROPERTIES
BUILD_RPATH "$ORIGIN"
INSTALL_RPATH "$ORIGIN"
)
endif()
# ---- Install ----
install(TARGETS ${PLUGIN_TARGET}
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
RUNTIME DESTINATION bin
PUBLIC_HEADER DESTINATION include
)
install(DIRECTORY "${LOGOS_EXECUTION_ZONE_WALLET_INCLUDE}/" DESTINATION include)
install(FILES "${LOGOS_EXECUTION_ZONE_DYLIB}" DESTINATION lib)

9
README.md Normal file
View File

@ -0,0 +1,9 @@
# Logos Execution Zone Wallet Module
### Setup
#### IDE
If you're using an IDE with CMake integration make sure it points to the same cmake directory as the `justfile`, which defaults to `build`.
This will reduce friction when working on the project.

203
config/testnet.config.yaml Normal file
View File

@ -0,0 +1,203 @@
tracing:
logger: !Stdout
tracing: None
filter: None
metrics: None
console: None
level: DEBUG
network:
backend:
swarm:
host: 0.0.0.0
port: 3010
node_key: ea1e1dcc31612bd20987f017f0ca435cd2a59a4bd9fd6e14883b4803ae3b803d
initial_peers:
# - /dns4/devnet.blockchain.logos.co/udp/3000/quic-v1
# - /dns4/devnet.blockchain.logos.co/udp/3001/quic-v1
# - /dns4/devnet.blockchain.logos.co/udp/3002/quic-v1
# - /dns4/devnet.blockchain.logos.co/udp/3003/quic-v1
- /ip4/127.0.0.1/udp/3000/quic-v1
- /ip4/127.0.0.1/udp/3001/quic-v1
- /ip4/127.0.0.1/udp/3002/quic-v1
- /ip4/127.0.0.1/udp/3003/quic-v1
blend:
non_ephemeral_signing_key_id: 32e4b52b78e0e8273f31e2ae0826d09b0348d4c66824af4f51ec4ef338082211
recovery_path_prefix: ./resources/recovery/blend
core:
backend:
listening_address: /ip4/127.0.0.1/udp/3001/quic-v1
core_peering_degree:
start: 4
end: 8
edge_node_connection_timeout:
secs: 1
nanos: 0
max_edge_node_incoming_connections: 300
max_dial_attempts_per_peer: 3
zk:
secret_key_kms_id: 32e4b52b78e0e8273f31e2ae0826d09b0348d4c66824af4f51ec4ef338082211
edge:
backend:
max_dial_attempts_per_peer_per_message: 1
replication_factor: 1
deployment: mainnet
da_network:
backend:
node_key: ea1e1dcc31612bd20987f017f0ca435cd2a59a4bd9fd6e14883b4803ae3b803d
listening_address: /ip4/127.0.0.1/udp/8716/quic-v1
policy_settings:
min_dispersal_peers: 1
min_replication_peers: 1
max_dispersal_failures: 3
max_sampling_failures: 3
max_replication_failures: 3
malicious_threshold: 5
monitor_settings:
failure_time_window: "10.0"
time_decay_factor: "0.8"
balancer_interval:
secs: 5
nanos: 0
redial_cooldown:
secs: 5
nanos: 0
replication_settings:
seen_message_cache_size: 1000
seen_message_ttl: "3600.0"
subnets_settings:
num_of_subnets: 20
shares_retry_limit: 5
commitments_retry_limit: 5
membership:
replication_factor: 2
subnetwork_size: 2
api_adapter_settings:
api_port: 8722
is_secure: false
subnet_refresh_interval:
secs: 30
nanos: 0
subnet_threshold: 2048
min_session_members: 2
da_verifier:
share_verifier_settings:
global_params_path: ./resources/tests/kzgrs/kzgrs_test_params
domain_size: 2
tx_verifier_settings: null
network_adapter_settings: null
storage_adapter_settings:
blob_storage_directory: ./resources
mempool_trigger_settings:
publish_threshold: 0.8
share_duration: [ 5, 0 ]
prune_duration: [ 30, 0 ]
prune_interval: [ 5, 0 ]
da_sampling:
share_verifier_settings:
global_params_path: ./resources/tests/kzgrs/kzgrs_test_params
domain_size: 2
sampling_settings:
num_samples: 1
num_subnets: 2
old_blobs_check_interval:
secs: 5
nanos: 0
blobs_validity_duration:
secs: 18446744073709551615
nanos: 0
commitments_wait_duration:
secs: 2
nanos: 0
sdp_blob_trigger_sampling_delay:
secs: 5
nanos: 0
http:
backend_settings:
address: 127.0.0.1:8722
cors_origins: [ ]
time:
chain_start_time: [ 2025, 41, 9, 38, 29, 993653000, 0, 0, 0 ]
backend:
update_interval: [ 16, 0 ]
ntp_server: pool.ntp.org
ntp_client_settings:
timeout: [ 5, 0 ]
listening_interface: 0.0.0.0
cryptarchia:
service:
starting_state: !Genesis
genesis_tx:
mantle_tx:
ops:
- opcode: 0
payload:
channel_id: "0000000000000000000000000000000000000000000000000000000000000000"
inscription: [ 103, 101, 110, 101, 115, 105, 115 ] # "genesis" in bytes
parent: "0000000000000000000000000000000000000000000000000000000000000000"
signer: "0000000000000000000000000000000000000000000000000000000000000000"
ledger_tx:
inputs: []
outputs:
- value: 1
pk: d204000000000000000000000000000000000000000000000000000000000000
execution_gas_price: 0
storage_gas_price: 0
ops_proofs: [NoProof]
ledger_tx_proof:
pi_a: [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
pi_b: [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
pi_c: [
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
]
recovery_file: ./resources/recovery/cryptarchia.json
bootstrap:
prolonged_bootstrap_period: [ 86400, 0 ]
force_bootstrap: false
offline_grace_period:
grace_period: [ 1200, 0 ]
state_recording_interval: [ 60, 0 ]
network:
bootstrap:
ibd:
peers:
# - 12D3KooWEiByuYHNv8CpVLFCvKmnRqeExUrFavQfPy1Ch6ZBD4wn
# - 12D3KooWEAcvukmjQovaQiYHoRMiEC1rkHVqNtSdmnqNg5PX4ex1
# - 12D3KooWPWhnJBXR9VKNZBw5sbYtJxWANH9KUwP4JnQDYYvpkxsC
# - 12D3KooWM9oDwdgvN5RF7Xut97vJVMXSNRytoitQAeNSxjGWvTTc
- 12D3KooWRuCV6UDuQuYkmG9Y7x9uU6WV8whJTxQR3zwpEZnXAoFP
- 12D3KooWBztub2cRcTm4G1yir2Wv6ErFcJjiZi2ZBoJwQk9N77aJ
- 12D3KooWRoYTdyWdaxRv4Sr6JUcvwM1NKYqDrVmPRKRau9c5YqS1
- 12D3KooWELj9EaHym8Awaj2V9GgEb2KCNud8Y3Xz5SiiEt9vVw2b
sync:
orphan:
max_orphan_cache_size: 5
leader:
pk: "0000000000000000000000000000000000000000000000000000000000000000"
sk: 3cf3335017304dcfce45124a0633829f00000000000000000000000000000000
storage:
db_path: ./resources/tests/db
read_only: false
column_family: blocks
mempool:
recovery_path: ./resources/recovery/mempool.json
sdp:
declaration: null
wallet_config:
max_tx_fee: 18446744073709551615 # u64::MAX
# SDP funding public key - matches the genesis note pk used for SDP transaction fees
funding_pk: "89b7314f5184bae9eb7fa511098eb321b97b8fbbdec611dda591e0c01e18331d"
wallet:
known_keys:
- "0000000000000000000000000000000000000000000000000000000000000000"
key_management:
keys:
leader_key: !Zk 3cf3335017304dcfce45124a0633829f00000000000000000000000000000000

714
flake.lock generated Normal file
View File

@ -0,0 +1,714 @@
{
"nodes": {
"crane": {
"locked": {
"lastModified": 1769737823,
"narHash": "sha256-DrBaNpZ+sJ4stXm+0nBX7zqZT9t9P22zbk6m5YhQxS4=",
"owner": "ipetkov",
"repo": "crane",
"rev": "b2f45c3830aa96b7456a4c4bc327d04d7a43e1ba",
"type": "github"
},
"original": {
"owner": "ipetkov",
"repo": "crane",
"type": "github"
}
},
"logos-capability-module": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk",
"logos-liblogos": "logos-liblogos_2",
"nixpkgs": [
"logos-liblogos",
"logos-capability-module",
"logos-liblogos",
"nixpkgs"
]
},
"locked": {
"lastModified": 1767809111,
"narHash": "sha256-jehjsB+BpDJlVu3I7x+vFVOdXmy9MDmFTJtRqzFUONo=",
"owner": "logos-co",
"repo": "logos-capability-module",
"rev": "7b35383e0aa4e28a4633ed18a87efb57636939b1",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-capability-module",
"type": "github"
}
},
"logos-capability-module_2": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk_5",
"logos-liblogos": "logos-liblogos_3",
"nixpkgs": [
"logos-module-viewer",
"logos-capability-module",
"logos-liblogos",
"nixpkgs"
]
},
"locked": {
"lastModified": 1764708348,
"narHash": "sha256-UNyZJYZsYD1KfcKS4jQab0GWx8vxZScboo3y3JcFPv4=",
"owner": "logos-co",
"repo": "logos-capability-module",
"rev": "710992469b7650110e7bb5a000ae03a7e8864e66",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-capability-module",
"type": "github"
}
},
"logos-core": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1770127168,
"narHash": "sha256-KgAlvegwSO+aZtJ+GnIV4X6R8KJ46+ySK615x+hOdrw=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "f649e0365ceec6699aff05fe07f8d767ef93a38a",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk": {
"inputs": {
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1761230734,
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_10": {
"inputs": {
"nixpkgs": "nixpkgs_12"
},
"locked": {
"lastModified": 1761230734,
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_2": {
"inputs": {
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1761230734,
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_3": {
"inputs": {
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1767724329,
"narHash": "sha256-UPkqxqxbKwU5Dmu00TnjiJVXUmfVylF3p1qziEuYwIE=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "32f1d7080d784ff044d91d076ef2f0c7305d4784",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_4": {
"inputs": {
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1767724329,
"narHash": "sha256-UPkqxqxbKwU5Dmu00TnjiJVXUmfVylF3p1qziEuYwIE=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "32f1d7080d784ff044d91d076ef2f0c7305d4784",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_5": {
"inputs": {
"nixpkgs": "nixpkgs_7"
},
"locked": {
"lastModified": 1761230734,
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_6": {
"inputs": {
"nixpkgs": "nixpkgs_8"
},
"locked": {
"lastModified": 1761230734,
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_7": {
"inputs": {
"nixpkgs": "nixpkgs_9"
},
"locked": {
"lastModified": 1764699992,
"narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_8": {
"inputs": {
"nixpkgs": "nixpkgs_10"
},
"locked": {
"lastModified": 1764699992,
"narHash": "sha256-nCmK9C9F31cHvy6lWKR5WGl99aJbS3kIsROAoZ4OrwI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "5d0bbd0d1e00aad0532ffa7c8bf2c80f460a4f6d",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-cpp-sdk_9": {
"inputs": {
"nixpkgs": "nixpkgs_11"
},
"locked": {
"lastModified": 1761230734,
"narHash": "sha256-CMRUwXH7pJZ1OI6bd/TDDDXKqQ1tQZHQEOOwK8TgYHI=",
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"rev": "4b143922c190df00bb3835441c9f0075cb28283b",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-cpp-sdk",
"type": "github"
}
},
"logos-execution-zone": {
"inputs": {
"crane": "crane",
"nixpkgs": "nixpkgs_2",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1770129675,
"narHash": "sha256-D9MymFGgDE24gBvXhXrmyXbLFZT1+P4s06baNUJzJoE=",
"owner": "logos-blockchain",
"repo": "lssa",
"rev": "29dfa0b2e36fef56cf5510e24e38ea257e6963f0",
"type": "github"
},
"original": {
"owner": "logos-blockchain",
"ref": "feat/nixify",
"repo": "lssa",
"type": "github"
}
},
"logos-liblogos": {
"inputs": {
"logos-capability-module": "logos-capability-module",
"logos-cpp-sdk": "logos-cpp-sdk_3",
"logos-module": "logos-module",
"nixpkgs": [
"logos-liblogos",
"logos-cpp-sdk",
"nixpkgs"
]
},
"locked": {
"lastModified": 1770066585,
"narHash": "sha256-JrysqKmP48dtsB01u9MmEvGwgJHV59RZHOtbMkLg4Rk=",
"owner": "logos-co",
"repo": "logos-liblogos",
"rev": "d72a55984269c1f863f8ad74b215d9e2672f8d72",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-liblogos",
"type": "github"
}
},
"logos-liblogos_2": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk_2",
"nixpkgs": [
"logos-liblogos",
"logos-capability-module",
"logos-liblogos",
"logos-cpp-sdk",
"nixpkgs"
]
},
"locked": {
"lastModified": 1761845775,
"narHash": "sha256-ulK8xq05ejK6qIgZ7WtWb/MJt2rk5BKfDA2z7mM3wq8=",
"owner": "logos-co",
"repo": "logos-liblogos",
"rev": "a92c2c1268bc70764c8f73c7bce07d21024f5af9",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-liblogos",
"type": "github"
}
},
"logos-liblogos_3": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk_6",
"nixpkgs": [
"logos-module-viewer",
"logos-capability-module",
"logos-liblogos",
"logos-cpp-sdk",
"nixpkgs"
]
},
"locked": {
"lastModified": 1761845775,
"narHash": "sha256-ulK8xq05ejK6qIgZ7WtWb/MJt2rk5BKfDA2z7mM3wq8=",
"owner": "logos-co",
"repo": "logos-liblogos",
"rev": "a92c2c1268bc70764c8f73c7bce07d21024f5af9",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-liblogos",
"type": "github"
}
},
"logos-liblogos_4": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk_8",
"nixpkgs": [
"logos-module-viewer",
"logos-liblogos",
"logos-cpp-sdk",
"nixpkgs"
]
},
"locked": {
"lastModified": 1764788130,
"narHash": "sha256-ieu55pelIMUO/m7fLXUS3JT6sNBBHva0lNc1GRH2hb0=",
"owner": "logos-co",
"repo": "logos-liblogos",
"rev": "3046aa6ac4392a705b2890adec405d7c9d8d4178",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-liblogos",
"type": "github"
}
},
"logos-liblogos_5": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk_10",
"nixpkgs": [
"logos-module-viewer",
"logos-package-manager",
"logos-liblogos",
"logos-cpp-sdk",
"nixpkgs"
]
},
"locked": {
"lastModified": 1761845775,
"narHash": "sha256-ulK8xq05ejK6qIgZ7WtWb/MJt2rk5BKfDA2z7mM3wq8=",
"owner": "logos-co",
"repo": "logos-liblogos",
"rev": "a92c2c1268bc70764c8f73c7bce07d21024f5af9",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-liblogos",
"type": "github"
}
},
"logos-module": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk_4",
"nixpkgs": [
"logos-liblogos",
"logos-module",
"logos-cpp-sdk",
"nixpkgs"
]
},
"locked": {
"lastModified": 1770062426,
"narHash": "sha256-zc7ZxDTlqOCYGyEHhrTA/7GS1EWh7+4amdPUKh+gGds=",
"owner": "logos-co",
"repo": "logos-module",
"rev": "f7ee69d9ad9f27c84f04f59896e9194125e951dc",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-module",
"type": "github"
}
},
"logos-module-viewer": {
"inputs": {
"logos-capability-module": "logos-capability-module_2",
"logos-cpp-sdk": "logos-cpp-sdk_7",
"logos-liblogos": "logos-liblogos_4",
"logos-package-manager": "logos-package-manager",
"nixpkgs": [
"logos-module-viewer",
"logos-liblogos",
"nixpkgs"
]
},
"locked": {
"lastModified": 1765396385,
"narHash": "sha256-sxlpjSLOutqz71SFQIXUa3aY3KUZZe/pWL6+cuIRREs=",
"owner": "logos-co",
"repo": "logos-module-viewer",
"rev": "a4f97447fab84e3188a30e6824e077b80dba210e",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-module-viewer",
"type": "github"
}
},
"logos-package-manager": {
"inputs": {
"logos-cpp-sdk": "logos-cpp-sdk_9",
"logos-liblogos": "logos-liblogos_5",
"nixpkgs": [
"logos-module-viewer",
"logos-package-manager",
"logos-liblogos",
"nixpkgs"
]
},
"locked": {
"lastModified": 1764708254,
"narHash": "sha256-od3z91MNlKo8tk/BEeB0qOl5X87uTGF8+zg9IMZoBAM=",
"owner": "logos-co",
"repo": "logos-package-manager",
"rev": "f3a375fce2a0ddeece8d1eae525f1eefae6b7931",
"type": "github"
},
"original": {
"owner": "logos-co",
"repo": "logos-package-manager",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_10": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_11": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_12": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1770019141,
"narHash": "sha256-VKS4ZLNx4PNrABoB0L8KUpc1fE7CLpQXQs985tGfaCU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "cb369ef2efd432b3cdf8622b0ffc0a97a02f3137",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_4": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_7": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_8": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_9": {
"locked": {
"lastModified": 1759036355,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"logos-core": "logos-core",
"logos-execution-zone": "logos-execution-zone",
"logos-liblogos": "logos-liblogos",
"logos-module-viewer": "logos-module-viewer",
"nixpkgs": [
"logos-liblogos",
"nixpkgs"
]
}
},
"rust-overlay": {
"inputs": {
"nixpkgs": [
"logos-execution-zone",
"nixpkgs"
]
},
"locked": {
"lastModified": 1770088046,
"narHash": "sha256-4hfYDnUTvL1qSSZEA4CEThxfz+KlwSFQ30Z9jgDguO0=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "71f9daa4e05e49c434d08627e755495ae222bc34",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

147
flake.nix Normal file
View File

@ -0,0 +1,147 @@
{
description = "Logos Blockchain Module - Qt6 Plugin";
inputs = {
nixpkgs.follows = "logos-liblogos/nixpkgs";
logos-liblogos.url = "github:logos-co/logos-liblogos";
logos-core.url = "github:logos-co/logos-cpp-sdk";
logos-execution-zone.url = "github:logos-blockchain/lssa?ref=feat/nixify";
logos-module-viewer.url = "github:logos-co/logos-module-viewer";
};
outputs =
{
self,
nixpkgs,
logos-core,
logos-execution-zone,
logos-module-viewer,
...
}:
let
lib = nixpkgs.lib;
systems = [
"x86_64-linux"
"aarch64-linux"
"aarch64-darwin"
"x86_64-windows"
];
forAll = lib.genAttrs systems;
mkPkgs = system: import nixpkgs { inherit system; };
in
{
packages = forAll (
system:
let
pkgs = mkPkgs system;
llvmPkgs = pkgs.llvmPackages;
logosCore = logos-core.packages.${system}.default;
logosExecutionZoneWalletPackage = logos-execution-zone.packages.${system}.wallet;
logosExecutionZoneModulePackage = pkgs.stdenv.mkDerivation {
pname = "logos-execution-zone-module";
version = "dev";
src = ./.;
nativeBuildInputs = [
pkgs.cmake
pkgs.ninja
pkgs.pkg-config
pkgs.qt6.wrapQtAppsHook
];
buildInputs = [
pkgs.qt6.qtbase
pkgs.qt6.qtremoteobjects
pkgs.qt6.qttools
llvmPkgs.clang
llvmPkgs.libclang
logosExecutionZoneWalletPackage
]
++ lib.optionals pkgs.stdenv.isDarwin [
pkgs.libiconv
pkgs.cacert
];
LIBCLANG_PATH = "${llvmPkgs.libclang.lib}/lib";
CLANG_PATH = "${llvmPkgs.clang}/bin/clang";
SSL_CERT_FILE = lib.optionalString pkgs.stdenv.isDarwin "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
cmakeFlags = [
"-DLOGOS_CORE_ROOT=${logosCore}"
"-DLOGOS_EXECUTION_ZONE_WALLET_LIB=${logosExecutionZoneWalletPackage}/lib"
"-DLOGOS_EXECUTION_ZONE_WALLET_INCLUDE=${logosExecutionZoneWalletPackage}/include"
];
};
in
{
module = logosExecutionZoneModulePackage;
default = logosExecutionZoneModulePackage;
}
);
apps = forAll (
system:
let
pkgs = mkPkgs system;
logosExecutionZoneModulePackage = self.packages.${system}.module;
logosModuleViewerPackage = logos-module-viewer.packages.${system}.default;
extension = if pkgs.stdenv.isDarwin then "dylib"
else if pkgs.stdenv.hostPlatform.isWindows then "dll"
else "so";
in
{
default = {
type = "app";
program =
"${pkgs.writeShellScriptBin "inspect-module" ''
exec ${logosModuleViewerPackage}/bin/logos-module-viewer \
--module ${logosExecutionZoneModulePackage}/lib/liblogos-execution-zone-wallet-module.${extension}
''}/bin/inspect-module";
};
}
);
devShells = forAll (
system:
let
pkgs = mkPkgs system;
pkg = self.packages.${system}.default;
logosCorePackage = logos-core.packages.${system}.default;
logosExecutionZoneWalletPackage = logos-execution-zone.packages.${system}.wallet;
in
{
default = pkgs.mkShell {
inputsFrom = [ pkg ];
inherit (pkg)
LIBCLANG_PATH
CLANG_PATH;
LOGOS_CORE_ROOT = "${logosCorePackage}";
LOGOS_EXECUTION_ZONE_WALLET_LIB = "${logosExecutionZoneWalletPackage}/lib";
LOGOS_EXECUTION_ZONE_WALLET_INCLUDE = "${logosExecutionZoneWalletPackage}/include";
shellHook = ''
BLUE='\e[1;34m'
GREEN='\e[1;32m'
RESET='\e[0m'
echo -e "\n''${BLUE}=== Logos Execution Zone Module Development Environment ===''${RESET}"
echo -e "''${GREEN}LOGOS_CORE_ROOT:''${RESET} $LOGOS_CORE_ROOT"
echo -e "''${GREEN}LOGOS_EXECUTION_ZONE_WALLET_LIB:''${RESET} $LOGOS_EXECUTION_ZONE_WALLET_LIB"
echo -e "''${GREEN}LOGOS_EXECUTION_ZONE_WALLET_INCLUDE:''${RESET} $LOGOS_EXECUTION_ZONE_WALLET_INCLUDE"
echo -e "''${BLUE}---------------------------------------------------------''${RESET}"
'';
};
}
);
};
}

21
justfile Normal file
View File

@ -0,0 +1,21 @@
default: build
configure:
cmake -S . -B build -G Ninja \
${LOGOS_CORE_ROOT:+-DLOGOS_CORE_ROOT="$LOGOS_CORE_ROOT"} \
${LOGOS_EXECUTION_ZONE_WALLET_LIB:+-DLOGOS_EXECUTION_ZONE_WALLET_LIB="$LOGOS_EXECUTION_ZONE_WALLET_LIB"} \
${LOGOS_EXECUTION_ZONE_WALLET_INCLUDE:+-DLOGOS_EXECUTION_ZONE_WALLET_INCLUDE="$LOGOS_EXECUTION_ZONE_WALLET_INCLUDE"}
build: configure
cmake --build build --parallel --target liblogos-execution-zone-wallet-module
clean:
rm -rf build target
rebuild: clean configure build
nix:
nix develop
unicode-logs file:
perl -pe 's/\\u([0-9A-Fa-f]{4})/chr(hex($1))/ge' {{file}} | less -R

12
metadata.json Normal file
View File

@ -0,0 +1,12 @@
{
"name": "liblogos-execution-zone-wallet-module",
"version": "1.0.0",
"description": "Logos Execution Zone Wallet Module for Logos Core",
"author": "Logos Blockchain Team",
"type": "blockchain",
"category": "blockchain",
"main": "LogosExecutionZoneWalletModule",
"dependencies": [],
"capabilities": [],
"include": ["libnomos.dylib"]
}

View File

@ -0,0 +1,25 @@
#ifndef I_LOGOS_EXECUTION_ZONE_WALLET_MODULE_API_H
#define I_LOGOS_EXECUTION_ZONE_WALLET_MODULE_API_H
#include <core/interface.h>
#ifdef __cplusplus
extern "C" {
#endif
#include <wallet_ffi.h>
#ifdef __cplusplus
}
#endif
class ILogosExecutionZoneWalletModule {
public:
virtual ~ILogosExecutionZoneWalletModule() = default;
// Logos Core
virtual void initLogos(LogosAPI* logosAPIInstance) = 0;
};
#define ILogosExecutionZoneWalletModule_iid "org.logos.ilogosexecutionzonewalletmodule"
Q_DECLARE_INTERFACE(ILogosExecutionZoneWalletModule, ILogosExecutionZoneWalletModule_iid)
#endif

View File

@ -0,0 +1,22 @@
#include "logos_execution_zone_wallet_module.h"
#include <QtCore/QDebug>
#include <iostream>
LogosExecutionZoneWalletModule::LogosExecutionZoneWalletModule() = default;
LogosExecutionZoneWalletModule::~LogosExecutionZoneWalletModule() {
}
QString LogosExecutionZoneWalletModule::name() const {
return "liblogos-execution-zone-wallet-module";
}
QString LogosExecutionZoneWalletModule::version() const {
return "1.0.0";
}
void LogosExecutionZoneWalletModule::initLogos(LogosAPI* logosAPIInstance) {
}

View File

@ -0,0 +1,21 @@
#pragma once
#include "i_logos_execution_zone_wallet_module.h"
class LogosExecutionZoneWalletModule final : public QObject, public PluginInterface, public ILogosExecutionZoneWalletModule {
Q_OBJECT
Q_PLUGIN_METADATA(IID ILogosExecutionZoneWalletModule_iid FILE "../metadata.json")
Q_INTERFACES(PluginInterface)
public:
LogosExecutionZoneWalletModule();
~LogosExecutionZoneWalletModule() override;
// Logos Core
[[nodiscard]] QString name() const override;
[[nodiscard]] QString version() const override;
Q_INVOKABLE void initLogos(LogosAPI*) override;
signals:
void eventResponse(const QString& eventName, const QVariantList& data);
};