diff --git a/agora-test/Spec.hs b/agora-test/Spec.hs index 606e9ca..37def06 100644 --- a/agora-test/Spec.hs +++ b/agora-test/Spec.hs @@ -9,14 +9,21 @@ import Test.Tasty (defaultMain, testGroup) -------------------------------------------------------------------------------- import Spec.Int +import Spec.Stake qualified as Stake main :: IO () main = defaultMain $ testGroup - "apropos-tx" + "test suite" [ testGroup - "Int" - [ intPlutarchTests + "sample-tests" + Stake.tests + , testGroup + "apropos-tx" + [ testGroup + "Int" + [ intPlutarchTests + ] ] ] diff --git a/agora-test/Spec/Sample/Stake.hs b/agora-test/Spec/Sample/Stake.hs new file mode 100644 index 0000000..9f86cbd --- /dev/null +++ b/agora-test/Spec/Sample/Stake.hs @@ -0,0 +1,97 @@ +{- | +Module : Spec.Sample.Stake +Maintainer : emi@haskell.fyi +Description: Sample based testing for Stake utxos + +This module tests primarily the happy path for Stake creation +-} +module Spec.Sample.Stake ( + stake, + policy, + policySymbol, + stakeCreation, + validatorHashTN, +) where + +-------------------------------------------------------------------------------- + +import Plutarch.Api.V1 ( + mintingPolicySymbol, + mkMintingPolicy, + mkValidator, + validatorHash, + ) +import Plutus.V1.Ledger.Ada (adaValueOf) +import Plutus.V1.Ledger.Api ( + Address (Address), + Credential (ScriptCredential), + CurrencySymbol, + Datum (Datum), + DatumHash (DatumHash), + MintingPolicy (..), + PubKeyHash, + ScriptContext (..), + ScriptPurpose (..), + ToData (toBuiltinData), + TxInfo (..), + TxOut (txOutAddress, txOutDatumHash, txOutValue), + ValidatorHash (ValidatorHash), + ) +import Plutus.V1.Ledger.Contexts (TxOut (TxOut)) +import Plutus.V1.Ledger.Interval qualified as Interval +import Plutus.V1.Ledger.Scripts (Validator) +import Plutus.V1.Ledger.Value (TokenName (TokenName)) +import Plutus.V1.Ledger.Value qualified as Value + +-------------------------------------------------------------------------------- + +import Agora.SafeMoney +import Agora.Stake + +-------------------------------------------------------------------------------- + +stake :: Stake LQ +stake = Stake + +policy :: MintingPolicy +policy = mkMintingPolicy (stakePolicy stake) + +policySymbol :: CurrencySymbol +policySymbol = mintingPolicySymbol policy + +signer :: PubKeyHash +signer = "8a30896c4fd5e79843e4ca1bd2cdbaa36f8c0bc3be7401214142019c" + +validator :: Validator +validator = mkValidator (stakeValidator stake) + +validatorHashTN :: TokenName +validatorHashTN = let ValidatorHash vh = validatorHash validator in TokenName vh + +stakeCreation :: ScriptContext +stakeCreation = + let st = Value.singleton policySymbol validatorHashTN 1 -- Stake ST + datum :: Datum + datum = Datum (toBuiltinData $ StakeDatum 424242424242 signer) + in ScriptContext + { scriptContextTxInfo = + TxInfo + { txInfoInputs = [] + , txInfoOutputs = + [ TxOut + { txOutAddress = Address (ScriptCredential $ validatorHash validator) Nothing + , txOutValue = st <> Value.singleton "da8c30857834c6ae7203935b89278c532b3995245295456f993e1d24" "LQ" 424242424242 + , txOutDatumHash = Just (DatumHash "") + } + ] + , txInfoFee = adaValueOf 2 + , txInfoMint = st + , txInfoDCert = [] + , txInfoWdrl = [] + , txInfoValidRange = Interval.always + , txInfoSignatories = [signer] + , txInfoData = [("", datum)] + , txInfoId = "0b2086cbf8b6900f8cb65e012de4516cb66b5cb08a9aaba12a8b88be" + } + , scriptContextPurpose = Minting policySymbol + } diff --git a/agora-test/Spec/Stake.hs b/agora-test/Spec/Stake.hs new file mode 100644 index 0000000..fc52396 --- /dev/null +++ b/agora-test/Spec/Stake.hs @@ -0,0 +1,39 @@ +module Spec.Stake (tests) where + +-------------------------------------------------------------------------------- + +import Prelude + +-------------------------------------------------------------------------------- + +import Test.Tasty (TestTree, testGroup) +import Test.Tasty.HUnit (assertFailure, testCase) + +-------------------------------------------------------------------------------- + +import Plutarch (compile) +import Plutarch.Evaluate (evaluateScript) +import Plutus.V1.Ledger.Scripts (Script) + +-------------------------------------------------------------------------------- + +import Agora.Stake (stakePolicy) + +-------------------------------------------------------------------------------- + +import Plutarch.Builtin (pforgetData) +import Spec.Sample.Stake qualified as Stake + +-------------------------------------------------------------------------------- +tests :: [TestTree] +tests = + [ testGroup "policy" $ + [ scriptTest "minting" (compile $ stakePolicy Stake.stake # pforgetData (pconstantData ()) # pconstant Stake.stakeCreation) + ] + ] + +scriptTest :: String -> Script -> TestTree +scriptTest name script = testCase name $ do + case evaluateScript script of + Left e -> assertFailure (show e) + Right _v -> pure () diff --git a/agora.cabal b/agora.cabal index 440ac37..e915b25 100644 --- a/agora.cabal +++ b/agora.cabal @@ -111,6 +111,7 @@ common test-deps , quickcheck-instances , tasty , tasty-hedgehog + , tasty-hunit , apropos-tx library @@ -147,6 +148,11 @@ test-suite agora-test hs-source-dirs: agora-test other-modules: Spec.Int + Spec.Sample.Stake + Spec.Stake + + build-depends: + , agora benchmark agora-bench import: lang, deps diff --git a/agora/Agora/SafeMoney.hs b/agora/Agora/SafeMoney.hs index f361e22..d40d99d 100644 --- a/agora/Agora/SafeMoney.hs +++ b/agora/Agora/SafeMoney.hs @@ -9,6 +9,7 @@ module Agora.SafeMoney ( -- * Types MoneyClass, PDiscrete, + Discrete, -- * Utility functions paddDiscrete, @@ -60,6 +61,10 @@ newtype PDiscrete (mc :: MoneyClass) (s :: S) = PDiscrete (Term s PInteger) deriving (PlutusType, PIsData, PEq, POrd) via (DerivePNewtype (PDiscrete mc) PInteger) +newtype Discrete (mc :: MoneyClass) + = Discrete Integer + deriving stock (Show) + -- | Add two `PDiscrete` values of the same `MoneyClass`. paddDiscrete :: Term s (PDiscrete mc :--> PDiscrete mc :--> PDiscrete mc) paddDiscrete = phoistAcyclic $ diff --git a/agora/Agora/Stake.hs b/agora/Agora/Stake.hs index cc87ae8..df8ffc4 100644 --- a/agora/Agora/Stake.hs +++ b/agora/Agora/Stake.hs @@ -1,3 +1,5 @@ +{-# LANGUAGE TemplateHaskell #-} + {- | Module : Agora.Stake Maintainer : emi@haskell.fyi @@ -8,6 +10,7 @@ Vote-lockable stake UTXOs holding GT. module Agora.Stake ( PStakeDatum (..), PStakeAction (..), + StakeDatum (..), Stake (..), stakePolicy, stakeValidator, @@ -25,12 +28,18 @@ import Prelude -------------------------------------------------------------------------------- +import Plutus.V1.Ledger.Api (PubKeyHash) +import PlutusTx qualified + +-------------------------------------------------------------------------------- + import Plutarch (popaque) import Plutarch.Api.V1 ( PCredential (PPubKeyCredential, PScriptCredential), PMintingPolicy, PPubKeyHash, PScriptPurpose (PMinting, PSpending), + PTokenName, PValidator, mintingPolicySymbol, mkMintingPolicy, @@ -92,6 +101,15 @@ newtype PStakeDatum (gt :: MoneyClass) (s :: S) = PStakeDatum (PlutusType, PIsData, PDataFields) via (PIsDataReprInstances (PStakeDatum gt)) +-- | Haskell-level datum for Stake scripts. +data StakeDatum = StakeDatum + { stakedAmount :: Integer + , owner :: PubKeyHash + } + deriving stock (Show, GHC.Generic) + +PlutusTx.makeIsDataIndexed ''StakeDatum [('StakeDatum, 0)] + -------------------------------------------------------------------------------- {- What this Policy does @@ -162,12 +180,16 @@ stakePolicy _stake = PScriptCredential validatorHash' -> P.do validatorHash <- pletFields @'["_0"] validatorHash' stakeDatum <- pletFields @'["owner", "stakedAmount"] stakeDatum' + + -- TODO: figure out why this is required :/ (specifically, why `validatorHash._0` is `PData`) + tn <- plet (pfromData (punsafeCoerce validatorHash._0 :: Term _ (PAsData PTokenName))) + let stValue = psingletonValue # ownSymbol -- This coerce is safe because the structure -- of PValidatorHash is the same as PTokenName. - # punsafeCoerce validatorHash._0 + # tn # 1 let expectedValue = paddValue @@ -180,8 +202,8 @@ stakePolicy _stake = -- TODO: Needs to be >=, rather than == let valueCorrect = pdata value #== pdata expectedValue - ownerSignsTransaction #&& valueCorrect - + ptraceIfFalse "ownerSignsTransaction" ownerSignsTransaction + #&& ptraceIfFalse "valueCorrect" valueCorrect popaque (pconstant ()) pif (0 #< mintedST) minting burning diff --git a/flake.lock b/flake.lock index 879db67..dfcb32a 100644 --- a/flake.lock +++ b/flake.lock @@ -92,31 +92,14 @@ "type": "github" } }, - "autodocodec": { - "flake": false, - "locked": { - "lastModified": 1644358110, - "narHash": "sha256-X1TNZlmO2qDFk3OL4Z1v/gzvd3ouoACAiMweutsYek4=", - "owner": "srid", - "repo": "autodocodec", - "rev": "42b42a7407f33c6c74fa4e8c84906aebfed28daf", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "ghc921", - "repo": "autodocodec", - "type": "github" - } - }, "cabal-32": { "flake": false, "locked": { "lastModified": 1603716527, - "narHash": "sha256-sDbrmur9Zfp4mPKohCD8IDZfXJ0Tjxpmr2R+kg5PpSY=", + "narHash": "sha256-X0TFfdD4KZpwl0Zr6x+PLxUt/VyKQfX7ylXHdmZIL+w=", "owner": "haskell", "repo": "cabal", - "rev": "94aaa8e4720081f9c75497e2735b90f6a819b08e", + "rev": "48bf10787e27364730dd37a42b603cee8d6af7ee", "type": "github" }, "original": { @@ -146,11 +129,11 @@ "cabal-34": { "flake": false, "locked": { - "lastModified": 1622475795, - "narHash": "sha256-chwTL304Cav+7p38d9mcb+egABWmxo2Aq+xgVBgEb/U=", + "lastModified": 1640353650, + "narHash": "sha256-N1t6M3/wqj90AEdRkeC8i923gQYUpzSr8b40qVOZ1Rk=", "owner": "haskell", "repo": "cabal", - "rev": "b086c1995cdd616fc8d91f46a21e905cc50a1049", + "rev": "942639c18c0cd8ec53e0a6f8d120091af35312cd", "type": "github" }, "original": { @@ -178,6 +161,23 @@ } }, "cabal-36": { + "flake": false, + "locked": { + "lastModified": 1641652457, + "narHash": "sha256-BlFPKP4C4HRUJeAbdembX1Rms1LD380q9s0qVDeoAak=", + "owner": "haskell", + "repo": "cabal", + "rev": "f27667f8ec360c475027dcaee0138c937477b070", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "3.6", + "repo": "cabal", + "type": "github" + } + }, + "cabal-36_2": { "flake": false, "locked": { "lastModified": 1640163203, @@ -422,11 +422,11 @@ }, "flake-utils": { "locked": { - "lastModified": 1623875721, - "narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=", + "lastModified": 1644229661, + "narHash": "sha256-1YdnJAsNy69bpcjuoKdOYQX0YxZBiCYZo4Twxerqv7k=", "owner": "numtide", "repo": "flake-utils", - "rev": "f7e004a55b120c02ecb6219596820fcd32ca8772", + "rev": "3cecb5b042f7f209c56ffd8371b2711a290ec797", "type": "github" }, "original": { @@ -553,11 +553,11 @@ "hackage": { "flake": false, "locked": { - "lastModified": 1639357972, - "narHash": "sha256-NvVn00YOYZMqDUSiBbghJk/rm/nJItBEUJulWRGTgvk=", + "lastModified": 1646270198, + "narHash": "sha256-SakG546Zr9RuNPs5mhtT7CYPpvEDMGrWisWK/VpCvr0=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "54adf6e47e20831d9c49a2b62e12f7f218fd7752", + "rev": "4cf90b36955597d0151940eabfb1b61a8ec42256", "type": "github" }, "original": { @@ -569,11 +569,11 @@ "hackage-nix": { "flake": false, "locked": { - "lastModified": 1637291070, - "narHash": "sha256-hTX2Xo36i9MR6PNwA/89C8daKjxmx5ZS5lwR2Cbp8Yo=", + "lastModified": 1644369434, + "narHash": "sha256-WqU6f1OhSM0UHXFW8Mhhvhz0tcij+NQVtmb6sW4RiFw=", "owner": "input-output-hk", "repo": "hackage.nix", - "rev": "6ea4ad5f4a5e2303cd64974329ba90ccc410a012", + "rev": "644a0d702abf84cdec62f4e620ff1034000e6146", "type": "github" }, "original": { @@ -617,16 +617,16 @@ "haskell-language-server": { "flake": false, "locked": { - "lastModified": 1638136578, - "narHash": "sha256-Reo9BQ12O+OX7tuRfaDPZPBpJW4jnxZetm63BxYncoM=", + "lastModified": 1643835246, + "narHash": "sha256-5LQHcQmi3mUGRgJu+X/m3jeM3kdkYjLD+KwgnxBlbeU=", "owner": "haskell", "repo": "haskell-language-server", - "rev": "745ef26f406dbdd5e4a538585f8519af9f1ccb09", + "rev": "024ddc8b3904f8b8e8fe67ba6b9ebd8a4bd7ce76", "type": "github" }, "original": { "owner": "haskell", - "ref": "1.5.1", + "ref": "1.6.1.1", "repo": "haskell-language-server", "type": "github" } @@ -669,6 +669,7 @@ "HTTP": "HTTP", "cabal-32": "cabal-32", "cabal-34": "cabal-34", + "cabal-36": "cabal-36", "cardano-shell": "cardano-shell", "flake-utils": "flake-utils", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk", @@ -688,11 +689,11 @@ "stackage": "stackage" }, "locked": { - "lastModified": 1639371915, - "narHash": "sha256-i5kW3hPptzXwzkpI2FAkfdDA/9QEDl/9mrwwoeBxDJg=", + "lastModified": 1646278384, + "narHash": "sha256-Gv1Ws3vAojjvjATcsvwAOTuOhzpxwt6tBci7EBaXxU4=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "e95a1f0dacbc64603c31d11e36e4ba1af8f0eb43", + "rev": "7e06e14ae1b894445254fe41288bfa7dd4ccbc6f", "type": "github" }, "original": { @@ -704,11 +705,11 @@ "haskell-nix_2": { "flake": false, "locked": { - "lastModified": 1629380841, - "narHash": "sha256-gWOWCfX7IgVSvMMYN6rBGK6EA0pk6pmYguXzMvGte+Q=", + "lastModified": 1646278384, + "narHash": "sha256-Gv1Ws3vAojjvjATcsvwAOTuOhzpxwt6tBci7EBaXxU4=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "7215f083b37741446aa325b20c8ba9f9f76015eb", + "rev": "7e06e14ae1b894445254fe41288bfa7dd4ccbc6f", "type": "github" }, "original": { @@ -722,7 +723,7 @@ "HTTP": "HTTP_2", "cabal-32": "cabal-32_2", "cabal-34": "cabal-34_2", - "cabal-36": "cabal-36", + "cabal-36": "cabal-36_2", "cardano-shell": "cardano-shell_2", "flake-utils": "flake-utils_2", "ghc-8.6.5-iohk": "ghc-8.6.5-iohk_2", @@ -730,8 +731,6 @@ "hpc-coveralls": "hpc-coveralls_2", "nix-tools": "nix-tools_2", "nixpkgs": [ - "plutarch", - "haskell-nix", "nixpkgs-2111" ], "nixpkgs-2003": "nixpkgs-2003_2", @@ -918,11 +917,11 @@ "nix-tools": { "flake": false, "locked": { - "lastModified": 1636018067, - "narHash": "sha256-ng306fkuwr6V/malWtt3979iAC4yMVDDH2ViwYB6sQE=", + "lastModified": 1644395812, + "narHash": "sha256-BVFk/BEsTLq5MMZvdy3ZYHKfaS3dHrsKh4+tb5t5b58=", "owner": "input-output-hk", "repo": "nix-tools", - "rev": "ed5bd7215292deba55d6ab7a4e8c21f8b1564dda", + "rev": "d847c63b99bbec78bf83be2a61dc9f09b8a9ccc1", "type": "github" }, "original": { @@ -982,11 +981,11 @@ "nixpkgs": { "flake": false, "locked": { - "lastModified": 1628785280, - "narHash": "sha256-2B5eMrEr6O8ff2aQNeVxTB+9WrGE80OB4+oM6T7fOcc=", + "lastModified": 1645493675, + "narHash": "sha256-9xundbZQbhFodsQRh6QMN1GeSXfo3y/5NL0CZcJULz0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6525bbc06a39f26750ad8ee0d40000ddfdc24acb", + "rev": "74b10859829153d5c5d50f7c77b86763759e8654", "type": "github" }, "original": { @@ -1030,11 +1029,11 @@ }, "nixpkgs-2105": { "locked": { - "lastModified": 1639202042, - "narHash": "sha256-xEMgCsIcDUQ0kw9xvqU0wObns580kpdcr1ACz83+gHs=", + "lastModified": 1642244250, + "narHash": "sha256-vWpUEqQdVP4srj+/YLJRTN9vjpTs4je0cdWKXPbDItc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "499ca2a9f6463ce119e40361f4329afa921a1d13", + "rev": "0fd9ee1aa36ce865ad273f4f07fdc093adeb5c00", "type": "github" }, "original": { @@ -1062,11 +1061,11 @@ }, "nixpkgs-2111": { "locked": { - "lastModified": 1639213685, - "narHash": "sha256-Evuobw7o9uVjAZuwz06Al0fOWZ5JMKOktgXR0XgWBtg=", + "lastModified": 1644510859, + "narHash": "sha256-xjpVvL5ecbyi0vxtVl/Fh9bwGlMbw3S06zE5nUzFB8A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "453bcb8380fd1777348245b3c44ce2a2b93b2e2d", + "rev": "0d1d5d7e3679fec9d07f2eb804d9f9fdb98378d3", "type": "github" }, "original": { @@ -1078,11 +1077,11 @@ }, "nixpkgs-2111_2": { "locked": { - "lastModified": 1644793108, - "narHash": "sha256-MN/ElRTuE7pWuf99Hr1pbAxA3ApDLYuK6hIsA5sagjc=", + "lastModified": 1646416052, + "narHash": "sha256-bfV62gYQGYjb/Gvw6MdMuEvWCcC838mI1Dzi1efjqTA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b61bf7a96aa6ddd3c425fa1db8c45acfdd82e36b", + "rev": "c78fc23f108b9a3bea9bf8693d2943ee0269c804", "type": "github" }, "original": { @@ -1126,11 +1125,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1639239143, - "narHash": "sha256-9fFMUs6m3/4ZMflSqRgO4iEkBtFBnDyLWa3AB2tOvfs=", + "lastModified": 1644486793, + "narHash": "sha256-EeijR4guVHgVv+JpOX3cQO+1XdrkJfGmiJ9XVsVU530=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e6df26a654b7fdd59a068c57001eab5736b1363c", + "rev": "1882c6b7368fd284ad01b0a5b5601ef136321292", "type": "github" }, "original": { @@ -1241,7 +1240,6 @@ "inputs": { "Shrinker": "Shrinker", "Win32-network": "Win32-network", - "autodocodec": "autodocodec", "cardano-base": "cardano-base", "cardano-crypto": "cardano-crypto", "cardano-prelude": "cardano-prelude", @@ -1261,18 +1259,15 @@ ], "plutus": "plutus_2", "protolude": "protolude", - "safe-coloured-text": "safe-coloured-text", "sized-functors": "sized-functors", - "sydtest": "sydtest", - "th-extras": "th-extras", - "validity": "validity" + "th-extras": "th-extras" }, "locked": { - "lastModified": 1645200363, - "narHash": "sha256-k/ecf2uasWwBV+zq3daJVGY3xnsYkLe3zmT+k+iZ++A=", + "lastModified": 1646730784, + "narHash": "sha256-pVvSa4fBoKXCdCu/NGduoKhr1/gGESCmj/Tr9Y5l9B4=", "owner": "Plutonomicon", "repo": "plutarch", - "rev": "473424c89b4457e58e009e65d411ace1efc3ea9e", + "rev": "aecc2050eb63ff0041576473aa3193070fe91314", "type": "github" }, "original": { @@ -1295,11 +1290,11 @@ "stackage-nix": "stackage-nix" }, "locked": { - "lastModified": 1639153959, - "narHash": "sha256-tz8wEV5oO2yu2WFl3+wAPHedJJUP/NMFYgfcsbcyji4=", + "lastModified": 1646401716, + "narHash": "sha256-Xh4m6NVgxhtJZPW+/TH0KncginXLORO6EAN/ulitlrw=", "owner": "input-output-hk", "repo": "plutus", - "rev": "da4f85cdd2a3a261ce540e8dc51d2a3c5fa89ed2", + "rev": "73e4bbfc32ea233ba679d3f558a95adf8513a9d7", "type": "github" }, "original": { @@ -1416,23 +1411,6 @@ "plutarch": "plutarch" } }, - "safe-coloured-text": { - "flake": false, - "locked": { - "lastModified": 1644357337, - "narHash": "sha256-sXSKw8m6O9K/H2BBiYqO5e4sJIo+9UP+UvEukRn28d8=", - "owner": "srid", - "repo": "safe-coloured-text", - "rev": "034f3612525568b422e0c62b52417d77b7cf31c2", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "ghc921", - "repo": "safe-coloured-text", - "type": "github" - } - }, "sized-functors": { "flake": false, "locked": { @@ -1485,11 +1463,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1639185224, - "narHash": "sha256-ZBL0Lvqq8/Iwl8F5sT2N9J8+HTh0OY+09LkkUVtuUtY=", + "lastModified": 1646270328, + "narHash": "sha256-WFzBTbZW9zKnZtHLBLGui9F1tBDKX7ixBtaQOG5SK/M=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "14819f5c85a92e5fb6e322cc809c803fa6419bd4", + "rev": "b3171527569b52b3924d8e70e0aed753d3f55cc4", "type": "github" }, "original": { @@ -1546,23 +1524,6 @@ "type": "github" } }, - "sydtest": { - "flake": false, - "locked": { - "lastModified": 1644358460, - "narHash": "sha256-1ZxTLL5YVxktyHqfMywwsNGx5nxNMPXnq33QI6BcvUI=", - "owner": "srid", - "repo": "sydtest", - "rev": "5b572105c30f79c5e20637c6af4eedf39e0ac85a", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "ghc921", - "repo": "sydtest", - "type": "github" - } - }, "th-extras": { "flake": false, "locked": { @@ -1579,23 +1540,6 @@ "rev": "787ed752c1e5d41b5903b74e171ed087de38bffa", "type": "github" } - }, - "validity": { - "flake": false, - "locked": { - "lastModified": 1644358698, - "narHash": "sha256-dpMIu08qXMzy8Kilk/2VWpuwIsfqFtpg/3mkwt5pdjA=", - "owner": "srid", - "repo": "validity", - "rev": "f7982549b95d0ab727950dc876ca06b1862135ba", - "type": "github" - }, - "original": { - "owner": "srid", - "ref": "ghc921", - "repo": "validity", - "type": "github" - } } }, "root": "root", diff --git a/flake.nix b/flake.nix index cf967f3..992dcfd 100644 --- a/flake.nix +++ b/flake.nix @@ -80,7 +80,6 @@ additional = ps: [ ps.plutarch ps.plutarch-benchmark - ps.tasty-quickcheck ps.apropos-tx ]; }; diff --git a/hie.yaml b/hie.yaml index bea0b14..e1be10a 100644 --- a/hie.yaml +++ b/hie.yaml @@ -1,8 +1,8 @@ cradle: cabal: - - path: "./src" + - path: "./agora-src" component: "lib:agora" - - path: "./bench" + - path: "./agora-bench" component: "benchmark:agora-bench" - - path: "./test" + - path: "./agora-test" component: "test:agora-test"