Skip to content

Commit

Permalink
hashToCurve -> hashToGroup
Browse files Browse the repository at this point in the history
  • Loading branch information
kwxm committed Mar 18, 2023
1 parent 37321b8 commit 8d5080e
Show file tree
Hide file tree
Showing 32 changed files with 326 additions and 325 deletions.
8 changes: 4 additions & 4 deletions plutus-benchmark/bls-benchmarks/bench/Bench.hs
Expand Up @@ -36,10 +36,10 @@ benchPairing :: Benchmark
benchPairing =
case listOfSizedByteStrings 4 4 of
[b1, b2, b3, b4] ->
let p1 = Tx.bls12_381_G1_hashToCurve $ Tx.toBuiltin b1
p2 = Tx.bls12_381_G2_hashToCurve $ Tx.toBuiltin b2
q1 = Tx.bls12_381_G1_hashToCurve $ Tx.toBuiltin b3
q2 = Tx.bls12_381_G2_hashToCurve $ Tx.toBuiltin b4
let p1 = Tx.bls12_381_G1_hashToGroup $ Tx.toBuiltin b1
p2 = Tx.bls12_381_G2_hashToGroup $ Tx.toBuiltin b2
q1 = Tx.bls12_381_G1_hashToGroup $ Tx.toBuiltin b3
q2 = Tx.bls12_381_G2_hashToGroup $ Tx.toBuiltin b4
prog = mkPairingScript p1 p2 q1 q2
in bench "pairing" $ benchProgCek prog
_ -> error "Unexpected list returned by listOfSizedByteStrings"
Expand Down
8 changes: 4 additions & 4 deletions plutus-benchmark/bls-benchmarks/exe/Main.hs
Expand Up @@ -107,10 +107,10 @@ printCosts_UncompressAndAddG2 n =

printCosts_Pairing :: IO ()
printCosts_Pairing = do
let p1 = Tx.bls12_381_G1_hashToCurve $ toBuiltin $ BS.pack [0x23, 0x43, 0x56, 0xf2]
p2 = Tx.bls12_381_G2_hashToCurve $ toBuiltin $ BS.pack [0x10, 0x00, 0xff, 0x88]
q1 = Tx.bls12_381_G1_hashToCurve $ toBuiltin $ BS.pack [0x11, 0x22, 0x33, 0x44]
q2 = Tx.bls12_381_G2_hashToCurve $ toBuiltin $ BS.pack [0xa0, 0xb1, 0xc2, 0xd3]
let p1 = Tx.bls12_381_G1_hashToGroup $ toBuiltin $ BS.pack [0x23, 0x43, 0x56, 0xf2]
p2 = Tx.bls12_381_G2_hashToGroup $ toBuiltin $ BS.pack [0x10, 0x00, 0xff, 0x88]
q1 = Tx.bls12_381_G1_hashToGroup $ toBuiltin $ BS.pack [0x11, 0x22, 0x33, 0x44]
q2 = Tx.bls12_381_G2_hashToGroup $ toBuiltin $ BS.pack [0xa0, 0xb1, 0xc2, 0xd3]
script = mkPairingScript p1 p2 q1 q2
printStatistics (-1) script

Expand Down
Expand Up @@ -72,9 +72,9 @@ listOfSizedByteStrings n l = unsafePerformIO . G.sample $
hashAndAddG1 :: [BuiltinByteString] -> BuiltinBLS12_381_G1_Element
hashAndAddG1 [] = error ()
hashAndAddG1 (p:ps) =
go ps (Tx.bls12_381_G1_hashToCurve p)
go ps (Tx.bls12_381_G1_hashToGroup p)
where go [] acc = acc
go (q:qs) acc = go qs $ Tx.bls12_381_G1_add (Tx.bls12_381_G1_hashToCurve q) acc
go (q:qs) acc = go qs $ Tx.bls12_381_G1_add (Tx.bls12_381_G1_hashToGroup q) acc

