Skip to content

Commit d684ae4

Browse files
committed
Build with Pact-5
1 parent edb1bea commit d684ae4

File tree

11 files changed

+73
-83
lines changed

11 files changed

+73
-83
lines changed

cabal.project

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,42 +7,26 @@ package pact
77

88
source-repository-package
99
type: git
10-
location: https://github.com/kadena-io/HsYAML.git
11-
tag: b3c49dbceb39733dfc07c22f2097d3c74fc86e74
12-
--sha256: sha256-lnnUni7D949nM4faMrORMetZi5wJy2Qhchm9ne6Cqv8=
13-
14-
source-repository-package
15-
type: git
16-
location: https://github.com/kadena-io/HsYAML-aeson.git
17-
tag: 84292468200166b96ff4e8c7324ee01e6ab6d181
18-
--sha256: sha256-zaDcqwSs4ASb7PO3+E9oGzmSXlSt7bL1NiP0red7CiY=
19-
20-
source-repository-package
21-
type: git
22-
location: https://github.com/kadena-io/cardano-crypto.git
23-
tag: 4590efa638397e952a51a8994b5543e4ea3c1ecd
24-
--sha256: 0hl2n3bba5v2j0lmxhs7hs01z3aznh2bwf9cb434icq2g0bl8ms3
25-
26-
source-repository-package
27-
type: git
28-
location: https://github.com/kadena-io/chainweb-api.git
10+
location: https://github.com/kda-community/chainweb-api.git
2911
tag: 1b2de025cfdc09698bfb1ec3807cd85405d6a339
30-
--sha256: sha256-06jvD1kmkmthcRkyWhVLTbytwabghInxqXQD/Lm7kbA=
3112

3213
source-repository-package
3314
type: git
34-
location: https://github.com/kadena-io/pact.git
35-
tag: a1c7906efbf32095883e71594a53a21162fbe5a7
36-
--sha256: sha256-Mtgz/ilxa81TDUoBKQv5x3BlOftFjNV1Ak0uYzSguNQ=
15+
location: https://github.com/kda-community/pact-5.git
16+
tag: f9bb9979091f8eae658a804e88bf313b57c924be
3717

3818
source-repository-package
3919
type: git
40-
location: https://github.com/kadena-io/pact-json.git
20+
location: https://github.com/kda-community/pact-json.git
4121
tag: 1d260bfaa48312b54851057885de4c43c420e35f
42-
--sha256: 0fzq4mzaszj5clvixx9mn1x6r4dcrnwvbl2znd0p5mmy5h2jr0hh
4322

4423
source-repository-package
4524
type: git
46-
location: https://github.com/kadena-io/kadena-ethereum-bridge.git
47-
tag: a32d901e4a79be62af9c27c01152c9a4c3912a62
48-
--sha256: sha256-xdawv/tdjh61MbJKcBqm9Fje36+gVljuZsAxOTX1gP0=
25+
location: https://github.com/kda-community/kadena-ethereum-bridge.git
26+
tag: 8df1cff7f279750490fea8ff580294f3e5a3fcaf
27+
--sha256: sha256-HyWTEtw/dKQduXl5avRckS0oNc9Z5yxeUxvX09wDkDY=
28+
29+
source-repository-package
30+
type: git
31+
location: https://github.com/kda-community/ralist.git
32+
tag: fd79fc4454e1b703299ab0a2aa5dabd86c9cacfa

kda-tool.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ library
8181
, mwc-random
8282
, network-uri
8383
, optparse-applicative
84-
, pact
84+
, pact-tng:pact-request-api
8585
, pact-json
8686
, process
8787
, resource-pool
@@ -164,7 +164,7 @@ test-suite kda-tool-tests
164164
, mwc-random
165165
, network-uri
166166
, optparse-applicative
167-
, pact
167+
, pact-tng:pact-request-api
168168
, pact-json
169169
, process
170170
, resource-pool

src/Commands/CombineSigs.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,8 @@ import Data.Text (Text)
1717
import qualified Data.YAML.Aeson as YA
1818
import Kadena.SigningTypes
1919
import Katip
20-
import Pact.Types.Command
21-
import Pact.Types.SigData
20+
import Pact.Core.Command.SigData
21+
import Pact.Core.Command.Types
2222
import System.FilePath
2323
import System.IO
2424
import Text.Printf

