---
# System prepended metadata

title: 'JIP-1: Debug message host call'
tags: [on-going, Network, JIP]

---

# JIP-1: Debug message host call

[HackMD 原文連結](https://hackmd.io/@polkadot/jip1)

---

## 📌 簡介

JIP-1 提出一個新的 host-call 指令 `log`（Index: `100`），  

讓 service 在執行時從內部輸出訊息到 node，方便除錯與觀察。

PVM 裡的 servicel host call 是「單向的 debugging 訊息通告」，service -> node

---

## 🔧 Host-call 指令格式說明（依據 JIP-1 與灰皮書格式）

---

### 📦 基本結構

| 項目              | 說明                                       |
|-------------------|--------------------------------------------|
| Host-call index   | `100`                                      |
| Name              | `log`                                      |
| Gas               | `0`                               |
| Input registers   | `ω₇ ~ ω₁₁`                                 |
| Output registers  | 無                                          |
| Side-effects      | 記憶體錯誤不會中斷執行，否則會顯示 log 訊息 |

---

### 🧠 Input register 對應

| Register | 含義     | 說明 |
|----------|----------|------|
| `ω₇`     | `level`  | 顯示訊息的 level（0~4） |
| `ω₈`  `ω₉`    | `target` | 若 `ω₈=0 ∧ ω₉=0`，表示不指定 target |
| `ω₁₀`  `ω₁₁`   | `message` | message |




---

## 🔢 等級定義（`level`）

| Level | Icon | 說明                    |
|-------|------|-------------------------|
| 0     | ⛔    | Fatal error             |
| 1     | ⚠    | Warning                 |
| 2     | ℹ    | Important info          |
| 3     | 💁    | Helpful info            |
| 4     | 🪡    | Pedantic info |

---

## 🖥 Console 顯示格式
```
<YYYY-MM-DD hh:mm:ss> <LEVEL>[@<CORE>]?[#<SERVICE_ID>]? [<TARGET>]? <MESSAGE>
```


**範例：**
```
2025/01/01 12:10:42 DEBUG@1#42 bootstrap-refine Hello world!
 ``` 
    
    
    
---

### 🧠 對應欄位拆解：

| 欄位                         | 對應值               | 說明 |
|------------------------------|----------------------|------|
| `YYYY-MM-DD hh:mm:ss`        | `2025/01/01 12:10:42` | 訊息產生的時間戳記 |
| `<LEVEL>`                    | `DEBUG`               |  |
| `@<CORE>`（Optional）        | `@1`                  | PVM 正在執行的 core 編號 |
| `#<SERVICE_ID>`（Optional）  | `#42`                 | 執行此訊息的 service ID |
| `<TARGET>`（Optional）       | `bootstrap-refine`    | 開發者指定的目標分類，用來表示訊息來源模組 |
| `<MESSAGE>`                 | `Hello world!`        | 真正要顯示的內容訊息 |

---

---

### ✅ 結論說明：

此格式讓 JAM 上的 service 可以清楚將訊息傳遞給節點操作者與開發者，  
並且透過 core/service ID/tag 分類訊息，方便在開發與測試階段進行觀察與追蹤。

    
---

## 🧾 JSON 格式（機器解析）

```json
{
    "time": "<YYYY-MM-DD hh-mm-ss>",
    "level": "<LEVEL>",
    "message": "<MESSAGE>",
    "target": "<TARGET>" | null
    "service": "<SERVICE_ID>" | null
    "core": "<CORE>" | null
}

