A dynamic array of byte values can be represented using the Bytes
type, which represents raw bytes.
// #import { Bytes };
const bytes: Bytes = [40, 41, 42];
const { value } = await contract.functions
.bytes_comparison(bytes)
.txParams({ gasLimit: 10_000 })
.simulate();
expect(value).toBeTruthy();
The Bytes
type can be integrated with your contract calls. Consider the following contract that can compare and return a Bytes
:
contract;
use std::bytes::Bytes;
abi BytesTest {
fn echo_bytes(value: Bytes) -> Bytes;
fn bytes_comparison(value: Bytes) -> bool;
}
impl BytesTest for Contract {
fn echo_bytes(value: Bytes) -> Bytes {
value
}
fn bytes_comparison(value: Bytes) -> bool {
let mut bytes = Bytes::new();
bytes.push(40u8);
bytes.push(41u8);
bytes.push(42u8);
value == bytes
}
}
A Bytes
array can be created using a native JavaScript array of numbers or Big Numbers, and sent to a Sway contract:
// #import { Bytes };
const bytes: Bytes = [8, 42, 77];
const { value } = await contract.functions
.echo_bytes(bytes)
.txParams({ gasLimit: 10_000 })
.simulate();
expect(value).toStrictEqual(new Uint8Array(bytes));