In Fuel, a type called b256
represents hashes and holds a 256-bit value. The Rust SDK represents b256
as Bits256(value)
where value
is a [u8; 32]
. If your contract method takes a b256
as input, you must pass a Bits256([u8; 32])
when calling it from the SDK.
Here's an example:
let arg: [u8; 32] = hasher.finalize().into();
let call_handler = contract_instance.methods().takes_b256(Bits256(arg));
If you have a hexadecimal value as a string and wish to convert it to Bits256
, you may do so with from_hex_str
:
let hex_str = "0101010101010101010101010101010101010101010101010101010101010101";
let bits256 = Bits256::from_hex_str(hex_str)?;
assert_eq!(bits256.0, [1u8; 32]);
// With the `0x0` prefix
let hex_str = "0x0101010101010101010101010101010101010101010101010101010101010101";
let bits256 = Bits256::from_hex_str(hex_str)?;
assert_eq!(bits256.0, [1u8; 32]);