Skip to content

Releases: golemfactory/dapp-runner

0.3.1

26 Nov 12:54
Compare
Choose a tag to compare

Release Notes - dapp-runner v0.2.0

New Features

Partner Scheme Support

  • Added support for Partner Scheme when using outbound networking.
  • New manifest_path and node_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

29 Aug 08:35
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.2.0...0.3.0

0.3.0-alpha.0

28 Aug 12:11
Compare
Choose a tag to compare
0.3.0-alpha.0 Pre-release
Pre-release

What's Changed

Full Changelog: 0.2.0...0.3.0-alpha.0

0.2.0

29 Jun 21:05
Compare
Choose a tag to compare

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

Minor features

Maintenance

Full Changelog: 0.1.2...0.2.0

0.2.0-alpha.0

20 Jun 15:39
Compare
Choose a tag to compare
0.2.0-alpha.0 Pre-release
Pre-release

What's Changed

Full Changelog: 0.1.2...0.2.0-alpha.0

0.1.2

12 Jun 16:45
Compare
Choose a tag to compare

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

04 Apr 08:41
7e7a3a4
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.1.0...0.1.1

0.1.0

07 Mar 05:26
Compare
Choose a tag to compare

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

23 Feb 09:32
Compare
Choose a tag to compare

What's Changed

Full Changelog: 0.1.0a0...0.1.0a1

0.1.0-alpha.0

16 Feb 12:19
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.0.0a3...0.1.0a0