NAME

Blockchain::Ethereum::ABI::Encoder - ABI utility for encoding ethereum contract arguments

VERSION

version 0.018

SYNOPSIS

Allows you to encode contract ABI arguments

my $encoder = Blockchain::Ethereum::ABI::Encoder->new();
$encoder->function('test')
    # string
    ->append(string => 'Hello, World!')
    # bytes
    ->append(bytes => unpack("H*", 'Hello, World!'))
    # tuple
    ->append('(uint256,address)' => [75000000000000, '0x0000000000000000000000000000000000000000'])
    # arrays
    ->append('bool[]', [1, 0, 1, 0])
    # multidimensional arrays
    ->append('uint256[][][2]', [[[1]], [[2]]])
    # tuples arrays and tuples inside tuples
    ->append('((int256)[2])' => [[[1], [2]]])->encode();

METHODS

append

Appends type signature and the respective values to the encoder.

  • %param key is the respective type signature followed by the value e.g. uint256 => 10

Returns $self

function

Appends the function name to the encoder, this is optional for when you want the function signature added to the encoded string or only the function name encoded.

  • $function_name solidity function name e.g. for `transfer(address,uint256)` will be `transfer`

Returns $self

generate_function_signature

Based on the given function name and type signatures create the complete function signature.

Returns the function signature string

encode_function_signature

Encode function signature keccak_256/sha3

  • $signature (Optional) function signature, if not given, will try to use the appended function name

Returns the encoded string 0x prefixed

encode

Encodes appended signatures and the function name (when given)

Usage:

encode() -> encoded string

Returns the encoded string, if function name was given will be 0x prefixed

clean

Clean up all the appended items and function name, this is called automatically after encode

Usage:

clean() -> undef

undef

AUTHOR

Reginaldo Costa <refeco@cpan.org>

COPYRIGHT AND LICENSE

This software is Copyright (c) 2022 by REFECO.

This is free software, licensed under:

The MIT (X11) License