Skip to content

Contract

EVM contract representation.

Properties

struct {
  /// The bytecode associated with this contract.
  bytecode: Bytecode
  /// Address that called this contract.
  caller: Address
  /// Keccak hash of the bytecode.
  code_hash: ?Hash = null
  /// The calldata input to use in this contract.
  input: []u8
  /// The address of this contract.
  target_address: Address
  /// Value in wei associated with this contract.
  value: u256
}

Init

Creates a contract instance from the provided inputs. This will also prepare the provided bytecode in case it's given in a raw state.

Signature

pub fn init(
    allocator: Allocator,
    data: []u8,
    bytecode: Bytecode,
    hash: ?Hash,
    value: u256,
    caller: Address,
    target_address: Address,
) Allocator.Error!Contract

InitFromEnviroment

Creates a contract instance from a given enviroment. This will also prepare the provided bytecode in case it's given in a raw state.

Signature

pub fn initFromEnviroment(
    allocator: Allocator,
    env: EVMEnviroment,
    bytecode: Bytecode,
    hash: ?Hash,
) Allocator.Error!Contract

Deinit

Clears the bytecode in case it's analyzed.

Signature

pub fn deinit(
    self: @This(),
    allocator: Allocator,
) void

IsValidJump

Returns if the provided target result in a valid jump dest.

Signature

pub fn isValidJump(
    self: Contract,
    target: usize,
) bool