-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Compilation, manipulation and decompilation of Bitcoin scripts -- @package bitcoin-script @version 0.9.0 module Bitcoin.Script.Types -- | Data type representing all of the operators allowed inside a -- Script. data ScriptOp OP_PUSHDATA :: !ByteString -> !PushDataType -> ScriptOp OP_0 :: ScriptOp OP_1NEGATE :: ScriptOp OP_RESERVED :: ScriptOp OP_1 :: ScriptOp OP_2 :: ScriptOp OP_3 :: ScriptOp OP_4 :: ScriptOp OP_5 :: ScriptOp OP_6 :: ScriptOp OP_7 :: ScriptOp OP_8 :: ScriptOp OP_9 :: ScriptOp OP_10 :: ScriptOp OP_11 :: ScriptOp OP_12 :: ScriptOp OP_13 :: ScriptOp OP_14 :: ScriptOp OP_15 :: ScriptOp OP_16 :: ScriptOp OP_NOP :: ScriptOp OP_VER :: ScriptOp OP_IF :: ScriptOp OP_NOTIF :: ScriptOp OP_VERIF :: ScriptOp OP_VERNOTIF :: ScriptOp OP_ELSE :: ScriptOp OP_ENDIF :: ScriptOp OP_VERIFY :: ScriptOp OP_RETURN :: ScriptOp OP_TOALTSTACK :: ScriptOp OP_FROMALTSTACK :: ScriptOp OP_IFDUP :: ScriptOp OP_DEPTH :: ScriptOp OP_DROP :: ScriptOp OP_DUP :: ScriptOp OP_NIP :: ScriptOp OP_OVER :: ScriptOp OP_PICK :: ScriptOp OP_ROLL :: ScriptOp OP_ROT :: ScriptOp OP_SWAP :: ScriptOp OP_TUCK :: ScriptOp OP_2DROP :: ScriptOp OP_2DUP :: ScriptOp OP_3DUP :: ScriptOp OP_2OVER :: ScriptOp OP_2ROT :: ScriptOp OP_2SWAP :: ScriptOp OP_CAT :: ScriptOp OP_SUBSTR :: ScriptOp OP_LEFT :: ScriptOp OP_RIGHT :: ScriptOp OP_SIZE :: ScriptOp OP_INVERT :: ScriptOp OP_AND :: ScriptOp OP_OR :: ScriptOp OP_XOR :: ScriptOp OP_EQUAL :: ScriptOp OP_EQUALVERIFY :: ScriptOp OP_RESERVED1 :: ScriptOp OP_RESERVED2 :: ScriptOp OP_1ADD :: ScriptOp OP_1SUB :: ScriptOp OP_2MUL :: ScriptOp OP_2DIV :: ScriptOp OP_NEGATE :: ScriptOp OP_ABS :: ScriptOp OP_NOT :: ScriptOp OP_0NOTEQUAL :: ScriptOp OP_ADD :: ScriptOp OP_SUB :: ScriptOp OP_MUL :: ScriptOp OP_DIV :: ScriptOp OP_MOD :: ScriptOp OP_LSHIFT :: ScriptOp OP_RSHIFT :: ScriptOp OP_BOOLAND :: ScriptOp OP_BOOLOR :: ScriptOp OP_NUMEQUAL :: ScriptOp OP_NUMEQUALVERIFY :: ScriptOp OP_NUMNOTEQUAL :: ScriptOp OP_LESSTHAN :: ScriptOp OP_GREATERTHAN :: ScriptOp OP_LESSTHANOREQUAL :: ScriptOp OP_GREATERTHANOREQUAL :: ScriptOp OP_MIN :: ScriptOp OP_MAX :: ScriptOp OP_WITHIN :: ScriptOp OP_RIPEMD160 :: ScriptOp OP_SHA1 :: ScriptOp OP_SHA256 :: ScriptOp OP_HASH160 :: ScriptOp OP_HASH256 :: ScriptOp OP_CODESEPARATOR :: ScriptOp OP_CHECKSIG :: ScriptOp OP_CHECKSIGVERIFY :: ScriptOp OP_CHECKMULTISIG :: ScriptOp OP_CHECKMULTISIGVERIFY :: ScriptOp OP_NOP1 :: ScriptOp OP_NOP2 :: ScriptOp OP_NOP3 :: ScriptOp OP_NOP4 :: ScriptOp OP_NOP5 :: ScriptOp OP_NOP6 :: ScriptOp OP_NOP7 :: ScriptOp OP_NOP8 :: ScriptOp OP_NOP9 :: ScriptOp OP_NOP10 :: ScriptOp OP_PUBKEYHASH :: ScriptOp OP_PUBKEY :: ScriptOp OP_INVALIDOPCODE :: !Word8 -> ScriptOp -- | Data type representing a transaction script. Scripts are defined as -- lists of script operators ScriptOp. Scripts are used to: -- -- data Script Script :: ![ScriptOp] -> Script -- | List of script operators defining this script scriptOps :: Script -> ![ScriptOp] -- | Data type representing the type of an OP_PUSHDATA opcode. data PushDataType -- | The next opcode bytes is data to be pushed onto the stack OPCODE :: PushDataType -- | The next byte contains the number of bytes to be pushed onto the stack OPDATA1 :: PushDataType -- | The next two bytes contains the number of bytes to be pushed onto the -- stack OPDATA2 :: PushDataType -- | The next four bytes contains the number of bytes to be pushed onto the -- stack OPDATA4 :: PushDataType -- | Check whether opcode is only data. isPushOp :: ScriptOp -> Bool -- | Optimally encode data using one of the 4 types of data pushing opcodes opPushData :: ByteString -> ScriptOp instance Show PushDataType instance Read PushDataType instance Eq PushDataType instance Show ScriptOp instance Read ScriptOp instance Eq ScriptOp instance Eq Script instance Show Script instance Read Script instance Binary ScriptOp instance Binary Script module Bitcoin.Script -- | Decodes a hex representation of a script into a Script object. decode :: ByteString -> Script -- | Encodes a Script object into a hex representation encode :: Script -> ByteString