This repository defines a framework for the specification of Standards for Computing Resources available on Golem ecosystem. It is supplementary to Golem Demand & Offer Specification Language and is meant to prescriptively implement structure in a broad space of conceivable services.
The computation resources offered for trade on Golem marketplaces are described by a generic meta-language of Demands & Offers. The specification language is designed to be broad and open, however by itself it does not specify the possible space of resources/services. It comprises the grammar, rather than semantics. We acknowledge the fact that computation resources can be defined via a multitude of aspects, which we call “dimensions”. A single distinguishable service requires a combination of different specifications describing different aspects of this service’s existence on Golem marketplaces. Each of these dimensions can benefit from standardisation, and the dimension standards can be perceived as largely independent from each other. Therefore we consider this multidimensional standard space as an open and powerful framework.
As mentioned above, a “dimension” defines a single aspect of resource’s/service’s definition. A dimension standard defines rules which must be followed by elements of resource’s Offer so that it can be considered a standardised Offer. A dimension standard may specify, among others:
The Golem Standards repository consists of following sections/categories:
List fo Golem Factory supported properties: Cheat sheet
A property indicates a specific aspect of its issuer (Requestor or Provider) or an Agreement which is being negotiated between the parties. Properties can be generally split into following classes:
Fact
is a property which indicates an objective fact, an attribute of the issuer, a trait which cannot be adjusted or negotiated. Examples of facts can be: payment address, node id, etc.Negotiable
property is a property which must be agreed by both sides of the Agreement, and can be adjusted as a result of a negotiation. Examples of negotiable properties are: payment platform, pricing terms, etc.Facts
and Negotiables
require respective representations in Demands, Offers and resulting agreements:
Facts
are indicated only by their issuers, which means they are specified in respective Demand/Offer.Negotiables
can be first indicated by one side, but a confirmation of the property value is required from the alternate side.
All properties are Facts
by default. Negotiable
properties follow a naming convention which includes property name to be postfixed by ?
character. All negotiable
properties are also explicitly marked as such in respective standard documents.
Negotiables
required?There are a couple of reasons for the Negotiable
property convention:
Negotiable
properties in their Proposal expects the other side to understand the semantics of those properties. Yet, the market matching mechanism does not include (intentionally) the validation of whether properties of a Demand are properly ‘understood’ by the Provider (and vice versa). Therefore the responder is expected to explicitly ‘confirm’ they are familiar with a received property - by repeating it in their counter-Proposal.
Negotiable
property does not receive the ‘confirmation’ in the response - it may still choose to accept that proposal, yet there may be risk involved (eg. the other side may run an older version of agent software which does not support a particular property).Properties (and usage conters) marked as Deprecated
are still supported in the current version of the Standard, but will be removed in one of subsequent versions of the Standard. The deprecation rules as indicated in the Golem Compatibility Policy shall be followed.