-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #41 from Convex-Dev/develop
Latest docs update
- Loading branch information
Showing
18 changed files
with
287 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
--- | ||
title: Key Concepts | ||
authors: [convex] | ||
tags: [convex] | ||
--- | ||
|
||
## Overview | ||
|
||
Convex is a decentralised platform for the Internet of Value, offering flexibility and scalability far beyond the capabilities of traditional blockchains. In particular, it is designed to support high volume, interactive applications used directly by end users such as for mobile apps, payments and gaming. | ||
|
||
|
||
## Governance | ||
|
||
Convex is governed by the non-profit Convex Foundation. The Foundation performs the following activities: | ||
|
||
- Ensures good governance of the Convex Network | ||
- Operates key resources on behalf of the community, including the https://convex.world website and developer resources such as GitHub repositories | ||
- Acts as this initial issuer of Convex Coins to individuals and organisations, inlciding management of the release curve | ||
- Provides awards for contributors to Convex (e.g. open source developers) | ||
- Supports the development of the Convex ecosystem via partnerships, marketing, education and other initiatives |
5 changes: 5 additions & 0 deletions
5
papers/convex-whitepaper.md → docs/overview/convex-whitepaper.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,8 @@ | ||
--- | ||
title: White Paper | ||
authors: [convex] | ||
tags: [convex, technology] | ||
--- | ||
# Convex White Paper | ||
|
||
## Abstract | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
--- | ||
title: FAQ | ||
authors: [convex] | ||
tags: [convex] | ||
--- | ||
|
||
Some answers to common questions can be found here. | ||
|
||
|
||
## Is Convex Free? | ||
|
||
Yes! Convex is free for anyone to use and build applications upon, and always will be. We are building Convex for everyone to support the Internet of Value. | ||
|
||
To make use of the resources of the network, small transaction fees are charged using Convex Coins, which is the native utility token of the network. This is important for serveral reasons: | ||
|
||
- Compensate those who provide important secure infrastructure to the network (i.e. peer operators) | ||
- Prevent denial of service attacks by people flooding the network with wasteful transactions. This makes it very expensive to launch such attacks. | ||
- Create an economic incentive to use the network as efficiently as possible (both for users and developers of smart contracts) | ||
|
||
Our goal is to keep transaction fees small, so that it is never a significant issue for legitimate network users. | ||
|
||
|
||
## How fast is Convex? | ||
|
||
Convex can comfortably process many thousands of complex transactions per second (e.g. transfers and smart contract calls). The CVM itself has been benchmarked at over 1,000,000 TPS on a modern desktop PC. And as we continue making performance improvements it is getting faster by the day. | ||
|
||
But it's important to note that performance and scalability are not just about the raw throughput of transactions. Convex is designed to offer a good overall combination of: | ||
|
||
- Low latency to stable consensus (below 0.5s seconds on a global network) | ||
- High execution throughput (e.g. 50,000+ token-based smart contract transactions per second) | ||
- Advanced features (smart contracts, memory accounting, an on-chain compiler, autonomous Actors) | ||
- A unified global state machine supporting atomic transactions | ||
- True decentralisation as a public utility network (with Convergent Proof of Stake) | ||
- Ability to operate a Peer with affordable hardware | ||
|
||
We achieve all this *without* resorting to over-complicated scaling solutions that introduce various new problems (e.g. cross-shard transactions). We can always add additional scaling features later, but it may not even be necessary. | ||
|
||
|
||
## How do I integrate my application with Convex? | ||
|
||
Convex provides several mechanisms for integration. | ||
|
||
For most decentralised apps, it is easy to build a client-side application that makes use of the **Client API**. This is a convenient REST API using JSON that is ideal for web and mobile applications developers. | ||
|
||
Advanced applications can use the **Binary API** and construct messages directly to communicate with Peers. This is currently only possible for JVM-based languages (Java, Clojure, Scala etc.), but more may be supported in the future. | ||
|
||
Integrators can also use **Direct Peer Integration** where they run a fully operational Convex Peer alongside their server-side applications. This approach is complex and recommended only if you want maximum performance and/or want to interact with the CVM state directly (e.g. for search or indexing purposes). The convex.world server itself uses this technique. | ||
|
||
|
||
## What should go on-chain? | ||
|
||
You often have a choice between putting code and information on the public Convex network or keeping it on a separate server when building a decentralised application. Some applications might do both: we call these "hybrid" dApps. | ||
|
||
Some general principles: | ||
|
||
- Put data *on-chain* when it needs to be *publicly visible and verifiable* | ||
- Put data *on-chain* when you need to make trusted transactions between parties (e.g. exchanging digital assets) | ||
- Keep data processing (e.g. string formatting, sorting) *off-chain* - this is best done on the client | ||
- Keep data *off-chain* when it needs to be private | ||
- Keep code and data *off-chain* if there are significant compute or storage requirements (it would be too expensive to put on-chain) | ||
|
||
It is a good idea to **keep data structures as simple as possible**. Ideally, Actor code should be performing a small set of O(1) operations on the right kind of data structures (looking up / updating a value in a map, appending a value to a vector etc.). We recommend designing the data structures for your Actors carefully first, before writing the code to interact with them. | ||
|
||
|
||
## Is Convex a Blockchain? | ||
|
||
Think of Convex and the undelying lattice technology as "beyond blockchain". | ||
|
||
Convex shares many common attributes with traditional public blockchains: | ||
|
||
- A decentralised consensus network | ||
- Security from malicious actors with cryptographic techniques | ||
- Decentralised ownership of accounts, including the ability to control digital assets and currencies | ||
- Ability to deploy and execute secure smart contract code | ||
- Transactions are grouped into Blocks | ||
|
||
Technically however it's not implemented as a blockchain (in the sense that there is a linked list of blocks where each block contains the hash of a previous block). The Convex consensus algorithm creates an *ordering* of blocks, but the cryptographic hashes used to secure this ordering are kept outside the blocks themselves. This gives us a big advantage, as blocks can be submitted and processed by peers concurrently without having to first determine the hash of preceding block(s). | ||
|
||
|
||
## How does Convex perform so well? | ||
|
||
It's complex! But here are some of the most important points: | ||
|
||
- The consensus algorithm (Convergent Proof of Stake, or CPoS) is extremely fast. It can confirm blocks in milliseconds between peers running on a local network. The main latency delay in the global network is just signal transmission over the Internet: the speed of light is a tricky problem. | ||
- The CVM execution model is designed for performance: CVM operations are relatively high level, but are implemented using very efficient low-level code. | ||
- We wrote a custom database (Etch) from scratch, specifically to support the performance needs of Convex. Having a database perfectly designed and tuned for the specific workload is a huge advantage and is faster than more generic alternatives (e.g. LevelDB) | ||
- We exploit a lot of advanced features of the JVM, which is a very powerful platform backed by thousand man-years of engineering effort. We especially appreciate the JIT compiler, concurrency, asynchronous IO and advanced memory management features. It probably wouldn't be feasible to build something as fast as Convex without these. | ||
- Some of our team have been performance-oriented hackers for many years, with experience in game coding, embedded systems, distributed computing etc. We enjoy and take pride in writing fast, efficient code! | ||
|
||
|
||
## Why does Convex use Lisp? | ||
|
||
A variant of Lisp was chosen as the initial language for the CVM for a few reasons: | ||
|
||
- Lisp expressions are essentially a direct encoding of the [Lambda Calculus](https://en.wikipedia.org/wiki/Lambda_calculus). This means that we are based on fundamentally sound computation theory. | ||
- Lisp macros are a powerful tool for generating code, which is an ideal solution for building sophisticated smart contract capabilities with an on-chain compiler. | ||
- Lisp is a highly expressive language for interactive development, with a long history of REPL-based usage. We feel this is ideal for a platform where we want developers to be instantly productive and able to interact directly with the system in real-time. | ||
|
||
Paul Graham's essay [Beating the Averages](http://www.paulgraham.com/avg.html) is an interesting perspective on the advantages of Lisp for building a business. Despite dating from 2001, we feel many of these points still stand today and are very relevant for people wanting to build applications using Convex. | ||
|
||
|
||
## What is Memory Accounting? | ||
|
||
Memory Accounting is the system in Convex used to track the usage of on-chain memory. Every time a user executes a transaction, the amount of memory used is calculated and deducted from the user's memory allowance. If the user has an insufficient memory allowance, it is possible to automatically buy more on-demand. | ||
|
||
If a user executes a transaction that releases memory, the amount of released memory is credited back to the user's allowance. This creates a good incentive to "clean up after yourself". Actors and smart contracts should also be designed with the option to clean up memory after it is no longer required. | ||
|
||
We need Memory Accounting because on-chain memory is a **scarce resource**, and should be used wisely. An effective way of doing this is to make memory allowances themselves into a digital asset, that can be transferred and traded. This creates a market incentive to utilise memory as efficiently as possible. | ||
|
||
|
||
## What is the difference between Actors and Smart Contracts? | ||
|
||
Actors are virtual agents that live their whole existence inside the Convex Virtual Machine. They are autonomous agents that can execute CVM code, manage digital assets, perform complex computation, make decisions. They follow strict rules that control their execution, so that they can be relied upon to behave in a particular way. | ||
|
||
Smart contracts are a concept: the idea of having real-world contracts or agreements that can be automatically executed and enforced by software, eliminating risk and the need to trust fallible humans. | ||
|
||
You can use Convex Actors to implement smart contracts. Not every Actor needs to be a smart contract, however: an Actor that simply stores on-chain information on your behalf isn't really a contract with anyone else. | ||
|
||
|
||
## When will the Main Network go live? | ||
|
||
We are on track to release the first live version of Convex (Convex Protonet) in 2024. | ||
|
||
An important caveat: getting it right is more important than rushing a release. We won't launch until we are 100% sure it is ready for production use and fully secure with real-world value at stake. | ||
|
||
People will depend on Convex to be a secure, reliable platform for decentralised applications and digital assets. It is not acceptable to expose them to security risks from flaws in the platform, nor is it acceptable to make breaking changes to the CVM that could cause significant problems with smart contracts. | ||
|
||
|
||
## Can I buy Convex as a cryptoasset? | ||
|
||
Not yet, but soon! | ||
|
||
We are establishing the Convex Foundation a non-profit organisation that will facilitate the initial sale of Convex native coins in the near future. Initially, this will be only open to institutional investors. Funds raised will be invested in building Convex and the ecosystem. | ||
|
||
|
||
## Who is building Convex? | ||
|
||
We are a small [team](https://convex.world/about/team) of dedicated hackers and creators passionate about building an amazing platform for the future digital economy. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
--- | ||
title: Use Cases | ||
authors: [convex] | ||
tags: [convex, ecosystem, applications] | ||
--- | ||
|
||
Convex is a general purpose, programmable decentralised network with global state. As such, there is no inherent limit on the nature of applications that can be built. Here are some of the things that Convex can be used for, and are being actively developed within the Convex community: | ||
|
||
## NFTs | ||
|
||
Non-fungible tokens (NFTs) are a powerful mechanism for creating unique virtual items that can be owned, collected traded and utilised in virtual environments such as games. Each NFT has a unique on-chain ID and can be individually addressed, transferred and used within smart contracts. | ||
|
||
Convex includes a powerful NFT engine based on set theory, capable of millions of NFT transfers per second, and allowing arbitrary metadata and smart contract rules to be attached to individual NFTs. | ||
|
||
## DeFi | ||
|
||
Convex provides comprehensive support for decentralised finance applications. | ||
|
||
As part of the full-stack solution we offer: | ||
- A uniform, fungible token model suitable for utility tokens, stablecoins, governance tokens and more. | ||
- An advanced decentralised token exchange based on constant liquidity pools allowing for efficient trading of fungible tokens of all types. | ||
- Template smart contracts and libraries for creating and interacting with DeFi assets | ||
- Capabilities to delegate control of assets to intermediaries, custodians or decentralised smart contracts | ||
- Capabilities for digital asset governance including trusted smart contract upgrades | ||
|
||
## Gaming | ||
|
||
Games need fast interactive performance and shared global state for immersive multiplayer worlds. With blazing fast performance (just milliseconds for transaction confirmations) and minimal transaction costs, Convex is the perfect platform for decentralised gaming, virtual items and in-game currencies. | ||
|
||
Our first game is a 3D block game inspired by Minecraft, Boulderdash and the Roguelike genre. The entire game world is implemented as a set of Convex Actors. Transactions are automatically executed when the player takes actions that change the world state, and the player can otherwise view and explore the world at zero cost. | ||
|
||
## Metaverse | ||
|
||
Convex provides the ideal substrate for the convergence of real and virtual worlds into new shared realities. With a rich model of digital assets and on-chain smart contract capabilities, we can help you craft the next generation of experiences in virtual reality. | ||
|
||
Our metaverse innovation includes the world's [first fully on-chain 3D game world](https://www.youtube.com/watch?v=op2NccyMEBE). | ||
|
||
## Payments and Retail CBDCs | ||
|
||
Convex supports an [advanced model of digital currencies](https://www.youtube.com/live/XHxEnqBwgN8?feature=shared&t=95) with customisable governance, suitable for CBDCs and other currencies with trusted issuers. Our [open source mobile wallet](https://github.com/Convex-Dev/convexity) (Convexity) makes these easily accessible and convenient for users, and can be customised to create branded experiences with additional functionality. [Here's a demo](https://www.youtube.com/watch?v=2a40mRkcuag). | ||
|
||
With incredible performance, low costs and low latency, Convex digital currencies are ideal for consumer use cases such as digital payments, international transfers and retail purchases. | ||
|
||
If you are involved in a project to create a digital currency, we can help you succeed: get in touch at [[email protected]](mailto:[email protected]). |
Oops, something went wrong.