Skip to content

Commit

Permalink
Merge pull request #156 from kadena-io/rsoeldner/hyperlane-docs
Browse files Browse the repository at this point in the history
Port hyperlane builtin
  • Loading branch information
jmcardon authored Jul 10, 2024
2 parents 821c1d2 + 03ae009 commit 12e9fe4
Show file tree
Hide file tree
Showing 27 changed files with 934 additions and 32 deletions.
24 changes: 24 additions & 0 deletions cabal.project
Original file line number Diff line number Diff line change
@@ -1,5 +1,23 @@
packages: .

if os(darwin)
if arch(aarch64)
package *
extra-include-dirs:
/opt/homebrew/include
/opt/homebrew/opt/openssl/include
extra-lib-dirs:
/opt/homebrew/lib
/opt/homebrew/opt/openssl/lib
else
package *
extra-include-dirs:
/opt/local/include
/usr/local/opt/openssl/include
extra-lib-dirs:
/opt/local/lib
/usr/local/opt/openssl/lib/

source-repository-package
type: git
tag: 2d75e5d9ee4ae6484f1f16218dd5e767ef97f593
Expand All @@ -12,4 +30,10 @@ source-repository-package
tag: fd79fc4454e1b703299ab0a2aa5dabd86c9cacfa
--sha256: sha256-q5QQFYAJLoQcaW+qCUS8XRzuyca7zc4vnDNXLwlkQ0M=

source-repository-package
type: git
location: https://github.com/kadena-io/kadena-ethereum-bridge.git
tag: a32d901e4a79be62af9c27c01152c9a4c3912a62
--sha256: sha256-xdawv/tdjh61MbJKcBqm9Fje36+gVljuZsAxOTX1gP0=

tests: True
41 changes: 41 additions & 0 deletions docs/builtins/Commitments/hyperlane-decode-token-message.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
## hyperlane-decode-token-message

Use `hyperlane-decode-token-message` to decode a base-64-unpadded encoded Hyperlane Token Message into an object containing recipient, amount, and chainId information.

### Basic syntax

To decode a Hyperlane Token Message using `hyperlane-decode-token-message`, use the following syntax:

```pact
(hyperlane-decode-token-message x)
```

### Arguments

| Name | Type | Description |
|------|------|-------------|
| `x` | string | A base-64-unpadded encoded Hyperlane Token Message |

### Return value

The `hyperlane-decode-token-message` function returns an object with the following fields:

| Field | Type | Description |
|-------|------|-------------|
| `recipient` | GUARD | The recipient of the token message |
| `amount` | DECIMAL | The amount of tokens |
| `chainId` | STRING | The chain identifier |

### Examples

Here's an example of using `hyperlane-decode-token-message` to decode a Hyperlane Token Message:

```pact
pact> (hyperlane-decode-token-message "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsABHsicHJlZCI6ICJrZXlzLWFsbCIsICJrZXlzIjpbImRhMWEzMzliZDgyZDJjMmU5MTgwNjI2YTAwZGMwNDMyNzVkZWIzYWJhYmIyN2I1NzM4YWJmNmI5ZGNlZThkYjYiXX0")
{"amount": 0.000000000000000123,"chainId": "4","recipient": KeySet {keys: [da1a339bd82d2c2e9180626a00dc043275deb3ababb27b5738abf6b9dcee8db6],pred: keys-all}}
```

In this example, the function decodes the provided base-64-unpadded string and returns an object containing the decoded information:
- The `amount` is 0.000000000000000123
- The `chainId` is "4"
- The `recipient` is a KeySet with one key and a `keys-all` predicate
42 changes: 42 additions & 0 deletions docs/builtins/Commitments/hyperlane-encode-token-message.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
## hyperlane-encode-token-message

Use `hyperlane-encode-token-message` to encode an object into a Hyperlane Token message as an unpadded base64url string.

### Basic syntax

To encode an object into a Hyperlane Token message using `hyperlane-encode-token-message`, use the following syntax:

```pact
(hyperlane-encode-token-message x)
```

### Arguments

| Name | Type | Description |
|------|------|-------------|
| `x` | object | An object containing `recipient`, `amount`, and `chainId` |

The object should have the following structure:
- `recipient`: string (base64 encoded representation of a guard)
- `amount`: decimal
- `chainId`: string

### Return value

