JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 7
  • Score
    100M100P100Q40235F
  • License GPL-v3-only

Cartesi Machine Input/Output Codec

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@guidanoli/cmioc) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    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 \
        --prev-randao 40823578488146031703637781058841789769586951870728503003341100870835983872788 \
        --index 10 \
        --payload 0xdeadbeef

    Output:

    0x415bf363000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070ac08179605af2d9e75782b8decdd3c22aa4d0c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000111705a41539c3688747a1a8c7811b98b0427331ff73aab018eb5c9921993d617f314000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000004deadbeef00000000000000000000000000000000000000000000000000000000

    To binary

    Just add the --binary flag.

    Decoding inputs

    From hex

    cmioc decode input 0x415bf363000000000000000000000000000000000000000000000000000000000000000100000000000000000000000070ac08179605af2d9e75782b8decdd3c22aa4d0c000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266000000000000000000000000000000000000000000000000000000000000002a00000000000000000000000000000000000000000000000000000000000111705a41539c3688747a1a8c7811b98b0427331ff73aab018eb5c9921993d617f314000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000004deadbeef00000000000000000000000000000000000000000000000000000000

    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",
        "prevRandao": "40823578488146031703637781058841789769586951870728503003341100870835983872788",
        "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.

    DELEGATECALL vouchers

    To hex

    cmioc encode delegatecallvoucher \
        --destination 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 \
        --payload 0xfafafa

    Output:

    0x10321e8b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003fafafa0000000000000000000000000000000000000000000000000000000000

    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"
    }

    DELEGATECALL vouchers

    From hex

    cmioc decode output 0x10321e8b000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb9226600000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000003fafafa0000000000000000000000000000000000000000000000000000000000

    or

    cat delegatecallvoucher.txt | pnpm cmioc decode output

    From binary

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

    Output:

    {
        "type": "delegatecallvoucher",
        "destination": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266",
        "payload": "0xfafafa"
    }