Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Migration of articles from Evmos Docs #29

Merged
merged 33 commits into from
Nov 10, 2023
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
bffe13d
updated readme
lmedury Jul 14, 2023
7830c1f
updated docs
lmedury Jul 14, 2023
6e95b22
included images in readme
lmedury Jul 14, 2023
9ed6029
migrated articles from docs to academy
lmedury Jul 18, 2023
7fcb9bd
advanced articles from docs
lmedury Jul 21, 2023
a65ecf0
removed faq in beginner section
Aug 4, 2023
391260c
added articles from docs repo
Aug 4, 2023
7a9f6f1
Merge branch 'main' of github.com:evmos/academy
Aug 4, 2023
2c0525b
updated readme to include illustration to create PR
Aug 4, 2023
f3fc4b8
homogenous titles and governance section
Aug 5, 2023
573b9d3
increase line length
Vvaradinov Aug 23, 2023
afb1939
fixed lint errors
lmedury Aug 24, 2023
694db10
updated readme
lmedury Jul 14, 2023
c0eed6e
updated docs
lmedury Jul 14, 2023
ca40078
included images in readme
lmedury Jul 14, 2023
51c5352
migrated articles from docs to academy
lmedury Jul 18, 2023
0609ae6
advanced articles from docs
lmedury Jul 21, 2023
3fe74f6
removed faq in beginner section
Aug 4, 2023
e24c931
updated readme to include illustration to create PR
Aug 4, 2023
aba9e33
homogenous titles and governance section
Aug 5, 2023
f6b744f
fixed lint errors
lmedury Aug 24, 2023
234a41d
Merge remote-tracking branch 'origin/main'
lmedury Aug 24, 2023
b1e96d2
updated gitignore to include vercel/ dir
Aug 25, 2023
c65f0ea
fixed dead links
Sep 13, 2023
b7605c8
fixed relative paths links in docs
Sep 13, 2023
e4e6bc4
Merge branch 'evmos:main' into main
lmedury Oct 18, 2023
5312290
imported connect wallet
Oct 25, 2023
3d53579
imported all articles from docs/use
Oct 25, 2023
477ac65
Merge branch 'docs-migration'
Oct 25, 2023
2599bcc
installed sweetalert
Nov 8, 2023
2707a41
WIP: tailwind integration
Nov 10, 2023
3a4fbcb
integrated tailwindcss
Nov 10, 2023
ff06ec8
Merge branch 'docs-migration'
Nov 10, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,103 @@

Welcome to the Academy Docs, the official place to dive deeper into the world of Evmos.

## How to contribute?

To contribute/update content in the Academy website, we welcome you to create a pull request.

### Steps to create a pull request:

You must have git installed and configured on your local computer.

#### Step 1: Fork the repository:

![Fork Academy](static/img/AcademyFork.png)

#### Step 2: Clone the repository

SSH:

`git clone [email protected]:<usename>/academy.git`

HTTPS:

`git clone https://github.com/<username>/academy.git`

#### Step 3: Install project dependencies

Please note that the project uses `package-lock.json` lock file, therefore you are expected to install package dependencies only using `npm install`.

`npm install`

#### Step 4: Make your updates

You can contribute new content or fix typos/grammatical errors or update existing content. All of this must be done on your local device.

If you would like to contribute an article, you must first identify the category it belongs to:

- Beginner
- Intermediate
- Advanced

Let us assume the article you are creating belongs to the intermediate category.

**4.1**: Open your favorite choice of editor

`code .`
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wouldn't put here this command since for example, on VSC, you should have enabled it. So, it is not general.


**4.2**: Create a folder for your article

You can create a new folder in docs/articles/intermediate

Create a folder with an intuitive name: `<new-article>`

![Create Folder](static/img/AcademyCreateFolder.png)

**4.3**: Create a markdown file: `index.md`

In markdown, you can add text, images, videos and more.

A brief intro to markdown:
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We could link to markdown doc here


- Single # is used to create a header
- Double ## is used to create a paragraph header
- Text within `` is used for code blocks
- Lists can be added using -

**4.4**: (Optional) Add images:

Upload your image to `static/img` folder.

Images in Markdown can be added this way:

`![<alt-text>](/img/<image-name>)`

#### Step 5: Add changes, commit, and push to remote

For Github to track the changes you make, you must first add the files to the staging area:

If you would like to add all files to staging:

`git add .`

If you would like to add only a specific file:

`git add <filename>`

Commit Changes:

`git commit -m "<commit-message>"`

Push to academy repository:

`git push origin main`

#### Step 6: Create a pull request on Github

Go to the repository you forked in Github and click on Pull Requests -> New Pull Request -> and ensure the following:
`base respository: evmos/academy` and `base:main`
with `head repository` being the forked repository and `compare` with the branch you wish to merge.

