Codeless Creation of Decentralized Apps using the Crowd App Studio (Part 2)

BLOG: Part 2 of this 2 part series highlights Crowd App Studio’s integration, release management, security, blockchain agnostic support functionality including the relationship with Crowd Share

Craig Sproule — 15 February 2018

Integration

The Crowd App Studio provides many approaches for integrating with external solutions including integration with Third Party APIs, databases and authentication services. It also provides extensive RESTful API support for both request and response operations allowing the consumption and publishing of RESTful APIs. All forms of authentication types are supported including OAuth2. Templates are provided to automate the authentication process with many of the more popular vendors such as Google, Facebook, Twitter and others.

Release Management

The Crowd App Studio contains the ability to perform app releases to the Crowd Computer. Patterns are versioned and moved from Development to Staging and then Production as required. Dependency analysis is conducted whenever releases are conducted. When inconsistencies are detected, the developer is presented with a list of potential release issues and the release process is halted until the issues are resolved. Replication of the app Patterns across the Crowd Computer is undertaken automatically on the developer’s behalf. There is no requirement to utilize deployment containers such as Docker.

Security

Crowd Machine remains compliant with a number of standard protocols to ensure that user, device and service provider authentication requirements are challenged according to security standards. Each tier of the Crowd Machine product employs independent security mechanisms, including multiple levels of firewalls and standard industry intrusion detection and prevention mechanisms.

At its core, every user on the Network is assigned a profile associated with a private key that drives both the authentication and authorization mechanisms. For a user to obtain a profile, it must be allocated to them either by an app developer or via an app running on the Crowd Computer. A verification process is used to ensure the details of the profile are valid.

Authentication

Authentication is achieved through a custom security model which is defined by app developers. The authentication is implemented using a standard username and password model, or via integration with an external SAML2 provider, which is uniquely linked to a given profile. The model includes an administrator configurable password policy, which can be strengthened as needed (e.g. increase the frequency of password changes). Once a given profile has been authenticated, the profile is authorized to access a limited set of resources on the Network (e.g. Patterns), based on the custom security model.

Authorization is achieved using OAUTH2 which governs the issuing of tokens for a given profile and then subsequently used to approve requests to access specific resources. The Network and CVM (Crowd Virtual Machine) have been designed to verify access tokens at various boundaries in the Network and on the CVM.

Additional security measures can be applied at a logical level within an app. The developer can optionally extend the security layer to restrict access using natural language expressions. Permissions can also be applied to groups and directory based objects natively or via expressions.

Developers have extensive access control to their apps. Natural language expressions can be formed to control permissions or behaviors within an app. Crowd Machine applies industry standard cryptographic protocols to all communications and data.

The following diagram illustrates the application of the security model across the network. All network communications are cryptographically secured.

Events and Event Scheduling

Data and time events can be captured by Crowd Machine and used to initiate Patterns. After defining an event to be monitored in the Crowd App Studio, it is linked to an app Pattern causing automatic Pattern execution upon occurrence of that event. Patterns can also be scheduled to execute at specific times as well as being subject to natural language expression invocation. Additionally, events are used to disrupt or alter Pattern behavior as required.

Developers can schedule events to invoke a Pattern. They can also create data event monitors where a change of data state can be linked to a Pattern — causing the Pattern to fire when the data state is altered.

Blockchain and Auto-Expression of Smart Contract Methods

Events can be used to induce blockchain Oracle apps. By creating an event that monitors the state of an arbitrary data source, any change in that state can result in the invocation of a Pattern, which executes its defined function. The Pattern in turn may call a Smart Contract method to perform a desired task.

The Crowd App Studio allows the developer to import an Ethereum smart contract Application Binary Interface (“ABI”). The process of importing the ABI generates method definitions for use within Crowd Machine natural language expressions. The methods can be called from expressions to enable interaction with the smart contract as required.

By providing the ability to monitor the state of data and make calls to smart contract methods, Crowd Machine brings unlimited extensibility to Ethereum smart contracts. Apps can be created to extend the power of the smart contract where the contract itself is limited in its functional capability. It is an off-chain method of providing capabilities such as workflow, third party system integration, process management or any other requirement to the smart contract.

The following screenshot illustrates the ingestion of an Ethereum smart contract. Once ingested, the smart contract methods are available to call from within Crowd Machine.

Agnostic Blockchain Support

Crowd Machine is blockchain agnostic. It allows off-chain apps to be created and run on the Network that integrate with existing blockchains and smart contracts. The Crowd App Studio allows decentralized apps to be created that dramatically extend the flexibility and power of blockchain deployed smart contracts.

The following diagram illustrates Crowd Machines blockchain agnostic approach. Crowd machine supports RESTful API and direct smart contract method calls for integration into blockchains.

Crowd Machine will shortly be releasing functionality to facilitate the rapid creation of Ethereum Smart Contracts without writing code. Smart Contracts are being implemented as a Pattern behavior with contract specific requirements defined using Crowd Machine natural expressions. Crowd Machine natural expressions are then converted to Solidity for compilation. At time of compilation the ABI will be automatically imported, and expressions generated and made available as Crowd Machine natural language expression calls. Crowd Machine will also be hosting a test network for deployment and test of Smart Contracts. Upon release of Simplicity, Crowd Machine will also support generation of Bitcoin Smart Contracts.

Crowd Machine’s blockchain agnostic approach allows an app to interact with any number of blockchains required. A developer may elect to have their app function with blockchains that provide specific capabilities such as authentication, payment transactions or title transfer as examples. There is no limit to the type or number of blockchains that a Crowd Machine app can leverage.

Crowd Share

Crowd Share is a GitHub-like source repository enabling the commercialization of source code by the developer community. It allows developers to monetize their intellectual capital in an open marketplace. Crowd Share is a growing repository of ready to use, plug and play Patterns, allowing apps to be assembled rather than created from the ground up. Crowd Share further accelerates app time to market.

The Crowd Share Ecosystem

The Crowd Share ecosystem allows the developer community to share their apps and Patterns, and dramatically accelerates delivery of apps. It is an app marketplace where Crowd Machine content can be downloaded and consumed free of charge by Crowd Machine customers. Crowd Machine sets aside a percentage of the revenue generated by its customers to compensate the developer community for the lifetime of the customer. The following diagram outlines how the Crowd Share ecosystem functions.

The Crowd Share compensation model is based on the consumption of Patterns. For example, assume that a Crowd Machine customer is paying $180,000 per annum for their Crowd Machine use, the customer is using 10 Patterns contributed by a developer, and those 10 Patterns represent 10% of the customer’s consumption. The compensation to that developer would be as follows –

If 50 customers were using those same Patterns at the same consumption rate, then the developer would be earning $135,000 per annum. The Crowd Share model also takes into consideration the complexity of the Pattern, and allows for derivative works where compensation is distributed across all parties who have participated in those works. Each upload and download of a behavior from Crowd Share is written to a blockchain which provides a mechanism to trace derivative works and identifies the payment pathway. The technology removes any dispute as to content ownership and rights.