Contract ABI Encoding
Go to file
Mark Spanbroek 51da2802aa Decoding fails gracefully in several error cases 2021-12-01 16:34:02 +01:00
.github/workflows Add CI 2021-11-25 09:33:40 +01:00
contractabi Decoding fails gracefully in several error cases 2021-12-01 16:34:02 +01:00
tests Decoding fails gracefully in several error cases 2021-12-01 16:34:02 +01:00
.editorconfig ABI Encoder extracted from nim-nitro module 2021-11-25 09:33:32 +01:00
.gitignore ABI Encoder extracted from nim-nitro module 2021-11-25 09:33:32 +01:00
.tool-versions ABI Encoder extracted from nim-nitro module 2021-11-25 09:33:32 +01:00
Readme.md Add examples of decoding to readme 2021-12-01 11:46:45 +01:00
contractabi.nim Decoding of basic types 2021-11-30 15:14:57 +01:00
contractabi.nimble Add library questionable 2021-12-01 11:55:16 +01:00
nim.cfg ABI Encoder extracted from nim-nitro module 2021-11-25 09:33:32 +01:00

Readme.md

Contract ABI

Implements encoding of parameters according to the Ethereum Contract ABI Specification.

Installation

Use the Nimble package manager to add contractabi to an existing project. Add the following to its .nimble file:

requires "https://github.com/status-im/nim-contract-abi >= 0.1.0 & < 0.2.0"

Usage

import contractabi
import stint

# encode unsigned integers, booleans, enums
AbiEncoder.encode(42'u8)

# encode uint256
AbiEncoder.encode(42.u256)

# encode byte arrays and sequences
AbiEncoder.encode([1'u8, 2'u8, 3'u8])
AbiEncoder.encode(@[1'u8, 2'u8, 3'u8])

# encode tuples
AbiEncoder.encode( (42'u8, @[1'u8, 2'u8, 3'u8], true) )

# decode values of different types
AbiDecoder.decode(bytes, uint8)
AbiDecoder.decode(bytes, UInt256)
AbiDecoder.decode(bytes, array[3, uint8])
AbiDecoder.decode(bytes, seq[uint8])

# decode tuples
AbiDecoder.decode(bytes, (uint32, bool, seq[byte]) )