The `hyperlane-encode-token-message` function returns a string representing the encoded Hyperlane Token message in unpadded base64url format.

### Examples

Here's an example of using `hyperlane-encode-token-message` to encode an object into a Hyperlane Token message:

```pact
pact> (hyperlane-encode-token-message {"recipient": "eyJwcmVkIjogImtleXMtYWxsIiwgImtleXMiOlsiZGExYTMzOWJkODJkMmMyZTkxODA2MjZhMDBkYzA0MzI3NWRlYjNhYmFiYjI3YjU3MzhhYmY2YjlkY2VlOGRiNiJdfQ", "amount":123000000000000000.0, "chainId":"4"})
"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbT72StfgAAABHsicHJlZCI6ICJrZXlzLWFsbCIsICJrZXlzIjpbImRhMWEzMzliZDgyZDJjMmU5MTgwNjI2YTAwZGMwNDMyNzVkZWIzYWJhYmIyN2I1NzM4YWJmNmI5ZGNlZThkYjYiXX0"
```

In this example, the function encodes the provided object into a Hyperlane Token message. The object contains:
- A `recipient` represented as a base64 encoded string (which itself represents a guard)
- An `amount` of 123000000000000000.0
- A `chainId` of "4"

The function returns the encoded message as an unpadded base64url string.
50 changes: 50 additions & 0 deletions docs/builtins/Commitments/hyperlane-message-id.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
## hyperlane-message-id

Use `hyperlane-message-id` to get the Message Id of a Hyperlane Message object.

### Basic syntax

To get the Message Id of a Hyperlane Message object using `hyperlane-message-id`, use the following syntax:

```pact
(hyperlane-message-id x)
```

### Arguments

| Name | Type | Description |
|------|------|-------------|
| `x` | object:* | A Hyperlane Message object |

The Hyperlane Message object should have the following structure:
- `destinationDomain`: integer
- `nonce`: integer
- `originDomain`: integer
- `recipient`: integer
- `sender`: string
- `messageBody`: string
- `version`: integer

### Return value

The `hyperlane-message-id` function returns a string representing the Message Id of the given Hyperlane Message object.

### Examples

Here's an example of using `hyperlane-message-id` to get the Message Id of a Hyperlane Message object:

```pact
pact> (hyperlane-message-id {"destinationDomain": 1,"nonce": 325,"originDomain": 626,"recipient": "AAAAAAAAAADpgrOqkM0BOY-FQnNzkDXuYlsVcf50GRU","sender": "AAAAAAAAAAAAAAAAf6k4W-ECrD6sKXSD3WIz1is-FJY","messageBody": "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsABHsicHJlZCI6ICJrZXlzLWFsbCIsICJrZXlzIjpbImRhMWEzMzliZDgyZDJjMmU5MTgwNjI2YTAwZGMwNDMyNzVkZWIzYWJhYmIyN2I1NzM4YWJmNmI5ZGNlZThkYjYiXX0","version": 1})
"9lxextceVw0b18kUdfwSze-3Iw7OE-Z5Kq9I8HTDKGE"
```

In this example, the function takes a Hyperlane Message object with the following properties:
- `destinationDomain`: 1
- `nonce`: 325
- `originDomain`: 626
- `recipient`: "AAAAAAAAAADpgrOqkM0BOY-FQnNzkDXuYlsVcf50GRU"
- `sender`: "AAAAAAAAAAAAAAAAf6k4W-ECrD6sKXSD3WIz1is-FJY"
- `messageBody`: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHsABHsicHJlZCI6ICJrZXlzLWFsbCIsICJrZXlzIjpbImRhMWEzMzliZDgyZDJjMmU5MTgwNjI2YTAwZGMwNDMyNzVkZWIzYWJhYmIyN2I1NzM4YWJmNmI5ZGNlZThkYjYiXX0"
- `version`: 1

The function returns the Message Id "9lxextceVw0b18kUdfwSze-3Iw7OE-Z5Kq9I8HTDKGE" for this Hyperlane Message object.
3 changes: 2 additions & 1 deletion pact-tests/Pact/Core/Test/ConTagGolden.hs
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import Pact.Core.DeriveConTag
import Pact.JSON.Encode
import Pact.Core.Errors
import Pact.Core.Builtin
import Data.List

