Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .github/bin/check-git-dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ commits () {
done
}

cat cabal.project | \
grep '\(^source-repository-package\|^ *location:\|^ *tag:\)' | sed 's|^source-repository-package|-|g' | \
grep '\(^source-repository-package\|^ *location:\|^ *tag:\)' cabal.project | sed 's|^source-repository-package|-|g' | \
yq eval -P -j \
> tmp/repositories.json

Expand All @@ -33,6 +32,9 @@ for row in $(cat tmp/repositories.json | jq -r '.[] | @base64'); do
location="$(echo "$json" | jq -r .location)"
tag="$(echo "$json" | jq -r .tag)"

if fgrep <<<$location -f .github/master-check-exceptions.list > /dev/null
then echo "${YELLOW}check-git-dependencies: skipping location from master check: ${RED}$location${NC}"; continue; fi

rm -f tmp/tmp-dep-repo-result
rm -rf tmp/dep-repo
echo "$location"
Expand Down
2 changes: 2 additions & 0 deletions .github/master-check-exceptions.list
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
vshabanov/ekg-json
input-output-hk/iohk-monitoring-framework
57 changes: 57 additions & 0 deletions .github/workflows/haskell.yml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,63 @@ jobs:
sudo apt-get -y remove --purge software-properties-common
sudo apt-get -y autoremove

- name: Install secp256k1 (Linux)
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt-get -y install autoconf automake libtool
mkdir secp256k1-sources
cd secp256k1-sources
git clone https://github.com/bitcoin-core/secp256k1.git
cd secp256k1
git reset --hard $SECP256K1_REF
./autogen.sh
./configure --prefix=/usr --enable-module-schnorrsig --enable-experimental
make
make check
sudo make install
cd ../..

- name: Install secp256k1 (MacOS)
if: matrix.os == 'macos-latest' || matrix.os == 'macos-11'
run: |
brew install autoconf automake libtool
mkdir secp256k1-sources
cd secp256k1-sources
git clone https://github.com/bitcoin-core/secp256k1.git
cd secp256k1
git reset --hard $SECP256K1_REF
./autogen.sh
./configure --enable-module-schnorrsig --enable-experimental
make
make check
make install

- name: Install secp256k1 (Windows)
if: matrix.os == 'windows-latest'
env:
RUNNER_TEMP: ${{ runner.temp }}
run: |
echo "RUNNER_TEMP=$RUNNER_TEMP"
cd "$RUNNER_TEMP"
RUNNER_TEMP_FWD="$(echo "$RUNNER_TEMP" | sed 's|\\|/|g')"
curl -Ls \
--connect-timeout 5 \
--max-time 10 \
--retry 5 \
--retry-delay 0 \
--retry-max-time 40 \
https://hydra.iohk.io/job/Cardano/haskell-nix/windows-secp256k1/latest/download/1 -o secp256k1.zip
mkdir secp256k1
cd secp256k1
unzip ../secp256k1.zip
cd ..
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH;$(readlink -f secp256k1/lib/pkgconfig | sed 's|^/d|D:|g' | tr / '\\')"
echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH"
echo "PKG_CONFIG_PATH=$PKG_CONFIG_PATH" >> $GITHUB_ENV
export SECP256K1_PATH="$(readlink -f secp256k1/bin | sed 's|^/d|D:|g' | tr / '\\')"
echo "SECP256K1_PATH=$SECP256K1_PATH"
echo "$SECP256K1_PATH" >> $GITHUB_PATH

- name: Cabal update
run: cabal update

Expand Down
1 change: 0 additions & 1 deletion .stylish-haskell.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,6 @@ language_extensions:
- LambdaCase
- MultiParamTypeClasses
- MultiWayIf
- NoImplicitPrelude
- OverloadedStrings
- PolyKinds
- ScopedTypeVariables
Expand Down
50 changes: 31 additions & 19 deletions cabal.project
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
index-state: 2021-12-13T00:00:00Z
index-state: 2022-02-18T00:00:00Z

packages:
cardano-db
Expand All @@ -10,6 +10,7 @@ packages:

