#serialization #binary-format #ripple #byte #transaction #json #canonical

rippled_binary_codec

Serializing a XRP transaction from JSON into their canonical binary format

5 releases

0.0.5 Jun 27, 2023
0.0.4 Dec 1, 2021
0.0.3 Oct 7, 2021
0.0.2 Oct 6, 2021
0.0.1 Oct 6, 2021

#142 in Magic Beans

Download history 4/week @ 2024-02-22 47/week @ 2024-02-29 8/week @ 2024-03-07

56 downloads per month

MIT license

68KB
1K SLoC

Rippled Binary Codec

rippled_binary_codec is a library for serializing a transaction into their canonical binary format.

Build status

The core function serialize_tx takes a transaction JSON and returns a bytes object representing the transaction in binary format.

Example

A basis transaction serialization example.

Make sure you import the rippled_binary_codec crate on Cargo.toml:

[dependencies]
rippled_binary_codec = 0.0.3

Then, on your main.rs:

use rippled_binary_codec::serialize::serialize_tx;

fn serialize_tx_example(){
 // The input json string will be deserialized to serde_json:Value.
 let input= r#"{
   "Account": "rMBzp8CgpE441cp5PVyA9rpVV7oT8hP3ys",
   "Expiration": 595640108,
   "Fee": "10",
   "Flags": 524288,
   "OfferSequence": 1752791,
   "Sequence": 1752792,
   "SigningPubKey": "03EE83BB432547885C219634A1BC407A9DB0474145D69737D09CCDC63E1DEE7FE3",
   "TakerGets": "15000000000",
   "TakerPays": {
     "currency": "USD",
     "issuer": "rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B",
     "value": "7072.8"
   },
   "TransactionType": "OfferCreate",
   "TxnSignature": "30440220143759437C04F7B61F012563AFE90D8DAFC46E86035E1D965A9CED282C97D4CE02204CFD241E86F17E011298FC1A39B63386C74306A5DE047E213B0F29EFA4571C2C",
   "hash": "73734B611DDA23D3F5F62E20A173B78AB8406AC5015094DA53F53D39B9EDB06C"
   }"#;
  serialize_tx(input.to_string(), true);
}

For a larger "real world" example, see the crypto-coin-lib repository.

Contributing

Thanks for your help improving the project! We are so happy to have you! PRs and Issues are welcomed.

The serialization processes are implemented in different programming languages:

Additionally, the following libraries also provide serialization support:

  • xrpl4j: A pure Java implementation of the core functionality necessary to interact with the XRP Ledger.
  • xrpl: A JavaScript/TypeScript API for interacting with the XRP Ledger.
  • xrpl-py: A pure Python implementation for interacting with the XRP Ledger.

License

This project is licensed under the MIT license

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in rippled_binary_codec by you, shall be licensed as MIT, without any additional terms or conditions.

Dependencies

~11MB
~320K SLoC