UNPKG

@btc-vision/btc-runtime

Version:

Bitcoin L1 Smart Contract Runtime for OP_NET. Build decentralized applications on Bitcoin using AssemblyScript and WebAssembly. Fully audited.

40 lines (32 loc) 1.06 kB
import { DEFAULT_MAX_LENGTH, StoredPackedArray } from './StoredPackedArray'; import { bigEndianAdd } from '../../math/bytes'; import { Address } from '../../types/Address'; /** * StoredAddressArray * * Array of addresses. */ @final export class StoredAddressArray extends StoredPackedArray<Address> { public constructor(pointer: u16, subPointer: Uint8Array, maxLength: u32 = DEFAULT_MAX_LENGTH) { super(pointer, subPointer, Address.zero(), maxLength); } protected getSlotCapacity(): u32 { return 1; // 1 x u256 => 32 bytes } protected zeroValue(): Address { return Address.zero(); } protected eq(a: Address, b: Address): bool { return a == b; } protected packSlot(values: Address[]): Uint8Array { return values[0]; } protected unpackSlot(slotData: Uint8Array): Address[] { return [Address.fromUint8Array(slotData)]; } protected calculateStoragePointer(slotIndex: u64): Uint8Array { return bigEndianAdd(this.basePointer, slotIndex); } }