Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
157 changes: 40 additions & 117 deletions docs/zh-cn/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1040,132 +1040,55 @@ docker-compose up

## OpReturn

OP_RETURN 是一[script opcode](https://wiki.bitcoinsv.io/index.php/OP_RETURN),允许在交易中添加额外信息,超出标准的输入和输出范围。这对于希望包含以下内容的应用程序来说可能很有用
`op-return` 属性用于以结构化字符串的形式传递附加的元数据。该内容可以在回调函数(`onSuccess` 和 `onTransaction`)返回的消息中作为参数查看。此字符串可以是

与事件相关的不同交易类型(例如,游戏);
- 普通字符串,例如简单的信息或短语。
- 字符串化的 JSON。
- 使用 `|` 分隔的值数组。
- 键值格式的字符串,键与值之间用 `=` 分隔,某个键的多个值之间用 `|` 分隔。

发票号码;
### 示例:

用于区分相同金额支付的随机数(Nonce);

其他数据。
### 一般 OpReturn 结构

<OP_RETURN 操作码><协议标识符的 pushdata><协议标识符><版本><数据负载的 pushdata><数据负载><随机数的 pushdata><随机数>

### 通用语法规则:

数据由以下十六进制编码的组件组成:


1. **OP_RETURN opcode**: `6a`.

2.Pushdata 指示协议标识符的大小(以字节为单位)。在 PayButton 协议的情况下,始终为 4(十六进制为 `04`)。

3. **协议标识符**: `50415900` 对于 PayButton (ASCII `PAY` + `0x00`).

4. **版本**: 一个字节,允许未来更新(当前为 `00`)。

5. Pushdata 指示数据有效负载标识符的大小(以字节为单位)。

6. **数据有效负载**: 自定义信息采用 UTF-8 编码格式。若无 payment ID(nonce),最大大小为 213 字节(UTF-8 编码)。若包含 payment ID,则限制为 205 字节,因为 payment ID 占用 8 字节。(可为空)。

7. Pushdata 指示 nonce 标识符的大小(以字节为单位)。

8. **随机数**: 八个随机字节用于区分支付(可以为空)。

如果 **数据有效负载** 或 **随机数** 为空,则每个对应的 pushdata 将为 `00`。


### 如何在 PayButton 中使用 OP_RETURN 操作码发送数据

要在 PayButton 中使用 OP_RETURN 操作码发送数据,您可以使用 `op-return` 属性。op-return 属性的内容将被编码,并对应于上述提到的 **数据有效负载**。 此外,您可以将 **支付 ID** 用作随机数(nonce)。要禁用发送 **支付 ID**,请使用 `disable-payment-id` 属性 — PayButton 将根据下面指定的规则自动编码消息。


### PayButton OP_RETURN 编码示例:

#### 1. 没有随机数且数据为 12 字节的 OP_RETURN 消息:


6a0450415900000c0102030405060708090a0b0c00


- `6a` → OP_RETURN opcode

- `04` → Pushdata 指示协议标识符的大小

- `50415900` → 协议标识符 (ASCII `PAY` + `0x00`)

- `00` → 版本 0

- `0c` → Pushdata 指示数据有效负载标识符的大小

- `0102030405060708090a0b0c` → 数据有效负载

- `00` → **支付 ID**(随机数)的 Pushdata,表示将没有随机数



#### 2. 具有 12 字节数据和 8 字节随机数(nonce)的 OP_RETURN 消息

6a0450415900000c0102030405060708090a0b0c080102030405060708



- `6a` → OP_RETURN opcode

- `04` → Pushdata 指示协议标识符的大小

- `50415900` → 协议标识符 (ASCII `PAY` + `0x00`)

- `00` → 版本 0

- `0c` → Pushdata 指示数据有效负载标识符的大小

- `0102030405060708090a0b0c` → 数据有效负载

- `08` → Pushdata 指示此交易具有 8 字节的 payment ID

- `0102030405060708` → 支付 ID



#### 3. 没有数据但有 8 字节支付 ID(随机数)的 OP_RETURN 消息

6a04504159000000080102030405060708


- `6a` → OP_RETURN opcode

- `04` → Pushdata 指示协议标识符的大小

- `50415900` → 协议标识符 (ASCII `PAY` + `0x00`)

- `00` → 版本 0

- `00` → 没有数据有效负载

- `08` → Pushdata 指示此交易具有 8 字节的 payment ID。

- `0102030405060708` → 支付 ID

#### 4. 没有数据和没有支付 ID 的交易

6a0450415900000000

- `6a` → OP_RETURN opcode
#### 普通字符串
```html
op-return="hello world"
```
- 一个普通字符串,不进行解析。

- `04` → Pushdata 指示协议标识符的大小
#### 键值格式字符串
```html
op-return="classOf=2013 bullYears=2013|2017|2021"
```
- 这种格式会被解析为一个对象:
```json
{
"classOf": 2013,
"bullYears": [2013, 2017, 2021]
}
```

- `50415900` → 协议标识符 (ASCII `PAY` + `0x00`)
#### JSON 字符串

- `00` → 版本 0
```html
op-return="{'foo': 'bar'}"
```
- 这种格式会被解析为一个对象:
```json
{
"foo": "bar"
}
```

- `00` → Pushdata for data payload, indicating there will be none
#### 使用管道分隔的值

- `00` → 支付 ID 的 Pushdata,表示将没有支付 ID
```html
op-return="item1|item2|item3"
```
- 这种格式会被解析为一个数组:
```json
["item1", "item2", "item3"]
```



## 捐助

Expand Down
157 changes: 40 additions & 117 deletions docs/zh-tw/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -1041,130 +1041,53 @@ docker-compose up

## OpReturn

OP_RETURN 是一[script opcode](https://wiki.bitcoinsv.io/index.php/OP_RETURN),允許在交易中添加額外資訊,超出標準的輸入和輸出範圍。這對於希望包含以下內容的應用程式來說可能很有用
`op-return` 屬性用於以結構化字串的形式傳遞附加的元資料。這個內容可以在回呼函式(`onSuccess` 和 `onTransaction`)返回的訊息中作為參數看到。此字串可以是

與事件相關的不同交易類型(例如,遊戲);
- 一般字串,例如簡單的訊息或片語。
- 字串化的 JSON。
- 使用 `|`分隔的值陣列
- 鍵值格式的字串,鍵與值之間用 = 分隔,同一鍵的多個值用 `|` 分隔。

發票號碼;
### 範例:

用於區分相同金額支付的隨機數(Nonce);

其他數據。

### 一般 OpReturn 結構

<OP_RETURN 操作碼><協議標識符的 pushdata><協議標識符><版本><數據負載的 pushdata><數據負載><隨機數的 pushdata><隨機數>

### 一般語法規則:

該數據由以下十六進制編碼的組件組成:

1. **OP_RETURN opcode**: `6a`.

2. Pushdata 指示協議標識符的大小(以位元組為單位)。在 PayButton 協議的情況下,始終為 4(十六進制為 04)。

3. **協議標識符**: `50415900` 代表 PayButton (ASCII `PAY` + `0x00`).

4. **版本**: 一個位元組,用於允許未來更新(目前為 `00`)。

5. Pushdata 指示數據有效載荷標識符的大小(以位元組為單位)。

6. **數據有效負載**: 自訂資訊採用 UTF-8 編碼格式。若無 payment ID(nonce),最大大小為 213 字節(UTF-8 編碼)。若包含 payment ID,則限制為 205 字節,因為 payment ID 佔用 8 字節。(可為空)。
7. Pushdata 指示隨機數標識符的大小(以位元組為單位)。

8. **隨機數**: 八個隨機位元組,用於區分支付(可以為空)。

如果 **數據有效載荷** 或 **隨機數** 為空,則每個的 Pushdata 為 00



### 如何使用 OP_RETURN opcode 在 PayButton 中發送數據

要在 PayButton 中使用 OP_RETURN opcode 發送數據,您可以使用 op-return 屬性。 op-return 屬性的內容將被編碼,並將對應於上述提到的 **數據有效載荷**。 此外,您可以使用 payment ID 作為隨機數。 要禁用發送 payment ID,請使用 disable-payment-id 屬性—PayButton 將根據下面指定的規則自動編碼消息。


### PayButton OpReturn 編碼範例:


#### 1. 帶有 12 位元組數據且無隨機數的 OpReturn 消息


6a0450415900000c0102030405060708090a0b0c00


- `6a` → OP_RETURN opcode

- `04` → Pushdata 指示協議標識符的大小

- `50415900` → PayButton 標識符 (ASCII `PAY` + `0x00`)

- `00` → 版本 0

- `0c` → Pushdata 指示數據有效載荷標識符的大小

- `0102030405060708090a0b0c` → 數據有效載荷

- `00` → 支付 ID(隨機數)的 Pushdata,指示將不會有隨機數



#### 2. OpReturn message with 12 bytes of data and an 8-byte nonce

6a0450415900000c0102030405060708090a0b0c080102030405060708



- `6a` → OP_RETURN opcode

- `04` → Pushdata 指示協議標識符的大小

- `50415900` → PayButton 標識符 (ASCII `PAY` + `0x00`)

- `00` → 版本 0

- `0c` → Pushdata 指示數據有效載荷標識符的大小

- `0102030405060708090a0b0c` → 數據有效載荷

- `08` → Pushdata 指示此交易具有 8 位元組的 payment ID

- `0102030405060708` → 付款ID


#### 3. OpReturn message with no data but an 8-byte payment ID (nonce)

6a04504159000000080102030405060708


- `6a` → OP_RETURN opcode

- `04` → Pushdata 指示協議標識符的大小

- `50415900` → PayButton 標識符 (ASCII `PAY` + `0x00`)

- `00` → 版本 0

- `00` → 無數據有效載荷

- `08` → Pushdata 指示此交易具有 8 位元組的 payment ID

- `0102030405060708` → 付款ID

#### 4. Transaction with no data and no payment ID

6a0450415900000000

- `6a` → OP_RETURN opcode

- `04` → Pushdata 指示協議標識符的大小
#### 一般字串
```html
op-return="hello world"
```
- 一個普通字串,沒有解析行為。

- `50415900` → PayButton 標識符 (ASCII `PAY` + `0x00`)
#### 鍵值格式字串
```html
op-return="classOf=2013 bullYears=2013|2017|2021"
```
- 此格式會被解析成一個物件:
```json
{
"classOf": 2013,
"bullYears": [2013, 2017, 2021]
}
```

- `00` → 版本 0
#### JSON 字串

- `00` → 無數據有效載荷
```html
op-return="{'foo': 'bar'}"
```
- 此格式會被解析成一個物件:
```json
{
"foo": "bar"
}
```

- `00` → 支付 ID(隨機數)的 Pushdata,指示將不會有隨機數
#### 使用管線符分隔的值
```html
op-return="item1|item2|item3"
```
- 此格式會被解析成一個陣列:
```json
["item1", "item2", "item3"]
```


## 捐款
Expand Down