Blockchain-Ethereum-RLP
view release on metacpan or search on metacpan
t/etherscan_raw_txs.t view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Blockchain::Ethereum::RLP;
my $rlp = Blockchain::Ethereum::RLP->new();
# https://etherscan.io/tx/0x784412e6b8ce1e6fcce97d149dea5367a594aef61d6d328398fffac0bb3ab537
subtest "etherscan raw tx => tether transfer" => sub {
# 0x02 removed from raw tx since the transaction type is not part of the RLP encoding
my $raw_tx =
'f8b3018305c6c98405f5e100851d4adefbd882fde894dac17f958d2ee523a2206206994597c13d831ec780b844a9059cbb000000000000000000000000f8dd85f9dae9caee1c3560284715e8933add0de70000000000000000000000000000000000000000000000000000000004c50220c080a0b55239aaa...
my $tether_transfer = $rlp->decode(pack "H*", $raw_tx);
my $decoded = [
'0x1', # nonce
'0x5c6c9', # chain id
'0x5f5e100', # max priority fee per gas
'0x1d4adefbd8', # max base fee per gas
'0xfde8', # gas limit
'0xdac17f958d2ee523a2206206994597c13d831ec7', # tether contract
'0x', # value
'0xa9059cbb000000000000000000000000f8dd85f9dae9caee1c3560284715e8933add0de70000000000000000000000000000000000000000000000000000000004c50220'
, # data
[], # access list
'0x', # v
'0xb55239aaa8b77ddb8982509ab2bffa71f7b6a313017e4c71c560b7cb57a01c58', # r
'0x3f9d03d40ded1c2978a81a1c3c566b830a6a2f884ba238d4c095190793b28d7c' # s
];
is_deeply $tether_transfer, $decoded;
is unpack("H*", $rlp->encode($tether_transfer)), $raw_tx;
};
# https://etherscan.io/tx/0x85fdf30e7ce3884b0b6ae4955416bb1dc48eedeef11ed5e4ef8e185fc21b0f4e
subtest "etherscan raw tx => eth transfer" => sub {
my $raw_tx =
'f8730181ae8405f5e100850aa1b5e50382520894004af85ea96fd3771ed2e1df6f2b152bc81b47c087ce911cd5adbf7680c080a0e045e7d62f53c4bb03c330a17ba909936f783da5d04af2587fc2d1c48d7e7a15a05554e82b338819fcb288fc28fb1f685b1e84eb5c897bb1c4a4b62a7877c313e2';
my $eth_transfer = $rlp->decode(pack "H*", $raw_tx);
my $decoded = [
'0x1', #
'0xae',
'0x5f5e100',
'0xaa1b5e503',
'0x5208',
'0x04af85ea96fd3771ed2e1df6f2b152bc81b47c0',
'0xce911cd5adbf76',
'0x',
[],
'0x',
'0xe045e7d62f53c4bb03c330a17ba909936f783da5d04af2587fc2d1c48d7e7a15',
'0x5554e82b338819fcb288fc28fb1f685b1e84eb5c897bb1c4a4b62a7877c313e2'
];
is_deeply $eth_transfer, $decoded;
is unpack("H*", $rlp->encode($eth_transfer)), $raw_tx;
};
done_testing;
( run in 0.668 second using v1.01-cache-2.11-cpan-39bf76dae61 )