defmodule BitcoinLib.Script.Opcodes.Data do @moduledoc """ Adds between 1 and 75 bytes of data into the stack """ defstruct [:value] alias BitcoinLib.Script.Opcodes.Data @doc """ Adds between 1 and 75 bytes of data into the stack ## Examples iex> %BitcoinLib.Script.Opcodes.Data{value: <<1, 2, 3, 4, 5>>} ...> |> BitcoinLib.Script.Opcodes.Data.encode() <<5, 1, 2, 3, 4, 5>> """ @spec encode(%Data{}) :: bitstring() def encode(%Data{value: value}) do size_of_value = byte_size(value) <> end end defimpl Inspect, for: BitcoinLib.Script.Opcodes.Data do @byte 8 def inspect(data, _opts) do hex_data = Base.encode16(data.value, case: :lower) data_size = byte_size(data.value) * @byte "%BitcoinLib.Script.Opcodes.Data{value: <<0x#{hex_data}::#{data_size}>>}" end end