지정한 이벤트가 발생할 때마다 알림을 제공합니다. 사용자는 이를 통해 네트워크 상에서 발생하는 중요한 활동을 빠르게 파악할 수 있습니다.
Supported Network
Network | Supporting |
---|---|
Ethereum Mainnet | ❌ |
Ethereum Testnet (sepolia) | ❌ |
Ethereum Testnet (holesky) | ❌ |
Polygon Mainnet | ❌ |
Polygon Testnet (amoy) | ❌ |
Arbitrum Mainnet | ❌ |
Arbitrum Testnet (sepolia) | ❌ |
Optimism Mainnet | ❌ |
Optimism Testnet (sepolia) | ❌ |
Kaia Mainnet | ❌ |
Kaia Testnet (kairos) | ❌ |
Aptos Mainnet | ✅ |
Aptos Testnet | ✅ |
Webhook 생성 요청 예제
eventType
값을 Event로 설정하는 경우, 사용 가능한 condition 객체 필드는 아래와 같습니다.
Key | Type | Required | Description | Example Value |
---|---|---|---|---|
eventType | String | true | 모니터링 하고자하는 이벤트 타입. 이벤트 타입은 모듈에서 정의한 event struct의 이름을 의미합니다. 이 필드는 "module_address::module_name::event_name" 형식으로 입력합니다. | "0x1::account::CoinRegisterEvent" |
eventAccountAddress | String | true | 모니터링 하고자하는 이벤트를 발생시키는 주소 | "0x84e6da2230d45f8e6e1e607fa304f92a2c0691cd85caa43c4920727547c5b07f" |
eventData | Object | false | 이벤트 데이터 필터링 조건을 지정하는 객체. 이 필드를 활용하면 특정 키와 값을 지정하여 원하는 이벤트만 필터링할 수 있습니다. JSON 객체 형식의 data를 포함한 이벤트에 대해서만 필터링을 지원하며, 최대 3단계 중첩된 값까지 입력 가능합니다. 입력한 키와 값이 이벤트 데이터와 정확히 일치하는 경우에만 필터링됩니다. | {"sender": "0xcafe", "receiver": "0xface"} |
eventData Condition은 어떻게 활용할 수 있나요?
eventData
Condition은 Event 객체 내부에 Custom하게 구성할 수 있는 데이터 영역에 대한 필터링 옵션으로 사용할 수 있다는 점에서 더욱 세밀한 비즈니스 로직 구현을 가능하게 합니다.예를 들어, 랜덤 함수를 실행하여 경품 당첨과 같은 기능을 구현하는 경우 실행 과정에서 발생시키는 Event 객체에 대해
eventType
필터링을 적용하여 경품 당첨 이벤트의 실행 여부를 알 수 있지만, 당첨된 사용자에 대한 Event만을 받고 싶은 경우에 별도로 필터링 로직을 구현해야 하기 때문에 불필요한 CU 소모 및 구현의 번거로움이 있을 수 있습니다. 이런 경우 Event 객체를 정의하고 구현하는 과정에서 data 영역 내부에 당첨 결과를 포함하도록 한 뒤 해당 key에 대해eventData
필터를 추가로 설정하여, 당첨된 사용자에 대한 Webhook 메세지만 수신하는 형태로 효과적인 구현이 가능합니다.
`0x1::transaction_fee::FeeStatement` 는 eventType에 사용할 수 없나요?
네, 이 이벤트는 가스비를 소모하는 모든 user transaction에 포함됩니다.
따라서 별도의 이벤트로 구독할 필요가 없으므로, Transaction 이벤트를 구독하는 방식을 권장드립니다.
Module Events일 때는 eventAccountAddress를 꼭 0x0으로 입력해야 하나요?
맞습니다. eventType이 “Module Events”인 경우에는 eventAccountAddress를 반드시 “0x0”으로 입력해 주세요. 만약, “Event-Handler Events”로 정의된 경우에는 이벤트를 발생한 계정 주소를 입력하시면 됩니다. 이벤트 종류에 대한 자세한 내용은 Aptos 공식 문서에서 확인하실 수 있습니다.
Request Example
curl --location 'https://web3.nodit.io/v1/aptos/mainnet/webhooks' \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: ••••••' \
--data '{
"eventType": "EVENT",
"description": "{WEBHOOK_DESCRIPTION}",
"notification": {
"webhookUrl": "{WEBHOOK_LISTENER_ENDPOINT}"
},
"condition": {
"eventType": "0x1::account::CoinRegisterEvent",
"eventAccountAddress": "0x84e6da2230d45f8e6e1e607fa304f92a2c0691cd85caa43c4920727547c5b07f"
}
}
'
Response Example
{
"subscriptionId": "5022",
"sequenceNumber": "1",
"description": "{WEBHOOK_DESCRIPTION}",
"protocol": "APTOS",
"network": "MAINNET",
"subscriptionType": "WEBHOOK",
"notification": {
"webhookUrl": "{WEBHOOK_LISTENER_ENDPOINT}"
},
"signingKey": "{signingKey}",
"eventType": "EVENT",
"event": {
"eventType": "0x1::account::CoinRegisterEvent",
"eventAccountAddress": "0x84e6da2230d45f8e6e1e607fa304f92a2c0691cd85caa43c4920727547c5b07f",
"payloadFunction": null,
"messages": [
{
"guid": {
"creation_number": "0",
"account_address": "0x84e6da2230d45f8e6e1e607fa304f92a2c0691cd85caa43c4920727547c5b07f"
},
"sequence_number": "0",
"type": "0x1::account::CoinRegisterEvent",
"data": {
"type_info": {
"account_address": "0x1",
"module_name": "0x6170746f735f636f696e",
"struct_name": "0x4170746f73436f696e"
}
},
"event_index": 0,
"version": "2107915587"
}
]
},
"createdAt": "2024-12-27T09:07:09.341857113Z"
}