Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
15 changes: 5 additions & 10 deletions docs/sovereign/distributed-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,20 @@

This guide will help you deploy a public Sovereign Chain with real validators, enabling a truly decentralized setup. At its core, blockchain technology—and Sovereign Chains in particular—are designed to operate in a decentralized manner, powered by multiple independent validators. This ensures transparency, security, and resilience, as no single entity has control over the entire system. Unlike other guides we’ve provided, which focus on local setups, this solution emphasizes decentralization by involving multiple stakeholders in the validation process. By following the steps below, the owner can create the Sovereign Chain configuration for the network:

### Step 1: Get the ```mx-chain-go``` Repository
### Step 1: Get the `mx-chain-sovereign-go` Repository

Before proceeding, ensure that a **SSH key** for GitHub is configured on your machine.

1. Clone the GitHub repository:
```bash
git clone git@github.com:multiversx/mx-chain-go.git
git clone git@github.com:multiversx/mx-chain-sovereign-go.git
```

2. Checkout the specific Sovereign Chain SDK branch and navigate to testnet directory:
2. Navigate to testnet directory:
```bash
cd mx-chain-go && git fetch && git checkout d699ffd && cd scripts/testnet
cd mx-chain-sovereign-go/scripts/testnet
```

:::info
`d699ffd` is the commit hash we recommend to be used. If you want to use the latest version you can use the branch `feat/chain-go-sdk`.
:::

### Step 2: Seeder Build

Build and run the seed node
Expand Down Expand Up @@ -81,7 +77,6 @@ _Note: Files marked with * will be discussed later in the document._

Sovereign configs can be found in `cmd/sovereignnode/config`
```
economics.toml
enableEpochs.toml
prefs.toml
sovereignConfig.toml
Expand Down Expand Up @@ -197,7 +192,7 @@ Each validator should have:
### Sovereign validator/observer node start

The following commands will start the sovereign validator node with the configuration from **config** folder and with the **validatorKey** (or multi key from **allValidatorsKey**).
Adjust the flags as needed. You can find all the available flags in `/mx-chain-go/cmd/sovereignnode/flags.go`
Adjust the flags as needed. You can find all the available flags in `/mx-chain-sovereign-go/cmd/sovereignnode/flags.go`

#### # single key
```
Expand Down
31 changes: 18 additions & 13 deletions docs/sovereign/local-setup.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,20 @@

This guide will help you deploy a full sovereign local network connected to MultiversX network. This includes all the smart contracts and dependent services needed. Follow these steps carefully to ensure a successful deployment.

### Step 1: Get the `mx-chain-go` Repository
### Step 1: Get the `mx-chain-sovereign-go` Repository

Before proceeding, ensure that a **SSH key** for GitHub is configured on your machine.

1. Clone the GitHub repository:
```bash
git clone git@github.com:multiversx/mx-chain-go.git
git clone git@github.com:multiversx/mx-chain-sovereign-go.git
```

2. Checkout the specific Sovereign Chain SDK branch and navigate to testnet directory:
2. Navigate to testnet directory:
```bash
cd mx-chain-go && git fetch && git checkout d699ffd6a29513c573b1d212861f932e037d8f67 && cd scripts/testnet
cd mx-chain-sovereign-go/scripts/testnet
```

:::info
`d699ffd6a29513c573b1d212861f932e037d8f67` is the commit hash we recommend to be used. If you want to use the latest version you can use the branch `feat/chain-go-sdk`.
:::

3. Run the prerequisites script:
```bash
./prerequisites.sh
Expand All @@ -30,8 +26,8 @@ Before proceeding, ensure that a **SSH key** for GitHub is configured on your ma
:::info
The prerequisites script verifies and downloads the necessary packages to run the nodes and clones the required repositories:

- **mx-chain-deploy-go**: Initializes the configuration for the chain and deployment parameters.
- **mx-chain-proxy-go**: Repository for the proxy.
- **mx-chain-deploy-sovereign-go**: Initializes the configuration for the chain and deployment parameters.
- **mx-chain-proxy-sovereign-go**: Repository for the sovereign proxy.
- **mx-chain-sovereign-bridge-go**: Repository for the cross-chain service.
- **mx-chain-tools-go**: Repository for updating elastic indices.
:::
Expand Down Expand Up @@ -74,19 +70,27 @@ cd sovereignBridge
WALLET="~/wallet.pem"

# Main Chain Constants
MAIN_CHAIN_ELASTIC=https://testnet-index.multiversx.com
PROXY = https://testnet-gateway.multiversx.com
CHAIN_ID = T

# Native token
NATIVE_ESDT_TICKER=SOV
NATIVE_ESDT_NAME=SovToken
```

