0.1.3 • Published 1 month ago

@guidanoli/cmioc v0.1.3

Weekly downloads
-
License
GPL-v3-only
Repository
-
Last release
1 month ago

Cartesi Machine Input/Output Codec

In the upcoming v2 release of the Cartesi Rollups SDK, inputs and outputs will be encoded as Solidity function calldata. This package aims to show front-end developers how inputs and outputs can be encoded or decoded using viem and the contract ABIs exported by @cartesi/rollups. It also comes with a handy-dandy CLI tool for encoding and decoding of inputs and outputs.

Installation

You can install the package with pnpm by running:

pnpm add -g @guidanoli/cmioc

Encoding inputs

To hex

cmioc encode input \
    --chain-id 1 \
    --app-contract 0x70ac08179605AF2D9e75782b8DEcDD3c22aA4D0C \
    --msg-sender 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \
    --block-number 42 \
    --block-timestamp 70000 \
    --index 10 \
    --payload 0xdeadbeef

Output:

0xcc7dee1f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070ac08179605af2d9e75782b8decdd3c22aa4d0c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000011170000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004deadbeef00000000000000000000000000000000000000000000000000000000

To binary

Just add the --binary flag.

Decoding inputs

From hex

cmioc decode input 0xcc7dee1f000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070ac08179605af2d9e75782b8decdd3c22aa4d0c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000002a0000000000000000000000000000000000000000000000000000000000011170000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000004deadbeef00000000000000000000000000000000000000000000000000000000

or

cat input.txt | pnpm cmioc decode input

From binary

cat input.bin | pnpm cmioc decode input --binary

Output:

{
    "chainId": "1",
    "appContract": "0x70ac08179605AF2D9e75782b8DEcDD3c22aA4D0C",
    "msgSender": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
    "blockNumber": "42",
    "blockTimestamp": "70000",
    "index": "10",
    "payload": "0xdeadbeef"
}

Encoding outputs

Notices

To hex

cmioc encode notice \
    --payload 0xdeadbeef

Output:

0xc258d6e500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004deadbeef00000000000000000000000000000000000000000000000000000000

To binary

Just add the --binary flag.

Vouchers

To hex

cmioc encode voucher \
    --destination 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \
    --value 1000000000000000000 \
    --payload 0xfafafa

Output:

0x237a816f000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000003fafafa0000000000000000000000000000000000000000000000000000000000

To binary

Just add the --binary flag.

Decoding outputs

Notices

From hex

cmioc decode output 0xc258d6e500000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004deadbeef00000000000000000000000000000000000000000000000000000000

or

cat notice.txt | pnpm cmioc decode output

From binary

cat notice.bin | pnpm cmioc decode output --binary

Output:

{
    "type": "notice",
    "payload": "0xdeadbeef"
}

Vouchers

From hex

cmioc decode output 0x237a816f000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000003fafafa0000000000000000000000000000000000000000000000000000000000

or

cat voucher.txt | pnpm cmioc decode output

From binary

cat voucher.bin | pnpm cmioc decode output --binary

Output:

{
    "type": "voucher",
    "destination": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
    "value": "1000000000000000000",
    "payload": "0xfafafa"
}
0.1.4-beta.0

1 month ago

0.1.3

2 months ago

0.1.2

2 months ago

0.1.1

2 months ago

0.1.0

2 months ago