bitpro가 원문에서 글자만 모은 내용이에요. 표·그림·수식은 빠지거나 깨질 수 있어요. 전체 54쪽 중 40쪽
be retuned over time; the authoritative table is always the live one returned by `getTiers()` (see [Reading discounts on chain](#reading-discounts-on-chain)).
### Which transactions accrue usage
| Transaction type | Accrues usage | Receives a discount |
| ------------------------------------------------------ | ----------------------------------- | ------------------- |
| Ordinary transactions you sign and send | Yes | Yes |
| Transactions that revert or run out of gas | Yes - you paid for the gas | Yes |
| [Reactivity](/developer/reactivity) handler executions | Yes, to the subscription owner | Yes |
| Reactivity subscription deactivations | No - they consume no chargeable gas | n/a |
| Protocol-level and zero-gas transactions | No | No |
Because a Reactivity subscription owner may be a contract, contract accounts can accrue usage and earn discounts for the handler executions they pay for.
## Keeping and losing a discount
Your discount is derived from a rolling window, not from a single epoch, so it is stable across quiet periods. If you stop transacting entirely, your usage ages out gradually and your discount only reaches zero after the full window - 16 epochs, roughly 80 minutes - has passed with no activity.
There is no penalty for bursty traffic. Usage accumulates into the window whenever you are busy, and a spike is credited in full.
## What this means for sending transactions
{% hint style="warning" %}
**You must still submit a `gasPrice` at or above the full, undiscounted base fee.** The discount is applied when your transaction executes, not when it is accepted.
{% endhint %}
Concretely:
* **Transaction admission is undiscounted.** A transaction whose `gasPrice` is below the current base fee is rejected from the mempool, whatever your discount. Keep quoting `eth_gasPrice` (or your wallet's estimate) as normal.
* **Balance requirements are undiscounted while pending.** The node reserves `gasPrice * gas` at the full price for in-flight transactions, so you need to be able to cover the undiscounted cost even though you will be charged less.
* **You are charged the discounted price.** The saving shows up as a smaller balance deduction, and in `effectiveGasPrice` on the receipt.
The practical upshot for a dApp is that no change to your submission logic is needed. Fee estimation, `gasPrice` selection and balance checks all continue to work against the undiscounted base fee; your users simply pay less.
## RPC behaviour
No new RPC methods or response fields are involved. Existing fields reflect the discount where - and only where - they describe an actual charge.
| Method / field | Reflects the sender's discount? |
| ---------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
| `effectiveGasPrice` on a transaction receipt | **Yes** - the price actually charged. This is the authoritative record. |
| `gasPrice` on `eth_getTransactionByHash` / `...ByBlock...` | **Yes** - note this reports the price *charged*, which for a discounted sender is lower than the `gasPrice` you submitted. |
| `debug_traceTransaction`, `debug_traceBlockByHash`, `debug_traceBlockByNumber` | **Yes** - replayed with exactly the discount that was charged at the time. |
| `eth_call`, `eth_estimateGas`, `eth_createAccessList` against `latest` / `pending` | **Yes** - simulated with the `from` account's current discount. |
| `eth_call` or `debug_traceCall` pinned to a **past** block | **No** - historical simulations deliberately run undiscounted. |
| `eth_gasPrice` | **No** - the request has no sender, so it returns the network base price. |
| `eth_feeHistory`, `block.baseFeePerGas` | **No** - these describe blocks, not senders. |
| `eth_maxPriorityFeePerGas` | Unchanged (priority fees are never discounted). |
{% hint style="info" %}
Because receipts record the discount that was applied, a transaction's `effectiveGasPrice` is reproducible forever, even after the sender's discount has changed or expired.
{% endhint %}
## Reading discounts on chain
Discounts live in the enshrined `GasDiscounts` contract, at a per-network address. The contract is a UUPS proxy, so the address is stable across upgrades.
Look the address up for the network you are on, rather than hardcoding it, using the `somnia_getProtocolParameters` method:
```bash
cast rpc somnia_getProtocolParameters '["latest"]' \
--rpc-url https://api.infra.testnet.somnia.network \
| jq -r '.protocol_parameters.gas_discounts_contract_address'
```
The useful read-only views are:
| View | Returns |
| ----------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `getTiers() → (uint256 gasThreshold, uint256 discountBps)[]` | The live tier table. `gasThreshold` is gas used **over the whole rolling window**; thresholds are inclusive, and the highest one you reach applies. |
| `getAccountsWithDiscountsForEpoch() → (address[] accounts, uint256[] discountBps, uint256 hotAccountGasThreshold, uint256 maxReportedAccounts)` | The discount set active for the current epoch - only accounts earning a non-zero discount, in ascending address order - plus the per-epoch minimum gas and the number of accounts recorded per epoch. |
| `getTrackedAccounts() → (address[] accounts, uint256[] discountBps, uint256[] rollingGasUsed)` | Every account with a live usage window, including those not yet earning a discount, with each window's total. |
| `lastReportedEpoch() → uint256` | The epoch of the most recent update. |
Discount values in these responses are in basis points, where `10000` is 100% - so a 70% discount reads as `7000`.
For example, to fetch the tier table and the current discount set:
```bash
PROXY=$(cast rpc somnia_getProtocolParameters '["latest"]' \
--rpc-url $RPC | jq -r '.protocol_parameters.gas_discounts_contract_address')
cast call $PROXY "getTiers()((uint256,uint256)[])" --rpc-url $RPC
cast call $PROXY "getAccountsWithDiscountsForEpoch()(address[],uint256[],uint256,uint256)" --rpc-url $RPC
```
{% hint style="info" %}
There is deliberately no per-account lookup function. To find your own discount, read the full set and filter client-side; both arrays are sorted ascending by address, so a binary search is possible. `rollingGasUsed` from `getTrackedAccounts()` is each window's total **as of the last update**, not aged forward to the current epoch.
{% endhint %}
The simplest way to confirm a discount is being applied to real transactions is to compare `effectiveGasPrice` on one of your receipts against the block's base gas price.
### Events
| Event | Emitted |
| ------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
| `DiscountSetComputed(uint256 indexed epochReceivingDiscounts, uint256 indexed setCounter, uint256 numDiscountedAccounts)` | Once per epoch, naming the epoch the new discount set applies to. |
| `HotAccountsReported(uint256 indexed epoch, address[] accounts, uint256[] gasUsedInEpoch)` | Once per epoch, with that epoch's tracked usage. Addresses are in the payload, not indexed, so you cannot filter by address. |
| `TiersUpdated(Tier[] newTiers)` | When the tier table changes. |
| `ReportingParametersUpdated(uint256 hotAccountGasThreshold, uint256 maxReportedAccounts)` | When the per-epoch minimum gas or the number of accounts recorded per epoch changes. |
Indexing `DiscountSetComputed` and `TiersUpdated` is the cheapest way to keep a dashboard in sync without polling the full set every epoch.
## See also
* [Somnia Gas Differences To Ethereum](/developer/deployment-and-production/somnia-gas-differences-to-ethereum) - how Somnia's gas costs per operation differ from Ethereum's
* [SOMI coin](/developer/network-info/somi-coin) - denominations and the native gas currency
# Ecosystem
# Ecosystem Showcase
Please visit [Somnia Ecoystem](https://somnia.network/ecosystem) to explore projects within the ecosystem.
<figure><img src="https://2122549367-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkYErT9t3BJtpPfejLO6I%2Fuploads%2FzeWPMz03qJkoETIQspea%2FEkran%20Resmi%202026-05-22%2018.57.02.png?alt=media&token=4c608ba2-31ef-488e-b957-b57f3a12af6d" alt=""><figcaption></figcaption></figure>
# Ecosystem Tools
Somnia is built with a robust ecosystem of infrastructure providers that enable developers, projects, and businesses to integrate seamlessly with the network.
With Somnia's ecosystem of infrastructure partners, developers have access to scalable RPCs, smart contract tools, oracles, account abstraction, identity solutions, and analytics.
Each partner provides critical tooling, APIs, and services to power decentralized applications (dApps) on Somnia. Below is an overview of our key Infrastructure Partners and resources to get started.
{% hint style="success" %}
**Developers who are deploying Smart Contracts and need Somnia Test Tokens (STT):**\
\
Please join the [Discord](https://discord.com/invite/somnia). Go to the `#dev-chat` channel, tag the Somnia DevRel, `@emreyeth` and request Test Tokens.\
\
You can also join the [Somnia Developer Telegram](https://t.me/+s_oRMnGpOyQ3ODQ0) or use [Faucet](https://testnet.somnia.network/).\
\
You can also email `developers@somnia.foundation` with a brief description of what you are building and your GitHub profile.
{% endhint %}
| Service | Provider |
| --------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
| [RPC](/developer/deployment-and-production/ecosystem/ecosystem-tools/rpc) | Ankr, Public Node, Stakely, Validation Cloud |
| [Oracles](/developer/deployment-and-production/ecosystem/ecosystem-tools/oracles) | DIA |
| [Subgraphs](/developer/deployment-and-production/ecosystem/ecosystem-tools/subgraphs) | Protofire, Ormi |
| [Wallet Provider](/developer/deployment-and-production/ecosystem/ecosystem-tools/wallet-providers) | Privy, Thirdweb |
| [Safes](/developer/deployment-and-production/ecosystem/ecosystem-tools/safes) | Palmera DAO |
| [Explorers](/developer/deployment-and-production/ecosystem/ecosystem-tools/explorers) | Block Scout |
| [SDKs](/developer/deployment-and-production/ecosystem/ecosystem-tools/sdks) | Sequence, Thirdweb |
| [On Ramps](/developer/deployment-and-production/ecosystem/ecosystem-tools/on-ramps) | Banxa |
| [APIs](/developer/deployment-and-production/ecosystem/ecosystem-tools/apis) | Ormi |
| [Account Abstraction](/developer/deployment-and-production/ecosystem/ecosystem-tools/account-abstraction) | Pimlico |
<br>
# RPC
## [Ankr](https://ankr.com)
Ankr provides scalable RPC and API services to interact with the Somnia blockchain efficiently. Developers can use Ankr's enterprise-grade infrastructure to enhance dApp performance.
### Resources
* [Ankr RPC for Somnia](https://www.ankr.com/rpc/somnia/)
***
## Public Node
Public Node by All Nodes provides fast, free, and privacy-first RPC endpoints for Somnia Network.
### Resources
* [Public Node RPC for Somnia](https://somnia.publicnode.com/)
***
## Stakely
Stakely is an enterprise-grade infrastructure providerr, trusted by developers and institutions.
### Resources
* [Stakely RPC for Somnia](https://somnia-json-rpc.stakely.io/)
***
## Validation Cloud
Validation Cloud is the world’s fastest node provider according to Compare Nodes. With 50 million compute units available for use without a credit card and a scale tier that never imposes rate limits, Validation Cloud is built to support the most rigorous, low-latency workloads. Somnia Testnet & Somnia Mainnet are supported.
### Resources
* [Link](https://www.validationcloud.io/somnia)
# Oracles
## [DIA](https://www.diadata.org/)
DIA (Decentralized Information Asset) provides real-time on-chain oracles and trusted price feeds for decentralized applications on Somnia. This is critical for DeFi, lending, and trading protocols.
### Resources
* [Somnia Price Oracles](https://docs.diadata.org/use-nexus-product/how-to-dia-nexus-oracles/access-the-oracle/somnia-price-oracles)
* [How to Integrate DIA Price Feeds](/developer/building-dapps/oracles/dia-price-feeds)
***
## [Protofire](http://protofire.io/)
Protofire deploys custom, compatible oracles using the same data providers and node operators, allowing protocols to connect to their network without modifying Smart Contracts.
### Resources
* [Price Feeds](/developer/building-dapps/oracles/protofire-price-feeds)
* [Verifiable Randomness Function](/developer/building-dapps/oracles/using-verifiable-randomness-vrf)
---
[Next Page](https://docs.somnia.network/llms-full.txt/1)
# Subgraphs
## [Protofire](http://protofire.io/)
Protofire deploys custom, compatible oracles using the same data providers and node operators, allowing protocols to connect to their network without modifying Smart Contracts.
### Resources
* [Create Subgraphs](http://somnia.chain.love/)
* [Documentation](/developer/building-dapps/data-indexing-and-querying/protofire-subgraph)
***
## [Ormi](https://ormilabs.com/)
Ormi is the only unified Web3 data layer to supercharge live, historical, and AI-powered blockchain data applications
### Resources
* [Create Subgraphs](https://subgraph.somnia.network/)
* [Documentation](/developer/building-dapps/data-indexing-and-querying/ormi-subgraph)
# Wallet Providers
## [Privy](https://docs.privy.io/welcome)
Privy is a secure, embeddable wallet infrastructure provider that allows developers to authenticate users, manage sessions, and provide seamless wallet experiences within dApps.
### Resources
* [Documentation](/developer/building-dapps/wallet-integration-and-auth/authenticating-with-privy)
***
## [Sequence](https://sequence.build/)
Sequence is a smart contract wallet & account abstraction provider that enables gasless transactions and seamless user onboarding to dApps.
### Resources
* [Documentation](https://sequence.build/landing)
***
## [Thirdweb](https://thirdweb.com)
Thirdweb simplifies smart contract deployment, account abstraction, and Web3 development on Somnia. It offers gasless transactions, token management, and SDKs for seamless dApp building.
### Resources
* [Thirdweb Somnia Docs](https://thirdweb.com/somnia)
* [Documentation](broken://pages/aOYyzpAzWXTYK0tWrdA7)
# Safe
## [Palmera DAO](https://www.palmeradao.xyz/)
Palmera is a multi-safe and multi-chain treasury management platform designed to simplify on-chain financial operations. It offers a unified dashboard for managing multiple Safes across various supported chains, enhancing financial transparency and control for DAOs and organizations.
### Resources
* [Documentation](https://docs.palmeradao.xyz/palmera)
# Explorers
## Blockscout
Blockscout provides blockchain analytics & explorer services for Somnia. Developers and users can access on-chain transaction data, addresses, and smart contracts.
Testnet: <https://shannon-explorer.somnia.network/>\
Mainnet: <https://explorer.somnia.network/>
## Exploreme
Stakeme provides blockchain analytics & explorer services for Somnia. Developers and users can access on-chain transaction data, addresses, and smart contracts.\
\
Testnet: <https://testnet.somnia.exploreme.pro/>\
Mainnet: <https://somnia.exploreme.pro/>
# SDKs
## [Sequence](https://sequence.build/)
Sequence is a smart contract wallet & account abstraction provider that enables gasless transactions and seamless user onboarding to dApps.
### Resources
* [Documentation](https://sequence.build/landing)
***
## [Thirdweb](https://thirdweb.com)
Thirdweb simplifies smart contract deployment, account abstraction, and Web3 development on Somnia. It offers gasless transactions, token management, and SDKs for seamless dApp building.
### Resources
* [Thirdweb Somnia Docs](https://thirdweb.com/somnia-shannon-testnet)
* [Deploy Smart Contracts on Somnia](/developer/development-frameworks/deploy-with-thirdweb)
* [Account Abstraction with Somnia](/developer/building-dapps/account-abstraction/smart-wallet-app-with-thirdweb)
* [Thirdweb Faucet](https://thirdweb.com/somnia-shannon-testnet)
# On Ramps
## [Banxa](https://banxa.com/)
Seamlessly integrate crypto-fiat exchange, transfer, and compliance solutions to expand globally and unlock new revenue streams.
### Resources<br>
[Documentation](https://docs.banxa.com/docs/tutorial)
# Account Abstraction
## Pimlico
Pimlico, the world's most advanced ERC-4337 account abstraction infrastructure platform. This guide will help you understand Pimlico's ecosystem and get you started with building applications using our tools and services.
### Resources
* [Tutorial](https://docs.pimlico.io/guides/tutorials/tutorial-1)
# APIs
## [Ormi](https://ormilabs.com/)
Ormi is the only unified Web3 data layer to supercharge live, historical, and AI-powered blockchain data applications
### Resources
* [API List](https://subgraph.somnia.network/)
* [Documentation](/developer/building-dapps/data-indexing-and-querying/using-data-apis-ormi)
# Support and Community
# General FAQs
This comprehensive FAQ covers everything you need to know about Somnia Network, from blockchain basics to advanced development topics. Whether you're new to blockchain or an experienced developer, you'll find answers to common questions about Somnia's high-performance Layer 1 blockchain.
***
## Beginner's Guide
#### What is Blockchain?
<details>
<summary>Q: What is a blockchain?</summary>
A: A blockchain is a distributed digital ledger that records transactions across multiple computers in a way that makes it nearly impossible to change, hack, or cheat the system. Each "block" contains a cryptographically secured list of transaction records, and these blocks are linked together in chronological order to form a "chain."
</details>
<details>
<summary>Q: How does Somnia Network work?</summary>
A: Somnia is a high-performance, cost-efficient EVM-compatible Layer 1 blockchain capable of processing over 1,000,000 transactions per second (TPS) with sub-second finality. It's designed for real-time mass-consumer applications like games, social applications, and metaverses, all running fully on-chain.
</details>
<details>
<summary>Q: What makes blockchain different from traditional databases?</summary>
A: Unlike traditional databases that are controlled by a central authority:
* Decentralization: No single point of control or failure
* Immutability: Once data is recorded, it cannot be easily altered
* Transparency: All transactions are visible to network participants
* Consensus: Network participants must agree on the validity of transactions
* Cryptographic Security: Advanced encryption protects data integrity
</details>
<details>
<summary>Q: What is EVM compatibility?</summary>
A: EVM (Ethereum Virtual Machine) compatibility means that Somnia can run the same smart contracts and applications that work on Ethereum, making it easy for developers to migrate or deploy existing Ethereum applications on Somnia.
</details>
<details>
<summary>Q: What are the main benefits of using Somnia?</summary>
A:
* High Performance: Over 1 million TPS with sub-second finality
* Cost Efficiency: Lower transaction fees compared to other networks
* Real-time Applications: Suitable for gaming, social apps, and metaverses
* Developer Friendly: EVM compatibility for easy migration
* Scalability: Built to serve millions of users simultaneously
</details>
***
## End-User Guide
#### Digital프로젝트로 돌아가기