> ## Documentation Index
> Fetch the complete documentation index at: https://docs.optimism.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Sequencer Defined Metering 활성화하기

> OP Stack sequencer에서 Sequencer Defined Metering을 켜거나 끄고, 어떤 게이트가 이를 막고 있는지 확인합니다.

> [!WARNING]
>
> SDM은 아직 활성화되지 않았습니다. 기본 공개 `op-reth`는 SDM 합의 및 검증 메커니즘을
> 지원하지만, 환불을 생성하는 정책은 구현하지 **않습니다**. 운영자 게이트를 활성화하더라도
> 환불을 발행하거나 post-exec 트랜잭션을 추가하지 않습니다.

이 가이드는 \*\*Sequencer Defined Metering(SDM)\*\*의 운영자 제어 수단, 즉 SDM을 켜고,
확인하고, 끄는 방법을 다룹니다. SDM이 무엇을 하는지, 그리고 활성화되면 체인에서
무엇이 바뀌는지는 [SDM 설명서](https://docs.optimism.io/ko/op-stack/features/sdm.md)를 참고하십시오.

## 시작하기 전에

[Lagoon 하드포크](https://docs.optimism.io/ko/op-stack/protocol/hardforks/lagoon.md)를 구현한 버전의 `op-reth`와
`op-node` 또는 `kona-node`를 실행하십시오.

검증자(verifier) 운영자는 별도로 옵트인할 것이 없으며 SDM 구성도 없습니다. 검증자
node만 운영한다면 최신 소프트웨어를 실행하는 것만으로 충분하며, 이 페이지의 나머지
내용은 해당되지 않습니다.

## 체인 운영자 옵트인

sequencer는 블록의 타임스탬프 시점에 Lagoon이 활성화되어 있고 운영자가 해당 node에서
옵트인한 경우에만 post-exec 트랜잭션을 추가합니다. 둘 중 하나라도 충족되지 않으면 node는
레거시 gas 계산 방식으로 블록을 생성하며 아무것도 추가하지 않습니다.

옵트인은 Lagoon 이전이나 이후에 설정할 수 있으며, Lagoon이 활성화되기 전까지는 아무런
효과가 없습니다. 시점을 맞출 필요가 없으며, 활성화 시점에 변경해야 할 사항도 없습니다.

설정 방법은 세 가지입니다.

| 설정 수단 | 값 | 참고 |
| - | - | - |
| `--rollup.operator-sdm-opt-in` | `true` / `false` | CLI 플래그이며 부팅 시 읽힙니다. 기본값은 `false`입니다. |
| `OP_RETH_OPERATOR_SDM_OPT_IN` | `true` / `false` | 동일한 플래그에 대한 환경 변수 바인딩입니다. |
| `admin_setOperatorSdmOptIn` | `true` / `false` | Admin RPC입니다. 재시작 없이 다음에 생성되는 블록부터 적용됩니다. |

RPC는 메모리상의 값만 변경합니다. 재시작하면 값이 사라지며, 역할을 넘겨받는 대기
sequencer는 자체 구성으로 시작합니다. 유지하려는 값은 CLI 플래그나 환경 변수로 설정하고,
재시작 없이 변경해야 할 때는 RPC를 사용하십시오.

## 어떤 게이트가 막고 있는지 확인하기

`admin_sdmStatus`는 두 게이트를 모두 보고합니다. 선택적으로 쿼리 타임스탬프를 받으며,
기본값은 현재 시각입니다. Lagoon이 아직 예약되지 않은 상태에서 옵트인한 sequencer의 경우:

```json title="admin_sdmStatus" theme={null}
{
  "operatorSdmOptIn": true,
  "protocolActive": false,
  "effective": false,
  "activationTime": null
}
```

`effective`는 두 게이트의 AND 결과이며, node가 리베이트를 생성하고 있는지 알려 주는
필드입니다. `activationTime`은 Lagoon 활성화가 예약되면 그 타임스탬프이며, 그 전에는
`null`입니다.

SDM이 활성화된 sequencer가 생성한 영수증(receipt)을 검사하려면:

```bash title="Inspect a receipt" theme={null}
cast receipt <TX_HASH> --rpc-url <RPC_URL> --json | jq '.opGasRefund'
```

해당 트랜잭션을 포함하는 블록을 가져와 마지막 트랜잭션의 type이 `0x7D`인지 확인할 수도 있습니다.
리베이트가 없는 블록에는 post-exec 트랜잭션이 없으므로, 트랜잭션이 없다는 사실만으로는
프로토콜이 활성화되었는지 알 수 없습니다. 대신 `admin_sdmStatus`를 확인하십시오.

## SDM 비활성화

sequencer가 리베이트를 발행하지 않도록 하려면:

1. 해당 sequencer에서 `admin_setOperatorSdmOptIn(false)`를 호출합니다. 다음 payload부터
   적용되며 재시작이 필요하지 않습니다.
2. `admin_sdmStatus`를 확인하여 `effective`가 이제 `false`인지 확인합니다.
3. 배포 환경에서 `OP_RETH_OPERATOR_SDM_OPT_IN=false`(또는 CLI 플래그)를 설정합니다. 그렇지 않으면
   재시작 시 다시 활성화됩니다.

`cast`를 사용한 1단계와 2단계:

```bash title="Disable SDM at runtime" theme={null}
cast rpc admin_setOperatorSdmOptIn false --rpc-url <SEQUENCER_ADMIN_RPC_URL>
cast rpc admin_sdmStatus --rpc-url <SEQUENCER_ADMIN_RPC_URL> | jq '.effective'
```

이는 이후 sequencer가 생성하는 블록에만 영향을 줍니다. 이미 체인에 있는 post-exec
트랜잭션은 계속 유효하며 검증자는 이를 계속 검증하므로, 검증자 운영자와 조율할 필요가
없고 구성이나 하드포크를 변경할 필요도 없습니다.

## 기본 `op-reth`의 프로덕션 동작

릴리스된 공개 `op-reth`는 null 환불 정책을 사용합니다. Lagoon이 활성화되어 있고
`admin_setOperatorSdmOptIn(true)`가 호출된 경우에도 비어 있지 않은 환불 payload를 생성하거나
post-exec 트랜잭션을 추가하지 않습니다. admin 인터페이스는 프로토콜 호환성과 다운스트림
sequencer 통합을 위해 계속 제공되지만, 기본 `op-reth`에서 정책을 선택하는 인터페이스는
아닙니다.

## 환불 정책과 OP Enterprise

환불 정책은 체인의 요구에 맞게 조정되며, OP Enterprise 고객을 위한 프리미엄 기능입니다.
정책은 어떤 트랜잭션이 얼마만큼 리베이트를 받을지 결정하므로 sequencer마다 다릅니다.
OP Enterprise 고객이 되는 데 관심이 있다면
[OP Enterprise 팀에 문의](https://optimism.io/learn-more)하십시오.

## 디버그 재실행

`debug_replaySDMBlock`은 운영자 및 연구용 진단 도구입니다. 과거 블록의 post-exec가 아닌
트랜잭션을 표준 gas 계산 방식으로 다시 실행하여 각 트랜잭션의 원시(리베이트 이전) gas를
복원하고, 이를 블록이 주장한 환불과 함께 보고하며, 명세의
[유효성 규칙](https://specs.optimism.io/protocol/lagoon/sdm.html#validity-rules)을 위반하는
주장을 표시합니다.

환불이 원래 얼마였어야 하는지를 다시 계산하지는 않습니다. 이를 위해서는 sequencer의 정책이
필요한데, 기본 `op-reth`는 이를 구현하지 않습니다. 이 엔드포인트는 과거 상태가 필요하며
공개 RPC 인터페이스에 노출되어서는 안 됩니다.

## 다음 단계

* 메커니즘, canonical gas, 정산에 대해서는 [SDM 설명서](https://docs.optimism.io/ko/op-stack/features/sdm.md)를 읽어 보십시오.
* [Lagoon 하드포크](https://docs.optimism.io/ko/op-stack/protocol/hardforks/lagoon.md)에 포함된 다른 내용을 확인하십시오.
