regression tests for down voting with fake stakes
This commit is contained in:
parent
a200f4ee20
commit
e9e1502138
2 changed files with 30 additions and 2 deletions
|
|
@ -12,6 +12,7 @@ module Sample.Proposal.Unlock (
|
||||||
SignedBy (..),
|
SignedBy (..),
|
||||||
TransactionParameters (..),
|
TransactionParameters (..),
|
||||||
ProposalParameters (..),
|
ProposalParameters (..),
|
||||||
|
SSTOwner (..),
|
||||||
StakeParameters (..),
|
StakeParameters (..),
|
||||||
Validity (..),
|
Validity (..),
|
||||||
unlock,
|
unlock,
|
||||||
|
|
@ -26,6 +27,7 @@ module Sample.Proposal.Unlock (
|
||||||
mkRemoveCreatorLockBeforeFinished,
|
mkRemoveCreatorLockBeforeFinished,
|
||||||
mkCreatorRetractVotes,
|
mkCreatorRetractVotes,
|
||||||
mkChangeOutputStakeValue,
|
mkChangeOutputStakeValue,
|
||||||
|
mkUseFakeStakes,
|
||||||
) where
|
) where
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
|
@ -47,6 +49,7 @@ import Agora.Stake (
|
||||||
StakeDatum (..),
|
StakeDatum (..),
|
||||||
StakeRedeemer (RetractVotes),
|
StakeRedeemer (RetractVotes),
|
||||||
)
|
)
|
||||||
|
import Agora.Utils (validatorHashToTokenName)
|
||||||
import Data.Default.Class (Default (def))
|
import Data.Default.Class (Default (def))
|
||||||
import Data.Map.Strict qualified as StrictMap
|
import Data.Map.Strict qualified as StrictMap
|
||||||
import Data.Tagged (Tagged, untag)
|
import Data.Tagged (Tagged, untag)
|
||||||
|
|
@ -64,6 +67,7 @@ import Plutarch.Context (
|
||||||
withValue,
|
withValue,
|
||||||
)
|
)
|
||||||
import Plutarch.Extra.AssetClass (assetClassValue)
|
import Plutarch.Extra.AssetClass (assetClassValue)
|
||||||
|
import PlutusLedgerApi.V1.Value qualified as Value
|
||||||
import PlutusLedgerApi.V2 (
|
import PlutusLedgerApi.V2 (
|
||||||
Credential (PubKeyCredential),
|
Credential (PubKeyCredential),
|
||||||
PubKeyHash,
|
PubKeyHash,
|
||||||
|
|
@ -76,7 +80,7 @@ import Sample.Shared (
|
||||||
proposalAssetClass,
|
proposalAssetClass,
|
||||||
proposalValidator,
|
proposalValidator,
|
||||||
proposalValidatorHash,
|
proposalValidatorHash,
|
||||||
stakeAssetClass,
|
stakeSymbol,
|
||||||
stakeValidator,
|
stakeValidator,
|
||||||
stakeValidatorHash,
|
stakeValidatorHash,
|
||||||
)
|
)
|
||||||
|
|
@ -162,12 +166,17 @@ data StakeRole
|
||||||
Irrelevant
|
Irrelevant
|
||||||
deriving stock (Bounded, Enum, Show)
|
deriving stock (Bounded, Enum, Show)
|
||||||
|
|
||||||
|
data SSTOwner
|
||||||
|
= StakeValidator
|
||||||
|
| Attacker
|
||||||
|
|
||||||
data StakeParameters = StakeParameters
|
data StakeParameters = StakeParameters
|
||||||
{ numStakes :: Integer
|
{ numStakes :: Integer
|
||||||
, stakeRole :: StakeRole
|
, stakeRole :: StakeRole
|
||||||
, removeVoterLock :: Bool
|
, removeVoterLock :: Bool
|
||||||
, removeCreatorLock :: Bool
|
, removeCreatorLock :: Bool
|
||||||
, alterOutputValue :: Bool
|
, alterOutputValue :: Bool
|
||||||
|
, sstOwner :: SSTOwner
|
||||||
}
|
}
|
||||||
|
|
||||||
data Validity = Validity
|
data Validity = Validity
|
||||||
|
|
@ -275,7 +284,11 @@ unlock ps = builder
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
sst = assetClassValue stakeAssetClass 1
|
sstName = case ps.stakeParameters.sstOwner of
|
||||||
|
StakeValidator -> validatorHashToTokenName stakeValidatorHash
|
||||||
|
_ -> ""
|
||||||
|
|
||||||
|
sst = Value.singleton stakeSymbol sstName 1
|
||||||
|
|
||||||
stakeInputDatum = mkStakeInputDatum ps.stakeParameters
|
stakeInputDatum = mkStakeInputDatum ps.stakeParameters
|
||||||
|
|
||||||
|
|
@ -415,6 +428,7 @@ mkValidVoterRetractVotes i =
|
||||||
, removeVoterLock = True
|
, removeVoterLock = True
|
||||||
, removeCreatorLock = False
|
, removeCreatorLock = False
|
||||||
, alterOutputValue = False
|
, alterOutputValue = False
|
||||||
|
, sstOwner = StakeValidator
|
||||||
}
|
}
|
||||||
, transactionParameters =
|
, transactionParameters =
|
||||||
TransactionParameters
|
TransactionParameters
|
||||||
|
|
@ -545,3 +559,13 @@ mkChangeOutputStakeValue i =
|
||||||
{ alterOutputValue = True
|
{ alterOutputValue = True
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mkUseFakeStakes :: Integer -> ParameterBundle
|
||||||
|
mkUseFakeStakes i =
|
||||||
|
let template = mkValidVoterCreatorRetractVotes i
|
||||||
|
in template
|
||||||
|
{ stakeParameters =
|
||||||
|
template.stakeParameters
|
||||||
|
{ sstOwner = Attacker
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -402,6 +402,10 @@ specs =
|
||||||
"change output stake value"
|
"change output stake value"
|
||||||
(Unlock.mkChangeOutputStakeValue nStakes)
|
(Unlock.mkChangeOutputStakeValue nStakes)
|
||||||
(Unlock.Validity True False)
|
(Unlock.Validity True False)
|
||||||
|
, Unlock.mkTestTree
|
||||||
|
"use fake stake"
|
||||||
|
(Unlock.mkUseFakeStakes nStakes)
|
||||||
|
(Unlock.Validity False False)
|
||||||
]
|
]
|
||||||
|
|
||||||
legalGroup = group "legal" $ map mkLegalGroup stakeCountCases
|
legalGroup = group "legal" $ map mkLegalGroup stakeCountCases
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue