From 3544772fb79bdb3b7799926a5632cc8b0edfcd49 Mon Sep 17 00:00:00 2001 From: winnie Date: Thu, 17 Jul 2025 17:19:42 +0800 Subject: [PATCH 1/3] New FP setup docs modify api endpoint url Update fast finality audit report documentation Added a heading and improved the link formatting for the fast finality audit report in the staking documentation. Add Fast Finality audit report to docs - Added the Fast Finality audit report PDF to static files and created a corresponding documentation page with a download link. - Updated the sidebar to include the new audit report under the staking section. Review updates, language fix broken link fix Add reward potion in SFP doc SFP doc update + minor overview modification add manta rewards docs remove hardware requirement for manta-fp add hardware requirement for manta-fp add SFP doc to sidebar New operator deployment doc added to staking directory and sidebar.js docs: fast finality staking docs update Modify links and CTAs review 1 updates fix broken URL fix URL minor fix docs: native MANTA staking - Native MANTA staking with symbiotic - How-to guides - FAQs --- docs/concepts/fast-finality.md | 2 +- .../Setup.md | 252 ++++++++++++++ docs/staking/become-symbiotic-fp.md | 316 ++++++++++++++++++ docs/staking/fast-finality-audit.md | 3 + docs/staking/overview.md | 48 +++ docs/staking/staking-faqs.md | 21 ++ docs/staking/staking-howtos.md | 86 +++++ sidebars.js | 32 ++ static/files/fast-finality-audit-report.pdf | Bin 0 -> 132 bytes 9 files changed, 759 insertions(+), 1 deletion(-) create mode 100644 docs/manta-fp/Manta Symbiotic Finality Provider/Setup.md create mode 100644 docs/staking/become-symbiotic-fp.md create mode 100644 docs/staking/fast-finality-audit.md create mode 100644 docs/staking/overview.md create mode 100644 docs/staking/staking-faqs.md create mode 100644 docs/staking/staking-howtos.md create mode 100644 static/files/fast-finality-audit-report.pdf diff --git a/docs/concepts/fast-finality.md b/docs/concepts/fast-finality.md index 0050582e..a452eeb8 100644 --- a/docs/concepts/fast-finality.md +++ b/docs/concepts/fast-finality.md @@ -1,4 +1,4 @@ -# Fast Finality Solution on Manta Pacific +# Fast Finality on Manta Pacific Layer 2 networks have faced a frustrating problem: it takes way too long for transactions to settle onchain. Most current solutions make users wait up to a week before they can be completely sure their transaction is final and their assets are safe. This delay creates significant UX friction and capital inefficiency. Our solution minimizes finality time while preserving security and decentralization guarantees. diff --git a/docs/manta-fp/Manta Symbiotic Finality Provider/Setup.md b/docs/manta-fp/Manta Symbiotic Finality Provider/Setup.md new file mode 100644 index 00000000..cf4ca223 --- /dev/null +++ b/docs/manta-fp/Manta Symbiotic Finality Provider/Setup.md @@ -0,0 +1,252 @@ +## Deploy Manta SFP operator (Manta Symbiotic Finality Provider) + +Repo Link: [manta-fp](https://github.com/Manta-Network/manta-fp) + + +:::danger important +> The staking amount needs to be greater than 400,000 Manta to receive rewards. +> If the operator is deregistered, the operator name, address, and reward address can no longer be used. + +::: + +#### Steps to Deploy a SFP operator + +1. install go via [go doc](https://go.dev/doc/install) + +2. clone the `manta-fp` code, build, and generate the `sfpd.conf` config file under `/data/manta-fp-sfpd-1/home` + + ```sh + git clone https://github.com/Manta-Network/manta-fp + cd manta-fp + make build + mkdir -p /data/manta-fp-sfpd-1/home /data/manta-fp-sfpd-1/db + ./build/sfpd init --home /data/manta-fp-sfpd-1/home + ``` + +3. Adjust `sfpd.conf` for testnet: + `OperatorName` should be unique + `RewardAddress` is your address to receive fp rewards, it's recommended to set a different address with your operator address for security reasons + `EnableKms` can be enabled to use kms to sign + `ChainId = 11155111` is the eth testnet ChainId + `StartHeight` The latest height from which we start polling the chain of eth testnet + `EthRpc` The rpc url of eth testnet + `L2OutputOracleAddr = 0x2dd44d1b04170C5623cCc55DD5ed43FAB08b0B46` The testnet L2OutputOracleAddr + `MantaStakingMiddlewareAddress = 0x63e3e4542315512d717cc0997b518ab00aa496f0` The testnet MantaStakingMiddlewareAddress + `SymbioticOperatorRegisterAddress = 0x6F75a4ffF97326A00e52662d82EA4FdE86a2C548` The testnet SymbioticOperatorRegisterAddress + `DBPath` The db path, need to be persistent + `Namespace = 00006d742d66702d746e` The celestia Mocha testnet namespace + `DaRpc` The celestia testnet rpc url. You can deploy a [celestia light node](https://docs.celestia.org/how-to-guides/light-node) of Mocha testnet. It also has a [helm chart](https://github.com/celestiaorg/helm-charts). + + ``` + [Application Options] + ; The interval between each attempt to submit finality signature or public randomness after a failure + SubmissionRetryInterval = 1s + + ; The interval between each finality signature(s) submission + SignatureSubmissionInterval = 1s + + ; The maximum number of retries to submit finality signature or public randomness + MaxSubmissionRetries = 20 + + ; The name of operator; The name needs to be registered in the contract + OperatorName = + + ; The manta address to receive fp rewards + RewardAddress = + + ; The custom commission, 10000 = 100% + Commission = 1000 + + ; Logging level for all subsystems + LogLevel = info + + EnableKms = false + + [opeventconfig] + ; The chain id of the chain + ChainId = + + ; The height from which we start polling the chain + StartHeight = + + ; The block step of chain blocks scan + BlockStep = 500 + + ; The maximum number of ethereum blocks that can be stored in the buffer + BufferSize = 500 + + ; The rpc uri of ethereum + EthRpc = + + ; Specifies how many blocks are need to consider a transaction confirmed. + NumConfirmations = 10 + + ; Specifies how many ErrNonceTooLow observations are required to give up on a tx at a particular nonce without receiving confirmation. + SafeAbortNonceTooLowCount = 3 + + ; The contract address of L2OutputOracle address + L2OutputOracleAddr = + + ; The interval between each polling of blocks; the value should be set depending on the block production time but could be set smaller for quick catching up + PollInterval = 5s + + ; Whether to use cloud hsm + EnableHsm = false + + ; The api name of hsm + HsmApiName = + + ; The creden of hsm + HsmCreden = + + ; The address of hsm + HsmAddress = + + ; the contract address of the manta-staking-middleware + MantaStakingMiddlewareAddress = + + ; the contract address of the symbiotic_operator_register_address + SymbioticOperatorRegisterAddress = + + [dbconfig] + ; The directory path in which the database file should be stored. + DBPath = /data/manta-fp-sfpd-1/db + + ; The name of the database file. + DBFileName = symbiotic-fp.db + + ; Prevents the database from syncing its freelist to disk, resulting in improved performance at the expense of increased startup time. + NoFreelistSync = true + + ; Specifies if a Bolt based database backend should be automatically compacted on startup (if the minimum age of the database file is reached). This will require additional disk space for the compacted copy of the database but will result in an overall lower database size after the compaction. + AutoCompact = false + + ; Specifies the minimum time that must have passed since a bolt database file was last compacted for the compaction to be considered again. + AutoCompactMinAge = 168h0m0s + + ; Specifies the timeout value to use when opening the wallet database. + DBTimeout = 1m0s + + [celestiaconfig] + ; Namespace ID for DA node + Namespace = + + ; Dial address of data availability grpc client + DaRpc = http://celstia-node:26658 + + ; Timeout for celestia requests + Timeout = 1m0s + + [metrics] + ; IP of the Prometheus server + Host = 0.0.0.0 + + ; Port of the Prometheus server + Port = 2113 + + ; The interval of Prometheus metrics updated + UpdateInterval = 100ms + + [api] + ; IP of the http server + Host = 0.0.0.0 + + ; Port of the http server + Port = 8080 + ``` + +4. Adjust `sfpd.conf` for mainnet: to be implemented + +5. Start SFP operator + + If EnableKms is false + ```sh + ./build/sfpd start --home /data/manta-fp-sfpd-1/home --auth-token $(CELESTIA_AUTH_TOKEN) --private-key $(FP_EVM_PRIVATE_KEY) + ``` + + If EnableKms is true + ```sh + ./build/sfpd start --home /data/manta-fp-sfpd-1/home --auth-token $(CELESTIA_AUTH_TOKEN) --kms-region $(KMS_REGION) --kms-id $(KMS_ID) + ``` + +6. Health check api: `http://localhost:8080/ping` + +7. Metrics: `http://localhost:2113/metrics` + +#### Rewards + +There is no available UI (Coming soon!) for operators to check and claim their rewards. You can get the accumulated rewards operators through our API service: + +Base URL: `https://main.reward-api.pacific-staking.manta.network` + +- Check the **accumulated** claimable rewards amount: + +Path: `/reward/all-amount` + +Method: `POST` + +Parameters: + +| Parameter | Type | Example Value | Description | +|-----------|------|---------------|-------------| +| address | string | "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3" | The operator's address | +| protocolType | string | "symbiotic" | The protocol type, should be "symbiotic" for Manta FP | +| isOperator | boolean | true | `true` for operator | +| isPending | boolean | false | (Optional) `true`: pending rewards, `false`: claimable rewards | + +Example response: +``` +{ + "success": true, + "data": [ + { + "amount": "1677619047619047618631", // with 18 decimals + "rewardAddress": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", + "ownerAddress": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", + "lastUpdated": 1753370401000 + } + ] +} +``` + +- Claim rewards + +In order to claim rewards operators must get the signature from our service and call the token distribution contract to perform the token claiming. + +1. Get signature + +Path: `/reward/claim-all-data` + +Method: `POST` + +Parameters: + +| Parameter | Type | Example Value | Description | +|-----------|------|---------------|-------------| +| address | string | "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3" | The operator's address | +| protocolType | string | "symbiotic" | The protocol type, should be "symbiotic" for Manta FP | +| isOperator | boolean | true | `true` for operator | + + +Example response: +``` +{ + "success": true, + "data": [ + { + "calldata": "0x514302ca0000000000000000000000009e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec374be214f4c1988163ca53f8d0b53c59e4d74a4c549975d6887444fdb8b8837f6000000000000000000000000000000000000000000000000bed1d0263d9f0000000000000000000000000000000000000000000000000000000000000000001cd704ba26bc476806be3381c49887bd28f1f5360ac195887dc7c245319efa740369db40b4520070f76e6b7a47cf69b04a27aac6a5fb4e3c4039835e3b27c354a2" + } + ] +} +``` + +2. Call token distribution contract with signature + +The following command use foundry [cast](https://foundry-book.zksync.io/cast/) tool to interact with our [token distribution contract](#). + +``` +cast send 0xtodo {CALLDATA_FROM_LAST_STEP} +``` + +After transaction is confirmed the rewards will be transferred to reward address set when registered. + diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md new file mode 100644 index 00000000..2a4b21f3 --- /dev/null +++ b/docs/staking/become-symbiotic-fp.md @@ -0,0 +1,316 @@ +# Deploy a Manta Symbiotic Finality Provider (SFP) Operator + +**GitHub repo**: [manta-fp](https://github.com/Manta-Network/manta-fp) + +:::info Important Note +- **Minimum Stake**: 400,000 MANTA tokens required to receive rewards +- **Operator Registration**: Once deregistered, the operator name, address, and reward address cannot be reused +::: + +## Installation Steps + +### 1. Install Go + +Follow the official [Go installation guide](https://go.dev/doc/install) for your system. + +Verify installation: +```bash +go version +``` + +### 2. Clone and Build SFP + +```bash +# Clone repository +git clone https://github.com/Manta-Network/manta-fp +cd manta-fp + +# Build the binary +make build + +# Create required directories +mkdir -p /data/manta-fp-sfpd-1/home /data/manta-fp-sfpd-1/db + +# Initialize configuration +./build/sfpd init --home /data/manta-fp-sfpd-1/home +``` + +### 3. Configure SFP + +Edit the generated `sfpd.conf` file in `/data/manta-fp-sfpd-1/home/`: + +#### Testnet Configuration + +```toml +[Application Options] +# Operator identification (must be unique across the network). Needs to be registered in the contract +OperatorName = + +# Address to receive operator rewards. Recommended: use a different address from your operator address for better security +RewardAddress = + +# Commission rate (10000 = 100%, 1000 = 10%) +Commission = 1000 + +# Logging level for subsystems +LogLevel = info + +# Enable AWS KMS for key management and signing (optional) +EnableKms = false + +# Interval between each attempt to submit finality signature or public randomness after a failure +SubmissionRetryInterval = 1s + +# Interval between each finality signature(s) +SignatureSubmissionInterval = 1s + +# Maximum no. of retries to submit finality signature or public randomness +MaxSubmissionRetries = 20 + +[opeventconfig] +# Chain ID - Ethereum Sepolia testnet +ChainId = 11155111 + +# Starting block height from where chain polling begins +StartHeight = + +# Block step for chain scanning +BlockStep = 500 + +# Maximum no. of Ethereum blocks that can be stored in the buffer +BufferSize = 500 + +# Number of blocks needed to consider a transaction confirmed +NumConfirmations = 10 + +#ErrNonceTooLow threshold to drop a transaction at a particular nonce without receiving confirmation +SafeAbortNonceTooLowCount = 3 + +# Ethereum RPC endpoint +EthRpc = + +# Contract addresses (Testnet) +L2OutputOracleAddr = "0x2dd44d1b04170C5623cCc55DD5ed43FAB08b0B46" +MantaStakingMiddlewareAddress = "0x63e3e4542315512d717cc0997b518ab00aa496f0" +SymbioticOperatorRegisterAddress = "0x6F75a4ffF97326A00e52662d82EA4FdE86a2C548" + +# Polling interval +PollInterval = 5s + +[cloudhsm] +EnableHSM = false +HsmApiName = +HsmCreden = +HsmAddress = + +[dbconfig] +# Database configuration; path needs to be persistent +DBPath = /data/manta-fp-sfpd-1/db +DBFileName = symbiotic-fp.db + +# Prevents database from syncing its freelist to disk for better performance, but with increased startup time +NoFreelistSync = true + +# Compacts the Bolt DB on startup if file is older than minimum age; uses extra space temporarily but reduces final DB size. +AutoCompact = false +AutoCompactMinAge = 168h0m0s + +# Timeout value to use when opening wallet DB +DBTimeout = 1m0s + +[celestiaconfig] +# Celestia namespace ID for DA node +Namespace = + +# Dial address of data availability grpc client +DaRpc = http://celstia-node:26658 + +# Timeout for Celestia requests +Timeout = 1m0s + +[metrics] +# Prometheus metrics endpoint +Host = 0.0.0.0 +Port = 2113 +UpdateInterval = 100ms + +[api] +# HTTP API endpoint +Host = 0.0.0.0 +Port = 8080 +``` +:::info Celestia Light Node +- Quick setup for Celestia light node if you choose to deploy your own: https://docs.celestia.org/how-to-guides/light-node +- Link to the Helm chart: https://github.com/celestiaorg/helm-charts +::: + +#### Mainnet Configuration + +:::info Coming Soon +Mainnet configuration will be available upon mainnet launch. Key differences will include: +- Production Ethereum mainnet RPC +- Mainnet contract addresses +- Production Celestia namespace +::: + +### 4. Start the SFP Operator + +#### Option A: If `EnableKms = false` + +```bash +# Set environment variables +export CELESTIA_AUTH_TOKEN="your-celestia-auth-token" +export FP_EVM_PRIVATE_KEY="your-operator-private-key" + +# Start the operator +./build/sfpd start \ + --home /data/manta-fp-sfpd-1/home \ + --auth-token $CELESTIA_AUTH_TOKEN \ + --private-key $FP_EVM_PRIVATE_KEY +``` + +#### Option B: If `EnableKms = true` + +```bash +# Set environment variables +export CELESTIA_AUTH_TOKEN="your-celestia-auth-token" +export KMS_REGION="chosen-region" +export KMS_ID="your-kms-key-id" + +# Start the operator +./build/sfpd start \ + --home /data/manta-fp-sfpd-1/home \ + --auth-token $CELESTIA_AUTH_TOKEN \ + --kms-region $KMS_REGION \ + --kms-id $KMS_ID +``` + +## Rewards API + +Operator rewards accumulate over time and can be claimed through the reward API and token distribution contract. + +:::info +A web-based UI for rewards management is coming soon. Currently, operators must use the API to check and claim rewards. +::: + +**Base URL:** `https://main.reward-api.pacific-staking.manta.network` + +### 1. Fetch Accumulated Reward Amount + +Check your total claimable rewards amount. + +- **Path:** `/reward/all-amount` +- **Method:** `POST` +- **Content-Type:** `application/json` + +**Request Parameters**: + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `address` | string | Yes | Your operator's Ethereum address | +| `protocolType` | string | Yes | Must be `"symbiotic"` for Manta FP | +| `isOperator` | boolean | Yes | Set to `true` for operators | +| `isPending` | boolean | No | `false` for claimable rewards (default), `true` for pending rewards | + +**Example Request**: +```bash +curl -X POST https://prod.reward-api.pacific-staking.manta.network/reward/all-amount \ + -H "Content-Type: application/json" \ + -d '{ + "address": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", + "protocolType": "symbiotic", + "isOperator": true, + "isPending": false + }' +``` + +**Example Response**: +```json +{ + "success": true, + "data": [ + { + "amount": "1677619047619047618631", // Amount in wei (18 decimals) + "rewardAddress": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", + "ownerAddress": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", + "lastUpdated": 1753370401000 // Unix timestamp in milliseconds + } + ] +} +``` + +:::info Converting from wei to MANTA +```javascript +// Convert from wei to MANTA +const amountInWei = "1677619047619047618631"; +const amountInManta = amountInWei / 1e18; // 1677.619 MANTA +``` +::: + +### 2. Claim Rewards + +#### Step 1: Get Claim Signature + +Fetch the signature required to claim your rewards. + +- **Path:** `/reward/claim-all-data` +- **Method:** `POST` +- **Content-Type:** `application/json` + +**Request Parameters**: + +| Parameter | Type | Required | Description | +|-----------|------|----------|-------------| +| `address` | string | Yes | Your operator's Ethereum address | +| `protocolType` | string | Yes | Must be `"symbiotic"` for Manta FP | +| `isOperator` | boolean | Yes | Set to `true` for operators | + +**Example Request**: +```bash +curl -X POST https://prod.reward-api.pacific-staking.manta.network/reward/claim-all-data \ + -H "Content-Type: application/json" \ + -d '{ + "address": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", + "protocolType": "symbiotic", + "isOperator": true + }' +``` + +**Example Response**: +```json +{ + "success": true, + "data": [ + { + "calldata": "0x514302ca0000000000000000000000009e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec374be214f4c1988163ca53f8d0b53c59e4d74a4c549975d6887444fdb8b8837f6000000000000000000000000000000000000000000000000bed1d0263d9f0000000000000000000000000000000000000000000000000000000000000000001cd704ba26bc476806be3381c49887bd28f1f5360ac195887dc7c245319efa740369db40b4520070f76e6b7a47cf69b04a27aac6a5fb4e3c4039835e3b27c354a2" + } + ] +} +``` + +#### Step 2: Execute On-chain Claim + +Use the calldata from [Step 1](#step-1-get-claim-signature) to call the token distribution contract and claim your rewards on-chain. + +```bash +# Install cast if not already installed: https://book.getfoundry.sh/getting-started/installation + +# Set your private key (use secure method in production) +export PRIVATE_KEY="your-private-key" + +# Claim rewards +cast send TODO_CONTRACT_ADDRESS \ + "${CALLDATA_FROM_STEP_1}" \ + --private-key $PRIVATE_KEY +``` +Once the transaction is confirmed, rewards will be automatically transferred to the reward address you specified during registration. + +## Monitoring and Maintenance + +- Health check API: `curl http://localhost:8080/ping` +- Metrics API: `http://localhost:2113/metrics` + +## Support and Resources + +- **Technical Support**: [Manta Network Discord](https://discord.gg/) +- **GitHub Issues**: [manta-fp repository](https://github.com/Manta-Network/manta-fp/issues) \ No newline at end of file diff --git a/docs/staking/fast-finality-audit.md b/docs/staking/fast-finality-audit.md new file mode 100644 index 00000000..ba847341 --- /dev/null +++ b/docs/staking/fast-finality-audit.md @@ -0,0 +1,3 @@ +# Fast Finality Audit Report + +[📄 Download Audit Report](../../static/files/fast-finality-audit-report.pdf) \ No newline at end of file diff --git a/docs/staking/overview.md b/docs/staking/overview.md new file mode 100644 index 00000000..3d7a38d2 --- /dev/null +++ b/docs/staking/overview.md @@ -0,0 +1,48 @@ +# Overview + +We're working with folks at [Symbiotic](https://symbiotic.fi/) and [Babylon](https://babylonlabs.io/) on a new secure, decentralized staking solution that enables MANTA token holders to participate in Manta Pacific's network security and earn rewards at the same time. Node runners can opt in as operators on the Symbiotic or Babylon layer and contribute to the network's fast finality architecture by generating proofs that will vastly increase the reliability of state transitions on Manta Pacific and bring down the finality times from days to mere minutes. Learn more about the dual-layer fast finality architecture here: [Fast Finality on Manta Pacific](../concepts/fast-finality) + +:::info About Symbiotic and Babylon + +[Symbiotic](https://symbiotic.fi/) is a decentralized security protocol that enables blockchain networks to access shared security from a pool of staked assets, creating an efficient marketplace for economic security. This helps optimize resource allocation, boosts staking returns for token delegators, and ensures robust security through a flexible, incentive-based design. + +[Babylon](https://babylonlabs.io/) is a decentralized protocol that allows native Bitcoin staking directly on the Bitcoin blockchain, without intermediaries. It uses a shared-security architecture to extend Bitcoin's security to other decentralized networks enabling BTC holders to engage in multi-staking while keeping their assets on the Bitcoin network, offering verifiable security for said networks. + +::: + +We're leveraging Symbiotic's restaking infrastructure and Babylon's shared security architecture to combine Ethereum's and Bitcoin's security with Manta Pacific's high-performance execution. This increases overall asset efficiency for MANTA and BTC token holders and helps enable [fast finality](../concepts/fast-finality) on Manta Pacific. + +## How it Works + +Simply put, Manta Pacific nodes have the option to become operators on the Symbiotic and Babylon layers. This enables MANTA and BTC token holders to delegate their tokens to these active node operators, establishing a dual-layer security framework. By merging Bitcoin's substantial liquidity with Manta Network's native asset, this approach significantly enhances the overall safety and robustness of the network. + +If you're keen to learn more, we recommend checking out the following docs: + +- [Symbiotic - What's restaking?](https://docs.symbiotic.fi/intro/stake) +- [Babylon - Bitcoin staking](https://docs.babylonlabs.io/guides/overview/bitcoin_staking/) +- [Fast finality architecture on Manta Network](../concepts/fast-finality#our-two-layer-solution) + +## Key Benefits of this Architecture + +- Added Security for Manta Pacific: The delegated MANTA and BTC incentivize operators to honestly verify the state transitions on Manta Pacific, and the validation results are relayed to Ethereum to be settled there. +- Token Rewards: Token delegators and node operators earn MANTA rewards. +- Decentralization: Both fast finality and native MANTA staking are enabled using decentralized infrastructure. + +## Reward Mechanism + +Staking rewards are calculated differently for operators and token delegators. + +- **Operators** earn rewards for submitting fast finality proofs to the network. Reward distribution occurs every $3$ days: $54,794$ \$MANTA for the first six months, then $109,588$ \$MANTA thereafter, allocated proportionally based on each operator's proof submissions during the period. Operators can set a commission rate to retain a portion of rewards before distributing the remainder to their delegators. +- **Delegators** receive rewards proportional to their staked amount in their chosen operator's vault. After the operator's commission is deducted, the remaining rewards are distributed among delegators based on their share of the total stake in that vault. + +## Get Started + +### Become an Operator + +If you run a Manta Pacific node and want to join as an operator, refer to the guides below. + +- [Become an operator](./become-symbiotic-fp) + +### Delegate your MANTA Tokens + +Follow the guide showing [how to delegate your MANTA tokens - TBD](#placeholder) to an active operator. \ No newline at end of file diff --git a/docs/staking/staking-faqs.md b/docs/staking/staking-faqs.md new file mode 100644 index 00000000..1d0d9802 --- /dev/null +++ b/docs/staking/staking-faqs.md @@ -0,0 +1,21 @@ +# FAQs + +## How do I stake my MANTA tokens? + +Start by navigating to the [staking dashboard](#placeholder), and then choose an active operator of your choice. Follow our [step-by-step guide](./staking-howtos.md). + +## Are staking rewards compounded? + +No, your staking rewards will not be compounded automatically. Once you claim your rewards to your wallet, you can choose to delegate them manually to an operator. Check out the [How-to guides](./staking-howtos) for help. + +## What's the minimum token amount I can delegate to an operator? + +There is no lower limit on the token amount you can delegate to an operator. + +## Is there an unbonding period for the staked tokens? + +Yes. There is a *3 day waiting period* after you unstake your tokens before you can claim them on the [**My Stake**](#placeholder) page. + +## Is slashing currently active on the staking layer? + +Slashing is not active during the early stages of the staking layer. The operators that fail to contribute in the form of fast finality proofs will simply not receive any rewards. diff --git a/docs/staking/staking-howtos.md b/docs/staking/staking-howtos.md new file mode 100644 index 00000000..ceec441b --- /dev/null +++ b/docs/staking/staking-howtos.md @@ -0,0 +1,86 @@ +# How-to Guides for Manta Staking + +By delegating your tokens to a validator, you contribute to the security and stability of Manta Pacific. In this guide, we'll walk you through the steps required to delegate your MANTA tokens to an active operator on the staking layer. + +## Delegate MANTA Tokens + +:::tip Before you start +Follow the links below to take another look at how the native staking mechanism works and the rules for token delegators and node operators: + +- [Rules and roles - TBD](#placeholder) +- [Reward mechanism](./overview#reward-mechanism) +::: + +### Step 1: Access the staking dashboard + +[TBD - Screenshot here] + +Navigate to the [Manta Staking dashboard](#placeholder). Start by connecting your wallet to the platform. You'll be able to see your wallet balance and your previous staking stats if you've delegated tokens to an operator before. + +### Step 2: Choose an active operator + +[TBD - Screenshot here] + +You'll be able to see current stats such as the total staked amount, the APR offered, and the performance ratio of the available operators in the list displayed on the **Staking Pool** page. Choose an active operator from the list and select the **Stake** button. + +### Step 3: Enter staking amount + +[TBD - Screenshot here] + +Enter your desired staking amount in the empty field in the pop-up window. Select **Stake** to proceed. You'll be prompted to authorize the action by signing the transaction in your wallet. + +### Step 4: Check final status + +[TBD - Screenshot here] + +Navigate to the **My Stake** page from the navbar at the top. You'll see the operator you chose show up in the list at the bottom and the amount of MANTA tokens you delegated to them. + +## Claim Staking Rewards + +### Step 1: Access the staking dashboard + +[TBD - Screenshot here] + +Navigate to the [Manta Staking dashboard](#placeholder) and open the **My Stake** page. + +### Step 2: Check for claimable rewards + +[TBD - Screenshot here] + +Locate the **Rewards Claimable** box on the page. If you have any claimable MANTA token rewards, the respective amount will be displayed. + +### Step 3: Claim rewards + +[TBD - Screenshot here] + +If you have any claimable rewards available, select the **Claim** button, and then select **Confirm** in the pop-up window. + +## Unstake MANTA Tokens + +### Step 1: Access the staking dashboard + +[TBD - Screenshot here] + +Navigate to the [Manta Staking dashboard](#placeholder) and open the **My Stake** page. The list at the bottom displays operators and the respective token amounts you've delegated to them. + +### Step 2: Locate the operator + +[TBD - Screenshot here] + +Locate the operator you wish to unstake your tokens from and select the corresponding **Unstake** button on the right. + +### Step 3: Enter unstaking amount + +:::caution +Note that you will not be able to cancel the unstaking action once confirmed and you'll have to wait out the 7-day waiting period before your MANTA tokens arrive in your wallet. +::: + +[TBD - Screenshot here] + +Enter the token amount you're looking to unstake in the empty field in the pop-up window. Next, select the **Unstake** button to confirm the unstake action. + +### Step 4: Claim your unstaked tokens + +[TBD - Screenshot here] + +Once the 7-day waiting period ends, the tokens will be available to claim on the **My Stake** page. Simply select the **Claim** button to claim your unstaked tokens and confirm the action. \ No newline at end of file diff --git a/sidebars.js b/sidebars.js index acc460c8..19ef4de9 100644 --- a/sidebars.js +++ b/sidebars.js @@ -68,6 +68,38 @@ module.exports = { }, ], }, + { + type: "category", + label: "Staking", + items: [ + + { + type: "doc", + label: "Overview", + id: "staking/overview", + }, + { + type: "doc", + label: "How-to Guides", + id: "staking/staking-howtos", + }, + { + type: "doc", + label: "Become an Operator", + id: "staking/become-symbiotic-fp", + }, + { + type: "doc", + label: "FAQs", + id: "staking/staking-faqs", + }, + { + type: "doc", + label: "Fast Finality Audit Report", + id: "staking/fast-finality-audit", + }, + ], + }, ], }, { diff --git a/static/files/fast-finality-audit-report.pdf b/static/files/fast-finality-audit-report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f40222ca6d586ceeea824b723544dd2763e3bb58 GIT binary patch literal 132 zcmWN|yAi`63;@vHQ?Nh`;v^iBGbp!tKP-m(fUW!IghbP`E2v?Dr3E^ zXIxW%%W-g$7c9MHG3u@zZe*y~V6@#8XtrpJvjmvH00s21cyy#4n}7&8Q}n9b(E|q+ Pkkc~Sj|GrIZ)y1h<~}BM literal 0 HcmV?d00001 From e2bb937aec29f7e9b62db4deb5323be75cfbe31e Mon Sep 17 00:00:00 2001 From: hsutaiyu Date: Sat, 18 Oct 2025 17:30:01 +0800 Subject: [PATCH 2/3] Update staking guides with screenshots and mainnet info Added step-by-step screenshots to staking-howtos.md for improved clarity and user experience. Updated become-symbiotic-fp.md to remove placeholder mainnet configuration and provide correct reward API URL and Discord support link. --- docs/staking/become-symbiotic-fp.md | 17 ++------- docs/staking/staking-howtos.md | 35 +++++++++---------- static/img/staking-guide/amount-staked.png | 3 ++ static/img/staking-guide/choose-operator.png | 3 ++ .../img/staking-guide/claimable-rewards.png | 3 ++ static/img/staking-guide/confirm-claim.png | 3 ++ static/img/staking-guide/connect-wallet.png | 3 ++ static/img/staking-guide/open-my-stake.png | 3 ++ static/img/staking-guide/select-unstake.png | 3 ++ static/img/staking-guide/stake-amount.png | 3 ++ .../img/staking-guide/unstake-in-progress.png | 3 ++ 11 files changed, 46 insertions(+), 33 deletions(-) create mode 100644 static/img/staking-guide/amount-staked.png create mode 100644 static/img/staking-guide/choose-operator.png create mode 100644 static/img/staking-guide/claimable-rewards.png create mode 100644 static/img/staking-guide/confirm-claim.png create mode 100644 static/img/staking-guide/connect-wallet.png create mode 100644 static/img/staking-guide/open-my-stake.png create mode 100644 static/img/staking-guide/select-unstake.png create mode 100644 static/img/staking-guide/stake-amount.png create mode 100644 static/img/staking-guide/unstake-in-progress.png diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md index 2a4b21f3..6ec0c589 100644 --- a/docs/staking/become-symbiotic-fp.md +++ b/docs/staking/become-symbiotic-fp.md @@ -144,15 +144,6 @@ Port = 8080 - Link to the Helm chart: https://github.com/celestiaorg/helm-charts ::: -#### Mainnet Configuration - -:::info Coming Soon -Mainnet configuration will be available upon mainnet launch. Key differences will include: -- Production Ethereum mainnet RPC -- Mainnet contract addresses -- Production Celestia namespace -::: - ### 4. Start the SFP Operator #### Option A: If `EnableKms = false` @@ -189,11 +180,7 @@ export KMS_ID="your-kms-key-id" Operator rewards accumulate over time and can be claimed through the reward API and token distribution contract. -:::info -A web-based UI for rewards management is coming soon. Currently, operators must use the API to check and claim rewards. -::: - -**Base URL:** `https://main.reward-api.pacific-staking.manta.network` +**Base URL:** `https://prod.reward-api.pacific-staking.manta.network` ### 1. Fetch Accumulated Reward Amount @@ -312,5 +299,5 @@ Once the transaction is confirmed, rewards will be automatically transferred to ## Support and Resources -- **Technical Support**: [Manta Network Discord](https://discord.gg/) +- **Technical Support**: [Manta Network Discord](https://discord.gg/ktZWgwSu93) - **GitHub Issues**: [manta-fp repository](https://github.com/Manta-Network/manta-fp/issues) \ No newline at end of file diff --git a/docs/staking/staking-howtos.md b/docs/staking/staking-howtos.md index ceec441b..ec8696b7 100644 --- a/docs/staking/staking-howtos.md +++ b/docs/staking/staking-howtos.md @@ -5,33 +5,32 @@ By delegating your tokens to a validator, you contribute to the security and sta ## Delegate MANTA Tokens :::tip Before you start -Follow the links below to take another look at how the native staking mechanism works and the rules for token delegators and node operators: - -- [Rules and roles - TBD](#placeholder) -- [Reward mechanism](./overview#reward-mechanism) +Check out details on the [reward mechanism](./overview#reward-mechanism) to understand how it works, and the rules for token delegators and node operators. ::: ### Step 1: Access the staking dashboard -[TBD - Screenshot here] +![connect-wallet](../../static/img/staking-guide/connect-wallet.png) -Navigate to the [Manta Staking dashboard](#placeholder). Start by connecting your wallet to the platform. You'll be able to see your wallet balance and your previous staking stats if you've delegated tokens to an operator before. +Navigate to the [Manta Staking dashboard](https://staking.manta.network/). Start by connecting your wallet to the platform. You'll be able to see your wallet balance and your previous staking stats if you've delegated tokens to an operator before. ### Step 2: Choose an active operator -[TBD - Screenshot here] +![choose-operator](../../static/img/staking-guide/choose-operator.png) You'll be able to see current stats such as the total staked amount, the APR offered, and the performance ratio of the available operators in the list displayed on the **Staking Pool** page. Choose an active operator from the list and select the **Stake** button. ### Step 3: Enter staking amount -[TBD - Screenshot here] +import stakeamount from '/img/staking-guide/stake-amount.png'; + +
stake-amount
Enter your desired staking amount in the empty field in the pop-up window. Select **Stake** to proceed. You'll be prompted to authorize the action by signing the transaction in your wallet. ### Step 4: Check final status -[TBD - Screenshot here] +![amount-staked](../../static/img/staking-guide/amount-staked.png) Navigate to the **My Stake** page from the navbar at the top. You'll see the operator you chose show up in the list at the bottom and the amount of MANTA tokens you delegated to them. @@ -39,19 +38,19 @@ Navigate to the **My Stake** page from the navbar at the top. You'll see the ope ### Step 1: Access the staking dashboard -[TBD - Screenshot here] +![open-my-stake](../../static/img/staking-guide/open-my-stake.png) -Navigate to the [Manta Staking dashboard](#placeholder) and open the **My Stake** page. +Navigate to the [Manta Staking dashboard](https://staking.manta.network/) and open the **My Stake** page. ### Step 2: Check for claimable rewards -[TBD - Screenshot here] +![claimable-rewards](../../static/img/staking-guide/claimable-rewards.png) Locate the **Rewards Claimable** box on the page. If you have any claimable MANTA token rewards, the respective amount will be displayed. ### Step 3: Claim rewards -[TBD - Screenshot here] +![confirm-claim](../../static/img/staking-guide/confirm-claim.png) If you have any claimable rewards available, select the **Claim** button, and then select **Confirm** in the pop-up window. @@ -59,13 +58,13 @@ If you have any claimable rewards available, select the **Claim** button, and th ### Step 1: Access the staking dashboard -[TBD - Screenshot here] +![open-my-stake](../../static/img/staking-guide/open-my-stake.png) -Navigate to the [Manta Staking dashboard](#placeholder) and open the **My Stake** page. The list at the bottom displays operators and the respective token amounts you've delegated to them. +Navigate to the [Manta Staking dashboard](https://staking.manta.network/) and open the **My Stake** page. The list at the bottom displays operators and the respective token amounts you've delegated to them. ### Step 2: Locate the operator -[TBD - Screenshot here] +![select-unstake](../../static/img/staking-guide/select-unstake.png) Locate the operator you wish to unstake your tokens from and select the corresponding **Unstake** button on the right. @@ -75,12 +74,12 @@ Locate the operator you wish to unstake your tokens from and select the correspo Note that you will not be able to cancel the unstaking action once confirmed and you'll have to wait out the 7-day waiting period before your MANTA tokens arrive in your wallet. ::: -[TBD - Screenshot here] +![unstake-in-progres](../../static/img/staking-guide/unstake-in-progress.png) Enter the token amount you're looking to unstake in the empty field in the pop-up window. Next, select the **Unstake** button to confirm the unstake action. ### Step 4: Claim your unstaked tokens -[TBD - Screenshot here] +![claimable-rewards](../../static/img/staking-guide/claimable-rewards.png) Once the 7-day waiting period ends, the tokens will be available to claim on the **My Stake** page. Simply select the **Claim** button to claim your unstaked tokens and confirm the action. \ No newline at end of file diff --git a/static/img/staking-guide/amount-staked.png b/static/img/staking-guide/amount-staked.png new file mode 100644 index 00000000..db188aac --- /dev/null +++ b/static/img/staking-guide/amount-staked.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66e08a5410c5f1e0474f2bbcbabd096d85a30abfdc4ad8702ebe54b2f4f20eb5 +size 164507 diff --git a/static/img/staking-guide/choose-operator.png b/static/img/staking-guide/choose-operator.png new file mode 100644 index 00000000..5494a45c --- /dev/null +++ b/static/img/staking-guide/choose-operator.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2ea45380cee92b6d4077d72edf650eabd560c60a957917337322b3b5a7ffb4d +size 1089737 diff --git a/static/img/staking-guide/claimable-rewards.png b/static/img/staking-guide/claimable-rewards.png new file mode 100644 index 00000000..90c67c85 --- /dev/null +++ b/static/img/staking-guide/claimable-rewards.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74eb3d135594d4bfee24d50508a9065d1ca9f0b633780a2e67de9c567c1e6046 +size 27338 diff --git a/static/img/staking-guide/confirm-claim.png b/static/img/staking-guide/confirm-claim.png new file mode 100644 index 00000000..7b766af6 --- /dev/null +++ b/static/img/staking-guide/confirm-claim.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b2859fc07e96b2efa6eb0cf049048c3c019700450e3737b74f64218e1289bea +size 14695 diff --git a/static/img/staking-guide/connect-wallet.png b/static/img/staking-guide/connect-wallet.png new file mode 100644 index 00000000..054a40ef --- /dev/null +++ b/static/img/staking-guide/connect-wallet.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e25448893e0cda054d8033310595f2447f98ce4eb45d9ccc8e2c098b8c04f5b +size 44697 diff --git a/static/img/staking-guide/open-my-stake.png b/static/img/staking-guide/open-my-stake.png new file mode 100644 index 00000000..bb29ea38 --- /dev/null +++ b/static/img/staking-guide/open-my-stake.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adf704a92f1e1df4f31227c9cc76e1ad5bf9b9ba8c3536f18c8c79a1ff05be4c +size 86141 diff --git a/static/img/staking-guide/select-unstake.png b/static/img/staking-guide/select-unstake.png new file mode 100644 index 00000000..8e65216d --- /dev/null +++ b/static/img/staking-guide/select-unstake.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c88430954ed1a44c24e7e3afe414061acd4cf29e73ec78dcbbba157a096b7aab +size 85360 diff --git a/static/img/staking-guide/stake-amount.png b/static/img/staking-guide/stake-amount.png new file mode 100644 index 00000000..8c4e9b1b --- /dev/null +++ b/static/img/staking-guide/stake-amount.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98d55cf3fe6975ade951ab6d2468bf83b9833bf14c8916e3fac1f3f2504729d1 +size 53681 diff --git a/static/img/staking-guide/unstake-in-progress.png b/static/img/staking-guide/unstake-in-progress.png new file mode 100644 index 00000000..5ef8646f --- /dev/null +++ b/static/img/staking-guide/unstake-in-progress.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78d2a56f500013742ab5a7b5bbe72f82435d067fa5cd296358a2d7140f4a63ee +size 370760 From 69a663e727c5891b90d8cc127b1a5b02ce791462 Mon Sep 17 00:00:00 2001 From: hsutaiyu Date: Sun, 19 Oct 2025 11:09:13 +0800 Subject: [PATCH 3/3] Update staking FAQ links to live dashboard URLs Replaced placeholder links in the staking FAQ with actual URLs to the staking dashboard and My Stake page for improved user navigation. --- docs/staking/staking-faqs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/staking/staking-faqs.md b/docs/staking/staking-faqs.md index 1d0d9802..7ef03db1 100644 --- a/docs/staking/staking-faqs.md +++ b/docs/staking/staking-faqs.md @@ -2,7 +2,7 @@ ## How do I stake my MANTA tokens? -Start by navigating to the [staking dashboard](#placeholder), and then choose an active operator of your choice. Follow our [step-by-step guide](./staking-howtos.md). +Start by navigating to the [staking dashboard](https://staking.manta.network/), and then choose an active operator of your choice. Follow our [step-by-step guide](./staking-howtos.md). ## Are staking rewards compounded? @@ -14,7 +14,7 @@ There is no lower limit on the token amount you can delegate to an operator. ## Is there an unbonding period for the staked tokens? -Yes. There is a *3 day waiting period* after you unstake your tokens before you can claim them on the [**My Stake**](#placeholder) page. +Yes. There is a *3 day waiting period* after you unstake your tokens before you can claim them on the [**My Stake**](https://staking.manta.network/my-stake) page. ## Is slashing currently active on the staking layer?