개요
GOSSIP_PRIORITY 스트림은 Hyperliquid 데이터에서 정규화된 gossipPriorityBid 이벤트를 제공합니다. 이 스트림은 밈풀(mempool) 거래 및 확정된 블록 데이터에서 파생된 각 가십 우선순위 입찰(gossip-priority bid) 동작마다 하나의 JSON 이벤트를 발행합니다.
하천 유형: GOSSIP_PRIORITY
API 이용 가능 여부: gRPC API 전용
권수: 변수 - ‘gossip-priority’ 경매 활동에 따라 달라짐
원시 데이터를 파싱하지 않고 가십/읽기 우선순위 경매 활동을 관찰하려면 GOSSIP_PRIORITY를 사용하십시오. MEMPOOL_TXS 또는 전체 블록/replica_cmds 페이로드를 직접 처리하세요.
중요: GOSSIP_PRIORITY는 고객이 시장 데이터를 더 빨리 수신했는지 여부를 측정하지 않습니다. 이 지표는 관측된 거래 데이터에 우선 매수 주문이 나타날 때만 해당 주문을 표시할 뿐입니다.
이 스트림은 다음과 같은 경우에 유용합니다:
- 가십 경매 모니터링 - 가십 우선순위 입찰 제출 내역을 실시간으로 추적
- 읽기 우선순위 분석 - 가십 우선순위 패턴 이해하기
- 확정 전 가시성 - 블록에 포함되기 전 멤풀에서 가십 우선순위 입찰 정보를 확인
- 확정 추적 - 가십 우선순위 입찰의 실행 결과 모니터링
데이터 출처
GOSSIP_PRIORITY 스트림은 다음 두 소스에서 이벤트를 가져옵니다:
| 출처 | 설명 | 추가 필드 |
|---|---|---|
| mempool_txs | 메ンプ풀에서 합의 전 단계로 우선순위가 높은 트랜잭션에 대한 처리. 해당 이벤트는 아직 확정되지 않았으며, 최종 확정된 체인에서 거부되거나 순서가 변경되거나 아예 포함되지 않을 수 있습니다. | first_seen_time, tx_hash |
| replica_cmds | 완료된 거래 처리를 나타내는 확인된 블록 데이터. | 블록 번호, 블록 시간, 번들 인덱스, 결과 |
이벤트 구조
멤풀 이벤트
{
"type": "gossip",
"source": "mempool_txs",
"first_seen_time": "2026-06-02T13:48:49.578877529",
"tx_hash": "0x...",
"signed_action_index": 0,
"maxGas": 1000000,
"slotId": 123,
"ip": "..."
}
확인된 이벤트 (replica_cmds 소스)
확인된 가십 관련 행사에는 다음이 포함될 수도 있습니다: 사용자, 방송인, 블록 번호, block_time, 번들 인덱스, 결과.
{
"type": "gossip",
"source": "replica_cmds",
"block_number": 581285917,
"block_time": "2026-06-02T13:48:49.626754186",
"bundle_index": 0,
"maxGas": 1000000,
"slotId": 123,
"ip": "...",
"user": "0x...",
"broadcaster": "0x..."
}
응답 필드
| 분야 | 유형 | 설명 |
|---|---|---|
| 유형 | 문자열 | 이벤트 유형: "가십" |
| 출처 | 문자열 | 데이터 출처: “mempool_txs”(합의 전) 또는 “replica_cmds”(확정) |
| 첫_확인_시간 | 문자열 | (mempool_txs 전용) 멤풀에서 처음 감지된 시점의 ISO 8601 타임스탬프 |
| tx_hash | 문자열 | 거래 해시 (0x 접두사 포함) |
| signed_action_index | 숫자 | (mempool_txs 전용) 트랜잭션 내 서명된 액션의 인덱스 |
| maxGas | 숫자 | 가십 우선 입찰에 대한 최대 가스 |
| slotId | 숫자 | 가십 우선순위 입찰의 슬롯 ID |
| ip | 문자열 | 입찰과 관련된 IP 주소 |
| 블록 번호 | 숫자 | (replica_cmds 전용) 작업이 확인된 블록 번호 |
| block_time | 문자열 | (replica_cmds 전용) 블록의 ISO 8601 타임스탬프 |
| 번들 인덱스 | 숫자 | (replica_cmds 전용) 블록 내 번들의 인덱스 |
| 사용자 | 문자열 | (replica_cmds 전용) 사용자 주소 |
| 방송인 | 문자열 | (replica_cmds 전용) 브로드캐스터 주소 |
| 결과 | 문자열 | (선택 사항, replica_cmds 전용) 실행 결과 |
필터링
GOSSIP_PRIORITY 스트림은 표준 gRPC 필터링을 지원합니다. 유용한 필터:
| 분야 | 예시 값 | 설명 |
|---|---|---|
| 출처 | mempool_txs, replica_cmds | 데이터 소스별로 필터링 |
| 유형 | 가십 | 이벤트 유형별로 필터링 |
필터 예시
// Get gossip priority events from mempool
filters: {
"source": FilterValues { values: ["mempool_txs"] },
"type": FilterValues { values: ["gossip"] }
}
// Get confirmed gossip priority events
filters: {
"source": FilterValues { values: ["replica_cmds"] }
}
필터링에 대한 자세한 내용은 ‘스트림 필터링 가이드’를 참조하십시오.
권장 사용법
가십 우선 순위 모니터링의 경우:
GOSSIP_PRIORITY
고객은 과거 기록을 검색해야 할 경우 이벤트를 영구 저장해야 합니다. StreamData는 실시간 스트림이므로, 자체적으로는 과거 기록 재생을 지원하지 않습니다.
gRPC
파이썬 예제
import grpc
import json
from pb import streaming_pb2, streaming_pb2_grpc
GRPC_ENDPOINT = 'your-endpoint.hype-mainnet.quiknode.pro:10000'
AUTH_TOKEN = 'your-auth-token'
def stream_gossip_priority():
credentials = grpc.ssl_channel_credentials()
channel = grpc.secure_channel(
GRPC_ENDPOINT,
credentials,
options=[
('grpc.max_receive_message_length', 100 * 1024 * 1024),
]
)
stub = streaming_pb2_grpc.StreamingStub(channel)
metadata = [('x-token', AUTH_TOKEN)]
def request_generator():
# Subscribe to GOSSIP_PRIORITY
subscribe_request = streaming_pb2.SubscribeRequest()
subscribe_request.subscribe.stream_type = streaming_pb2.StreamType.GOSSIP_PRIORITY
yield subscribe_request
# Keep connection alive with periodic pings
while True:
time.sleep(30)
ping_request = streaming_pb2.SubscribeRequest()
ping_request.ping.timestamp = int(time.time() * 1000)
yield ping_request
stream = stub.StreamData(request_generator(), metadata=metadata)
for response in stream:
if response.HasField('data'):
data = json.loads(response.data.data)
print(f"Gossip Priority Event")
print(f"Source: {data.get('source')}")
print(f"Slot ID: {data.get('slotId')}")
print(f"Max Gas: {data.get('maxGas')}")
print(f"TX Hash: {data.get('tx_hash')}")
if data.get('source') == 'replica_cmds':
print(f"Outcome: {data.get('outcome')}")
print(f"Block: {data.get('block_number')}")
print(f"User: {data.get('user')}")
print("---")
if __name__ == "__main__":
stream_gossip_priority()
JavaScript/Node.js 예제
const grpc = require('@grpc/grpc-js');
const protoLoader = require('@grpc/proto-loader');
const GRPC_ENDPOINT = 'your-endpoint.hype-mainnet.quiknode.pro:10000';
const AUTH_TOKEN = 'your-auth-token';
// Load proto file
const packageDefinition = protoLoader.loadSync('streaming.proto');
const proto = grpc.loadPackageDefinition(packageDefinition).hyperliquid;
// Create channel with credentials
const credentials = grpc.credentials.createSsl();
const client = new proto.Streaming(GRPC_ENDPOINT, credentials);
const metadata = new grpc.Metadata();
metadata.add('x-token', AUTH_TOKEN);
// Subscribe to GOSSIP_PRIORITY
const call = client.StreamData(metadata);
call.on('data', (response) => {
if (response.data) {
const data = JSON.parse(response.data.data);
console.log(`Gossip Priority Event`);
console.log(`Source: ${data.source}`);
console.log(`Slot ID: ${data.slotId}`);
console.log(`Max Gas: ${data.maxGas}`);
console.log(`TX Hash: ${data.tx_hash}`);
if (data.source === 'replica_cmds') {
console.log(`Outcome: ${data.outcome}`);
console.log(`Block: ${data.block_number}`);
console.log(`User: ${data.user}`);
}
console.log('---');
}
});
call.on('error', (error) => {
console.error('Stream error:', error);
});
// Send subscription
call.write({
subscribe: {
stream_type: 10 // GOSSIP_PRIORITY
}
});
// Send periodic pings
setInterval(() => {
call.write({
ping: { timestamp: Date.now() }
});
}, 30000);
중요 사항
- 파생 스트림 - GOSSIP_PRIORITY는 MEMPOOL_TXS 및 BLOCKS의 데이터를 정규화한 파생 스트림으로, 원시 페이로드를 직접 파싱할 필요가 없도록 해줍니다.
- 지연 시간 측정이 아님 - 이 스트림은 고객이 시장 데이터를 더 빨리 수신했는지 여부를 측정하지 않으며, 우선순위 입찰 동작만 표시합니다.
- 이중 출처 - 이벤트는 멥풀(합의 전)과 확정된 블록(합의 후) 모두에서 발생합니다.
- 압축 - 대역폭 효율성을 높이기 위해 gRPC zstd 압축을 활성화하는 것을 고려해 보세요.
관련 Streams
- ORDER_PRIORITY - 우선순위 수수료 주문 이벤트
- MEMPOOL_TXS - 원시 멥풀 트랜잭션 (컨센서스 전 이벤트의 원본 데이터)
- 블록 - 원시 블록체인 데이터 (확인된 이벤트의 원본 데이터)
gRPC 설정에 대한 자세한 내용은 gRPC 문서를 참조하십시오.