Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
a3523dd
refactor: update Elasticsearch and Typesense database methods for imp…
AdriGeorge Jul 2, 2026
2f67b3f
chore: 1378
AdriGeorge Jul 2, 2026
e893228
chore: 1383
AdriGeorge Jul 2, 2026
03b112e
chore: 1384
AdriGeorge Jul 2, 2026
94a9c47
chore: 1386
AdriGeorge Jul 2, 2026
27d9ae7
chore: 1392
AdriGeorge Jul 2, 2026
df30b84
chore: 1394
AdriGeorge Jul 3, 2026
129164a
chore: 1395
AdriGeorge Jul 3, 2026
900e7b9
fix: fix
AdriGeorge Jul 3, 2026
7914907
fix: add logs
AdriGeorge Jul 3, 2026
74f2699
fix: fix
AdriGeorge Jul 3, 2026
862341f
fix: fix
AdriGeorge Jul 3, 2026
dc0dddc
fix: fix
AdriGeorge Jul 3, 2026
5c924d1
fix: logs
AdriGeorge Jul 3, 2026
76c9262
fix: fix
AdriGeorge Jul 3, 2026
51f88b0
fix: fix
AdriGeorge Jul 3, 2026
13661cc
fix: logs
AdriGeorge Jul 3, 2026
2b49042
fix: add logs
AdriGeorge Jul 3, 2026
4eb8976
fix: fix
AdriGeorge Jul 3, 2026
b06a399
fix: remove logs
AdriGeorge Jul 3, 2026
35528a0
fix: logs
AdriGeorge Jul 3, 2026
b24c91d
Merge pull request #142 from OceanProtocolEnterprise/feat/upsert-fix
AdriGeorge Jul 3, 2026
cd60cc8
Merge branch 'feat/stage' of https://github.com/OceanProtocolEnterpri…
AdriGeorge Jul 3, 2026
d35a2b0
fix: fix
AdriGeorge Jul 3, 2026
b7ff404
fix: fix
AdriGeorge Jul 3, 2026
9a04815
fix: packages dump
AdriGeorge Jul 8, 2026
9aa658d
fix: build and lint
AdriGeorge Jul 10, 2026
7eb889e
Merge branch 'feat/stage' of https://github.com/OceanProtocolEnterpri…
AdriGeorge Jul 10, 2026
5ad03c5
fix: test
AdriGeorge Jul 10, 2026
1573b08
fix: test
AdriGeorge Jul 10, 2026
849f457
fix: tests
AdriGeorge Jul 10, 2026
9b3d29f
fix: tests
AdriGeorge Jul 10, 2026
aeda474
fix: test
AdriGeorge Jul 10, 2026
837ce13
fix: contracts
AdriGeorge Jul 13, 2026
5b36fbd
fix: tests escrow
AdriGeorge Jul 13, 2026
3af5581
Merge pull request #143 from OceanProtocolEnterprise/feat/sync-july
AdriGeorge Jul 13, 2026
7a82f02
feat: add findMetadataEventInLogs function and corresponding tests
AdriGeorge Jul 15, 2026
45664f3
Merge pull request #145 from OceanProtocolEnterprise/feat/hardcoded-e…
AdriGeorge Jul 15, 2026
906e919
chore: v3.2.2
AdriGeorge Aug 10, 2026
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
57 changes: 56 additions & 1 deletion docs/API.md
Original file line number Diff line number Diff line change
Expand Up @@ -1329,6 +1329,61 @@ updates node configuration and reloads it gracefully (admin only)

---

## Get Escrow Events

### `HTTP` GET /api/services/escrow/events?

### `HTTP` POST /directCommand

### `P2P` command: getEscrowEvents

#### Description

Returns indexed Escrow contract events. The indexer matches Escrow logs by topic hash, verifies they came from the chain's `Escrow` contract (`Deposit`/`Withdraw`/`Lock` are generic signatures), and stores one row per event in the append-only `escrow` collection keyed by `${txHash}-${logIndex}`. All filters are optional.

#### Parameters

| name | type | required | description |
| --------- | ------ | --------- | --------------------------------------------------------- |
| command | string | POST only | command name (`getEscrowEvents`) |
| chainId | number | | chain id |
| eventType | string | | one of `Auth, Lock, Claimed, Canceled, Deposit, Withdraw` |
| payer | string | | payer address (case-insensitive) |
| payee | string | | payee address (case-insensitive) |
| token | string | | token address (case-insensitive) |
| jobId | string | | compute job id |
| txId | string | | transaction hash |
| offset | number | | rows to skip (default 0) |
| size | number | | page size (default 100, max 250) |

#### Request (POST /directCommand)

```json
{ "command": "getEscrowEvents", "chainId": 8996, "eventType": "Deposit", "offset": 0, "size": 50 }
```

#### Response

