Constant ics23::FILE_DESCRIPTOR_SET

source ·
pub const FILE_DESCRIPTOR_SET: &[u8] = b"\n\xcba\n\"proto/cosmos/ics23/v1/proofs.proto\x12\x0fcosmos.ics23.v1\"\x93\x01\n\x0eExistenceProof\x12\x10\n\x03key\x18\x01 \x01(\x0cR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value\x12+\n\x04leaf\x18\x03 \x01(\x0b2\x17.cosmos.ics23.v1.LeafOpR\x04leaf\x12,\n\x04path\x18\x04 \x03(\x0b2\x18.cosmos.ics23.v1.InnerOpR\x04path\"\x91\x01\n\x11NonExistenceProof\x12\x10\n\x03key\x18\x01 \x01(\x0cR\x03key\x123\n\x04left\x18\x02 \x01(\x0b2\x1f.cosmos.ics23.v1.ExistenceProofR\x04left\x125\n\x05right\x18\x03 \x01(\x0b2\x1f.cosmos.ics23.v1.ExistenceProofR\x05right\"\x93\x02\n\x0fCommitmentProof\x127\n\x05exist\x18\x01 \x01(\x0b2\x1f.cosmos.ics23.v1.ExistenceProofH\x00R\x05exist\x12@\n\x08nonexist\x18\x02 \x01(\x0b2\".cosmos.ics23.v1.NonExistenceProofH\x00R\x08nonexist\x123\n\x05batch\x18\x03 \x01(\x0b2\x1b.cosmos.ics23.v1.BatchProofH\x00R\x05batch\x12G\n\ncompressed\x18\x04 \x01(\x0b2%.cosmos.ics23.v1.CompressedBatchProofH\x00R\ncompressedB\x07\n\x05proof\"\xf8\x01\n\x06LeafOp\x12+\n\x04hash\x18\x01 \x01(\x0e2\x17.cosmos.ics23.v1.HashOpR\x04hash\x128\n\x0bprehash_key\x18\x02 \x01(\x0e2\x17.cosmos.ics23.v1.HashOpR\nprehashKey\x12<\n\rprehash_value\x18\x03 \x01(\x0e2\x17.cosmos.ics23.v1.HashOpR\x0cprehashValue\x121\n\x06length\x18\x04 \x01(\x0e2\x19.cosmos.ics23.v1.LengthOpR\x06length\x12\x16\n\x06prefix\x18\x05 \x01(\x0cR\x06prefix\"f\n\x07InnerOp\x12+\n\x04hash\x18\x01 \x01(\x0e2\x17.cosmos.ics23.v1.HashOpR\x04hash\x12\x16\n\x06prefix\x18\x02 \x01(\x0cR\x06prefix\x12\x16\n\x06suffix\x18\x03 \x01(\x0cR\x06suffix\"\xf9\x01\n\tProofSpec\x124\n\tleaf_spec\x18\x01 \x01(\x0b2\x17.cosmos.ics23.v1.LeafOpR\x08leafSpec\x129\n\ninner_spec\x18\x02 \x01(\x0b2\x1a.cosmos.ics23.v1.InnerSpecR\tinnerSpec\x12\x1b\n\tmax_depth\x18\x03 \x01(\x05R\x08maxDepth\x12\x1b\n\tmin_depth\x18\x04 \x01(\x05R\x08minDepth\x12A\n\x1dprehash_key_before_comparison\x18\x05 \x01(\x08R\x1aprehashKeyBeforeComparison\"\xf1\x01\n\tInnerSpec\x12\x1f\n\x0bchild_order\x18\x01 \x03(\x05R\nchildOrder\x12\x1d\n\nchild_size\x18\x02 \x01(\x05R\tchildSize\x12*\n\x11min_prefix_length\x18\x03 \x01(\x05R\x0fminPrefixLength\x12*\n\x11max_prefix_length\x18\x04 \x01(\x05R\x0fmaxPrefixLength\x12\x1f\n\x0bempty_child\x18\x05 \x01(\x0cR\nemptyChild\x12+\n\x04hash\x18\x06 \x01(\x0e2\x17.cosmos.ics23.v1.HashOpR\x04hash\"C\n\nBatchProof\x125\n\x07entries\x18\x01 \x03(\x0b2\x1b.cosmos.ics23.v1.BatchEntryR\x07entries\"\x90\x01\n\nBatchEntry\x127\n\x05exist\x18\x01 \x01(\x0b2\x1f.cosmos.ics23.v1.ExistenceProofH\x00R\x05exist\x12@\n\x08nonexist\x18\x02 \x01(\x0b2\".cosmos.ics23.v1.NonExistenceProofH\x00R\x08nonexistB\x07\n\x05proof\"\x96\x01\n\x14CompressedBatchProof\x12?\n\x07entries\x18\x01 \x03(\x0b2%.cosmos.ics23.v1.CompressedBatchEntryR\x07entries\x12=\n\rlookup_inners\x18\x02 \x03(\x0b2\x18.cosmos.ics23.v1.InnerOpR\x0clookupInners\"\xae\x01\n\x14CompressedBatchEntry\x12A\n\x05exist\x18\x01 \x01(\x0b2).cosmos.ics23.v1.CompressedExistenceProofH\x00R\x05exist\x12J\n\x08nonexist\x18\x02 \x01(\x0b2,.cosmos.ics23.v1.CompressedNonExistenceProofH\x00R\x08nonexistB\x07\n\x05proof\"\x83\x01\n\x18CompressedExistenceProof\x12\x10\n\x03key\x18\x01 \x01(\x0cR\x03key\x12\x14\n\x05value\x18\x02 \x01(\x0cR\x05value\x12+\n\x04leaf\x18\x03 \x01(\x0b2\x17.cosmos.ics23.v1.LeafOpR\x04leaf\x12\x12\n\x04path\x18\x04 \x03(\x05R\x04path\"\xaf\x01\n\x1bCompressedNonExistenceProof\x12\x10\n\x03key\x18\x01 \x01(\x0cR\x03key\x12=\n\x04left\x18\x02 \x01(\x0b2).cosmos.ics23.v1.CompressedExistenceProofR\x04left\x12?\n\x05right\x18\x03 \x01(\x0b2).cosmos.ics23.v1.CompressedExistenceProofR\x05right*\x96\x01\n\x06HashOp\x12\x0b\n\x07NO_HASH\x10\x00\x12\n\n\x06SHA256\x10\x01\x12\n\n\x06SHA512\x10\x02\x12\r\n\tKECCAK256\x10\x03\x12\r\n\tRIPEMD160\x10\x04\x12\x0b\n\x07BITCOIN\x10\x05\x12\x0e\n\nSHA512_256\x10\x06\x12\x0f\n\x0bBLAKE2B_512\x10\x07\x12\x0f\n\x0bBLAKE2S_256\x10\x08\x12\n\n\x06BLAKE3\x10\t*\xab\x01\n\x08LengthOp\x12\r\n\tNO_PREFIX\x10\x00\x12\r\n\tVAR_PROTO\x10\x01\x12\x0b\n\x07VAR_RLP\x10\x02\x12\x0f\n\x0bFIXED32_BIG\x10\x03\x12\x12\n\x0eFIXED32_LITTLE\x10\x04\x12\x0f\n\x0bFIXED64_BIG\x10\x05\x12\x12\n\x0eFIXED64_LITTLE\x10\x06\x12\x14\n\x10REQUIRE_32_BYTES\x10\x07\x12\x14\n\x10REQUIRE_64_BYTES\x10\x08B\"Z github.com/cosmos/ics23/go;ics23J\xb3L\n\x07\x12\x05\x00\x00\xf0\x01\x01\n\x08\n\x01\x0c\x12\x03\x00\x00\x12\n\x08\n\x01\x02\x12\x03\x02\x00\x18\n\x08\n\x01\x08\x12\x03\x04\x007\n\t\n\x02\x08\x0b\x12\x03\x04\x007\n\n\n\x02\x05\x00\x12\x04\x06\x00\x12\x01\n\n\n\x03\x05\x00\x01\x12\x03\x06\x05\x0b\nf\n\x04\x05\x00\x02\x00\x12\x03\x08\x02\x12\x1aY NO_HASH is the default if no data passed. Note this is an illegal argument some places.\n\n\x0c\n\x05\x05\x00\x02\x00\x01\x12\x03\x08\x02\t\n\x0c\n\x05\x05\x00\x02\x00\x02\x12\x03\x08\x10\x11\n\x0b\n\x04\x05\x00\x02\x01\x12\x03\t\x02\x12\n\x0c\n\x05\x05\x00\x02\x01\x01\x12\x03\t\x02\x08\n\x0c\n\x05\x05\x00\x02\x01\x02\x12\x03\t\x10\x11\n\x0b\n\x04\x05\x00\x02\x02\x12\x03\n\x02\x12\n\x0c\n\x05\x05\x00\x02\x02\x01\x12\x03\n\x02\x08\n\x0c\n\x05\x05\x00\x02\x02\x02\x12\x03\n\x10\x11\n\x0b\n\x04\x05\x00\x02\x03\x12\x03\x0b\x02\x12\n\x0c\n\x05\x05\x00\x02\x03\x01\x12\x03\x0b\x02\x0b\n\x0c\n\x05\x05\x00\x02\x03\x02\x12\x03\x0b\x10\x11\n\x0b\n\x04\x05\x00\x02\x04\x12\x03\x0c\x02\x12\n\x0c\n\x05\x05\x00\x02\x04\x01\x12\x03\x0c\x02\x0b\n\x0c\n\x05\x05\x00\x02\x04\x02\x12\x03\x0c\x10\x11\n#\n\x04\x05\x00\x02\x05\x12\x03\r\x02\x12\"\x16 ripemd160(sha256(x))\n\n\x0c\n\x05\x05\x00\x02\x05\x01\x12\x03\r\x02\t\n\x0c\n\x05\x05\x00\x02\x05\x02\x12\x03\r\x10\x11\n\x0b\n\x04\x05\x00\x02\x06\x12\x03\x0e\x02\x12\n\x0c\n\x05\x05\x00\x02\x06\x01\x12\x03\x0e\x02\x0c\n\x0c\n\x05\x05\x00\x02\x06\x02\x12\x03\x0e\x10\x11\n\x0b\n\x04\x05\x00\x02\x07\x12\x03\x0f\x02\x12\n\x0c\n\x05\x05\x00\x02\x07\x01\x12\x03\x0f\x02\r\n\x0c\n\x05\x05\x00\x02\x07\x02\x12\x03\x0f\x10\x11\n\x0b\n\x04\x05\x00\x02\x08\x12\x03\x10\x02\x12\n\x0c\n\x05\x05\x00\x02\x08\x01\x12\x03\x10\x02\r\n\x0c\n\x05\x05\x00\x02\x08\x02\x12\x03\x10\x10\x11\n\x0b\n\x04\x05\x00\x02\t\x12\x03\x11\x02\x12\n\x0c\n\x05\x05\x00\x02\t\x01\x12\x03\x11\x02\x08\n\x0c\n\x05\x05\x00\x02\t\x02\x12\x03\x11\x10\x11\n\x83\x02\n\x02\x05\x01\x12\x04\x1a\x00-\x01\x1a\xf6\x01*\nLengthOp defines how to process the key and value of the LeafOp\nto include length information. After encoding the length with the given\nalgorithm, the length will be prepended to the key and value bytes.\n(Each one with it\'s own encoded length)\n\n\n\n\x03\x05\x01\x01\x12\x03\x1a\x05\r\n6\n\x04\x05\x01\x02\x00\x12\x03\x1c\x02\x10\x1a) NO_PREFIX don\'t include any length info\n\n\x0c\n\x05\x05\x01\x02\x00\x01\x12\x03\x1c\x02\x0b\n\x0c\n\x05\x05\x01\x02\x00\x02\x12\x03\x1c\x0e\x0f\nS\n\x04\x05\x01\x02\x01\x12\x03\x1e\x02\x10\x1aF VAR_PROTO uses protobuf (and go-amino) varint encoding of the length\n\n\x0c\n\x05\x05\x01\x02\x01\x01\x12\x03\x1e\x02\x0b\n\x0c\n\x05\x05\x01\x02\x01\x02\x12\x03\x1e\x0e\x0f\n:\n\x04\x05\x01\x02\x02\x12\x03 \x02\x0e\x1a- VAR_RLP uses rlp int encoding of the length\n\n\x0c\n\x05\x05\x01\x02\x02\x01\x12\x03 \x02\t\n\x0c\n\x05\x05\x01\x02\x02\x02\x12\x03 \x0c\r\nU\n\x04\x05\x01\x02\x03\x12\x03\"\x02\x12\x1aH FIXED32_BIG uses big-endian encoding of the length as a 32 bit integer\n\n\x0c\n\x05\x05\x01\x02\x03\x01\x12\x03\"\x02\r\n\x0c\n\x05\x05\x01\x02\x03\x02\x12\x03\"\x10\x11\n[\n\x04\x05\x01\x02\x04\x12\x03$\x02\x15\x1aN FIXED32_LITTLE uses little-endian encoding of the length as a 32 bit integer\n\n\x0c\n\x05\x05\x01\x02\x04\x01\x12\x03$\x02\x10\n\x0c\n\x05\x05\x01\x02\x04\x02\x12\x03$\x13\x14\nU\n\x04\x05\x01\x02\x05\x12\x03&\x02\x12\x1aH FIXED64_BIG uses big-endian encoding of the length as a 64 bit integer\n\n\x0c\n\x05\x05\x01\x02\x05\x01\x12\x03&\x02\r\n\x0c\n\x05\x05\x01\x02\x05\x02\x12\x03&\x10\x11\n[\n\x04\x05\x01\x02\x06\x12\x03(\x02\x15\x1aN FIXED64_LITTLE uses little-endian encoding of the length as a 64 bit integer\n\n\x0c\n\x05\x05\x01\x02\x06\x01\x12\x03(\x02\x10\n\x0c\n\x05\x05\x01\x02\x06\x02\x12\x03(\x13\x14\np\n\x04\x05\x01\x02\x07\x12\x03*\x02\x17\x1ac REQUIRE_32_BYTES is like NONE, but will fail if the input is not exactly 32 bytes (sha256 output)\n\n\x0c\n\x05\x05\x01\x02\x07\x01\x12\x03*\x02\x12\n\x0c\n\x05\x05\x01\x02\x07\x02\x12\x03*\x15\x16\np\n\x04\x05\x01\x02\x08\x12\x03,\x02\x17\x1ac REQUIRE_64_BYTES is like NONE, but will fail if the input is not exactly 64 bytes (sha512 output)\n\n\x0c\n\x05\x05\x01\x02\x08\x01\x12\x03,\x02\x12\n\x0c\n\x05\x05\x01\x02\x08\x02\x12\x03,\x15\x16\n\xe6\x07\n\x02\x04\x00\x12\x04D\x00I\x01\x1a\xd9\x07*\nExistenceProof takes a key and a value and a set of steps to perform on it.\nThe result of peforming all these steps will provide a \"root hash\", which can\nbe compared to the value in a header.\n\nSince it is computationally infeasible to produce a hash collission for any of the used\ncryptographic hash functions, if someone can provide a series of operations to transform\na given key and value into a root hash that matches some trusted root, these key and values\nmust be in the referenced merkle tree.\n\nThe only possible issue is maliablity in LeafOp, such as providing extra prefix data,\nwhich should be controlled by a spec. Eg. with lengthOp as NONE,\nprefix = FOO, key = BAR, value = CHOICE\nand\nprefix = F, key = OOBAR, value = CHOICE\nwould produce the same value.\n\nWith LengthOp this is tricker but not impossible. Which is why the \"leafPrefixEqual\" field\nin the ProofSpec is valuable to prevent this mutability. And why all trees should\nlength-prefix the data before hashing it.\n\n\n\n\x03\x04\x00\x01\x12\x03D\x08\x16\n\x0b\n\x04\x04\x00\x02\x00\x12\x03E\x02\x1d\n\x0c\n\x05\x04\x00\x02\x00\x05\x12\x03E\x02\x07\n\x0c\n\x05\x04\x00\x02\x00\x01\x12\x03E\x13\x16\n\x0c\n\x05\x04\x00\x02\x00\x03\x12\x03E\x1b\x1c\n\x0b\n\x04\x04\x00\x02\x01\x12\x03F\x02\x1d\n\x0c\n\x05\x04\x00\x02\x01\x05\x12\x03F\x02\x07\n\x0c\n\x05\x04\x00\x02\x01\x01\x12\x03F\x13\x18\n\x0c\n\x05\x04\x00\x02\x01\x03\x12\x03F\x1b\x1c\n\x0b\n\x04\x04\x00\x02\x02\x12\x03G\x02\x1d\n\x0c\n\x05\x04\x00\x02\x02\x06\x12\x03G\x02\x08\n\x0c\n\x05\x04\x00\x02\x02\x01\x12\x03G\x13\x17\n\x0c\n\x05\x04\x00\x02\x02\x03\x12\x03G\x1b\x1c\n\x0b\n\x04\x04\x00\x02\x03\x12\x03H\x02\x1d\n\x0c\n\x05\x04\x00\x02\x03\x04\x12\x03H\x02\n\n\x0c\n\x05\x04\x00\x02\x03\x06\x12\x03H\x0b\x12\n\x0c\n\x05\x04\x00\x02\x03\x01\x12\x03H\x13\x17\n\x0c\n\x05\x04\x00\x02\x03\x03\x12\x03H\x1b\x1c\n\xdc\x01\n\x02\x04\x01\x12\x04P\x00T\x01\x1a\xcf\x01\nNonExistenceProof takes a proof of two neighbors, one left of the desired key,\none right of the desired key. If both proofs are valid AND they are neighbors,\nthen there is no valid proof for the given key.\n\n\n\n\x03\x04\x01\x01\x12\x03P\x08\x19\nC\n\x04\x04\x01\x02\x00\x12\x03Q\x02\x1b\"6 TODO: remove this as unnecessary??? we prove a range\n\n\x0c\n\x05\x04\x01\x02\x00\x05\x12\x03Q\x02\x07\n\x0c\n\x05\x04\x01\x02\x00\x01\x12\x03Q\x11\x14\n\x0c\n\x05\x04\x01\x02\x00\x03\x12\x03Q\x19\x1a\n\x0b\n\x04\x04\x01\x02\x01\x12\x03R\x02\x1b\n\x0c\n\x05\x04\x01\x02\x01\x06\x12\x03R\x02\x10\n\x0c\n\x05\x04\x01\x02\x01\x01\x12\x03R\x11\x15\n\x0c\n\x05\x04\x01\x02\x01\x03\x12\x03R\x19\x1a\n\x0b\n\x04\x04\x01\x02\x02\x12\x03S\x02\x1b\n\x0c\n\x05\x04\x01\x02\x02\x06\x12\x03S\x02\x10\n\x0c\n\x05\x04\x01\x02\x02\x01\x12\x03S\x11\x16\n\x0c\n\x05\x04\x01\x02\x02\x03\x12\x03S\x19\x1a\nm\n\x02\x04\x02\x12\x04Y\x00`\x01\x1aa\nCommitmentProof is either an ExistenceProof or a NonExistenceProof, or a Batch of such messages\n\n\n\n\x03\x04\x02\x01\x12\x03Y\x08\x17\n\x0c\n\x04\x04\x02\x08\x00\x12\x04Z\x02_\x03\n\x0c\n\x05\x04\x02\x08\x00\x01\x12\x03Z\x08\r\n\x0b\n\x04\x04\x02\x02\x00\x12\x03[\x04(\n\x0c\n\x05\x04\x02\x02\x00\x06\x12\x03[\x04\x12\n\x0c\n\x05\x04\x02\x02\x00\x01\x12\x03[\x19\x1e\n\x0c\n\x05\x04\x02\x02\x00\x03\x12\x03[&\'\n\x0b\n\x04\x04\x02\x02\x01\x12\x03\\\x04(\n\x0c\n\x05\x04\x02\x02\x01\x06\x12\x03\\\x04\x15\n\x0c\n\x05\x04\x02\x02\x01\x01\x12\x03\\\x19!\n\x0c\n\x05\x04\x02\x02\x01\x03\x12\x03\\&\'\n\x0b\n\x04\x04\x02\x02\x02\x12\x03]\x04(\n\x0c\n\x05\x04\x02\x02\x02\x06\x12\x03]\x04\x0e\n\x0c\n\x05\x04\x02\x02\x02\x01\x12\x03]\x19\x1e\n\x0c\n\x05\x04\x02\x02\x02\x03\x12\x03]&\'\n\x0b\n\x04\x04\x02\x02\x03\x12\x03^\x04(\n\x0c\n\x05\x04\x02\x02\x03\x06\x12\x03^\x04\x18\n\x0c\n\x05\x04\x02\x02\x03\x01\x12\x03^\x19#\n\x0c\n\x05\x04\x02\x02\x03\x03\x12\x03^&\'\n\xc9\x04\n\x02\x04\x03\x12\x04r\x00z\x01\x1a\xbc\x04*\nLeafOp represents the raw key-value data we wish to prove, and\nmust be flexible to represent the internal transformation from\nthe original key-value pairs into the basis hash, for many existing\nmerkle trees.\n\nkey and value are passed in. So that the signature of this operation is:\nleafOp(key, value) -> output\n\nTo process this, first prehash the keys and values if needed (ANY means no hash in this case):\nhkey = prehashKey(key)\nhvalue = prehashValue(value)\n\nThen combine the bytes, and hash it\noutput = hash(prefix || length(hkey) || hkey || length(hvalue) || hvalue)\n\n\n\n\x03\x04\x03\x01\x12\x03r\x08\x0e\n\x0b\n\x04\x04\x03\x02\x00\x12\x03s\x02\x1d\n\x0c\n\x05\x04\x03\x02\x00\x06\x12\x03s\x02\x08\n\x0c\n\x05\x04\x03\x02\x00\x01\x12\x03s\x0b\x0f\n\x0c\n\x05\x04\x03\x02\x00\x03\x12\x03s\x1b\x1c\n\x0b\n\x04\x04\x03\x02\x01\x12\x03t\x02\x1d\n\x0c\n\x05\x04\x03\x02\x01\x06\x12\x03t\x02\x08\n\x0c\n\x05\x04\x03\x02\x01\x01\x12\x03t\x0b\x16\n\x0c\n\x05\x04\x03\x02\x01\x03\x12\x03t\x1b\x1c\n\x0b\n\x04\x04\x03\x02\x02\x12\x03u\x02\x1d\n\x0c\n\x05\x04\x03\x02\x02\x06\x12\x03u\x02\x08\n\x0c\n\x05\x04\x03\x02\x02\x01\x12\x03u\x0b\x18\n\x0c\n\x05\x04\x03\x02\x02\x03\x12\x03u\x1b\x1c\n\x0b\n\x04\x04\x03\x02\x03\x12\x03v\x02\x1d\n\x0c\n\x05\x04\x03\x02\x03\x06\x12\x03v\x02\n\n\x0c\n\x05\x04\x03\x02\x03\x01\x12\x03v\x0b\x11\n\x0c\n\x05\x04\x03\x02\x03\x03\x12\x03v\x1b\x1c\n\x89\x01\n\x04\x04\x03\x02\x04\x12\x03y\x02\x13\x1a| prefix is a fixed bytes that may optionally be included at the beginning to differentiate\n a leaf node from an inner node.\n\n\x0c\n\x05\x04\x03\x02\x04\x05\x12\x03y\x02\x07\n\x0c\n\x05\x04\x03\x02\x04\x01\x12\x03y\x08\x0e\n\x0c\n\x05\x04\x03\x02\x04\x03\x12\x03y\x11\x12\n\xe4\x05\n\x02\x04\x04\x12\x06\x8d\x01\x00\x91\x01\x01\x1a\xd5\x05*\nInnerOp represents a merkle-proof step that is not a leaf.\nIt represents concatenating two children and hashing them to provide the next result.\n\nThe result of the previous step is passed in, so the signature of this op is:\ninnerOp(child) -> output\n\nThe result of applying InnerOp should be:\noutput = op.hash(op.prefix || child || op.suffix)\n\nwhere the || operator is concatenation of binary data,\nand child is the result of hashing all the tree below this step.\n\nAny special data, like prepending child with the length, or prepending the entire operation with\nsome value to differentiate from leaf nodes, should be included in prefix and suffix.\nIf either of prefix or suffix is empty, we just treat it as an empty string\n\n\x0b\n\x03\x04\x04\x01\x12\x04\x8d\x01\x08\x0f\n\x0c\n\x04\x04\x04\x02\x00\x12\x04\x8e\x01\x02\x14\n\r\n\x05\x04\x04\x02\x00\x06\x12\x04\x8e\x01\x02\x08\n\r\n\x05\x04\x04\x02\x00\x01\x12\x04\x8e\x01\t\r\n\r\n\x05\x04\x04\x02\x00\x03\x12\x04\x8e\x01\x12\x13\n\x0c\n\x04\x04\x04\x02\x01\x12\x04\x8f\x01\x02\x14\n\r\n\x05\x04\x04\x02\x01\x05\x12\x04\x8f\x01\x02\x07\n\r\n\x05\x04\x04\x02\x01\x01\x12\x04\x8f\x01\t\x0f\n\r\n\x05\x04\x04\x02\x01\x03\x12\x04\x8f\x01\x12\x13\n\x0c\n\x04\x04\x04\x02\x02\x12\x04\x90\x01\x02\x14\n\r\n\x05\x04\x04\x02\x02\x05\x12\x04\x90\x01\x02\x07\n\r\n\x05\x04\x04\x02\x02\x01\x12\x04\x90\x01\t\x0f\n\r\n\x05\x04\x04\x02\x02\x03\x12\x04\x90\x01\x12\x13\n\xbf\x04\n\x02\x04\x05\x12\x06\x9f\x01\x00\xac\x01\x01\x1a\xb0\x04*\nProofSpec defines what the expected parameters are for a given proof type.\nThis can be stored in the client and used to validate any incoming proofs.\n\nverify(ProofSpec, Proof) -> Proof | Error\n\nAs demonstrated in tests, if we don\'t fix the algorithm used to calculate the\nLeafHash for a given tree, there are many possible key-value pairs that can\ngenerate a given hash (by interpretting the preimage differently).\nWe need this for proper security, requires client knows a priori what\ntree format server uses. But not in code, rather a configuration object.\n\n\x0b\n\x03\x04\x05\x01\x12\x04\x9f\x01\x08\x11\n\x9f\x01\n\x04\x04\x05\x02\x00\x12\x04\xa2\x01\x02\x1b\x1a\x90\x01 any field in the ExistenceProof must be the same as in this spec.\n except Prefix, which is just the first bytes of prefix (spec can be longer)\n\n\r\n\x05\x04\x05\x02\x00\x06\x12\x04\xa2\x01\x02\x08\n\r\n\x05\x04\x05\x02\x00\x01\x12\x04\xa2\x01\x0c\x15\n\r\n\x05\x04\x05\x02\x00\x03\x12\x04\xa2\x01\x19\x1a\n\x0c\n\x04\x04\x05\x02\x01\x12\x04\xa3\x01\x02\x1b\n\r\n\x05\x04\x05\x02\x01\x06\x12\x04\xa3\x01\x02\x0b\n\r\n\x05\x04\x05\x02\x01\x01\x12\x04\xa3\x01\x0c\x16\n\r\n\x05\x04\x05\x02\x01\x03\x12\x04\xa3\x01\x19\x1a\nk\n\x04\x04\x05\x02\x02\x12\x04\xa5\x01\x02\x16\x1a] max_depth (if > 0) is the maximum number of InnerOps allowed (mainly for fixed-depth tries)\n\n\r\n\x05\x04\x05\x02\x02\x05\x12\x04\xa5\x01\x02\x07\n\r\n\x05\x04\x05\x02\x02\x01\x12\x04\xa5\x01\x08\x11\n\r\n\x05\x04\x05\x02\x02\x03\x12\x04\xa5\x01\x14\x15\nk\n\x04\x04\x05\x02\x03\x12\x04\xa7\x01\x02\x16\x1a] min_depth (if > 0) is the minimum number of InnerOps allowed (mainly for fixed-depth tries)\n\n\r\n\x05\x04\x05\x02\x03\x05\x12\x04\xa7\x01\x02\x07\n\r\n\x05\x04\x05\x02\x03\x01\x12\x04\xa7\x01\x08\x11\n\r\n\x05\x04\x05\x02\x03\x03\x12\x04\xa7\x01\x14\x15\n\xba\x01\n\x04\x04\x05\x02\x04\x12\x04\xab\x01\x02)\x1a\xab\x01 prehash_key_before_comparison is a flag that indicates whether to use the\n prehash_key specified by LeafOp to compare lexical ordering of keys for\n non-existence proofs.\n\n\r\n\x05\x04\x05\x02\x04\x05\x12\x04\xab\x01\x02\x06\n\r\n\x05\x04\x05\x02\x04\x01\x12\x04\xab\x01\x07$\n\r\n\x05\x04\x05\x02\x04\x03\x12\x04\xab\x01\'(\n\xa4\x02\n\x02\x04\x06\x12\x06\xb8\x01\x00\xc4\x01\x01\x1a\x95\x02\nInnerSpec contains all store-specific structure info to determine if two proofs from a\ngiven store are neighbors.\n\nThis enables:\n\nisLeftMost(spec: InnerSpec, op: InnerOp)\nisRightMost(spec: InnerSpec, op: InnerOp)\nisLeftNeighbor(spec: InnerSpec, left: InnerOp, right: InnerOp)\n\n\x0b\n\x03\x04\x06\x01\x12\x04\xb8\x01\x08\x11\n\xa2\x01\n\x04\x04\x06\x02\x00\x12\x04\xbc\x01\x02\'\x1a\x93\x01 Child order is the ordering of the children node, must count from 0\n iavl tree is [0, 1] (left then right)\n merk is [0, 2, 1] (left, right, here)\n\n\r\n\x05\x04\x06\x02\x00\x04\x12\x04\xbc\x01\x02\n\n\r\n\x05\x04\x06\x02\x00\x05\x12\x04\xbc\x01\x0b\x10\n\r\n\x05\x04\x06\x02\x00\x01\x12\x04\xbc\x01\x11\x1c\n\r\n\x05\x04\x06\x02\x00\x03\x12\x04\xbc\x01%&\n\x0c\n\x04\x04\x06\x02\x01\x12\x04\xbd\x01\x02\'\n\r\n\x05\x04\x06\x02\x01\x05\x12\x04\xbd\x01\x02\x07\n\r\n\x05\x04\x06\x02\x01\x01\x12\x04\xbd\x01\x11\x1b\n\r\n\x05\x04\x06\x02\x01\x03\x12\x04\xbd\x01%&\n\x0c\n\x04\x04\x06\x02\x02\x12\x04\xbe\x01\x02\'\n\r\n\x05\x04\x06\x02\x02\x05\x12\x04\xbe\x01\x02\x07\n\r\n\x05\x04\x06\x02\x02\x01\x12\x04\xbe\x01\x11\"\n\r\n\x05\x04\x06\x02\x02\x03\x12\x04\xbe\x01%&\n\x0c\n\x04\x04\x06\x02\x03\x12\x04\xbf\x01\x02\'\n\r\n\x05\x04\x06\x02\x03\x05\x12\x04\xbf\x01\x02\x07\n\r\n\x05\x04\x06\x02\x03\x01\x12\x04\xbf\x01\x11\"\n\r\n\x05\x04\x06\x02\x03\x03\x12\x04\xbf\x01%&\ng\n\x04\x04\x06\x02\x04\x12\x04\xc1\x01\x02\x18\x1aY empty child is the prehash image that is used when one child is nil (eg. 20 bytes of 0)\n\n\r\n\x05\x04\x06\x02\x04\x05\x12\x04\xc1\x01\x02\x07\n\r\n\x05\x04\x06\x02\x04\x01\x12\x04\xc1\x01\x08\x13\n\r\n\x05\x04\x06\x02\x04\x03\x12\x04\xc1\x01\x16\x17\nH\n\x04\x04\x06\x02\x05\x12\x04\xc3\x01\x02\x12\x1a: hash is the algorithm that must be used for each InnerOp\n\n\r\n\x05\x04\x06\x02\x05\x06\x12\x04\xc3\x01\x02\x08\n\r\n\x05\x04\x06\x02\x05\x01\x12\x04\xc3\x01\t\r\n\r\n\x05\x04\x06\x02\x05\x03\x12\x04\xc3\x01\x10\x11\nT\n\x02\x04\x07\x12\x06\xc9\x01\x00\xcb\x01\x01\x1aF\nBatchProof is a group of multiple proof types than can be compressed\n\n\x0b\n\x03\x04\x07\x01\x12\x04\xc9\x01\x08\x12\n\x0c\n\x04\x04\x07\x02\x00\x12\x04\xca\x01\x02\"\n\r\n\x05\x04\x07\x02\x00\x04\x12\x04\xca\x01\x02\n\n\r\n\x05\x04\x07\x02\x00\x06\x12\x04\xca\x01\x0b\x15\n\r\n\x05\x04\x07\x02\x00\x01\x12\x04\xca\x01\x16\x1d\n\r\n\x05\x04\x07\x02\x00\x03\x12\x04\xca\x01 !\nF\n\x02\x04\x08\x12\x06\xce\x01\x00\xd3\x01\x01\x1a8 Use BatchEntry not CommitmentProof, to avoid recursion\n\n\x0b\n\x03\x04\x08\x01\x12\x04\xce\x01\x08\x12\n\x0e\n\x04\x04\x08\x08\x00\x12\x06\xcf\x01\x02\xd2\x01\x03\n\r\n\x05\x04\x08\x08\x00\x01\x12\x04\xcf\x01\x08\r\n\x0c\n\x04\x04\x08\x02\x00\x12\x04\xd0\x01\x04#\n\r\n\x05\x04\x08\x02\x00\x06\x12\x04\xd0\x01\x04\x12\n\r\n\x05\x04\x08\x02\x00\x01\x12\x04\xd0\x01\x16\x1b\n\r\n\x05\x04\x08\x02\x00\x03\x12\x04\xd0\x01!\"\n\x0c\n\x04\x04\x08\x02\x01\x12\x04\xd1\x01\x04#\n\r\n\x05\x04\x08\x02\x01\x06\x12\x04\xd1\x01\x04\x15\n\r\n\x05\x04\x08\x02\x01\x01\x12\x04\xd1\x01\x16\x1e\n\r\n\x05\x04\x08\x02\x01\x03\x12\x04\xd1\x01!\"\n>\n\x02\x04\t\x12\x06\xd7\x01\x00\xda\x01\x0120***** all items here are compressed forms ******\n\x0b\n\x03\x04\t\x01\x12\x04\xd7\x01\x08\x1c\n\x0c\n\x04\x04\t\x02\x00\x12\x04\xd8\x01\x022\n\r\n\x05\x04\t\x02\x00\x04\x12\x04\xd8\x01\x02\n\n\r\n\x05\x04\t\x02\x00\x06\x12\x04\xd8\x01\x0b\x1f\n\r\n\x05\x04\t\x02\x00\x01\x12\x04\xd8\x01 \'\n\r\n\x05\x04\t\x02\x00\x03\x12\x04\xd8\x0101\n\x0c\n\x04\x04\t\x02\x01\x12\x04\xd9\x01\x022\n\r\n\x05\x04\t\x02\x01\x04\x12\x04\xd9\x01\x02\n\n\r\n\x05\x04\t\x02\x01\x06\x12\x04\xd9\x01\x0b\x12\n\r\n\x05\x04\t\x02\x01\x01\x12\x04\xd9\x01 -\n\r\n\x05\x04\t\x02\x01\x03\x12\x04\xd9\x0101\nF\n\x02\x04\n\x12\x06\xdd\x01\x00\xe2\x01\x01\x1a8 Use BatchEntry not CommitmentProof, to avoid recursion\n\n\x0b\n\x03\x04\n\x01\x12\x04\xdd\x01\x08\x1c\n\x0e\n\x04\x04\n\x08\x00\x12\x06\xde\x01\x02\xe1\x01\x03\n\r\n\x05\x04\n\x08\x00\x01\x12\x04\xde\x01\x08\r\n\x0c\n\x04\x04\n\x02\x00\x12\x04\xdf\x01\x04-\n\r\n\x05\x04\n\x02\x00\x06\x12\x04\xdf\x01\x04\x1c\n\r\n\x05\x04\n\x02\x00\x01\x12\x04\xdf\x01 %\n\r\n\x05\x04\n\x02\x00\x03\x12\x04\xdf\x01+,\n\x0c\n\x04\x04\n\x02\x01\x12\x04\xe0\x01\x04-\n\r\n\x05\x04\n\x02\x01\x06\x12\x04\xe0\x01\x04\x1f\n\r\n\x05\x04\n\x02\x01\x01\x12\x04\xe0\x01 (\n\r\n\x05\x04\n\x02\x01\x03\x12\x04\xe0\x01+,\n\x0c\n\x02\x04\x0b\x12\x06\xe4\x01\x00\xea\x01\x01\n\x0b\n\x03\x04\x0b\x01\x12\x04\xe4\x01\x08 \n\x0c\n\x04\x04\x0b\x02\x00\x12\x04\xe5\x01\x02\x13\n\r\n\x05\x04\x0b\x02\x00\x05\x12\x04\xe5\x01\x02\x07\n\r\n\x05\x04\x0b\x02\x00\x01\x12\x04\xe5\x01\t\x0c\n\r\n\x05\x04\x0b\x02\x00\x03\x12\x04\xe5\x01\x11\x12\n\x0c\n\x04\x04\x0b\x02\x01\x12\x04\xe6\x01\x02\x13\n\r\n\x05\x04\x0b\x02\x01\x05\x12\x04\xe6\x01\x02\x07\n\r\n\x05\x04\x0b\x02\x01\x01\x12\x04\xe6\x01\t\x0e\n\r\n\x05\x04\x0b\x02\x01\x03\x12\x04\xe6\x01\x11\x12\n\x0c\n\x04\x04\x0b\x02\x02\x12\x04\xe7\x01\x02\x13\n\r\n\x05\x04\x0b\x02\x02\x06\x12\x04\xe7\x01\x02\x08\n\r\n\x05\x04\x0b\x02\x02\x01\x12\x04\xe7\x01\t\r\n\r\n\x05\x04\x0b\x02\x02\x03\x12\x04\xe7\x01\x11\x12\nV\n\x04\x04\x0b\x02\x03\x12\x04\xe9\x01\x02\x1a\x1aH these are indexes into the lookup_inners table in CompressedBatchProof\n\n\r\n\x05\x04\x0b\x02\x03\x04\x12\x04\xe9\x01\x02\n\n\r\n\x05\x04\x0b\x02\x03\x05\x12\x04\xe9\x01\x0b\x10\n\r\n\x05\x04\x0b\x02\x03\x01\x12\x04\xe9\x01\x11\x15\n\r\n\x05\x04\x0b\x02\x03\x03\x12\x04\xe9\x01\x18\x19\n\x0c\n\x02\x04\x0c\x12\x06\xec\x01\x00\xf0\x01\x01\n\x0b\n\x03\x04\x0c\x01\x12\x04\xec\x01\x08#\nD\n\x04\x04\x0c\x02\x00\x12\x04\xed\x01\x02%\"6 TODO: remove this as unnecessary??? we prove a range\n\n\r\n\x05\x04\x0c\x02\x00\x05\x12\x04\xed\x01\x02\x07\n\r\n\x05\x04\x0c\x02\x00\x01\x12\x04\xed\x01\x1b\x1e\n\r\n\x05\x04\x0c\x02\x00\x03\x12\x04\xed\x01#$\n\x0c\n\x04\x04\x0c\x02\x01\x12\x04\xee\x01\x02%\n\r\n\x05\x04\x0c\x02\x01\x06\x12\x04\xee\x01\x02\x1a\n\r\n\x05\x04\x0c\x02\x01\x01\x12\x04\xee\x01\x1b\x1f\n\r\n\x05\x04\x0c\x02\x01\x03\x12\x04\xee\x01#$\n\x0c\n\x04\x04\x0c\x02\x02\x12\x04\xef\x01\x02%\n\r\n\x05\x04\x0c\x02\x02\x06\x12\x04\xef\x01\x02\x1a\n\r\n\x05\x04\x0c\x02\x02\x01\x12\x04\xef\x01\x1b \n\r\n\x05\x04\x0c\x02\x02\x03\x12\x04\xef\x01#$b\x06proto3";