Provide Platform Quickstart Guide
Distributed Ledger Technology (DLT) Overview
A distributed ledger is a consensus of ledger entries referencing other data sources. The ledger of transactions or contracts is supported by a decentralized network without the need of central authority. Each participant (or node) of the network can access the recordings and keep an identical copy of the ledger. In permissioned ledgers, participants are able to maintain anonymity while allowing others the permission of seeing the transaction. The records can be accessed using cryptographic keys. Each ledger is uniquely identified in the form of a hash. The individual has a secure key that can access their record.
Records of value and transactions are stored in the ledger sequentially and cryptographically in linked blocks. Transactions become immutable since transaction is binded to every preceding transaction in the ledger. Each time that a transaction is added to the ledger a new hash is computed, all participants are sent a copy within seconds or minutes.
The blocks also store transactions and smart contract code.
Welcome to Provide
This guide gives an overview of how to use the Provide platform. It is meant to be an overview of how to most efficiently use the console—hitting the major features of the platform that will help you accelerate your application deployment.
The developer console hosts dApps and the associated contracts. This guide will walk a developer through the process of using the Provide Platform with a sample dApp. It is not meant to demonstrate all the functionality of the console, but rather to showcase a practical use. For a demonstration of full versatility, create an account, download the CLI, and/or request a demo from Provide.
Provide makes smart contract deployment incredibly simple. Developers who have traditionally deployed smart contracts using tools such as Truffle, Ganache, Infura, Metamask, and public testnets such as Ropsten and Rinkeby will feel comfortable on both the console and in the CLI. Those new to smart contract deployment will find Provide’s modern developer interface easy to learn and use. Existing development teams will be able to build DLT and blockchain applications without learning blockchain.
Provide exposes a modern REST API for interacting with a configured set of DLT infrastructure. The Provide REST APIs affect interaction with decentralized networks and applications and are metered on a per-account and per-user basis for billing and customer success purposes. Provide’s infrastructure (i.e., the console webapp) uses these same APIs to provide service to users. API calls made from your application are billable to your application, and API calls made on behalf of your account by any of Provide’s applications (i.e., the console webapp) are not billable.
A structured, end-to-end solution providing scalable orchestration of distributed ledger compute and storage networks (i.e., blockchain with IPFS), protocols and unprecedented interoperability with traditional programming paradigms and technology stacks. Facilities are provided for building best-of-breed distributed ledger applications (i.e., decentralized applications or dApps).
Decentralized Application (dApp)
A decentralized application is an application run by many users on a decentralized network of nodes with trustless protocols. They are designed to avoid any single point of failure.
Distributed infrastructure deployed with or without Provide’s orchestration services and configured for use with the Provide platform to provide best-of-breed rails to building blockchain and distributed ledger applications.
Cryptographically-secure digital wallets capable of holding one or more network-specific cryptocurrencies or tokens and signing transactions on behalf of platform users. A signing identity is automatically created for new applications. Signing identities may be non-managed through decentralization.
Provide Platform Overview
The Provide Platform is a scalable, protocol and consensus agnostic platform-as-a-service (PaaS) for deploying public or permissioned blockchain networks. Built by developers for developers, Provide creates a modern developer experience with easy-to-understand APIs capable of creating highly interoperable software.
The Provide platform helps your blockchain developers operationalize smart contracts for use in decentralized applications and integration into enterprise application architectures. The transactions, signing identities, oracles, and other decentralized application elements are then presented in a web UI for easy viewing and manipulation. Once satisfied that your dApp is behaving as expected on a testnet, the abstraction layers created in the Provide Platform allow you to redeploy your application to production seamlessly.
Provide’s structured platform abstracts away much of the setup work required for contract and node deployment. Fully functional dApps can be up and running across hundreds of nodes in minutes.
Provide’s API-enabled blockchain enables your team to use programming languages they already know. Upon contract deployment, the console issues an API token which allows the developer to generate API calls for individual contract methods in the language of their choice.
Currently supported formats include curl, golang, groovy, js promise, js rxjs, js typed promise, js typed rxjs, python, ruby, and swift.
The Provide Platform helps DevOps engineers achieve predictable, reusable deployment orchestration across a variety of networks. By default, deployment is supported against the Provide Bitcoin and Ethereum testnets. To enable your own networks or access mainnets, see the deploying nodes documentation.
Networks, Protocols and Consensus Algorithms
The Provide Platform is built to support a wide array of networks, protocols and consensus algorithms. If yours is not in this list there is a chance we may have a version of support in development. Email email@example.com with your business case to request access.
- Network support
- Bcoin (beta)
- Handshake (beta)
- Hyperledger (beta)
- Quorum (beta)
- Cloud infrastructures
- Azure (beta)
- Amazon Web Services
- Ethereum clients
- ewasm (beta)
- Consensus algorithms
- Tendermint (beta - Hyperledger only)
Console Web Application
The Provide Console Web Application is a full-featured user interface for developers to configure, manage and deploy dApps, including the use of bridges, oracles and connectors. It also contains a block inspector, access to your user account, and access to your tokenized APIs.
Provide’s Command Line Interface is designed for administrators who prefer to perform quick tasks through a shell, such as deploying their smart contracts. All actions from the CLI can be inspected in the console. For information on the CLI commands, see the CLI documentation.
A basic GDPR.sol contract developed using the mocha/chai test frameworks (i.e., for the EVM using mainstream tooling). The contract was debugged in Remix. Truffle is used to deploy the contract to Ganache for testing if needed. The tests have passed, and contract is ready for action.
We’re ready to use the Provide console.
Create an Account
Sign up on the Provide site.
Choose a Network
The first thing a developer does is choose a network on which to target. Let’s deploy our GDPR contract to a supported EVM-based public testnet. This is done by selecting the corresponding network:
The developer is then taken to the project dashboard. By clicking + beside “DApps” we create a space for our GDPR project in the console. We enter a name for our dApp and confirm the testnet. The GDPR Compliance dApp is created and ready to be managed.
Deploying Smart Contracts
In our DApps panel, we click on the blue gear under Actions to expose the panels which allow us to take actions on our dApp. Here we click on the + beside “Smart Contracts.” This takes us to a pane where we can deploy our GDPR.sol contract. We grab the contract bytecode and ABI from Remix or Truffle and plug it into the console.
A wallet/signing identity is automatically created for us by Provide.
We can see the contract was successfully deployed to the testnet in the “Recent Transactions” section, where we are given the hash. The wallet used to deploy the contract is visible in the “Signing Identities (Wallets)” section. Additionally, an API token is created.
Managed Signing Identities (Wallets)
Creating a new wallet is as easy as clicking on the +. All transactions associated with our contract are visible in the Recent Transactions section, as well as an associated “success” or “failure” status.
Now the developer can use the platform to create API calls from the contract methods. In the “Smart Contracts” panel under Actions, we click < >.
Beneath the ABI Helper panel, we instantly receive setup instructions and a usage example for golang:
Clicking the blue “Call ABI” button gives us the request and response:
Unused in this example are options for including and manipulating Oracles, Bridges, and Connectors, as well as a Usage Summary.
Without Provide, forward-thinking decision-makers incur the steep implementation costs of complicated, unreliable, blockchain-specific toolchains. The normal development process for deploying contracts can be cumbersome, error-prone, and painful.
With Provide, it’s possible to leverage your current development team to quickly execute multi-chain pilot projects without tooling- and language-specific ramp-ups. Provide gives your team the ability to focus dev time on your use cases instead of platform development.