alloy-encode-packed
Ethereum abi.encodePacked() in Rust
alloy-encode-packed is a Rust library that provides an implementation of Ethereum's abi.encodePacked() function. This crate is an adaptation of the eth-encode-packed library, replacing the ethers.rs dependency with alloy, offering improved performance and compatibility with the latest Rust ecosystem.
The library is designed to facilitate encoding of Ethereum contract data in a packed format, which is essential for certain cryptographic operations and smart contract interactions.
Example usage
packing an uint24
let input = vec!;
let = encode_packed;
let hash = format!;
let expected = "0x000fa1";
assert_eq!;
Packing a lot of data
Solidity
function packer(
uint24 uint24_data,
uint256 tokenId,
string calldata ipfsURI,
address sample,
uint256 id
) public pure returns (bytes memory ){
bytes memory res = abi.encodePacked(uint24_data, tokenId, ipfsURI, sample, id);
return res;
}
Rust
let address = decode.unwrap;
let address: = address.try_into.unwrap;
let input = vec!;
let = encode_packed;
let hash = format!;
let expected = "0x000efe0000000000000000000000000000000000000000000000000000000000000fa1746869732d69732d612d73616d706c652d737472696e67d8b934580fce35a11b58c6d73adee468a2833fa80000000000000000000000000000000000000000000000000000000000000001";
assert_eq!;