Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Language.Bitcoin.Miniscript
Description
Haskell embedding of miniscript. See http://bitcoin.sipa.be/miniscript/ for details. Much of the documentation below is taken from this site.
Synopsis
- data Value a
- var :: Text -> Value a
- literal :: a -> Value a
- data Miniscript
- = Var Text
- | Let Text Miniscript Miniscript
- | Boolean Bool
- | Number Int
- | Bytes ByteString
- | KeyDesc KeyDescriptor
- | Key (Value KeyDescriptor)
- | KeyH (Value KeyDescriptor)
- | Older (Value Int)
- | After (Value Int)
- | Sha256 (Value ByteString)
- | Ripemd160 (Value ByteString)
- | Hash256 (Value ByteString)
- | Hash160 (Value ByteString)
- | AndOr Miniscript Miniscript Miniscript
- | AndV Miniscript Miniscript
- | AndB Miniscript Miniscript
- | OrB Miniscript Miniscript
- | OrC Miniscript Miniscript
- | OrD Miniscript Miniscript
- | OrI Miniscript Miniscript
- | Thresh (Value Int) Miniscript [Miniscript]
- | Multi (Value Int) [Value KeyDescriptor]
- | AnnA Miniscript
- | AnnS Miniscript
- | AnnC Miniscript
- | AnnD Miniscript
- | AnnV Miniscript
- | AnnJ Miniscript
- | AnnN Miniscript
- let_ :: [(Text, Miniscript)] -> Miniscript -> Miniscript
- key :: KeyDescriptor -> Miniscript
- keyH :: KeyDescriptor -> Miniscript
- older :: Int -> Miniscript
- after :: Int -> Miniscript
- sha256 :: ByteString -> Miniscript
- ripemd160 :: ByteString -> Miniscript
- hash256 :: ByteString -> Miniscript
- hash160 :: ByteString -> Miniscript
- thresh :: Int -> Miniscript -> [Miniscript] -> Miniscript
- multi :: Int -> [KeyDescriptor] -> Miniscript
- class MiniscriptAnnotation a where
- (.:) :: a -> Miniscript -> Miniscript
- data Annotation
- data BaseType
- = TypeB
- | TypeV
- | TypeK
- | TypeW
- | TypeNumber
- | TypeBytes
- | TypeKeyDesc
- data ModField = ModField {}
- data MiniscriptType = MiniscriptType {}
- boolType :: Bool -> MiniscriptType
- numberType :: MiniscriptType
- bytesType :: MiniscriptType
- keyDescriptorType :: MiniscriptType
- typeCheckMiniscript :: Map Text MiniscriptType -> Miniscript -> Either MiniscriptTypeError MiniscriptType
- data MiniscriptTypeError
- compile :: Miniscript -> Either CompilerError Script
- compileOnly :: Miniscript -> Either CompilerError Script
- data CompilerError
- miniscriptToText :: Network -> Miniscript -> Text
- miniscriptParser :: Network -> Parser Miniscript
- parseMiniscript :: Network -> Text -> Either String Miniscript
Syntax tree
data Miniscript Source #
The Miniscript AST with the addition of key descriptors and let bindings
Constructors
Instances
Show Miniscript Source # | |
Defined in Language.Bitcoin.Miniscript.Syntax Methods showsPrec :: Int -> Miniscript -> ShowS # show :: Miniscript -> String # showList :: [Miniscript] -> ShowS # | |
Eq Miniscript Source # | |
Defined in Language.Bitcoin.Miniscript.Syntax |
let_ :: [(Text, Miniscript)] -> Miniscript -> Miniscript Source #
key :: KeyDescriptor -> Miniscript Source #
Check a key
keyH :: KeyDescriptor -> Miniscript Source #
Check a key hash
older :: Int -> Miniscript Source #
after :: Int -> Miniscript Source #
sha256 :: ByteString -> Miniscript Source #
ripemd160 :: ByteString -> Miniscript Source #
hash256 :: ByteString -> Miniscript Source #
hash160 :: ByteString -> Miniscript Source #
thresh :: Int -> Miniscript -> [Miniscript] -> Miniscript Source #
multi :: Int -> [KeyDescriptor] -> Miniscript Source #
class MiniscriptAnnotation a where Source #
Methods
(.:) :: a -> Miniscript -> Miniscript Source #
Instances
MiniscriptAnnotation Annotation Source # | |
Defined in Language.Bitcoin.Miniscript.Syntax Methods (.:) :: Annotation -> Miniscript -> Miniscript Source # | |
MiniscriptAnnotation a => MiniscriptAnnotation [a] Source # | |
Defined in Language.Bitcoin.Miniscript.Syntax Methods (.:) :: [a] -> Miniscript -> Miniscript Source # |
data Annotation Source #
Instances
Type system
Constructors
TypeB | Base expression |
TypeV | Verify expression |
TypeK | Key expression |
TypeW | Wrapped expression |
TypeNumber | Number expression |
TypeBytes | Bytes expression |
TypeKeyDesc | Key descriptor type |
Type modifications that imply additional properties of the expression
Constructors
ModField | |
Fields
|
data MiniscriptType Source #
Constructors
MiniscriptType | |
Instances
Show MiniscriptType Source # | |
Defined in Language.Bitcoin.Miniscript.Types Methods showsPrec :: Int -> MiniscriptType -> ShowS # show :: MiniscriptType -> String # showList :: [MiniscriptType] -> ShowS # | |
Eq MiniscriptType Source # | |
Defined in Language.Bitcoin.Miniscript.Types Methods (==) :: MiniscriptType -> MiniscriptType -> Bool # (/=) :: MiniscriptType -> MiniscriptType -> Bool # |
boolType :: Bool -> MiniscriptType Source #
Arguments
:: Map Text MiniscriptType | type hints for free variables in the miniscript expression |
-> Miniscript | |
-> Either MiniscriptTypeError MiniscriptType |
Check that a miniscript expression is well-typed.
data MiniscriptTypeError Source #
Constructors
MiniscriptTypeError Miniscript | |
UntypedVariable Text | |
WrongVariableType Text BaseType MiniscriptType | fields: |
Instances
Show MiniscriptTypeError Source # | |
Defined in Language.Bitcoin.Miniscript.Types Methods showsPrec :: Int -> MiniscriptTypeError -> ShowS # show :: MiniscriptTypeError -> String # showList :: [MiniscriptTypeError] -> ShowS # | |
Eq MiniscriptTypeError Source # | |
Defined in Language.Bitcoin.Miniscript.Types Methods (==) :: MiniscriptTypeError -> MiniscriptTypeError -> Bool # (/=) :: MiniscriptTypeError -> MiniscriptTypeError -> Bool # |
Compilation
compile :: Miniscript -> Either CompilerError Script Source #
Type check and compile a miniscript
compileOnly :: Miniscript -> Either CompilerError Script Source #
Compile a miniscript without type checking
data CompilerError Source #
Constructors
FreeVariable Text | |
CompilerError Miniscript | |
TypeError MiniscriptTypeError | |
NotImplemented Miniscript | |
AbstractKey KeyDescriptor |
Instances
Exception CompilerError Source # | |
Defined in Language.Bitcoin.Miniscript.Compiler Methods toException :: CompilerError -> SomeException # fromException :: SomeException -> Maybe CompilerError # displayException :: CompilerError -> String # | |
Show CompilerError Source # | |
Defined in Language.Bitcoin.Miniscript.Compiler Methods showsPrec :: Int -> CompilerError -> ShowS # show :: CompilerError -> String # showList :: [CompilerError] -> ShowS # | |
Eq CompilerError Source # | |
Defined in Language.Bitcoin.Miniscript.Compiler Methods (==) :: CompilerError -> CompilerError -> Bool # (/=) :: CompilerError -> CompilerError -> Bool # |
Printing and parsing
miniscriptToText :: Network -> Miniscript -> Text Source #
miniscriptParser :: Network -> Parser Miniscript Source #
parseMiniscript :: Network -> Text -> Either String Miniscript Source #