Every row has `id, eventType, chainId, contract, block, txHash` plus event-specific fields (`payer, payee, token, jobId, amount, expiry, proof, maxLockedAmount, maxLockSeconds, maxLockCounts`).

```json
[
{
"id": "0x39f3...6575-3",
"eventType": "Deposit",
"chainId": 8996,
"contract": "0x282d...a1a1",
"block": 55,
"txHash": "0x39f3...6575",
"payer": "0xbe54...ab5e",
"token": "0x282d...a1a1",
"amount": "100000000000000000000"
}
]
```

---

# Compute

For starters, you can find a list of algorithms in the [Ocean Algorithms repository](https://github.com/oceanprotocol/algo_dockers) and the docker images in the [Algo Dockerhub](https://hub.docker.com/r/oceanprotocol/algo_dockers/tags).
Expand Down Expand Up @@ -1464,7 +1519,7 @@ starts a free compute job and returns jobId if succesfull
| queueMaxWaitTime | number | | optional max time in seconds a job can wait in the queue before being started |
| encryptedDockerRegistryAuth | string | | Ecies encrypted docker auth schema for image (see [Private Docker Registries with Per-Job Authentication](../env.md#private-docker-registries-with-per-job-authentication)) |
| output | string | | Ecies encrypted with instructions for uploading compute results (see [C2D result upload to remote storage](../Storage.md#c2d-result-upload-to-remote-storage)) |

| outputBucketId | string | | persistent-storage bucket id; the bucket is mounted at /data/outputs and results are stored there as individual files. Mutually exclusive with `output` (see [persistent storage](../persistentStorage.md#using-a-bucket-for-compute-job-outputs)) |
#### Request

```json
Expand Down
1 change: 1 addition & 0 deletions docs/Arhitecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@ An off-chain, multi-chain metadata & chain events cache. It continually monitors
- validates DDO, according to multiple SHACL schemas
- provides proof for valid DDOs
- monitors datatokens contracts & stores orders
- monitors the Escrow contract events (Auth, Lock, Claimed, Canceled, Deposit, Withdraw) and stores them for querying
- allows querys for all the above
- supports graceful shutdown and chain-specific reindexing

Expand Down
2 changes: 2 additions & 0 deletions docs/Storage.md
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,8 @@ FTPStorage supports `upload(filename, stream)`. If the file object’s `url` end

Compute-to-Data jobs can upload their output archive to a remote backend instead of keeping it only on local node disk.

Alternatively, results can be stored as individual files in a node persistent-storage bucket via the `outputBucketId` start parameter — see [persistent storage](./persistentStorage.md#using-a-bucket-for-compute-job-outputs). The two options are mutually exclusive.

### How it works

1. You build a `ComputeOutput` JSON object with:
Expand Down
43 changes: 43 additions & 0 deletions docs/persistentStorage.md
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,49 @@ Upload uses the raw request body as bytes and forwards it to the handler as a st

---

## Using a bucket for compute job outputs

Compute jobs (free and paid) can store their results directly in a persistent storage bucket instead of the default `outputs.tar` archive. Pass the bucket id as `outputBucketId` in the start compute command:

```json
{
"command": "freeStartCompute",
"...": "...",
"outputBucketId": "a4ad237d-dfd8-404c-a5d6-b8fc3a1f66d3"
}
```

How it works:

- The bucket directory is bind-mounted **read-write** at `/data/outputs` inside the job container, so everything the algorithm writes there lands directly in the bucket as **individual files** (no archive, no copy step). Files appear in the bucket as the job writes them.
- No local `outputs.tar` is produced and the job's results index contains no `output` entry; logs (`imageLog`, `configurationLog`, `algorithmLog`) behave as usual. Results are retrieved via the persistent storage list/get APIs.
- The consumer starting the job must be the bucket owner or on the bucket access list, otherwise the start request is rejected with `403`.
- `outputBucketId` is **mutually exclusive** with the `output` (remote storage upload) parameter — sending both returns `400`.
- Files keep the names the algorithm gives them; writing an existing name **overwrites** it, so pipelines can re-run jobs with stable filenames.
- Nested directories created by the algorithm under `/data/outputs` are not visible through the bucket API (bucket filenames are flat); algorithms should write top-level files.

### Chaining jobs

Because results are regular bucket files, they can feed the next compute job without any intermediate download — use the standard `nodePersistentStorage` file object as a dataset:

```json
{
"command": "freeStartCompute",
"...": "...",
"datasets": [
{
"fileObject": {
"type": "nodePersistentStorage",
"bucketId": "a4ad237d-dfd8-404c-a5d6-b8fc3a1f66d3",
"fileName": "result-from-previous-job.csv"
}
}
],
"outputBucketId": "a4ad237d-dfd8-404c-a5d6-b8fc3a1f66d3"
}
```

---
## Limitations and notes

- The bucket registry is local to the node (SQLite file). If you run multiple nodes, each node’s registry is independent unless you externalize/replicate it.
Expand Down
Loading
Loading