|
1 | 1 | import {
|
2 | 2 | BigNum,
|
3 | 3 | ConstrPlutusData,
|
| 4 | + Costmdls, |
4 | 5 | PlutusData,
|
5 | 6 | PlutusList,
|
| 7 | + Redeemers, |
6 | 8 | } from "../../src/generated";
|
7 |
| -import { hash_plutus_data } from "../../src/hash"; |
| 9 | +import { hash_plutus_data, hash_script_data } from "../../src/hash"; |
8 | 10 |
|
9 | 11 | describe("hash_plutus_data Tests", () => {
|
10 | 12 | test("Hash of ConstrPlutusData with tag 0 and empty list", () => {
|
@@ -50,3 +52,50 @@ describe("hash_plutus_data Tests", () => {
|
50 | 52 | expect(hashHex).toBe(expectedHash);
|
51 | 53 | });
|
52 | 54 | });
|
| 55 | + |
| 56 | +describe("hash_script_data Tests", () => { |
| 57 | + test("Known plutus data hash", () => { |
| 58 | + |
| 59 | + const redeemers = Redeemers.from_hex("a182000182d87980821a006acfc01ab2d05e00"); |
| 60 | + const costmdls = Costmdls.from_hex("a10098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a"); |
| 61 | + const plist = PlutusList.from_hex("9fd8799fd8799f581ca183bf86925f66c579a3745c9517744399679b090927b8f6e2f2e1bb4f6164617065416d616e734576616e73ffd8799f581c9a4e855293a0b9af5e50935a331d83e7982ab5b738ea0e6fc0f9e6564e4652414d455f38333030325f4c30ff581cbea1c521df58f4eeef60c647e5ebd88c6039915409f9fd6454a476b9ffff"); |
| 62 | + |
| 63 | + const hash = hash_script_data(redeemers, costmdls, plist); |
| 64 | + |
| 65 | + expect(hash.to_hex()).toBe("e77f547d8249947bf0af31c432fcfff9c1872b2502b3f34d8107002255695e07"); |
| 66 | + }); |
| 67 | + |
| 68 | + test("Known plutus data hash 2", () => { |
| 69 | + |
| 70 | + const redeemers = Redeemers.from_hex("a182000182d87a808219ef741a01160878"); |
| 71 | + const costmdls = Costmdls.from_hex("a10098a61a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0374f693194a1f0a"); |
| 72 | + const plist = PlutusList.from_hex("9fd8799f581c45f6a506a49a38263c4a8bbb2e1e369dd8732fb1f9a281f3e88383871a03938700581cee8e37676f6ebb8e031dff493f88ff711d24aa68666a09d61f1d3fb34f43727970746f44696e6f3036333039ffff"); |
| 73 | + |
| 74 | + const hash = hash_script_data(redeemers, costmdls, plist); |
| 75 | + |
| 76 | + expect(hash.to_hex()).toBe("f3ae8e52bff4c7b8d803469ee61eabf37e96e89f8a3bb80115ad068ab5dff598"); |
| 77 | + }); |
| 78 | + |
| 79 | + test("Known plutus data hash with no datums", () => { |
| 80 | + |
| 81 | + const redeemers = Redeemers.from_hex("a182000082d87980821a000cdcf41a0eab3111"); |
| 82 | + const costmdls = Costmdls.from_hex("a10198af1a0003236119032c01011903e819023b00011903e8195e7104011903e818201a0001ca761928eb041959d818641959d818641959d818641959d818641959d818641959d81864186418641959d81864194c5118201a0002acfa182019b551041a000363151901ff00011a00015c3518201a000797751936f404021a0002ff941a0006ea7818dc0001011903e8196ff604021a0003bd081a00034ec5183e011a00102e0f19312a011a00032e801901a5011a0002da781903e819cf06011a00013a34182019a8f118201903e818201a00013aac0119e143041903e80a1a00030219189c011a00030219189c011a0003207c1901d9011a000330001901ff0119ccf3182019fd40182019ffd5182019581e18201940b318201a00012adf18201a0002ff941a0006ea7818dc0001011a00010f92192da7000119eabb18201a0002ff941a0006ea7818dc0001011a0002ff941a0006ea7818dc0001011a0011b22c1a0005fdde00021a000c504e197712041a001d6af61a0001425b041a00040c660004001a00014fab18201a0003236119032c010119a0de18201a00033d7618201979f41820197fb8182019a95d1820197df718201995aa18201a0223accc0a1a0374f693194a1f0a1a02515e841980b30a"); |
| 83 | + const plist = undefined; |
| 84 | + |
| 85 | + const hash = hash_script_data(redeemers, costmdls, plist); |
| 86 | + |
| 87 | + expect(hash.to_hex()).toBe("5b235dbfaa999fb3616da9903d9affd09c7f2121c2d50db7ece0a9fb8587a038"); |
| 88 | + }); |
| 89 | + |
| 90 | + test("No redeemers", () => { |
| 91 | + |
| 92 | + const redeemers = Redeemers.new(); |
| 93 | + const costmdls = Costmdls.new(); |
| 94 | + const plist = PlutusList.from_hex("9fd8799fd8799fd8799f581c7fbb4763847b9ec49a132d5359bd86aaecde9275a03aef294ffb79d0ffd8799fd8799fd8799f581cfa34f3b651ecb6a75834c80dc1fd162feb1d1b4cdcef0d065a5785aaffffffffd8799fd8799f581c7fbb4763847b9ec49a132d5359bd86aaecde9275a03aef294ffb79d0ffd8799fd8799fd8799f581cfa34f3b651ecb6a75834c80dc1fd162feb1d1b4cdcef0d065a5785aaffffffffd87a80d8799fd8799f4040ff1a059eb214ff1a001e84801a001e8480ffff"); |
| 95 | + |
| 96 | + const hash = hash_script_data(redeemers, costmdls, plist); |
| 97 | + |
| 98 | + expect(hash.to_hex()).toBe("fd53a28a846ae6ccf8b221d03d4af122b0b3c442089c05b87e3d86c6792b3ef0"); |
| 99 | + }); |
| 100 | + |
| 101 | +}); |
0 commit comments