lib/script/types/p2sh.ex

defmodule BitcoinLib.Script.Types.P2sh do
  @moduledoc """
  P2SH helper that can issue scripts out of simple parameters
  """
  alias BitcoinLib.Script.Opcodes

  @doc """
  Returns a full P2SH script out of a public key hash

  ## Examples
    iex> <<0x11c371a2b2d22c7b8b1b51d9fde0e44a9dfdc7bb::160>>
    ...> |> BitcoinLib.Script.Types.P2sh.create()
    [
      %BitcoinLib.Script.Opcodes.Crypto.Hash160{},
      %BitcoinLib.Script.Opcodes.Data{value: <<0x11c371a2b2d22c7b8b1b51d9fde0e44a9dfdc7bb::160>>},
      %BitcoinLib.Script.Opcodes.BitwiseLogic.Equal{}
    ]
  """
  @spec create(bitstring()) :: list()
  def create(script_hash) do
    [
      %Opcodes.Crypto.Hash160{},
      %Opcodes.Data{value: script_hash},
      %Opcodes.BitwiseLogic.Equal{}
    ]
  end
end