tests :: TestTree
tests = testGroup "ConTag Goldens"
Expand All @@ -45,5 +46,5 @@ conTagGolden p =
in goldenVsStringDiff (tyn <> " Golden") runDiff fp mkGolden
where
mkGolden =
pure $ encode $ Array (allConstrInfos p)
pure $ mconcat $ intersperse "\n" $ fmap encode (allConstrInfos p) ++ ["\n"]
runDiff = \ref new -> ["diff", "-u", ref, new]
137 changes: 136 additions & 1 deletion pact-tests/constructor-tag-goldens/CoreBuiltin.golden
Original file line number Diff line number Diff line change
@@ -1 +1,136 @@
[{"conName":"CoreAdd","conIndex":"0"},{"conName":"CoreSub","conIndex":"1"},{"conName":"CoreMultiply","conIndex":"2"},{"conName":"CoreDivide","conIndex":"3"},{"conName":"CoreNegate","conIndex":"4"},{"conName":"CoreAbs","conIndex":"5"},{"conName":"CorePow","conIndex":"6"},{"conName":"CoreNot","conIndex":"7"},{"conName":"CoreEq","conIndex":"8"},{"conName":"CoreNeq","conIndex":"9"},{"conName":"CoreGT","conIndex":"a"},{"conName":"CoreGEQ","conIndex":"b"},{"conName":"CoreLT","conIndex":"c"},{"conName":"CoreLEQ","conIndex":"d"},{"conName":"CoreBitwiseAnd","conIndex":"e"},{"conName":"CoreBitwiseOr","conIndex":"f"},{"conName":"CoreBitwiseXor","conIndex":"10"},{"conName":"CoreBitwiseFlip","conIndex":"11"},{"conName":"CoreBitShift","conIndex":"12"},{"conName":"CoreRound","conIndex":"13"},{"conName":"CoreCeiling","conIndex":"14"},{"conName":"CoreFloor","conIndex":"15"},{"conName":"CoreRoundPrec","conIndex":"16"},{"conName":"CoreCeilingPrec","conIndex":"17"},{"conName":"CoreFloorPrec","conIndex":"18"},{"conName":"CoreExp","conIndex":"19"},{"conName":"CoreLn","conIndex":"1a"},{"conName":"CoreSqrt","conIndex":"1b"},{"conName":"CoreLogBase","conIndex":"1c"},{"conName":"CoreLength","conIndex":"1d"},{"conName":"CoreTake","conIndex":"1e"},{"conName":"CoreDrop","conIndex":"1f"},{"conName":"CoreConcat","conIndex":"20"},{"conName":"CoreReverse","conIndex":"21"},{"conName":"CoreContains","conIndex":"22"},{"conName":"CoreSort","conIndex":"23"},{"conName":"CoreSortObject","conIndex":"24"},{"conName":"CoreRemove","conIndex":"25"},{"conName":"CoreMod","conIndex":"26"},{"conName":"CoreMap","conIndex":"27"},{"conName":"CoreFilter","conIndex":"28"},{"conName":"CoreZip","conIndex":"29"},{"conName":"CoreIntToStr","conIndex":"2a"},{"conName":"CoreStrToInt","conIndex":"2b"},{"conName":"CoreStrToIntBase","conIndex":"2c"},{"conName":"CoreFold","conIndex":"2d"},{"conName":"CoreDistinct","conIndex":"2e"},{"conName":"CoreFormat","conIndex":"2f"},{"conName":"CoreEnumerate","conIndex":"30"},{"conName":"CoreEnumerateStepN","conIndex":"31"},{"conName":"CoreShow","conIndex":"32"},{"conName":"CoreReadMsg","conIndex":"33"},{"conName":"CoreReadMsgDefault","conIndex":"34"},{"conName":"CoreReadInteger","conIndex":"35"},{"conName":"CoreReadDecimal","conIndex":"36"},{"conName":"CoreReadString","conIndex":"37"},{"conName":"CoreReadKeyset","conIndex":"38"},{"conName":"CoreEnforceGuard","conIndex":"39"},{"conName":"CoreEnforceKeyset","conIndex":"3a"},{"conName":"CoreKeysetRefGuard","conIndex":"3b"},{"conName":"CoreAt","conIndex":"3c"},{"conName":"CoreMakeList","conIndex":"3d"},{"conName":"CoreB64Encode","conIndex":"3e"},{"conName":"CoreB64Decode","conIndex":"3f"},{"conName":"CoreStrToList","conIndex":"40"},{"conName":"CoreYield","conIndex":"41"},{"conName":"CoreYieldToChain","conIndex":"42"},{"conName":"CoreResume","conIndex":"43"},{"conName":"CoreBind","conIndex":"44"},{"conName":"CoreRequireCapability","conIndex":"45"},{"conName":"CoreComposeCapability","conIndex":"46"},{"conName":"CoreInstallCapability","conIndex":"47"},{"conName":"CoreEmitEvent","conIndex":"48"},{"conName":"CoreCreateCapabilityGuard","conIndex":"49"},{"conName":"CoreCreateCapabilityPactGuard","conIndex":"4a"},{"conName":"CoreCreateModuleGuard","conIndex":"4b"},{"conName":"CoreCreateDefPactGuard","conIndex":"4c"},{"conName":"CoreCreateTable","conIndex":"4d"},{"conName":"CoreDescribeKeyset","conIndex":"4e"},{"conName":"CoreDescribeModule","conIndex":"4f"},{"conName":"CoreDescribeTable","conIndex":"50"},{"conName":"CoreDefineKeySet","conIndex":"51"},{"conName":"CoreDefineKeysetData","conIndex":"52"},{"conName":"CoreFoldDb","conIndex":"53"},{"conName":"CoreInsert","conIndex":"54"},{"conName":"CoreKeyLog","conIndex":"55"},{"conName":"CoreKeys","conIndex":"56"},{"conName":"CoreRead","conIndex":"57"},{"conName":"CoreSelect","conIndex":"58"},{"conName":"CoreSelectWithFields","conIndex":"59"},{"conName":"CoreUpdate","conIndex":"5a"},{"conName":"CoreWithDefaultRead","conIndex":"5b"},{"conName":"CoreWithRead","conIndex":"5c"},{"conName":"CoreWrite","conIndex":"5d"},{"conName":"CoreTxIds","conIndex":"5e"},{"conName":"CoreTxLog","conIndex":"5f"},{"conName":"CoreTxHash","conIndex":"60"},{"conName":"CoreAndQ","conIndex":"61"},{"conName":"CoreOrQ","conIndex":"62"},{"conName":"CoreWhere","conIndex":"63"},{"conName":"CoreNotQ","conIndex":"64"},{"conName":"CoreHash","conIndex":"65"},{"conName":"CoreContinue","conIndex":"66"},{"conName":"CoreParseTime","conIndex":"67"},{"conName":"CoreFormatTime","conIndex":"68"},{"conName":"CoreTime","conIndex":"69"},{"conName":"CoreAddTime","conIndex":"6a"},{"conName":"CoreDiffTime","conIndex":"6b"},{"conName":"CoreHours","conIndex":"6c"},{"conName":"CoreMinutes","conIndex":"6d"},{"conName":"CoreDays","conIndex":"6e"},{"conName":"CoreCompose","conIndex":"6f"},{"conName":"CoreCreatePrincipal","conIndex":"70"},{"conName":"CoreIsPrincipal","conIndex":"71"},{"conName":"CoreTypeOfPrincipal","conIndex":"72"},{"conName":"CoreValidatePrincipal","conIndex":"73"},{"conName":"CoreNamespace","conIndex":"74"},{"conName":"CoreDefineNamespace","conIndex":"75"},{"conName":"CoreDescribeNamespace","conIndex":"76"},{"conName":"CoreChainData","conIndex":"77"},{"conName":"CoreIsCharset","conIndex":"78"},{"conName":"CorePactId","conIndex":"79"},{"conName":"CoreZkPairingCheck","conIndex":"7a"},{"conName":"CoreZKScalarMult","conIndex":"7b"},{"conName":"CoreZkPointAdd","conIndex":"7c"},{"conName":"CorePoseidonHashHackachain","conIndex":"7d"},{"conName":"CoreTypeOf","conIndex":"7e"},{"conName":"CoreDec","conIndex":"7f"},{"conName":"CoreCond","conIndex":"80"},{"conName":"CoreIdentity","conIndex":"81"},{"conName":"CoreVerifySPV","conIndex":"82"},{"conName":"CoreEnforceVerifier","conIndex":"83"}]
{"conName":"CoreAdd","conIndex":"0"}
{"conName":"CoreSub","conIndex":"1"}
{"conName":"CoreMultiply","conIndex":"2"}
{"conName":"CoreDivide","conIndex":"3"}
{"conName":"CoreNegate","conIndex":"4"}
{"conName":"CoreAbs","conIndex":"5"}
{"conName":"CorePow","conIndex":"6"}
{"conName":"CoreNot","conIndex":"7"}
{"conName":"CoreEq","conIndex":"8"}
{"conName":"CoreNeq","conIndex":"9"}
{"conName":"CoreGT","conIndex":"a"}
{"conName":"CoreGEQ","conIndex":"b"}
{"conName":"CoreLT","conIndex":"c"}
{"conName":"CoreLEQ","conIndex":"d"}
{"conName":"CoreBitwiseAnd","conIndex":"e"}
{"conName":"CoreBitwiseOr","conIndex":"f"}
{"conName":"CoreBitwiseXor","conIndex":"10"}
{"conName":"CoreBitwiseFlip","conIndex":"11"}
{"conName":"CoreBitShift","conIndex":"12"}
{"conName":"CoreRound","conIndex":"13"}
{"conName":"CoreCeiling","conIndex":"14"}
{"conName":"CoreFloor","conIndex":"15"}
{"conName":"CoreRoundPrec","conIndex":"16"}
{"conName":"CoreCeilingPrec","conIndex":"17"}
{"conName":"CoreFloorPrec","conIndex":"18"}
{"conName":"CoreExp","conIndex":"19"}
{"conName":"CoreLn","conIndex":"1a"}
{"conName":"CoreSqrt","conIndex":"1b"}
{"conName":"CoreLogBase","conIndex":"1c"}
{"conName":"CoreLength","conIndex":"1d"}
{"conName":"CoreTake","conIndex":"1e"}
{"conName":"CoreDrop","conIndex":"1f"}
{"conName":"CoreConcat","conIndex":"20"}
{"conName":"CoreReverse","conIndex":"21"}
{"conName":"CoreContains","conIndex":"22"}
{"conName":"CoreSort","conIndex":"23"}
{"conName":"CoreSortObject","conIndex":"24"}
{"conName":"CoreRemove","conIndex":"25"}
{"conName":"CoreMod","conIndex":"26"}
{"conName":"CoreMap","conIndex":"27"}
{"conName":"CoreFilter","conIndex":"28"}
{"conName":"CoreZip","conIndex":"29"}
{"conName":"CoreIntToStr","conIndex":"2a"}
{"conName":"CoreStrToInt","conIndex":"2b"}
{"conName":"CoreStrToIntBase","conIndex":"2c"}
{"conName":"CoreFold","conIndex":"2d"}
{"conName":"CoreDistinct","conIndex":"2e"}
{"conName":"CoreFormat","conIndex":"2f"}
{"conName":"CoreEnumerate","conIndex":"30"}
{"conName":"CoreEnumerateStepN","conIndex":"31"}
{"conName":"CoreShow","conIndex":"32"}
{"conName":"CoreReadMsg","conIndex":"33"}
{"conName":"CoreReadMsgDefault","conIndex":"34"}
{"conName":"CoreReadInteger","conIndex":"35"}
{"conName":"CoreReadDecimal","conIndex":"36"}
{"conName":"CoreReadString","conIndex":"37"}
{"conName":"CoreReadKeyset","conIndex":"38"}
{"conName":"CoreEnforceGuard","conIndex":"39"}
{"conName":"CoreEnforceKeyset","conIndex":"3a"}
{"conName":"CoreKeysetRefGuard","conIndex":"3b"}
{"conName":"CoreAt","conIndex":"3c"}
{"conName":"CoreMakeList","conIndex":"3d"}
{"conName":"CoreB64Encode","conIndex":"3e"}
{"conName":"CoreB64Decode","conIndex":"3f"}
{"conName":"CoreStrToList","conIndex":"40"}
{"conName":"CoreYield","conIndex":"41"}
{"conName":"CoreYieldToChain","conIndex":"42"}
{"conName":"CoreResume","conIndex":"43"}
{"conName":"CoreBind","conIndex":"44"}
{"conName":"CoreRequireCapability","conIndex":"45"}
{"conName":"CoreComposeCapability","conIndex":"46"}
{"conName":"CoreInstallCapability","conIndex":"47"}
{"conName":"CoreEmitEvent","conIndex":"48"}
{"conName":"CoreCreateCapabilityGuard","conIndex":"49"}
{"conName":"CoreCreateCapabilityPactGuard","conIndex":"4a"}
{"conName":"CoreCreateModuleGuard","conIndex":"4b"}
{"conName":"CoreCreateDefPactGuard","conIndex":"4c"}
{"conName":"CoreCreateTable","conIndex":"4d"}
{"conName":"CoreDescribeKeyset","conIndex":"4e"}
{"conName":"CoreDescribeModule","conIndex":"4f"}
{"conName":"CoreDescribeTable","conIndex":"50"}
{"conName":"CoreDefineKeySet","conIndex":"51"}
{"conName":"CoreDefineKeysetData","conIndex":"52"}
{"conName":"CoreFoldDb","conIndex":"53"}
{"conName":"CoreInsert","conIndex":"54"}
{"conName":"CoreKeyLog","conIndex":"55"}
{"conName":"CoreKeys","conIndex":"56"}
{"conName":"CoreRead","conIndex":"57"}
{"conName":"CoreSelect","conIndex":"58"}
{"conName":"CoreSelectWithFields","conIndex":"59"}
{"conName":"CoreUpdate","conIndex":"5a"}
{"conName":"CoreWithDefaultRead","conIndex":"5b"}
{"conName":"CoreWithRead","conIndex":"5c"}
{"conName":"CoreWrite","conIndex":"5d"}
{"conName":"CoreTxIds","conIndex":"5e"}
{"conName":"CoreTxLog","conIndex":"5f"}
{"conName":"CoreTxHash","conIndex":"60"}
{"conName":"CoreAndQ","conIndex":"61"}
{"conName":"CoreOrQ","conIndex":"62"}
{"conName":"CoreWhere","conIndex":"63"}
{"conName":"CoreNotQ","conIndex":"64"}
{"conName":"CoreHash","conIndex":"65"}
{"conName":"CoreContinue","conIndex":"66"}
{"conName":"CoreParseTime","conIndex":"67"}
{"conName":"CoreFormatTime","conIndex":"68"}
{"conName":"CoreTime","conIndex":"69"}
{"conName":"CoreAddTime","conIndex":"6a"}
{"conName":"CoreDiffTime","conIndex":"6b"}
{"conName":"CoreHours","conIndex":"6c"}
{"conName":"CoreMinutes","conIndex":"6d"}
{"conName":"CoreDays","conIndex":"6e"}
{"conName":"CoreCompose","conIndex":"6f"}
{"conName":"CoreCreatePrincipal","conIndex":"70"}
{"conName":"CoreIsPrincipal","conIndex":"71"}
{"conName":"CoreTypeOfPrincipal","conIndex":"72"}
{"conName":"CoreValidatePrincipal","conIndex":"73"}
{"conName":"CoreNamespace","conIndex":"74"}
{"conName":"CoreDefineNamespace","conIndex":"75"}
{"conName":"CoreDescribeNamespace","conIndex":"76"}
{"conName":"CoreChainData","conIndex":"77"}
{"conName":"CoreIsCharset","conIndex":"78"}
{"conName":"CorePactId","conIndex":"79"}
{"conName":"CoreZkPairingCheck","conIndex":"7a"}
{"conName":"CoreZKScalarMult","conIndex":"7b"}
{"conName":"CoreZkPointAdd","conIndex":"7c"}
{"conName":"CorePoseidonHashHackachain","conIndex":"7d"}
{"conName":"CoreTypeOf","conIndex":"7e"}
{"conName":"CoreDec","conIndex":"7f"}
{"conName":"CoreCond","conIndex":"80"}
{"conName":"CoreIdentity","conIndex":"81"}
{"conName":"CoreVerifySPV","conIndex":"82"}
{"conName":"CoreEnforceVerifier","conIndex":"83"}
{"conName":"CoreHyperlaneMessageId","conIndex":"84"}
{"conName":"CoreHyperlaneDecodeMessage","conIndex":"85"}
{"conName":"CoreHyperlaneEncodeMessage","conIndex":"86"}

Loading

0 comments on commit 12e9fe4

Please sign in to comment.