From 07dd0c7b4119954028a36784de5a9030b71d94c6 Mon Sep 17 00:00:00 2001 From: winnie Date: Fri, 14 Nov 2025 17:33:43 +0800 Subject: [PATCH 1/6] add prod conf for sfpd operator --- docs/staking/become-symbiotic-fp.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md index b79dc786..46c59753 100644 --- a/docs/staking/become-symbiotic-fp.md +++ b/docs/staking/become-symbiotic-fp.md @@ -139,6 +139,9 @@ UpdateInterval = 100ms Host = 0.0.0.0 Port = 8080 ``` + +#### Testnet Configuration + :::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 From 9b467affeee64564f6437e042701e55e1262d278 Mon Sep 17 00:00:00 2001 From: winnie Date: Fri, 14 Nov 2025 18:35:49 +0800 Subject: [PATCH 2/6] add prod conf for sfpd operator --- docs/staking/become-symbiotic-fp.md | 168 +++++++++++++++++++++++++++- 1 file changed, 163 insertions(+), 5 deletions(-) diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md index 46c59753..3bd09bbc 100644 --- a/docs/staking/become-symbiotic-fp.md +++ b/docs/staking/become-symbiotic-fp.md @@ -41,6 +41,19 @@ Edit the generated `sfpd.conf` file in `/data/manta-fp-sfpd-1/home/`: #### Testnet Configuration + `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 block 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). + ```toml [Application Options] # Operator identification (must be unique across the network). Needs to be registered in the contract @@ -120,10 +133,10 @@ DBTimeout = 1m0s [celestiaconfig] # Celestia namespace ID for DA node -Namespace = +Namespace = 00006d742d66702d746e # Dial address of data availability grpc client -DaRpc = http://celstia-node:26658 +DaRpc = # Timeout for Celestia requests Timeout = 1m0s @@ -140,21 +153,166 @@ Host = 0.0.0.0 Port = 8080 ``` -#### Testnet Configuration +#### Mainnet Configuration + + `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 = 1` is the ETH Mainnet ChainId + `StartHeight` The latest block height from which we start polling the chain of ETH Mainnet + `EthRpc` The rpc url of ETH Mainnet + `L2OutputOracleAddr = 0x30c789674ad3B458886BBC9abf42EEe19EA05C1D` The Mainnet L2OutputOracleAddr + `MantaStakingMiddlewareAddress = 0xb385a5412950c28144d74014f843189583a1d9fa` The Mainnet MantaStakingMiddlewareAddress + `SymbioticOperatorRegisterAddress = 0xAd817a6Bc954F678451A71363f04150FDD81Af9F` The Mainnet SymbioticOperatorRegisterAddress + `DBPath` The db path, need to be persistent + `Namespace = 00006d742d66702d6d6e` The Celestia Mainnet namespace + `DaRpc` The Celestia Mainnet rpc url. You can deploy a [celestia light node](https://docs.celestia.org/how-to-guides/light-node) of Mainnet. It also has a [helm chart](https://github.com/celestiaorg/helm-charts). + +```toml +[Application Options] +; The name of operator; The name needs to be registered in the contract +OperatorName = + +; The manta address to receive fp rewards +RewardAddress = + +; 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 custom commission, 10000 = 100% +Commission = 1000 + +; Logging level for all subsystems +LogLevel = info + +EnableKms = false + +[opeventconfig] +; The chain id of the chain +ChainId = 1 + +; he 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 (Mainnet) +L2OutputOracleAddr = 0x30c789674ad3B458886BBC9abf42EEe19EA05C1D + +; the contract address of the manta-staking-middleware (Mainnet) +MantaStakingMiddlewareAddress = 0xb385a5412950c28144d74014f843189583a1d9fa + +; the contract address of the symbiotic_operator_register_address (Mainnet) +SymbioticOperatorRegisterAddress = 0xAd817a6Bc954F678451A71363f04150FDD81Af9F + +; 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 = + +[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 = 00006d742d66702d6d6e + +; Dial address of data availability grpc client +DaRpc = + +; 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 +``` :::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 ::: -### 4. Start the SFP Operator +### 4. prepare your operator ETH private key + +For example, your can use below node script to generate your operator eth private key + +```node +const { Wallet } = require("ethers"); + +const wallet = Wallet.createRandom(); + +console.log("地址:", wallet.address); +console.log("私钥:", wallet.privateKey); +console.log("助记词:", wallet.mnemonic.phrase); +``` + +### 5. 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" +export FP_EVM_PRIVATE_KEY="your-operator-eth-private-key" # Start the operator ./build/sfpd start \ From 8e45c87e393d306ec5f27b5a6665e2ba5cff618c Mon Sep 17 00:00:00 2001 From: winnie Date: Fri, 14 Nov 2025 19:00:12 +0800 Subject: [PATCH 3/6] adjust a little --- docs/staking/become-symbiotic-fp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md index 3bd09bbc..66701268 100644 --- a/docs/staking/become-symbiotic-fp.md +++ b/docs/staking/become-symbiotic-fp.md @@ -52,7 +52,7 @@ Edit the generated `sfpd.conf` file in `/data/manta-fp-sfpd-1/home/`: `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). + `DaRpc` The Celestia Mocha 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). ```toml [Application Options] From 595557db647b430fdd303ec06821918bb7e39b3c Mon Sep 17 00:00:00 2001 From: hsutaiyu Date: Fri, 14 Nov 2025 21:25:49 +0800 Subject: [PATCH 4/6] Revamp SFP operator setup and reward docs Improved clarity and structure for configuring SFP operator nodes, including a new configuration table for critical fields, updated instructions for generating Ethereum private keys, and enhanced API documentation with clearer examples and parameter tables. Deprecated verbose configuration sections in favor of concise, referenceable details and added security notes for private key handling. --- docs/staking/become-symbiotic-fp.md | 274 +++++++++------------------- 1 file changed, 82 insertions(+), 192 deletions(-) diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md index 3bd09bbc..182062d5 100644 --- a/docs/staking/become-symbiotic-fp.md +++ b/docs/staking/become-symbiotic-fp.md @@ -3,6 +3,7 @@ **GitHub repo**: [manta-fp](https://github.com/Manta-Network/manta-fp) :::info Important Note + - **Minimum Stake**: 100,000 MANTA tokens required to receive rewards - **Operator Registration**: Once deregistered, the operator name, address, and reward address cannot be reused ::: @@ -14,6 +15,7 @@ Follow the official [Go installation guide](https://go.dev/doc/install) for your system. Verify installation: + ```bash go version ``` @@ -37,30 +39,42 @@ mkdir -p /data/manta-fp-sfpd-1/home /data/manta-fp-sfpd-1/db ### 3. Configure SFP -Edit the generated `sfpd.conf` file in `/data/manta-fp-sfpd-1/home/`: +Edit the generated `sfpd.conf` file in `/data/manta-fp-sfpd-1/home/`. You'll need to configure the following _critical_ fields in `sfpd.conf` before running your node. + +__(Scroll right to view complete table on smaller screens)__ + +| Field | Description | Testnet Value | Mainnet Value | +| ---------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------- | -------------------------------------------- | +| `OperatorName` | Unique operator identifier (needs to be registered in contract) | _Chosen name_ | _Chosen name_ | +| `RewardAddress` | Address to receive FP rewards (recommended: separate from operator address) | _Wallet address_ | _Wallet address_ | +| `EnableKms` | Enable AWS KMS for key management and signing (optional) | `true` or `false` | `true` or `false` | +| `ChainId` | Ethereum network chain ID | `11155111` (Sepolia) | `1` | +| `StartHeight` | Block height to begin polling from | _Latest block height_ | _Latest block height_ | +| `EthRpc` | Ethereum RPC endpoint URL | _Sepolia RPC_ | _Mainnet RPC_ | +| `L2OutputOracleAddr` | L2 Output Oracle contract address | `0x2dd44d1b04170C5623cCc55DD5ed43FAB08b0B46` | `0x30c789674ad3B458886BBC9abf42EEe19EA05C1D` | +| `MantaStakingMiddlewareAddress` | Manta Staking Middleware contract | `0x63e3e4542315512d717cc0997b518ab00aa496f0` | `0xb385a5412950c28144d74014f843189583a1d9fa` | +| `SymbioticOperatorRegisterAddress` | Symbiotic Operator Register contract | `0x6F75a4ffF97326A00e52662d82EA4FdE86a2C548` | `0xAd817a6Bc954F678451A71363f04150FDD81Af9F` | +| `DBPath` | Database storage path (must be persistent) | `/data/manta-fp-sfpd-1/db` | `/data/manta-fp-sfpd-1/db` | +| `Namespace` | Celestia namespace ID | `00006d742d66702d746e` (Mocha) | `00006d742d66702d6d6e` | +| `DaRpc` | Celestia RPC endpoint | _Mocha RPC_ | _Mainnet RPC_ | -#### Testnet Configuration +:::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 +::: + +#### Complete Description (For reference only) - `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 block 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). +
Click me to view! +

