Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# CODEOWNERS — reviewed by the workflow-security group for high-risk paths.
# Docs: https://docs.github.com/en/repositories/managing-your-repositories-settings-and-security/customizing-your-repository/about-code-owners
#
# The workflow-security group reviews CI/CD attack surface. Domain reviewers
# provide functional review via a separate CODEOWNERS entry per repo.

# Workflow files and composite actions — mandatory review by workflow-security.
/.github/workflows/ @qubic/workflow-security
/.github/actions/ @qubic/workflow-security
/.github/CODEOWNERS @qubic/workflow-security

# Repository-level automation config — mandatory review by workflow-security.
/.github/dependabot.yml @qubic/workflow-security
39 changes: 39 additions & 0 deletions .github/workflows/lint-workflows.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Lint workflows

on:
pull_request:
paths:
- '.github/workflows/**'
- '.github/actions/**'

concurrency:
group: lint-workflows-${{ github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
actionlint:
name: actionlint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false
- name: Run actionlint
uses: reviewdog/action-actionlint@50842263c20a7c46bd0065b9e624d3c569db061e # v1.73.0
with:
fail_on_error: true

zizmor:
name: zizmor
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false
- name: Run zizmor
uses: zizmorcore/zizmor-action@6599ee8b7a49aef6a770f63d261d214911a7ce02 # v0.6.0
with:
persona: auditor
Binary file added data/bpp9000.task
Binary file not shown.
15 changes: 15 additions & 0 deletions doc/oc_protocol_spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -220,6 +220,21 @@ The engine MAY track, for each `(invocationId, ocPeerId)` pair, whether the bund
This state is private to each Core node, MUST NOT enter snapshots, and MUST NOT be exposed via public RPC.
See section 8 for delivery rules.

### 5.3 Status-change logging

Nodes built with `LOG_OC` enabled emit a log event of type `OC_INVOCATION_STATUS_CHANGE` (message type 16) on every consensus-status transition, i.e. on entering `PENDING_AUTH`, `AUTHORIZED`, and `TIMEOUT`.

Logged payload (17 bytes, fields in order):

| Field | Type | Description |
|------------------|--------------------|----------------------------------------------|
| `invocationId` | `long long` | Invocation ID (section 2.1). |
| `contractIndex` | `unsigned int` | Index of the invoking contract. |
| `interfaceIndex` | `unsigned int` | OC interface index. |
| `status` | `unsigned char` | The `OC_INVOCATION_STATUS_*` value entered. |

This is optional node-side event logging for external log subscribers, NOT consensus state. Delivery status (section 5.2) is never logged: it is node-local and non-deterministic. The `QuTransfer` fee burn (section 10) is logged immediately before the `PENDING_AUTH` event in the same tick, which lets subscribers attribute the burn to the invocation. If `startContractInvocation` fails and the fee is refunded, no status event is emitted.


## 6. QPI surface

Expand Down
43 changes: 28 additions & 15 deletions src/Qubic.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
<ClInclude Include="contracts\math_lib.h" />
<ClInclude Include="contracts\MsVault.h" />
<ClInclude Include="contracts\MyLastMatch.h" />
<ClInclude Include="contracts\qpi.h" />
<ClInclude Include="contracts\Quottery.h" />
<ClInclude Include="contracts\QUtil.h" />
<ClInclude Include="contracts\Qx.h" />
Expand Down Expand Up @@ -63,28 +62,16 @@
<ClInclude Include="contract_core\execution_time_accumulator.h" />
<ClInclude Include="contract_core\ipo.h" />
<ClInclude Include="contract_core\pre_qpi_def.h" />
<ClInclude Include="contract_core\qpi_asset_impl.h" />
<ClInclude Include="contract_core\qpi_collection_impl.h" />
<ClInclude Include="contract_core\qpi_ipo_impl.h" />
<ClInclude Include="contract_core\qpi_mining_impl.h" />
<ClInclude Include="contract_core\qpi_oracle_impl.h" />
<ClInclude Include="contract_core\qpi_spectrum_impl.h" />
<ClInclude Include="contract_core\qpi_system_impl.h" />
<ClInclude Include="contract_core\qpi_hash_map_impl.h" />
<ClInclude Include="contract_core\qpi_linked_list_impl.h" />
<ClInclude Include="contract_core\qpi_ticking_impl.h" />
<ClInclude Include="contract_core\qpi_trivial_impl.h" />
<ClInclude Include="contract_core\stack_buffer.h" />
<ClInclude Include="contract_core\qpi_proposal_voting.h" />
<ClInclude Include="files\files.h" />
<ClInclude Include="logging\logging.h" />
<ClInclude Include="logging\net_msg_impl.h" />
<ClInclude Include="mining\custom_qubic_mining_storage.h" />
<ClInclude Include="mining\mining.h" />
<ClInclude Include="mining\score_addition.h" />
<ClInclude Include="mining\score_bpp9000.h" />
<ClInclude Include="mining\score_common.h" />
<ClInclude Include="mining\score_engine.h" />
<ClInclude Include="mining\score_hyperidentity.h" />
<ClInclude Include="mining\task_file.h" />
<ClInclude Include="network_core\peers.h" />
<ClInclude Include="network_core\tcp4.h" />
<ClInclude Include="network_messages\all.h" />
Expand Down Expand Up @@ -116,6 +103,11 @@
<ClInclude Include="oracle_interfaces\Mock.h" />
<ClInclude Include="oracle_interfaces\Price.h" />
<ClInclude Include="oc_core\core_oc_network_messages.h" />
<ClInclude Include="oc_core\oc_engine.h" />
<ClInclude Include="oc_core\oc_interfaces_def.h" />
<ClInclude Include="oc_core\oc_transactions.h" />
<ClInclude Include="oc_core\snapshot_files.h" />
<ClInclude Include="oc_interfaces\Mock.h" />
<ClInclude Include="platform\assert.h" />
<ClInclude Include="platform\concurrency.h" />
<ClInclude Include="four_q.h" />
Expand All @@ -137,6 +129,27 @@
<ClInclude Include="platform\time_stamp_counter.h" />
<ClInclude Include="platform\global_var.h" />
<ClInclude Include="platform\virtual_memory.h" />
<ClInclude Include="qpi\impl\qpi_assets_impl.h" />
<ClInclude Include="qpi\impl\qpi_collection_impl.h" />
<ClInclude Include="qpi\impl\qpi_hash_map_impl.h" />
<ClInclude Include="qpi\impl\qpi_ipo_impl.h" />
<ClInclude Include="qpi\impl\qpi_linked_list_impl.h" />
<ClInclude Include="qpi\impl\qpi_mining_impl.h" />
<ClInclude Include="qpi\impl\qpi_oc_impl.h" />
<ClInclude Include="qpi\impl\qpi_oracle_impl.h" />
<ClInclude Include="qpi\impl\qpi_proposals_impl.h" />
<ClInclude Include="qpi\impl\qpi_spectrum_impl.h" />
<ClInclude Include="qpi\impl\qpi_system_impl.h" />
<ClInclude Include="qpi\impl\qpi_ticking_impl.h" />
<ClInclude Include="qpi\impl\qpi_trivial_impl.h" />
<ClInclude Include="qpi\qpi.h" />
<ClInclude Include="qpi\qpi_assets.h" />
<ClInclude Include="qpi\qpi_containers.h" />
<ClInclude Include="qpi\qpi_context.h" />
<ClInclude Include="qpi\qpi_date_time.h" />
<ClInclude Include="qpi\qpi_macros.h" />
<ClInclude Include="qpi\qpi_proposals.h" />
<ClInclude Include="qpi\qpi_types.h" />
<ClInclude Include="revenue.h" />
<ClInclude Include="score.h" />
<ClInclude Include="platform\m256.h" />
Expand Down
130 changes: 89 additions & 41 deletions src/Qubic.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,6 @@
<ClInclude Include="contracts\math_lib.h">
<Filter>contracts</Filter>
</ClInclude>
<ClInclude Include="contracts\qpi.h">
<Filter>contracts</Filter>
</ClInclude>
<ClInclude Include="contracts\Quottery.h">
<Filter>contracts</Filter>
</ClInclude>
Expand Down Expand Up @@ -169,21 +166,12 @@
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="vote_counter.h" />
<ClInclude Include="contract_core\qpi_collection_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_proposal_voting.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contracts\EmptyTemplate.h">
<Filter>contracts</Filter>
</ClInclude>
<ClInclude Include="contracts\GeneralQuorumProposal.h">
<Filter>contracts</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_trivial_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contracts\SupplyWatcher.h">
<Filter>contracts</Filter>
</ClInclude>
Expand All @@ -206,21 +194,6 @@
<ClInclude Include="platform\assert.h">
<Filter>platform</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_spectrum_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_system_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_hash_map_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_linked_list_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_asset_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="assets\net_msg_impl.h">
<Filter>assets</Filter>
</ClInclude>
Expand All @@ -239,9 +212,6 @@
<ClInclude Include="ticking\ticking.h">
<Filter>ticking</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_ticking_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="ticking\tick_storage.h">
<Filter>ticking</Filter>
</ClInclude>
Expand Down Expand Up @@ -270,9 +240,6 @@
<ClInclude Include="contract_core\ipo.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_ipo_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="contracts\TestExampleD.h">
<Filter>contracts</Filter>
</ClInclude>
Expand All @@ -292,9 +259,6 @@
<Filter>platform</Filter>
</ClInclude>
<ClInclude Include="revenue.h" />
<ClInclude Include="contract_core\qpi_mining_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="ticking\pending_txs_pool.h">
<Filter>ticking</Filter>
</ClInclude>
Expand Down Expand Up @@ -343,9 +307,6 @@
<ClInclude Include="platform\memory_util.h">
<Filter>platform</Filter>
</ClInclude>
<ClInclude Include="contract_core\qpi_oracle_impl.h">
<Filter>contract_core</Filter>
</ClInclude>
<ClInclude Include="network_messages\network_message_type.h">
<Filter>network_messages</Filter>
</ClInclude>
Expand All @@ -367,10 +328,10 @@
<ClInclude Include="mining\score_engine.h">
<Filter>mining</Filter>
</ClInclude>
<ClInclude Include="mining\score_hyperidentity.h">
<ClInclude Include="mining\score_bpp9000.h">
<Filter>mining</Filter>
</ClInclude>
<ClInclude Include="mining\score_addition.h">
<ClInclude Include="mining\task_file.h">
<Filter>mining</Filter>
</ClInclude>
<ClInclude Include="contracts\qRWA.h">
Expand All @@ -388,9 +349,87 @@
<ClInclude Include="platform\virtual_memory.h">
<Filter>platform</Filter>
</ClInclude>
<ClInclude Include="oc_core\oc_engine.h">
<Filter>oc_core</Filter>
</ClInclude>
<ClInclude Include="oc_core\oc_interfaces_def.h">
<Filter>oc_core</Filter>
</ClInclude>
<ClInclude Include="oc_core\oc_transactions.h">
<Filter>oc_core</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi_types.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi_containers.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi_assets.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi_proposals.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi_context.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi_macros.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\qpi_date_time.h">
<Filter>qpi</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_assets_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_collection_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_hash_map_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_ipo_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_linked_list_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_mining_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_oc_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_oracle_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_proposals_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_spectrum_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_system_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_ticking_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="qpi\impl\qpi_trivial_impl.h">
<Filter>qpi\impl</Filter>
</ClInclude>
<ClInclude Include="oc_core\core_oc_network_messages.h">
<Filter>oc_core</Filter>
</ClInclude>
<ClInclude Include="oc_core\snapshot_files.h">
<Filter>oc_core</Filter>
</ClInclude>
<ClInclude Include="oc_interfaces\Mock.h">
<Filter>oc_interfaces</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<Filter Include="platform">
Expand Down Expand Up @@ -435,9 +474,18 @@
<Filter Include="oracle_core">
<UniqueIdentifier>{a42dd6f2-617c-4fbc-b3ec-f51975e5c447}</UniqueIdentifier>
</Filter>
<Filter Include="qpi">
<UniqueIdentifier>{c1a2bec9-4637-4079-a00c-a7234e854fb5}</UniqueIdentifier>
</Filter>
<Filter Include="qpi\impl">
<UniqueIdentifier>{09aad857-4f8c-40c8-9ffb-41fcfcbef0ba}</UniqueIdentifier>
</Filter>
<Filter Include="oc_core">
<UniqueIdentifier>{632d0d96-29d2-4b1d-bb23-7f055e7d32b1}</UniqueIdentifier>
</Filter>
<Filter Include="oc_interfaces">
<UniqueIdentifier>{804c1cd3-c9f7-4f71-bc5e-a66907c4d63f}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<MASM Include="platform\custom_stack.asm">
Expand Down
Loading
Loading