constraints:
libsystemd-journal >= 1.4.4
, bimap >= 0.4.0
, systemd >= 2.3.0
-- systemd-2.3.0 requires at least network 3.1.1.0 but it doesn't declare
-- that dependency
Expand All @@ -31,6 +32,11 @@ package cardano-smash-server
package postgresql-libpq
flags: +use-pkg-config

package cryptonite
-- Using RDRAND instead of /dev/urandom as an entropy source for key
-- generation is dubious. Set the flag so we use /dev/urandom by default.
flags: -support_rdrand

-- ---------------------------------------------------------
-- Disable all tests by default

Expand Down Expand Up @@ -66,6 +72,7 @@ package io-classes
tests: False

allow-newer:
*:aeson,
monoidal-containers:aeson,
size-based:template-haskell

Expand All @@ -83,23 +90,30 @@ source-repository-package
tag: 7497a29cb998721a9068d5725d49461f2bba0e7a
--sha256: 1gvsrg925vynwgqwplgjmp53vj953qyh3wbdf34pw21c8r47w35r

source-repository-package
type: git
location: https://github.com/vshabanov/ekg-json
tag: 00ebe7211c981686e65730b7144fbf5350462608
--sha256: 1zvjm3pb38w0ijig5wk5mdkzcszpmlp5d4zxvks2jk1rkypi8gsm

source-repository-package
type: git
location: https://github.com/input-output-hk/hedgehog-extras
tag: edf6945007177a638fbeb8802397f3a6f4e47c14
--sha256: 0wc7qzkc7j4ns2rz562h6qrx2f8xyq7yjcb7zidnj7f6j0pcd0i9
tag: 967d79533c21e33387d0227a5f6cc185203fe658
--sha256: 0rbqb7a64aya1qizlr3im06hdydg9zr6sl3i8bvqqlf7kpa647sd

