The new RFC process is off to a bright start with the Remove Transaction Managers proposal by who else, but @dirvine …looks to be another evolutionary leap for SAFE.
Summary
Have network only recognise two primary data types, Immutable and Structured.
These types will have tag_ids to allow them to contain several data types that can be used in the network by users of the client interface. This does mean a change to default behaviour and is, therefore a significant change.
ImmutableData has already two sub-types (Backup and Sacrificial).
This proposal should simplify the sentinel and interfaces from routing to users of routing as there will be no need to pass down type information (i.e. how to get the name or owner etc.). These types can actually be defined in the routing library, allowing users of the library to use the type_tag to create their own types and actions on those types.
Motivation
Why?
The primary goal is two fold, reduce network traffic (by removing an indirection, of looking up a value and using that as a key to lookup next) and also to remove complexity (thereby increasing security).
Another facet of this proposal is extendability.
In networks such as SAFE for instance, client app developers can define their own types (say of the fix protocol for financial transactions) and instanciate this type on the network. For users creating their own network they may whitelist or blacklist types and type_id’s as they wish, but the possibility would exist for network builders (of new networks) to allow extensibility of types.
What cases does it support?
This change supports all use of non immutable data (structured data). This covers all non content only data on the network and how it is handled:
(1) Data storage and retrieval
ImmutableData is fixed self validating non mutable chunks. These require StructuredData types to manipulate information.
These structured Data types may then create a global application acting on a key value store with very high degrees of availablity and security (i.e. create network scale apps)
Such apps could easily include medical condition analysis linked with genomic and proteomic sequencing to advance health based knowledge on a global scale. This proposal allows such systems to certainly be prototyped and tested with a high degree of flexibility.
(2) New protocols
As these data types are now self validating and may contain different information, such as new protocols, rdf/owl data types, the limit of new data types and ability to link such data is extremely scalable. Such protocols could indeed easily encompass token based systems (a form of ‘crypto-currency’), linked data, natural language learning databases, pre-compilation units, distributed version control systems (git like) etc.
(3) Compute
Such a scheme would allow global computation types, possibly a Domain Specific Language (DSL) would define operator types to allow combination of functions. These could be made monotonic and allow out of order processing of programs (disorderly programming) which in itself presents an area that may prove to be well aligned with decentralised ‘intelligence’ efforts.
Linked with ‘zk-snarks’ to alleviate any ‘halting problem’ type issues then a global turing complete programming environment that optionally acts on semantic (‘owl’ / ‘json-ld’ etc.) data is a possible.
Expected outcome
It is expected removing Transaction Managers from network will reduce complexity, code and increase security on the network, whilst allowing a greater degree of flexibility.
These types now allow the users of this network to create their own data types and structures to be securely managed. This is hoped to allow many new types of application to exist.