packages feed

ppad-script-0.1.0: bench/Weight.hs

{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE PackageImports #-}
{-# LANGUAGE StandaloneDeriving #-}

module Main where

import Bitcoin.Prim.Script
import Control.DeepSeq
import qualified Data.ByteString as BS
import GHC.Generics
import qualified Weigh as W

deriving stock instance Generic Script
instance NFData Script

deriving stock instance Generic Term
instance NFData Term

deriving stock instance Generic Opcode
instance NFData Opcode

main :: IO ()
main = W.mainWith $ do
    W.func "bs_to_ba" bs_to_ba (BS.replicate 1024 0x00)
    W.func "ba_to_bs" ba_to_bs ba
    W.func "to_script" to_script terms
    W.func "from_script" from_script script
  where
    ba = bs_to_ba (BS.replicate 1024 0x00)
    script = to_script terms
    terms = [
        OPCODE OP_DUP,OPCODE OP_HASH160,OPCODE OP_PUSHBYTES_20,BYTE 0x89,BYTE 0xab
      , BYTE 0xcd,BYTE 0xef,BYTE 0xab,BYTE 0xba,BYTE 0xab,BYTE 0xba,BYTE 0xab
      , BYTE 0xba,BYTE 0xab,BYTE 0xba,BYTE 0xab,BYTE 0xba,BYTE 0xab,BYTE 0xba
      , BYTE 0xab,BYTE 0xba,BYTE 0xab,BYTE 0xba,OPCODE OP_EQUALVERIFY
      , OPCODE OP_CHECKSIG
      ]