mkHashAndAddG1Script :: [ByteString] -> UProg
mkHashAndAddG1Script l =
Expand All @@ -87,9 +87,9 @@ mkHashAndAddG1Script l =
hashAndAddG2 :: [BuiltinByteString] -> BuiltinBLS12_381_G2_Element
hashAndAddG2 [] = error ()
hashAndAddG2 (p:ps) =
go ps (Tx.bls12_381_G2_hashToCurve p)
go ps (Tx.bls12_381_G2_hashToGroup p)
where go [] acc = acc
go (q:qs) acc = go qs $ Tx.bls12_381_G2_add (Tx.bls12_381_G2_hashToCurve q) acc
go (q:qs) acc = go qs $ Tx.bls12_381_G2_add (Tx.bls12_381_G2_hashToGroup q) acc

mkHashAndAddG2Script :: [ByteString] -> UProg
mkHashAndAddG2Script l =
Expand All @@ -108,15 +108,15 @@ uncompressAndAddG1 (p:ps) =

mkUncompressAndAddG1Script :: [ByteString] -> UProg
mkUncompressAndAddG1Script l =
let points = map (Tx.bls12_381_G1_compress . Tx.bls12_381_G1_hashToCurve . toBuiltin) l
let points = map (Tx.bls12_381_G1_compress . Tx.bls12_381_G1_hashToGroup . toBuiltin) l
in Tx.getPlcNoAnn $ $$(Tx.compile [|| uncompressAndAddG1 ||]) `Tx.unsafeApplyCode` Tx.liftCode points


-- Check that point addition is commutative in G1
checkUncompressAndAddG1_Haskell :: Integer -> IO ()
checkUncompressAndAddG1_Haskell n =
let l = listOfSizedByteStrings 100 n
points = map (Tx.bls12_381_G1_compress . Tx.bls12_381_G1_hashToCurve . toBuiltin) l
points = map (Tx.bls12_381_G1_compress . Tx.bls12_381_G1_hashToGroup . toBuiltin) l
result1 = uncompressAndAddG1 points
result2 = uncompressAndAddG1 (reverse points)
in do
Expand All @@ -135,14 +135,14 @@ uncompressAndAddG2 (p:ps) =

mkUncompressAndAddG2Script :: [ByteString] -> UProg
mkUncompressAndAddG2Script l =
let points = map (Tx.bls12_381_G2_compress . Tx.bls12_381_G2_hashToCurve . toBuiltin) l
let points = map (Tx.bls12_381_G2_compress . Tx.bls12_381_G2_hashToGroup . toBuiltin) l
in Tx.getPlcNoAnn $ $$(Tx.compile [|| uncompressAndAddG2 ||]) `Tx.unsafeApplyCode` Tx.liftCode points