source-repository-package
type: git
location: https://github.com/input-output-hk/cardano-base
tag: 41545ba3ac6b3095966316a99883d678b5ab8da8
--sha256: 0icq9y3nnl42fz536da84414av36g37894qnyw4rk3qkalksqwir
tag: 394c4637c24d82325bd04ceb99c8e8df5617e663
--sha256: 02q8y69za5b0vsnj9qga1364vkmfc1kh35d0yshw1lf7nw9bls8m
subdir:
base-deriving-via
binary
binary/test
cardano-crypto-class
cardano-crypto-praos
cardano-crypto-tests
measures
orphans-deriving-via
slotting
Expand All @@ -114,19 +128,19 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/cardano-ledger
tag: 1a9ec4ae9e0b09d54e49b2a40c4ead37edadcce5
--sha256: 0avzyiqq0m8njd41ck9kpn992yq676b1az9xs77977h7cf85y4wm
tag: 1db68a3ec0a2dcb5751004beb22b906162474f23
--sha256: 03pv2jvskbi65dwaddp6a8bxbbcw674csjxhg8xbqd6q1kfpc41a
subdir:
eras/alonzo/impl
-- eras/alonzo/test-suite
eras/babbage/impl
eras/byron/chain/executable-spec
eras/byron/crypto
eras/byron/crypto/test
eras/byron/ledger/executable-spec
eras/byron/ledger/impl
eras/byron/ledger/impl/test
eras/shelley/impl
eras/shelley/test-suite
eras/shelley-ma/impl
-- eras/shelley-ma/test-suite
libs/cardano-ledger-core
Expand All @@ -143,14 +157,13 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/cardano-node
tag: 5d8d9513f22beb0addc32634fdc8f4c9eeff3662
--sha256: 112m8mxcpb7jl16cqdv2dw0vn1jfqj7swva8wlgw7q08gmcic0zq
tag: e757b88926dfc958303c5a6edfac83a0a49490f3
--sha256: 1bwaz909f3lpgd40yy296jrcpfm0irk2j7nqcswgc1xkr77fy6iy
subdir:
cardano-api
cardano-cli
cardano-git-rev
cardano-node
plutus-example
trace-dispatcher
trace-forward
trace-resources
Expand All @@ -173,8 +186,8 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/iohk-monitoring-framework
tag: 808724ff8a19a33d0ed06f9ef59fbd900b08553c
--sha256: 0298dpl29gxzs9as9ha6y0w18hqwc00ipa3hzkxv7nlfrjjz8hmz
tag: eb7854d1337637b8672af1227b276aa33a658f47
--sha256: 1ll81hlhkhj96f5v6lswjkq2h8f7zcmdrj2azqhi4ylzafn026r3
subdir:
contra-tracer
iohk-monitoring
Expand All @@ -194,14 +207,15 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/ouroboros-network
tag: 4fac197b6f0d2ff60dc3486c593b68dc00969fbf
--sha256: 1b43vbdsr9m3ry1kgag2p2ixpv54gw7a4vvmndxl6knqg8qbsb8b
tag: ad47441e9e399495579d7dd05ccaf96b46a487b2
--sha256: 1a54yfc4m9n5j699cn8ln524h28043dyrlzn34wmnhsgqnxhavr4
subdir:
cardano-client
io-sim
io-classes
monoidal-synchronisation
network-mux
ntp-client
ouroboros-consensus
ouroboros-consensus-byron
ouroboros-consensus-cardano
Expand All @@ -218,12 +232,10 @@ source-repository-package
source-repository-package
type: git
location: https://github.com/input-output-hk/plutus
tag: 1efbb276ef1a10ca6961d0fd32e6141e9798bd11
--sha256: 1jicyk4hr8p0xksj4048gdxndrb42jz4wsnkhc3ymxbm5v6snalf
tag: ccf5bcb99ffe054dc8cd5626723f64e02708dbae
--sha256: 18569bgywilibz7r5jyxj9bid8g4fwr80cc0hd9rcm3jhasbgq8i
subdir:
freer-extras
plutus-core
plutus-ledger
plutus-ledger-api
plutus-tx
plutus-tx-plugin
Expand Down
8 changes: 5 additions & 3 deletions cardano-chain-gen/cardano-chain-gen.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ library
Cardano.Mock.ChainDB
Cardano.Mock.ChainSync.Server
Cardano.Mock.ChainSync.State
Cardano.Mock.Forging.Crypto
Cardano.Mock.Forging.Examples
Cardano.Mock.Forging.Interpreter
Cardano.Mock.Forging.Tx.Alonzo
Cardano.Mock.Forging.Tx.Alonzo.ScriptsExamples
Expand All @@ -63,17 +65,18 @@ library
, cardano-crypto-class
, cardano-crypto-praos
, cardano-crypto-wrapper
, cardano-data
, cardano-ledger-alonzo
, cardano-ledger-byron
, cardano-ledger-core
, cardano-ledger-shelley
, cardano-ledger-shelley-ma
, cardano-ledger-shelley-test
, cardano-node
, cardano-prelude
, cardano-protocol-tpraos
, cardano-slotting
, cborg
, compact-map
, containers
, contra-tracer
, directory
Expand Down Expand Up @@ -101,7 +104,7 @@ library
, persistent
, persistent-postgresql
, plutus-core
, plutus-example
, plutus-ledger-api
, pretty-show
, prometheus
, random-shuffle
Expand Down Expand Up @@ -199,5 +202,4 @@ test-suite cardano-chain-gen
, ouroboros-network-framework
, persistent
, persistent-postgresql
, plutus-example
, postgresql-simple
38 changes: 38 additions & 0 deletions cardano-chain-gen/src/Cardano/Mock/Forging/Crypto.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{-# LANGUAGE TypeApplications #-}

module Cardano.Mock.Forging.Crypto where

import Data.Typeable (Proxy (Proxy))
import Data.Word (Word64)

import Cardano.Binary (ToCBOR (..))
import Cardano.Crypto.Hash
import Cardano.Crypto.Seed (Seed, mkSeedFromBytes)
import Cardano.Crypto.VRF


instance ToCBOR RawSeed where
toCBOR (RawSeed w1 w2 w3 w4 w5) = toCBOR (w1, w2, w3, w4, w5)
encodedSizeExpr size _ = 1 + size (Proxy :: Proxy Word64) * 5

data RawSeed = RawSeed !Word64 !Word64 !Word64 !Word64 !Word64
deriving (Eq, Show)

-- | For testing purposes, generate a deterministic VRF key pair given a seed.
mkVRFKeyPair ::
VRFAlgorithm v =>
RawSeed ->
(SignKeyVRF v, VerKeyVRF v)
mkVRFKeyPair seed =
let sk = genKeyVRF $ mkSeedFromWords seed
in (sk, deriveVerKeyVRF sk)

-- | Construct a seed from a bunch of Word64s
--
-- We multiply these words by some extra stuff to make sure they contain
-- enough bits for our seed.
mkSeedFromWords ::
RawSeed ->
Seed
mkSeedFromWords stuff =
mkSeedFromBytes . hashToBytes $ hashWithSerialiser @Blake2b_256 toCBOR stuff
42 changes: 42 additions & 0 deletions cardano-chain-gen/src/Cardano/Mock/Forging/Examples.hs
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
module Cardano.Mock.Forging.Examples where

import Cardano.Prelude hiding (length, (.))

import Data.List.Extra

import Cardano.Ledger.Mary.Value
import Cardano.Ledger.Shelley.API
import Cardano.Mock.Forging.Interpreter
import qualified Cardano.Mock.Forging.Tx.Alonzo as Alonzo
import Cardano.Mock.Forging.Tx.Generic
import Cardano.Mock.Forging.Types

delegateAndSendBlocks :: Int -> Interpreter -> IO [CardanoBlock]
delegateAndSendBlocks n interpreter = do
addrFrom <- withAlonzoLedgerState interpreter $ resolveAddress (UTxOIndex 0)
registerBlocks <- forM (chunksOf 500 creds) $ \blockCreds -> do
blockTxs <- withAlonzoLedgerState interpreter $ \_st ->
forM (chunksOf 10 blockCreds) $ \txCreds -> -- 10 per tx
Alonzo.mkDCertTx (fmap (DCertDeleg . RegKey) txCreds) (Wdrl mempty)
forgeNextFindLeader interpreter (TxAlonzo <$> blockTxs)

delegateBlocks <- forM (chunksOf 500 creds) $ \blockCreds -> do
blockTxs <- withAlonzoLedgerState interpreter $ \st ->
forM (chunksOf 10 blockCreds) $ \txCreds -> --do -- 10 per tx
Alonzo.mkDCertTx
(fmap (\ (poolIx, cred) -> DCertDeleg $ Delegate $ Delegation cred (resolvePool (PoolIndex poolIx) st))
(zip (cycle [0,1,2]) txCreds))
(Wdrl mempty)
forgeNextFindLeader interpreter (TxAlonzo <$> blockTxs)

let utxoIndex = UTxOAddress addrFrom
sendBlocks <- forM (chunksOf 500 addresses) $ \blockAddresses -> do
blockTxs <- withAlonzoLedgerState interpreter $ \st ->
forM (chunksOf 10 blockAddresses) $ \txAddresses ->
Alonzo.mkPaymentTx' utxoIndex (fmap (\addr -> (UTxOAddress addr, Value 1 mempty)) txAddresses) st
forgeNextFindLeader interpreter (TxAlonzo <$> blockTxs)
pure $ registerBlocks <> delegateBlocks <> sendBlocks
where
creds = createStakeCredentials n
pcreds = createPaymentCredentials n
addresses = fmap (\(pcred, cred) -> Addr Testnet pcred (StakeRefBase cred)) (zip pcreds creds)
Original file line number Diff line number Diff line change
Expand Up @@ -65,6 +65,7 @@ import Ouroboros.Consensus.Block (BlockForging, BlockNo (..), BlockPro
import qualified Ouroboros.Consensus.Block as Block
import Ouroboros.Consensus.Cardano.Block (AlonzoEra, LedgerState (..), ShelleyEra,
StandardCrypto)
import Ouroboros.Consensus.Cardano.CanHardFork ()
import Ouroboros.Consensus.Config (TopLevelConfig, configConsensus, configLedger,
topLevelConfigLedger)
import Ouroboros.Consensus.Forecast (Forecast (..))
Expand Down
Loading