From b507ab7734abf03dcfbc0555b930454bb5030e34 Mon Sep 17 00:00:00 2001 From: Charlie Chen Date: Wed, 2 Oct 2024 13:22:01 -0500 Subject: [PATCH] upload non-evm chain memo design doc --- .../non_evm_inbound_memo/layout.png | Bin 0 -> 77866 bytes .../proposed_memo_format.md | 131 ++++++++++++++++++ 2 files changed, 131 insertions(+) create mode 100644 docs/design-proposals/non_evm_inbound_memo/layout.png create mode 100644 docs/design-proposals/non_evm_inbound_memo/proposed_memo_format.md diff --git a/docs/design-proposals/non_evm_inbound_memo/layout.png b/docs/design-proposals/non_evm_inbound_memo/layout.png new file mode 100644 index 0000000000000000000000000000000000000000..5da292f7fe37548e942aadaa138ca861f082bf8d GIT binary patch literal 77866 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

Ip~^O`<4C{4_Bop1tG=>OjaT3g;rYmc-(9S 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 PGGNnC(Y{}zWD)c~eU2`m literal 0 HcmV?d00001 diff --git a/docs/design-proposals/non_evm_inbound_memo/proposed_memo_format.md b/docs/design-proposals/non_evm_inbound_memo/proposed_memo_format.md new file mode 100644 index 0000000000..7ed0309506 --- /dev/null +++ b/docs/design-proposals/non_evm_inbound_memo/proposed_memo_format.md @@ -0,0 +1,131 @@ +

A proposed standard memo format for non-EVM chains

+
+ +## The goal + +This doc is aimed to introduce a standard format of ZetaChain inbound `memo` across non-EVM chains. The `memo` in an inbound transaction is to carry both instructions and data, by which the cross-chain transaction to be processed as expected in the `zetacore`. A standard memo format helps to ensure consistent developer experience across EVM and non-EVM chains. +

+ + +## The EVM gateway inbound events + +We want to mimic below `Deposit` and `Called` events in the EVM `gateway` contract for non-EVM chains. Typically, we at least want the following 3 pieces at the time of writing. + +- The `receiver` address in ZEVM. +- The `payload` of the call. +- The `RevertOptions`. + +``` +event Deposited( + address indexed sender, + address indexed receiver, + uint256 amount, + address asset, + bytes payload, + RevertOptions revertOptions +); + +event Called( + address indexed sender, + address indexed receiver, + bytes payload, + RevertOptions revertOptions +); +``` +

+ + +## 1. The Memo Diagram + +![](layout.png)

+ + +## 2. The memo structure + +The raw-byte representation of a standard non-EVM memo contains `9` sections (2 mandatory + 7 optional). + +`Section 0` is the `header`, which controls how the memo should be interpreted. + +`Section 1~8` are data sections that carry actual data attached to the memo. + + +| | Section 0 | Section 1 | Section 2 | Section 3 | Section 4 | Section 5 | Section 6 | Section 7 | Section 8 | +|-----------------|------------|-------------|-------------|----------------|--------------|--------------|---------------|-------------|-------------| +| **Name** | Header | Receiver | Payload | RevertAddress | CallOnRevert | AbortAddress | RevertMessage | reserved | reserved | +| **Size (byte)** | 3 | 20 | variable | variable | 1 | 20 | variable | -- | -- | +| **Type** | [3]byte | ZEVM address| bytes | non-EVM address| bool | ZEVM address | bytes | -- | -- | +| **Optional** | No | No | Yes | Yes | Yes | Yes | Yes | -- | -- | +

+ + +## 3. The header + +The `3-byte` header is a self-contained declaration of the memo properties and rules. The proposed header structure is designed in a flexible manner. The data fields are all declared as optional. With `reserved` flags, new features and fields can be added in the future without breaking compatibility. + +### `byte-0`: Memo Identifier + +The ASCII code `0x5A` of letter `'Z'` is used as the identifier of the standard ZetaChain memo format. Once legacy memo is phased out, zetaclient will only accept memos beginning with `0x5A`. + + +### `byte-1`: Control Byte + +| | bit 5 ~ 7 | bit 3 ~ 4 | bit 0 ~ 2 | +|-----------------|---------------------------------|--------------------------------|----------------------------------------------------------| +| **Name** | version # | encoding flag | operation code | +| | | | No for non-contract chains; Ignored for contract chains | +| **Optional** | No (0b000 for now) | No (0b00 or 0b01 or 0b10) | The operation code is already differentiated by method names in contract based chains | + + +### `byte-2`: Data Flags + +| | bit 7 | bit 6 | bit 5 | bit 4 | bit 3 | bit 2 | bit 1 | bit 0 | +|-----------------|---------------|--------------|---------------|-------------------|------------------|------------------|-------------------|------------------| +| **Name** | flag reserved | flag reserved| flag reserved | flag RevertMessage| flag AbortAddress| flag CallOnRevert| flag RevertAddress| flag Payload | +| **Optional** | -- | -- | -- | Yes | Yes | Yes | Yes | Yes | +
+ +Supported `operation codes` : + +The `operation code` is designed for the developers to explicitly specify the intention of an inbound transaction in non-contract chains (e.g. Bitcoin, Doge, …). A 3-bit operation code would allow `8` operation codes at maximum. + +| 0b000 | 0b001 | 0b010 | +|------------|------------------|------------| +| deposit | deposit_and_call | call | + +
+ + +Supported `encoding flags`: +This flag is to tell `zetaclient` how the memo fields should be decoded. A 2-bit weight flag seems good enough and won’t change in future. + +| 0b00 | 0b01 | 0b10 | +|--------------|------------------|------------------| +| ABI encoded | lite-data short | lite-data long | +

+ + +## 4. The types + +To decode/encode the memo fields with the lite-date format, we've defined a few types below. +To decode/encode the memo fields with ABI format, just follow the [ABI Spec](https://docs.soliditylang.org/en/develop/abi-spec.html). + + +| Field | Size (byte) | Description | +|-----------------------------|--------------|---------------------------------------------------------------------------------------------------------------------------------| +| **ZEVM address** | fixed, 20 | The raw bytes representation of a ZEVM address. ZEVM address is the same as standard Ethereum address. | +| **non-EVM address** | variable | The raw bytes representation of a non-EVM external chain address. Different addresses have different lengths, e.g., Bitcoin vs Solana; Bitcoin Segwit vs Legacy. | +| **bytes** | variable | The raw bytes of arbitrary data. | +

+ + +## 5. Byte layout of variable-length types + +There are two ways to encode your the memo fields into raw bytes. The `ABI encoded` and `lite-data` encoded. + +| Decoding flag | Format | Layout | Description | Rule | +|---------------|-------------------|-----------------------------------------|-----------------------------------------------|----------------------------------------------------------| +| 0b00 | ABI encoded | ABI encoded types | Types are packed/unpacked with ABI standard | [ABI Spec](https://docs.soliditylang.org/en/develop/abi-spec.html) | +| 0b01 | lite-data short | [1-byte length] + [data] | Carry up to 255 bytes of data. | A valid length must > 0 and match data length. | +| 0b10 | lite-data long | [2-byte length, little-endian] + [data] | Carry up to 65535 bytes (64KB) of data. | A valid length must > 0 and match data length. | + +