```toml [Application Options] # Operator identification (must be unique across the network). Needs to be registered in the contract -OperatorName = +OperatorName = # Address to receive operator rewards. Recommended: use a different address from your operator address for better security -RewardAddress = +RewardAddress = # Commission rate (10000 = 100%, 1000 = 10%) Commission = 1000 @@ -85,7 +99,7 @@ MaxSubmissionRetries = 20 ChainId = 11155111 # Starting block height from where chain polling begins -StartHeight = +StartHeight = # Block step for chain scanning BlockStep = 500 @@ -100,7 +114,7 @@ NumConfirmations = 10 SafeAbortNonceTooLowCount = 3 # Ethereum RPC endpoint -EthRpc = +EthRpc = # Contract addresses (Testnet) L2OutputOracleAddr = "0x2dd44d1b04170C5623cCc55DD5ed43FAB08b0B46" @@ -112,9 +126,9 @@ PollInterval = 5s [cloudhsm] EnableHSM = false -HsmApiName = -HsmCreden = -HsmAddress = +HsmApiName = +HsmCreden = +HsmAddress = [dbconfig] # Database configuration; path needs to be persistent @@ -152,158 +166,27 @@ UpdateInterval = 100ms Host = 0.0.0.0 Port = 8080 ``` +

+
-#### Mainnet Configuration - - `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 = 1` is the ETH Mainnet ChainId - `StartHeight` The latest block height from which we start polling the chain of ETH Mainnet - `EthRpc` The rpc url of ETH Mainnet - `L2OutputOracleAddr = 0x30c789674ad3B458886BBC9abf42EEe19EA05C1D` The Mainnet L2OutputOracleAddr - `MantaStakingMiddlewareAddress = 0xb385a5412950c28144d74014f843189583a1d9fa` The Mainnet MantaStakingMiddlewareAddress - `SymbioticOperatorRegisterAddress = 0xAd817a6Bc954F678451A71363f04150FDD81Af9F` The Mainnet SymbioticOperatorRegisterAddress - `DBPath` The db path, need to be persistent - `Namespace = 00006d742d66702d6d6e` The Celestia Mainnet namespace - `DaRpc` The Celestia Mainnet rpc url. You can deploy a [celestia light node](https://docs.celestia.org/how-to-guides/light-node) of Mainnet. It also has a [helm chart](https://github.com/celestiaorg/helm-charts). - -```toml -[Application Options] -; The name of operator; The name needs to be registered in the contract -OperatorName = - -; The manta address to receive fp rewards -RewardAddress = - -; 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 custom commission, 10000 = 100% -Commission = 1000 - -; Logging level for all subsystems -LogLevel = info - -EnableKms = false - -[opeventconfig] -; The chain id of the chain -ChainId = 1 - -; he 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 (Mainnet) -L2OutputOracleAddr = 0x30c789674ad3B458886BBC9abf42EEe19EA05C1D - -; the contract address of the manta-staking-middleware (Mainnet) -MantaStakingMiddlewareAddress = 0xb385a5412950c28144d74014f843189583a1d9fa - -; the contract address of the symbiotic_operator_register_address (Mainnet) -SymbioticOperatorRegisterAddress = 0xAd817a6Bc954F678451A71363f04150FDD81Af9F - -; 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 +### 4. Prepare your operator ETH private key -; The api name of hsm -HsmApiName = - -; The creden of hsm -HsmCreden = - -; The address of hsm -HsmAddress = - -[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 = 00006d742d66702d6d6e +You'll need a fresh Ethereum private key for your operator node. You can use the Node.js script below to generate one. -; Dial address of data availability grpc client -DaRpc = - -; 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 +```js +const { Wallet } = require("ethers"); -[api] -; IP of the http server -Host = 0.0.0.0 +const wallet = Wallet.createRandom(); -; Port of the http server -Port = 8080 +console.log("Address:", wallet.address); +console.log("Private Key:", wallet.privateKey); +console.log("Mnemonic:", wallet.mnemonic.phrase); ``` +:::caution Private Key Security -:::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 +Store your private keys and mnemonics securely. Make sure to use a secure `.env` file when handling private keys and never share or commit them to version control. ::: -### 4. prepare your operator ETH private key - -For example, your can use below node script to generate your operator eth private key - -```node -const { Wallet } = require("ethers"); - -const wallet = Wallet.createRandom(); - -console.log("地址:", wallet.address); -console.log("私钥:", wallet.privateKey); -console.log("助记词:", wallet.mnemonic.phrase); -``` ### 5. Start the SFP Operator @@ -353,14 +236,15 @@ Check your total claimable rewards amount. **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 | +| 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" \ @@ -373,26 +257,29 @@ curl -X POST https://prod.reward-api.pacific-staking.manta.network/reward/all-am ``` **Example Response**: + ```json { - "success": true, - "data": [ - { - "amount": "1677619047619047618631", // Amount in wei (18 decimals) - "rewardAddress": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", - "ownerAddress": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", - "lastUpdated": 1753370401000 // Unix timestamp in milliseconds - } - ] + "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 @@ -401,19 +288,20 @@ const amountInManta = amountInWei / 1e18; // 1677.619 MANTA Fetch the signature required to claim your rewards. -- **Path:** `/reward/claim-all-data` +- **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 | +| 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" \ @@ -425,14 +313,15 @@ curl -X POST https://prod.reward-api.pacific-staking.manta.network/reward/claim- ``` **Example Response**: + ```json { - "success": true, - "data": [ - { - "calldata": "0x514302ca0000000000000000000000009e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec374be214f4c1988163ca53f8d0b53c59e4d74a4c549975d6887444fdb8b8837f6000000000000000000000000000000000000000000000000bed1d0263d9f0000000000000000000000000000000000000000000000000000000000000000001cd704ba26bc476806be3381c49887bd28f1f5360ac195887dc7c245319efa740369db40b4520070f76e6b7a47cf69b04a27aac6a5fb4e3c4039835e3b27c354a2" - } - ] + "success": true, + "data": [ + { + "calldata": "0x514302ca0000000000000000000000009e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec374be214f4c1988163ca53f8d0b53c59e4d74a4c549975d6887444fdb8b8837f6000000000000000000000000000000000000000000000000bed1d0263d9f0000000000000000000000000000000000000000000000000000000000000000001cd704ba26bc476806be3381c49887bd28f1f5360ac195887dc7c245319efa740369db40b4520070f76e6b7a47cf69b04a27aac6a5fb4e3c4039835e3b27c354a2" + } + ] } ``` @@ -451,6 +340,7 @@ 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 @@ -461,4 +351,4 @@ Once the transaction is confirmed, rewards will be automatically transferred to ## Support and Resources - **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 +- **GitHub Issues**: [manta-fp repository](https://github.com/Manta-Network/manta-fp/issues) From 68cc3414bd89cd1720783376fefec0e2c7a02491 Mon Sep 17 00:00:00 2001 From: hsutaiyu Date: Fri, 14 Nov 2025 21:31:42 +0800 Subject: [PATCH 5/6] Remove redundant notes and extra spacing in staking guide Cleaned up the 'become-symbiotic-fp.md' documentation by removing duplicate operator configuration notes and unnecessary blank lines for improved readability. --- docs/staking/become-symbiotic-fp.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md index c258c263..2f36627f 100644 --- a/docs/staking/become-symbiotic-fp.md +++ b/docs/staking/become-symbiotic-fp.md @@ -3,7 +3,6 @@ **GitHub repo**: [manta-fp](https://github.com/Manta-Network/manta-fp) :::info Important Note - - **Minimum Stake**: 100,000 MANTA tokens required to receive rewards - **Operator Registration**: Once deregistered, the operator name, address, and reward address cannot be reused ::: @@ -67,18 +66,6 @@ __(Scroll right to view complete table on smaller screens)__
Click me to view!

