https://github.com/xrplf/ctid
Improved Concise Transaction Identifier (CTIM) code samples and test cases
https://github.com/xrplf/ctid
Last synced: about 1 year ago
JSON representation
Improved Concise Transaction Identifier (CTIM) code samples and test cases
- Host: GitHub
- URL: https://github.com/xrplf/ctid
- Owner: XRPLF
- Created: 2023-02-11T10:04:14.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-14T08:31:42.000Z (over 3 years ago)
- Last Synced: 2025-05-08T04:46:38.211Z (about 1 year ago)
- Language: Python
- Size: 32.2 KB
- Stars: 4
- Watchers: 6
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Quickstart
## Improved Concise Transaction Identifier (CTID)
CTIDs are composed of 16 hex nibbles, and begin with a `C`.
```
CXXXXXXXYYYYZZZZ
```
The identifier is divided into three fields.
Char Offset | Field | Size (bits) |Explanation
-|-----|------|---------
0 | C| 4 | Lead-in (ignore)
1-7 | XXXXXXX | 28 | Ledger Sequence
8-11 | YYYY | 16 | Transaction index (offset) within that ledger
12-16 | ZZZZ | 16 | Network ID.
Reference implementations are available for several languages. Click below to dive in.
Language | Implementation
-|-
Javascript | [ctid.js](https://github.com/XRPLF/ctid/blob/main/ctid.js)
Typescript | [ctid.ts](https://github.com/XRPLF/ctid/blob/main/ctid.ts)
C++ | [ctid.cpp](https://github.com/XRPLF/ctid/blob/main/ctid.cpp)
Python 3| [ctid.py](https://github.com/XRPLF/ctid/blob/main/ctid.py)
PHP 5|[ctid.php](https://github.com/XRPLF/ctid/blob/main/ctid.php)
### Function prototypes (pseudocode)
In this repo there are several reference implementations available for various languages but they all use the same function model.
```js
function encodeCTID (
ledger_seq : number,
txn_index : number,
network_id : number) -> string;
```
```js
function decodeCTID (ctid : string or number) -> {
ledger_seq : number,
txn_index : number,
network_id : number };
```
### Mainnet example
[This transaction](https://livenet.xrpl.org/transactions/D42BE7DF63B4C12E5B56B4EFAD8CBB096171399D93353A8A61F61066160DFE5E/raw) encodes in the following way:
```js
encodeCTID(
77727448, // ledger sequence number the txn appeared in
54, // `TransactionIndex` as per metadata
0) // Network ID of mainnet is 0
'C4A206D800360000'
```
### Hooks testnet v3 example
[This transaction](https://hooks-testnet-v3-explorer.xrpl-labs.com/tx/C4E284010276F8457C4BF96D0C534B7383087680C159F9B8C18D5EE876F7EFE7) encodes in the following way:
```js
encodeCTID(
428986, // ledger sequence number the txn appeared in
0, // `TransactionIndex` as per metadata
21338) // Network ID of hooks v3 is 21338
'C0068BBA0000535A'
```