Skip to content

Commit

Permalink
Extra conformance tests for verifyEcdsaSecp256k1Signature (#6622)
Browse files Browse the repository at this point in the history
* Add official test vectors for verifySchnorrSecp256k1Signature

* Extra conformance tests for verifyEcdsaSecp256k1Signature

* A few more failing tests

* A few more failing tests

* A few tests for invalid inputs

* Update README

* Update some comments

* Markdown correction
  • Loading branch information
kwxm authored Nov 4, 2024
1 parent 72fbe4d commit dcbb9ce
Show file tree
Hide file tree
Showing 55 changed files with 406 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
### Test vectors for `verifyEcdsaSecp256k1Signature`

Most of the `test-vector-*` test case have been generated using `OpenSSL
3.0.14.4` using the following procedure.

1. Type `openssl ecparam -name secp256k1 -outform DER -out secp256k1.der` to generate the `secp256k1` elliptic curve parameters and store them in the file `secp256k1.der`

2. Type `openssl ecparam -in secp256k1.der -inform DER -genkey -noout -outform DER -out pk.der`
to generate a keypair and store it in the file `pk.der`

3. Type `openssl ec -in pk.der -outform DER -pubout -conv_form compressed -out vk.der` to
generate a compressed verification key (ie public key) and store it in the file `vk.der`.

4. Given a message in `msg.txt`, generate a signature for the SHA2-256 hash
of the message using the private key generated earlier using `openssl
dgst-sha2-256 -sign pk.der msg.txt > sig.txt`. Use `-sha3-256` instead
to sign the SHA3-256 hash of the message. The signature will be stored in
DER-encoded binary form. The ECDSA algorithm involves a random number `k`
which is generated anew for each signature, and each value of `k` produces
a different signature, so repeating this step will (with very high
probabilty) generate a different signature every time: all of these are
valid signatures for the given keypair and message.

5. Look at the contents of `sig.txt` using `dumpasn1 sig.txt`. This will produce output similar
to that below.

```
0 69: SEQUENCE {
2 32: INTEGER
: 50 F1 64 A7 F6 50 91 4B 3B 7A 25 88 BE 77 54 E5
: 62 EB 6F 93 E8 31 B9 84 29 69 31 62 8C 86 C5 23
36 33: INTEGER
: 00 9B 5A 92 ED 21 5D 95 82 3E FD 2C 6F A7 10 40
: 66 DF 0F D3 3D 19 14 EC 9A C8 73 BB 27 D6 2B 11
: 0E
: }
```

6. The first `INTEGER` entry in the output above is the `r` component of the
signature, the second is the `s` component. The two numbers at the start
of the `INTEGER` lines are the offset of the `INTEGER` object within the
file and the object's length, which will probably be 32 or 33 for
Secp256k1. If the second entry has length 33 (as in this case) the
signature is a "high s" signature which is accepted by OpenSSL but not by
`verifyEcdsaSecp256k1Signature` (following
[Bitcoin](https://github.com/bitcoin/bips/blob/master/bip-0146.mediawiki#low_s);
see also Section 4.3.3.1 of the Plutus Core specification) . If this
happens, discard the signature and generate a new signature until you get
one whose `s` component has length 32.

7. If the first entry has length 32, concatenate the hex digits with those of the second entry to
obtain a bytestring of length 64. If the first entry has length 33, the first byte will be 00.
Delete this and proceed as in the length 32 case.

8. Create a Plutus script applying `verifyEcdsaSecp256k1Signature` to
* A hex string containing the verification key: you can get this by typing
`dumpasn1 -20 -p -a vk.der | grep -v BIT | tr -d '\n' | sed 's/ //g' | tr A-Z a-z`.
* The relevant hash function (`sha2_256` or `sha3_256`) applied to a hex dump of the `msg.txt`
file, for example obtained by `xxd -p msg.txt`
* The hex string obtained in Step 7 (this is the signature)

9. The process can be repeated for the same keypair and message by going back to Step 4, or you
can start again with a new keypair and/or message.

Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Low r, low s signature
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #)]
]
(con bytestring #4941155e2303988a1be97a021fbaf9fe6064d05ea694bc5e89328f297154e5c63a2f3e7b5f509294a4c2e22feb697a16b792fabfebe9d0f38403b1c929836b5a)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair and message as test-vector-01, alternative signature (high r, low s)
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #)]
]
(con bytestring #ccfd8a4781b4d69121727222f062d2c77e97496e1c701d3a0abd840207e6dcd1016c0ee3d92f1eec1ca335ec3eb285612fb82ee2c1d1f80e706b2e907dc60cc4)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair and message as test-vector-01, alternative signature (low r, high s)
-- Expect False (we don't accept signatures with high s components)
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #)]
]
(con bytestring #603e6e7bf67152188204f76f6274d38c477bdbc3954cdaa44e4ef49691a517ded5eaad30c2e69e3e9b124bcc48fa0e4d0aa0dfdb4ca9d537ea1dcd46c94b8f56
)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool False))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair and message as test-vector-01, low-s version of signature in test-vector-03
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #)]
]
(con bytestring #603e6e7bf67152188204f76f6274d38c477bdbc3954cdaa44e4ef49691a517de2a1552cf3d1961c164edb433b705f1b1b00dfd0b629ecb03d5b4914606eab1eb)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair and message as test-vector-01, sha3_256 instead of sha2_256
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha3_256) (con bytestring #)]
]
(con bytestring #5958fe71b4498446de57d0416ab8c41155fc16d46844fbc3fc9898bfca6badf9777d01c5b74b002678bfe904e941c096b5faf613a37b4d518e0ca750abcfa020)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 44719534
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair and message as test-vector-01, sha3_256 instead of sha2_256, alternative signature
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha3_256) (con bytestring #)]
]
(con bytestring #d7086f9d50c7bbdd739c16da7d16bbabff5b58fc982013c9bac6df7a7200e3fe496c38ef025c3adf1cd060e0a74112580d9d2226213d7e70f0eee726c484e986)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 44719534
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair and signature as test-vector-01, different message
-- Expect False
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #48656c6c6f210a)]
]
(con bytestring #4941155e2303988a1be97a021fbaf9fe6064d05ea694bc5e89328f297154e5c63a2f3e7b5f509294a4c2e22feb697a16b792fabfebe9d0f38403b1c929836b5a)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool False))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair as test-vector-01, different message with correct signature
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #48656c6c6f210a)]
]
(con bytestring #3499b841ac6eeb300b0dc9ed50e9c196d2b74f1745540f120bf603c48189b0ee6c48eacc04f2c3d3095fa17e11cc3b7642331963d52a9177d0d0685c4b3ff17f)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair as test-vector-01, different message with alternative correct signature
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #48656c6c6f210a)]
]
(con bytestring #fc73d27f308bb0d770db88794e2694cfe5db464764aaa8bcbcafc7c3cadb9e57244f01f2a056cf5345396e8c238972d536e4c67baa7387925d7e028f2192f5d9)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key 144c76f7eaa087f00a0381d0b7d6ec59eac07d4ac21b58695c1118b10127d821
-- Same message and signature as test-vector-01, different signing key
-- Expect False
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #03173d3b9b964301a4919be323571e64301904209a32631ccc76b42b89d38c6274)
]
[(builtin sha2_256) (con bytestring #)]
]
(con bytestring #4941155e2303988a1be97a021fbaf9fe6064d05ea694bc5e89328f297154e5c63a2f3e7b5f509294a4c2e22feb697a16b792fabfebe9d0f38403b1c929836b5a)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool False))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key 144c76f7eaa087f00a0381d0b7d6ec59eac07d4ac21b58695c1118b10127d821
-- Same message as test-vector-01, different keypair with correct signature
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #03173d3b9b964301a4919be323571e64301904209a32631ccc76b42b89d38c6274)
]
[(builtin sha2_256) (con bytestring #)]
]
(con bytestring #a40e8132923ca042d159f5fba7d2828a79dc212259121a3bfe63445bf3f620fe1b33215f4ca9eb5d41eb8e8304ddc0666236f381f3a88f54cd67740847e91b41)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same keypair as test-vector-01, large message with correct signature
-- Expect True
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #47616e6761207761732073756e6b656e2c20616e6420746865206c696d70206c65617665730a57616974656420666f72207261696e2c207768696c652074686520626c61636b20636c6f7564730a4761746865726564206661722064697374616e742c206f7665722048696d6176616e742e0a546865206a756e676c652063726f75636865642c2068756d70656420696e2073696c656e63652e0a5468656e2073706f6b6520746865207468756e6465720a44410a44617474613a2077686174206861766520776520676976656e3f0a4d7920667269656e642c20626c6f6f64207368616b696e67206d792068656172740a54686520617766756c20646172696e67206f662061206d6f6d656e74e28099732073757272656e6465720a576869636820616e20616765206f662070727564656e63652063616e206e6576657220726574726163740a427920746869732c20616e642074686973206f6e6c792c207765206861766520657869737465640a5768696368206973206e6f7420746f20626520666f756e6420696e206f7572206f6269747561726965730a4f7220696e206d656d6f7269657320647261706564206279207468652062656e65666963656e74207370696465720a4f7220756e646572207365616c732062726f6b656e20627920746865206c65616e20736f6c696369746f720a496e206f757220656d70747920726f6f6d730a44410a44617961646876616d3a2049206861766520686561726420746865206b65790a5475726e20696e2074686520646f6f72206f6e636520616e64207475726e206f6e6365206f6e6c790a5765207468696e6b206f6620746865206b65792c206561636820696e2068697320707269736f6e0a5468696e6b696e67206f6620746865206b65792c206561636820636f6e6669726d73206120707269736f6e0a4f6e6c79206174206e6967687466616c6c2c2061657468657269616c2072756d6f7572730a52657669766520666f722061206d6f6d656e7420612062726f6b656e20436f72696f6c616e75730a44410a44616d796174613a2054686520626f617420726573706f6e6465640a4761696c792c20746f207468652068616e64206578706572742077697468207361696c20616e64206f61720a54686520736561207761732063616c6d2c20796f757220686561727420776f756c64206861766520726573706f6e6465640a4761696c792c207768656e20696e76697465642c2062656174696e67206f62656469656e740a546f20636f6e74726f6c6c696e672068616e64730a0a20202020202020202020202020202020202020202020202049207361742075706f6e207468652073686f72650a46697368696e672c207769746820746865206172696420706c61696e20626568696e64206d650a5368616c6c2049206174206c6561737420736574206d79206c616e647320696e206f726465723f0a4c6f6e646f6e204272696467652069732066616c6c696e6720646f776e2066616c6c696e6720646f776e2066616c6c696e6720646f776e0a506f692073e280996173636f7365206e656c20666f636f2063686520676c6920616666696e610a5175616e646f206669616d20636575206368656c69646f6e20e28094204f207377616c6c6f77207377616c6c6f770a4c65205072696e63652064e28099417175697461696e6520c3a0206c6120746f75722061626f6c69650a546865736520667261676d656e7473204920686176652073686f72656420616761696e7374206d79207275696e730a576879207468656e20496c652066697420796f752e20486965726f6e796d6fe2809973206d616420616761696e652e0a44617474612e2044617961646876616d2e2044616d796174612e0a2020202020202020202020202020202020202020202020202020205368616e746968202020207368616e746968202020207368616e7469680a)]
]
(con bytestring #db1f0c781e2d69660525c6f502d38c83c2c62c7004e26d8b860dc9a81cadb3b72f2e2fef4d34b9c869754834e6c785962b3fd0cdd222f47b1a1f2f3388f26c90)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 47511547
| mem: 1014})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool True))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Random message, same signature as test-vector-01
-- Expect False
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
(con bytestring #377a7d7e7f49244ab617b429ec3b6b764326868236abcfed239427834782abdb)
]
(con bytestring #4941155e2303988a1be97a021fbaf9fe6064d05ea694bc5e89328f297154e5c63a2f3e7b5f509294a4c2e22feb697a16b792fabfebe9d0f38403b1c929836b5a)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43165643
| mem: 810})
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
(program 1.0.0 (con bool False))
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
-- Generated using OpenSSL 3.0.14.4
-- Signing key a1adc24fc72eeb3ca032f68134a21c83dbebed4d7088a3794dbe65b4570604fd
-- Same as test-vector-01, one bit changed in signature
-- Expect False
(program 1.0.0
[
[
[
(builtin verifyEcdsaSecp256k1Signature)
(con bytestring #032e433589dce61863199171f4d1e3fa946a5832621fcd29559940a0950f96fb6f)
]
[(builtin sha2_256) (con bytestring #)]
]
(con bytestring #4941155e2303988a1be97a021fbaf9fe6064d05ea694bc5e89328f297154e5c63a2f3e7b5f509294a2c2e22feb697a16b792fabfebe9d0f38403b1c929836b5a)
]
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
({cpu: 43490883
| mem: 1014})
Loading

1 comment on commit dcbb9ce

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark 'Plutus Benchmarks'.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.05.

Benchmark suite Current: dcbb9ce Previous: 72fbe4d Ratio
validation-crowdfunding-success-2 312.3 μs 262.8 μs 1.19
validation-crowdfunding-success-3 311.6 μs 206.6 μs 1.51
validation-currency-1 365.8 μs 249 μs 1.47
validation-escrow-redeem_1-1 510.8 μs 366.3 μs 1.39
validation-escrow-redeem_2-3 596.6 μs 564 μs 1.06
validation-future-pay-out-3 783.8 μs 568.9 μs 1.38
validation-future-pay-out-4 1165 μs 797.1 μs 1.46
validation-future-settle-early-1 366.3 μs 246.2 μs 1.49
validation-future-settle-early-2 754.7 μs 529.5 μs 1.43
validation-future-settle-early-3 560.4 μs 531.6 μs 1.05
validation-game-sm-success_2-2 301 μs 198.8 μs 1.51
validation-game-sm-success_2-3 928.8 μs 631.2 μs 1.47
validation-game-sm-success_2-4 351.5 μs 244 μs 1.44
validation-multisig-sm-2 561.3 μs 490.3 μs 1.14
validation-multisig-sm-3 566.3 μs 386.6 μs 1.46
validation-multisig-sm-4 575.7 μs 391 μs 1.47
validation-multisig-sm-5 805.3 μs 551.5 μs 1.46
validation-multisig-sm-6 573.3 μs 391.4 μs 1.46
validation-multisig-sm-7 560.5 μs 384.1 μs 1.46
validation-multisig-sm-8 565.8 μs 386.9 μs 1.46
validation-multisig-sm-9 573.2 μs 392.5 μs 1.46
validation-multisig-sm-10 778.5 μs 554.6 μs 1.40
validation-token-account-1 262.9 μs 198.3 μs 1.33
validation-decode-crowdfunding-success-1 283.8 μs 226.8 μs 1.25
validation-decode-prism-2 529.1 μs 498.7 μs 1.06
validation-decode-uniswap-3 1047 μs 996.1 μs 1.05
validation-decode-uniswap-4 254 μs 233.4 μs 1.09
validation-decode-uniswap-5 1047 μs 696.5 μs 1.50
validation-decode-uniswap-6 254.3 μs 171 μs 1.49
validation-decode-vesting-1 454.1 μs 306 μs 1.48
marlowe-semantics/004025fd712d6c325ffa12c16d157064192992faf62e0b991d7310a2f91666b8 1125 μs 875.5 μs 1.28
marlowe-semantics/acb9c83c2b78dabef8674319ad69ba54912cd9997bdf2d8b2998c6bfeef3b122 908.3 μs 636.6 μs 1.43
marlowe-semantics/acce04815e8fd51be93322888250060da173eccf3df3a605bd6bc6a456cde871 384.8 μs 270.2 μs 1.42
marlowe-semantics/b50170cea48ee84b80558c02b15c6df52faf884e504d2c410ad63ba46d8ca35c 1060 μs 746.4 μs 1.42
marlowe-semantics/bb5345bfbbc460af84e784b900ec270df1948bb1d1e29eacecd022eeb168b315 1332 μs 939 μs 1.42
marlowe-semantics/c4bb185380df6e9b66fc1ee0564f09a8d1253a51a0c0c7890f2214df9ac19274 1033 μs 727.5 μs 1.42
marlowe-semantics/c9efcb705ee057791f7c18a1de79c49f6e40ba143ce0579f1602fd780cabf153 1134 μs 800.3 μs 1.42
marlowe-semantics/ccab11ce1a8774135d0e3c9e635631b68af9e276b5dabc66ff669d5650d0be1c 1408 μs 990.8 μs 1.42
marlowe-semantics/cdb9d5c233b288a5a9dcfbd8d5c1831a0bb46eec7a26fa31b80ae69d44805efc 1225 μs 863.7 μs 1.42
marlowe-semantics/ced1ea04649e093a501e43f8568ac3e6b37cd3eccec8cac9c70a4857b88a5eb8 1165 μs 819.5 μs 1.42
marlowe-semantics/cf542b7df466b228ca2197c2aaa89238a8122f3330fe5b77b3222f570395d9f5 674.5 μs 477.1 μs 1.41
marlowe-semantics/d1ab832dfab25688f8845bec9387e46ee3f00ba5822197ade7dd540489ec5e95 48730 μs 36650 μs 1.33
marlowe-semantics/d1c03759810747b7cab38c4296593b38567e11195d161b5bb0a2b58f89b2c65a 1422 μs 999.8 μs 1.42
marlowe-semantics/d64607eb8a1448595081547ea8780886fcbd9e06036460eea3705c88ea867e33 421.7 μs 297 μs 1.42
marlowe-semantics/dc241ac6ad1e04fb056d555d6a4f2d08a45d054c6f7f34355fcfeefebef479f3 648.2 μs 455.5 μs 1.42
marlowe-semantics/dd11ae574eaeab0e9925319768989313a93913fdc347c704ddaa27042757d990 1051 μs 740.1 μs 1.42
marlowe-semantics/e26c1cddba16e05fd10c34cbdb16ea6acdbac7c8323256c31c90c520ee6a1080 518.1 μs 364.3 μs 1.42
marlowe-semantics/e34b48f80d49360e88c612f4016f7d68cb5678dd8cd5ddb981375a028b3a40a5 538.7 μs 394.5 μs 1.37
marlowe-semantics/e3afd22d01ff12f381cf915fd32358634e6c413f979f2492cf3339319d8cc079 420.8 μs 296 μs 1.42
marlowe-semantics/e9234d2671760874f3f660aae5d3416d18ce6dfd7af4231bdd41b9ec268bc7e1 1341 μs 945.5 μs 1.42
marlowe-semantics/eb4a605ed3a64961e9e66ad9631c2813dadf7131740212762ae4483ec749fe1d 421.2 μs 298.3 μs 1.41
marlowe-semantics/ecb5e8308b57724e0f8533921693f111eba942123cf8660aac2b5bac21ec28f0 920.3 μs 650.6 μs 1.41
marlowe-semantics/f2a8fd2014922f0d8e01541205d47e9bb2d4e54333bdd408cbe7c47c55e73ae4 1024 μs 723.9 μs 1.41
marlowe-semantics/f339f59bdf92495ed2b14e2e4d3705972b4dda59aa929cffe0f1ff5355db8d79 6419 μs 4581 μs 1.40
marlowe-semantics/ffdd68a33afd86f8844c9f5e45b2bda5b035aa02274161b23d57709c0f8b8de6 1330 μs 940.6 μs 1.41
marlowe-role-payout/0004000402010401030101030100040000010104020201030001000204020401 260.9 μs 184.5 μs 1.41
marlowe-role-payout/0100000100010000000001000100010101000101000001000000010000010000 356.1 μs 251.2 μs 1.42
marlowe-role-payout/0101000100000101010000010101000100010101000001000001000000010101 269.6 μs 189.3 μs 1.42
marlowe-role-payout/01dcc372ea619cb9f23c45b17b9a0a8a16b7ca0e04093ef8ecce291667a99a4c 225.4 μs 159.3 μs 1.41
marlowe-role-payout/0201020201020000020000010201020001020200000002010200000101010100 255.2 μs 180.8 μs 1.41
marlowe-role-payout/0202010002010100020102020102020001010101020102010001010101000100 239.5 μs 168.9 μs 1.42
marlowe-role-payout/0303020000020001010201060303040208070100050401080304020801030001 240.1 μs 169.8 μs 1.41
marlowe-role-payout/031d56d71454e2c4216ffaa275c4a8b3eb631109559d0e56f44ea8489f57ba97 284 μs 200.6 μs 1.42
marlowe-role-payout/03d730a62332c51c7b70c16c64da72dd1c3ea36c26b41cd1a1e00d39fda3d6cc 267.9 μs 189.1 μs 1.42
marlowe-role-payout/0403020000030204010000030001000202010101000304030001040404030100 247.9 μs 175 μs 1.42
marlowe-role-payout/0405010105020401010304080005050800040301010800080207080704020206 273.4 μs 193.3 μs 1.41
marlowe-role-payout/0c9d3634aeae7038f839a1262d1a8bc724dc77af9426459417a56ec73240f0e0 190.7 μs 172.4 μs 1.11
marlowe-role-payout/0e72f62b0f922e31a2340baccc768104025400cf7fdd7dae62fbba5fc770936d 261.8 μs 185 μs 1.42
marlowe-role-payout/0e97c9d9417354d9460f2eb35018d3904b7b035af16ab299258adab93be0911a 259.7 μs 186.8 μs 1.39
marlowe-role-payout/a1b25347409c3993feca1a60b6fcaf93d1d4bbaae19ab06fdf50cedc26cee68d 227.2 μs 165.4 μs 1.37
marlowe-role-payout/a27524cfad019df45e4e8316f927346d4cc39da6bdd294fb2c33c3f58e6a8994 194.8 μs 168.3 μs 1.16
marlowe-role-payout/bd460b7549b70c52e37b312a4242041eac18fe4a266f018bcea0c78a9085a271 271.5 μs 237.3 μs 1.14
marlowe-role-payout/bd79f4a84db23b7c4cd219d498bd581e085cbc3437957e74a8862281a700700b 272.1 μs 191.9 μs 1.42
marlowe-role-payout/c11490431db3a92efdda70933ba411a0423935e73a75c856e326dbcf6672f3bf 241.9 μs 170.5 μs 1.42
marlowe-role-payout/c4d4c88c5fe378a25a034025994a0d0b1642f10c8e6e513f872327fa895bfc7e 253.2 μs 233.1 μs 1.09
marlowe-role-payout/da353bf9219801fa1bf703fc161497570954e9af7e10ffe95c911a9ef97e77bd 244.6 μs 217.5 μs 1.12

This comment was automatically generated by workflow using github-action-benchmark.

CC: @IntersectMBO/plutus-core

Please sign in to comment.