- `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 block 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 Mocha 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). ```toml [Application Options] @@ -195,7 +182,6 @@ console.log("Private Key:", wallet.privateKey); console.log("Mnemonic:", wallet.mnemonic.phrase); ``` :::caution Private Key Security - Store your private keys and mnemonics securely. Make sure to use a secure `.env` file when handling private keys and never share or commit them to version control. ::: From 0129c8fe68b1c12d74f66ce083b23f4baf74053b Mon Sep 17 00:00:00 2001 From: hsutaiyu Date: Mon, 17 Nov 2025 11:10:09 +0800 Subject: [PATCH 6/6] Update staking docs with reward API and operator info - Correct reward API request payload format - Update reward figures in overview --- docs/staking/become-symbiotic-fp.md | 4 ++-- docs/staking/overview.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/staking/become-symbiotic-fp.md b/docs/staking/become-symbiotic-fp.md index 2f36627f..28521e63 100644 --- a/docs/staking/become-symbiotic-fp.md +++ b/docs/staking/become-symbiotic-fp.md @@ -246,12 +246,12 @@ Check your total claimable rewards amount. ```bash curl -X POST https://prod.reward-api.pacific-staking.manta.network/reward/all-amount \ -H "Content-Type: application/json" \ - -d '{ + -d '[{ "address": "0x9e22e7f3ad7a800c6a4cd42f9f3bc3b36fe11ec3", "protocolType": "symbiotic", "isOperator": true, "isPending": false - }' + }]' ``` **Example Response**: diff --git a/docs/staking/overview.md b/docs/staking/overview.md index 3d7a38d2..66a0ee5b 100644 --- a/docs/staking/overview.md +++ b/docs/staking/overview.md @@ -32,7 +32,7 @@ If you're keen to learn more, we recommend checking out the following docs: 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. +- **Operators** earn rewards for submitting fast finality proofs to the network. Reward distribution occurs every $3$ days with $18,264$ \$MANTA in total, 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