Cherty
  • 🌎Welcome to Cherty!
  • ☑️Reusable Computation
    • ⚙️Data Structures
    • 📋Versioning
  • 👍Authentication
  • 🪐Permissioned IPFS
Powered by GitBook
On this page
  • Script Object
  • Port Object
  • Function Object
  • Function Table
  • Connection Object
  • Execution Method
  • Environment
  • Type Object
  1. Reusable Computation

Data Structures

Pop(plæ)r.network version 1.0.1

PreviousReusable ComputationNextVersioning

Last updated 8 months ago

Script Object

A JSON object with the keys below. This is divided into two parts: the script content which is meant to be cryptographically verifiable, and script metadata such as version and provenance information. While the metadata may affect the interpretation of the script content, it does not affect its execution.

  • script_content : object with keys:

    • name: human-readable name (str)

    • script_id: identifier starting 'sc_' (str)

    • inputs: array of

    • outputs: array of

    • functions: array of

    • connections: array of

    • git_info: object with keys

      • commit_hash (str)

      • diffs: array of strings

      • remote_url (str)

      • repo_name (str)

      • branch_name (str)

      • commit_message (str)

      • commit_author (str)

      • commit_date: timestamp (int)

    • script_path: path to the script file from the repository root (str)

    • entry_point: command to run script (str)

    • execution_method: default method where this script is expected to be run chosen from the (str)

    • execution_params: object with keys defined in the based on execution_method

    • environment: execution environment chosen from the understood to be a default environment for running the script (examples: 'anaconda', 'docker'; str)

    • environment_params: object with keys defined in the based on environment value

    • resource_type: 'script'

    • protocol_name: 'poplar.network' or 'Pop(plæ)r.network'

    • protocol_version: '1.0.1'

    • description: human-readable long description (str)

    • preview_image: object with keys

      • img_cid: content identifier of a preview image

      • mime_type: type of this image (str)

    • author: array of objects with keys

      • name: str

      • id_cid:

    • timestamp: timestamp (int)

  • script_content_string: stringified version of the script_content object

  • cid: of the script_content_string

  • version: of the script

  • provenance: array of with attestations matching the cid above

  • local_path: in the context of a given machine, the local path to the script file. Should not be published, in general.

  • increment: default version increment, 'major' / 'minor' / 'patch'

Port Object

An object with keys:

  • id: randomly generated id for this port object; must be a string that is unique within the namespace of input and output ports for this script

  • name: human readable string

Function Object

Extensible object for defining a function, which may or may not be a wrapper for a script. Has keys:

  • id: str starting with a '#'

  • name: str

  • definition: Object with keys

    • content: definition of the function based on method value

The id labels of all input and output ports for a single function form a name space, and must be chosen to avoid collisions.

Function Table

Ways of defining transformations in Pop(plæ)r

Definition Method
Definition Content

'script'

Connection Object

A connection object connects two ports in the context of a script. The ports may be script input ports, script output ports, or the ports of functions contained in the script. The connection object has keys:

  • from: id of a port

  • to: id of a port

  • data: CID of a data_object

The id of a port will be prefaced with the function id if it is a port of a function. For example, "#prt_globalInput" might be the name of an input port in this script, while "#myfn_id.#prt_functionIn" might be the id of a input port.

Execution Method

A representation of an execution method used for this function. Used to signal to the user whether this function is expected to be run locally, in a compute cluster, in a browser, on a blockchain, or in another context. The schema for execution_params depends on the value chosen.

Execution Method Value
Description
Execution Parameters

'child_process'

Expected to be run on a desktop or laptop computer in the Cherty app

{}

An execution method should be interpreted as a recommendation to the user, which may be necessary to follow if your computation needs to be reproduced efficiently or exactly. It should be possible in principle to run any given script using other methods, but it might crash your browser or use an unsupported VM.

Environment

Definition of the recommended computing environment for a script.

Environment Value
Description

Runs in an anaconda environment defined by explicit list of conda dependencies

Environment output with "--explicit" flag

Type Object

Extensible object for defining data types. Has keys:

  • type: str

  • method: str

Example #1: {method: ‘mime_type’, type: ‘application/json’} for MIME types

Example #2: {method: ‘poplar_type’, type: ‘float’} for primitive types

type:

inputs: array of

outputs: array of

method: str chosen from

CID of a script_content object,

☑️
⚙️
conda_explicit
type_object
port_objects
port_objects
Function Table
script_object.cid
version_object
Liquicert provenance objects
port_objects
port_objects
function_objects
connection_objects
Execution Method Table
Execution Method Table
Environment Table
Environment Table
CID of an id_object