Releases: golemfactory/dapp-runner
0.3.1
Release Notes - dapp-runner v0.2.0
New Features
Partner Scheme Support
- Added support for Partner Scheme when using outbound networking.
- New
manifest_path
andnode_descriptor_path
parameters replace base64-encoded manifest fields. Simply point to the two JSON files and let dapp-runner handle the rest.
Configuration Changes
Simplified Manifest Configuration
The runtime: "vm/manifest"
payload type now supports a more user-friendly configuration:
Recommended (New Partner Scheme):
payloads:
external-api-request:
runtime: "vm/manifest"
params:
manifest_path: "./manifest.json" # Plain JSON file
node_descriptor_path: "./node-descriptor.signed.json" # Signed descriptor file
capabilities:
- inet
- manifest-support
Legacy Method for outbound (Not Recommended):
payloads:
external-api-request:
runtime: "vm/manifest"
params:
manifest: "<base64-encoded-manifest>"
manifest_cert: "<base64-encoded-cert>"
manifest_sig: "<base64-encoded-signature>"
manifest_sig_algorithm: "sha256"
capabilities:
- inet
- manifest-support
Complete Example
Using the new Partner Scheme (example in dapp-store):
meta:
name: "External API request [EXPERIMENTAL]"
description: "Example of a payload allowing external API requests"
author: "Golem Factory"
payloads:
external-api-request:
runtime: "vm/manifest"
params:
manifest_path: "./manifest.json"
node_descriptor_path: "./node-descriptor.signed.json"
capabilities:
- inet
- manifest-support
nodes:
external-api-request:
payload: "external-api-request"
init:
- ["/bin/sh", "-c", "GOLEM_PRICE=`curl --silent -X 'GET'
'https://api.coingecko.com/api/v3/simple/price?ids=golem&vs_currencies=usd'
-H 'accept: application/json' | jq .golem.usd`;
echo \"Golem price: $GOLEM_PRICE USD\";"]
Benefits of Partner Scheme
- No need to manually base64 encode files
- Simpler configuration with direct file paths
- Improved readability and maintainability
- Reduced chance of configuration errors
Notes
- The legacy manifest verification method is still supported but not recommended as it's hard to manage.
- Partner Scheme is the preferred method for outbound networking.
Breaking Changes
None. All changes are backward compatible.
0.3.0
What's Changed
- Suspend and Resume by @shadeofblue in #118
- temporarily blacklist failing providers by @shadeofblue in #122
Full Changelog: 0.2.0...0.3.0
0.3.0-alpha.0
What's Changed
- 0.2 to main by @shadeofblue in #119
- Suspend and Resume by @shadeofblue in #118
- temporarily blacklist failing providers by @shadeofblue in #122
Full Changelog: 0.2.0...0.3.0-alpha.0
0.2.0
Changelog
There are three major pieces of functionality delivered with the 0.2.0 release:
GAOM API
As implemented so far, the Golem Application Object Model API enables external applications (including the dapp-manager
) to query the internal state of dapp-runner
and the application it's running, including the configured payloads, networks and service instances. It provides information regarding their detailed state, as well as e.g. which specific provider a given component is deployed to.
To enable the API, pass --enable-api
flag to the dapp-runner
executable. It listens on the localhost's port 8000
by default.
Example GAOM node entry:
nodes:
db:
activity:
id: 78f6a128984746c7bb0f53297acc845a
agreement:
id: 5f04d196925ccc2ccfb41c403c5163715fbcda419ad49024a1ca2fa29d4789f0
provider_id: '0xdcb36cd6f3704879978c1322708f757b0c82d709'
provider_name: golem2004_0.h
depends_on: []
http_proxy: null
init:
- cmd: run
params:
args:
- /bin/run_rqlite.sh
ip: []
network: default
network_node:
ip: 192.168.0.2
node_id: '0xdcb36cd6f3704879978c1322708f757b0c82d709'
payload: db
state: running
tcp_proxy: null
Additionally, the values of the model can now contain references to GAOM itself, e.g.:
nodes:
http:
payload: "http"
init:
- run:
args: ["/bin/bash", "-c", "python app.py --db-address ${nodes.db.network_node.ip}"]
Dynamically generated manifests
There's no longer need to prepare a manifest for apps that connect to external network locations defined within providers' whitelists. In cases like that, a manifest requires no signature and can be generated on the fly.
Example:
payloads:
backend:
runtime: "vm/manifest"
params:
manifest_generate:
image_hash: "e3c964343169d0a08b66751bfba89a90ec97544d8752c9a3e4ae0901"
outbound_urls:
- "http://bor.golem.network"
Manifest verification support
On the other hand, when a manifest is indeed provided, dapp-runner
will now automatically perform its validation, checking whether it satisfies the schema, whether it's within its validity period and whether its contents are consistent with the provided signature (if used).
Details
Major features
- GAOM API by @shadeofblue in #102 and #104
- Support for dynamically generated VM payload manifests by @shadeofblue in #106
- Manifest verification support by @shadeofblue in #112
Minor features
- add a representation of nodes in a pre-pending state by @shadeofblue in #105
Maintenance
- Port
dapp-runner
topydantic
by @shadeofblue in #100
Full Changelog: 0.1.2...0.2.0
0.2.0-alpha.0
What's Changed
- 0.1 to main by @shadeofblue in #95
- 0.1 to main by @shadeofblue in #99
- Port
dapp-runner
topydantic
by @shadeofblue in #100 - GAOM API foundation by @shadeofblue in #102
- add support for dynamically generated vm payload manifests by @shadeofblue in #106
- add a representation of nodes in a pre-pending state by @shadeofblue in #105
- 0.1.1 to main by @lucekdudek in #111
- GAOM Query and descriptor value interpolation by @shadeofblue in #104
- Manifest verification support by @shadeofblue in #112
- 0.1 to master by @shadeofblue in #114
Full Changelog: 0.1.2...0.2.0-alpha.0
0.1.2
What's Changed
- update yapapi to 0.10.1 by @shadeofblue in #113 to support the goerli testnet by default
Full Changelog: 0.1.1...0.1.2
0.1.1
What's Changed
- fix the
dpath
dependency by @shadeofblue in #109 - Move logger yapapi import to enable_logger function by @lucekdudek in #108
Full Changelog: 0.1.0...0.1.1
0.1.0
Golem dApp Runner 0.1.0
Hello Golem community, we hereby present you the first release of our experimental project - the dapp-runner
.
dapp-runner
is a utility that allows you to run decentralized applications on Golem.
It uses simple application descriptors expressed in yaml
, similar to those used by
tools like docker-compose
.
dapp-runner
runs alongside the Golem daemon
and uses yapapi, Golem's Python high-level API
to communicate with it. As opposed to using plain yapapi
though, deployment of
applications on Golem using dapp-runner
requires no code and no experience in Python.
GAP-16 / Multi-service application deployment framework
In its present form, the dapp-runner
constitutes an initial reference implementation
of the multi-service application deployment framework described in
GAP-16.
Following features of the framework are currently supported:
- Descriptor "Apply" operation
- Single-YAML package support
- Merging descriptor files
- GAOM explicit dependency syntax
- GAOM object dependency graph [currently limited to the services' explicit dependency syntax]
Relationship with dapp-manager
While the dapp-runner
is perfectly capable of running decentralized apps on its own, we are also
providing a separate tool to facilitate running and managing multiple applications on a single
machine, namely, the dapp-manager.
dApp Manager keeps track of the launched apps and allows you to easily query their output streams.
It uses the dapp-runner
as its back-end and both require the yagna daemon to communicate with the
rest of the Golem Network.
Next steps
For a more complete introduction to dApps on Golem, please have a look at the README file and at our documentation.
0.1.0-alpha.1
What's Changed
- add loglevel selection argument by @shadeofblue in #92
Full Changelog: 0.1.0a0...0.1.0a1
0.1.0-alpha.0
What's Changed
- use the
public
subnet by default by @shadeofblue in #71 - Remove entrypoint support by @lucekdudek in #75
- support for ingress commands by @shadeofblue in #74
- Added "timestamp" and "app" fields in state stream by @approxit in #78
- fix for BrokenPipeError by @lucekdudek in #80
- Fix pending tasks errors on shutdown (#51) by @approxit in #81
- bump the dapp-store by @shadeofblue in #83
- Unified task runner scripts by @approxit in #82
- update line lengths to
100
by @shadeofblue in #84 - Test factories for
Runner
by @shadeofblue in #85 - Add an happy path goth integration tests by @lucekdudek in #88
- Race condition while spawning proxies by @lucekdudek in #90
- Random alternated goth config files by @lucekdudek in #91
New Contributors
- @lucekdudek made their first contribution in #75
- @approxit made their first contribution in #78
Full Changelog: 0.0.0a3...0.1.0a0