src/Commands/GenTx.hs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,10 @@ import Network.Connection
2626
import Network.HTTP.Client
2727
import Network.HTTP.Client.TLS
2828
import Network.HTTP.Types.Status
29-
--import Pact.ApiReq
30-
import qualified Pact.ApiReq as Pact
3129
import qualified Pact.JSON.Encode as J
32-
import Pact.Types.Command
33-
import Pact.Types.SigData
30+
import Pact.Core.Command.SigData
31+
import Pact.Core.Command.Types
32+
import Pact.Core.Command.Client
3433
import System.IO
3534
import Text.Printf
3635
------------------------------------------------------------------------------
@@ -98,8 +97,8 @@ genFromContents op tplContents useOldOutput = do
9897
M.union (M.filter (/= Null) vars) rest
9998
txts <- hoistEither $ first prettyFailure $ fillValueVars tpl augmentedVars
10099
txis :: [TxInputs] <- sequence $ map (hoistEither . parseTxInputs) txts
101-
apiReqs :: [Pact.ApiReq] <- mapM (lift . txInputsToApiReq) txis
102-
cmds :: [Command Text] <- mapM (fmap snd . lift . Pact.mkApiReqCmd True "") apiReqs
100+
apiReqs :: [ApiReq] <- mapM (lift . txInputsToApiReq) txis
101+
cmds :: [Command Text] <- mapM (fmap snd . lift . mkApiReqCmd True "") apiReqs
103102
let chooseFormat i =
104103
if useOldOutput
105104
then pure $ encodeText $ J.toJsonViaEncode i

src/Commands/Keygen.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import Data.ByteString.Base16
1010
import qualified Data.Map as M
1111
import qualified Data.Text as T
1212
import qualified Data.Text.IO as T
13-
import Pact.Types.Crypto
13+
import Pact.Core.Command.Crypto
1414
------------------------------------------------------------------------------
1515
import Keys
1616
import Types.KeyType

src/Commands/Sign.hs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ import qualified Data.Text.IO as T
2121
import Data.Text.Encoding
2222
import qualified Data.YAML.Aeson as YA
2323
import Kadena.SigningTypes
24-
import Pact.Types.Command
25-
import Pact.Types.SigData
24+
import Pact.Core.Command.SigData
25+
import Pact.Core.Command.Types
2626
import System.Exit
2727
import System.FilePath
2828
import System.IO

src/Commands/WalletSign.hs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,8 @@ import qualified Data.YAML.Aeson as YA
2121
import Kadena.SigningApi
2222
import Kadena.SigningTypes
2323
import Katip
24-
import Pact.Types.Capability
25-
import Pact.Types.ChainMeta
26-
import Pact.Types.Command
27-
import Pact.Types.KeySet
28-
import Pact.Types.Names
29-
import Pact.Types.RPC
24+
import Pact.Core.Command.RPC
25+
import Pact.Core.Command.Types
3026
import Servant.API
3127
import Servant.Client
3228
import System.Exit
@@ -164,7 +160,7 @@ csdToSigningRequest csd = do
164160
Continuation _ -> Left "Cannot sign CONT transactions with the old signing API"
165161
Exec m -> do
166162
let code = _pcCode $ _pmCode m
167-
d = _getLegacyValue (_pmData m) ^? _Object
163+
d = Just $ _pmData m
168164
let caps = map mkDappCap $ S.toList $ S.fromList $ concatMap _siCapList $ _pSigners p
169165
let n = Just $ _pNonce p
170166
meta = _pMeta p
@@ -178,7 +174,7 @@ csdToSigningRequest csd = do
178174
pure $ SigningRequest code d caps n cid gasLimit ttl sender extraSigners
179175

180176
mkDappCap :: SigCapability -> DappCap
181-
mkDappCap sc = DappCap (_qnName $ _scName sc) "desc" sc
177+
mkDappCap sc = DappCap (_qnName $ _ctName $ _sigCapability sc) "desc" sc
182178

183179
signYamlFile :: FilePath -> IO (Either String CommandSigData)
184180
signYamlFile msgFile = do

src/Kadena/SigningApi.hs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ import Data.Aeson
1010
import Data.Proxy
1111
import Data.Text (Text)
1212
import GHC.Generics
13-
import Pact.Types.Capability (SigCapability(..))
14-
import Pact.Types.ChainMeta (TTLSeconds(..))
15-
import Pact.Types.Runtime (GasLimit(..), ChainId, PublicKeyText)
16-
import Pact.Types.Command (Command)
13+
import Pact.Core.Command.SigData
14+
import Pact.Core.Command.Types
15+
import Pact.Core.Command.Client
16+
17+
1718
import Servant.API
1819

1920
import Kadena.SigningTypes
@@ -38,7 +39,7 @@ instance FromJSON DappCap where
3839