:::note
- **SOVEREIGN_DIRECTORY, TXS_OUTFILE_DIRECTORY, CONTRACTS_DIRECTORY** - represent the paths to the location where the deployment scripts will generate the outputs.
- **WALLET** - should represent the wallet generated at Step 2.2.
- **MAIN_CHAIN_ELASTIC** - represents the elasticsearch db from the main chain
- **PROXY** - in this case, for the purpose of the test, the used proxy is the testnet one. Of course that the proper proxy should be used when deploying your own set of contracts depending on the development phase of your project.
- **CHAIN_ID** - should represent the chain ID of the chain where the contracts are to be deployed.
- **"1"** for Mainnet;
- **"D"** for Devnet;
- **"T"** for Testnet;
- or use you own local network ID
- **NATIVE_ESDT_TICKER** - represents the ticker from which the native esdt will be generated, and updated in configs
- **NATIVE_ESDT_NAME** - represents the native esdt name
:::

5. Source the script:
Expand All @@ -96,13 +100,14 @@ cd sovereignBridge

6. Deploy all cross-chain contracts on main chain and deploy Sovereign Chain with all required services:
```bash
deploySovereignWithCrossChainContracts
deploySovereignWithCrossChainContracts sov
```

:::info
`deploySovereignWithCrossChainContracts` command will:
- deploy all main chain smart contracts and update sovereign configs
- deploy sovereign nodes and the main chain observer
- `sov` is the prefix for ESDT tokens in the sovereign chain - it can be changed to any string consisting of 4 lowercase alphanumeric characters
:::

### Step 3: Deploy services
Expand All @@ -113,7 +118,7 @@ ___

## Stop and clean local Sovereign Chain

1. Navigate to `mx-chain-go/scripts/testnet/sovereignBridge`.
1. Navigate to `mx-chain-sovereign-go/scripts/testnet/sovereignBridge`.
Source the script:
```bash
source script.sh
Expand All @@ -126,7 +131,7 @@ ___

## Upgrade and reset local Sovereign Chain

1. Navigate to `mx-chain-go/scripts/testnet/sovereignBridge`.
1. Navigate to `mx-chain-sovereign-go/scripts/testnet/sovereignBridge`.
Source the script:
```bash
source script.sh
Expand Down
4 changes: 2 additions & 2 deletions docs/sovereign/standalone-evm.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ RunSmartContractCreate(input *ContractCreateInput) (*VMOutput, error)
// RunSmartContractCall computes the result of a smart contract call and how the system must change after the execution
RunSmartContractCall(input *ContractCallInput) (*VMOutput, error)
```
The **SCProcessor** from `mx-chain-go` prepares the input information for these functions. We aim to avoid modifying the **SCProcessor** itself; instead, all necessary abstractions will be implemented at the EVM level.
The **SCProcessor** from `mx-chain-sovereign-go` prepares the input information for these functions. We aim to avoid modifying the **SCProcessor** itself; instead, all necessary abstractions will be implemented at the EVM level.

## 2. Input Preparation: EVMInputCreator

Expand All @@ -35,7 +35,7 @@ To allow the EVM to function within MultiversX, we introduce a layer that bridge

### 3.2 Finalizing State Changes

After EVM execution finishes, we need to commit the resulting state changes to the blockchain. The EVM will use the `outputContext` component, which (together with the `storageContext`) tracks modified accounts and storages. It also creates the final `vmOutput`, which the `scProcessor` in `mx-chain-go` will then validate and apply to the blockchain (the trie) if everything is correct.
After EVM execution finishes, we need to commit the resulting state changes to the blockchain. The EVM will use the `outputContext` component, which (together with the `storageContext`) tracks modified accounts and storages. It also creates the final `vmOutput`, which the `scProcessor` in `mx-chain-sovereign-go` will then validate and apply to the blockchain (the trie) if everything is correct.

## 4. Gas Metering

Expand Down
4 changes: 2 additions & 2 deletions docs/sovereign/token-management.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

## Main Chain -> Sovereign Chain

1. Navigate to `/mx-chain-go/scripts/testnet/sovereignBridge`.
1. Navigate to `/mx-chain-sovereign-go/scripts/testnet/sovereignBridge`.

Update the configuration file `config/configs.cfg` with the token settings you prefer. Example:
```ini
Expand Down Expand Up @@ -30,7 +30,7 @@

## Sovereign Chain -> Main Chain

1. Navigate to `/mx-chain-go/scripts/testnet/sovereignBridge`.
1. Navigate to `/mx-chain-sovereign-go/scripts/testnet/sovereignBridge`.

Update the configuration file `config/configs.cfg` with the sovereign token settings you prefer. Example:
```ini
Expand Down
Loading