Merge PR #78 to master

This commit is contained in:
yjkellyjoo
2026-03-16 23:02:50 +01:00
168 changed files with 11779 additions and 1964 deletions
+6
View File
@@ -20,3 +20,9 @@ yarn-debug.log*
yarn-error.log*
.idea
.vscode
# AI configuration files
.omc
.sisyphus
.claude
@@ -0,0 +1,72 @@
---
id: deploying-contracts-index
title: Deploy Your First Contract
description: Choose your preferred deployment tool to get a smart contract live on Status Network. Guides available for Hardhat, Foundry, Remix, and Scaffold-ETH 2.
keywords: [deploy smart contract, Status Network, Hardhat, Foundry, Remix, Scaffold-ETH 2, blockchain deployment, EVM]
slug: /build-for-karma/deploying-contracts
sidebar_position: 1
---
Status Network is fully EVM-compatible, so you can deploy contracts using any standard Ethereum toolchain. Pick the tool that fits your workflow and follow the step-by-step guide to get your first contract live on the testnet.
:::tip Before you start
Make sure you've [added Status Network to your wallet](/overview/general-info/add-status-network) and grabbed some [testnet ETH](/tools/core-infrastructure/testnet-faucets).
:::
## Choose a Deployment Tool
<div className="deploy-card-grid">
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-hardhat">
<div className="deploy-card-icon">🎩</div>
<div className="deploy-card-content">
<h3>Hardhat</h3>
<p>The industry-standard development environment for compiling, testing, and deploying Solidity contracts. Includes Hardhat Ignition and TypeScript support.</p>
<span className="deploy-card-tag">TypeScript · Testing · Ignition</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-foundry">
<div className="deploy-card-icon">⚒️</div>
<div className="deploy-card-content">
<h3>Foundry</h3>
<p>A blazing-fast, Rust-based toolkit for smart contract development. Write tests in Solidity and interact with contracts using Cast.</p>
<span className="deploy-card-tag">Solidity Tests · Cast · Fast Builds</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-remix">
<div className="deploy-card-icon">🎛️</div>
<div className="deploy-card-content">
<h3>Remix IDE</h3>
<p>A browser-based IDE with zero setup — perfect for quick prototyping, learning, and deploying simple contracts without any local tooling.</p>
<span className="deploy-card-tag">Browser-Based · No Setup · Beginner-Friendly</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-se2">
<div className="deploy-card-icon">🏗️</div>
<div className="deploy-card-content">
<h3>Scaffold-ETH 2</h3>
<p>A full-stack starter kit with a pre-configured Status Network extension. Includes a NextJS frontend, contract hot-reload, and both Hardhat and Foundry support.</p>
<span className="deploy-card-tag">Full-Stack · NextJS · Hot Reload</span>
</div>
</a>
</div>
## Not Sure Which to Pick?
| Tool | Best For | Setup Required |
|---|---|---|
| **Hardhat** | Production projects with complex testing and deployment pipelines | Node.js + npm |
| **Foundry** | Developers who prefer Solidity-native testing and fast compilation | Rust toolchain |
| **Remix** | Quick experiments, learning, and simple one-off deployments | None (browser) |
| **Scaffold-ETH 2** | Full-stack dApps that need a frontend from day one | Node.js + npm |
## After Deployment
Once your contract is live, here are your next steps:
- [Integrate gasless transactions](/build-for-karma/guides/gasless-integration) through Karma so your users never pay gas
- [Read reputation integration guide](/build-for-karma/guides/reputation-integration) to build reputation-aware features using Karma
@@ -15,7 +15,7 @@ Before you begin, ensure you have the following:
- **Foundry**: Install from the [official Foundry book](https://book.getfoundry.sh/getting-started/installation)
- **Ethereum Wallet**: A private key for Status Network testnet
- **Testnet ETH**: You'll need Status Network testnet ETH
- Get Status Network testnet ETH from our [Faucet](/tools/testnet-faucets)
- Get Status Network testnet ETH from our [Faucet](/tools/core-infrastructure/testnet-faucets)
- **Basic Knowledge**: Familiarity with Solidity and command line
## What You'll Accomplish
@@ -207,7 +207,7 @@ forge test
If you encounter any issues:
- Join our [Telegram Community](https://t.me/statusl2)
- View our [Network Details](/general-info/network-details)
- View our [Network Details](/overview/general-info/network-details)
## Additional Resources
@@ -15,7 +15,7 @@ Before you begin, ensure you have the following:
- **Node.js and npm**: Download and install from the [official Node.js website](https://nodejs.org/)
- **Ethereum Wallet**: MetaMask or another wallet with a private key for Status Network testnet
- **Testnet ETH**: You'll need Status Network testnet ETH
- Get Status Network testnet ETH from our [Faucet](/tools/testnet-faucets)
- Get Status Network testnet ETH from our [Faucet](/tools/core-infrastructure/testnet-faucets)
- **Basic Knowledge**: Familiarity with Solidity, Hardhat, and command line
## What You'll Accomplish
@@ -169,4 +169,4 @@ npx hardhat run scripts/interact.ts --network statusTestnet
If you encounter any issues:
- Join our [Telegram Community](https://t.me/statusl2)
- View our [Network Details](/general-info/network-details)
- View our [Network Details](/overview/general-info/network-details)
@@ -15,8 +15,8 @@ Before you begin, ensure you have:
- **Web Browser**: A modern web browser like Chrome or Firefox
- **MetaMask**: Install the [MetaMask](https://metamask.io) browser extension
- **Testnet ETH**: You'll need Status Network testnet ETH
- Get Status Network testnet ETH from our [Faucet](/tools/testnet-faucets)
- **Network Configuration**: Add Status Network testnet to MetaMask following our [Add Network guide](/general-info/add-status-network)
- Get Status Network testnet ETH from our [Faucet](/tools/core-infrastructure/testnet-faucets)
- **Network Configuration**: Add Status Network testnet to MetaMask following our [Add Network guide](/overview/general-info/add-status-network)
## Steps
@@ -97,7 +97,7 @@ Once deployed, you'll see your contract under "Deployed Contracts":
If you encounter any issues:
- Join our [Telegram Community](https://t.me/statusl2)
- View our [Network Details](/general-info/network-details)
- View our [Network Details](/overview/general-info/network-details)
## Additional Resources
@@ -14,7 +14,7 @@ The [Status Network Scaffold-ETH 2 extension](https://github.com/status-im/statu
- **Foundry** (optional): If you choose the Foundry workflow
- **Ethereum Wallet** (optional): An EVM wallet private key for test, but it's okay if you don't have one
> **Note**: Status Network supports gasless transactions, so testnet ETH is optional. If you still need testnet ETH, get it from our [Faucet](/tools/testnet-faucets).
> **Note**: Status Network supports gasless transactions, so testnet ETH is optional. If you still need testnet ETH, get it from our [Faucet](/tools/core-infrastructure/testnet-faucets).
## Quick Start
@@ -58,4 +58,4 @@ The [Status Network Scaffold-ETH 2 extension](https://github.com/status-im/statu
For detailed configuration options, troubleshooting, and advanced usage:
- Check the [extension README](https://github.com/status-im/status-network-scaffold-extension) for comprehensive documentation
- Join our [Telegram Community](https://t.me/statusl2) and ask for support
- View our [Network Details](/general-info/network-details)
- View our [Network Details](/overview/general-info/network-details)
@@ -0,0 +1,365 @@
---
title: Gasless Integration Guide
description: Practical integration guide for building gasless UX on Status Network.
keywords: [gasless, linea_estimateGas, Status Network, deny list, builder, zero gas, UX]
slug: /build-for-karma/guides/gasless-integration
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
Status Network provides gasless transactions at the protocol level. You do not need paymasters or relayers. As a builder, the core task is to estimate and present fees correctly per sender state.
:::important The key rule
Use `linea_estimateGas` RPC method as the source of truth for gas fee when preparing transaction UX.
:::
For other JSON-RPC method reference, see [JSON-RPC API](/tools/rpc/json-rpc).
## Karma-aware fee estimation
On Linea, [`linea_estimateGas`](https://docs.linea.build/api/reference/linea-estimategas) is already the recommended way to estimate gas.
It returns `gasLimit`, `baseFeePerGas`, and `priorityFeePerGas` in a **single call**, where the fee fields account for compressed transaction size, layer-1 verification costs, and the L1/L2 gas-price ratio - factors that `eth_` namespace methods do not capture.
Status Network extends `linea_estimateGas` further so that the fee fields also incorporate our **Karma** system; fees may be reduced to zero for eligible users, or increased for deny-listed users.
```mermaid
flowchart TD
A[User initiates transaction] --> B["Call <code>linea_estimateGas</code> with <code>from</code> parameter"]
B --> C{Fee outcome}
C -->|base+priority = 0| D[Show gasless UX]
C -->|Premium fees| F[Show premium fee UX]
D --> G[Send transaction]
F --> G
```
*Figure: Gas estimation flow using `linea_estimateGas`*
This is why builders should use `linea_estimateGas` when estimating transaction costs or pre-filling EIP-1559 fee fields for users on Status Network.
:::info for more
For a detailed explanation of Karma and its impact on gas fees and transaction privileges, see the [Karmic Tokenomics](../../overview/tokenomics/karmic-tokenomics) page.
For the technical details of how our gasless system is implemented and enforced, refer to the [Gasless Transactions](../../overview/general-info/gasless-transactions) documentation.
:::
## `linea_estimateGas` request/response shape
### Request
`linea_estimateGas` takes the **same transaction call object** as `eth_estimateGas`.
It returns `gasLimit` (using the same EVM execution logic as `eth_estimateGas`) together with fee fields that reflect both Linea's L2-specific pricing and Status Network's Karma rules - all in a single response.
:::important
**Always include `from`.** Without it, the node can't apply Karma/quota/deny-list logic.
:::
### Response
`linea_estimateGas` returns an object including:
- `gasLimit`: hex quantity - estimated gas units for EVM execution (same calculation as `eth_estimateGas`)
- `baseFeePerGas`: hex quantity - base fee for the next block, accounting for Karma rules on Status Network
- `priorityFeePerGas`: hex quantity - suggested priority fee, accounting for Karma rules on Status Network
These fee fields may differ significantly from the values returned by `eth_` namespace calls such as `eth_gasPrice`, `eth_maxPriorityFeePerGas`, or `eth_feeHistory`, which are not aware of Linea's L2-specific pricing or Status Network's Karma adjustments.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="estimate-gas-response-shape">
<TabItem value="linea" label="linea_estimateGas (single call)">
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"gasLimit": "0x5208",
"baseFeePerGas": "0x0",
"priorityFeePerGas": "0x0"
}
}
```
</TabItem>
<TabItem value="eth" label="Standard EVM (multiple calls)">
Standard EVM flows require multiple separate `eth_` calls to gather gas limit and fee data:
**eth_estimateGas**
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x5208"
}
```
**eth_maxPriorityFeePerGas**
```json
{
"jsonrpc": "2.0",
"id": 2,
"result": "0x59682f00"
}
```
**eth_getBlockByNumber**
```json
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"number": ...,
"baseFeePerGas": "0x3b9aca00",
...
}
}
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
## Migration guide: from multiple `eth_` calls to `linea_estimateGas`
This section shows how to migrate from the common "EIP-1559 via multiple `eth_` calls" flow to a single `linea_estimateGas` call, which provides more accurate L2-specific fee data and Karma-aware pricing on Status Network.
### Before: common EIP-1559 estimation flow on EVM chains using `eth_` namespaces
On many EVM chains, a typical EIP-1559 estimation flow looks like:
1. **Estimate gas limit** via `eth_estimateGas`
2. **Fetch `maxPriorityFeePerGas`** via `eth_maxPriorityFeePerGas` and/or `eth_feeHistory`
3. **Fetch `baseFeePerGas`** via `eth_getBlockByNumber`
4. Build an EIP-1559 transaction using:
- `gas`
- `maxPriorityFeePerGas`
- `maxFeePerGas`, often $2 \cdot \mathrm{baseFeePerGas} + \mathrm{maxPriorityFeePerGas}$
<!-- markdownlint-disable MD033 -->
<Tabs groupId="eip1559-estimation-before">
<TabItem value="curl" label="curl">
```bash
# 1) Gas limit (EVM execution)
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"eth_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_RPC_URL
# 2) Fetch suggested tip amount
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":2,"method":"eth_maxPriorityFeePerGas","params":[]}' \
https://YOUR_RPC_URL
# 3) Fetch base fee
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":3,"method":"eth_getBlockByNumber","params":["pending",false]}' \
https://YOUR_RPC_URL
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://YOUR_RPC_URL');
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: '0x0',
};
const gas = await provider.estimateGas(call);
const maxPriorityFeePerGas = await provider.send('eth_maxPriorityFeePerGas', []);
const pendingBlock = await provider.getBlock('pending');
const baseFeePerGas = pendingBlock?.baseFeePerGas ?? 0n;
const maxFeePerGas = 2n * baseFeePerGas + BigInt(maxPriorityFeePerGas);
console.log({
gas: `0x${gas.toString(16)}`,
maxPriorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
<TabItem value="viem" label="viem">
```js
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://YOUR_RPC_URL'),
});
const call = {
account: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: 0n,
};
const gas = await client.estimateGas(call);
const maxPriorityFeePerGas = await client.getMaxPriorityFeePerGas();
const pendingBlock = await client.getBlock({ blockTag: 'pending' });
const baseFeePerGas = pendingBlock.baseFeePerGas ?? 0n;
const maxFeePerGas = 2n * baseFeePerGas + maxPriorityFeePerGas;
console.log({
gas,
maxPriorityFeePerGas,
maxFeePerGas,
});
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### After: Status Network gas estimation flow using `linea_estimateGas`
On Status Network, you should source fee suggestions from `linea_estimateGas`, because the correct fee recommendation depends on Karma:
- accounts may be eligible for **gasless** transactions
- deny-listed accounts may need to pay a **premium gas fee**
<!-- markdownlint-disable MD033 -->
<Tabs groupId="linea-estimate-gas-request">
<TabItem value="curl" label="curl">
```bash
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"linea_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_STATUS_NETWORK_RPC_URL
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://YOUR_STATUS_NETWORK_RPC_URL');
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: '0x0',
};
const { gasLimit, baseFeePerGas, priorityFeePerGas } = await provider.send(
'linea_estimateGas',
[call],
);
const maxFeePerGas =
BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);
console.log({
gas: gasLimit,
maxPriorityFeePerGas: priorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
<TabItem value="viem" label="viem">
```js
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://YOUR_STATUS_NETWORK_RPC_URL'),
});
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: 0n,
};
const { gasLimit, baseFeePerGas, priorityFeePerGas } = await client.request({
method: 'linea_estimateGas',
params: [call],
});
const maxFeePerGas =
BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);
console.log({
gas: gasLimit,
maxPriorityFeePerGas: priorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
:::tip Tooling integration
Many Ethereum libraries call `eth_estimateGas` internally (for example, `provider.estimateGas(...)`). On Status Network, keep using those libraries for standard `eth_` methods, but **fetch estimates via `linea_estimateGas` explicitly for gas limit and fee fields** wherever you build or display transaction parameters for users.
:::
## Handling fee scenarios in UI
### 1) Gasless
When `baseFeePerGas` and `priorityFeePerGas` are both zero:
- Display a clear free-transaction state.
- Skip unnecessary fee warnings.
### 2) Premium fees
When sender is deny-listed (exceeded quota or RLN policy):
- Show the fee amount and explain that premium gas applies due to quota or spam policy.
- Make clear the sender can pay the fee or wait for their quota window to refresh.
- Keep the transaction possible; do not hard-block.
## Common pitfalls
| Pitfall | Fix |
|---|---|
| Using `eth_` methods for fee decisions (`eth_gasPrice`, `eth_maxPriorityFeePerGas`, `eth_feeHistory`) | Use `linea_estimateGas` |
| Omitting `from` when calling `linea_estimateGas` | Always pass the sender address to receive Karma-aware estimation |
| Hardcoding fee assumptions | Build fee UI from returned `baseFeePerGas` and `priorityFeePerGas` values |
| Assuming all users are gasless | Handle both states: gasless (zero fees) and deny-listed (premium fees) |
| Caching estimates across retries | Re-estimate near send time — sender Karma state can change |
## Next steps
- [JSON-RPC API](/tools/rpc/json-rpc)
- [Reputation Integration](/build-for-karma/guides/reputation-integration)
+20
View File
@@ -0,0 +1,20 @@
---
title: Using Karma
description: Entry point for integrating Karma-based gasless UX and reputation-aware features on Status Network.
keywords: [Karma, gasless, reputation, integration, Status Network]
slug: /build-for-karma/guides
sidebar_position: 3
---
Karma provides gasless transaction privileges and reputation across Status Network.
This section helps you integrate both gasless behavior and tier-aware product logic in your app.
## Start Here
**Handling transactions?**
- Start with [Gasless Integration](/build-for-karma/guides/gasless-integration) to use `linea_estimateGas` as your single source of truth for gasless vs premium-fee outcomes.
**Gating features by reputation?**
- Continue with [Reputation Integration](/build-for-karma/guides/reputation-integration) to read Karma balances and tiers onchain, gate contracts, and design tier-aware frontends.
@@ -0,0 +1,461 @@
---
title: Reputation Integration Guide
description: How to read Karma tiers, gate features by reputation, and build Karma-aware smart contracts and frontends on Status Network.
keywords: [Karma, integration, smart contract, soulbound token, reputation, tiers, gasless, Status Network, developer guide]
slug: /build-for-karma/guides/reputation-integration
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
Karma is Status Network's soulbound reputation token. Every address earns Karma through genuine network participation such as staking SNT, bridging assets, providing liquidity, using apps, or paying premium gas fees. Karma cannot be bought, sold, or transferred.
This guide covers how to read Karma data and build apps that respond to a user's reputation tier.
## Reading Karma On-Chain
Karma state is split across two contracts:
- **Karma** — the soulbound ERC-20 token. `balanceOf` returns the net balance after any slashing. Transfers and approvals always revert.
- **KarmaTiers** — maps balances to tiers. Call `getTierIdByKarmaBalance(balance)` then `getTierById(tierId)` to resolve a user's tier and its `txPerEpoch` quota.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-reading">
<TabItem value="solidity" label="Solidity">
```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
/// @notice Minimal interface for the Karma soulbound token.
interface IKarma {
/// @notice Net Karma balance of `account` after slashing.
function balanceOf(address account) external view returns (uint256);
/// @notice Total amount slashed from `account` across all distributors.
function slashedAmountOf(address account) external view returns (uint256);
}
/// @notice Minimal interface for the KarmaTiers registry.
interface IKarmaTiers {
struct Tier {
uint256 minKarma;
uint256 maxKarma;
string name;
uint32 txPerEpoch; // gasless transactions allowed per epoch
}
/// @notice Returns the highest tier ID the given karma balance qualifies for.
function getTierIdByKarmaBalance(uint256 karmaBalance) external view returns (uint8);
/// @notice Returns the full Tier struct for a given tier ID.
function getTierById(uint8 tierId) external view returns (Tier memory);
/// @notice Returns the total number of configured tiers.
function getTierCount() external view returns (uint256);
}
contract KarmaGated {
IKarma public karma;
IKarmaTiers public karmaTiers;
constructor(address _karmaContract, address _karmaTiersContract) {
karma = IKarma(_karmaContract);
karmaTiers = IKarmaTiers(_karmaTiersContract);
}
/// @notice Resolves the tier ID for `user` from their current Karma balance.
function tierIdOf(address user) public view returns (uint8) {
return karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));
}
modifier onlyTier(uint8 minTier) {
require(tierIdOf(msg.sender) >= minTier, "Karma tier too low");
_;
}
function premiumAction() external onlyTier(3) {
// Only users at tier 3 or above can call this
}
function getDiscount(address user) external view returns (uint256) {
uint8 tierId = tierIdOf(user);
// Higher tiers get bigger discounts
return uint256(tierId) * 5; // 0%, 5%, 10%, ...
}
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider(
'https://public.sepolia.rpc.status.network'
);
const KARMA_ABI = [
'function balanceOf(address account) view returns (uint256)',
'function slashedAmountOf(address account) view returns (uint256)',
];
const KARMA_TIERS_ABI = [
'function getTierIdByKarmaBalance(uint256 karmaBalance) view returns (uint8)',
'function getTierById(uint8 tierId) view returns (tuple(uint256 minKarma, uint256 maxKarma, string name, uint32 txPerEpoch))',
'function getTierCount() view returns (uint256)',
];
const karma = new ethers.Contract(KARMA_ADDRESS, KARMA_ABI, provider);
const karmaTiers = new ethers.Contract(KARMA_TIERS_ADDRESS, KARMA_TIERS_ABI, provider);
// Read a user's Karma balance and resolve their tier
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const tier = await karmaTiers.getTierById(tierId);
console.log(`Karma balance: ${ethers.formatEther(balance)} KARMA`);
console.log(`Tier: ${tier.name} (ID ${tierId})`);
console.log(`Tx quota per epoch: ${tier.txPerEpoch}`);
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://public.sepolia.rpc.status.network'),
});
const karmaAbi = [
{
name: 'balanceOf',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'account', type: 'address' }],
outputs: [{ name: '', type: 'uint256' }],
},
{
name: 'slashedAmountOf',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'account', type: 'address' }],
outputs: [{ name: '', type: 'uint256' }],
},
] as const;
const karmaTiersAbi = [
{
name: 'getTierIdByKarmaBalance',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'karmaBalance', type: 'uint256' }],
outputs: [{ name: '', type: 'uint8' }],
},
{
name: 'getTierById',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'tierId', type: 'uint8' }],
outputs: [{
name: 'tier',
type: 'tuple',
components: [
{ name: 'minKarma', type: 'uint256' },
{ name: 'maxKarma', type: 'uint256' },
{ name: 'name', type: 'string' },
{ name: 'txPerEpoch', type: 'uint32' },
],
}],
},
] as const;
// Two sequential reads: balance → tier ID → tier details
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const tier = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierById',
args: [tierId],
});
console.log(`Tier: ${tier.name} (ID ${tierId})`);
console.log(`Tx quota per epoch: ${tier.txPerEpoch}`);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
:::note Contract Addresses
Karma and KarmaTiers contract addresses for testnet are published on the [Contract Addresses](/overview/general-info/contract-addresses/testnet-contracts) page.
:::
## Possible Integration Patterns
### Feature Gating
Unlock features based on Karma tier.
The `onlyTier` modifier you can check from the [Reading Karma On-Chain](#reading-karma-on-chain) section can restrict access at the contract level.
Alternatively, you can use `tierId` in your code to gate features:
> **Catalog idea:** [Karma-Gated Content Feed](/build-for-karma/what-to-build) — a ready-to-scope app built entirely around this pattern.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-gating">
<TabItem value="solidity" label="Solidity">
```solidity
function accessPremiumContent() external onlyTier(3) {
// Only users at tier 3 or above can call this
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// Resolve tier from Karma balance, then gate UI features
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
if (tierId >= 3) {
showPremiumFeatures();
} else {
showUpgradePrompt(tierId);
}
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
if (tierId >= 3) {
showPremiumFeatures();
} else {
showUpgradePrompt(tierId);
}
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### Dynamic Pricing
Offer discounts or better rates to high-Karma users:
> **Catalog idea:** [Karma-Tiered NFT Marketplace](/build-for-karma/what-to-build) — a marketplace where fees and access windows scale automatically with a buyer's Karma tier.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-pricing">
<TabItem value="solidity" label="Solidity">
```solidity
function calculateFee(address user, uint256 baseAmount) public view returns (uint256) {
uint8 tierId = karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));
// Each tier gives 5% discount
uint256 discount = uint256(tierId) * 5;
return baseAmount * (100 - discount) / 100;
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// Compute the discounted fee on the client-side from the user's current tier
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const discount = BigInt(tierId) * 5n; // 5% per tier
const fee = baseAmount * (100n - discount) / 100n;
console.log(`Tier ${tierId}: ${discount}% discount → fee = ${fee}`);
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const discount = BigInt(tierId) * 5n; // 5% per tier
const fee = baseAmount * (100n - discount) / 100n;
console.log(`Tier ${tierId}: ${discount}% discount → fee = ${fee}`);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### Reputation Display
Show Karma tier as a trust index in your UI by reading the tier name directly from the `KarmaTiers` contract:
> **Catalog idea:** [Gasless Micro-Blogging Platform](/build-for-karma/what-to-build) — a social feed with Karma trust badges embedded in profiles and posts.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-display">
<TabItem value="ethers" label="ethers.js">
```js
// Fetch tier name on-chain — no hardcoded array needed
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const tier = await karmaTiers.getTierById(tierId);
function KarmaBadge({ tierName }) {
return <span className="karma-badge">{tierName}</span>;
}
// Usage
<KarmaBadge tierName={tier.name} />
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const tier = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierById',
args: [tierId],
});
function KarmaBadge({ tierName }: { tierName: string }) {
return <span className="karma-badge">{tierName}</span>;
}
// Usage
<KarmaBadge tierName={tier.name} />
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### Weighted Governance
Use Karma for vote weighting in your app's governance:
> **Catalog idea:** [DAO Proposal & Karma-Weighted Voting App](/build-for-karma/what-to-build) — polling and signal voting with optional Karma-weighted participation.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-governance">
<TabItem value="solidity" label="Solidity">
```solidity
function vote(uint256 proposalId, bool support) external {
uint256 weight = karma.balanceOf(msg.sender);
proposals[proposalId].votes += support ? int256(weight) : -int256(weight);
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// Read the user's Karma balance as their vote weight, then submit
const weight = await karma.balanceOf(userAddress);
console.log(`Voting with weight: ${ethers.formatEther(weight)} KARMA`);
// Call your governance contract
const tx = await governanceContract.vote(proposalId, support);
await tx.wait();
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
import { formatEther, parseAbi } from 'viem';
// Read vote weight from Karma balance
const weight = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
console.log(`Voting with weight: ${formatEther(weight)} KARMA`);
// Submit vote via your governance contract
const { request } = await client.simulateContract({
address: GOVERNANCE_ADDRESS,
abi: parseAbi(['function vote(uint256 proposalId, bool support) external']),
functionName: 'vote',
args: [proposalId, support],
account: userAddress,
});
await walletClient.writeContract(request);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
## Next Steps
- Refer to [Gasless Integration](/build-for-karma/guides/gasless-integration) to integrate Karma in making gasless transaction
- Check out [Karmic Tokenomics](/overview/tokenomics/karmic-tokenomics) to see a breakdown of how Karma is earned and used
- Go to [Gasless Transactions](/overview/general-info/gasless-transactions) to understand the technical details of the RLN-based gasless system
+21
View File
@@ -0,0 +1,21 @@
---
id: build-for-karma-index
title: Build for Karma
description: Everything builders need to ship on Status Network — guides for gasless and reputation integration, deployment tutorials, and app ideas.
keywords: [Status Network, builder guides, Karma, gasless integration, reputation, deploy contracts, app ideas, developer documentation]
slug: /build-for-karma
sidebar_position: 1
---
This section is your builder hub for Status Network. Whether you want to understand the benefits of building here, explore what to build, learn how to implement gasless transactions, or deploy your first smart contract — everything you need for Karma-focused building is here.
## Where to Start
- [**Why Status Network**](/build-for-karma/why-status-network): The case for building here — gasless economics, Karma, public funding, and how it compares to other L2s.
- [**What to Build**](/build-for-karma/what-to-build): Interactive idea catalog with filterable app ideas to help your creation.
- [**Using Karma**](/build-for-karma/guides): Technical guides for integrating gasless transactions and reputation-aware features into your app.
- [**Deploy Your First Contract**](/build-for-karma/deploying-contracts): Step-by-step contract deployment with Hardhat, Foundry, Remix, or Scaffold-ETH 2.
## Community
- Join the [Telegram Builder's Community](https://t.me/statusl2) to get help building on Status Network
+31
View File
@@ -0,0 +1,31 @@
---
title: What to Build on Status Network
description: A scan-first catalog of high-leverage app ideas for Status Network, organized by category, effort, and delivery profile.
keywords: [Status Network, app ideas, builder ideas, Karma apps, privacy apps, gasless apps, DeFi, social apps, games, MVP]
sidebar_position: 3
---
import IdeaCatalog from '@site/src/components/IdeaCatalog/IdeaCatalog';
Status Network combines gasless UX, Karma reputation, and privacy primitives.
This unlocks products that are hard to build well on any other chains.
Below are some example products we think are a great fit for Status Network, though of course youre not limited to these ideas.
Use the filters to find ideas aligned with your expertise and ambition. Click any card to see the full scope.
<IdeaCatalog />
## Start building now
- [Quick Start](/overview/introduction/quick-start)
- [How to use Karma for gaslessness and reputation](/build-for-karma/guides)
- [Deploying Contracts on Status Network](/build-for-karma/deploying-contracts)
- [Telegram Builder's Community](https://t.me/statusl2)
## Ecosystem & Funding
Builders can earn continuous funding from the public funding pool governed by Karma holders.
As your app gains traction, you gain Karma and stronger influence over future allocations.
Learn more → [Ecosystem & Funding](/overview/tokenomics/public-funding)
+138
View File
@@ -0,0 +1,138 @@
---
title: Why Build on Status Network
description: The case for building on Status Network — gasless transactions, Karma reputation, sustainable public funding, and how it compares to other L2s.
keywords: [Status Network, why build, L2 comparison, gasless, Karma, public funding, developer advantages, Linea zkEVM]
sidebar_position: 2
---
There are dozens of L2s to choose from. Here's why Status Network is worth your attention.
<div className="comparison-grid">
<a className="comparison-row-link" href="#sustainable-public-funding">
<div className="comparison-row">
<div className="comparison-label">Dev Funding</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>Continuous revenue pool that scales with your app's traction</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">Typical L2</div>
<p>One-time grants you re-apply for every few months</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#gasless-by-default">
<div className="comparison-row">
<div className="comparison-label">Gas for Users</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>Free with Karma — no paymaster, no relayer, no account abstraction setup</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">Typical L2</div>
<p>Users pay gas, or devs run paymaster + relayer infrastructure</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#built-in-reputation-with-karma">
<div className="comparison-row">
<div className="comparison-label">User Reputation</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>Network-wide reputation system through Karma — spam resistance, trust signals, feature gating</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">Typical L2</div>
<p>None — build your own or integrate third-party solutions</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#privacy-focused-civil-goods">
<div className="comparison-row">
<div className="comparison-label">Privacy</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>Native ZK-based tooling — Rate Limiting Nullifiers and more</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">Typical L2</div>
<p>Third-party integrations</p>
</div>
</div>
</div>
</a>
</div>
## Sustainable Public Funding
Status Network doesn't rely on one-time grants or foundation treasuries. Instead, it has a continuous public funding pool fed by:
- **Native yield** from bridged yield-bearing assets (initially ETH and stablecoins)
- **DEX fees** from the native decentralized exchange
- **Premium gas fees** from deny-listed users
- **Future native app fees** (lending, NFT, launchpad, etc.)
Read more → [Economic Model](/overview/tokenomics/economic-model)
Karma holders vote on how this public funding pool is distributed to apps and builders. The more your app contributes to the network by generating activity and transaction volume, the more Karma you and your users earn, and the more influence you have over future allocations.
**What this means for builders:**
- Not just a one-time grant you have to re-apply for every few months, but a recurring revenue stream
- Funding scales with your app's traction — more users, more Karma, more incentives for you
- Community-governed allocation, no foundation gatekeeping
Read more → [Public Funding](/overview/tokenomics/public-funding)
## Gasless by Default
On most chains, "gasless" means setting up a paymaster, running a relayer, or integrating an account abstraction SDK. On Status Network, gasless is the default behavior.
Every address with a positive Karma balance gets a free transaction quota. No paymasters. No relayers. No special wallet configuration. Your app just works without gas fees for eligible users.
**What this means for builders:**
- No UX friction from gas. Your onboarding funnel doesn't lose users at the "bridge some ETH for gas" step
- No need to integrate ERC-4337, meta-transactions, or gas relay patterns
- No infrastructure cost for sponsoring gas on behalf of users
The gasless system is enforced at the sequencer level via [Rate Limiting Nullifiers (RLN)](/overview/general-info/gasless-transactions/#rln), a zero-knowledge spam prevention mechanism.
## Built-in Reputation with Karma
Karma is a soulbound (non-transferable) token that every user earns through genuine network participation such as staking, bridging, providing liquidity, using apps, or paying premium gas. It cannot be bought or transferred.
**What this means for builders:**
- **Trust signal**: High-Karma users are verified active participants, not airdrop farmers or sybils
- **Feature gating**: Builders could gate their features such as premium features, priority access, or better rates based on user Karma tiers
- **Spam resistance**: The network itself is gating spams with RLN mechanism and Karma tiers directly control gasless transaction quotas, meaning high-Karma users are inherently less likely to spam
- **No cold start problem**: Your app benefits from reputation built network-wide in the ecosystem
Read more → [Karmic Tokenomics](/overview/tokenomics/karmic-tokenomics)
## Privacy Focused Civil Goods
Status Network is built with technology from the [Institute of Free Technology (IFT)](https://free.technology). Most notably, the gasless transaction system uses [RLN (Rate Limiting Nullifiers)](https://vac.dev/rln), a zero-knowledge spam prevention mechanism developed by [Vac](https://vac.dev), an IFT research division.
We align with IFT's vision in technology to build public goods to safegauard civil liberties in the digital age. Status Network will add on privacy focused modules leveraging our gaslessness.
<!-- todo: Read more → [Status Network and Privacy](/overview/general-info/privacy) -->
## Full EVM Equivalence
Status Network is built on the [Linea zkEVM](https://linea.build) stack. This means builders can:
- Deploy existing Solidity contracts without modification
- Use standard Ethereum tooling like Hardhat, Foundry, ethers.js, viem, etc.
- use standard JSON-RPC methods (except for some methods related to gas fee. Refer to [JSON-RPC API](/tools/rpc/json-rpc) for more information.)
- Zero-knowledge proof-based security inherited from Linea's rollup architecture
No custom VM. No non-standard opcodes. No rewriting your contracts or backends.
@@ -1,11 +1,9 @@
---
title: Pre-Deposit Campaign Contracts
title: Pre-Deposit Vault Contracts
description: List of Status Network pre-deposit campaign vault addresses.
keywords: [Status Network, Pre-deposit, Campaign, Vaults]
---
# Pre-Deposit Vault Contracts
In collaboration with [Aragon](https://www.aragon.org/), we're running our pre-deposit campaign for Status Network users.
This page lists all the important contract addresses of the campaign.
@@ -5,14 +5,13 @@ description: Learn how Status Network implements gasless transactions using RLN
keywords: [Status Network, Gasless Transactions, Linea, RLN, Rate Limiting Nullifier, Karma, Zero-Knowledge Proofs, ZKP, Soulbound Tokens, Blockchain, Layer 2, L2, Spam Prevention]
---
# Gasless Transactions in Status Network
Status Network aims to introduce gasless transactions at scale. The key component of this gasless approach is Vac's [Rate Limiting Nullifier](https://vac.dev/rln), which permits transaction rate limitation without the need for traditional gas fees. The document describes the architecture and integration elements needed to safely enable gasless transactions.
The implementation code for these gasless transactions is available in the [Status Network monorepo](https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components).
The implementation code for gasless transactions is available in the [Status Network monorepo](https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components).
### RLN
For more information on operational level implementation of our gaslessness, refer to [Karma integration guide](/build-for-karma/guides)
## RLN
[RLN](https://vac.dev/rln) is a zero-knowledge system designed to prevent spam without compromising user privacy unless a violation occurs. It replaces traditional gas fees with cryptographic rate limits enforced via ZKPs and Shamir's Secret Sharing.
@@ -35,20 +34,28 @@ graph TD
B -->|Soulbound Token| C{Tier Assignment}
subgraph "Tier Limits"
D[Basic]
E[Active]
F[Regular]
G[Power User]
H[High-Throughput]
I[S-Tier]
T1[Entry]
T2[Newbie]
T3[Basic]
T4[Active]
T5[Regular]
T6[Power User]
T7[Pro User]
T8[High-Throughput]
T9[S-Tier]
T10[Legendary]
end
C --> D
C --> E
C --> F
C --> G
C --> H
C --> I
C --> T1
C --> T2
C --> T3
C --> T4
C --> T5
C --> T6
C --> T7
C --> T8
C --> T9
C --> T10
%% RLN Flow
A -->|Submits Gasless Tx| J[RPC Node]
@@ -97,7 +104,7 @@ graph TD
class A wallet
class B,L karma
class C tier
class D,E,F,G,H,I tierNode
class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode
class J,K,K1,K2,K3,M,N,O rln
class P,Q,R,S,T,U,V,W sequencer
class X,Y,Z,AA gas
@@ -134,10 +141,16 @@ The Deny List temporarily restricts users exceeding quotas or engaging in spam:
- Users can bypass restrictions by paying premium gas fees
- Paying premium fees removes users from the list and earns additional Karma
### `linea_estimateGas` RPC Modification
## `linea_estimateGas` RPC Modification
The linea_estimateGas method is customised to account for users on the Deny List:
Status Network extends the base Linea `linea_estimateGas` with Karma-aware behavior so the returned **fee fields** can depend on the sender address `from`'s Karma balance.
The `gasLimit` calculation is unchanged from the base Linea implementation (which itself uses the standard `eth_estimateGas` logic internally).
- Checks user's Deny List status
- Adds premium gas multipliers if needed
- Provides transparency and accurate gas estimations to the users
Concretely, Status Network's `linea_estimateGas`:
- **Applies deny-list premium**: if the sender is on the deny list, the node computes the normal fee estimate and then applies a premium multiplier to the **fee fields**.
- **Returns gasless estimates for eligible users**: if the sender has available Karma quota, the method returns zero `baseFeePerGas` and `priorityFeePerGas`.
The above logic lives in our modified `LineaEstimateGas` implementation open-sourced around [this section in the Status Network monorepo](https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218).
For Karma-aware fee estimation behavior and `linea_estimateGas` specifics, see [JSON-RPC API](/tools/rpc/json-rpc).
@@ -33,4 +33,4 @@ These are the official network details for the Status Network testnet. You can u
- Connect dApps to the network
- Verify smart contracts
For instructions on adding the network to your wallet, see our [Add Status Network guide](./add-status-network.md).
For instructions on adding the network to your wallet, see our [Add Status Network guide](/overview/general-info/add-status-network).
+1
View File
@@ -0,0 +1 @@
# How Status Network connects to Privacy
+7 -7
View File
@@ -3,7 +3,7 @@ id: index
title: Status Network · Gasless L2
description: Status Network is a gasless Layer 2 blockchain network enabling seamless, fee-free decentralized applications. Start building with easy wallet setup, faucets, and deployment tools.
keywords: [Status Network, Layer 2, gasless blockchain, ethereum scaling, L2, validium, web3 development, dapp development, blockchain development]
slug: /
slug: /overview
sidebar_position: 1
---
@@ -41,16 +41,16 @@ Status Network is natively integrated with Status Wallet, Keycard, Waku and Code
Wants to skip the explanation part and go straight to building? Here's how to get started:
1. [Add Status Network to Your Wallet](/general-info/add-status-network)
2. [Get Testnet ETH](/tools/testnet-faucets)
3. [Bridge Assets](/general-info/bridge/bridging-testnet)
4. [Deploy Your First Contract](/tutorials/deploying-contracts/using-remix)
1. [Add Status Network to Your Wallet](/overview/general-info/add-status-network)
2. [Get Testnet ETH](/tools/core-infrastructure/testnet-faucets)
3. [Bridge Assets](/overview/general-info/bridge/bridging-testnet)
4. [Deploy Your First Contract](/build-for-karma/deploying-contracts/using-remix)
## Support & Resources
Connect with our community and access the resources you need:
- Join our [Telegram Builder's Community](https://t.me/statusl2)
- View [Network Details](/general-info/network-details)
- Browse [Contract Addresses](/general-info/contract-addresses/testnet-contracts)
- View [Network Details](/overview/general-info/network-details)
- Browse [Contract Addresses](/overview/general-info/contract-addresses/testnet-contracts)
Ready to build something amazing? Start your journey on the free network today!
@@ -16,7 +16,7 @@ Before getting started:
1. **Add Status Network Testnet to MetaMask**:
Follow the [Add Status Network guide](/general-info/add-status-network) for step-by-step instructions on how to add the Status Network testnet to MetaMask.
Follow the [Add Status Network guide](/overview/general-info/add-status-network) for step-by-step instructions on how to add the Status Network testnet to MetaMask.
2. **Get Test ETH**:
@@ -108,8 +108,8 @@ contract SimpleStorage {
- **Get Support**:
- Join our [Telegram Community](https://t.me/statusl2) for assistance
- Check our [Network Details](/general-info/network-details) for more information
- Learn about [bridging tokens](/general-info/bridge/bridging-testnet) to Status Network
- Check our [Network Details](/overview/general-info/network-details) for more information
- Learn about [bridging tokens](/overview/general-info/bridge/bridging-testnet) to Status Network
## Summary
@@ -120,5 +120,5 @@ You've successfully:
- Interacted with your deployed contract by storing and retrieving a number
For more advanced development, check out our guides for deploying with:
- [Hardhat](/tutorials/deploying-contracts/using-hardhat)
- [Foundry](/tutorials/deploying-contracts/using-foundry)
- [Hardhat](/build-for-karma/deploying-contracts/using-hardhat)
- [Foundry](/build-for-karma/deploying-contracts/using-foundry)
@@ -43,4 +43,4 @@ This page contains all the official links for the Status Network ecosystem.
| Telegram Community | [t.me/statusl2](https://t.me/statusl2) |
| X/twitter | [x.com/statusL2](https://x.com/statusL2) |
For detailed information about adding the network to your wallet, see our [Add Network guide](/general-info/add-status-network).
For detailed information about adding the network to your wallet, see our [Add Network guide](/overview/general-info/add-status-network).
@@ -4,10 +4,31 @@ description: Explore Status Network's Karma system, a non-transferable governanc
keywords: [Karma token, Karmic tokenomics, Status Network governance, non-transferable token, governance power, staking rewards, contribution rewards]
---
# Karmic Tokenomics
In some Eastern traditions, Karma represents the principle that one's past actions shape their future state. Similarly, on Status Network, every positive action and contribution accumulates Karma, granting greater influence over the network's funding and incentives. Karma ($KARMA) is a non-transferable governance token that rewards staking, bridging, providing liquidity, and building. The more a user or an app contributes to the L2 in liquidity or activity, the more voting power they earn over funding allocations, liquidity incentives, and network roadmap and parameters.
## Karma Tiers
Karma tiers determine the gasless transaction quota for each address. Higher tiers get more free transactions per epoch.
### Current Tier Model (Testnet)
| Tier | Daily Quota | Equivalent Rate | Karma Range |
|---|---|---|---|
| Entry | 1 tx/day | 1 tx every 24 hours | 1-2 |
| Newbie | 5 tx/day | 1 tx every ~5 hours | 2-49 |
| Basic | 15 tx/day | 1 tx every 90 minutes | 50-499 |
| Active | 96 tx/day | 1 tx every 15 minutes | 500-4999 |
| Regular | 480 tx/day | 1 tx every 3 minutes | 5000-19999 |
| Power User | 960 tx/day | 1 tx every 90 seconds | 20000-99999 |
| Pro User | 10080 tx/day | 1 tx every 9 seconds | 100000-499999 |
| High-Throughput | 108000 tx/day | 1 TPS | 500000-4999999 |
| S-Tier | 240000 tx/day | 5 TPS | 5000000-9999999 |
| Legendary | 480000 tx/day | 10 TPS | 10000000 and more |
:::info Testnet-only model
This tier model is currently used for testnet alignment. The exact quota numbers per tier will be governed by Karma holders in the future and may change.
:::
## How Karma is Earned
Karma is minted through six primary mechanisms and cannot be acquired, ensuring that no entity—including the Status team—has any advantage in getting access to it. Everyone earns Karma under the same rules, based solely on their contributions to the network, ensuring it remains a pure representation of meaningful engagement within the network:
@@ -40,7 +61,6 @@ The initialization parameters of Karma minting allocations will be announced soo
- **Liquid Grants for Votes**: In the future, apps, protocols, and liquidity providers will be able to offer liquid grants to Karma holders as voting incentives.
## Flywheel Effect
1. Users bridge yield-bearing assets, earning Karma and increasing funding for apps and liquidity providers.
@@ -51,4 +71,4 @@ The initialization parameters of Karma minting allocations will be announced soo
4. Higher native yield and fees attract more TVL as users bridge additional yield-bearing assets.
As TVL and adoption grow, so do funding opportunities, reinforcing network sustainability.
As TVL and adoption grow, so do funding opportunities, reinforcing network sustainability.
@@ -34,7 +34,7 @@ Deposited ETH is staked via [Lido](https://lido.fi/) to earn staking yield. A po
### Deployed contracts
See [Pre-Deposit Vault Contracts](../general-info/contract-addresses/pre-deposit) for a full list of addresses and networks.
See [Pre-Deposit Vault Contracts](/overview/general-info/contract-addresses/pre-deposit) for a full list of addresses and networks.
## Generic Protocol Vault (GUSD)
@@ -78,7 +78,7 @@ For a full overview of the Generic Protocol structure (GUSD tokenomics, bridging
Pre-depositors earn:
- **Karma**: non-transferable governance token; grants gasless throughput and voting power (details in [Karmic Tokenomics](./karmic-tokenomics)).
- **Karma**: non-transferable governance token; grants gasless throughput and voting power (details in [Karmic Tokenomics](/overview/tokenomics/karmic-tokenomics)).
- **Liquid incentives**: 15M SNT and 20M LINEA tokens distributed across vaults.
- **Generic protocol points** for stablecoin depositors: Generic Protocol points to be used when Generic Protocol launches on Status Network Mainnet.
- **Native app points**: to be confirmed as natives apps unveil their tokenomics.
@@ -114,8 +114,8 @@ This documentation is for informational purposes and does not constitute financi
## Further reading
- [Pre-Deposit Vault Contracts](../general-info/contract-addresses/pre-deposit) — deployed addresses information
- [Karmic Tokenomics](./karmic-tokenomics) — how Karma is earned and used
- [Economic Model](./economic-model) — Status Network's sustainable revenue model
- [Pre-Deposit Vault Contracts](/overview/general-info/contract-addresses/pre-deposit) — deployed addresses information
- [Karmic Tokenomics](/overview/tokenomics/karmic-tokenomics) — how Karma is earned and used
- [Economic Model](/overview/tokenomics/economic-model) — Status Network's sustainable revenue model
- [Aragon Documentation](https://docs.aragon.org/)
- [Generic Protocol Documentation](https://docs.generic.money/)
-41
View File
@@ -1,41 +0,0 @@
---
title: Status Network Block Explorer
description: Learn how to use the Status Network block explorer to track transactions, verify smart contracts, and monitor network activity. Complete guide to explorer features and contract verification.
keywords: [Status Network explorer, blockchain explorer, smart contract verification, transaction tracking, block explorer, network monitoring]
---
# Status Network Testnet Explorer
The Status Network block explorer is available at [sepoliascan.status.network](https://sepoliascan.status.network).
### Features
- View transaction details and status
- Track token transfers and balances
- Verify smart contract source code
- Monitor gas prices and network activity
- View and interact with verified smart contracts
- Track token holdings for any address
## Sepolia Explorer (Layer 1)
For tracking transactions on Sepolia (Layer 1), use [Sepolia Etherscan](https://sepolia.etherscan.io).
This is particularly useful for:
- Monitoring bridge transactions from L1 to L2
- Tracking token deposits and withdrawals
- Verifying L1 contract interactions
## Contract Verification
To verify your smart contract on Status Network Explorer:
1. Navigate to [Contract Verification](https://sepoliascan.status.network/contract-verification)
2. Enter your contract address
3. Upload your source code and provide compilation details
4. Submit for verification
Once verified, your contract's source code will be publicly visible and users can interact with it directly through the explorer.
## API Access
The Status Network Explorer provides API endpoints for developers. Documentation for the API will be available soon.
@@ -0,0 +1,24 @@
---
title: Block Explorers
description: Status Network block explorer for viewing transactions, verifying contracts, and monitoring network activity.
keywords: [block explorer, transaction tracking, smart contract verification]
slug: /tools/core-infrastructure/block-explorers
---
## Status Network Mainnet
*Coming soon.*
## Status Network Testnet (Sepolia)
| Explorer | URL | Features |
|----------|-----|----------|
| Sepoliascan | [sepoliascan.status.network](https://sepoliascan.status.network) | Search transactions, verify and interact with smart contracts, track balances |
For contract verification, visit the [Contract Verification](https://sepoliascan.status.network/contract-verification) page on Sepoliascan.
L1 activity on Sepolia can be tracked via [Sepolia Etherscan](https://sepolia.etherscan.io).
## Status Network Testnet (Hoodi)
*Coming soon.*
@@ -1,19 +1,11 @@
---
title: Status Network Bridge
title: Status Network Testnet Bridge
description: Complete guide to using the Status Network bridge for transferring tokens between Sepolia and Status Network testnet. Learn about supported tokens, bridging process, and monitoring transactions.
keywords: [Status Network bridge, token bridge, cross-chain transfer, L1 L2 bridge, token bridging, Sepolia bridge]
slug: /tools/core-infrastructure/bridge
---
# Status Network Testnet Bridge
The Status Network Testnet Bridge allows users to transfer tokens between Sepolia (Layer 1) and Status Network testnet (Layer 2). The bridge interface is available at [bridge.status.network](https://bridge.status.network).
## Overview
The bridge serves as a crucial infrastructure component that enables:
- Token transfers from Sepolia to Status Network testnet
- Token withdrawals from Status Network testnet to Sepolia
- Message passing between L1 and L2
The Status Network Testnet Bridge allows users to transfer tokens and pass messages between Sepolia (Layer 1) and Status Network testnet (Layer 2). The bridge interface is available at [bridge.status.network](https://bridge.status.network).
## Bridge Contracts
@@ -36,7 +28,7 @@ For the most up-to-date list of supported tokens and their contract addresses, p
## Using the Bridge
For detailed instructions on how to use the bridge, including step-by-step guides and important security considerations, please refer to our [Bridging Guide](../general-info/bridge/bridging-testnet.md).
For detailed instructions on how to use the bridge, including step-by-step guides and important security considerations, please refer to our [Bridging Guide](/overview/general-info/bridge/bridging-testnet).
## Monitoring Bridge Transactions
@@ -47,5 +39,5 @@ You can monitor your bridge transactions using:
## Support
If you encounter any issues while using the bridge:
- Check our [Bridging Guide](../general-info/bridge/bridging-testnet.md) for common solutions
- Check our [Bridging Guide](/overview/general-info/bridge/bridging-testnet) for common solutions
- Join our [Telegram Community](https://t.me/statusl2) for assistance
@@ -2,12 +2,11 @@
title: RPC Endpoints
description: Official RPC endpoints for Status Network, including configuration guides for MetaMask and Web3 libraries. Learn about available methods, rate limits, and best practices.
keywords: [Status Network RPC, JSON-RPC, blockchain API, web3 configuration, MetaMask setup, blockchain development]
slug: /tools/core-infrastructure/rpc-endpoints
---
import AddToMetaMask from '@site/src/components/AddToMetaMask';
# RPC Endpoints
The Status Network provides public RPC (Remote Procedure Call) endpoints that allow you to interact with the network.
## Public RPC URL
@@ -19,7 +18,7 @@ https://public.sepolia.rpc.status.network
## Using the RPC
### Adding to MetaMask
For instructions on adding Status Network to your wallet using this RPC, see our [Add Network guide](/general-info/add-status-network).
For instructions on adding Status Network to your wallet using this RPC, see our [Add Network guide](/overview/general-info/add-status-network).
<AddToMetaMask />
<div style={{height: '2rem'}} />
@@ -60,4 +59,4 @@ For higher limits, get in touch with us on our [Telegram Builder's Community](ht
If you experience issues with the RPC endpoint:
- Join our [Telegram Community](https://t.me/statusl2) for support
- Consider implementing a fallback RPC strategy in your application
- Consider implementing a fallback RPC strategy in your application
@@ -2,6 +2,7 @@
title: Testnet Faucets
description: Get testnet ETH or STT for Status Network development. Complete guide to obtaining test tokens through Status Network faucets and Sepolia faucets for bridging.
keywords: [Status Network faucet, testnet ETH, test tokens, STT, Sepolia faucet, blockchain testing, development tokens]
slug: /tools/core-infrastructure/testnet-faucets
---
To get started on Status Network testnet, you may need some testnet ETH or test assets.
+41
View File
@@ -0,0 +1,41 @@
---
id: tools-index
title: Tools & Infrastructure
description: Developer tools, infrastructure services, and integrations available on Status Network — RPC endpoints, bridges, faucets, explorers, and partner integrations.
keywords: [Status Network, developer tools, RPC, bridge, faucet, block explorer, infrastructure]
slug: /tools
sidebar_position: 1
---
A complete reference of developer tools, infrastructure services, and integrations available on Status Network.
## Core Infrastructure
Essential services for building and testing on Status Network:
| Tool | Description |
|---|---|
| [**RPC Endpoints**](/tools/core-infrastructure/rpc-endpoints) | Public JSON-RPC access and RPC documentation |
| [**Bridge**](/tools/core-infrastructure/bridge) | Transfer assets between Ethereum Sepolia and Status Network |
| [**Testnet Faucets**](/tools/core-infrastructure/testnet-faucets) | Get testnet assets for development |
| [**Block Explorers**](/tools/core-infrastructure/block-explorers) | Browse transactions, contracts, and network activity |
## RPC
For RPC documentation including public endpoints, JSON-RPC API reference, and self-hosted node setup, start with:
- [RPC Endpoints](/tools/core-infrastructure/rpc-endpoints) — public endpoint URL, setup examples, rate limits, and supported methods overview
- [JSON-RPC API](/tools/rpc/json-rpc) — method reference and Status Network-specific RPC behavior
- [Running an RPC Node](/tools/rpc/running-an-rpc) — self-hosted node setup and operations guidance
## Infrastructure Partners
Status Network is onboarding infrastructure partners across indexing, oracles, data providers, wallets, security, and more. See the full list of categories and how to use them on the [Infrastructure Partners](/tools/infrastructure) page.
Want to become a partner? [Apply here](https://statusnetwork.typeform.com/partner).
## Quick Links
- [Network Details](/overview/general-info/network-details) — Chain ID, RPC URL, and full network configuration
- [Add Status Network to your wallet](/overview/general-info/add-status-network)
- [Bridging Guide](/overview/general-info/bridge/bridging-testnet) — Step-by-step bridge instructions
+30
View File
@@ -0,0 +1,30 @@
---
title: Infrastructure Partners
description: Infrastructure partners and third-party integrations available on Status Network — RPC providers, oracles, indexers, account abstraction, dev tooling, and more.
keywords: [Status Network, infrastructure, partners, oracles, indexing, RPC, account abstraction, dev tooling, cross-chain, onramp]
sidebar_position: 6
---
:::note Coming Soon
Status Network is actively onboarding infrastructure partners across the categories below. This page will be updated as integrations go live.
:::
## Partner Categories
| Category | Description |
|---|---|
| **RPC Providers** | Dedicated RPC infrastructure for reliable, low-latency node access |
| **Oracles & VRF** | Price feeds, RWA data, VRF for on-chain randomness, DEX data feeds |
| **Safe & Multisig** | Multi-signature wallets for treasury management and governance |
| **Indexers** | Decentralized and centralized indexing for smart contract events and on-chain data |
| **Account Abstraction** | Smart accounts, key management, and seamless user onboarding |
| **Developer Tooling** | SDKs, deployment tools and social login for Status Network |
| **Cross-Chain** | Cross-chain swap and bridging solutions |
| **Onramp Aggregators** | Fiat-to-crypto onramp and offramp solutions |
## Become a Partner
If you provide infrastructure services and want to integrate with Status Network:
- [Apply to become a partner](https://statusnetwork.typeform.com/partner)
- [Join the builder community on Telegram](https://t.me/statusl2)
+57
View File
@@ -0,0 +1,57 @@
---
title: JSON-RPC API
description: Status Network JSON-RPC API reference for builders.
keywords:
[
Status Network,
JSON-RPC,
Linea,
EIP-1559,
eth_estimateGas,
linea_estimateGas,
Karma,
gasless,
]
---
Status Network is based on Linea zkEVM, meaning **most JSON-RPC methods behave exactly like a standard EVM node**.
For the canonical list of supported methods and their standard semantics, refer to the following official documentations:
- **[Ethereum JSON-RPC API Reference](https://ethereum.github.io/execution-apis/)** — standard Ethereum RPC methods
- **[Linea JSON-RPC API Reference](https://docs.linea.build/api/reference)** — Linea-specific methods, including `linea_estimateGas`
## Status Network extensions
Status Network extends the standard Linea JSON-RPC with Karma-aware fee estimation:
### `linea_estimateGas`
On Linea, [`linea_estimateGas`](https://docs.linea.build/api/reference/linea-estimategas) is the recommended way to estimate gas, returning `gasLimit`, `baseFeePerGas`, and `priorityFeePerGas` in a single call.
Status Network extends `linea_estimateGas` with Karma-aware behavior:
- **Gasless users**: Returns zero `baseFeePerGas` and `priorityFeePerGas` for eligible users with available Karma quota
- **Deny-listed users**: Applies a premium multiplier to fee fields for users on the deny list
### Status Network RPC differences
On base Linea, `linea_estimateGas` is already the recommended method because it returns fee fields that account for L1 verification costs and data compression - something `eth_estimateGas` and other `eth_` namespace calls do not provide.
Status Network's fork extends `linea_estimateGas` further to be Karma-aware; all other JSON-RPC methods retain their standard semantics.
That means using the traditional fee flow with `eth_` methods (for example `eth_gasPrice`, `eth_maxPriorityFeePerGas`, or `eth_feeHistory`) can lead to **inaccurate** fee suggestions: they miss both Linea's L2-specific pricing and Status Network's Karma adjustments.
Use `linea_estimateGas` as the single source of truth for `gasLimit`, `baseFeePerGas`, and `priorityFeePerGas` on Status Network.
See [Linea's gas-fee guide](https://docs.linea.build/network/how-to/gas-fees) and [Linea's `linea_estimateGas` reference](https://docs.linea.build/api/reference/linea-estimategas) for the base Linea behavior.
:::info
For detailed integration guidance including code examples, migration steps, and common pitfalls, see the [Using Karma](/build-for-karma/guides) guide.
:::
### Additional resources
- [Linea's gas-fee guide](https://docs.linea.build/network/how-to/gas-fees)
- [Linea's `linea_estimateGas` reference](https://docs.linea.build/api/reference/linea-estimategas)
- [Karmic Tokenomics](/overview/tokenomics/karmic-tokenomics) — how Karma impacts gas fees
- [Gasless Transactions](/overview/general-info/gasless-transactions) — technical details of the RLN-based gasless system
@@ -240,7 +240,7 @@ To optimize your RPC node performance:
If you encounter any issues:
- Check the [official README](https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md) for the latest updates
- Review our [Network Details](/general-info/network-details) and docs in general
- Review our [Network Details](/overview/general-info/network-details) and docs in general
- Join our [Telegram Community](https://t.me/statusl2) for support
## Additional Resources
+106 -2
View File
@@ -1,5 +1,7 @@
import type * as Preset from '@docusaurus/preset-classic';
import type { Config } from '@docusaurus/types';
import remarkMath from 'remark-math';
import rehypeKatex from 'rehype-katex';
const config: Config = {
title: 'Status Network Documentation',
@@ -42,9 +44,10 @@ const config: Config = {
editUrl: 'https://github.com/status-im/docs.status.network/tree/develop',
routeBasePath: '/',
showLastUpdateTime: true,
remarkPlugins: [remarkMath],
rehypePlugins: [rehypeKatex],
},
blog: false,
pages: false,
theme: {
customCss: './src/css/custom.css',
},
@@ -67,6 +70,21 @@ const config: Config = {
src: 'img/sn_logo.svg',
},
items: [
{
label: 'Overview',
to: '/overview',
activeBasePath: 'overview',
},
{
label: 'Build for Karma',
to: '/build-for-karma',
activeBasePath: 'build-for-karma',
},
{
label: 'Tools',
to: '/tools',
activeBasePath: 'tools',
},
{
type: 'localeDropdown',
position: 'right',
@@ -190,7 +208,93 @@ const config: Config = {
scriptSrc: 'https://umami.bi.status.im/script.js',
dataDomains: 'docs.status.network',
},
]
],
[
'@docusaurus/plugin-client-redirects',
{
redirects: [
// Old tutorials paths to build-for-karma
{
from: '/tutorials/deploying-contracts/using-se2',
to: '/build-for-karma/deploying-contracts/using-se2',
},
{
from: '/tutorials/deploying-contracts/using-remix',
to: '/build-for-karma/deploying-contracts/using-remix',
},
{
from: '/tutorials/deploying-contracts/using-hardhat',
to: '/build-for-karma/deploying-contracts/using-hardhat',
},
{
from: '/tutorials/deploying-contracts/using-foundry',
to: '/build-for-karma/deploying-contracts/using-foundry',
},
// Old tutorials paths to tools
{
from: '/tutorials/running-an-rpc',
to: '/tools/rpc/running-an-rpc',
},
// Old root-level paths to overview
{
from: '/introduction/quick-start',
to: '/overview/introduction/quick-start',
},
{
from: '/general-info/add-status-network',
to: '/overview/general-info/add-status-network',
},
{
from: '/general-info/network-details',
to: '/overview/general-info/network-details',
},
{
from: '/general-info/gasless-transactions',
to: '/overview/general-info/gasless-transactions',
},
{
from: '/general-info/bridge/bridging-testnet',
to: '/overview/general-info/bridge/bridging-testnet',
},
{
from: '/general-info/contract-addresses/tokens',
to: '/overview/general-info/contract-addresses/tokens',
},
{
from: '/general-info/contract-addresses/testnet-contracts',
to: '/overview/general-info/contract-addresses/testnet-contracts',
},
{
from: '/general-info/contract-addresses/pre-deposit',
to: '/overview/general-info/contract-addresses/pre-deposit',
},
{
from: '/tokenomics/economic-model',
to: '/overview/tokenomics/economic-model',
},
{
from: '/tokenomics/public-funding',
to: '/overview/tokenomics/public-funding',
},
{
from: '/tokenomics/karmic-tokenomics',
to: '/overview/tokenomics/karmic-tokenomics',
},
{
from: '/tokenomics/snt-staking',
to: '/overview/tokenomics/snt-staking',
},
{
from: '/tokenomics/pre-deposits',
to: '/overview/tokenomics/pre-deposits',
},
{
from: '/other/official-links',
to: '/overview/other/official-links',
},
],
},
],
]
} satisfies Config;
+580
View File
@@ -436,5 +436,585 @@
"theme.tags.tagsPageTitle": {
"message": "タグ",
"description": "The title of the tag list page"
},
"homepage.layout.title": {
"message": "Status Network ドキュメント",
"description": "Homepage layout title"
},
"homepage.layout.description": {
"message": "Status Network ドキュメント — コンポーザブルなプライバシーと組み込みのスパム保護を備えた、ヒトとボットのための完全ガスレス Ethereum L2",
"description": "Homepage layout description"
},
"homepage.hero.subtitle": {
"message": "ようこそ",
"description": "Homepage hero subtitle"
},
"homepage.hero.title": {
"message": "Status Network ドキュメント",
"description": "Homepage hero title"
},
"homepage.hero.description": {
"message": "コンポーザブルなプライバシーと組み込みのスパム保護を備えた、ヒトとボットのための完全ガスレス Ethereum L2",
"description": "Homepage hero description"
},
"homepage.docs.sectionTitle": {
"message": "ドキュメントを探す",
"description": "Homepage docs section title"
},
"homepage.docs.sectionSubtitle": {
"message": "今すぐ Status Network での開発を始めましょう",
"description": "Homepage docs section subtitle"
},
"homepage.docCards.overview.title": {
"message": "概要",
"description": "Homepage docs card title for Overview"
},
"homepage.docCards.overview.description": {
"message": "Status Network のアーキテクチャ、ガスレス取引、トークノミクス、持続可能な公的資金モデルについて",
"description": "Homepage docs card description for Overview"
},
"homepage.docCards.overview.linkText": {
"message": "詳細を見る",
"description": "Homepage docs card link text for Overview"
},
"homepage.docCards.build.title": {
"message": "Build for Karma",
"description": "Homepage docs card title for Build for Karma"
},
"homepage.docCards.build.description": {
"message": "コントラクトのデプロイ、Karma の統合、ガスレスアプリの構築に関するガイド、チュートリアル、リファレンス",
"description": "Homepage docs card description for Build for Karma"
},
"homepage.docCards.build.linkText": {
"message": "詳細を見る",
"description": "Homepage docs card link text for Build for Karma"
},
"homepage.docCards.tools.title": {
"message": "ツール",
"description": "Homepage docs card title for Tools"
},
"homepage.docCards.tools.description": {
"message": "RPC エンドポイント、ブリッジ、テストネットフォーセット、ブロックエクスプローラー、インフラパートナー",
"description": "Homepage docs card description for Tools"
},
"homepage.docCards.tools.linkText": {
"message": "詳細を見る",
"description": "Homepage docs card link text for Tools"
},
"homepage.quickStart.title": {
"message": "ビルドの準備はできましたか?",
"description": "Homepage quick start title"
},
"homepage.quickStart.description": {
"message": "ウォレットを設定し、テストネットトークンを取得して、数分で最初のコントラクトをデプロイしましょう",
"description": "Homepage quick start description"
},
"homepage.quickStart.button": {
"message": "クイックスタート",
"description": "Homepage quick start button label"
},
"homepage.community.sectionTitle": {
"message": "コミュニティ",
"description": "Homepage community section title"
},
"homepage.community.sectionSubtitle": {
"message": "Status Network コミュニティの最新情報をチェックしましょう",
"description": "Homepage community section subtitle"
},
"homepage.community.telegram.title": {
"message": "Telegram に参加",
"description": "Homepage community card title for Telegram"
},
"homepage.community.telegram.description": {
"message": "他の Status Network ビルダーと交流し、サポートを受けましょう",
"description": "Homepage community card description for Telegram"
},
"homepage.community.github.title": {
"message": "GitHub で見る",
"description": "Homepage community card title for GitHub"
},
"homepage.community.github.description": {
"message": "ソースコードを確認し、エコシステムに貢献しましょう",
"description": "Homepage community card description for GitHub"
},
"homepage.community.official.title": {
"message": "公式リンク",
"description": "Homepage community card title for official links"
},
"homepage.community.official.description": {
"message": "ウェブサイト、ソーシャルチャンネル、すべての公式リソースを一か所に",
"description": "Homepage community card description for official links"
},
"ideaCatalog.filter.category": {
"message": "カテゴリ",
"description": "Filter group label"
},
"ideaCatalog.filter.statusPrimitives": {
"message": "Status固有機能",
"description": "Filter group label"
},
"ideaCatalog.filter.builderProfile": {
"message": "ビルダープロフィール",
"description": "Filter group label"
},
"ideaCatalog.filter.difficulty": {
"message": "難易度",
"description": "Filter group label"
},
"ideaCatalog.filter.fewerFilters": {
"message": "フィルターを閉じる",
"description": "Toggle button label"
},
"ideaCatalog.filter.moreFilters": {
"message": "フィルターをもっと見る",
"description": "Toggle button label"
},
"ideaCatalog.filter.domainExpertise": {
"message": "ドメイン専門性",
"description": "Filter group label"
},
"ideaCatalog.filter.userSegment": {
"message": "ユーザーセグメント",
"description": "Filter group label"
},
"ideaCatalog.filter.capitalRequirement": {
"message": "資本要件",
"description": "Filter group label"
},
"ideaCatalog.status.showing": {
"message": "{totalCount}件中{visibleCount}件を表示",
"description": "Status text"
},
"ideaCatalog.status.clearAll": {
"message": "すべてクリア",
"description": "Clear all filters button"
},
"ideaCatalog.card.whyStatus": {
"message": "Why Status:",
"description": "Card detail label"
},
"ideaCatalog.card.mvpScope": {
"message": "MVPスコープ:",
"description": "Card detail label"
},
"ideaCatalog.card.security": {
"message": "セキュリティ",
"description": "Card meta badge label"
},
"ideaCatalog.card.opsBurden": {
"message": "運用負担",
"description": "Card meta badge label"
},
"ideaCatalog.empty.message": {
"message": "現在のフィルターに一致するアイデアはありません。",
"description": "Empty state message"
},
"ideaCatalog.empty.clearAll": {
"message": "すべてのフィルターをクリア",
"description": "Empty state clear button"
},
"ideaCatalog.securityCriticality.low": {
"message": "低",
"description": "Security criticality label"
},
"ideaCatalog.securityCriticality.medium": {
"message": "中",
"description": "Security criticality label"
},
"ideaCatalog.securityCriticality.high": {
"message": "高",
"description": "Security criticality label"
},
"ideaCatalog.securityCriticality.critical": {
"message": "重大",
"description": "Security criticality label"
},
"ideaCatalog.opsBurden.low": {
"message": "低",
"description": "Ops burden label"
},
"ideaCatalog.opsBurden.medium": {
"message": "中",
"description": "Ops burden label"
},
"ideaCatalog.opsBurden.high": {
"message": "高",
"description": "Ops burden label"
},
"ideaCatalog.opsBurden.veryHigh": {
"message": "非常に高い",
"description": "Ops burden label"
},
"ideaCatalog.category.reputation": {
"message": "レピュテーション",
"description": "Category label"
},
"ideaCatalog.category.privacy": {
"message": "プライバシー",
"description": "Category label"
},
"ideaCatalog.category.social": {
"message": "ソーシャル",
"description": "Category label"
},
"ideaCatalog.category.games": {
"message": "ゲーム",
"description": "Category label"
},
"ideaCatalog.category.defi": {
"message": "DeFi",
"description": "Category label"
},
"ideaCatalog.statusPrimitive.gasless": {
"message": "ガスレス",
"description": "Status primitive label"
},
"ideaCatalog.statusPrimitive.reputation": {
"message": "評判",
"description": "Status primitive label"
},
"ideaCatalog.statusPrimitive.privacy": {
"message": "プライバシー",
"description": "Status primitive label"
},
"ideaCatalog.builderProfile.frontendDev": {
"message": "Web / アプリ開発",
"description": "Builder profile label"
},
"ideaCatalog.builderProfile.contractDev": {
"message": "スマートコントラクト開発",
"description": "Builder profile label"
},
"ideaCatalog.builderProfile.fullStack": {
"message": "フルスタック",
"description": "Builder profile label"
},
"ideaCatalog.builderProfile.protocolDev": {
"message": "プロトコル / 暗号学",
"description": "Builder profile label"
},
"ideaCatalog.difficulty.lowMed": {
"message": "低〜中",
"description": "Difficulty label"
},
"ideaCatalog.difficulty.med": {
"message": "中",
"description": "Difficulty label"
},
"ideaCatalog.difficulty.medHigh": {
"message": "中〜高",
"description": "Difficulty label"
},
"ideaCatalog.difficulty.high": {
"message": "高",
"description": "Difficulty label"
},
"ideaCatalog.userSegment.consumer": {
"message": "コンシューマー",
"description": "User segment label"
},
"ideaCatalog.userSegment.communityCreator": {
"message": "コミュニティ/クリエイター",
"description": "User segment label"
},
"ideaCatalog.userSegment.daoOrgOps": {
"message": "DAO/組織運営",
"description": "User segment label"
},
"ideaCatalog.userSegment.traderDefi": {
"message": "トレーダー/DeFi",
"description": "User segment label"
},
"ideaCatalog.domainExpertise.communityDesign": {
"message": "コミュニティデザイン",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.defiMechanisms": {
"message": "DeFiメカニズム",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.privacy": {
"message": "プライバシー",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.paymentsFinops": {
"message": "決済/FinOps",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.consumerProduct": {
"message": "コンシューマープロダクト",
"description": "Domain expertise label"
},
"ideaCatalog.capitalReq.none": {
"message": "不要",
"description": "Capital requirement label"
},
"ideaCatalog.capitalReq.operatingTreasury": {
"message": "運用資金",
"description": "Capital requirement label"
},
"ideaCatalog.capitalReq.seedLiquidity": {
"message": "シード流動性",
"description": "Capital requirement label"
},
"ideaCatalog.capitalReq.deepLiquidity": {
"message": "深い流動性",
"description": "Capital requirement label"
},
"ideaCatalog.idea.karmaGatedAccess.title": {
"message": "Karmaゲート付きコンテンツフィード",
"description": "Idea title"
},
"ideaCatalog.idea.karmaGatedAccess.what": {
"message": "クリエイターが最小Karmaティアを満たすフォロワーにのみ表示される投稿を公開するソーシャルフィード。Substackとオンチェーンレピュテーションの融合。",
"description": "Idea what"
},
"ideaCatalog.idea.karmaGatedAccess.whyStatus": {
"message": "Karmaティアはオンチェーンで解決されるため、アクセス制御はトラストレス。サブスクリプション課金なし、プラットフォームロックインなし、Sybil耐性を設計。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaGatedAccess.mvp": {
"message": "公開+ゲート付き投稿のあるフィード、ティアチェックミドルウェア(オプションでオンチェーン)、Karmaティア別のオーディエンス内訳を表示するクリエイターダッシュボード。",
"description": "Idea mvp"
},
"ideaCatalog.idea.karmaLiquidityProtocol.title": {
"message": "Karmaブースト付きイールドボールト",
"description": "Idea title"
},
"ideaCatalog.idea.karmaLiquidityProtocol.what": {
"message": "より高いKarmaティアの預金者がブーストされたAPYを受け取るDeFiボールト。初期サポーターとアクティブ参加者がより良いリターンを得る。",
"description": "Idea what"
},
"ideaCatalog.idea.karmaLiquidityProtocol.whyStatus": {
"message": "ネイティブレピュテーショングラフにより、ボールトはトークン加重投票やオフチェーンの許可リストではなく、実証済みの参加度に基づいて報酬を配分できる。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaLiquidityProtocol.mvp": {
"message": "2つのイールドティアを持つ単一資産ボールト、預金時のオンチェーンKarmaティア検索、ティア別の実効APYを表示するダッシュボード。",
"description": "Idea mvp"
},
"ideaCatalog.idea.karmaIncentiveMarket.title": {
"message": "Karmaバウンティボード",
"description": "Idea title"
},
"ideaCatalog.idea.karmaIncentiveMarket.what": {
"message": "Karma閾値を超えるユーザーのみがタスクを申請できるバウンティマーケットプレイス。プロジェクトチームが作業(バグ報告、翻訳、オンボーディングガイド)を投稿し、認証された貢献者に報酬を支払う。",
"description": "Idea what"
},
"ideaCatalog.idea.karmaIncentiveMarket.whyStatus": {
"message": "Karmaゲートによりスパムボットや低品質の提出を排除し、バウンティ発行者は申請者がネットワークに実際の実績を持つことを信頼できる。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaIncentiveMarket.mvp": {
"message": "バウンティ一覧ページ、Karmaゲート付き申請フロー、提出物レビューパネル、承認時のオンチェーン支払い。",
"description": "Idea mvp"
},
"ideaCatalog.idea.karmaDynamicPricing.title": {
"message": "Karmaティア付きNFTマーケットプレイス",
"description": "Idea title"
},
"ideaCatalog.idea.karmaDynamicPricing.what": {
"message": "出品者・購入者のKarmaティアに基づいて出品手数料、ロイヤリティ、先行アクセス期間が調整されるNFTマーケットプレイス。信頼された参加者には自動的に有利な条件が適用される。",
"description": "Idea what"
},
"ideaCatalog.idea.karmaDynamicPricing.whyStatus": {
"message": "チェックアウト時のオンチェーン tier resolution により、動的価格設定がトラストレスに適用される。クーポンコードもバックエンド許可リストも不要。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaDynamicPricing.mvp": {
"message": "NFT出品+購入フロー(ティア付き手数料スケジュール)、チェックアウト時のオンチェーン tier check、購入者ティア別の売上を表示する出品者分析。",
"description": "Idea mvp"
},
"ideaCatalog.idea.stealthAddressPayments.title": {
"message": "ステルスアドレス決済",
"description": "Idea title"
},
"ideaCatalog.idea.stealthAddressPayments.what": {
"message": "リンク不可能な支出パスを持つ使い捨て受信アドレス。",
"description": "Idea what"
},
"ideaCatalog.idea.stealthAddressPayments.whyStatus": {
"message": "プライバシープリミティブ+低摩擦トランザクションUX。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.stealthAddressPayments.mvp": {
"message": "アドレス生成、受信フロー、プライベート支出フロー。",
"description": "Idea mvp"
},
"ideaCatalog.idea.privatePayroll.title": {
"message": "プライベート給与・貯蓄",
"description": "Idea title"
},
"ideaCatalog.idea.privatePayroll.what": {
"message": "残高と受取人を公開しない給与・貯蓄レール。",
"description": "Idea what"
},
"ideaCatalog.idea.privatePayroll.whyStatus": {
"message": "公開台帳が期待に応えられない現実世界のニーズ。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.privatePayroll.mvp": {
"message": "雇用主支払いバッチ+受取人請求+シールド付きボールト。",
"description": "Idea mvp"
},
"ideaCatalog.idea.shieldedMicrotransactions.title": {
"message": "シールド付きマイクロ決済 / カードレイヤー",
"description": "Idea title"
},
"ideaCatalog.idea.shieldedMicrotransactions.what": {
"message": "金額・参加者を隠した低額決済とサブスクリプション。",
"description": "Idea what"
},
"ideaCatalog.idea.shieldedMicrotransactions.whyStatus": {
"message": "Gasless相互作用により頻繁な決済が実現可能。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.shieldedMicrotransactions.mvp": {
"message": "定期認証付きプライベートチップ/サブスクリプションフロー。",
"description": "Idea mvp"
},
"ideaCatalog.idea.privateLending.title": {
"message": "プライベート貸借",
"description": "Idea title"
},
"ideaCatalog.idea.privateLending.what": {
"message": "公開ポジション漏洩を避ける借入・貸出フロー。",
"description": "Idea what"
},
"ideaCatalog.idea.privateLending.whyStatus": {
"message": "プライバシー+Karmaベースの信頼シグナル。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.privateLending.mvp": {
"message": "1種類の担保、1種類の借入資産、プライベートヘルスチェック。",
"description": "Idea mvp"
},
"ideaCatalog.idea.privateMultisig.title": {
"message": "プライベート多重署名",
"description": "Idea title"
},
"ideaCatalog.idea.privateMultisig.what": {
"message": "署名者、閾値、取引詳細が隠蔽される多重署名機能。",
"description": "Idea what"
},
"ideaCatalog.idea.privateMultisig.whyStatus": {
"message": "プライバシー重視の組織でもオンチェーンで運営可能。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.privateMultisig.mvp": {
"message": "ポリシー設定+署名フロー+選択的開示付き実行ログ。",
"description": "Idea mvp"
},
"ideaCatalog.idea.socialMiniApp.title": {
"message": "Gaslessマイクロブログプラットフォーム",
"description": "Idea title"
},
"ideaCatalog.idea.socialMiniApp.what": {
"message": "すべての投稿、返信、いいねがユーザーに無料のオンチェーンアクションとなるTwitter風マイクロブログ。Karmaバッジで信頼された声を可視化。",
"description": "Idea what"
},
"ideaCatalog.idea.socialMiniApp.whyStatus": {
"message": "Gaslessトランザクションにより投稿・アクションごとの経済が実現可能。Karmaバッジは任意の青チェックシステムを、実際のネットワーク参加に基づくレピュテーションに置き換える。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.socialMiniApp.mvp": {
"message": "タイムライン、投稿/返信/いいねアクション、Karma信頼バッジ付きユーザープロフィール、基本コンテンツモデレーション。",
"description": "Idea mvp"
},
"ideaCatalog.idea.creatorEconomyToolkit.title": {
"message": "ファンパスプラットフォーム",
"description": "Idea title"
},
"ideaCatalog.idea.creatorEconomyToolkit.what": {
"message": "クリエイターが限定コンテンツ、グループチャット、IRLイベントアクセスをアンロックする無料デジタルパスをミントするプラットフォーム。ファンはGaslessでパスを収集。",
"description": "Idea what"
},
"ideaCatalog.idea.creatorEconomyToolkit.whyStatus": {
"message": "ゼロコストのミントと請求により、コミュニティパスからのペイウォール摩擦を排除。クリエイターはファンにガス代を払わせることなくオーディエンスを拡大できる。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.creatorEconomyToolkit.mvp": {
"message": "パスミント付きクリエイターページ、ファン請求フロー、パスゲート付きコンテンツセクション、パス検証によるイベントチェックイン。",
"description": "Idea mvp"
},
"ideaCatalog.idea.communityGovernance.title": {
"message": "DAO提案・Karma加重投票アプリ",
"description": "Idea title"
},
"ideaCatalog.idea.communityGovernance.what": {
"message": "コミュニティメンバーが提案を提出し、Karmaティアに比例した重みで投票するガバナンスアプリ。アクティブな貢献者は受動的なホルダーより大きな声を持つ。",
"description": "Idea what"
},
"ideaCatalog.idea.communityGovernance.whyStatus": {
"message": "Karma加重投票はトークン蓄積ではなく実際の参加を報酬。Gasless投票はほとんどのDAOで投票率を抑えるコスト障壁を除去。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.communityGovernance.mvp": {
"message": "提案提出フォーム、オンチェーン集計付きKarma加重投票、ティア別参加内訳付き結果ダッシュボード。",
"description": "Idea mvp"
},
"ideaCatalog.idea.onchainStrategyGame.title": {
"message": "フォグオブウォー征服ゲーム",
"description": "Idea title"
},
"ideaCatalog.idea.onchainStrategyGame.what": {
"message": "部隊の位置がプライベートステートで隠され、すべての移動がGaslessオンチェーントランザクションとなる六角グリッド領土争奪ゲーム。Riskボードゲームに本物のオンチェーンフォグオブウォーを融合。",
"description": "Idea what"
},
"ideaCatalog.idea.onchainStrategyGame.whyStatus": {
"message": "プライバシープリミティブにより真の隠蔽情報(クライアントサイドのフォグのみではない)を実現。Gasless移動により戦略ゲームの迅速な往来が経済的に可能に。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.onchainStrategyGame.mvp": {
"message": "フォグオブウォー付き六角マップ、1種類のユニット、プライベート部隊配置、ターン解決、マッチリーダーボード。",
"description": "Idea mvp"
},
"ideaCatalog.idea.predictionMarket.title": {
"message": "予測市場",
"description": "Idea title"
},
"ideaCatalog.idea.predictionMarket.what": {
"message": "低摩擦のエントリーとプライベート参加者ポジションを持つ市場。",
"description": "Idea what"
},
"ideaCatalog.idea.predictionMarket.whyStatus": {
"message": "より良い市場参加とコピートレード行動の減少。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.predictionMarket.mvp": {
"message": "市場作成+ポジションエントリー+決済+基本分析。",
"description": "Idea mvp"
},
"ideaCatalog.idea.nativeDexCompanion.title": {
"message": "Karmaティア付きスワップルーター",
"description": "Idea title"
},
"ideaCatalog.idea.nativeDexCompanion.what": {
"message": "最良のオンチェーンプールを経由して取引をルーティングし、高Karmaユーザーに手数料削減と優先実行を提供するスワップインターフェース。DEXレイヤーに組み込まれたロイヤルティプログラム。",
"description": "Idea what"
},
"ideaCatalog.idea.nativeDexCompanion.whyStatus": {
"message": "Karmaティアによりルーターがトラストレスに手数料割引を提供。ネイティブ流動性との緊密な統合により、外部アグリゲーターの依存なしでより良いレートを実現。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.nativeDexCompanion.mvp": {
"message": "ティア付き手数料表示付きトークンスワップUI、Karma対応ルーティングロジック、LPポジションパネル、ティア別の節約手数料を表示する取引履歴。",
"description": "Idea mvp"
},
"ideaCatalog.idea.publicFundingInterface.title": {
"message": "パブリックファンディングインターフェース",
"description": "Idea title"
},
"ideaCatalog.idea.publicFundingInterface.what": {
"message": "エンドツーエンドのgrant発見、提案、投票、追跡ダッシュボード。",
"description": "Idea what"
},
"ideaCatalog.idea.publicFundingInterface.whyStatus": {
"message": "エコシステム成長フライホイールを直接支援。",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.publicFundingInterface.mvp": {
"message": "提案ボード+投票画面+grant進捗トラッカー。",
"description": "Idea mvp"
}
}
@@ -3,148 +3,176 @@
"message": "Next",
"description": "The label for version current"
},
"sidebar.tutorialSidebar.category.INTRODUCTION": {
"sidebar.homeSidebar.category.INTRODUCTION": {
"message": "はじめに",
"description": "The label for category INTRODUCTION in sidebar tutorialSidebar"
"description": "The label for category INTRODUCTION in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.TOKENOMICS": {
"sidebar.homeSidebar.category.TOKENOMICS": {
"message": "トークノミクス",
"description": "The label for category TOKENOMICS in sidebar tutorialSidebar"
"description": "The label for category TOKENOMICS in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.GENERAL INFO": {
"sidebar.homeSidebar.category.GENERAL INFO": {
"message": "一般情報",
"description": "The label for category GENERAL INFO in sidebar tutorialSidebar"
"description": "The label for category GENERAL INFO in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.🏡 Contract Addresses": {
"sidebar.homeSidebar.category.🏡 Contract Addresses": {
"message": "🏡 コントラクトアドレス",
"description": "The label for category 🏡 Contract Addresses in sidebar tutorialSidebar"
"description": "The label for category 🏡 Contract Addresses in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.🌉 Bridge": {
"sidebar.homeSidebar.category.🌉 Bridge": {
"message": "🌉 ブリッジ",
"description": "The label for category 🌉 Bridge in sidebar tutorialSidebar"
"description": "The label for category 🌉 Bridge in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.TOOLS": {
"message": "ツール",
"description": "The label for category TOOLS in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.category.TUTORIALS": {
"message": "チュートリアル",
"description": "The label for category TUTORIALS in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.category.🚀 Deploying a Smart Contract": {
"message": "🚀 スマートコントラクトのデプロイ",
"description": "The label for category 🚀 Deploying a Smart Contract in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.category.OTHER DOCS": {
"sidebar.homeSidebar.category.OTHER DOCS": {
"message": "その他のドキュメント",
"description": "The label for category OTHER DOCS in sidebar tutorialSidebar"
"description": "The label for category OTHER DOCS in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🏠 Home": {
"message": "🏠 ホーム",
"description": "The label for the doc item 🏠 Home in sidebar tutorialSidebar, linking to the doc index"
"sidebar.homeSidebar.doc.🌴 Home": {
"message": "🌴 ホーム",
"description": "The label for the doc item 🌴 Home in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.⚡ Quick Start": {
"sidebar.homeSidebar.doc.⚡ Quick Start": {
"message": "⚡ クイックスタート",
"description": "The label for the doc item ⚡ Quick Start in sidebar tutorialSidebar"
"description": "The label for the doc item ⚡ Quick Start in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💎 SNT Token": {
"message": "💎 SNT Token",
"description": "The label for the doc item 💎 SNT Token in sidebar tutorialSidebar, linking to the doc tokenomics/snt-token"
},
"sidebar.tutorialSidebar.doc.💠 Karma Token": {
"message": "💠 Karma Token",
"description": "The label for the doc item 💠 Karma Token in sidebar tutorialSidebar, linking to the doc tokenomics/karma-token"
},
"sidebar.tutorialSidebar.doc.🌐 Network Details": {
"message": "🌐 ネットワーク詳細",
"description": "The label for the doc item 🌐 Network Details in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc. Add Status Network": {
"message": " Status ネットワークの追加",
"description": "The label for the doc item Add Status Network in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Tokens": {
"message": "💰 トークン",
"description": "The label for the doc item 💰 Tokens in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🧪 Testnet Contracts": {
"message": "🧪 テストネットコントラクト",
"description": "The label for the doc item 🧪 Testnet Contracts in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🧪 Bridging Testnet": {
"message": "🧪 テストネットブリッジ",
"description": "The label for the doc item 🧪 Bridging Testnet in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🔌 RPC": {
"message": "🔌 RPC",
"description": "The label for the doc item 🔌 RPC in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🌉 Bridge": {
"message": "🌉 ブリッジ",
"description": "The label for the doc item 🌉 Bridge in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🚰 Testnet Faucets": {
"message": "🚰 テストネットフォーセット",
"description": "The label for the doc item 🚰 Testnet Faucets in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🔎 Block Explorers": {
"message": "🔎 ブロックエクスプローラー",
"description": "The label for the doc item 🔎 Block Explorers in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🎩 Using Hardhat": {
"message": "🎩 Hardhatの使用",
"description": "The label for the doc item 🎩 Using Hardhat in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.⚒️ Using Foundry": {
"message": "⚒️ Foundryの使用",
"description": "The label for the doc item ⚒️ Using Foundry in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🎛️ Using Remix": {
"message": "🎛️ Remixの使用",
"description": "The label for the doc item 🎛️ Using Remix in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🏗 Using Scaffold-ETH 2": {
"message": "🏗 Scaffold-ETH 2 使用",
"description": "The label for the doc item 🏗 Using Scaffold-ETH 2 in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🔗 Official Links": {
"message": "🔗 公式リンク",
"description": "The label for the doc item 🔗 Official Links in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🌴 Home": {
"message": "🌴 Home",
"description": "The label for the doc item 🌴 Home in sidebar tutorialSidebar, linking to the doc index"
},
"sidebar.tutorialSidebar.doc.🤝 Economic Model": {
"sidebar.homeSidebar.doc.🤝 Economic Model": {
"message": "🤝 経済モデル",
"description": "The label for the doc item 🤝 Economic Model in sidebar tutorialSidebar"
"description": "The label for the doc item 🤝 Economic Model in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Public Funding": {
"sidebar.homeSidebar.doc.💰 Public Funding": {
"message": "💰 公募資金",
"description": "The label for the doc item 💰 Public Funding in sidebar tutorialSidebar"
"description": "The label for the doc item 💰 Public Funding in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🐉 Karmic Tokenomics": {
"sidebar.homeSidebar.doc.🐉 Karmic Tokenomics": {
"message": "🐉 カルミックトークノミクス",
"description": "The label for the doc item 🐉 Karmic Tokenomics in sidebar tutorialSidebar"
"description": "The label for the doc item 🐉 Karmic Tokenomics in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💎 SNT Staking": {
"sidebar.homeSidebar.doc.💎 SNT Staking": {
"message": "💎 SNTステーキング",
"description": "The label for the doc item 💎 SNT Staking in sidebar tutorialSidebar"
"description": "The label for the doc item 💎 SNT Staking in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Pre-Deposits": {
"sidebar.homeSidebar.doc.💰 Pre-Deposits": {
"message": "💰 事前預入",
"description": "The label for the doc item 💰 Pre-Deposits in sidebar tutorialSidebar"
"description": "The label for the doc item 💰 Pre-Deposits in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🪙 Tokens": {
"sidebar.homeSidebar.doc.🌐 Network Details": {
"message": "🌐 ネットワーク詳細",
"description": "The label for the doc item 🌐 Network Details in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.⛽ Gasless Transactions": {
"message": "⛽ ガスレストランザクション",
"description": "The label for the doc item ⛽ Gasless Transactions in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc. Add Status Network": {
"message": " Status ネットワークの追加",
"description": "The label for the doc item Add Status Network in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.🪙 Tokens": {
"message": "🪙 トークン",
"description": "The label for the doc item 🪙 Tokens in sidebar tutorialSidebar"
"description": "The label for the doc item 🪙 Tokens in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Pre-Deposit Vault Contracts": {
"sidebar.homeSidebar.doc.🧪 Testnet Contracts": {
"message": "🧪 テストネットコントラクト",
"description": "The label for the doc item 🧪 Testnet Contracts in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.💰 Pre-Deposit Vault Contracts": {
"message": "💰 プリ・デポジット金庫コントラクト",
"description": "The label for the doc item 💰 Pre-Deposit Vault Contracts in sidebar tutorialSidebar"
"description": "The label for the doc item 💰 Pre-Deposit Vault Contracts in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🌐 Running an RPC node": {
"sidebar.homeSidebar.doc.🧪 Bridging Testnet": {
"message": "🧪 テストネットブリッジ",
"description": "The label for the doc item 🧪 Bridging Testnet in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.🔗 Official Links": {
"message": "🔗 公式リンク",
"description": "The label for the doc item 🔗 Official Links in sidebar homeSidebar"
},
"sidebar.buildForKarmaSidebar.category.BUILD FOR KARMA": {
"message": "Karma開発",
"description": "The label for category BUILD FOR KARMA in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🌟 Why Status Network": {
"message": "🌟 なぜStatus Networkか",
"description": "The label for the doc item 🌟 Why Status Network in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.💡 What to Build": {
"message": "💡 アイデアカタログ",
"description": "The label for the doc item 💡 What to Build in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.category.USING KARMA": {
"message": "Karmaを使う",
"description": "The label for category USING KARMA in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.⛽ Gasless Integration": {
"message": "⛽ ガスレス統合",
"description": "The label for the doc item ⛽ Gasless Integration in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🔰 Reputation Integration": {
"message": "🔰 レピュテーション統合",
"description": "The label for the doc item 🔰 Reputation Integration in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.category.DEPLOYING CONTRACTS": {
"message": "コントラクトのデプロイ",
"description": "The label for category DEPLOYING CONTRACTS in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🎩 Using Hardhat": {
"message": "🎩 Hardhatの使用",
"description": "The label for the doc item 🎩 Using Hardhat in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.⚒️ Using Foundry": {
"message": "⚒️ Foundryの使用",
"description": "The label for the doc item ⚒️ Using Foundry in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🎛️ Using Remix": {
"message": "🎛️ Remixの使用",
"description": "The label for the doc item 🎛️ Using Remix in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🏗 Using Scaffold-ETH 2": {
"message": "🏗 Scaffold-ETH 2 使用",
"description": "The label for the doc item 🏗 Using Scaffold-ETH 2 in sidebar buildForKarmaSidebar"
},
"sidebar.toolsSidebar.category.TOOLS": {
"message": "ツール",
"description": "The label for category TOOLS in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.category.CORE INFRASTRUCTURE": {
"message": "コアインフラストラクチャ",
"description": "The label for category CORE INFRASTRUCTURE in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.📡 RPC Endpoints": {
"message": "📡 RPCエンドポイント",
"description": "The label for the doc item 📡 RPC Endpoints in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🌉 Bridge": {
"message": "🌉 ブリッジ",
"description": "The label for the doc item 🌉 Bridge in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🚰 Testnet Faucets": {
"message": "🚰 テストネットフォーセット",
"description": "The label for the doc item 🚰 Testnet Faucets in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🔎 Block Explorers": {
"message": "🔎 ブロックエクスプローラー",
"description": "The label for the doc item 🔎 Block Explorers in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.category.RPC": {
"message": "RPC",
"description": "The label for category RPC in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🔌 JSON-RPC API": {
"message": "🔌 JSON-RPC API",
"description": "The label for the doc item 🔌 JSON-RPC API in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🌐 Running an RPC Node": {
"message": "🌐 RPCノードの運用",
"description": "The label for the doc item 🌐 Running an RPC node in sidebar tutorialSidebar"
"description": "The label for the doc item 🌐 Running an RPC Node in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.category.PARTNERS": {
"message": "パートナー",
"description": "The label for category PARTNERS in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🤝 Infrastructure Partners": {
"message": "🤝 インフラパートナー",
"description": "The label for the doc item 🤝 Infrastructure Partners in sidebar toolsSidebar"
}
}
@@ -0,0 +1,72 @@
---
id: deploying-contracts-index
title: 最初のコントラクトをデプロイする
description: Status Networkでスマートコントラクトを稼働させるためのデプロイツールを選択してください。Hardhat、Foundry、Remix、Scaffold-ETH 2のガイドがあります。
keywords: [deploy smart contract, Status Network, Hardhat, Foundry, Remix, Scaffold-ETH 2, blockchain deployment, EVM]
slug: /build-for-karma/deploying-contracts
sidebar_position: 1
---
Status Networkは完全なEVM互換なので、標準的なイーサリアムツールチェーンを使ってコントラクトをデプロイできます。ワークフローに合ったツールを選び、ステップバイステップのガイドに従ってテストネットに最初のコントラクトをデプロイしましょう。
:::tip 開始前に
[ウォレットにStatus Networkを追加](/overview/general-info/add-status-network)し、[テストネットETH](/tools/core-infrastructure/testnet-faucets)を入手しておいてください。
:::
## デプロイツールを選ぶ
<div className="deploy-card-grid">
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-hardhat">
<div className="deploy-card-icon">🎩</div>
<div className="deploy-card-content">
<h3>Hardhat</h3>
<p>Solidityコントラクトのコンパイル、テスト、デプロイのための業界標準の開発環境。Hardhat IgnitionとTypeScriptサポート付き。</p>
<span className="deploy-card-tag">TypeScript · テスト · Ignition</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-foundry">
<div className="deploy-card-icon">⚒️</div>
<div className="deploy-card-content">
<h3>Foundry</h3>
<p>Rustベースの高速スマートコントラクト開発ツールキット。Solidityでテストを書き、Castでコントラクトとやり取り。</p>
<span className="deploy-card-tag">Solidityテスト · Cast · 高速ビルド</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-remix">
<div className="deploy-card-icon">🎛️</div>
<div className="deploy-card-content">
<h3>Remix IDE</h3>
<p>ゼロセットアップのブラウザベースIDE。クイックプロトタイピング、学習、ローカルツールなしでのシンプルなコントラクトのデプロイに最適。</p>
<span className="deploy-card-tag">ブラウザベース · セットアップ不要 · 初心者向け</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-se2">
<div className="deploy-card-icon">🏗️</div>
<div className="deploy-card-content">
<h3>Scaffold-ETH 2</h3>
<p>Status Network拡張がプリ設定されたフルスタックスターターキット。NextJSフロントエンド、コントラクトのホットリロード、HardhatとFoundryの両方に対応。</p>
<span className="deploy-card-tag">フルスタック · NextJS · ホットリロード</span>
</div>
</a>
</div>
## どれを選べばいいか迷っている場合
| ツール | 最適な用途 | 必要なセットアップ |
|---|---|---|
| **Hardhat** | 複雑なテストとデプロイパイプラインを持つ本番プロジェクト | Node.js + npm |
| **Foundry** | Solidityネイティブのテストと高速コンパイルを好む開発者 | Rustツールチェーン |
| **Remix** | クイック実験、学習、シンプルな単発デプロイ | 不要(ブラウザ) |
| **Scaffold-ETH 2** | 初日からフロントエンドが必要なフルスタックdApp | Node.js + npm |
## デプロイ後
コントラクトが稼働したら、次のステップは以下の通りです:
- [ガスレス取引の統合](/build-for-karma/guides/gasless-integration) — Karmaを通じてユーザーがガス代を支払わずに済む
- [レピュテーション統合ガイドを読む](/build-for-karma/guides/reputation-integration) — Karmaを使ったレピュテーション対応機能の構築
@@ -9,7 +9,7 @@
- **Foundry**: [公式Foundryブック](https://book.getfoundry.sh/getting-started/installation)からインストール
- **Ethereumウォレット**: Status Networkテストネット用のプライベートキー
- **テストネットETH**: Status NetworkテストネットのETHが必要です
- Status NetworkテストネットのETHは[フォーセット](/tools/testnet-faucets)から入手できます
- Status NetworkテストネットのETHは[フォーセット](/tools/core-infrastructure/testnet-faucets)から入手できます
- **基本知識**: Solidityとコマンドラインの基礎知識
## 達成目標
@@ -200,7 +200,7 @@ forge test
問題が発生した場合:
- [Telegramコミュニティ](https://t.me/statusl2)に参加
- [ネットワーク詳細](/general-info/network-details)を参照
- [ネットワーク詳細](/overview/general-info/network-details)を参照
## 追加リソース
@@ -9,7 +9,7 @@
- **Node.jsとnpm**: [公式Node.jsウェブサイト](https://nodejs.org/)からダウンロードしてインストール
- **Ethereumウォレット**: Status Networkテストネット用のプライベートキーを持つMetaMaskまたは他のウォレット
- **テストネットETH**: Status NetworkテストネットのETHが必要です
- Status NetworkテストネットのETHは[フォーセット](/tools/testnet-faucets)から入手できます
- Status NetworkテストネットのETHは[フォーセット](/tools/core-infrastructure/testnet-faucets)から入手できます
- **基本知識**: Solidity、Hardhat、コマンドラインの基礎知識
## 達成目標
@@ -158,4 +158,4 @@ npx hardhat run scripts/interact.ts --network statusTestnet
問題が発生した場合:
- [Telegramコミュニティ](https://t.me/statusl2)に参加
- [ネットワーク詳細](/general-info/network-details)を参照
- [ネットワーク詳細](/overview/general-info/network-details)を参照
@@ -9,8 +9,8 @@
- **Webブラウザ**: ChromeやFirefoxなどの最新のブラウザ
- **MetaMask**: [MetaMask](https://metamask.io)ブラウザ拡張機能をインストール
- **テストネットETH**: Status NetworkテストネットのETHが必要です
- Status NetworkテストネットのETHは[フォーセット](/tools/testnet-faucets)から入手できます
- **ネットワーク設定**: [ネットワーク追加ガイド](/general-info/add-status-network)に従ってMetaMaskにStatus Networkテストネットを追加
- Status NetworkテストネットのETHは[フォーセット](/tools/core-infrastructure/testnet-faucets)から入手できます
- **ネットワーク設定**: [ネットワーク追加ガイド](/overview/general-info/add-status-network)に従ってMetaMaskにStatus Networkテストネットを追加
## 手順
@@ -91,7 +91,7 @@ contract HelloWorld {
問題が発生した場合:
- [Telegramコミュニティ](https://t.me/statusl2)に参加
- [ネットワーク詳細](/general-info/network-details)を参照
- [ネットワーク詳細](/overview/general-info/network-details)を参照
## 追加リソース
@@ -14,7 +14,7 @@ keywords: [Scaffold-ETH 2, スマートコントラクトデプロイ, Status Ne
- **Foundry** (オプション): Foundryワークフローを選択する場合
- **Ethereumウォレット** (オプション): テスト用のEVMウォレットの秘密鍵ですが、持っていなくても問題ありません
> **注意**: Status Networkはガスレス取引をサポートしているため、テストネットETHはオプションです。それでもテストネットETHが必要な場合は、[Faucet](/tools/testnet-faucets)から取得してください。
> **注意**: Status Networkはガスレス取引をサポートしているため、テストネットETHはオプションです。それでもテストネットETHが必要な場合は、[Faucet](/tools/core-infrastructure/testnet-faucets)から取得してください。
## クイックスタート
@@ -58,4 +58,4 @@ keywords: [Scaffold-ETH 2, スマートコントラクトデプロイ, Status Ne
詳細な設定オプション、トラブルシューティング、高度な使用方法については:
- 包括的なドキュメントについては[拡張機能README](https://github.com/status-im/status-network-scaffold-extension)を確認
- [Telegramコミュニティ](https://t.me/statusl2)に参加してサポートを求める
- [ネットワーク詳細](/general-info/network-details)を表示
- [ネットワーク詳細](/overview/general-info/network-details)を表示
@@ -0,0 +1,365 @@
---
title: ガスレス統合ガイド
description: Status Networkでガスレスなユーザー体験を構築するための実践的な統合ガイド。
keywords: [gasless, linea_estimateGas, Status Network, deny list, builder, zero gas, UX]
slug: /build-for-karma/guides/gasless-integration
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
Status Networkはプロトコルレベルでガスレストランザクションを提供します。ペイマスターやリレイヤーは不要です。ビルダーとしての中心的なタスクは、送信者の状態に応じて手数料を正確に推定し表示することです。
:::important 基本ルール
トランザクションUXを準備する際、ガス手数料の信頼できるソースとして`linea_estimateGas` RPCメソッドを使用してください。
:::
その他のJSON-RPCメソッドのリファレンスについては、[JSON-RPC API](/tools/rpc/json-rpc)を参照してください。
## Karma対応の手数料推定
Lineaでは、[`linea_estimateGas`](https://docs.linea.build/api/reference/linea-estimategas)はすでにガス推定の推奨メソッドです。
**1回の呼び出し**で`gasLimit``baseFeePerGas``priorityFeePerGas`を返し、手数料フィールドは圧縮されたトランザクションサイズ、L1検証コスト、L1/L2ガス価格比率を反映します — `eth_`名前空間のメソッドでは把握できない要素です。
Status Networkは`linea_estimateGas`をさらに拡張し、手数料フィールドに**Karma**システムを組み込んでいます。対象ユーザーの手数料がゼロに削減されたり、拒否リストに載ったユーザーの手数料が増加したりする場合があります。
```mermaid
flowchart TD
A[ユーザーがトランザクションを開始] --> B["<code>from</code>パラメータ付きで<code>linea_estimateGas</code>を呼び出し"]
B --> C{手数料の結果}
C -->|base+priority = 0| D[ガスレスUXを表示]
C -->|プレミアム手数料| F[プレミアム手数料UXを表示]
D --> G[トランザクションを送信]
F --> G
```
*図: `linea_estimateGas`を使用したガス推定フロー*
これが、ビルダーがStatus Networkでトランザクションコストの推定やユーザー向けEIP-1559手数料フィールドの事前入力に`linea_estimateGas`を使用すべき理由です。
:::info 詳細
Karmaとガス手数料およびトランザクション特権への影響に関する詳細な説明は、[カルミックトークノミクス](../../overview/tokenomics/karmic-tokenomics)ページを参照してください。
ガスレスシステムの実装と適用方法の技術的な詳細は、[ガスレストランザクション](../../overview/general-info/gasless-transactions)ドキュメントを参照してください。
:::
## `linea_estimateGas`のリクエスト/レスポンス形式
### リクエスト
`linea_estimateGas``eth_estimateGas`と**同じトランザクション呼び出しオブジェクト**を受け取ります。
`gasLimit``eth_estimateGas`と同じEVM実行ロジックを使用)と、LineaのL2固有の価格設定とStatus NetworkのKarmaルールの両方を反映した手数料フィールドを、単一のレスポンスで返します。
:::important
**必ず`from`を含めてください。** これがないと、ノードはKarma/クォータ/拒否リストのロジックを適用できません。
:::
### レスポンス
`linea_estimateGas`は以下を含むオブジェクトを返します:
- `gasLimit`: 16進数 - EVM実行のための推定ガスユニット(`eth_estimateGas`と同じ計算)
- `baseFeePerGas`: 16進数 - Status NetworkのKarmaルールを反映した次のブロックの基本手数料
- `priorityFeePerGas`: 16進数 - Status NetworkのKarmaルールを反映した推奨優先手数料
これらの手数料フィールドは、`eth_gasPrice``eth_maxPriorityFeePerGas``eth_feeHistory`などの`eth_`名前空間の呼び出しが返す値とは大きく異なる場合があります。これらはLineaのL2固有の価格設定やStatus NetworkのKarma調整を認識していません。
<!-- markdownlint-disable MD033 -->
<Tabs groupId="estimate-gas-response-shape">
<TabItem value="linea" label="linea_estimateGas(単一呼び出し)">
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"gasLimit": "0x5208",
"baseFeePerGas": "0x0",
"priorityFeePerGas": "0x0"
}
}
```
</TabItem>
<TabItem value="eth" label="標準EVM(複数呼び出し)">
標準EVMフローでは、ガスリミットと手数料データを収集するために複数の`eth_`呼び出しが必要です:
**eth_estimateGas**
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x5208"
}
```
**eth_maxPriorityFeePerGas**
```json
{
"jsonrpc": "2.0",
"id": 2,
"result": "0x59682f00"
}
```
**eth_getBlockByNumber**
```json
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"number": ...,
"baseFeePerGas": "0x3b9aca00",
...
}
}
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
## 移行ガイド: 複数の`eth_`呼び出しから`linea_estimateGas`へ
このセクションでは、一般的な「複数の`eth_`呼び出しによるEIP-1559」フローから単一の`linea_estimateGas`呼び出しへの移行方法を説明します。Status Networkでより正確なL2固有の手数料データとKarma対応の価格設定を提供します。
### 移行前: `eth_`名前空間を使用したEVMチェーンでの一般的なEIP-1559推定フロー
多くのEVMチェーンでは、一般的なEIP-1559推定フローは次のようになります:
1. **ガスリミットの推定**`eth_estimateGas`
2. **`maxPriorityFeePerGas`の取得** — `eth_maxPriorityFeePerGas`および/または`eth_feeHistory`
3. **`baseFeePerGas`の取得** — `eth_getBlockByNumber`
4. 以下を使用してEIP-1559トランザクションを構築:
- `gas`
- `maxPriorityFeePerGas`
- `maxFeePerGas`、通常は $2 \cdot \mathrm{baseFeePerGas} + \mathrm{maxPriorityFeePerGas}$
<!-- markdownlint-disable MD033 -->
<Tabs groupId="eip1559-estimation-before">
<TabItem value="curl" label="curl">
```bash
# 1) Gas limit (EVM execution)
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"eth_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_RPC_URL
# 2) Fetch suggested tip amount
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":2,"method":"eth_maxPriorityFeePerGas","params":[]}' \
https://YOUR_RPC_URL
# 3) Fetch base fee
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":3,"method":"eth_getBlockByNumber","params":["pending",false]}' \
https://YOUR_RPC_URL
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://YOUR_RPC_URL');
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: '0x0',
};
const gas = await provider.estimateGas(call);
const maxPriorityFeePerGas = await provider.send('eth_maxPriorityFeePerGas', []);
const pendingBlock = await provider.getBlock('pending');
const baseFeePerGas = pendingBlock?.baseFeePerGas ?? 0n;
const maxFeePerGas = 2n * baseFeePerGas + BigInt(maxPriorityFeePerGas);
console.log({
gas: `0x${gas.toString(16)}`,
maxPriorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
<TabItem value="viem" label="viem">
```js
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://YOUR_RPC_URL'),
});
const call = {
account: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: 0n,
};
const gas = await client.estimateGas(call);
const maxPriorityFeePerGas = await client.getMaxPriorityFeePerGas();
const pendingBlock = await client.getBlock({ blockTag: 'pending' });
const baseFeePerGas = pendingBlock.baseFeePerGas ?? 0n;
const maxFeePerGas = 2n * baseFeePerGas + maxPriorityFeePerGas;
console.log({
gas,
maxPriorityFeePerGas,
maxFeePerGas,
});
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### 移行後: `linea_estimateGas`を使用したStatus Networkのガス推定フロー
Status Networkでは、`linea_estimateGas`から手数料の提案を取得する必要があります。正確な手数料推奨がKarmaに依存するためです:
- アカウントが**ガスレス**トランザクションの対象になる可能性があります
- 拒否リストに載ったアカウントは**プレミアムガス手数料**を支払う必要がある場合があります
<!-- markdownlint-disable MD033 -->
<Tabs groupId="linea-estimate-gas-request">
<TabItem value="curl" label="curl">
```bash
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"linea_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_STATUS_NETWORK_RPC_URL
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://YOUR_STATUS_NETWORK_RPC_URL');
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: '0x0',
};
const { gasLimit, baseFeePerGas, priorityFeePerGas } = await provider.send(
'linea_estimateGas',
[call],
);
const maxFeePerGas =
BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);
console.log({
gas: gasLimit,
maxPriorityFeePerGas: priorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
<TabItem value="viem" label="viem">
```js
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://YOUR_STATUS_NETWORK_RPC_URL'),
});
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: 0n,
};
const { gasLimit, baseFeePerGas, priorityFeePerGas } = await client.request({
method: 'linea_estimateGas',
params: [call],
});
const maxFeePerGas =
BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);
console.log({
gas: gasLimit,
maxPriorityFeePerGas: priorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
:::tip ツールの統合
多くのイーサリアムライブラリは内部的に`eth_estimateGas`を呼び出します(例: `provider.estimateGas(...)`)。Status Networkでは標準の`eth_`メソッドにはそれらのライブラリを引き続き使用しつつ、ユーザー向けのトランザクションパラメータを構築または表示する際は**ガスリミットと手数料フィールドを`linea_estimateGas`で明示的に取得してください**。
:::
## UIでの手数料シナリオの処理
### 1) ガスレス
`baseFeePerGas``priorityFeePerGas`が両方ゼロの場合:
- 明確な無料トランザクション状態を表示します。
- 不要な手数料警告をスキップします。
### 2) プレミアム手数料
送信者が拒否リストに載っている場合(クォータ超過またはRLNポリシー):
- 手数料の金額を表示し、クォータまたはスパムポリシーによりプレミアムガスが適用されることを説明します。
- 送信者が手数料を支払うか、クォータ期間がリフレッシュされるまで待つことができることを明確にします。
- トランザクションを可能に保ちます。完全にブロックしないでください。
## よくある落とし穴
| 落とし穴 | 対処法 |
|---|---|
| 手数料判定に`eth_`メソッドを使用(`eth_gasPrice``eth_maxPriorityFeePerGas``eth_feeHistory` | `linea_estimateGas`を使用 |
| `linea_estimateGas`呼び出し時に`from`を省略 | Karma対応の推定を受け取るため、常に送信者アドレスを渡す |
| 手数料の前提をハードコーディング | 返された`baseFeePerGas``priorityFeePerGas`の値から手数料UIを構築 |
| すべてのユーザーがガスレスであると仮定 | ガスレス(手数料ゼロ)と拒否リスト(プレミアム手数料)の両方を処理 |
| リトライ時に推定値をキャッシュ | 送信時に近いタイミングで再推定 — 送信者のKarma状態は変更される可能性がある |
## 次のステップ
- [JSON-RPC API](/tools/rpc/json-rpc)
- [レピュテーション統合](/build-for-karma/guides/reputation-integration)
@@ -0,0 +1,20 @@
---
title: Karmaを使う
description: Status NetworkでKarmaベースのガスレスUXとレピュテーション対応機能を統合するためのエントリーポイント。
keywords: [Karma, gasless, reputation, integration, Status Network]
slug: /build-for-karma/guides
sidebar_position: 3
---
KarmaはStatus Networkでガスレストランザクション特権とレピュテーションを提供します。
このセクションでは、アプリにガスレス動作とティア対応のプロダクトロジックを統合する方法を説明します。
## はじめに
**トランザクションを処理しますか?**
- [ガスレス統合](/build-for-karma/guides/gasless-integration)から始めて、`linea_estimateGas`をガスレスとプレミアム手数料の判定における唯一の信頼できるソースとして使用してください。
**レピュテーションで機能を制限しますか?**
- [レピュテーション統合](/build-for-karma/guides/reputation-integration)に進み、オンチェーンでKarma残高とティアを読み取り、コントラクトのゲーティングを行い、ティア対応のフロントエンドを設計する方法を学びましょう。
@@ -0,0 +1,451 @@
---
title: レピュテーション統合ガイド
description: Status NetworkでKarmaティアを読み取り、レピュテーションで機能をゲーティングし、Karma対応のスマートコントラクトとフロントエンドを構築する方法。
keywords: [Karma, integration, smart contract, soulbound token, reputation, tiers, gasless, Status Network, developer guide]
slug: /build-for-karma/guides/reputation-integration
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
KarmaはStatus Networkのソウルバウンドレピュテーショントークンです。すべてのアドレスは、SNTステーキング、アセットのブリッジ、流動性提供、アプリの使用、プレミアムガス手数料の支払いなど、ネットワークへの真正な参加を通じてKarmaを獲得します。Karmaは購入、売却、転送することができません。
このガイドでは、Karmaデータの読み取り方法と、ユーザーのレピュテーションティアに応じたアプリの構築方法を説明します。
## オンチェーンでのKarma読み取り
Karmaの状態は2つのコントラクトに分かれています:
- **Karma** — ソウルバウンドERC-20トークン。`balanceOf`はスラッシング後の純残高を返します。転送と承認は常にリバートします。
- **KarmaTiers** — 残高をティアにマッピングします。`getTierIdByKarmaBalance(balance)`を呼び出してから`getTierById(tierId)`を呼び出し、ユーザーのティアとその`txPerEpoch`クォータを解決します。
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-reading">
<TabItem value="solidity" label="Solidity">
```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
/// @notice Minimal interface for the Karma soulbound token.
interface IKarma {
/// @notice Net Karma balance of `account` after slashing.
function balanceOf(address account) external view returns (uint256);
/// @notice Total amount slashed from `account` across all distributors.
function slashedAmountOf(address account) external view returns (uint256);
}
/// @notice Minimal interface for the KarmaTiers registry.
interface IKarmaTiers {
struct Tier {
uint256 minKarma;
uint256 maxKarma;
string name;
uint32 txPerEpoch; // gasless transactions allowed per epoch
}
/// @notice Returns the highest tier ID the given karma balance qualifies for.
function getTierIdByKarmaBalance(uint256 karmaBalance) external view returns (uint8);
/// @notice Returns the full Tier struct for a given tier ID.
function getTierById(uint8 tierId) external view returns (Tier memory);
/// @notice Returns the total number of configured tiers.
function getTierCount() external view returns (uint256);
}
contract KarmaGated {
IKarma public karma;
IKarmaTiers public karmaTiers;
constructor(address _karmaContract, address _karmaTiersContract) {
karma = IKarma(_karmaContract);
karmaTiers = IKarmaTiers(_karmaTiersContract);
}
/// @notice Resolves the tier ID for `user` from their current Karma balance.
function tierIdOf(address user) public view returns (uint8) {
return karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));
}
modifier onlyTier(uint8 minTier) {
require(tierIdOf(msg.sender) >= minTier, "Karma tier too low");
_;
}
function premiumAction() external onlyTier(3) {
// Only users at tier 3 or above can call this
}
function getDiscount(address user) external view returns (uint256) {
uint8 tierId = tierIdOf(user);
// Higher tiers get bigger discounts
return uint256(tierId) * 5; // 0%, 5%, 10%, ...
}
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider(
'https://public.sepolia.rpc.status.network'
);
const KARMA_ABI = [
'function balanceOf(address account) view returns (uint256)',
'function slashedAmountOf(address account) view returns (uint256)',
];
const KARMA_TIERS_ABI = [
'function getTierIdByKarmaBalance(uint256 karmaBalance) view returns (uint8)',
'function getTierById(uint8 tierId) view returns (tuple(uint256 minKarma, uint256 maxKarma, string name, uint32 txPerEpoch))',
'function getTierCount() view returns (uint256)',
];
const karma = new ethers.Contract(KARMA_ADDRESS, KARMA_ABI, provider);
const karmaTiers = new ethers.Contract(KARMA_TIERS_ADDRESS, KARMA_TIERS_ABI, provider);
// ユーザーのKarma残高を読み取り、ティアを解決
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const tier = await karmaTiers.getTierById(tierId);
console.log(`Karma残高: ${ethers.formatEther(balance)} KARMA`);
console.log(`ティア: ${tier.name} (ID ${tierId})`);
console.log(`エポックあたりのTx: ${tier.txPerEpoch}`);
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://public.sepolia.rpc.status.network'),
});
const karmaAbi = [
{
name: 'balanceOf',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'account', type: 'address' }],
outputs: [{ name: '', type: 'uint256' }],
},
{
name: 'slashedAmountOf',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'account', type: 'address' }],
outputs: [{ name: '', type: 'uint256' }],
},
] as const;
const karmaTiersAbi = [
{
name: 'getTierIdByKarmaBalance',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'karmaBalance', type: 'uint256' }],
outputs: [{ name: '', type: 'uint8' }],
},
{
name: 'getTierById',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'tierId', type: 'uint8' }],
outputs: [{
name: 'tier',
type: 'tuple',
components: [
{ name: 'minKarma', type: 'uint256' },
{ name: 'maxKarma', type: 'uint256' },
{ name: 'name', type: 'string' },
{ name: 'txPerEpoch', type: 'uint32' },
],
}],
},
] as const;
// 2回の順次読み取り: 残高 → ティアID → ティア詳細
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const tier = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierById',
args: [tierId],
});
console.log(`ティア: ${tier.name} (ID ${tierId})`);
console.log(`エポックあたりのTx: ${tier.txPerEpoch}`);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
:::note コントラクトアドレス
KarmaとKarmaTiersのテストネットコントラクトアドレスは[コントラクトアドレス](/overview/general-info/contract-addresses/testnet-contracts)ページに掲載されています。
:::
## 考えられる統合パターン
### 機能ゲーティング
Karmaティアに基づいて機能をアンロックします。[オンチェーンでのKarma読み取り](#オンチェーンでのkarma読み取り)セクションの`onlyTier`モディファイアがコントラクトレベルでアクセスを制御します:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-gating">
<TabItem value="solidity" label="Solidity">
```solidity
function accessPremiumContent() external onlyTier(3) {
// Only users at tier 3 or above can call this
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// Karma残高からティアを解決し、UI機能をゲーティング
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
if (tierId >= 3) {
showPremiumFeatures();
} else {
showUpgradePrompt(tierId);
}
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
if (tierId >= 3) {
showPremiumFeatures();
} else {
showUpgradePrompt(tierId);
}
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### ダイナミックプライシング
高Karmaユーザーに割引やより良いレートを提供します:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-pricing">
<TabItem value="solidity" label="Solidity">
```solidity
function calculateFee(address user, uint256 baseAmount) public view returns (uint256) {
uint8 tierId = karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));
// Each tier gives 5% discount
uint256 discount = uint256(tierId) * 5;
return baseAmount * (100 - discount) / 100;
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// ユーザーの現在のティアからクライアント側で割引手数料を計算
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const discount = BigInt(tierId) * 5n; // ティアごとに5%割引
const fee = baseAmount * (100n - discount) / 100n;
console.log(`ティア ${tierId}: ${discount}% 割引 → 手数料 = ${fee}`);
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const discount = BigInt(tierId) * 5n; // ティアごとに5%割引
const fee = baseAmount * (100n - discount) / 100n;
console.log(`ティア ${tierId}: ${discount}% 割引 → 手数料 = ${fee}`);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### レピュテーション表示
`KarmaTiers`コントラクトから直接名前を読み取って、UIにKarmaティアを信頼シグナルとして表示します:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-display">
<TabItem value="ethers" label="ethers.js">
```js
// オンチェーンでティア名を取得 — ハードコードされた配列は不要
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const tier = await karmaTiers.getTierById(tierId);
function KarmaBadge({ tierName }) {
return <span className="karma-badge">{tierName}</span>;
}
// 使用方法
<KarmaBadge tierName={tier.name} />
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const tier = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierById',
args: [tierId],
});
function KarmaBadge({ tierName }: { tierName: string }) {
return <span className="karma-badge">{tierName}</span>;
}
// 使用方法
<KarmaBadge tierName={tier.name} />
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### 加重ガバナンス
アプリのガバナンスでKarmaを投票の重み付けに使用します:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-governance">
<TabItem value="solidity" label="Solidity">
```solidity
function vote(uint256 proposalId, bool support) external {
uint256 weight = karma.balanceOf(msg.sender);
proposals[proposalId].votes += support ? int256(weight) : -int256(weight);
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// ユーザーのKarma残高を投票の重みとして読み取り、送信
const weight = await karma.balanceOf(userAddress);
console.log(`投票の重み: ${ethers.formatEther(weight)} KARMA`);
// ガバナンスコントラクトを呼び出し
const tx = await governanceContract.vote(proposalId, support);
await tx.wait();
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
import { formatEther, parseAbi } from 'viem';
// Karma残高から投票の重みを読み取り
const weight = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
console.log(`投票の重み: ${formatEther(weight)} KARMA`);
// ガバナンスコントラクトを通じて投票を送信
const { request } = await client.simulateContract({
address: GOVERNANCE_ADDRESS,
abi: parseAbi(['function vote(uint256 proposalId, bool support) external']),
functionName: 'vote',
args: [proposalId, support],
account: userAddress,
});
await walletClient.writeContract(request);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
## 次のステップ
- [ガスレス統合](/build-for-karma/guides/gasless-integration)を参照して、ガスレストランザクションにKarmaを統合する方法を学ぶ
- [カルミックトークノミクス](/overview/tokenomics/karmic-tokenomics)でKarmaの獲得と使用の仕組みを確認する
- [ガスレストランザクション](/overview/general-info/gasless-transactions)でRLNベースのガスレスシステムの技術的詳細を理解する
@@ -0,0 +1,21 @@
---
id: build-for-karma-index
title: Build for Karma
description: Status Networkで構築するために必要なすべて — ガスレス・レピュテーション統合ガイド、デプロイチュートリアル、アプリアイデア。
keywords: [Status Network, builder guides, Karma, gasless integration, reputation, deploy contracts, app ideas, developer documentation]
slug: /build-for-karma
sidebar_position: 1
---
このセクションは、Status Networkのビルダーハブです。ここで構築するメリットを理解したい方、何を作るか探したい方、ガスレストランザクションの実装方法を学びたい方、最初のスマートコントラクトをデプロイしたい方 — Karma中心の開発に必要なすべてがここにあります。
## はじめに
- [**なぜStatus Networkか**](/build-for-karma/why-status-network):ここで構築すべき理由 — ガスレス経済、Karma、パブリックファンディング、他のL2との比較。
- [**何を作るか**](/build-for-karma/what-to-build):フィルタリング可能なアプリアイデアのインタラクティブカタログ。
- [**Karmaを使う**](/build-for-karma/guides):ガスレストランザクションとレピュテーション対応機能をアプリに統合するための技術ガイド。
- [**最初のコントラクトをデプロイ**](/build-for-karma/deploying-contracts)Hardhat、Foundry、Remix、またはScaffold-ETH 2を使ったステップバイステップのコントラクトデプロイ。
## コミュニティ
- [Telegramビルダーコミュニティ](https://t.me/statusl2)に参加して、Status Networkでの構築に関するサポートを受けましょう
@@ -0,0 +1,31 @@
---
title: Status Networkで何を構築するか
description: Status Network向けの高レバレッジなアプリアイデアのスキャンファーストカタログ。カテゴリ、工数、デリバリープロファイル別に整理。
keywords: [Status Network, app ideas, builder ideas, Karma apps, privacy apps, gasless apps, DeFi, social apps, games, MVP]
sidebar_position: 3
---
import IdeaCatalog from '@site/src/components/IdeaCatalog/IdeaCatalog';
Status NetworkはガスレスUX、Karmaレピュテーション、プライバシープリミティブを組み合わせています。
これにより、他のチェーンではうまく構築しにくいプロダクトが実現可能になります。
以下はStatus Networkに最適な例として考えられるプロダクトの一部です。もちろん、これらのアイデアに限定されるわけではありません。
フィルターを使って、あなたの専門性と野心に合ったアイデアを見つけてください。カードをクリックすると詳細を確認できます。
<IdeaCatalog />
## 今すぐ構築を始める
- [クイックスタート](/overview/introduction/quick-start)
- [Karmaを使ったガスレスとレピュテーションの使い方](/build-for-karma/guides)
- [Status Networkへのコントラクトデプロイ](/build-for-karma/deploying-contracts)
- [Telegram Builder's Community](https://t.me/statusl2)
## エコシステムと資金
ビルダーはKarmaホルダーがガバナンスする公共資金プールから継続的な資金を得られます。
アプリのトラクションが増えるほど、Karmaと将来の配分に対する影響力が強くなります。
詳細 → [エコシステムと資金](/overview/tokenomics/public-funding)
@@ -0,0 +1,138 @@
---
title: なぜStatus Networkで構築するのか
description: Status Networkで構築する理由 — ガスレス取引、Karmaレピュテーション、持続可能な公共資金、他L2との比較。
keywords: [Status Network, why build, L2 comparison, gasless, Karma, public funding, developer advantages, Linea zkEVM]
sidebar_position: 2
---
選択できるL2は数多くあります。Status Networkが注目に値する理由をご紹介します。
<div className="comparison-grid">
<a className="comparison-row-link" href="#sustainable-public-funding">
<div className="comparison-row">
<div className="comparison-label">開発者資金</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>アプリのトラクションに応じてスケールする継続的な収益プール</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">一般的なL2</div>
<p>数ヶ月ごとに再申請する一度きりのグラント</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#gasless-by-default">
<div className="comparison-row">
<div className="comparison-label">ユーザーのガス</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>Karmaで無料 — ペイマスター、リレイヤー、アカウント抽象化のセットアップ不要</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">一般的なL2</div>
<p>ユーザーがガスを支払うか、開発者がペイマスター+リレイヤーインフラを運用</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#built-in-reputation-with-karma">
<div className="comparison-row">
<div className="comparison-label">ユーザーレピュテーション</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>Karmaによるネットワーク全体のレピュテーションシステム — スパム耐性、トラストシグナル、機能ゲーティング</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">一般的なL2</div>
<p>なし — 自前で構築するかサードパーティソリューションを統合</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#privacy-focused-civil-goods">
<div className="comparison-row">
<div className="comparison-label">プライバシー</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>ネイティブZKベースのツール — Rate Limiting Nullifiersなど</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">一般的なL2</div>
<p>サードパーティ統合</p>
</div>
</div>
</div>
</a>
</div>
## 持続可能な公共資金
Status Networkは一度きりのグラントや財団の資金に依存しません。代わりに、以下のソースから継続的に供給される公共資金プールを有しています:
- **ネイティブ利回り** — ブリッジされた利回り付き資産(当初はETHとステーブルコイン)から
- **DEX手数料** — ネイティブ分散型取引所から
- **プレミアムガス手数料** — 拒否リスト入りユーザーから
- **将来のネイティブアプリ手数料** — レンディング、NFT、ローンチパッドなど
詳細 → [経済モデル](/overview/tokenomics/economic-model)
Karmaホルダーがこの公共資金プールをアプリとビルダーにどう配分するかを投票します。アプリがネットワークに貢献するほど(アクティビティと取引量を生み出すほど)、あなたとユーザーが獲得するKarmaが増え、将来の配分に対する影響力も大きくなります。
**ビルダーにとっての意味:**
- 数ヶ月ごとに再申請する一度きりのグラントではなく、継続的な収益ストリーム
- 資金はアプリのトラクションに応じてスケール — ユーザーが増えればKarmaも増え、インセンティブも増加
- コミュニティガバナンスによる配分、財団の門番なし
詳細 → [公共資金](/overview/tokenomics/public-funding)
## デフォルトでガスレス
多くのチェーンでは「ガスレス」はペイマスターのセットアップ、リレイヤーの運用、アカウント抽象化SDKの統合を意味します。Status Networkでは、ガスレスがデフォルトの動作です。
正のKarma残高を持つすべてのアドレスは無料取引枠を取得します。ペイマスター不要。リレイヤー不要。特別なウォレット設定不要。対象ユーザーにはアプリがガス料金なしでそのまま動作します。
**ビルダーにとっての意味:**
- ガスによるUXの摩擦なし。オンボーディングファネルで「ガス用にETHをブリッジして」のステップでユーザーを失わない
- ERC-4337、メタトランザクション、ガスリレーパターンの統合が不要
- ユーザーに代わってガスをスポンサーするインフラコストが不要
ガスレスシステムは[Rate Limiting NullifiersRLN](/overview/general-info/gasless-transactions/#rln)(ゼロ知識スパム防止メカニズム)によりシーケンサーレベルで強制されています。
## Karmaによる組み込みレピュテーション
Karmaは、ステーキング、ブリッジ、流動性提供、アプリ利用、プレミアムガス支払など、本物のネットワーク参加を通じて全ユーザーが獲得するソウルバウンド(譲渡不可)トークンです。購入や譲渡はできません。
**ビルダーにとっての意味:**
- **トラストシグナル**:高Karmaユーザーは検証済みのアクティブ参加者であり、エアドロップ農家やシビルではない
- **機能ゲーティング**:ビルダーはプレミアム機能、優先アクセス、優遇レートなどをユーザーのKarmaティアに基づいてゲートできる
- **スパム耐性**:ネットワーク自体がRLNメカニズムでスパムをゲートしており、Karmaティアがガスレス取引枠を直接制御するため、高Karmaユーザーは本質的にスパムしにくい
- **コールドスタート問題なし**:アプリはエコシステム全体で構築されたレピュテーションの恩恵を受ける
詳細 → [Karmic Tokenomics](/overview/tokenomics/karmic-tokenomics)
## プライバシー重視のシビルグッズ
Status Networkは[Institute of Free TechnologyIFT](https://free.technology)の技術で構築されています。特に、ガスレス取引システムは[Vac](https://vac.dev)(IFTの研究部門)が開発したゼロ知識スパム防止メカニズムである[RLNRate Limiting Nullifiers](https://vac.dev/rln)を使用しています。
私たちは、デジタル時代の市民的自由を守る公共財を構築するというIFTの技術ビジョンに沿っています。Status Networkはガスレス性を活かしたプライバシー重視モジュールを追加していきます。
<!-- 詳細 → [Status Networkとプライバシー](/overview/general-info/privacy) -->
## 完全なEVM等価性
Status Networkは[Linea zkEVM](https://linea.build)スタック上に構築されています。つまりビルダーは以下が可能です:
- 既存のSolidityコントラクトを修正なしでデプロイ
- Hardhat、Foundry、ethers.js、viemなどの標準イーサリアムツールを使用
- 標準JSON-RPCメソッドを使用(ガス料金関連の一部メソッドを除く。詳細は[JSON-RPC API](/tools/rpc/json-rpc)を参照)
- Lineaのロールアップアーキテクチャから継承したゼロ知識証明ベースのセキュリティ
カスタムVMなし。非標準オペコードなし。コントラクトやバックエンドの書き直しなし。
@@ -9,9 +9,9 @@ keywords: [Status Network, プリ・デポジット, キャンペーン, ボー
[Aragon](https://www.aragon.org/)と協力して、Status Networkユーザー向けのプリ・デポジットキャンペーンを実施しています。
このページでは、キャンペーンのすべての重要なコントラクトアドレスを一覧表示します。
:::note
::::note
ボールトのトークンに応じて、EthereumメインネットまたはLineaメインネットにデプロイされます
:::
::::
## ボールト
- **SNT Vault**
@@ -9,9 +9,11 @@ keywords: [Status Network, ガスレストランザクション, Linea, RLN, Rat
Status Networkは大規模なガスレストランザクションの導入を目指しています。このガスレスアプローチの主要コンポーネントは、VacのRate Limiting Nullifierで、従来のガス手数料を必要とせずにトランザクション速度制限を可能にします。この文書では、ガスレストランザクションを安全に有効にするために必要なアーキテクチャと統合要素について説明します。
これらのガスレストランザクションの実装コードは、[Status Networkモノレポ](https://github.com/status-im/status-network-monorepo)で利用可能です。
ガスレストランザクションの実装コードは、[Status Networkモノレポ](https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components)で利用可能です。
### 1.2 RLN
ガスレスの運用レベルの実装についての詳細は、[Karma統合ガイド](/build-for-karma/guides)を参照してください。
## RLN
RLNは、違反が発生しない限りユーザーのプライバシーを損なうことなくスパムを防ぐように設計されたゼロ知識システムです。ZKPとShamirの秘密分散を通じて実行される暗号化速度制限で従来のガス手数料を置き換えます。
@@ -21,7 +23,7 @@ RLNの特徴:
- **Shamirの秘密分散とNullifier** ユーザーはトランザクションの一意のnullifierを生成するために使用される秘密鍵を保持します。ユーザーがエポック(ブロックやタイムスタンプなど)内でトランザクション制限を超えると、秘密鍵が回復可能になり、露出します。
- **スパム検出:** 制限を超えるユーザーは効果的に自分の秘密を明かすことになり、拒否リストへの追加、将来の高いガス費用、または潜在的なトークンスラッシングなどのペナルティを受けます。
### 1.3. RLNメンバーシップ管理
### RLNメンバーシップ管理
RLNは大規模なメンバーシップ証明を効率的に処理するためにスパースマークルツリーを使用します。ベンチマーク研究により、100万アカウントをサポートする高さ20のツリーが証明生成と検証に最適なパフォーマンスを提供することが判明しました。100万アカウントを超えるスケーラビリティのために、レジストリと共に複数のSMTを使用してユーザーを適切なツリーに誘導できます。
@@ -34,20 +36,28 @@ graph TD
B -->|ソウルバウンドトークン| C{ティア割り当て}
subgraph "ティア制限"
D[Basic]
E[Active]
F[Regular]
G[Power User]
H[High-Throughput]
I[S-Tier]
T1[Entry]
T2[Newbie]
T3[Basic]
T4[Active]
T5[Regular]
T6[Power User]
T7[Pro User]
T8[High-Throughput]
T9[S-Tier]
T10[Legendary]
end
C --> D
C --> E
C --> F
C --> G
C --> H
C --> I
C --> T1
C --> T2
C --> T3
C --> T4
C --> T5
C --> T6
C --> T7
C --> T8
C --> T9
C --> T10
%% RLNフロー
A -->|ガスレスTx送信| J[RPCノード]
@@ -96,15 +106,15 @@ graph TD
class A wallet
class B,L karma
class C tier
class D,E,F,G,H,I tierNode
class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode
class J,K,K1,K2,K3,M,N,O rln
class P,Q,R,S,T,U,V,W sequencer
class X,Y,Z,AA gas
```
## 3. システムコンポーネント
## システムコンポーネント
### 3.1 Prover
### Prover
Proverは3つのサービスで構成されるシステムです:
@@ -114,7 +124,7 @@ Proverは3つのサービスで構成されるシステムです:
これらのサービスは安全な認証情報管理、証明生成、トランザクション追跡を保証し、gRPCがSequencerとの低遅延通信を可能にします。
### 3.2 RLN Verifier
### RLN Verifier
RLN Verifierはsequencer内のbesuプラグインで、Java Native Interfaceを介してRLNのZerokit Rustライブラリを活用します。
Verifierは:
@@ -125,7 +135,7 @@ Verifierは:
検証に失敗したトランザクションは拒否され、ユーザーは一時的に拒否リストに追加される場合があります。
### 3.3 拒否リスト
### 拒否リスト
拒否リストはクォータを超過したりスパムに関与したりするユーザーを一時的に制限します:
@@ -133,10 +143,16 @@ Verifierは:
- ユーザーはプレミアムガス手数料を支払うことで制限を回避できます
- プレミアム手数料を支払うとユーザーがリストから削除され、追加のKarmaを獲得します
### 3.4 `linea_estimateGas` RPC修正
## `linea_estimateGas` RPC修正
linea_estimateGasメソッドは拒否リストのユーザーを考慮するようにカスタマイズされています
Status Networkは、ベースのLinea `linea_estimateGas`をKarma対応の動作で拡張しており、返される**手数料フィールド**は送信者アドレス`from`のKarma残高に依存する場合があります
`gasLimit`の計算は、ベースのLinea実装(内部的に標準の`eth_estimateGas`ロジックを使用)から変更されていません。
- ユーザーの拒否リストステータスをチェックします
- 必要に応じてプレミアムガス倍率を追加します
- ユーザーに透明性と正確なガス推定を提供します
具体的には、Status Networkの`linea_estimateGas`は:
- **拒否リストプレミアムの適用**: 送信者が拒否リストに掲載されている場合、ノードは通常の手数料見積もりを計算し、**手数料フィールド**にプレミアム倍率を適用します
- **対象ユーザーへのガスレス見積もりの返却**: 送信者に利用可能なKarmaクォータがある場合、メソッドはゼロの`baseFeePerGas``priorityFeePerGas`を返します。
上記のロジックは、[Status Networkモノレポのこのセクション](https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218)でオープンソース化されている修正版`LineaEstimateGas`実装に含まれています。
Karma対応の手数料見積もり動作と`linea_estimateGas`の詳細については、[JSON-RPC API](/tools/rpc/json-rpc)を参照してください。
@@ -18,4 +18,4 @@
- ネットワークへのdAppsの接続
- スマートコントラクトの検証
ウォレットへのネットワークの追加方法については、[Status Network追加ガイド](./add-status-network.md)をご参照ください。
ウォレットへのネットワークの追加方法については、[Status Network追加ガイド](/overview/general-info/add-status-network)をご参照ください。
@@ -0,0 +1 @@
# Status Networkとプライバシーの関係
@@ -3,7 +3,7 @@ id: index
title: Status Networkへようこそ
description: Status Networkは、シームレスで手数料無料の分散型アプリケーションを実現するガスレスなレイヤー2ブロックチェーンネットワークです。簡単なウォレット設定、フォーセット、デプロイメントツールで開発を始めましょう。
keywords: [Status Network, レイヤー2, ガスレスブロックチェーン, イーサリアムスケーリング, L2, バリディウム, web3開発, dapp開発, ブロックチェーン開発]
slug: /
slug: /overview
sidebar_position: 1
---
@@ -41,16 +41,16 @@ Status NetworkはStatus Wallet、Keycard、Waku、Codexなど、[IFT](https://fr
説明部分をスキップして直接開発を始めたいですか?以下が始め方です:
1. [Status NetworkをウォレットへAdd](/general-info/add-status-network)
2. [テストネットETHを入手](/tools/testnet-faucets)
3. [アセットをブリッジ](/general-info/bridge/bridging-testnet)
4. [最初のコントラクトをデプロイ](/tutorials/deploying-contracts/using-remix)
1. [Status NetworkをウォレットへAdd](/overview/general-info/add-status-network)
2. [テストネットETHを入手](/tools/core-infrastructure/testnet-faucets)
3. [アセットをブリッジ](/overview/general-info/bridge/bridging-testnet)
4. [最初のコントラクトをデプロイ](/build-for-karma/deploying-contracts/using-remix)
## サポート&リソース
コミュニティに参加し、必要なリソースにアクセスしましょう:
- [Telegramビルダーズコミュニティ](https://t.me/statusl2)に参加
- [ネットワーク詳細](/general-info/network-details)を確認
- [コントラクトアドレス](/general-info/contract-addresses/testnet-contracts)を閲覧
- [ネットワーク詳細](/overview/general-info/network-details)を確認
- [コントラクトアドレス](/overview/general-info/contract-addresses/testnet-contracts)を閲覧
素晴らしいものを作る準備はできていますか?今すぐフリーネットワークでの旅を始めましょう!
@@ -10,7 +10,7 @@
1. **Status NetworkテストネットをMetaMaskに追加**
MetaMaskにStatus Networkテストネットを追加する方法については、[Status Network追加ガイド](/general-info/add-status-network)の手順に従ってください。
MetaMaskにStatus Networkテストネットを追加する方法については、[Status Network追加ガイド](/overview/general-info/add-status-network)の手順に従ってください。
2. **テストETHを入手**
@@ -102,8 +102,8 @@ contract SimpleStorage {
- **サポートを受ける**
- サポートが必要な場合は[Telegramコミュニティ](https://t.me/statusl2)に参加
- 詳細については[ネットワークの詳細](/general-info/network-details)をチェック
- Status Networkへの[トークンのブリッジ](/general-info/bridge/bridging-testnet)について学ぶ
- 詳細については[ネットワークの詳細](/overview/general-info/network-details)をチェック
- Status Networkへの[トークンのブリッジ](/overview/general-info/bridge/bridging-testnet)について学ぶ
## まとめ
@@ -114,5 +114,5 @@ contract SimpleStorage {
- 数値の保存と取得によってデプロイしたコントラクトと対話
より高度な開発については、以下を使用したデプロイのガイドをチェックしてください:
- [Hardhat](/tutorials/deploying-contracts/using-hardhat)
- [Foundry](/tutorials/deploying-contracts/using-foundry)
- [Hardhat](/build-for-karma/deploying-contracts/using-hardhat)
- [Foundry](/build-for-karma/deploying-contracts/using-foundry)
@@ -22,4 +22,4 @@
- **Telegramコミュニティ**: [t.me/statusl2](https://t.me/statusl2)
- **X/twitter**: [x.com/statusL2](https://x.com/statusL2)
ウォレットへのネットワークの追加方法については、[ネットワーク追加ガイド](/general-info/add-status-network)をご参照ください。
ウォレットへのネットワークの追加方法については、[ネットワーク追加ガイド](/overview/general-info/add-status-network)をご参照ください。
@@ -15,4 +15,3 @@
- **将来のネイティブアプリ**: ネットワークは後に、レンディングマーケット、NFTマーケットプレイス、トークンローンチパッドなどの追加の収益源を導入し、それぞれが生成された手数料の一部をL2の運営に還元します。
このモデルにより、Status Networkは無料取引を提供しながら、経済的な持続可能性を確保します。TVLとそれに関連するネイティブ収益、および取引量を活用することで、Status Networkはユーザー、流動性提供者、開発者間のインセンティブを調整し、インフレ的なトークン発行に依存しない自己持続的なエコシステムを作り出します。
@@ -44,4 +44,4 @@
4. より高いネイティブ収益と手数料が、ユーザーが追加の利回り生成資産をブリッジすることでより多くのTVLを引き付けます。
TVLと採用が成長するにつれて、資金調達の機会も増加し、ネットワークの持続可能性を強化します。
TVLと採用が成長するにつれて、資金調達の機会も増加し、ネットワークの持続可能性を強化します。
@@ -34,7 +34,7 @@ SNT、LINEA、ETHボールトは、[Aragon](https://aragon.org/)がStatus Networ
### デプロイ済みコントラクト
アドレスとネットワークの完全なリストは、[事前預入ボールトコントラクト](../general-info/contract-addresses/pre-deposit)を参照してください。
アドレスとネットワークの完全なリストは、[事前預入ボールトコントラクト](/overview/general-info/contract-addresses/pre-deposit)を参照してください。
## Generic Protocol ボールト (GUSD)
@@ -50,9 +50,9 @@ GUSDボールトは、[Steakhouse Financial](https://steakhouse.financial/)と[M
生成された利回りの一部は、メインネットローンチ時にStatus Networkのネイティブファンディングプールに充当されます。
:::note
::::note
GUSDボールトは受領トークンを発行**しません**。預入記録はGeneric Protocolのコントラクトに記録されます。[Hub](https://hub.status.network/pre-deposits)でウォレットを接続するか、オンチェーンで直接確認できます。
:::
::::
### DepositorHelper コントラクト
@@ -78,7 +78,7 @@ Generic Protocolの構造(GUSDトークノミクス、ブリッジングイン
事前預入者は以下を獲得します:
- **Karma**:譲渡不可のガバナンストークン;ガスレススループットと投票権を付与(詳細は[Karmicトークノミクス](./karmic-tokenomics)を参照)。
- **Karma**:譲渡不可のガバナンストークン;ガスレススループットと投票権を付与(詳細は[Karmicトークノミクス](/overview/tokenomics/karmic-tokenomics)を参照)。
- **流動性インセンティブ**:ボールト全体に1,500万SNTと2,000万LINEAトークンを配布。
- **ステーブルコイン預入者向けGeneric Protocolポイント**Generic ProtocolがStatus Networkメインネットにローンチした際に使用可能なポイント。
- **ネイティブアプリポイント**:ネイティブアプリがトークノミクスを公開次第確定予定。
@@ -114,8 +114,8 @@ Generic Protocolの構造(GUSDトークノミクス、ブリッジングイン
## 関連資料
- [事前預入ボールトコントラクト](../general-info/contract-addresses/pre-deposit) — デプロイ済みアドレス情報
- [Karmicトークノミクス](./karmic-tokenomics) — Karmaの獲得方法と使用方法
- [経済モデル](./economic-model) — Status Networkの持続可能な収益モデル
- [事前預入ボールトコントラクト](/overview/general-info/contract-addresses/pre-deposit) — デプロイ済みアドレス情報
- [Karmicトークノミクス](/overview/tokenomics/karmic-tokenomics) — Karmaの獲得方法と使用方法
- [経済モデル](/overview/tokenomics/economic-model) — Status Networkの持続可能な収益モデル
- [Aragonドキュメント](https://docs.aragon.org/)
- [Generic Protocolドキュメント](https://docs.generic.money/)
@@ -18,4 +18,4 @@ Status Networkの最も重要なコンポーネントの1つは、ネットワ
- **ビルダーとネットワークの成長の連携**: ネットワークの利用と採用に積極的に貢献する開発者は、カルマの形でより多くの投票力を受け取り、自分たちに投票することができ、価値のあるアプリケーションを作成するインセンティブを強化します。
このメカニズムにより、ビルダーは継続的で非搾取的な資本源を確保でき、成功するアプリケーションの作成に集中することができます。
このメカニズムにより、ビルダーは継続的で非搾取的な資本源を確保でき、成功するアプリケーションの作成に集中することができます。
@@ -28,4 +28,4 @@ Status NetworkテストネットでのSNTステーキング契約の展開が近
- **カルマの獲得**: ステーカーはカルマを蓄積し、これによりガバナンス力とガスレス取引へのアクセスが付与されます。
- **より高い無料取引枠**: より多くのカルマを持つユーザーは、より大きなガスレス取引制限を享受できます。
- **強化されたガバナンスの影響力**: カルマを蓄積することで、SNTステーカーは公的資金の配分、流動性インセンティブ付与、ネットワークポリシーの決定において重要な役割を果たすことができます。
- **より高い評価**: SNTをステーキングすることで、保有者はエコシステムとの連携を示し、カルマの形で評価スコアを示すことができます。エコシステム内のアプリは、高い評価を持つユーザーを引き付ける強いインセンティブを持っています。
- **より高い評価**: SNTをステーキングすることで、保有者はエコシステムとの連携を示し、カルマの形で評価スコアを示すことができます。エコシステム内のアプリは、高い評価を持つユーザーを引き付ける強いインセンティブを持っています。
@@ -1,35 +0,0 @@
# Status Networkテストネットエクスプローラー
Status Networkブロックエクスプローラーは[sepoliascan.status.network](https://sepoliascan.status.network)で利用できます。
### 機能
- トランザクションの詳細とステータスの確認
- トークンの転送と残高の追跡
- スマートコントラクトのソースコード検証
- ガス価格とネットワークアクティビティの監視
- 検証済みスマートコントラクトの表示と対話
- 任意のアドレスのトークン保有状況の追跡
## Sepoliaエクスプローラー(レイヤー1)
Sepolia(レイヤー1)上のトランザクションを追跡するには、[Sepolia Etherscan](https://sepolia.etherscan.io)を使用します。
これは特に以下の用途に便利です:
- L1からL2へのブリッジトランザクションの監視
- トークンの入出金の追跡
- L1コントラクトの対話の確認
## コントラクト検証
Status Networkエクスプローラーでスマートコントラクトを検証するには:
1. [コントラクト検証](https://sepoliascan.status.network/contract-verification)に移動
2. コントラクトアドレスを入力
3. ソースコードをアップロードしコンパイル詳細を提供
4. 検証のために送信
検証が完了すると、コントラクトのソースコードが公開され、ユーザーはエクスプローラーを通じて直接対話できるようになります。
## API アクセス
Status Networkエクスプローラーは開発者向けにAPIエンドポイントを提供しています。APIのドキュメントは近日公開予定です。
@@ -1,45 +0,0 @@
# Status Networkテストネットブリッジ
Status Networkテストネットブリッジを使用すると、Sepolia(レイヤー1)とStatus Networkテストネット(レイヤー2)間でトークンを転送できます。ブリッジインターフェースは[bridge.status.network](https://bridge.status.network)で利用できます。
## 概要
ブリッジは以下を可能にする重要なインフラストラクチャコンポーネントとして機能します:
- SepoliaからStatus Networkテストネットへのトークン転送
- Status NetworkテストネットからSepoliaへのトークン引き出し
- L1とL2間のメッセージ受け渡し
## ブリッジコントラクト
### レイヤー1Sepolia
- **トークンブリッジ**: [`0x01b44C5Ea321f921D93476cf54Aa8460db17a548`](https://sepolia.etherscan.io/address/0x01b44C5Ea321f921D93476cf54Aa8460db17a548)
### レイヤー2Status Network
- **トークンブリッジ**: [`0xbC7f9571152a8e21942b2aEa4831a27f1149af19`](https://sepoliascan.status.network/address/0xbC7f9571152a8e21942b2aEa4831a27f1149af19)
## 機能
- **トークンブリッジング**: ネットワーク間でERC-20トークンを転送
- **ETHブリッジング**: SepoliaとStatus Network間でETHをブリッジ
- **トランザクション追跡**: ブリッジトランザクションのステータスを監視
- **ガス見積もり**: ブリッジ前に推定ガスコストを確認
## サポートされているトークン
サポートされているトークンとそのコントラクトアドレスの最新リストについては、[トークンリストリポジトリ](https://github.com/status-im/status-network-token-list)をご参照ください。
## ブリッジの使用
ブリッジの使用方法の詳細な手順や重要なセキュリティ上の考慮事項については、[ブリッジングガイド](../general-info/bridge/bridging-testnet.md)をご参照ください。
## ブリッジトランザクションの監視
以下を使用してブリッジトランザクションを監視できます:
- L2トランザクションには[Status Networkエクスプローラー](https://sepoliascan.status.network)
- L1トランザクションには[Sepolia Etherscan](https://sepolia.etherscan.io)
## サポート
ブリッジ使用中に問題が発生した場合:
- 一般的な解決策については[ブリッジングガイド](../general-info/bridge/bridging-testnet.md)をチェック
- サポートについては[Telegramコミュニティ](https://t.me/statusl2)に参加
@@ -0,0 +1,25 @@
---
title: ブロックエクスプローラー
description: トランザクションの確認、コントラクトの検証、ネットワーク活動のモニタリングのための Status Network ブロックエクスプローラー。
keywords: [ブロックエクスプローラー, トランザクション追跡, スマートコントラクト検証]
---
# ブロックエクスプローラー
## Status Network メインネット
*近日公開予定。*
## Status Network テストネット (Sepolia)
| エクスプローラー | URL | 機能 |
|----------|-----|----------|
| Sepoliascan | [sepoliascan.status.network](https://sepoliascan.status.network) | トランザクション検索、スマートコントラクトの検証と対話、残高追跡 |
コントラクト検証については、Sepoliascan の[コントラクト検証](https://sepoliascan.status.network/contract-verification)ページをご覧ください。
Sepolia での L1 活動は [Sepolia Etherscan](https://sepolia.etherscan.io) で追跡できます。
## Status Network テストネット (Hoodi)
*近日公開予定。*
@@ -0,0 +1,44 @@
---
title: Status Network ブリッジ
description: Sepolia と Status Network テストネット間のトークン転送のための Status Network ブリッジ使用ガイド。
keywords: [Status Network ブリッジ, トークンブリッジ, クロスチェーン転送, L1 L2 ブリッジ, Sepolia ブリッジ]
---
# Status Network テストネットブリッジ
Status Network テストネットブリッジを使用すると、Sepolia(レイヤー1)と Status Network テストネット(レイヤー2)間でトークンを転送しメッセージを受け渡しできます。ブリッジインターフェースは [bridge.status.network](https://bridge.status.network) で利用できます。
## ブリッジコントラクト
### レイヤー1Sepolia
- **トークンブリッジ**: [`0x01b44C5Ea321f921D93476cf54Aa8460db17a548`](https://sepolia.etherscan.io/address/0x01b44C5Ea321f921D93476cf54Aa8460db17a548)
### レイヤー2Status Network
- **トークンブリッジ**: [`0xbC7f9571152a8e21942b2aEa4831a27f1149af19`](https://sepoliascan.status.network/address/0xbC7f9571152a8e21942b2aEa4831a27f1149af19)
## 機能
- **トークンブリッジング**: ネットワーク間で ERC-20 トークンを転送
- **ETH ブリッジング**: Sepolia と Status Network 間で ETH をブリッジ
- **トランザクション追跡**: ブリッジトランザクションのステータスを監視
- **ガス見積もり**: ブリッジ前に推定ガスコストを確認
## サポートされているトークン
サポートされているトークンとそのコントラクトアドレスの最新リストについては、[トークンリストリポジトリ](https://github.com/status-im/status-network-token-list)をご参照ください。
## ブリッジの使用
ブリッジの使用方法の詳細な手順や重要なセキュリティ上の考慮事項については、[ブリッジングガイド](/overview/general-info/bridge/bridging-testnet)をご参照ください。
## ブリッジトランザクションの監視
以下を使用してブリッジトランザクションを監視できます:
- L2 トランザクションには [Status Network エクスプローラー](https://sepoliascan.status.network)
- L1 トランザクションには [Sepolia Etherscan](https://sepolia.etherscan.io)
## サポート
ブリッジ使用中に問題が発生した場合:
- 一般的な解決策については[ブリッジングガイド](/overview/general-info/bridge/bridging-testnet)をチェック
- サポートについては [Telegram コミュニティ](https://t.me/statusl2)に参加
@@ -1,3 +1,7 @@
---
slug: /tools/core-infrastructure/rpc-endpoints
---
# RPCエンドポイント
Status Networkは、ネットワークとの対話を可能にする公開RPCRemote Procedure Call)エンドポイントを提供しています。
@@ -11,7 +15,7 @@ https://public.sepolia.rpc.status.network
## RPCの使用
### MetaMaskへの追加
このRPCを使用してStatus Networkをウォレットに追加する方法については、[ネットワーク追加ガイド](../general-info/add-status-network.md)をご参照ください。
このRPCを使用してStatus Networkをウォレットに追加する方法については、[ネットワーク追加ガイド](/overview/general-info/add-status-network)をご参照ください。
### Web3ライブラリの設定
@@ -35,7 +35,7 @@ Sepolia ETH を入手したら、[Status Network ブリッジ](https://bridge.st
## Status Network STT フォーセット
Status Test Token (STT) は SNT の 테스트넷 에 상당하는 것입니다. Status Network テストネットのエコシステム内でテストアセットとして使用されます。
Status Test Token (STT) は SNT のテストネット版です。Status Network テストネットのエコシステム内でテストアセットとして使用されます。
### 詳細
@@ -0,0 +1,33 @@
---
id: tools-index
title: ツールとインフラストラクチャ
description: Status Network で利用可能な開発者ツール、インフラサービス、統合 — RPC エンドポイント、ブリッジ、フォーセット、エクスプローラー、パートナー統合。
keywords: [Status Network, 開発者ツール, RPC, ブリッジ, フォーセット, ブロックエクスプローラー, インフラストラクチャ]
slug: /tools
sidebar_position: 1
---
Status Network で利用可能な開発者ツール、インフラサービス、統合の完全なリファレンスです。
## コアインフラストラクチャ
Status Network でのビルドとテストに必要な基本サービス:
| ツール | 説明 | リンク |
|---|---|---|
| **RPC エンドポイント** | パブリック JSON-RPC および WebSocket アクセス | [RPC →](/tools/core-infrastructure/rpc-endpoints) |
| **ブリッジ** | Ethereum Sepolia と Status Network 間のアセット転送 | [ブリッジ →](/tools/core-infrastructure/bridge) |
| **テストネットフォーセット** | 開発用テストネットアセットの取得 | [フォーセット →](/tools/core-infrastructure/testnet-faucets) |
| **ブロックエクスプローラー** | トランザクション、コントラクト、ネットワーク活動の閲覧 | [エクスプローラー →](/tools/core-infrastructure/block-explorers) |
## インフラストラクチャパートナー
Status Network はインデクシング、オラクル、データプロバイダー、ウォレット、セキュリティなどの分野でインフラパートナーをオンボーディングしています。[インフラストラクチャパートナー](/tools/infrastructure)ページで全カテゴリと使用方法をご確認ください。
パートナーになりませんか?[こちらから申請](https://statusnetwork.typeform.com/partner)。
## クイックリンク
- [ネットワーク詳細](/overview/general-info/network-details) — Chain ID、RPC URL、完全なネットワーク構成
- [ウォレットに Status Network を追加](/overview/general-info/add-status-network)
- [ブリッジングガイド](/overview/general-info/bridge/bridging-testnet) — ステップバイステップのブリッジ手順
@@ -0,0 +1,32 @@
---
title: インフラストラクチャパートナー
description: Status Network で利用可能なインフラパートナーとサードパーティ統合 — RPC プロバイダー、オラクル、インデクサー、アカウントアブストラクション、開発ツールなど。
keywords: [Status Network, インフラストラクチャ, パートナー, オラクル, インデクシング, RPC, アカウントアブストラクション, 開発ツール, クロスチェーン, オンランプ]
sidebar_position: 6
---
# インフラストラクチャパートナー
:::note 近日公開予定
Status Network は以下のカテゴリのインフラパートナーを積極的にオンボーディングしています。統合が稼働次第、このページを更新します。
:::
## パートナーカテゴリ
| カテゴリ | 説明 |
|---|---|
| **RPC プロバイダー** | 信頼性が高く低レイテンシーなノードアクセスのための専用 RPC インフラ |
| **オラクルと VRF** | 価格フィード、RWA データ、オンチェーンランダム性のための VRF、DEX データフィード |
| **Safe と多重署名** | 財務管理とガバナンスのための多重署名ウォレット |
| **インデクサー** | スマートコントラクトイベントとオンチェーンデータのための分散型・中央集権型インデクシング |
| **アカウントアブストラクション** | スマートアカウント、鍵管理、シームレスなユーザーオンボーディング |
| **開発ツール** | SDK、デプロイツール、Status Network ソーシャルログイン |
| **クロスチェーン** | クロスチェーンスワップとブリッジングソリューション |
| **オンランプアグリゲーター** | 法定通貨から暗号通貨へのオンランプ・オフランプソリューション |
## パートナーになる
インフラサービスを提供し、Status Network と統合したい場合:
- [パートナー申請](https://statusnetwork.typeform.com/partner)
- [Telegram ビルダーコミュニティに参加](https://t.me/statusl2)
@@ -0,0 +1,57 @@
---
title: JSON-RPC API
description: ビルダー向けStatus Network JSON-RPC APIリファレンス。
keywords:
[
Status Network,
JSON-RPC,
Linea,
EIP-1559,
eth_estimateGas,
linea_estimateGas,
Karma,
gasless,
]
---
Status NetworkはLinea zkEVMをベースとしており、**ほとんどのJSON-RPCメソッドは標準的なEVMノードと同じ動作をします**。
サポートされているメソッドとその標準セマンティクスの一覧については、以下の公式ドキュメントを参照してください:
- **[イーサリアムJSON-RPC API](https://ethereum.github.io/execution-apis/api-documented/)** — 標準イーサリアムRPCメソッド
- **[Linea JSON-RPC APIリファレンス](https://docs.linea.build/api/reference)** — `linea_estimateGas`を含むLinea固有のメソッド
## Status Networkの拡張
Status Networkは標準のLinea JSON-RPCにKarma対応の手数料推定を追加しています:
### `linea_estimateGas`
Lineaでは、[`linea_estimateGas`](https://docs.linea.build/api/reference/linea-estimategas)がガス推定の推奨メソッドであり、1回の呼び出しで`gasLimit``baseFeePerGas``priorityFeePerGas`を返します。
Status Networkは`linea_estimateGas`にKarma対応の動作を追加しています:
- **ガスレスユーザー**: 利用可能なKarmaクォータを持つ対象ユーザーに対して、`baseFeePerGas``priorityFeePerGas`をゼロで返します
- **拒否リストユーザー**: 拒否リストに載っているユーザーの手数料フィールドにプレミアム乗数を適用します
### Status Network RPCの違い
ベースのLineaでも、`linea_estimateGas`はすでに推奨メソッドです。L1検証コストとデータ圧縮を考慮した手数料フィールドを返すためで、これは`eth_estimateGas`やその他の`eth_`名前空間の呼び出しでは提供されない情報です。
Status Networkのフォークは`linea_estimateGas`をさらに拡張してKarma対応にしており、その他のJSON-RPCメソッドはすべて標準セマンティクスを維持しています。
つまり、`eth_`メソッドを使用した従来の手数料フロー(例: `eth_gasPrice``eth_maxPriorityFeePerGas``eth_feeHistory`)は**不正確な**手数料提案につながる可能性があります。LineaのL2固有の価格設定とStatus NetworkのKarma調整の両方が欠落するためです。
Status Networkでは、`linea_estimateGas``gasLimit``baseFeePerGas``priorityFeePerGas`の唯一の信頼できるソースとして使用してください。
ベースLineaの動作については、[Lineaのガス手数料ガイド](https://docs.linea.build/network/how-to/gas-fees)と[Lineaの`linea_estimateGas`リファレンス](https://docs.linea.build/api/reference/linea-estimategas)を参照してください。
:::info
コード例、移行手順、よくある落とし穴を含む詳細な統合ガイドは、[Karma の使い方](/build-for-karma/guides)ガイドを参照してください。
:::
### その他のリソース
- [Lineaのガス手数料ガイド](https://docs.linea.build/network/how-to/gas-fees)
- [Lineaの`linea_estimateGas`リファレンス](https://docs.linea.build/api/reference/linea-estimategas)
- [カルミックトークノミクス](/overview/tokenomics/karmic-tokenomics) — Karmaがガス手数料に与える影響
- [ガスレストランザクション](/overview/general-info/gasless-transactions) — RLNベースのガスレスシステムの技術的詳細
@@ -4,8 +4,6 @@ description: 公式RPCツールを使用してStatus Network用の独自RPC
keywords: [RPCノード, Status Network RPC, ブロックチェーンノード, WebSocket, wss, セルフホストRPC, ネットワークインフラ, Status L2 RPCツール]
---
# 独自のRPCノードの運用
このチュートリアルでは、Status Network用の独自のRemote Procedure Call (RPC)ノードをセットアップして運用するプロセスをガイドします。独自のRPCノードを運用することで、Status Networkとのやり取りをより強力に制御し、プライバシーを強化し、サードパーティサービスへの依存を減らすことができます。
## はじめに
@@ -13,14 +11,15 @@ keywords: [RPCノード, Status Network RPC, ブロックチェーンノード,
[Status Network RPCツールリポジトリ](https://github.com/status-im/status-l2-rpc-tools)は、独自のRPCノードを運用するために必要なすべてのツール、ジェネシスファイル、セットアップスクリプトを提供します。
### 完全セットアップガイド
詳細なセットアップ手順、前提条件、システム要件、ステップバイステップのガイダンスについては、リポジトリ内の**[公式README](https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md)**を参照してください。
詳細なセットアップ手順、前提条件、システム要件、ステップバイステップのガイダンスについては、リポジトリ内の[**公式README**](https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md)を参照してください。
## ノードオプション
セットアップスクリプトは、選択可能な2つのノード実装を提供します:
- **Besuノード**: `http://localhost:8545`で実行
- **Gethノード**: `http://localhost:8445`で実行
- **Besuノード**: ポート `8545` で実行
- **Gethノード**: ポート `8445` で実行
必要に応じて、どちらか一方または両方を同時に実行できます。
@@ -55,6 +54,7 @@ keywords: [RPCノード, Status Network RPC, ブロックチェーンノード,
- **ルーティングルール**: それ以外のメソッドは Geth にルーティング
## ノードの検証
以下の例では、Besuを使用している場合は`<YOUR_CLIENT_PORT>``8545`に、Gethを使用している場合は`8445`に置き換えてください。
### 基本検証
@@ -88,6 +88,7 @@ curl -X POST \
```
最新で健全なノードは以下を示すはずです:
- `eth_blockNumber`が信頼できる参照(公開RPCやブロックエクスプローラーなど)と一致する
- `eth_syncing``false`を返す(完全に同期済み)
- `net_peerCount`が0より大きい(ピアに接続済み)
@@ -117,7 +118,6 @@ ws://localhost:8446 # Geth
{"jsonrpc":"2.0","method":"eth_unsubscribe","params":["0x..."],"id":1}
```
## 高度な機能
### バッチリクエスト
@@ -144,6 +144,7 @@ ws://localhost:8446 # Geth
### よくある問題
1. **ポートがすでに使用中**
```bash
# ポート8545Besu)または8445(Geth)を使用しているものを確認
lsof -i :8545
@@ -154,6 +155,7 @@ ws://localhost:8446 # Geth
```
2. **Dockerコンテナの問題**
```bash
# 実行中のコンテナを確認
docker ps
@@ -238,7 +240,7 @@ RPCノードのパフォーマンスを最適化するには:
問題が発生した場合:
- 最新の更新については[公式README](https://github.com/status-im/status-l2-rpc-tools/blob/master/README.md)を確認
- [ネットワーク詳細](/general-info/network-details)およびドキュメント全般を確認
- [ネットワーク詳細](/overview/general-info/network-details)およびドキュメント全般を確認
- サポートについては[Telegramコミュニティ](https://t.me/statusl2)に参加
## 追加リソース
+13 -5
View File
@@ -1,14 +1,22 @@
{
"title": {
"message": "Status Network Docs",
"message": "Status Network ドキュメント",
"description": "The title in the navbar"
},
"logo.alt": {
"message": "Status Network Logo",
"message": "Status Network ロゴ",
"description": "The alt text of navbar logo"
},
"item.label.Hub": {
"message": "Hub",
"description": "Navbar item with label Hub"
"item.label.Overview": {
"message": "概要",
"description": "Navbar item with label Overview"
},
"item.label.Build for Karma": {
"message": "Karma でビルド",
"description": "Navbar item with label Build for Karma"
},
"item.label.Tools": {
"message": "ツール",
"description": "Navbar item with label Tools"
}
}
+580
View File
@@ -436,5 +436,585 @@
"theme.tags.tagsPageTitle": {
"message": "태그",
"description": "The title of the tag list page"
},
"homepage.layout.title": {
"message": "Status Network 문서",
"description": "Homepage layout title"
},
"homepage.layout.description": {
"message": "Status Network 문서 — 조합 가능한 프라이버시와 내장형 스팸 방지 기능을 갖춘 완전한 가스리스 이더리움 L2, 인간과 봇 모두를 위해 설계되었습니다",
"description": "Homepage layout description"
},
"homepage.hero.subtitle": {
"message": "환영합니다",
"description": "Homepage hero subtitle"
},
"homepage.hero.title": {
"message": "Status Network 문서",
"description": "Homepage hero title"
},
"homepage.hero.description": {
"message": "조합 가능한 프라이버시와 내장형 스팸 방지 기능을 갖춘 완전한 가스리스 이더리움 L2, 인간과 봇 모두를 위해 설계되었습니다",
"description": "Homepage hero description"
},
"homepage.docs.sectionTitle": {
"message": "문서 탐색",
"description": "Homepage docs section title"
},
"homepage.docs.sectionSubtitle": {
"message": "지금 바로 스테이터스 네트워크에서 개발을 시작하세요",
"description": "Homepage docs section subtitle"
},
"homepage.docCards.overview.title": {
"message": "개요",
"description": "Homepage docs card title for Overview"
},
"homepage.docCards.overview.description": {
"message": "스테이터스 네트워크의 아키텍처, 가스리스 트랜잭션, 토큰이코노믹스, 지속 가능한 공공 자금 모델에 대해 알아보세요",
"description": "Homepage docs card description for Overview"
},
"homepage.docCards.overview.linkText": {
"message": "자세히 보기",
"description": "Homepage docs card link text for Overview"
},
"homepage.docCards.build.title": {
"message": "카르마를 위해 개발하기",
"description": "Homepage docs card title for Build for Karma"
},
"homepage.docCards.build.description": {
"message": "컨트랙트 배포, Karma 적용 및 가스리스 앱 구축을 위한 가이드, 튜토리얼, 레퍼런스",
"description": "Homepage docs card description for Build for Karma"
},
"homepage.docCards.build.linkText": {
"message": "자세히 보기",
"description": "Homepage docs card link text for Build for Karma"
},
"homepage.docCards.tools.title": {
"message": "도구",
"description": "Homepage docs card title for Tools"
},
"homepage.docCards.tools.description": {
"message": "RPC 엔드포인트, 브릿지, 테스트넷 파우셋, 블록 익스플로러, 인프라 파트너",
"description": "Homepage docs card description for Tools"
},
"homepage.docCards.tools.linkText": {
"message": "자세히 보기",
"description": "Homepage docs card link text for Tools"
},
"homepage.quickStart.title": {
"message": "빌드할 준비가 되셨나요?",
"description": "Homepage quick start title"
},
"homepage.quickStart.description": {
"message": "지갑을 설정하고 테스트넷 토큰을 받아 몇 분 만에 첫 번째 컨트랙트를 배포하세요",
"description": "Homepage quick start description"
},
"homepage.quickStart.button": {
"message": "빠른 시작",
"description": "Homepage quick start button label"
},
"homepage.community.sectionTitle": {
"message": "커뮤니티",
"description": "Homepage community section title"
},
"homepage.community.sectionSubtitle": {
"message": "스테이터스 네트워크 커뮤니티의 최신 소식을 확인하세요",
"description": "Homepage community section subtitle"
},
"homepage.community.telegram.title": {
"message": "Telegram 참여",
"description": "Homepage community card title for Telegram"
},
"homepage.community.telegram.description": {
"message": "다른 스테이터스 네트워크 빌더들과 교류하고 지원을 받으세요",
"description": "Homepage community card description for Telegram"
},
"homepage.community.github.title": {
"message": "GitHub 확인하기",
"description": "Homepage community card title for GitHub"
},
"homepage.community.github.description": {
"message": "소스 코드를 탐색하고 생태계에 기여하세요",
"description": "Homepage community card description for GitHub"
},
"homepage.community.official.title": {
"message": "공식 링크",
"description": "Homepage community card title for official links"
},
"homepage.community.official.description": {
"message": "웹사이트, 소셜 채널, 모든 공식 리소스를 한 곳에서 확인하세요",
"description": "Homepage community card description for official links"
},
"ideaCatalog.filter.category": {
"message": "카테고리",
"description": "Filter group label"
},
"ideaCatalog.filter.statusPrimitives": {
"message": "스테이터스 고유 기능",
"description": "Filter group label"
},
"ideaCatalog.filter.builderProfile": {
"message": "빌더 프로필",
"description": "Filter group label"
},
"ideaCatalog.filter.difficulty": {
"message": "난이도",
"description": "Filter group label"
},
"ideaCatalog.filter.fewerFilters": {
"message": "필터 접기",
"description": "Toggle button label"
},
"ideaCatalog.filter.moreFilters": {
"message": "필터 더보기",
"description": "Toggle button label"
},
"ideaCatalog.filter.domainExpertise": {
"message": "도메인 전문성",
"description": "Filter group label"
},
"ideaCatalog.filter.userSegment": {
"message": "사용자 계층",
"description": "Filter group label"
},
"ideaCatalog.filter.capitalRequirement": {
"message": "자본 요건",
"description": "Filter group label"
},
"ideaCatalog.status.showing": {
"message": "{totalCount}개 중 {visibleCount}개 표시",
"description": "Status text"
},
"ideaCatalog.status.clearAll": {
"message": "모두 지우기",
"description": "Clear all filters button"
},
"ideaCatalog.card.whyStatus": {
"message": "Why Status:",
"description": "Card detail label"
},
"ideaCatalog.card.mvpScope": {
"message": "MVP 범위:",
"description": "Card detail label"
},
"ideaCatalog.card.security": {
"message": "보안",
"description": "Card meta badge label"
},
"ideaCatalog.card.opsBurden": {
"message": "운영 부담",
"description": "Card meta badge label"
},
"ideaCatalog.empty.message": {
"message": "현재 필터에 맞는 아이디어가 없습니다.",
"description": "Empty state message"
},
"ideaCatalog.empty.clearAll": {
"message": "모든 필터 지우기",
"description": "Empty state clear button"
},
"ideaCatalog.securityCriticality.low": {
"message": "낮음",
"description": "Security criticality label"
},
"ideaCatalog.securityCriticality.medium": {
"message": "중간",
"description": "Security criticality label"
},
"ideaCatalog.securityCriticality.high": {
"message": "높음",
"description": "Security criticality label"
},
"ideaCatalog.securityCriticality.critical": {
"message": "중요",
"description": "Security criticality label"
},
"ideaCatalog.opsBurden.low": {
"message": "낮음",
"description": "Ops burden label"
},
"ideaCatalog.opsBurden.medium": {
"message": "중간",
"description": "Ops burden label"
},
"ideaCatalog.opsBurden.high": {
"message": "높음",
"description": "Ops burden label"
},
"ideaCatalog.opsBurden.veryHigh": {
"message": "매우 높음",
"description": "Ops burden label"
},
"ideaCatalog.category.reputation": {
"message": "평판",
"description": "Category label"
},
"ideaCatalog.category.privacy": {
"message": "프라이버시",
"description": "Category label"
},
"ideaCatalog.category.social": {
"message": "소셜",
"description": "Category label"
},
"ideaCatalog.category.games": {
"message": "게임",
"description": "Category label"
},
"ideaCatalog.category.defi": {
"message": "DeFi",
"description": "Category label"
},
"ideaCatalog.statusPrimitive.gasless": {
"message": "가스리스",
"description": "Status primitive label"
},
"ideaCatalog.statusPrimitive.reputation": {
"message": "평판",
"description": "Status primitive label"
},
"ideaCatalog.statusPrimitive.privacy": {
"message": "프라이버시",
"description": "Status primitive label"
},
"ideaCatalog.builderProfile.frontendDev": {
"message": "웹 / 앱 개발",
"description": "Builder profile label"
},
"ideaCatalog.builderProfile.contractDev": {
"message": "스마트 컨트랙트 개발",
"description": "Builder profile label"
},
"ideaCatalog.builderProfile.fullStack": {
"message": "풀스택",
"description": "Builder profile label"
},
"ideaCatalog.builderProfile.protocolDev": {
"message": "프로토콜 / 암호학",
"description": "Builder profile label"
},
"ideaCatalog.difficulty.lowMed": {
"message": "낮음-중간",
"description": "Difficulty label"
},
"ideaCatalog.difficulty.med": {
"message": "중간",
"description": "Difficulty label"
},
"ideaCatalog.difficulty.medHigh": {
"message": "중간-높음",
"description": "Difficulty label"
},
"ideaCatalog.difficulty.high": {
"message": "높음",
"description": "Difficulty label"
},
"ideaCatalog.userSegment.consumer": {
"message": "소비자",
"description": "User segment label"
},
"ideaCatalog.userSegment.communityCreator": {
"message": "커뮤니티/크리에이터",
"description": "User segment label"
},
"ideaCatalog.userSegment.daoOrgOps": {
"message": "DAO/조직 운영",
"description": "User segment label"
},
"ideaCatalog.userSegment.traderDefi": {
"message": "트레이더/DeFi",
"description": "User segment label"
},
"ideaCatalog.domainExpertise.communityDesign": {
"message": "커뮤니티 디자인",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.defiMechanisms": {
"message": "DeFi 메커니즘",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.privacy": {
"message": "프라이버시",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.paymentsFinops": {
"message": "결제/FinOps",
"description": "Domain expertise label"
},
"ideaCatalog.domainExpertise.consumerProduct": {
"message": "소비자 제품",
"description": "Domain expertise label"
},
"ideaCatalog.capitalReq.none": {
"message": "없음",
"description": "Capital requirement label"
},
"ideaCatalog.capitalReq.operatingTreasury": {
"message": "운영 자금",
"description": "Capital requirement label"
},
"ideaCatalog.capitalReq.seedLiquidity": {
"message": "시드 유동성",
"description": "Capital requirement label"
},
"ideaCatalog.capitalReq.deepLiquidity": {
"message": "깊은 유동성",
"description": "Capital requirement label"
},
"ideaCatalog.idea.karmaGatedAccess.title": {
"message": "카르마로 제한된 콘텐츠 피드",
"description": "Idea title"
},
"ideaCatalog.idea.karmaGatedAccess.what": {
"message": "크리에이터가 최소 카르마 등급을 충족하는 팔로워에게만 보이는 게시물을 발행하는 소셜 피드. 일종의 Substack + 온체인 평판",
"description": "Idea what"
},
"ideaCatalog.idea.karmaGatedAccess.whyStatus": {
"message": "카르마 등급이 온체인에서 해결되므로 신뢰 없이도 접근 제어가 가능합니다. 구독 결제, 플랫폼 제약 따위 없으며, 시빌 공격 저항적입니다",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaGatedAccess.mvp": {
"message": "공개된 + 제한된 피드, 티어 확인 미들웨어(온체인 가능), 카르마 등급별 청중 구성을 보여주는 크리에이터 대시보드.",
"description": "Idea mvp"
},
"ideaCatalog.idea.karmaLiquidityProtocol.title": {
"message": "카르마로 부스트된 수익 볼트",
"description": "Idea title"
},
"ideaCatalog.idea.karmaLiquidityProtocol.what": {
"message": "높은 카르마 등급 예치자의 APY가 인상되는 DeFi 금고. 초기 지지자와 적극적인 참여자들이 더 나은 수익을 얻을 수 있는 메커니즘",
"description": "Idea what"
},
"ideaCatalog.idea.karmaLiquidityProtocol.whyStatus": {
"message": "네이티브 평판 그래프로 금고가 토큰에 기반한 가중 투표나 오프체인 허용 목록과 같은 방식 대신 검증된 참여로 보상 가중치를 매길 수 있습니다.",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaLiquidityProtocol.mvp": {
"message": "단일 자산 금고에 두 개의 수익 티어, 예치 시 온체인 카르마 등급 확인, 티어별로 다른 유효 APY를 보여주는 대시보드.",
"description": "Idea mvp"
},
"ideaCatalog.idea.karmaIncentiveMarket.title": {
"message": "카르마 현상금 시장",
"description": "Idea title"
},
"ideaCatalog.idea.karmaIncentiveMarket.what": {
"message": "카르마 임계값 이상의 사용자만 작업을 청구할 수 있는 현상금 시장. 프로젝트 팀이 작업(버그 리포트, 번역, 온보딩 가이드)을 게시하고 검증된 기여자에게 보상금을 지급",
"description": "Idea what"
},
"ideaCatalog.idea.karmaIncentiveMarket.whyStatus": {
"message": "카르마 관문이 스팸 봇과 저품질 제출을 걸러내어, 현상금 발행자가 청구인이 네트워크에서 실제 실적이 있다는 확신을 갖게 합니다.",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaIncentiveMarket.mvp": {
"message": "현상금 목록 페이지, 카르마로 제한된 청구 플로우, 제출 검토 패널, 승인에 따른 온체인 지불.",
"description": "Idea mvp"
},
"ideaCatalog.idea.karmaDynamicPricing.title": {
"message": "카르마 등급제 NFT 마켓플레이스",
"description": "Idea title"
},
"ideaCatalog.idea.karmaDynamicPricing.what": {
"message": "구매자와 판매자의 카르마 등급에 따라 리스팅 수수료, 로열티, 얼리 액세스 기간이 조정되는 NFT 마켓플레이스. 신뢰받는 참여자가 자동으로 더 나은 조건을 받는 구조",
"description": "Idea what"
},
"ideaCatalog.idea.karmaDynamicPricing.whyStatus": {
"message": "결제 시 온체인 티어 검증으로 동적 가격이 적용됩니다. 쿠폰 코드 X, 백엔드 허용 목록 X.",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.karmaDynamicPricing.mvp": {
"message": "NFT 리스팅 + 구매 플로우, 티어별 수수료 일정, 결제 시 온체인 티어 체크, 구매자 티어별 매출을 보여주는 판매자 분석.",
"description": "Idea mvp"
},
"ideaCatalog.idea.stealthAddressPayments.title": {
"message": "스텔스 주소 결제",
"description": "Idea title"
},
"ideaCatalog.idea.stealthAddressPayments.what": {
"message": "지출 경로를 숨길 수 있는 일회용 수신 주소.",
"description": "Idea what"
},
"ideaCatalog.idea.stealthAddressPayments.whyStatus": {
"message": "프라이버시 프리미티브 + 마찰이 적은 트랜잭션 UX.",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.stealthAddressPayments.mvp": {
"message": "주소 생성, 수신 플로우, 비공개의 지출 플로우가 구현된 시스템",
"description": "Idea mvp"
},
"ideaCatalog.idea.privatePayroll.title": {
"message": "프라이빗 급여 및 저축",
"description": "Idea title"
},
"ideaCatalog.idea.privatePayroll.what": {
"message": "잔액과 수령인을 노출하지 않는 급여 및 저축 서비스",
"description": "Idea what"
},
"ideaCatalog.idea.privatePayroll.whyStatus": {
"message": "비공개적인 급여 지급과 저축을 요구하는 실질적인 수요에 미치지 못하는 현대의 블록체인들의 공개성",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.privatePayroll.mvp": {
"message": "고용주의 일괄 지급 + 수령인의 청구 + 차폐 금고 구조",
"description": "Idea mvp"
},
"ideaCatalog.idea.shieldedMicrotransactions.title": {
"message": "차폐 소액 결제 / 카드 레이어",
"description": "Idea title"
},
"ideaCatalog.idea.shieldedMicrotransactions.what": {
"message": "금액 및 참여자를 숨길 수 있는 소액 결제 및 구독 서비스",
"description": "Idea what"
},
"ideaCatalog.idea.shieldedMicrotransactions.whyStatus": {
"message": "가스리스 상호작용 덕분에 빈번한 결제가 가능해집니다",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.shieldedMicrotransactions.mvp": {
"message": "비공개 팁/구독 플로우와 반복 승인이 있는 시스템",
"description": "Idea mvp"
},
"ideaCatalog.idea.privateLending.title": {
"message": "비공개 대출 및 차입",
"description": "Idea title"
},
"ideaCatalog.idea.privateLending.what": {
"message": "공개적인 포지션 유출을 막는 차입/대출 플로우가 구현된 시스템",
"description": "Idea what"
},
"ideaCatalog.idea.privateLending.whyStatus": {
"message": "프라이버시 + 카르마 기반 신용이 기본적으로 탑재됨",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.privateLending.mvp": {
"message": "단일 담보 유형, 단일 차입 자산, 비공개적 헬스체크",
"description": "Idea mvp"
},
"ideaCatalog.idea.privateMultisig.title": {
"message": "프라이빗 다중서명",
"description": "Idea title"
},
"ideaCatalog.idea.privateMultisig.what": {
"message": "서명자, 임계값, 트랜잭션 등의 세부사항이 숨겨진 다중서명 기능",
"description": "Idea what"
},
"ideaCatalog.idea.privateMultisig.whyStatus": {
"message": "프라이버시에 민감한 조직도 온체인에서 운영할 수 있게 됩니다",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.privateMultisig.mvp": {
"message": "정책 설정 + 서명 플로우 + 선택적으로 공개가 가능한 실행 로그 구현",
"description": "Idea mvp"
},
"ideaCatalog.idea.socialMiniApp.title": {
"message": "가스리스 마이크로블로그 플랫폼",
"description": "Idea title"
},
"ideaCatalog.idea.socialMiniApp.what": {
"message": "Twitter 스타일 마이크로블로그로, 모든 게시·답글·좋아요가 온체인에서 작동하면서도 비용이 들지 않고, 카르마 배지로 신뢰할 수 있는 목소리들을 부각시킬 수 있습니다",
"description": "Idea what"
},
"ideaCatalog.idea.socialMiniApp.whyStatus": {
"message": "가스리스 트랜잭션으로 게시 당 액션 경제적이며, 카르마 배지가 임의의 블루체크 시스템을 실제 네트워크 참여로 얻은 평판으로 대체합니다",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.socialMiniApp.mvp": {
"message": "타임라인 피드, 게시/답글/좋아요 액션, 카르마 신뢰 배지가 있는 사용자 프로필, 기본 콘텐츠 관리 컨트롤 구현",
"description": "Idea mvp"
},
"ideaCatalog.idea.creatorEconomyToolkit.title": {
"message": "팬 패스 플랫폼",
"description": "Idea title"
},
"ideaCatalog.idea.creatorEconomyToolkit.what": {
"message": "크리에이터가 독점 콘텐츠, 그룹 채팅, 오프라인 행사 등의 접근을 제공하게 되는 무료 디지털 패스를 민팅하는 플랫폼. 팬은 가스비 없이 패스를 수집할 수 있습니다",
"description": "Idea what"
},
"ideaCatalog.idea.creatorEconomyToolkit.whyStatus": {
"message": "무료 민팅과 무료 청구로 커뮤니티 패스의 페이월 마찰이 제거되어, 크리에이터가 팬에게 가스 비용을 요구하지 않으면서 보다 쉽게 팬층을 키울 수 있습니다",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.creatorEconomyToolkit.mvp": {
"message": "패스 민팅이 있는 크리에이터 페이지, 팬 청구 플로우, 패스로 제한된 콘텐츠 섹션, 패스 검증을 통한 행사 체크인 기능 구현",
"description": "Idea mvp"
},
"ideaCatalog.idea.communityGovernance.title": {
"message": "DAO 제안 & 카르마 가중 투표 앱",
"description": "Idea title"
},
"ideaCatalog.idea.communityGovernance.what": {
"message": "커뮤니티 구성원이 제안을 제출하고 카르마 등급에 비례한 가중치로 투표하는 거버넌스 앱. 간단한 방식으로 적극 기여자가 수동 보유자보다 더 큰 목소리를 냅니다",
"description": "Idea what"
},
"ideaCatalog.idea.communityGovernance.whyStatus": {
"message": "카르마 가중 투표가 토큰 축적보다 실제 참여를 보상하고, 가스리스 투표가 대부분 DAO에서 투표율을 억누르는 비용 장벽을 제거합니다.",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.communityGovernance.mvp": {
"message": "제안 제출 폼, 온체인 집계가 있는 카르마 가중 투표, 티어별로 참여 구성을 보여주는 결과 대시보드.",
"description": "Idea mvp"
},
"ideaCatalog.idea.onchainStrategyGame.title": {
"message": "전장의 안개 정복 게임",
"description": "Idea title"
},
"ideaCatalog.idea.onchainStrategyGame.what": {
"message": "육각형 그리드 영토 지배 게임으로, 부대 위치가 프라이빗 상태로 숨겨지고 모든 이동이 Gasless 온체인 트랜잭션입니다 — Risk 보드 게임에 온체인 실제 전장의 안개를 더한 것을 생각해 보세요.",
"description": "Idea what"
},
"ideaCatalog.idea.onchainStrategyGame.whyStatus": {
"message": "프라이버시 프리미티브로 클라이언트 측 안개가 아닌 진정한 숨겨진 정보가 가능하며, Gasless 이동으로 전략 게임의 빠른 주고받기가 경제적으로 실현 가능해집니다.",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.onchainStrategyGame.mvp": {
"message": "전장의 안개가 있는 육각형 맵, 단일 유닛 유형, 프라이빗 부대 배치, 턴 해결, 매치 리더보드.",
"description": "Idea mvp"
},
"ideaCatalog.idea.predictionMarket.title": {
"message": "예측 시장",
"description": "Idea title"
},
"ideaCatalog.idea.predictionMarket.what": {
"message": "저마찰 진입과 프라이빗 참여자 포지션이 있는 시장.",
"description": "Idea what"
},
"ideaCatalog.idea.predictionMarket.whyStatus": {
"message": "더 나은 시장 참여와 더 적은 카피 트레이딩 행동을 유도합니다",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.predictionMarket.mvp": {
"message": "시장 생성 + 포지션 진입 + 결산 + 기본 분석.",
"description": "Idea mvp"
},
"ideaCatalog.idea.nativeDexCompanion.title": {
"message": "Karma 등급별 스왑 라우터",
"description": "Idea title"
},
"ideaCatalog.idea.nativeDexCompanion.what": {
"message": "최고 온체인 풀을 통해 거래를 라우팅하고 고-Karma 사용자에게 수수료 감면과 우선 실행을 제공하는 스왑 인터페이스 — DEX 레이어에 구워진 로열티 프로그램",
"description": "Idea what"
},
"ideaCatalog.idea.nativeDexCompanion.whyStatus": {
"message": "카르마 등급으로 라우터가 신뢰 없이도 수수료 할인을 제공하고, 네이티브 유동성과의 긴밀한 통합으로 외부 애그리게이터 의존 없이 더 나은 비율을 제공합니다",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.nativeDexCompanion.mvp": {
"message": "티어별 수수료 표시가 있는 토큰 스왑 UI, 카르마 인식 라우팅 로직, LP 포지션 패널, 티어별 절약 수수료를 보여주는 거래 내역",
"description": "Idea mvp"
},
"ideaCatalog.idea.publicFundingInterface.title": {
"message": "공공 자금 인터페이스",
"description": "Idea title"
},
"ideaCatalog.idea.publicFundingInterface.what": {
"message": "보조금 발견, 제안, 투표, 추적 대시보드의 엔드투엔드 기능 구현",
"description": "Idea what"
},
"ideaCatalog.idea.publicFundingInterface.whyStatus": {
"message": "생태계 성장 플라이휠을 직접 지원하는 구조",
"description": "Idea whyStatus"
},
"ideaCatalog.idea.publicFundingInterface.mvp": {
"message": "제안 게시판 + 투표 화면 + 보조금 진행 추적 기능 구현",
"description": "Idea mvp"
}
}
@@ -3,148 +3,176 @@
"message": "Next",
"description": "The label for version current"
},
"sidebar.tutorialSidebar.category.INTRODUCTION": {
"sidebar.homeSidebar.category.INTRODUCTION": {
"message": "소개",
"description": "The label for category INTRODUCTION in sidebar tutorialSidebar"
"description": "The label for category INTRODUCTION in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.TOKENOMICS": {
"sidebar.homeSidebar.category.TOKENOMICS": {
"message": "토크노믹스",
"description": "The label for category TOKENOMICS in sidebar tutorialSidebar"
"description": "The label for category TOKENOMICS in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.GENERAL INFO": {
"sidebar.homeSidebar.category.GENERAL INFO": {
"message": "일반 정보",
"description": "The label for category GENERAL INFO in sidebar tutorialSidebar"
"description": "The label for category GENERAL INFO in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.🏡 Contract Addresses": {
"sidebar.homeSidebar.category.🏡 Contract Addresses": {
"message": "🏡 컨트랙트 주소",
"description": "The label for category 🏡 Contract Addresses in sidebar tutorialSidebar"
"description": "The label for category 🏡 Contract Addresses in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.🌉 Bridge": {
"sidebar.homeSidebar.category.🌉 Bridge": {
"message": "🌉 브릿지",
"description": "The label for category 🌉 Bridge in sidebar tutorialSidebar"
"description": "The label for category 🌉 Bridge in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.category.TOOLS": {
"message": "도구",
"description": "The label for category TOOLS in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.category.TUTORIALS": {
"message": "튜토리얼",
"description": "The label for category TUTORIALS in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.category.🚀 Deploying a Smart Contract": {
"message": "🚀 스마트 컨트랙트 배포",
"description": "The label for category 🚀 Deploying a Smart Contract in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.category.OTHER DOCS": {
"sidebar.homeSidebar.category.OTHER DOCS": {
"message": "기타 문서",
"description": "The label for category OTHER DOCS in sidebar tutorialSidebar"
"description": "The label for category OTHER DOCS in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🏠 Home": {
"message": "🏠 홈",
"description": "The label for the doc item 🏠 Home in sidebar tutorialSidebar"
"sidebar.homeSidebar.doc.🌴 Home": {
"message": "🌴 홈",
"description": "The label for the doc item 🌴 Home in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.⚡ Quick Start": {
"sidebar.homeSidebar.doc.⚡ Quick Start": {
"message": "⚡ 빠른 시작",
"description": "The label for the doc item ⚡ Quick Start in sidebar tutorialSidebar"
"description": "The label for the doc item ⚡ Quick Start in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💎 SNT Token": {
"message": "💎 SNT Token",
"description": "The label for the doc item 💎 SNT Token in sidebar tutorialSidebar, linking to the doc tokenomics/snt-token"
},
"sidebar.tutorialSidebar.doc.💠 Karma Token": {
"message": "💠 Karma Token",
"description": "The label for the doc item 💠 Karma Token in sidebar tutorialSidebar, linking to the doc tokenomics/karma-token"
},
"sidebar.tutorialSidebar.doc.🌐 Network Details": {
"message": "🌐 네트워크 세부정보",
"description": "The label for the doc item 🌐 Network Details in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc. Add Status Network": {
"message": " Status 네트워크 추가",
"description": "The label for the doc item Add Status Network in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Tokens": {
"message": "💰 토큰",
"description": "The label for the doc item 💰 Tokens in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🧪 Testnet Contracts": {
"message": "🧪 테스트넷 컨트랙트",
"description": "The label for the doc item 🧪 Testnet Contracts in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🧪 Bridging Testnet": {
"message": "🧪 테스트넷 브릿징",
"description": "The label for the doc item 🧪 Bridging Testnet in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🔌 RPC": {
"message": "🔌 RPC",
"description": "The label for the doc item 🔌 RPC in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🌉 Bridge": {
"message": "🌉 브릿지",
"description": "The label for the doc item 🌉 Bridge in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🚰 Testnet Faucets": {
"message": "🚰 테스트넷 파우셋",
"description": "The label for the doc item 🚰 Testnet Faucets in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🔎 Block Explorers": {
"message": "🔎 블록 익스플로러",
"description": "The label for the doc item 🔎 Block Explorers in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🎩 Using Hardhat": {
"message": "🎩 Hardhat 사용하기",
"description": "The label for the doc item 🎩 Using Hardhat in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.⚒️ Using Foundry": {
"message": "⚒️ Foundry 사용하기",
"description": "The label for the doc item ⚒️ Using Foundry in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🎛️ Using Remix": {
"message": "🎛️ Remix 사용하기",
"description": "The label for the doc item 🎛️ Using Remix in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🏗 Using Scaffold-ETH 2": {
"message": "🏗 Scaffold-ETH 2 사용하기",
"description": "The label for the doc item 🏗 Using Scaffold-ETH 2 in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🔗 Official Links": {
"message": "🔗 공식 링크",
"description": "The label for the doc item 🔗 Official Links in sidebar tutorialSidebar"
},
"sidebar.tutorialSidebar.doc.🌴 Home": {
"message": "🌴 Home",
"description": "The label for the doc item 🌴 Home in sidebar tutorialSidebar, linking to the doc index"
},
"sidebar.tutorialSidebar.doc.🤝 Economic Model": {
"sidebar.homeSidebar.doc.🤝 Economic Model": {
"message": "🤝 경제 모델",
"description": "The label for the doc item 🤝 Economic Model in sidebar tutorialSidebar"
"description": "The label for the doc item 🤝 Economic Model in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Public Funding": {
"sidebar.homeSidebar.doc.💰 Public Funding": {
"message": "💰 공공 자금",
"description": "The label for the doc item 💰 Public Funding in sidebar tutorialSidebar"
"description": "The label for the doc item 💰 Public Funding in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🐉 Karmic Tokenomics": {
"sidebar.homeSidebar.doc.🐉 Karmic Tokenomics": {
"message": "🐉 카르마 토크노믹스",
"description": "The label for the doc item 🐉 Karmic Tokenomics in sidebar tutorialSidebar"
"description": "The label for the doc item 🐉 Karmic Tokenomics in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💎 SNT Staking": {
"sidebar.homeSidebar.doc.💎 SNT Staking": {
"message": "💎 SNT 스테이킹",
"description": "The label for the doc item 💎 SNT Staking in sidebar tutorialSidebar"
"description": "The label for the doc item 💎 SNT Staking in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Pre-Deposits": {
"sidebar.homeSidebar.doc.💰 Pre-Deposits": {
"message": "💰 사전예치",
"description": "The label for the doc item 💰 Pre-Deposits in sidebar tutorialSidebar"
"description": "The label for the doc item 💰 Pre-Deposits in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🪙 Tokens": {
"sidebar.homeSidebar.doc.🌐 Network Details": {
"message": "🌐 네트워크 세부정보",
"description": "The label for the doc item 🌐 Network Details in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.⛽ Gasless Transactions": {
"message": "⛽ 가스리스 트랜잭션",
"description": "The label for the doc item ⛽ Gasless Transactions in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc. Add Status Network": {
"message": " Status 네트워크 추가",
"description": "The label for the doc item Add Status Network in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.🪙 Tokens": {
"message": "🪙 토큰",
"description": "The label for the doc item 🪙 Tokens in sidebar tutorialSidebar"
"description": "The label for the doc item 🪙 Tokens in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.💰 Pre-Deposit Vault Contracts": {
"sidebar.homeSidebar.doc.🧪 Testnet Contracts": {
"message": "🧪 테스트넷 컨트랙트",
"description": "The label for the doc item 🧪 Testnet Contracts in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.💰 Pre-Deposit Vault Contracts": {
"message": "💰 사전예치 금고 컨트랙트",
"description": "The label for the doc item 💰 Pre-Deposit Vault Contracts in sidebar tutorialSidebar"
"description": "The label for the doc item 💰 Pre-Deposit Vault Contracts in sidebar homeSidebar"
},
"sidebar.tutorialSidebar.doc.🌐 Running an RPC node": {
"sidebar.homeSidebar.doc.🧪 Bridging Testnet": {
"message": "🧪 테스트넷 브릿징",
"description": "The label for the doc item 🧪 Bridging Testnet in sidebar homeSidebar"
},
"sidebar.homeSidebar.doc.🔗 Official Links": {
"message": "🔗 공식 링크",
"description": "The label for the doc item 🔗 Official Links in sidebar homeSidebar"
},
"sidebar.buildForKarmaSidebar.category.BUILD FOR KARMA": {
"message": "카르마를 위해 개발하기",
"description": "The label for category BUILD FOR KARMA in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🌟 Why Status Network": {
"message": "🌟 왜 스테이터스 네트워크인가",
"description": "The label for the doc item 🌟 Why Status Network in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.💡 What to Build": {
"message": "💡 아이디어 카탈로그",
"description": "The label for the doc item 💡 What to Build in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.category.USING KARMA": {
"message": "카르마 사용",
"description": "The label for category USING KARMA in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.⛽ Gasless Integration": {
"message": "⛽ 가스리스 적용하기",
"description": "The label for the doc item ⛽ Gasless Integration in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🔰 Reputation Integration": {
"message": "🔰 평판 적용하기",
"description": "The label for the doc item 🔰 Reputation Integration in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.category.DEPLOYING CONTRACTS": {
"message": "컨트랙트 배포",
"description": "The label for category DEPLOYING CONTRACTS in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🎩 Using Hardhat": {
"message": "🎩 Hardhat 사용하기",
"description": "The label for the doc item 🎩 Using Hardhat in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.⚒️ Using Foundry": {
"message": "⚒️ Foundry 사용하기",
"description": "The label for the doc item ⚒️ Using Foundry in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🎛️ Using Remix": {
"message": "🎛️ Remix 사용하기",
"description": "The label for the doc item 🎛️ Using Remix in sidebar buildForKarmaSidebar"
},
"sidebar.buildForKarmaSidebar.doc.🏗 Using Scaffold-ETH 2": {
"message": "🏗 Scaffold-ETH 2 사용하기",
"description": "The label for the doc item 🏗 Using Scaffold-ETH 2 in sidebar buildForKarmaSidebar"
},
"sidebar.toolsSidebar.category.TOOLS": {
"message": "도구",
"description": "The label for category TOOLS in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.category.CORE INFRASTRUCTURE": {
"message": "핵심 인프라",
"description": "The label for category CORE INFRASTRUCTURE in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.📡 RPC Endpoints": {
"message": "📡 RPC 엔드포인트",
"description": "The label for the doc item 📡 RPC Endpoints in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🌉 Bridge": {
"message": "🌉 브릿지",
"description": "The label for the doc item 🌉 Bridge in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🚰 Testnet Faucets": {
"message": "🚰 테스트넷 파우셋",
"description": "The label for the doc item 🚰 Testnet Faucets in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🔎 Block Explorers": {
"message": "🔎 블록 익스플로러",
"description": "The label for the doc item 🔎 Block Explorers in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.category.RPC": {
"message": "RPC",
"description": "The label for category RPC in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🔌 JSON-RPC API": {
"message": "🔌 JSON-RPC API",
"description": "The label for the doc item 🔌 JSON-RPC API in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🌐 Running an RPC Node": {
"message": "🌐 RPC 노드 운영하기",
"description": "The label for the doc item 🌐 Running an RPC node in sidebar tutorialSidebar"
"description": "The label for the doc item 🌐 Running an RPC Node in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.category.PARTNERS": {
"message": "파트너",
"description": "The label for category PARTNERS in sidebar toolsSidebar"
},
"sidebar.toolsSidebar.doc.🤝 Infrastructure Partners": {
"message": "🤝 인프라 파트너",
"description": "The label for the doc item 🤝 Infrastructure Partners in sidebar toolsSidebar"
}
}
@@ -0,0 +1,72 @@
---
id: deploying-contracts-index
title: 첫 번째 컨트랙트 배포하기
description: 선호하는 배포 도구를 선택하여 Status Network에 스마트 컨트랙트를 배포하세요. Hardhat, Foundry, Remix, Scaffold-ETH 2 가이드를 제공합니다.
keywords: [deploy smart contract, Status Network, Hardhat, Foundry, Remix, Scaffold-ETH 2, blockchain deployment, EVM]
slug: /build-for-karma/deploying-contracts
sidebar_position: 1
---
스테이터스 네트워크는 EVM 호환이므로 표준 이더리움 도구 체인을 사용하여 컨트랙트를 배포할 수 있습니다. 워크플로에 맞는 도구를 선택하고 단계별 가이드를 따라 테스트넷에 첫 번째 컨트랙트를 배포하세요.
:::tip 시작하기 전에
[지갑에 스테이터스 네트워크를 추가](/overview/general-info/add-status-network)하고 [테스트넷 ETH](/tools/core-infrastructure/testnet-faucets)를 받아두었는지 확인하세요.
:::
## 배포 도구 선택
<div className="deploy-card-grid">
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-hardhat">
<div className="deploy-card-icon">🎩</div>
<div className="deploy-card-content">
<h3>Hardhat</h3>
<p>Solidity 컨트랙트 컴파일, 테스트, 배포를 위한 업계 표준 개발 환경. Hardhat Ignition 및 TypeScript 지원 포함.</p>
<span className="deploy-card-tag">TypeScript · Testing · Ignition</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-foundry">
<div className="deploy-card-icon">⚒️</div>
<div className="deploy-card-content">
<h3>Foundry</h3>
<p>스마트 컨트랙트 개발을 위한 Rust 기반 초고속 툴킷. Solidity로 테스트를 작성하고 Cast로 컨트랙트와 상호작용하세요.</p>
<span className="deploy-card-tag">Solidity Tests · Cast · Fast Builds</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-remix">
<div className="deploy-card-icon">🎛️</div>
<div className="deploy-card-content">
<h3>Remix IDE</h3>
<p>설치 없이 브라우저에서 사용하는 IDE — 빠른 프로토타이핑, 학습, 로컬 도구 설치 없이 간단한 컨트랙트 배포에 완벽합니다.</p>
<span className="deploy-card-tag">Browser-Based · No Setup · Beginner-Friendly</span>
</div>
</a>
<a className="deploy-card" href="/build-for-karma/deploying-contracts/using-se2">
<div className="deploy-card-icon">🏗️</div>
<div className="deploy-card-content">
<h3>Scaffold-ETH 2</h3>
<p>스테이터스 네트워크 확장이 사전 구성된 풀스택 스타터 키트. NextJS 프론트엔드, 컨트랙트 핫 리로드, Hardhat 및 Foundry 지원 포함.</p>
<span className="deploy-card-tag">Full-Stack · NextJS · Hot Reload</span>
</div>
</a>
</div>
## 어떤 것을 선택할지 모르시겠어요?
| 도구 | 적합한 용도 | 필요한 설정 |
|---|---|---|
| **Hardhat** | 복잡한 테스트 및 배포 파이프라인이 있는 프로덕션 프로젝트 | Node.js + npm |
| **Foundry** | Solidity-native 테스트와 빠른 컴파일을 선호하는 개발자 | Rust toolchain |
| **Remix** | 빠른 실험, 학습, 간단한 일회성 배포 | None (browser) |
| **Scaffold-ETH 2** | 처음부터 프론트엔드가 필요한 풀스택 app | Node.js + npm |
## 배포 후
컨트랙트가 배포되면 다음 단계를 진행하세요:
- Karma를 통해 [가스리스 트랜잭션을 적용](/build-for-karma/guides/gasless-integration)하여 사용자가 가스비를 지불할 필요 없도록 하기
- Karma를 사용한 평판 인식 기능 구축을 위한 [평판 적용 가이드 읽기](/build-for-karma/guides/reputation-integration)
@@ -9,7 +9,7 @@
- **Foundry**: [공식 Foundry 문서](https://book.getfoundry.sh/getting-started/installation)에서 설치
- **이더리움 지갑**: Status Network 테스트넷용 개인키
- **테스트넷 ETH**: Status Network 테스트넷 ETH가 필요합니다
- Status Network 테스트넷 ETH는 [파우셋](/tools/testnet-faucets)에서 받을 수 있습니다
- Status Network 테스트넷 ETH는 [파우셋](/tools/core-infrastructure/testnet-faucets)에서 받을 수 있습니다
- **기본 지식**: Solidity와 명령줄 사용 경험
## 달성 목표
@@ -200,7 +200,7 @@ forge test
문제가 발생한 경우:
- [텔레그램 커뮤니티](https://t.me/statusl2)에 참여
- [네트워크 세부정보](/general-info/network-details) 참조
- [네트워크 세부정보](/overview/general-info/network-details) 참조
## 추가 리소스
@@ -9,7 +9,7 @@
- **Node.js와 npm**: [공식 Node.js 웹사이트](https://nodejs.org/)에서 다운로드 및 설치
- **이더리움 지갑**: Status Network 테스트넷용 개인키가 있는 MetaMask 또는 다른 지갑
- **테스트넷 ETH**: Status Network 테스트넷 ETH가 필요합니다
- Status Network 테스트넷 ETH는 [파우셋](/tools/testnet-faucets)에서 받을 수 있습니다
- Status Network 테스트넷 ETH는 [파우셋](/tools/core-infrastructure/testnet-faucets)에서 받을 수 있습니다
- **기본 지식**: Solidity, Hardhat, 명령줄 사용 경험
## 달성 목표
@@ -158,4 +158,4 @@ npx hardhat run scripts/interact.ts --network statusTestnet
문제가 발생한 경우:
- [텔레그램 커뮤니티](https://t.me/statusl2)에 참여
- [네트워크 세부정보](/general-info/network-details) 참조
- [네트워크 세부정보](/overview/general-info/network-details) 참조
@@ -9,8 +9,8 @@
- **웹 브라우저**: Chrome이나 Firefox와 같은 최신 브라우저
- **MetaMask**: [MetaMask](https://metamask.io) 브라우저 확장 프로그램 설치
- **테스트넷 ETH**: Status Network 테스트넷 ETH가 필요합니다
- Status Network 테스트넷 ETH는 [파우셋](/tools/testnet-faucets)에서 받을 수 있습니다
- **네트워크 구성**: [네트워크 추가 가이드](/general-info/add-status-network)에 따라 MetaMask에 Status Network 테스트넷 추가
- Status Network 테스트넷 ETH는 [파우셋](/tools/core-infrastructure/testnet-faucets)에서 받을 수 있습니다
- **네트워크 구성**: [네트워크 추가 가이드](/overview/general-info/add-status-network)에 따라 MetaMask에 Status Network 테스트넷 추가
## 단계
@@ -91,7 +91,7 @@ contract HelloWorld {
문제가 발생한 경우:
- [텔레그램 커뮤니티](https://t.me/statusl2)에 참여
- [네트워크 세부정보](/general-info/network-details) 참조
- [네트워크 세부정보](/overview/general-info/network-details) 참조
## 추가 리소스
@@ -14,7 +14,7 @@ keywords: [Scaffold-ETH 2, 스마트 컨트랙트 배포, Status Network 개발,
- **Foundry** (선택사항): Foundry 워크플로우를 선택하는 경우
- **Ethereum 지갑** (선택사항): 테스트용 EVM 지갑 개인 키, 없어도 가능
> **참고**: Status Network는 가스 없는 트랜잭션을 지원하므로 테스트넷 ETH는 선택사항입니다. 여전히 테스트넷 ETH가 필요하다면 [Faucet](/tools/testnet-faucets)를 참고하세요.
> **참고**: Status Network는 가스 없는 트랜잭션을 지원하므로 테스트넷 ETH는 선택사항입니다. 여전히 테스트넷 ETH가 필요하다면 [Faucet](/tools/core-infrastructure/testnet-faucets)를 참고하세요.
## 빠른 시작
@@ -58,4 +58,4 @@ keywords: [Scaffold-ETH 2, 스마트 컨트랙트 배포, Status Network 개발,
자세한 구성 옵션, 문제 해결 및 사용법에 대해서는:
- 포괄적인 문서는 [확장 README](https://github.com/status-im/status-network-scaffold-extension)를 확인하세요
- [Telegram 커뮤니티](https://t.me/statusl2)에 참여하여 지원을 요청하세요
- [네트워크 세부사항](/general-info/network-details)을 확인하세요
- [네트워크 세부사항](/overview/general-info/network-details)을 확인하세요
@@ -0,0 +1,365 @@
---
title: 가스리스 적용 가이드
description: Status Network에서 가스리스 UX를 구축하기 위한 실용적인 통합 가이드.
keywords: [가스리스, linea_estimateGas, 스테이터스 네트워크, deny list, 빌더, 가스리스, UX]
slug: /build-for-karma/guides/gasless-integration
sidebar_position: 5
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
Status Network는 프로토콜 레벨에서 가스리스 트랜잭션을 제공합니다. 페이마스터나 릴레이어가 필요하지 않습니다. 빌더로서 핵심 작업은 sender의 상태에 따라 수수료를 정확하게 추정하고 표시하는 것입니다.
:::important 핵심 규칙
트랜잭션 UX를 준비할 때 신뢰할 수 있는 가스비 값 출처로 `linea_estimateGas` RPC 메서드를 사용하세요.
:::
기타 JSON-RPC 메서드 레퍼런스는 [JSON-RPC API](/tools/rpc/json-rpc)를 참조하세요.
## 카르마가 적용된 수수료 추정법
Linea에서 [`linea_estimateGas`](https://docs.linea.build/api/reference/linea-estimategas)는 이미 가스 추정을 위한 권장 방법입니다.
**단일 호출**에서 `gasLimit`, `baseFeePerGas`, `priorityFeePerGas`를 반환하며, 수수료 관련 필드들은 압축된 트랜잭션의 크기, L1 검증 비용, L1/L2 가스 가격 비율을 반영합니다. 이는 `eth_` 네임스페이스 메서드에는 적용되지 않은 요소들입니다.
Status Network는 `linea_estimateGas`를 더욱 확장하여 수수료 필드에 **카르마 시스템**을 반영합니다. 자격이 있는 사용자의 경우 수수료가 0으로 줄어들 수 있고, 거부 목록에 있는 사용자의 수수료는 증가할 수 있습니다.
```mermaid
flowchart TD
A[사용자 트랜잭션 호출] --> B["<code>from</code> 파라미터와 함께 <code>linea_estimateGas</code> 호출"]
B --> C{수수료 계산}
C -->|base+priority = 0| D[가스리스 UX 표시]
C -->|프리미엄 수수료| F[프리미엄 수수료 UX 표시]
D --> G[트랜잭션 전송]
F --> G
```
*그림: `linea_estimateGas`를 사용한 가스 추정 플로우*
이것이 빌더가 Status Network에서 트랜잭션 비용을 추정하거나 사용자를 위한 EIP-1559 수수료 필드를 입력해줄 때 `linea_estimateGas`를 사용해야 하는 이유입니다.
:::info 자세히 보기
카르마와 가스비 및 트랜잭션 권한에 미치는 영향에 대한 자세한 설명은 [카르마 토크노믹스](../../overview/tokenomics/karmic-tokenomics) 페이지를 참조하세요.
가스리스 시스템이 어떻게 구현되고 적용되는지에 대한 기술적 세부사항은 [가스리스 트랜잭션](../../overview/general-info/gasless-transactions) 문서를 참조하세요.
:::
## `linea_estimateGas` 요청/응답 형태
### 요청
`linea_estimateGas``eth_estimateGas`와 **동일한 트랜잭션 호출 객체**를 받습니다.
`gasLimit`(`eth_estimateGas`와 동일한 EVM 실행 로직 사용)과 함께 Linea의 L2 전용 가격 책정과 Status Network의 카르마 규칙을 모두 반영한 수수료 필드를 단일 응답으로 반환합니다.
:::important
**항상 `from`을 포함하세요.** 해당 값이 없으면 노드가 카르마/할당량/거부 목록 로직을 적용할 수 없습니다.
:::
### 응답
`linea_estimateGas`는 다음을 포함하는 객체를 반환합니다:
- `gasLimit`: 16진수 숫자값 - EVM 실행을 위한 추정 가스 단위(`eth_estimateGas`와 동일한 계산 결과)
- `baseFeePerGas`: 16진수 숫자값 - Status Network의 카르마 규칙을 반영한 다음 블록의 기본 수수료
- `priorityFeePerGas`: 16진수 숫자값 - Status Network의 카르마 규칙을 반영한 제안 우선순위 수수료
이러한 수수료 필드는 `eth_gasPrice`, `eth_maxPriorityFeePerGas`, `eth_feeHistory`와 같은 `eth_` 네임스페이스 호출이 반환하는 값과 크게 다를 수 있습니다. `eth_` 네임스페이스들은 Linea의 L2 전용 가격 책정이나 Status Network의 카르마 조정을 인식하지 못합니다.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="estimate-gas-response-shape">
<TabItem value="linea" label="linea_estimateGas (단일 호출)">
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"gasLimit": "0x5208",
"baseFeePerGas": "0x0",
"priorityFeePerGas": "0x0"
}
}
```
</TabItem>
<TabItem value="eth" label="표준 EVM (다중 호출)">
표준 EVM 플로우에서는 가스 한도와 수수료 데이터를 수집하기 위해 별도의 `eth_` 호출이 여러 번 필요합니다:
**eth_estimateGas**
```json
{
"jsonrpc": "2.0",
"id": 1,
"result": "0x5208"
}
```
**eth_maxPriorityFeePerGas**
```json
{
"jsonrpc": "2.0",
"id": 2,
"result": "0x59682f00"
}
```
**eth_getBlockByNumber**
```json
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"number": ...,
"baseFeePerGas": "0x3b9aca00",
...
}
}
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
## 마이그레이션 안내: 다중 `eth_` 호출에서 단일 `linea_estimateGas`로
이 섹션은 일반적인 "다중 `eth_` 호출을 통한 EIP-1559" 플로우에서 단일 `linea_estimateGas` 호출로 마이그레이션하는 방법을 보여줍니다. Status Network에서의 더 정확한 L2 전용 수수료 데이터와 카르마 인식 가격 책정을 제공합니다.
### 이전: `eth_` 네임스페이스를 사용한 일반적인 EVM 체인의 EIP-1559 추정 플로우
많은 EVM 체인에서 일반적인 EIP-1559 추정 플로우는 다음과 같습니다:
1. **가스 한도 추정**`eth_estimateGas`
2. **`maxPriorityFeePerGas` 조회** — `eth_maxPriorityFeePerGas``eth_feeHistory`
3. **`baseFeePerGas` 조회** — `eth_getBlockByNumber`
4. 위 값들을 조합하여 EIP-1559 트랜잭션 구성:
- `gas`
- `maxPriorityFeePerGas`
- `maxFeePerGas`, 일반적으로 $2 \cdot \mathrm{baseFeePerGas} + \mathrm{maxPriorityFeePerGas}$
<!-- markdownlint-disable MD033 -->
<Tabs groupId="eip1559-estimation-before">
<TabItem value="curl" label="curl">
```bash
# 1) Gas limit (EVM execution)
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"eth_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_RPC_URL
# 2) Fetch suggested tip amount
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":2,"method":"eth_maxPriorityFeePerGas","params":[]}' \
https://YOUR_RPC_URL
# 3) Fetch base fee
curl -X POST -H "Content-Type: application/json" \
--data '{"jsonrpc":"2.0","id":3,"method":"eth_getBlockByNumber","params":["pending",false]}' \
https://YOUR_RPC_URL
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://YOUR_RPC_URL');
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: '0x0',
};
const gas = await provider.estimateGas(call);
const maxPriorityFeePerGas = await provider.send('eth_maxPriorityFeePerGas', []);
const pendingBlock = await provider.getBlock('pending');
const baseFeePerGas = pendingBlock?.baseFeePerGas ?? 0n;
const maxFeePerGas = 2n * baseFeePerGas + BigInt(maxPriorityFeePerGas);
console.log({
gas: `0x${gas.toString(16)}`,
maxPriorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
<TabItem value="viem" label="viem">
```js
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://YOUR_RPC_URL'),
});
const call = {
account: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: 0n,
};
const gas = await client.estimateGas(call);
const maxPriorityFeePerGas = await client.getMaxPriorityFeePerGas();
const pendingBlock = await client.getBlock({ blockTag: 'pending' });
const baseFeePerGas = pendingBlock.baseFeePerGas ?? 0n;
const maxFeePerGas = 2n * baseFeePerGas + maxPriorityFeePerGas;
console.log({
gas,
maxPriorityFeePerGas,
maxFeePerGas,
});
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### 이후: `linea_estimateGas`를 사용한 Status Network 가스 추정 플로우
Status Network에서는 `linea_estimateGas`를 통해 수수료 제안을 가져와야 합니다. 정확한 수수료 추천이 트랜잭션 전송자의 카르마 보유량에 따라 달라지기 때문입니다:
- 계정이 **가스리스** 트랜잭션 대상일 수 있습니다
- 거부 목록에 있는 계정은 **프리미엄 가스비**를 지불해야 할 수 있습니다
<!-- markdownlint-disable MD033 -->
<Tabs groupId="linea-estimate-gas-request">
<TabItem value="curl" label="curl">
```bash
curl -X POST -H "Content-Type: application/json" \
--data '{
"jsonrpc":"2.0",
"id":1,
"method":"linea_estimateGas",
"params":[{
"from":"0xYOUR_SENDER",
"to":"0xCONTRACT_OR_RECIPIENT",
"data":"0xYOUR_CALLDATA",
"value":"0x0"
}]
}' \
https://YOUR_STATUS_NETWORK_RPC_URL
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider('https://YOUR_STATUS_NETWORK_RPC_URL');
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: '0x0',
};
const { gasLimit, baseFeePerGas, priorityFeePerGas } = await provider.send(
'linea_estimateGas',
[call],
);
const maxFeePerGas =
BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);
console.log({
gas: gasLimit,
maxPriorityFeePerGas: priorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
<TabItem value="viem" label="viem">
```js
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://YOUR_STATUS_NETWORK_RPC_URL'),
});
const call = {
from: '0xYOUR_SENDER',
to: '0xCONTRACT_OR_RECIPIENT',
data: '0xYOUR_CALLDATA',
value: 0n,
};
const { gasLimit, baseFeePerGas, priorityFeePerGas } = await client.request({
method: 'linea_estimateGas',
params: [call],
});
const maxFeePerGas =
BigInt(baseFeePerGas) + BigInt(priorityFeePerGas);
console.log({
gas: gasLimit,
maxPriorityFeePerGas: priorityFeePerGas,
maxFeePerGas: `0x${maxFeePerGas.toString(16)}`,
});
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
:::tip 툴링 구현
많은 이더리움 라이브러리가 내부적으로 `eth_estimateGas`를 호출합니다(예: `provider.estimateGas(...)`). Status Network에서는 표준 `eth_` 메서드에 대해 해당 라이브러리 사용을 유지하되, 사용자를 위한 트랜잭션 파라미터를 구성하거나 표시할 때만은 **가스 한도와 수수료 필드를 `linea_estimateGas`를 통해 명시적으로 가져오는 것을 권고합니다.**.
:::
## UI에서의 수수료 처리 시나리오
### 1) 가스리스
`baseFeePerGas``priorityFeePerGas`가 모두 0일 때:
- 명확한 무료 트랜잭션 상태를 표시합니다.
- 불필요한 수수료 경고를 건너뜁니다.
### 2) 프리미엄 수수료
sender가 거부 목록에 있을 때(할당량 초과 또는 RLN 정책):
- 수수료 금액을 표시하고 할당량 초과 또는 스팸 정책으로 인해 프리미엄 가스가 적용됨을 설명합니다.
- sender가 수수료를 지불하거나 할당량 기간이 갱신될 때까지 기다릴 수 있음을 명확히 합니다.
- 프리미엄 가스를 지불할 의향이 있다면 트랜잭션 전송이 가능하도록 유지합니다. 완전히 차단하지 마세요.
## 주로 빠지는 함정들
| 함정 | 해결법 |
|---|---|
| 수수료 결정에 `eth_` 메서드 사용(`eth_gasPrice`, `eth_maxPriorityFeePerGas`, `eth_feeHistory`) | `linea_estimateGas` 사용 |
| `linea_estimateGas` 호출 시 `from` 생략 | 카르마가 적용된 추정값을 받으려면 항상 sender 주소를 전달 |
| 수수료값을 가정하여 하드코딩 | 반환된 `baseFeePerGas``priorityFeePerGas` 값으로 수수료 UI 구성 |
| 모든 트랜잭션이 가스리스라고 가정 | 가스리스(수수료 0)와 거부 목록(프리미엄 수수료) 각각 처리 |
| 재시도 시 가스비 추정값 캐싱 | 전송 시점 인근에 재추정 필요 — sender의 카르마 상태가 변경될 수 있음 |
## 다음 단계
- [JSON-RPC API](/tools/rpc/json-rpc)
- [평판 적용하기](/build-for-karma/guides/reputation-integration)
@@ -0,0 +1,20 @@
---
title: 카르마 사용하기
description: Status Network에서 카르마 기반 가스리스 UX 및 평판 인식 기능을 통합하기 위한 시작점입니다.
keywords: [카르마, gasless, reputation, integration, Status Network]
slug: /build-for-karma/guides
sidebar_position: 3
---
카르마는 Status Network에서 가스리스 트랜잭션 권한과 평판을 제공합니다.
이 섹션은 앱에서 가스리스 동작과 티어 기반 프로덕트 로직을 적용하는 방법을 안내합니다.
## 시작하기
**트랜잭션을 처리하시나요?**
- [가스리스 적용](/build-for-karma/guides/gasless-integration)를 참고하여 `linea_estimateGas`를 가스리스와 프리미엄 수수료 결과의 단일 진실 공급원으로 사용하세요.
**평판에 따라 기능을 제한하고 싶나요?**
- [평판 적용](/build-for-karma/guides/reputation-integration)으로 넘어가 온체인에서 카르마 잔액과 티어를 읽고, 컨트랙트단 제한을 적용하며, 티어 인식 프론트엔드를 설계하는 방법을 알아보세요.
@@ -0,0 +1,453 @@
---
title: 평판 적용 가이드
description: Status Network에서 카르마 티어를 읽고, 평판에 따라 기능을 제한하고, 카르마가 적용된 스마트 컨트랙트와 프론트엔드를 구축하는 방법.
keywords: [카르마, 적용, 스마트 컨트랙트, 소울바운드 토큰, 평판, 계층, 가스리스, 스테이터스 네트워크, 개발자 가이드]
slug: /build-for-karma/guides/reputation-integration
sidebar_position: 4
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
카르마는 Status Network의 소울바운드 평판 토큰입니다. 인간과 봇을 포함한 모든 이의 계정은 SNT 스테이킹, 자산 브릿징, 유동성 제공, 앱 사용, 프리미엄 가스비 지불 등 실제 네트워크 참여를 통해 카르마를 획득합니다. 카르마는 구매, 판매 또는 전송할 수 없습니다.
본 가이드는 카르마 정보를 읽고 사용자의 평판 티어에 따라 다르게 반응하는 앱을 구축하는 방법을 다룹니다.
## 온체인에서 카르마 읽기
카르마 상태는 두 개의 컨트랙트에 분산되어 있습니다:
- **Karma** — 소울바운드 ERC-20 토큰. `balanceOf`는 해당 계정의 슬래싱량이 제외된 순 잔액을 반환합니다. `transfer``approve` 함수 호출은 모두 거절됩니다.
- **KarmaTiers** — 잔액에 해당하는 티어를 알려줍니다. `getTierIdByKarmaBalance(balance)`를 호출한 후 `getTierById(tierId)`를 호출하여 사용자의 티어와 `txPerEpoch` 할당량을 확인합니다.
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-reading">
<TabItem value="solidity" label="Solidity">
```solidity
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
/// @notice Minimal interface for the Karma soulbound token.
interface IKarma {
/// @notice Net Karma balance of `account` after slashing.
function balanceOf(address account) external view returns (uint256);
/// @notice Total amount slashed from `account` across all distributors.
function slashedAmountOf(address account) external view returns (uint256);
}
/// @notice Minimal interface for the KarmaTiers registry.
interface IKarmaTiers {
struct Tier {
uint256 minKarma;
uint256 maxKarma;
string name;
uint32 txPerEpoch; // gasless transactions allowed per epoch
}
/// @notice Returns the highest tier ID the given karma balance qualifies for.
function getTierIdByKarmaBalance(uint256 karmaBalance) external view returns (uint8);
/// @notice Returns the full Tier struct for a given tier ID.
function getTierById(uint8 tierId) external view returns (Tier memory);
/// @notice Returns the total number of configured tiers.
function getTierCount() external view returns (uint256);
}
contract KarmaGated {
IKarma public karma;
IKarmaTiers public karmaTiers;
constructor(address _karmaContract, address _karmaTiersContract) {
karma = IKarma(_karmaContract);
karmaTiers = IKarmaTiers(_karmaTiersContract);
}
/// @notice Resolves the tier ID for `user` from their current Karma balance.
function tierIdOf(address user) public view returns (uint8) {
return karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));
}
modifier onlyTier(uint8 minTier) {
require(tierIdOf(msg.sender) >= minTier, "Karma tier too low");
_;
}
function premiumAction() external onlyTier(3) {
// Only users at tier 3 or above can call this
}
function getDiscount(address user) external view returns (uint256) {
uint8 tierId = tierIdOf(user);
// Higher tiers get bigger discounts
return uint256(tierId) * 5; // 0%, 5%, 10%, ...
}
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
import { ethers } from 'ethers';
const provider = new ethers.JsonRpcProvider(
'https://public.sepolia.rpc.status.network'
);
const KARMA_ABI = [
'function balanceOf(address account) view returns (uint256)',
'function slashedAmountOf(address account) view returns (uint256)',
];
const KARMA_TIERS_ABI = [
'function getTierIdByKarmaBalance(uint256 karmaBalance) view returns (uint8)',
'function getTierById(uint8 tierId) view returns (tuple(uint256 minKarma, uint256 maxKarma, string name, uint32 txPerEpoch))',
'function getTierCount() view returns (uint256)',
];
const karma = new ethers.Contract(KARMA_ADDRESS, KARMA_ABI, provider);
const karmaTiers = new ethers.Contract(KARMA_TIERS_ADDRESS, KARMA_TIERS_ABI, provider);
// 사용자의 Karma 잔액을 읽고 티어를 확인
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const tier = await karmaTiers.getTierById(tierId);
console.log(`Karma 잔액: ${ethers.formatEther(balance)} KARMA`);
console.log(`티어: ${tier.name} (ID ${tierId})`);
console.log(`에폭당 Tx 할당량: ${tier.txPerEpoch}`);
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
import { createPublicClient, http } from 'viem';
const client = createPublicClient({
transport: http('https://public.sepolia.rpc.status.network'),
});
const karmaAbi = [
{
name: 'balanceOf',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'account', type: 'address' }],
outputs: [{ name: '', type: 'uint256' }],
},
{
name: 'slashedAmountOf',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'account', type: 'address' }],
outputs: [{ name: '', type: 'uint256' }],
},
] as const;
const karmaTiersAbi = [
{
name: 'getTierIdByKarmaBalance',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'karmaBalance', type: 'uint256' }],
outputs: [{ name: '', type: 'uint8' }],
},
{
name: 'getTierById',
type: 'function',
stateMutability: 'view',
inputs: [{ name: 'tierId', type: 'uint8' }],
outputs: [{
name: 'tier',
type: 'tuple',
components: [
{ name: 'minKarma', type: 'uint256' },
{ name: 'maxKarma', type: 'uint256' },
{ name: 'name', type: 'string' },
{ name: 'txPerEpoch', type: 'uint32' },
],
}],
},
] as const;
// 두 번의 순차 읽기: 잔액 → 티어 ID → 티어 상세
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const tier = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierById',
args: [tierId],
});
console.log(`티어: ${tier.name} (ID ${tierId})`);
console.log(`에폭당 Tx 할당량: ${tier.txPerEpoch}`);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
:::note 컨트랙트 주소
Karma와 KarmaTiers의 테스트넷 컨트랙트 주소는 [컨트랙트 주소](/overview/general-info/contract-addresses/testnet-contracts) 페이지에 게시되어 있습니다.
:::
## 가능한 적용 패턴
### 기능 제한
앱 내 기능을 카르마 티어에 따라 잠금 해제합니다.
[온체인에서 카르마 읽기](#온체인에서-카르마-읽기) 섹션에서 확인할 수 있는 `onlyTier` modifier가 컨트랙트 레벨에서 접근을 제어합니다.
혹은 코드 내에서 `tierId`흫 활용하여 제어할 수도 있습니다:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-gating">
<TabItem value="solidity" label="Solidity">
```solidity
function accessPremiumContent() external onlyTier(3) {
// Only users at tier 3 or above can call this
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// Karma 잔액에서 티어를 확인한 후 UI 기능을 제한한다
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
if (tierId >= 3) {
showPremiumFeatures();
} else {
showUpgradePrompt(tierId);
}
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
if (tierId >= 3) {
showPremiumFeatures();
} else {
showUpgradePrompt(tierId);
}
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### 동적 가격 책정
높은 카르마 사용자에게 할인 요금을 제공합니다:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-pricing">
<TabItem value="solidity" label="Solidity">
```solidity
function calculateFee(address user, uint256 baseAmount) public view returns (uint256) {
uint8 tierId = karmaTiers.getTierIdByKarmaBalance(karma.balanceOf(user));
// Each tier gives 5% discount
uint256 discount = uint256(tierId) * 5;
return baseAmount * (100 - discount) / 100;
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// 사용자의 현재 티어를 기반으로 할인율 계산
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const discount = BigInt(tierId) * 5n; // 티어당 5% 할인
const fee = baseAmount * (100n - discount) / 100n;
console.log(`티어 ${tierId}: ${discount}% 할인 → 수수료 = ${fee}`);
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const discount = BigInt(tierId) * 5n; // 티어당 5% 할인
const fee = baseAmount * (100n - discount) / 100n;
console.log(`티어 ${tierId}: ${discount}% 할인 → 수수료 = ${fee}`);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### 평판 표기
`KarmaTiers` 컨트랙트에서 직접 티어 이름을 읽어 UI에 카르마 티어를 표시, 신뢰 지표로 활용합니다:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-display">
<TabItem value="ethers" label="ethers.js">
```js
// 온체인에서 티어 이름을 가져옴 — 하드코딩된 배열 불필요
const balance = await karma.balanceOf(userAddress);
const tierId = await karmaTiers.getTierIdByKarmaBalance(balance);
const tier = await karmaTiers.getTierById(tierId);
function KarmaBadge({ tierName }) {
return <span className="karma-badge">{tierName}</span>;
}
// 사용
<KarmaBadge tierName={tier.name} />
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
const balance = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
const tierId = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierIdByKarmaBalance',
args: [balance],
});
const tier = await client.readContract({
address: KARMA_TIERS_ADDRESS,
abi: karmaTiersAbi,
functionName: 'getTierById',
args: [tierId],
});
function KarmaBadge({ tierName }: { tierName: string }) {
return <span className="karma-badge">{tierName}</span>;
}
// 사용
<KarmaBadge tierName={tier.name} />
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
### 가중 거버넌스
앱의 거버넌스에서 카르마를 투표 가중치로 사용합니다:
<!-- markdownlint-disable MD033 -->
<Tabs groupId="karma-governance">
<TabItem value="solidity" label="Solidity">
```solidity
function vote(uint256 proposalId, bool support) external {
uint256 weight = karma.balanceOf(msg.sender);
proposals[proposalId].votes += support ? int256(weight) : -int256(weight);
}
```
</TabItem>
<TabItem value="ethers" label="ethers.js">
```js
// 사용자의 Karma 잔액을 투표 가중치로 읽은 후 제출
const weight = await karma.balanceOf(userAddress);
console.log(`투표 가중치: ${ethers.formatEther(weight)} KARMA`);
// 거버넌스 컨트랙트 호출
const tx = await governanceContract.vote(proposalId, support);
await tx.wait();
```
</TabItem>
<TabItem value="viem" label="viem">
```ts
import { formatEther, parseAbi } from 'viem';
// Karma 잔액에서 투표 가중치 읽기
const weight = await client.readContract({
address: KARMA_ADDRESS,
abi: karmaAbi,
functionName: 'balanceOf',
args: [userAddress],
});
console.log(`투표 가중치: ${formatEther(weight)} KARMA`);
// 거버넌스 컨트랙트를 통해 투표 제출
const { request } = await client.simulateContract({
address: GOVERNANCE_ADDRESS,
abi: parseAbi(['function vote(uint256 proposalId, bool support) external']),
functionName: 'vote',
args: [proposalId, support],
account: userAddress,
});
await walletClient.writeContract(request);
```
</TabItem>
</Tabs>
<!-- markdownlint-enable MD033 -->
## 다음 단계
- [가스리스 적용하기](/build-for-karma/guides/gasless-integration)을 참조하여 가스리스 트랜잭션에 카르마 적용하기
- [카르마 토크노믹스](/overview/tokenomics/karmic-tokenomics)에서 카르마가 어떻게 획득되고 사용되는지 확인하기
- [가스리스 트랜잭션](/overview/general-info/gasless-transactions)에서 RLN 기반 가스리스 시스템의 기술적 세부사항 알아보기
@@ -0,0 +1,21 @@
---
id: build-for-karma-index
title: Build for Karma
description: Status Network에서 빌드하는 데 필요한 모든 것 — 가스리스 및 평판 통합 가이드, 배포 튜토리얼, 앱 아이디어.
keywords: [Status Network, builder guides, Karma, gasless integration, reputation, deploy contracts, app ideas, developer documentation]
slug: /build-for-karma
sidebar_position: 1
---
이 섹션은 스테이터스 네트워크의 빌더 허브입니다. 이곳에서 빌드하는 이점을 이해하고, 무엇을 만들지 탐색하고, 가스리스 트랜잭션 구현 방법을 배우거나, 첫 번째 스마트 컨트랙트를 배포하는 등, 카르마를 중점으로 둔 개발에 필요한 모든 것이 여기에 있습니다.
## 시작하기
- [**왜 스테이터스 네트워크인가**](/build-for-karma/why-status-network): 이곳에서 빌드해야 하는 이유 — 가스리스 경제, 카르마, 공공 자금, 다른 L2들과의 비교.
- [**아이디어 카탈로그**](/build-for-karma/what-to-build): 앱 아이디어들을 모아둔 인터랙티브 아이디어 카탈로그.
- [**카르마 사용하기**](/build-for-karma/guides): 가스리스 트랜잭션과 평판 기능을 앱에 적용하기 위한 기술 가이드.
- [**첫 번째 컨트랙트 배포**](/build-for-karma/deploying-contracts): Hardhat, Foundry, Remix 또는 Scaffold-ETH 2를 사용한 단계별 컨트랙트 배포 방법.
## 커뮤니티
- [Telegram 빌더 커뮤니티](https://t.me/statusl2)에 참여하여 스테이터스 네트워크에서의 개발에 대한 도움을 받으세요
@@ -0,0 +1,31 @@
---
title: 스테이터스 네트워크에서 만들 수 있는 다양한 앱 아이디어 카탈로그
description: 카테고리, 노력, 전달 프로필별로 구성된 스테이터스 네트워크용 고성과 앱 아이디어 스캔 우선 카탈로그.
keywords: [Status Network, app ideas, builder ideas, Karma apps, privacy apps, gasless apps, DeFi, social apps, games, MVP]
sidebar_position: 3
---
import IdeaCatalog from '@site/src/components/IdeaCatalog/IdeaCatalog';
스테이터스 네트워크는 가스리스 UX, 카르마 평판 시스템 그리고 근본적인 프라이버시를 하나로 모았습니다.
그로 인해 다른 체인에서는 볼 수 없는 제품들을 구현 가능하게 합니다.
아래는 스테이터스 네트워크에 적합하다고 생각하는 예시 제품들입니다. 물론 이 아이디어에 제한될 필요는 없습니다.
필터를 사용하여 여러분의 전문성과 야망에 맞는 아이디어를 찾아보세요. 카드를 클릭하면 전체 내용을 확인할 수 있습니다.
<IdeaCatalog />
## 지금 바로 구축하기
- [Quick Start](/overview/introduction/quick-start)
- [가스리스 및 평판을 위한 카르마 적용법](/build-for-karma/guides)
- [스테이터스 네트워크에 컨트랙트 배포하기](/build-for-karma/deploying-contracts)
- [Telegram Builder's Community](https://t.me/statusl2)
## Ecosystem & Funding
빌더는 카르마 보유자가 운영하는 공공 자금 풀에서 지속적인 자금을 지원 받을 수 있습니다.
앱의 성과가 높아질수록 카르마를 더 많이 획득하고, 향후 배분에 대한 영향력이 강해집니다.
자세히 보기 → [Ecosystem & Funding](/overview/tokenomics/public-funding)
@@ -0,0 +1,138 @@
---
title: Status Network에서 구축해야 하는 이유
description: Status Network에서 구축해야 하는 이유 — 가스리스 트랜잭션, Karma 평판, 지속 가능한 공공 자금 조달, 그리고 다른 L2와의 비교.
keywords: [Status Network, why build, L2 comparison, gasless, Karma, public funding, developer advantages, Linea zkEVM]
sidebar_position: 2
---
여러분이 선택할 수 있는 수십 개의 L2들 중에서 스테이터스 네트워크를 주목할 만한 이유를 소개합니다.
<div className="comparison-grid">
<a className="comparison-row-link" href="#sustainable-public-funding">
<div className="comparison-row">
<div className="comparison-label">개발자 자금</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>앱의 성과에 따라 확장되는 지속적인 수익 풀</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">일반적인 L2</div>
<p>몇 달마다 재신청해야하는 일회성 보조금</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#gasless-by-default">
<div className="comparison-row">
<div className="comparison-label">사용자 가스</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>카르마로 완전히 무료 — 페이마스터, 릴레이어, 계정 추상화 등 설정 불필요</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">일반적인 L2</div>
<p>사용자가 가스를 지불하거나, 개발자가 페이마스터 + 릴레이어 인프라 운영</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#built-in-reputation-with-karma">
<div className="comparison-row">
<div className="comparison-label">사용자 평판</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>카르마를 통한 네트워크 전역 평판 시스템 — 스팸 방지, 신뢰 신호, 기능 제한 등 활용 가능</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">일반적인 L2</div>
<p>없음 — 직접 구축하거나 서드파티 솔루션 사용</p>
</div>
</div>
</div>
</a>
<a className="comparison-row-link" href="#privacy-focused-civil-goods">
<div className="comparison-row">
<div className="comparison-label">프라이버시</div>
<div className="comparison-cards">
<div className="comparison-card comparison-card--us">
<div className="comparison-card-heading">Status Network</div>
<p>네이티브 ZK 기반 도구 — Rate Limiting Nullifiers 등</p>
</div>
<div className="comparison-card comparison-card--them">
<div className="comparison-card-heading">일반적인 L2</div>
<p>서드파티</p>
</div>
</div>
</div>
</a>
</div>
## 지속 가능한 공공 자금 조달
스테이터스 네트워크는 일회성 보조금이나 재단 자금에 의존하지 않습니다. 대신 다음으로 공급되는 지속적인 공공 자금 풀이 있습니다:
- 브릿지된 수익 자산(ETH, 스테이블코인 등)으로부터 나오는 **네이티브 수익**
- 네이티브 탈중앙화 거래소의 **DEX 수수료**
- 거부 목록 사용자의 **프리미엄 가스 수수료**
- 향후 출시될 추가적인 **네이티브 앱들의 수수료**(대출, NFT, 런치패드 등)
자세히 보기 → [Economic Model](/overview/tokenomics/economic-model)
카르마 보유자는 이 공공 자금 풀이 앱과 빌더에게 어떻게 분배될지 투표로 결정합니다. 앱이 활동과 트랜잭션 볼륨을 생성하며 네트워크에 더 많이 기여할수록 앱 사용자와 함께 더 많은 카르마를 획득하고, 향후 배분에 대한 영향력을 키울 수 있습니다.
**빌더에게 의미하는 바:**
- 몇 달마다 재신청해야 하는 일회성 보조금이 아니라 반복 수익 스트림에 자동 가입
- 앱의 성과에 따라 자금이 확장됨. 사용자가 증가 -> 카르마 증가 -> 더 많은 인센티브
- 커뮤니티 거버넌스 배분, 재단 리스크 없음
자세히 보기 → [Public Funding](/overview/tokenomics/public-funding)
## 가스리스를 디폴트로
대부분의 체인들은 "가스리스"를 위해서 페이마스터 설정, 릴레이어 운영, 또는 계정 추상화 SDK 적용 등 개발자의 추가적인 조치가 필요합니다. 스테이터스 네트워크에서는 가스리스가 기본 동작입니다.
Karma를 보유한 주소는 일정량의 무료 트랜잭션을 할당 받습니다. 페이마스터 X. 릴레이어 X. 특별한 지갑 설정 X. 자격이 있는 사용자에게 앱이 가스 수수료 없이 작동합니다.
**빌더에게 의미하는 바:**
- 가스로 인한 UX 마찰 없음. 온보딩 과정에서 "가스용 ETH 브릿지" 때문에 사용자를 잃지 않음
- ERC-4337, 메타 트랜잭션 또는 가스 릴레이 패턴 별도 적용 불필요
- 사용자 대신 가스 지불을 위한 인프라 비용 없음
가스리스 시스템은 [Rate Limiting Nullifiers (RLN)](/overview/general-info/gasless-transactions/#rln)라는 영지식 스팸 방지 메커니즘을 기반으로 시퀀서 레벨에서 적용됩니다.
## 내장된 카르마 평판 시스템
카르마는 스테이킹, 브릿징, 유동성 제공, 앱 사용 또는 프리미엄 가스 지불과 같은 진정한 네트워크 참여를 통해 모든 사용자가 획득하는 소울바운드(비양도) 토큰입니다. 구매하거나 전송할 수 없습니다.
**빌더에게 의미하는 바:**
- **신뢰 신호**: 높은 카르마 티어 사용자는 검증된 활발한 참여자임을 의미함
- **기능 제한**: 빌더는 사용자의 카르마 등급에 따라 프리미엄 기능, 우선 접근, 더 나은 이율 등 기능을 제한적으로 제공 수 있음
- **스팸 방지**: 네트워크 자체가 RLN 메커니즘으로 스팸을 방지하며, 카르마 등급이 가스리스 트랜잭션 할당량을 직접 제어하므로 높은 카르마 티어 사용자는 본질적으로 스팸 가능성이 낮음
- **콜드 스타트 문제 없음**: 앱은 생태계에서 네트워크 전역으로 구축된 평판의 혜택을 바로 적용할 수 있음. 처음부터 사용자 기반을 다져야 하는 문제 해소.
자세히 보기 → [Karmic Tokenomics](/overview/tokenomics/karmic-tokenomics)
## 프라이버시 중심적인 공공재
스테이터스 네트워크는 [Institute of Free Technology (IFT)](https://free.technology)의 기술로 구축되었습니다. 특히 가스리스 트랜잭션 시스템은 [Vac](https://vac.dev)(IFT 연구 부서)이 개발한 영지식 스팸 방지 메커니즘인 [RLN (Rate Limiting Nullifiers)](https://vac.dev/rln)를 사용합니다.
우리는 디지털 시대의 시민권을 보호하는 공공재를 구축하고자 하는 IFT의 기술 비전과 함께합니다. 스테이터스 네트워크는 가스리스 특성을 활용하여 프라이버시 중심 모듈을 추가할 예정입니다.
<!-- 자세히 보기 → [Status Network and Privacy](/overview/general-info/privacy) -->
## EVM 호환성
스테이터스 네트워크는 [Linea zkEVM](https://linea.build) 스택을 기반으로 구축되었습니다. 이는 빌더가 다음을 할 수 있음을 의미합니다:
- 기존 Solidity 컨트랙트 수정 없이 그대로 배포
- Hardhat, Foundry, ethers.js, viem 등 표준 이더리움 도구 사용
- 표준 JSON-RPC 메서드 사용(가스 수수료 관련 일부 메서드 제외. 자세한 내용은 [JSON-RPC API](/tools/rpc/json-rpc) 참조)
- Linea의 롤업 아키텍처에서 상속된 영지식 증명 기반 보안
커스텀 VM 없음. 비표준 opcode 없음. 컨트랙트나 백엔드 재작성 불필요.
@@ -1,28 +1,28 @@
# Status Network 테스트넷으로 브리징하기
# Status Network 테스트넷으로 브릿지하기
Status Network 브지를 사용하면 Sepolia와 Status Network 테스트넷 간에 토큰을 전송할 수 있습니다. 브지는 [bridge.status.network](https://bridge.status.network)에 배포되어 있습니다.
Status Network 브릿지를 사용하면 Sepolia와 Status Network 테스트넷 간에 토큰을 전송할 수 있습니다. 브릿지는 [bridge.status.network](https://bridge.status.network)에 배포되어 있습니다.
## 사전 준비사항
- MetaMask 또는 다른 Web3 지갑이 설치되어 있어야 함
- Sepolia 네트워크에 테스트넷 ETH 보유
- Sepolia 네트워크에 브리징하고자 하는 토큰 보유
- Sepolia 네트워크에 브릿지하고자 하는 토큰 보유
## 브리징 과정
## 브릿지 과정
1. [bridge.status.network](https://bridge.status.network) 방문
2. 우측 상단의 "지갑 연결" 버튼을 클릭하여 지갑 연결
3. 드롭다운 메뉴에서 브리징할 토큰 선택
3. 드롭다운 메뉴에서 브릿지할 토큰 선택
4. 브리징할 금액 입력
4. 브릿지할 금액 입력
5. "브지" 버튼을 클릭하고 지갑에서 거래 승인
5. "브릿지" 버튼을 클릭하고 지갑에서 거래 승인
6. 브리징 과정이 완료될 때까지 대기
- 브리징은 보통 5-10분 정도 소요됩니다
- 브지 인터페이스에서 거래 상태를 확인할 수 있습니다
6. 브릿지 과정이 완료될 때까지 대기
- 브릿지은 보통 5-10분 정도 소요됩니다
- 브릿지 인터페이스에서 거래 상태를 확인할 수 있습니다
## 주요 참고사항
@@ -1,7 +1,7 @@
---
title: 테스트넷 컨트랙트
description: 브지 컨트랙트, 핵심 인프라, L2 컨트랙트를 포함한 Status Network 테스트넷 컨트랙트 주소의 포괄적인 목록과 각각의 목적 및 블록 탐색기 링크.
keywords: [Status Network 컨트랙트, 테스트넷 주소, 스마트 컨트랙트, 브지 컨트랙트, L1 컨트랙트, L2 컨트랙트, 블록체인 인프라]
description: 브릿지 컨트랙트, 핵심 인프라, L2 컨트랙트를 포함한 Status Network 테스트넷 컨트랙트 주소의 포괄적인 목록과 각각의 목적 및 블록 탐색기 링크.
keywords: [Status Network 컨트랙트, 테스트넷 주소, 스마트 컨트랙트, 브릿지 컨트랙트, L1 컨트랙트, L2 컨트랙트, 블록체인 인프라]
---
# 테스트넷 컨트랙트
@@ -12,14 +12,14 @@ keywords: [Status Network 컨트랙트, 테스트넷 주소, 스마트 컨트랙
이 컨트랙트들은 Sepolia 테스트넷에 배포되어 있습니다. [Sepolia Etherscan](https://sepolia.etherscan.io)에서 확인할 수 있습니다.
### 브지 컨트랙트
### 브릿지 컨트랙트
- **Rollup Contract**
- 주소: [`0x0Bf464f24D867ff0B20aE8f9C353a589138D6836`](https://sepolia.etherscan.io/address/0x0bf464f24d867ff0b20ae8f9c353a589138d6836)
- 목적: L2의 유효성, DA 및 L1에서 L2로의 메시징을 관리
- **L1 Token Bridge Proxy**
- 주소: [`0x01b44C5Ea321f921D93476cf54Aa8460db17a548`](https://sepolia.etherscan.io/address/0x01b44C5Ea321f921D93476cf54Aa8460db17a548)
- 목적: L1에서 토큰 브리징 작업을 관리
- 목적: L1에서 토큰 브릿지 작업을 관리
### 핵심 인프라
- **L1 Postman**
@@ -38,14 +38,14 @@ keywords: [Status Network 컨트랙트, 테스트넷 주소, 스마트 컨트랙
이 컨트랙트들은 Status Network 테스트넷에 배포되어 있습니다. [Status Network Explorer](https://sepoliascan.status.network)에서 확인할 수 있습니다.
### 브지 컨트랙트
### 브릿지 컨트랙트
- **L2 Message Service**
- 주소: [`0xe74Bd8db0440533F8915042D980AbAA86085821c`](https://sepoliascan.status.network/address/0xe74Bd8db0440533F8915042D980AbAA86085821c)
- 목적: L2에서 L1로의 메시징을 관리
- **L2 Token Bridge Proxy**
- 주소: [`0xbC7f9571152a8e21942b2aEa4831a27f1149af19`](https://sepoliascan.status.network/address/0xbC7f9571152a8e21942b2aEa4831a27f1149af19)
- 목적: L2에서 토큰 브리징 작업을 관리
- 목적: L2에서 토큰 브릿지 작업을 관리
### 인프라 컨트랙트
- **L2 Faucet**
@@ -5,7 +5,7 @@ Status Network에서 지원되는 토큰과 해당 컨트랙트 주소의 최신
이 저장소에는 다음 내용이 포함되어 있습니다:
- L1(Sepolia)과 L2(Status Network) 양쪽의 토큰 주소
- 토큰 메타데이터(소수점, 심볼 등)
- 브지 컨트랙트 매핑
- 브릿지 컨트랙트 매핑
- Status Network에 배포된 앱 토큰
토큰 목록은 토큰 브리징 작업의 정확성과 보안을 보장하기 위해 정기적으로 유지 관리되고 업데이트됩니다.
토큰 목록은 토큰 브릿지 작업의 정확성과 보안을 보장하기 위해 정기적으로 유지 관리되고 업데이트됩니다.
@@ -9,9 +9,11 @@ keywords: [Status Network, 가스리스 트랜잭션, Linea, RLN, Rate Limiting
Status Network는 대규모 가스리스 트랜잭션 도입을 목표로 합니다. 이 가스리스 접근 방식의 핵심 구성 요소는 Vac의 Rate Limiting Nullifier로, 기존 가스 수수료 없이도 트랜잭션 속도 제한을 가능하게 합니다. 이 문서는 가스리스 트랜잭션을 안전하게 활성화하는 데 필요한 아키텍처와 통합 요소를 설명합니다.
이러한 가스리스 트랜잭션의 구현 코드는 [Status Network 모노레포](https://github.com/status-im/status-network-monorepo)에서 확인할 수 있습니다.
가스리스 트랜잭션의 구현 코드는 [Status Network 모노레포](https://github.com/status-im/status-network-monorepo?tab=readme-ov-file#architecture-components)에서 확인할 수 있습니다.
### 1.2 RLN
가스리스의 운영 수준 구현에 대한 자세한 내용은 [Karma 통합 가이드](/build-for-karma/guides)를 참조하세요.
## RLN
RLN은 위반이 발생하지 않는 한 사용자 프라이버시를 손상시키지 않으면서 스팸을 방지하도록 설계된 영지식 시스템입니다. ZKP와 Shamir의 비밀 공유를 통해 시행되는 암호화 속도 제한으로 기존 가스 수수료를 대체합니다.
@@ -21,7 +23,7 @@ RLN 특성:
- **Shamir의 비밀 공유 및 Nullifier:** 사용자는 트랜잭션에 대한 고유한 nullifier를 생성하는 데 사용되는 비밀 키를 보유합니다. 사용자가 에포크(예: 블록 또는 타임스탬프) 내에서 트랜잭션 제한을 초과하면 비밀 키가 복구 가능해져 노출됩니다.
- **스팸 탐지:** 제한을 초과하는 사용자는 효과적으로 자신의 비밀을 공개하게 되어 거부 목록 포함, 향후 높은 가스 비용 또는 잠재적인 토큰 슬래싱과 같은 처벌을 받게 됩니다.
### 1.3. RLN 멤버십 관리
### RLN 멤버십 관리
RLN은 대규모 멤버십 증명을 효율적으로 처리하기 위해 희소 머클 트리를 사용합니다. 벤치마킹 연구에 따르면 100만 계정을 지원하는 높이 20의 트리가 증명 생성 및 검증에 최적의 성능을 제공합니다. 100만 계정을 초과하는 확장성을 위해 레지스트리와 함께 여러 SMT를 사용하여 사용자를 적절한 트리로 안내할 수 있습니다.
@@ -30,24 +32,32 @@ Prover에는 Karma가 새 주소에 할당되는 Karma Contract의 이벤트를
```mermaid
graph TD
A[사용자 지갑] -->|화이트리스트 앱을 통한 첫 L2 액션| B(Karma 발급)
A -->|SN으로 브지| B
A -->|SN으로 브릿지| B
B -->|소울바운드 토큰| C{티어 할당}
subgraph "티어 제한"
D[Basic]
E[Active]
F[Regular]
G[Power User]
H[High-Throughput]
I[S-Tier]
T1[Entry]
T2[Newbie]
T3[Basic]
T4[Active]
T5[Regular]
T6[Power User]
T7[Pro User]
T8[High-Throughput]
T9[S-Tier]
T10[Legendary]
end
C --> D
C --> E
C --> F
C --> G
C --> H
C --> I
C --> T1
C --> T2
C --> T3
C --> T4
C --> T5
C --> T6
C --> T7
C --> T8
C --> T9
C --> T10
%% RLN 플로우
A -->|가스리스 Tx 제출| J[RPC 노드]
@@ -96,15 +106,15 @@ graph TD
class A wallet
class B,L karma
class C tier
class D,E,F,G,H,I tierNode
class T1,T2,T3,T4,T5,T6,T7,T8,T9,T10 tierNode
class J,K,K1,K2,K3,M,N,O rln
class P,Q,R,S,T,U,V,W sequencer
class X,Y,Z,AA gas
```
## 3. 시스템 구성 요소
## 시스템 구성 요소
### 3.1 Prover
### Prover
Prover는 세 가지 서비스로 구성된 시스템입니다:
@@ -114,7 +124,7 @@ Prover는 세 가지 서비스로 구성된 시스템입니다:
이러한 서비스는 안전한 자격 증명 관리, 증명 생성 및 트랜잭션 추적을 보장하며, gRPC는 Sequencer와의 저지연 통신을 가능하게 합니다.
### 3.2 RLN Verifier
### RLN Verifier
RLN Verifier는 sequencer 내부의 besu 플러그인으로, Java Native Interface를 통해 RLN의 Zerokit Rust 라이브러리를 활용합니다.
Verifier는:
@@ -125,7 +135,7 @@ Verifier는:
검증에 실패한 트랜잭션은 거부되며, 사용자는 일시적으로 거부 목록에 추가될 수 있습니다.
### 3.3 거부 목록
### 거부 목록
거부 목록은 할당량을 초과하거나 스팸에 참여하는 사용자를 일시적으로 제한합니다:
@@ -133,10 +143,16 @@ Verifier는:
- 사용자는 프리미엄 가스 수수료를 지불하여 제한을 우회할 수 있습니다
- 프리미엄 수수료를 지불하면 사용자가 목록에서 제거되고 추가 Karma를 획득합니다
### 3.4 `linea_estimateGas` RPC 수정
## `linea_estimateGas` RPC 수정
linea_estimateGas 메서드는 거부 목록의 사용자를 고려하도록 사용자 정의됩니다:
Status Network는 기본 Linea `linea_estimateGas`를 Karma 인식 동작으로 확장하여, 반환되는 **수수료 필드**가 발신자 주소 `from`의 Karma 잔액에 따라 달라질 수 있습니다.
`gasLimit` 계산은 기본 Linea 구현(내부적으로 표준 `eth_estimateGas` 로직을 사용)에서 변경되지 않았습니다.
- 사용자의 거부 목록 상태를 확인합니다
- 필요한 경우 프리미엄 가스 배수를 추가합니다
- 사용자에게 투명성과 정확한 가스 추정을 제공합니다
구체적으로, Status Network의 `linea_estimateGas`는:
- **거부 목록 프리미엄 적용**: 발신자가 거부 목록에 있는 경우, 노드는 정상 수수료 추정을 계산한 다음 **수수료 필드**에 프리미엄 배수를 적용합니다.
- **적격 사용자에게 가스리스 추정 반환**: 발신자에게 사용 가능한 Karma 할당량이 있는 경우, 메서드는 0의 `baseFeePerGas``priorityFeePerGas`를 반환합니다.
위 로직은 [Status Network 모노레포의 이 섹션](https://github.com/status-im/status-network-monorepo/blob/v1.0.1/besu-plugins/linea-sequencer/sequencer/src/main/java/net/consensys/linea/rpc/methods/LineaEstimateGas.java#L218)에서 오픈소스로 공개된 수정된 `LineaEstimateGas` 구현에 포함되어 있습니다.
Karma 인식 수수료 추정 동작과 `linea_estimateGas` 세부 사항은 [JSON-RPC API](/tools/rpc/json-rpc)를 참조하세요.
@@ -9,7 +9,7 @@
| **체인 ID** | 1660990954 |
| **통화 기호** | ETH |
| **블록 탐색기** | https://sepoliascan.status.network |
| **브** | https://bridge.status.network |
| **브릿** | https://bridge.status.network |
| **WebSocket RPC** | WebSocket RPC를 받으려면 [Telegram](https://t.me/statusl2)으로 문의하세요 |
이것은 Status Network 테스트넷의 공식 네트워크 세부정보입니다. 이 세부정보는 다음과 같은 용도로 사용할 수 있습니다:
@@ -18,4 +18,4 @@
- 네트워크에 dApp 연결
- 스마트 컨트랙트 검증
지갑에 네트워크를 추가하는 방법은 [Status Network 추가 가이드](./add-status-network.md)를 참조하세요.
지갑에 네트워크를 추가하는 방법은 [Status Network 추가 가이드](/overview/general-info/add-status-network)를 참조하세요.
@@ -0,0 +1 @@
# Status Network와 프라이버시
@@ -3,7 +3,7 @@ id: index
title: Status Network에 오신 것을 환영합니다
description: Status Network는 원활하고 수수료가 없는 탈중앙화 애플리케이션을 가능하게 하는 가스리스 레이어 2 블록체인 네트워크입니다. 간단한 지갑 설정, 파우셋, 배포 도구로 구축을 시작하세요.
keywords: [Status Network, 레이어 2, 가스리스 블록체인, 이더리움 스케일링, L2, validium, web3 개발, dapp 개발, 블록체인 개발]
slug: /
slug: /overview
sidebar_position: 1
---
@@ -41,16 +41,16 @@ Status Network는 Status Wallet, Keycard, Waku, Codex 등 [IFT](https://free.tec
설명 부분을 건너뛰고 바로 구축을 시작하고 싶으신가요? 시작하는 방법은 다음과 같습니다:
1. [Status Network를 지갑에 추가](/general-info/add-status-network)
2. [테스트넷 ETH 받기](/tools/testnet-faucets)
3. [자산 브리징하기](/general-info/bridge/bridging-testnet)
4. [첫 번째 컨트랙트 배포하기](/tutorials/deploying-contracts/using-remix)
1. [Status Network를 지갑에 추가](/overview/general-info/add-status-network)
2. [테스트넷 ETH 받기](/tools/core-infrastructure/testnet-faucets)
3. [자산 브릿지하기](/overview/general-info/bridge/bridging-testnet)
4. [첫 번째 컨트랙트 배포하기](/build-for-karma/deploying-contracts/using-remix)
## 지원 및 리소스
커뮤니티에 참여하고 필요한 리소스에 접근하세요:
- [텔레그램 빌더 커뮤니티](https://t.me/statusl2)에 참여
- [네트워크 세부정보](/general-info/network-details) 확인
- [컨트랙트 주소](/general-info/contract-addresses/testnet-contracts) 탐색
- [네트워크 세부정보](/overview/general-info/network-details) 확인
- [컨트랙트 주소](/overview/general-info/contract-addresses/testnet-contracts) 탐색
멋진 것을 만들 준비가 되셨나요? 지금 바로 무료 네트워크에서 여정을 시작하세요!

Some files were not shown because too many files have changed in this diff Show More