3940
data SigningRequest = SigningRequest
4041
{ _signingRequest_code :: Text
41-
, _signingRequest_data :: Maybe Object
42+
, _signingRequest_data :: Maybe PactValue
4243
, _signingRequest_caps :: [DappCap]
4344
, _signingRequest_nonce :: Maybe Text
4445
, _signingRequest_chainId :: Maybe ChainId

src/Kadena/SigningTypes.hs

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99

1010
module Kadena.SigningTypes where
1111

12+
import Data.Coerce
1213
import Control.Lens hiding ((.=))
1314
import Control.Monad
1415
import qualified Data.Aeson as A
16+
import qualified Pact.JSON.Encode as J
1517
import Data.Aeson.Types
1618
import qualified Data.ByteString.Lazy as BSL
1719
import Data.Char as Char
@@ -23,16 +25,9 @@ import qualified Data.Text as T
2325
import qualified Data.Text.Encoding as T
2426
import GHC.Generics
2527

26-
import Pact.ApiReq
27-
import qualified Pact.JSON.Encode as J
28-
import Pact.Types.Capability (SigCapability(..))
29-
import Pact.Types.ChainMeta
30-
import Pact.Types.Command
31-
import Pact.Types.Hash
32-
import Pact.Parse
33-
import Pact.Types.Runtime (GasLimit(..), ChainId, NetworkId, PublicKeyText)
34-
-- TODO: Rip out sig data dependency
35-
import Pact.Types.SigData (PublicKeyHex(..))
28+
import Pact.Core.Command.SigData
29+
import Pact.Core.Command.Types
30+
import Pact.Core.Command.Client
3631

3732
-- The spec calls this `Signer` but it clashes too much with Pact`s `Signer` type
3833
data CSDSigner = CSDSigner
@@ -88,15 +83,15 @@ instance FromJSON CommandSigData where
8883

8984
--------------------------------------------------------------------------------
9085
data SigningOutcome =
91-
SO_Success PactHash
86+
SO_Success Hash
9287
| SO_Failure Text
9388
| SO_NoSig
9489
deriving (Eq,Ord,Show,Generic)
9590

9691
instance ToJSON SigningOutcome where
9792
toJSON a = case a of
9893
SO_Success h -> object ["result" .= ("success" :: Text), "hash" .= hashTxt ]
99-
where hashTxt = hashToText $ toUntypedHash h
94+
where hashTxt = T.decodeUtf8 $ BSL.toStrict $ J.encode h
10095
SO_Failure msg -> object ["result" .= ("failure" :: Text), "msg" .= msg ]
10196
SO_NoSig -> object ["result" .= ("noSig" :: Text)]
10297

@@ -155,12 +150,14 @@ commandSigDataToCommand = fmap fst . commandSigDataToParsedCommand
155150

156151
commandSigDataToParsedCommand :: CommandSigData -> Either String (Command Text, Payload PublicMeta ParsedCode)
157152
commandSigDataToParsedCommand (CommandSigData (SignatureList sigList) c) = do
158-
payload :: Payload PublicMeta ParsedCode <- traverse parsePact =<< A.eitherDecodeStrict' (T.encodeUtf8 c)
153+
payload :: Payload (StableEncoding PublicMeta) ParsedCode <- traverse parsePact' =<< A.eitherDecodeStrict' (T.encodeUtf8 c)
159154
let sigMap = M.fromList $ (\(CSDSigner k v) -> (k, v)) <$> sigList
160155
-- It is ok to use a map here because we're iterating over the signers list and only using the map for lookup.
161156
sigs = catMaybes $ map (\signer -> join $ M.lookup (PublicKeyHex $ _siPubKey signer) sigMap) $ _pSigners payload
162157
h = hash (T.encodeUtf8 c)
163-
pure (Command c sigs h, payload)
158+
pure (Command c sigs h, coerce payload)
159+
where
160+
parsePact' = either (Left . show) Right . parsePact
164161

165162
--------------------------------------------------------------------------------
166163
newtype AccountName = AccountName
@@ -217,10 +214,22 @@ compactEncoding = defaultOptions
217214
-- If these orphans conflict with future ToJSON instances, we can remove them.
218215

219216
instance ToJSON SigCapability where toJSON = J.toJsonViaEncode
220-
instance ToJSON PublicKeyText where toJSON = J.toJsonViaEncode
221-
instance ToJSON TTLSeconds where toJSON = J.toJsonViaEncode
222-
instance ToJSON GasLimit where toJSON = J.toJsonViaEncode
223-
instance ToJSON ChainId where toJSON = J.toJsonViaEncode
217+
218+
instance ToJSON PublicKeyText where toJSON = coerce . J.toJsonViaEncode . StableEncoding
219+
instance FromJSON PublicKeyText where parseJSON = coerce <$> parseJSON @(StableEncoding PublicKeyText)
220+
221+
instance ToJSON TTLSeconds where toJSON = coerce . J.toJsonViaEncode . StableEncoding
222+
instance FromJSON TTLSeconds where parseJSON = coerce <$> parseJSON @(StableEncoding TTLSeconds)
223+
224+
instance ToJSON GasLimit where toJSON = coerce . J.toJsonViaEncode . StableEncoding
225+
instance FromJSON GasLimit where parseJSON = coerce <$> parseJSON @(StableEncoding GasLimit)
226+
227+
instance ToJSON ChainId where toJSON = coerce . J.toJsonViaEncode . StableEncoding
228+
instance FromJSON ChainId where parseJSON = coerce <$> parseJSON @(StableEncoding ChainId)
229+
230+
instance ToJSON PactValue where toJSON = coerce . J.toJsonViaEncode . StableEncoding
231+
instance FromJSON PactValue where parseJSON = coerce <$> parseJSON @(StableEncoding PactValue)
232+
224233
instance ToJSON NetworkId where toJSON = J.toJsonViaEncode
225234
instance J.Encode a => ToJSON (Command a) where toJSON = J.toJsonViaEncode
226235
instance ToJSON ApiSigner where toJSON = J.toJsonViaEncode

src/Types/TxInputs.hs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ module Types.TxInputs where
55
------------------------------------------------------------------------------
66
import Control.Applicative
77
import Control.Error
8+
import Data.Coerce
9+
import qualified Data.Map as M
810
import Data.Aeson as A
911
import Data.Aeson.Key as A
1012
import Data.Aeson.Types
@@ -13,13 +15,12 @@ import Data.Text (Text)
1315
import qualified Data.Text as T
1416
import qualified Data.Text.Encoding as T
1517
import qualified Data.Text.IO as T
16-
import Pact.ApiReq
1718
import Kadena.SigningTypes ()
1819
import qualified Pact.JSON.Encode as J
1920
import Pact.JSON.Legacy.Value
20-
import Pact.Types.Lang
21-
import Pact.Types.RPC
22-
import Pact.Types.Verifier
21+
import Pact.Core.Command.RPC
22+
import Pact.Core.Command.Client
23+
import Pact.Core.Command.Types
2324
------------------------------------------------------------------------------
2425

2526
data PactTxType = PttExec | PttCont
@@ -41,7 +42,7 @@ instance FromJSON PactTxType where
4142

4243
data ExecInputs = ExecInputs
4344
{ _execInputs_codeOrFile :: Either Text FilePath
44-
, _execInputs_dataOrFile :: Either Value FilePath
45+
, _execInputs_dataOrFile :: Either PactValue FilePath
4546
} deriving (Eq,Show)
4647

4748
execInputsPairs :: (Monoid a, KeyValue e a) => ExecInputs -> a
@@ -77,10 +78,10 @@ txInputsToApiReq txi = do
7778
case _txInputs_payload txi of
7879
Left c -> pure $ ApiReq
7980
(Just t)
80-
(let PactId pid = _cmPactId c in hush $ fromText' pid)
81+
(parseHash $ coerce $ _cmPactId c)
8182
(Just $ _cmStep c)
8283
(Just $ _cmRollback c)
83-
(Just $ _getLegacyValue $ _cmData c)
84+
(Just $ _cmData c)
8485
(_cmProof c)
8586
Nothing
8687
Nothing
@@ -99,7 +100,7 @@ txInputsToApiReq txi = do
99100
Nothing
100101
Nothing
101102
Nothing
102-
(hush d)
103+
(coerce <$> hush d)
103104
Nothing
104105
Nothing
105106
(hush c)
@@ -151,9 +152,9 @@ instance FromJSON TxInputs where
151152
PttCont -> Left <$> parseJSON v
152153
PttExec -> do
153154
mc :: Maybe (Either Text FilePath) <- parseMaybePair o "code"
154-
md :: Maybe (Either Value FilePath) <- parseMaybePair o "data"
155+
md :: Maybe (Either (StableEncoding PactValue) FilePath) <- parseMaybePair o "data"
155156
c <- maybe (fail "Must have exec or cont fields") pure mc
156-
let d = fromMaybe (Left $ object []) md
157+
let d = fromMaybe (Left $ PObject M.empty) $ coerce <$> md
157158
pure $ Right $ ExecInputs c d
158159

159160
-- We want to allow both "meta" and "publicMeta" here to make this tool

0 commit comments

Comments
 (0)