-- Check that point addition is commutative in G2
checkUncompressAndAddG2_Haskell :: Integer -> IO ()
checkUncompressAndAddG2_Haskell n =
let l = listOfSizedByteStrings 100 n
points = map (Tx.bls12_381_G2_compress . Tx.bls12_381_G2_hashToCurve . toBuiltin) l
points = map (Tx.bls12_381_G2_compress . Tx.bls12_381_G2_hashToGroup . toBuiltin) l
result1 = uncompressAndAddG2 points
result2 = uncompressAndAddG2 (reverse points)
in do
Expand Down
4 changes: 2 additions & 2 deletions plutus-conformance/agda/Spec.hs
Expand Up @@ -61,7 +61,7 @@ failingTests = [
, "bls12_381_G1_compress/compress"
, "bls12_381_G1_equal/equal-false"
, "bls12_381_G1_equal/equal-true"
, "bls12_381_G1_hashToCurve/hash"
, "bls12_381_G1_hashToGroup/hash"
, "bls12_381_G1_scalarMul/mul0"
, "bls12_381_G1_scalarMul/mul4x11"
, "bls12_381_G1_scalarMul/muladd"
Expand Down Expand Up @@ -96,7 +96,7 @@ failingTests = [
, "bls12_381_G2_compress/compress"
, "bls12_381_G2_equal/equal-false"
, "bls12_381_G2_equal/equal-true"
, "bls12_381_G2_hashToCurve/hash"
, "bls12_381_G2_hashToGroup/hash"
, "bls12_381_G2_scalarMul/mul0"
, "bls12_381_G2_scalarMul/mul4x11"
, "bls12_381_G2_scalarMul/muladd"
Expand Down
@@ -1,7 +1,7 @@
-- Check that hasing a random bytestring gives the expected result.
(program 1.0.0
[
(builtin bls12_381_G1_hashToCurve)
(builtin bls12_381_G1_hashToGroup)
(con bytestring #3f)
]
)
@@ -1,7 +1,7 @@
-- Check that hasing a random bytestring gives the expected result.
(program 1.0.0
[
(builtin bls12_381_G2_hashToCurve)
(builtin bls12_381_G2_hashToGroup)
(con bytestring #3f)
]
)
24 changes: 12 additions & 12 deletions plutus-core/cost-model/budgeting-bench/Benchmarks/Crypto.hs
Expand Up @@ -135,16 +135,16 @@ byteStringsB :: [ByteString]
byteStringsB = take 100 (drop 100 byteStrings)

g1inputsA :: [G1.Element]
g1inputsA = fmap G1.hashToCurve byteStringsA
g1inputsA = fmap G1.hashToGroup byteStringsA

g1inputsB :: [G1.Element]
g1inputsB = fmap G1.hashToCurve byteStringsB
g1inputsB = fmap G1.hashToGroup byteStringsB

g2inputsA :: [G2.Element]
g2inputsA = fmap G2.hashToCurve byteStringsA
g2inputsA = fmap G2.hashToGroup byteStringsA

g2inputsB :: [G2.Element]
g2inputsB = fmap G2.hashToCurve byteStringsB
g2inputsB = fmap G2.hashToGroup byteStringsB

-- We can only get points on G2 via pairing. It should always succeed on the
-- inputs we give it here.
Expand Down Expand Up @@ -190,9 +190,9 @@ benchBls12_381_G1_equal =
-- Same arguments twice
-- const

benchBls12_381_G1_hashToCurve :: Benchmark
benchBls12_381_G1_hashToCurve =
let name = Bls12_381_G1_hashToCurve
benchBls12_381_G1_hashToGroup :: Benchmark
benchBls12_381_G1_hashToGroup =
let name = Bls12_381_G1_hashToGroup
inputs = listOfByteStrings 100
in createOneTermBuiltinBench name [] inputs
-- linear in input size
Expand Down Expand Up @@ -235,9 +235,9 @@ benchBls12_381_G2_equal =
-- Same arguments twice
-- const

benchBls12_381_G2_hashToCurve :: Benchmark
benchBls12_381_G2_hashToCurve =
let name = Bls12_381_G2_hashToCurve
benchBls12_381_G2_hashToGroup :: Benchmark
benchBls12_381_G2_hashToGroup =
let name = Bls12_381_G2_hashToGroup
inputs = listOfByteStrings 100
in createOneTermBuiltinBench name [] inputs
-- linear in size of input
Expand Down Expand Up @@ -281,14 +281,14 @@ blsBenchmarks gen =
, benchBls12_381_G1_neg
, benchBls12_381_G1_scalarMul multipliers
, benchBls12_381_G1_equal
, benchBls12_381_G1_hashToCurve
, benchBls12_381_G1_hashToGroup
, benchBls12_381_G1_compress
, benchBls12_381_G1_uncompress
, benchBls12_381_G2_add
, benchBls12_381_G2_neg
, benchBls12_381_G2_scalarMul multipliers
, benchBls12_381_G2_equal
, benchBls12_381_G2_hashToCurve
, benchBls12_381_G2_hashToGroup
, benchBls12_381_G2_compress
, benchBls12_381_G2_uncompress
, benchBls12_381_pairing
Expand Down
Expand Up @@ -104,14 +104,14 @@ builtinCostModelNames = BuiltinCostModelBase
, paramBls12_381_G1_equal = "bls12_381_G1_equalModel"
, paramBls12_381_G1_compress = "bls12_381_G1_compressModel"
, paramBls12_381_G1_uncompress = "bls12_381_G1_uncompressModel"
, paramBls12_381_G1_hashToCurve = "bls12_381_G1_hashToCurveModel"
, paramBls12_381_G1_hashToGroup = "bls12_381_G1_hashToGroupModel"
, paramBls12_381_G2_add = "bls12_381_G2_addModel"
, paramBls12_381_G2_neg = "bls12_381_G2_negModel"
, paramBls12_381_G2_scalarMul = "bls12_381_G2_scalarMulModel"
, paramBls12_381_G2_equal = "bls12_381_G2_equalModel"
, paramBls12_381_G2_compress = "bls12_381_G2_compressModel"
, paramBls12_381_G2_uncompress = "bls12_381_G2_uncompressModel"
, paramBls12_381_G2_hashToCurve = "bls12_381_G2_hashToCurveModel"
, paramBls12_381_G2_hashToGroup = "bls12_381_G2_hashToGroupModel"
, paramBls12_381_pairing = "bls12_381_pairingModel"
, paramBls12_381_mulMlResult = "bls12_381_mulMlResultModel"
, paramBls12_381_finalVerify = "bls12_381_finalVerifyModel"
Expand Down Expand Up @@ -214,14 +214,14 @@ createBuiltinCostModel bmfile rfile = do
paramBls12_381_G1_equal <- getParams bls12_381_G1_equal paramBls12_381_G1_equal
paramBls12_381_G1_compress <- getParams bls12_381_G1_compress paramBls12_381_G1_compress
paramBls12_381_G1_uncompress <- getParams bls12_381_G1_uncompress paramBls12_381_G1_uncompress
paramBls12_381_G1_hashToCurve <- getParams bls12_381_G1_hashToCurve paramBls12_381_G1_hashToCurve
paramBls12_381_G1_hashToGroup <- getParams bls12_381_G1_hashToGroup paramBls12_381_G1_hashToGroup
paramBls12_381_G2_add <- getParams bls12_381_G2_add paramBls12_381_G2_add
paramBls12_381_G2_neg <- getParams bls12_381_G2_neg paramBls12_381_G2_neg
paramBls12_381_G2_scalarMul <- getParams bls12_381_G2_scalarMul paramBls12_381_G2_scalarMul
paramBls12_381_G2_equal <- getParams bls12_381_G2_equal paramBls12_381_G2_equal
paramBls12_381_G2_compress <- getParams bls12_381_G2_compress paramBls12_381_G2_compress
paramBls12_381_G2_uncompress <- getParams bls12_381_G2_uncompress paramBls12_381_G2_uncompress
paramBls12_381_G2_hashToCurve <- getParams bls12_381_G2_hashToCurve paramBls12_381_G2_hashToCurve
paramBls12_381_G2_hashToGroup <- getParams bls12_381_G2_hashToGroup paramBls12_381_G2_hashToGroup
paramBls12_381_pairing <- getParams bls12_381_pairing paramBls12_381_pairing
paramBls12_381_mulMlResult <- getParams bls12_381_mulMlResult paramBls12_381_mulMlResult
paramBls12_381_finalVerify <- getParams bls12_381_finalVerify paramBls12_381_finalVerify
Expand Down Expand Up @@ -818,8 +818,8 @@ bls12_381_G1_equal cpuModelR = do
let memModel = boolMemModel
pure $ CostingFun cpuModel memModel

bls12_381_G1_hashToCurve :: MonadR m => (SomeSEXP (Region m)) -> m (CostingFun ModelOneArgument)
bls12_381_G1_hashToCurve cpuModelR = do
bls12_381_G1_hashToGroup :: MonadR m => (SomeSEXP (Region m)) -> m (CostingFun ModelOneArgument)
bls12_381_G1_hashToGroup cpuModelR = do
cpuModel <- ModelOneArgumentLinearCost <$> readModelLinearInX cpuModelR
let memModel = ModelOneArgumentConstantCost g1MemSize
pure $ CostingFun cpuModel memModel
Expand Down Expand Up @@ -860,8 +860,8 @@ bls12_381_G2_equal cpuModelR = do
let memModel = boolMemModel
pure $ CostingFun cpuModel memModel

bls12_381_G2_hashToCurve :: MonadR m => (SomeSEXP (Region m)) -> m (CostingFun ModelOneArgument)
bls12_381_G2_hashToCurve cpuModelR = do
bls12_381_G2_hashToGroup :: MonadR m => (SomeSEXP (Region m)) -> m (CostingFun ModelOneArgument)
bls12_381_G2_hashToGroup cpuModelR = do
cpuModel <- ModelOneArgumentLinearCost <$> readModelLinearInX cpuModelR
let memModel = ModelOneArgumentConstantCost g2MemSize
pure $ CostingFun cpuModel memModel
Expand Down

0 comments on commit 8d5080e

Please sign in to comment.