Skip to content

Commit

Permalink
docs: improve abstract sdk page
Browse files Browse the repository at this point in the history
  • Loading branch information
jvr0x committed Aug 15, 2023
1 parent de679a4 commit 092e1c4
Show file tree
Hide file tree
Showing 7 changed files with 270 additions and 109 deletions.
16 changes: 8 additions & 8 deletions framework/docs/src/0_abstract_documentation.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@ See how others are using Abstract in the [Use Cases](./7_use_cases/index.md) sec

If you feel lost or have any doubts along the way, please reach out to us! We are here to help you!

- [Discord](https://discord.com/invite/uch3Tq3aym)
- [X](https://x.com/AbstractSDK)
- [Discord](https://discord.com/invite/uch3Tq3aym){target="_blank"}
- [X](https://x.com/AbstractSDK){target="_blank"}

## Want to make Abstract better?

Expand All @@ -52,9 +52,9 @@ We are always looking for ways to improve Abstract and welcome everybody to cont

## Links

- [Website](https://abstract.money/)
- [Github](https://github.com/AbstractSDK)
- [Medium](https://medium.com/@abstractmoney)
- [Docs](https://docs.abstract.money/)
- [Account Console](https://app.abstract.money)
- [Graphql API Explorer](https://api.abstract.money/)
- [Website](https://abstract.money/){target="_blank"}
- [Github](https://github.com/AbstractSDK){target="_blank"}
- [Medium](https://medium.com/@abstractmoney){target="_blank"}
- [Docs](https://docs.abstract.money/){target="_blank"}
- [Account Console](https://app.abstract.money){target="_blank"}
- [Graphql API Explorer](https://api.abstract.money/){target="_blank"}
58 changes: 36 additions & 22 deletions framework/docs/src/1_abstract_platform_overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,17 @@
### Welcome to Abstract, the interchain CosmWasm development platform. </br>We are building tools and infrastructure for composable smart-contract applications.
</div> -->

## What Is The Abstract Platform?

The Abstract platform embodies a comprehensive ecosystem with a set of products that empowers you to effortlessly construct,
deploy, and manage applications in the Cosmos ecosystem in record time.
The Abstract platform is your one-stop solution for streamlined CosmWasm smart-contract development. We provide an
integrated smart-contract framework, continuous deployment tools, robust data management solutions for both on-chain and
off-chain needs, and top-tier infrastructure-as-a-service (IaaS) offerings.

Our products are designed to be composable, allowing you to re-use the components you need to build your applications. While
Abstract aims to simplify the development experience, it functions as a powerful tool, enabling you to innovate with less effort.
Our products are designed to be composable, allowing you to re-use the components you need to build your applications.
While Abstract aims to simplify the development experience, it functions as a powerful tool, enabling you to innovate
with
less effort.

```admonish info
In this page you are given an overview of the Abstract platform and its products. You can skip the introduction and go
Expand All @@ -22,51 +26,61 @@ straight to the [Getting Started](./4_get_started/1_index.md) guide if you're al

## Why Build with Abstract?

Building decentralized applications is hard! We know this because we've been there. We've spent countless hours building
applications on the Cosmos ecosystem, and we've created Abstract with all the lessons we learned along the way to make it
Building decentralized applications is hard! We know this because we've been there. We've spent countless hours building
applications on the Cosmos ecosystem, and we've created Abstract with all the lessons we learned along the way to make
it
easier and faster to build for you.

- **Based on CosmWasm** 🌟: Abstract is built on top of the [CosmWasm][1] smart-contract framework, which has been battle-tested
and proven to be secure and reliable. This also means that you can leverage the existing tooling and community to
- **Based on CosmWasm** 🌟: The Abstract SDK is built on top of the [CosmWasm][1]{target="_blank"} smart-contract
framework,
which has been battle-tested
and proven to be secure and reliable. This also means that you can leverage the existing tooling and community to
accelerate your development process.


- **Chain-Agnostic** 🌐: The Abstract platform is built to support various blockchain networks within the Cosmos ecosystem, giving
you the flexibility to choose the best-suited platform for your dApp.
- **Chain-Agnostic** 🌐: The Abstract platform can support any CosmWasm-based network, even outside the Cosmos ecosystem,
giving you the flexibility to choose the best-suited platform for your dApp.


- **Modular Design** 🧩: Abstract's modular architecture allows you to choose from a curated library of smart-contract or
develop your own using the Abstract SDK, enabling rapid development and customization. Think of Abstract as a lego set for
- **Modular Design** 🧩: Abstract's modular architecture allows you to choose from a curated library of smart-contract or
develop your own using the Abstract SDK, enabling rapid development and customization. Think of Abstract as a lego set
for
building decentralized applications, connect the pieces you need and voilà!.


- **Custom Governance** 🗳️: Abstract allows you to create custom governance structures tailored to your application's
specific requirements, including integration with multi-signature wallets and DAOs.
- **Custom Governance** 🗳️: All Abstract Accounts can be governed by any entity tailored to your application's specific
requirements. Currently, the Console supports soverign, cw3-flex-multisig, and DaoDao-governed Accounts.


- **Development Tooling** 🛠: Abstract offers a vast integration testing library, enabling you to quickly increase test coverage
- **Development Tooling** 🛠: Abstract offers a vast integration testing library, enabling you to quickly increase test
coverage
and ensure the reliability of your dApps.


- **Version Management** 🔄: Abstract simplifies the process of managing smart-contract versioning, ensuring you can quickly
- **Version Management** 🔄: Abstract simplifies the process of managing smart-contract versioning, ensuring you can
quickly
release and access new features and bug-fixes.


- **Ecosystem Integrations** 🌱: Abstract is designed to work seamlessly with popular projects and services in the Cosmos
ecosystem, from DEXes to wallets, we got it all!. If you want to know more about our integrations, check out the [Integrations](10_integrations.md) section.
- **Ecosystem Integrations** 🌱: Abstract is designed to work seamlessly with protocols, projects, and services in the
ever-expanding IBC ecosystem; from DEXes, order-books, NFT-marketplaces, to wallets, we got it all!. If you want to
know more about our integrations, check out the [Integrations](10_integrations.md) section.

## Products of the Abstract Platform

The following is the list of products that make up the Abstract platform:

- [Abstract SDK](3_framework/1_abstract_sdk.md): On-chain smart-contract infrastructure.
- [CW-Orchestrator](1_products/cw_orchestrator.md): Multi-environment CosmWasm smart-contract deployment and scripting library.
- [CW-Orchestrator](1_products/cw_orchestrator.md): Multi-environment CosmWasm smart-contract deployment and scripting
library.
- [Abstract-Testing](1_products/abstract_testing.md): Unit testing utilities for CosmWasm contracts.
- [Abstract.js](1_products/abstract_js.md): Front-end libraries.
- [Abstract App Template](1_products/abstract_app_template.md): Starting point for building an Abstract App.
- [Graphql API Explorer](https://api.abstract.money/)
- [Graphql API Explorer](https://api.abstract.money/){target="_blank"}

Feel free to explore them individually at your own pace or follow the documentation as it is presented to you. If you have
any questions or ideas you want to discuss, please contact us on [Discord](https://discord.com/invite/uch3Tq3aym).
Feel free to explore them individually at your own pace or follow the documentation as it is presented to you. If you
have
any questions or ideas you want to discuss, please contact us on [Discord](https://discord.com/invite/uch3Tq3aym)
{target="_blank"}.

[1]: https://cosmwasm.com/
91 changes: 91 additions & 0 deletions framework/docs/src/3_framework/0_prerequisites.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# Prerequisites

In this section, we'll cover the prerequisites for using the Abstract Platform and its products.

## Rust

The Abstract SDK is built on top of the [CosmWasm][1]{target="_blank"} smart-contract framework, which is written in [Rust][2]{target="_blank"}.
Therefore,
it's important to have a basic understanding of Rust.

Rust is a modern and user-friendly programming language that shines in both performance and safety. Its innovative
features allow developers to write reliable and efficient code, making it a great choice for smart contracts.

Learn more about Rust [here](https://www.rust-lang.org/), or learn by doing
the [rustlings](https://github.com/rust-lang/rustlings/).

```admonish info
Already a CosmWasm expert? Jump to [the next page](./3_account_abstraction.md) to learn about account abstraction!
```

## CosmWasm

Some of the products such us the Abstract SDK and CW-Orchestrator are built on top of the [CosmWasm][1]{target="_blank"} smart-contract
framework. Abstract simplifies complexity within CosmWasm, but it's still important to understand the basics.

If you are already familiar with CosmWasm, you can skip this section.

### What's CosmWasm?

CosmWasm is a smart contract platform focusing on security, performance, and interoperability. It is the only smart
contracting platform for public blockchains with heavy adoption outside the EVM world.

#### Key Points

- Deeply integrated in many Cosmos blockchains
- Type-safe development and powerful testing with Rust
- Native supports for powerful IBC communication
- Compatible with many Rust libraries (i.g. decimal math)
- Uses highly optimized Web Assembly runtime
- Welcoming (and diverse) dev community

### The Actor Model

The actor model is a computational model used in the design and implementation of the CosmWasm framework. It provides a
deterministic execution environment by employing message-based communication between individual actors. In this model,
each actor is an autonomous entity capable of managing its internal state, creating other actors (other
smart-contracts),
and send and receive structured messages.

The actor model plays a crucial role in designing the architecture of a smart-contract application within the CosmWasm
framework.

#### Benefits of the Actor Model

The application of the actor model in the CosmWasm framework provides the following benefits:

- **Encapsulation and Isolation**: Each smart contract operates as an isolated actor, processing messages and state
independently. This isolation prevents interference and unintended side effects between contracts, enhancing security
and reducing the risk of vulnerabilities like re-entrancy attacks.

- **Sequential Message Processing**: Contracts handle only one message at a time, ensuring deterministic execution and
eliminating the need for call stacks. This approach prevents complex control flow issues and helps maintain the
predictability of the contract's state. It also simplifies the mental model required to understand and reason about
execution order in multi-contract interactions.

- **Controlled Interactions**: When a contract wants to invoke another contract, it sends a message containing the
necessary information. This controlled interaction allows for well-defined communication patterns, promoting
modularity,
and ensuring that contracts can safely collaborate without exposing their internal states.

- **Error Handling and Atomic Transactions**: A transaction in CosmWasm can represent a state-transition that involves
multiple sub-messages and spans multiple actors. If any sub-message on any actor encounters an error, the entire
transaction is rolled back, reverting all state changes made within that transaction. This ensures atomicity and
prevents
inconsistent states in the contract.

To learn more about CosmWasm, check out the [official documentation](https://book.cosmwasm.com/){target="_blank"}.

## Javascript

You need to have a basic understanding of [Javascript][3]{target="_blank"} to use out front-end library Abstract.js, which is used to
interact with the on-chain Abstract framework.

You can learn about
Javascript [here](https://developer.mozilla.org/en-US/docs/Learn/Getting_started_with_the_web/JavaScript_basics){target="_blank"}.

[1]: https://cosmwasm.com/

[2]: https://www.rust-lang.org/

[3]: https://www.javascript.com/
Loading

0 comments on commit 092e1c4

Please sign in to comment.