Packed
Class: Packed\<T>
Packed<T>
is a "packed" representation of any type T
.
"Packed" means that field elements which take up fewer than 254 bits are packed together into as few field elements as possible.
For example, you can pack several Bools (1 bit) or UInt32s (32 bits) into a single field element.
Using a packed representation can make sense in provable code where the number of constraints depends on the number of field elements per value.
For example, Provable.if(bool, x, y)
takes O(n) constraints, where n is the number of field
elements in x and y.
Usage:
// define a packed type from a type
let PackedType = Packed.create(MyType);
// pack a value
let packed = PackedType.pack(value);
// ... operations on packed values, more efficient than on plain values ...
// unpack a value
let value = packed.unpack();
Warning: Packing only makes sense where packing actually reduces the number of field elements. For example, it doesn't make sense to pack a single Bool, because it will be 1 field element before and after packing. On the other hand, it does makes sense to pack a type that holds 10 or 20 Bools.
Type parameters
Name |
---|
T |
Table of contents
Constructors
Properties
Accessors
Methods
Constructors
constructor
• new Packed\<T
>(packed
, value
)
Type parameters
Name |
---|
T |
Parameters
Name | Type |
---|---|
packed | Field [] |
value | Unconstrained \<T > |
Defined in
lib/provable-types/packed.ts:80
Properties
packed
• packed: Field
[]
Defined in
lib/provable-types/packed.ts:49
value
• value: Unconstrained
\<T
>
Defined in
lib/provable-types/packed.ts:50
_innerProvable
▪ Static
_innerProvable: undefined
| ProvableExtended
\<any
>
Defined in
lib/provable-types/packed.ts:122
_provable
▪ Static
_provable: undefined
| ProvableHashable
\<Packed
\<any
>>
Defined in
lib/provable-types/packed.ts:121
Accessors
Constructor
• get
Constructor(): typeof Packed
Returns
typeof Packed
Defined in
lib/provable-types/packed.ts:124
innerProvable
• Static
get
innerProvable(): ProvableExtended
\<any
>
Returns
ProvableExtended
\<any
>
Defined in
lib/provable-types/packed.ts:128
Methods
toFields
▸ toFields(): Field
[]
Returns
Field
[]
Defined in
lib/provable-types/packed.ts:116
unpack
▸ unpack(): T
Unpack a value.
Returns
T
Defined in
lib/provable-types/packed.ts:101
create
▸ Static
create\<T
>(type
): typeof Packed
& { provable
: ProvableHashable
\<Packed
\<T
>> }
Create a packed representation of type
. You can then use PackedType.pack(x)
to pack a value.
Type parameters
Name |
---|
T |
Parameters
Name | Type |
---|---|
type | ProvableExtended \<T > |
Returns
typeof Packed
& { provable
: ProvableHashable
\<Packed
\<T
>> }
Defined in
lib/provable-types/packed.ts:55
pack
▸ Static
pack\<T
>(x
): Packed
\<T
>
Pack a value.
Type parameters
Name |
---|
T |
Parameters
Name | Type |
---|---|
x | T |
Returns
Packed
\<T
>