|
126 | 126 | },
|
127 | 127 | "additionalProperties": false
|
128 | 128 | },
|
| 129 | + { |
| 130 | + "description": "Slashing message.\n\nThis message can be called by the admin only.", |
| 131 | + "type": "object", |
| 132 | + "required": [ |
| 133 | + "slashing" |
| 134 | + ], |
| 135 | + "properties": { |
| 136 | + "slashing": { |
| 137 | + "type": "object", |
| 138 | + "required": [ |
| 139 | + "evidence", |
| 140 | + "sender" |
| 141 | + ], |
| 142 | + "properties": { |
| 143 | + "evidence": { |
| 144 | + "$ref": "#/definitions/Evidence" |
| 145 | + }, |
| 146 | + "sender": { |
| 147 | + "$ref": "#/definitions/Addr" |
| 148 | + } |
| 149 | + }, |
| 150 | + "additionalProperties": false |
| 151 | + } |
| 152 | + }, |
| 153 | + "additionalProperties": false |
| 154 | + }, |
129 | 155 | {
|
130 | 156 | "description": "Enable or disable finality gadget.\n\nThis message can be called by the admin only. If disabled, the verifier should bypass the EOTS verification logic, allowing the OP derivation derivation pipeline to pass through. Note this should be implemented in the verifier and is not enforced by the contract itself.",
|
131 | 157 | "type": "object",
|
|
171 | 197 | }
|
172 | 198 | ],
|
173 | 199 | "definitions": {
|
| 200 | + "Addr": { |
| 201 | + "description": "A human readable address.\n\nIn Cosmos, this is typically bech32 encoded. But for multi-chain smart contracts no assumptions should be made other than being UTF-8 encoded and of reasonable length.\n\nThis type represents a validated address. It can be created in the following ways 1. Use `Addr::unchecked(input)` 2. Use `let checked: Addr = deps.api.addr_validate(input)?` 3. Use `let checked: Addr = deps.api.addr_humanize(canonical_addr)?` 4. Deserialize from JSON. This must only be done from JSON that was validated before such as a contract's state. `Addr` must not be used in messages sent by the user because this would result in unvalidated instances.\n\nThis type is immutable. If you really need to mutate it (Really? Are you sure?), create a mutable copy using `let mut mutable = Addr::to_string()` and operate on that `String` instance.", |
| 202 | + "type": "string" |
| 203 | + }, |
174 | 204 | "Binary": {
|
175 | 205 | "description": "Binary is a wrapper around Vec<u8> to add base64 de/serialization with serde. It also adds some helper methods to help encode inline.\n\nThis is only needed as serde-json-{core,wasm} has a horrible encoding for Vec<u8>. See also <https://github.com/CosmWasm/cosmwasm/blob/main/docs/MESSAGE_TYPES.md>.",
|
176 | 206 | "type": "string"
|
177 | 207 | },
|
| 208 | + "Evidence": { |
| 209 | + "description": "Evidence is the evidence that a finality provider has signed finality signatures with correct public randomness on two conflicting Babylon headers", |
| 210 | + "type": "object", |
| 211 | + "required": [ |
| 212 | + "block_height", |
| 213 | + "canonical_app_hash", |
| 214 | + "canonical_finality_sig", |
| 215 | + "fork_app_hash", |
| 216 | + "fork_finality_sig", |
| 217 | + "fp_btc_pk", |
| 218 | + "pub_rand" |
| 219 | + ], |
| 220 | + "properties": { |
| 221 | + "block_height": { |
| 222 | + "description": "`block_height` is the height of the conflicting blocks", |
| 223 | + "type": "integer", |
| 224 | + "format": "uint64", |
| 225 | + "minimum": 0.0 |
| 226 | + }, |
| 227 | + "canonical_app_hash": { |
| 228 | + "description": "`canonical_app_hash` is the AppHash of the canonical block", |
| 229 | + "type": "array", |
| 230 | + "items": { |
| 231 | + "type": "integer", |
| 232 | + "format": "uint8", |
| 233 | + "minimum": 0.0 |
| 234 | + } |
| 235 | + }, |
| 236 | + "canonical_finality_sig": { |
| 237 | + "description": "`canonical_finality_sig` is the finality signature to the canonical block, where finality signature is an EOTS signature, i.e., the `s` in a Schnorr signature `(r, s)`. `r` is the public randomness already committed by the finality provider. Deserializes to `SchnorrEOTSSig`", |
| 238 | + "type": "array", |
| 239 | + "items": { |
| 240 | + "type": "integer", |
| 241 | + "format": "uint8", |
| 242 | + "minimum": 0.0 |
| 243 | + } |
| 244 | + }, |
| 245 | + "fork_app_hash": { |
| 246 | + "description": "`fork_app_hash` is the AppHash of the fork block", |
| 247 | + "type": "array", |
| 248 | + "items": { |
| 249 | + "type": "integer", |
| 250 | + "format": "uint8", |
| 251 | + "minimum": 0.0 |
| 252 | + } |
| 253 | + }, |
| 254 | + "fork_finality_sig": { |
| 255 | + "description": "`fork_finality_sig` is the finality signature to the fork block, where finality signature is an EOTS signature. Deserializes to `SchnorrEOTSSig`", |
| 256 | + "type": "array", |
| 257 | + "items": { |
| 258 | + "type": "integer", |
| 259 | + "format": "uint8", |
| 260 | + "minimum": 0.0 |
| 261 | + } |
| 262 | + }, |
| 263 | + "fp_btc_pk": { |
| 264 | + "description": "`fp_btc_pk` is the BTC PK of the finality provider that casts this vote", |
| 265 | + "type": "array", |
| 266 | + "items": { |
| 267 | + "type": "integer", |
| 268 | + "format": "uint8", |
| 269 | + "minimum": 0.0 |
| 270 | + } |
| 271 | + }, |
| 272 | + "pub_rand": { |
| 273 | + "description": "`pub_rand is` the public randomness the finality provider has committed to. Deserializes to `SchnorrPubRand`", |
| 274 | + "type": "array", |
| 275 | + "items": { |
| 276 | + "type": "integer", |
| 277 | + "format": "uint8", |
| 278 | + "minimum": 0.0 |
| 279 | + } |
| 280 | + } |
| 281 | + }, |
| 282 | + "additionalProperties": false |
| 283 | + }, |
178 | 284 | "Proof": {
|
179 | 285 | "description": "A `Proof` is a proof of a leaf's existence in a Merkle tree.\n\nThe convention for proofs is to include leaf hashes, but to exclude the root hash. This convention is implemented across IAVL range proofs as well. Keep this consistent unless there's a very good reason to change everything. This affects the generalized proof system as well.\n\nEquivalent to / adapted from cometbft/crypto/merkle/proof.go.",
|
180 | 286 | "type": "object",
|
|
0 commit comments