!['Create PR'](static/img/create-pr.png)


84 changes: 84 additions & 0 deletions docs/articles/advanced/architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Technical Architecture

Evmos is a scalable Proof-of-Stake blockchain that is fully compatible and
interoperable with the Ethereum Virtual Machine (EVM). It is built using the [Cosmos SDK](https://github.com/cosmos/cosmos-sdk/)
which runs on top of the [CometBFT](https://github.com/cometbft/cometbft) (a fork of [Tendermint Core](https://docs.tendermint.com/)) consensus engine,
to accomplish fast finality, high transaction throughput and short block times (~2 seconds).

This architecture allows users to perform both Cosmos and EVM formatted transactions,
developers to scale EVM dApps cross-chain via [IBC](https://cosmos.network/ibc),
and tokens and assets in the network to come from different independent sources.

Evmos enables these key features by:

* Leveraging [modules](https://docs.cosmos.network/main/building-modules/intro.html) and other mechanisms implemented by the [Cosmos SDK](https://docs.cosmos.network/).
* Implementing CometBFT's Application Blockchain Interface ([ABCI](https://docs.tendermint.com/master/spec/abci/)) to manage the blockchain.
* Utilizing [`geth`](https://github.com/ethereum/go-ethereum) as a library to promote code reuse and improve maintainability.
* Exposing a fully compatible Web3 [JSON-RPC](./../develop/api/ethereum-json-rpc/methods) layer for interacting with existing Ethereum clients and tooling (Metamask, Remix, Truffle, etc).

The sum of these features allows developers to leverage existing Ethereum ecosystem tooling and
software to seamlessly deploy smart contracts which interact with the rest of the Cosmos
[ecosystem](https://cosmos.network/ecosystem).

## Cosmos SDK

Evmos enables the full composability and modularity of the [Cosmos SDK](https://docs.cosmos.network/).
As a Cosmos chain, Evmos is a sovereign blockchain with its own native token,
that can connect to other chains through IBC. It includes standard modules from the Cosmos SDK,
that work side to side with Evmos-specific modules, built by the Evmos core development team.
Check out the [list of modules](modules/index.md) to get an overview of what each module is responsible for.

## CometBFT & ABCI

[CometBFT](https://github.com/cometbft/cometbft) consists of two chief technical components:
a blockchain consensus engine and a generic application interface.
The consensus engine ensures that the same transactions
are recorded on every machine in the same order.
The application interface, called the [Application Blockchain Interface (ABCI)](https://docs.tendermint.com/master/spec/abci/),
enables the transactions to be processed in any programming language.

CometBFT has evolved to be a general-purpose blockchain consensus engine that
can host arbitrary application states. Since it can replicate arbitrary
applications, it can be used as a plug-and-play replacement for the consensus
engines of other blockchains. Evmos is an example of an ABCI application
replacing Ethereum's PoW via CometBFT's consensus engine.

Another example of a cryptocurrency application built on CometBFT is the Cosmos
network. CometBFT can decompose the blockchain design by offering a very
simple API (ie. the ABCI) between the application process and consensus process.

## EVM Compatibility

Evmos enables EVM compatibility by implementing various components
that together support all the EVM state transitions
while ensuring the same developer experience as Ethereum:

- Ethereum's transaction format as a Cosmos SDK `Tx` and `Msg` interface
- Ethereum's `secp256k1` curve for the Cosmos Keyring
- `StateDB` interface for state updates and queries
- [JSON-RPC](../develop/api/ethereum-json-rpc) client for interacting with the EVM

Most components are implemented in the [EVM module](modules/evm.md)
To achieve a seamless developer UX, however, some of the components are implemented
outside of the module.

If you want to learn more about how Evmos achieves EVM compatibility as a Cosmos chain,
we recommend understanding the following concepts:

* [Accounts](./concepts/accounts.md)
* [Gas and Fees](./concepts/gas-and-fees.md)
* [Token representations](./concepts/tokens.md)
* [Transactions](./concepts/transactions.md)

## Contributing

There are several ways to contribute to the Evmos core protocol. To get some hands-on experience,
we recommend you spin up a local Evmos node using the [Evmos CLI](./protocol/evmos-cli)
and interact with it through queries and transactions using the supported [clients](../develop/api#clients).

Then if you're hooked you can

* Contribute open-source to [issues on GitHub](https://github.com/evmos/evmos/issues)
using the [Evmos Contributor Guideline](https://github.com/evmos/evmos/blob/main/CONTRIBUTING.md)
* Apply to [open positions at Evmos](https://boards.eu.greenhouse.io/evmos)
* Search for [bugs and earn a bounty](bugs.md)
16 changes: 16 additions & 0 deletions docs/articles/advanced/tools-and-plugins.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Tools and IDE Plugins

## Smart Contract Development Tools

- [Remix](https://remix.ethereum.org/#optimize=false&runs=200&evmVersion=null&version=soljson-v0.8.17+commit.8df45f5f.js) is a free, browser-based Integrated Development Environment (IDE) for writing, testing, and deploying smart contracts on the Ethereum blockchain. It is designed to make it easier for developers to get started with building decentralized applications (dapps) by providing a simple and user-friendly interface for writing and deploying smart contracts. With Remix, you can write, test, and deploy smart contracts written in Solidity. It also includes debugging tools and a simulation environment for testing contracts before deploying them to the blockchain. The tool provides plugins as well.
- [Truffle Suite](https://trufflesuite.com/docs/) contains a suite of comprehensive tools to streamline the process of building and testing smart contracts, and deploying them to any EVM network, like EVMOS network in Javascript/Typescript. The suite contains [Truffle](https://trufflesuite.com/docs/truffle/) to make compiling, testing, debugging, and deploying smart contract development. [Ganache](https://trufflesuite.com/docs/ganache/) provides easy and fast local blockchain development environment with UI and CLI functionalities. [Drizzle](https://trufflesuite.com/docs/drizzle/) packs frontend libraries that enables standard-compliant wallet connection, account, and contract state management through React components.
- [Foundary](https://getfoundry.sh/) is RUST toolkit that enables fast, portable, and modular application development for Ethereum and EVM-compatible chains.
- [Hardhat](https://hardhat.org/) is a JS/TS library that allow comprehensive testing, development, and deploying smart contracts. Hardhat contains many [plugins](https://hardhat.org/hardhat-runner/plugins) to aid further developments.

## Open Sourced Contracts

- [OpenZeppelin](https://www.openzeppelin.com/contracts) contains battle-tested libraries of smart contracts for Ethereum-compatible chains and includes the most used ERC standards.

## IDE

- [Truffle for VSCode](https://trufflesuite.com/docs/vscode-ext/) is a Visual Studio Code extension that simplifies how you create, build, debug, and deploy smart contracts on Ethereum and EVM-compatible blockchains.
69 changes: 69 additions & 0 deletions docs/articles/advanced/validate.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove ws

# Validating on Evmos

Evmos is based on [CometBFT](https://github.com/cometbft/cometbft),
which relies on a set of validators that are responsible for committing new blocks in the blockchain. These validators
participate in the consensus protocol by broadcasting votes which contain cryptographic signatures signed by each
validator's private key.

Validator candidates can bond their own staking tokens and have the tokens "delegated", or staked, to them by token
holders. The EVMOS is Evmos's native token. At its onset, Evmos launche with 150 validators. The validators are
determined by who has the most stake delegated to them - the top 150 validator candidates with the most stake
become part of the active Evmos validator set.

Validators and their delegators will earn EVMOS as block provisions and tokens as transaction fees through execution of
the Tendermint consensus protocol. Initially, transaction fees will be paid in EVMOS but in the future, any token in the
Cosmos ecosystem will be valid as fee tender if it is whitelisted by governance. Note that validators can set commission
on the fees their delegators receive as additional incentive.

## Pitfalls

If validators double sign, are frequently offline or do not participate in governance, their staked EVMOS (including
EVMOS of users that delegated to them) can be slashed. The penalty depends on the severity of the violation.

## Hardware

Validators should set up a physical operation secured with restricted access. A good starting place, for example,
would be co-locating in secure data centers.

Validators should expect to equip their datacenter location with redundant power, connectivity, and storage backups.
Expect to have several redundant networking boxes for fiber, firewall and switching and then small servers with redundant
hard drive and failover. Hardware can be on the low end of datacenter gear to start out with.

We anticipate that network requirements will be low initially. Bandwidth, CPU and memory requirements will rise as
the network grows. Large hard drives are recommended for storing years of blockchain history.

### Supported OS

We officially support macOS and Linux only in the following architectures:

* `darwin/arm64`
* `darwin/x86_64`
* `linux/arm64`
* `linux/amd64`

### Minimum Requirements

To run mainnet or testnet validator nodes, you will need a machine with the following minimum hardware requirements:

* 4 or more physical CPU cores
* At least 500GB of SSD disk storage
* At least 32GB of memory (RAM)
* At least 100mbps network bandwidth

As the usage of the blockchain grows, the server requirements may increase as well, so you should have a plan for
updating your server as well.

## Get Involved

:::tip
Seek legal advice if you intend to run a validator.
:::

Set up a dedicated validator's website, social profile (eg: Twitter) and signal your intention to become a validator on
Discord. This is important since users will want to have information about the entity they are staking their EVMOS to.

## Community

Discuss the finer details of being a validator and seek advise from the rest of the validator community on our
[Discord](https://discord.gg/evmos).
2 changes: 1 addition & 1 deletion docs/articles/beginner/EVM.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 3
sidebar_position: 4
---

# What is EVM?
Expand Down
2 changes: 1 addition & 1 deletion docs/articles/beginner/IBC.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 4
sidebar_position: 5
---

# What is IBC?
Expand Down
2 changes: 1 addition & 1 deletion docs/articles/beginner/defi.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 2
sidebar_position: 3
---

# What is DeFi?
Expand Down
38 changes: 38 additions & 0 deletions docs/articles/beginner/explorers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
sidebar_position: 3
---

# Block Explorers

Blockchain explorers allow users to query the blockchain for data.
Explorers are often compared to search engines for the blockchain.
By using an explorer, users can search and track balances, transactions, contracts, and other broadcast data to the blockchain.

Evmos offers two types block explorers: an EVM explorer and a Cosmos explorer.
Each explorer queries data respective to their environment with the EVM explorers querying Ethereum-formatted data
(blocks, transactions, accounts, smart contracts, etc) and the Cosmos explorers querying Cosmos-formatted data
(Cosmos and IBC transactions, blocks, accounts, module data, etc).

## List of Block Explorers

Below is a list of public block explorers that support Evmos Mainnet and Testnet:

### Mainnet

| Service | Support | URL | Contract Verification |
| ---------- | -------------- | ------------------------------------------------------ | -------------------------------- |
| Mintscan | `cosmos` `evm` | [mintscan.io/evmos](https://www.mintscan.io/evmos) | Yes but requires form submission |
| Escan | `cosmos` `evm` | [escan.live](https://escan.live) | Permissionless |
| BigDipper | `cosmos` | [evmos.bigdipper.live/](https://evmos.bigdipper.live/) | No |
| ATOMScan | `cosmos` | [atomscan.com/evmos](https://atomscan.com/evmos) | No |
| NGExplorer | `cosmos` | [evmos.explorers.guru](https://evmos.explorers.guru) | No |

### Testnet

| Service | Support | URL |
| ---------- | -------------- | ------------------------------------------------------------------------------ |
| Escan | `cosmos` `evm` | [testnet.escan.live](https://testnet.escan.live) |
| Mintscan | `cosmos` `evm` | [testnet.mintscan.io/evmos-testnet](https://testnet.mintscan.io/evmos-testnet) |
| BigDipper | `cosmos` | [testnet.bigdipper.live](https://testnet.evmos.bigdipper.live/) |
| Blockscout | `evm` | [evm.evmos.dev](https://evm.evmos.dev/) |
| NGExplorer | `cosmos` | [testnet.evmos.explorers.guru](https://testnet.evmos.explorers.guru) |
29 changes: 29 additions & 0 deletions docs/articles/beginner/gettingstarted.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
sidebar_position: 1
---

# Getting Started

## What is Evmos?

Evmos is the blockchain network, that lets you use a new generation of applications, built by developers across the world. Using and building on the network is permissionless so it doesn't require any authorization and you can get started right now.

We believe that you shouldn't be constrained to interacting with applications on only one blockchain. This creates a bad user experience forcing you to reconnect to new networks and transfer currencies between different blockchains. Instead, you should be able to seamlessly use applications, regardless of where they are built.

That's why at Evmos we enable developers to create applications "cross-chain". These are built once and are accessible from across multiple chains. As a result, you can seamlessly interact with applications on Evmos, without having to know what underlying blockchain they are built on.

## What are dApps?

Evmos hosts a rich ecosystem of decentralized applications (dApps), that are disrupting traditional ideas from finance, creative ownership, gaming, governance, and more. A dApp is called "decentralized", as it doesn't rely on a centralized entity and instead gives back ownership to the community.

A dApp's core business logic is implemented through smart contracts. These contracts execute code over a decentralized network (Evmos) that is publicly visible. A centralized application (e.g. Airbnb) instead executes code in a privately regulated environment such as the application’s own servers.

## What can you do on Evmos?

Once connected to the Evmos network, you can send money peer-to-peer without the need for banks or payment services or interact with cross-chain dApps.
![workflow](/img/evmos-getting-started.png)
Alongside the applications built by the developer community, the Evmos Core Development Team also builds its own dApps. Here are some examples:

* [Assets](https://app.evmos.org/assets) - View, withdraw, and deposit cross-chain tokens like a bank account
* [Staking](https://app.evmos.org/staking) - Help keep the network stable, by staking your tokens and earning a daily interest on your stake
* [Governance](https://app.evmos.org/governance) - Evmos is known for hosting one of the most active governance in the blockchain space.
Loading
Loading