github.com/mavryk-network/mvgo@v1.19.9/mavryk/magic.go (about) 1 // Copyright (c) 2020-2023 Blockwatch Data Inc. 2 // Author: alex@blockwatch.cc 3 4 package mavryk 5 6 const ( 7 Name = "Tezos" 8 Symbol = "XTZ" 9 10 // base58 prefixes for 4 byte hash magics 11 CHAIN_ID_PREFIX = "Net" 12 13 // base58 prefixes for 16 byte hash magics 14 ID_HASH_PREFIX = "id" 15 16 // base58 prefixes for 20 byte hash magics 17 ED25519_PUBLIC_KEY_HASH_PREFIX = "mv1" 18 SECP256K1_PUBLIC_KEY_HASH_PREFIX = "mv2" 19 P256_PUBLIC_KEY_HASH_PREFIX = "mv3" 20 NOCURVE_PUBLIC_KEY_HASH_PREFIX = "KT1" // originated contract identifier 21 BLINDED_PUBLIC_KEY_HASH_PREFIX = "bmv1" // blinded mv1 22 23 // base58 prefixes for 32 byte hash magics 24 BLOCK_HASH_PREFIX = "B" 25 OPERATION_HASH_PREFIX = "o" 26 OPERATION_LIST_HASH_PREFIX = "Lo" 27 OPERATION_LIST_LIST_HASH_PREFIX = "LLo" 28 PROTOCOL_HASH_PREFIX = "P" 29 CONTEXT_HASH_PREFIX = "Co" 30 NONCE_HASH_PREFIX = "nce" 31 ED25519_SEED_PREFIX = "edsk" 32 ED25519_PUBLIC_KEY_PREFIX = "edpk" 33 SECP256K1_SECRET_KEY_PREFIX = "spsk" 34 P256_SECRET_KEY_PREFIX = "p2sk" 35 36 BLOCK_PAYLOAD_HASH_PREFIX = "vh" // "\001\106\242" (* vh(52) *) 37 BLOCK_METADATA_HASH_PREFIX = "bm" // "\234\249" (* bm(52) *) 38 OPERATION_METADATA_HASH_PREFIX = "r" // "\005\183" (* r(51) *) 39 OPERATION_METADATA_LIST_HASH_PREFIX = "Lr" // "\134\039" (* Lr(52) *) 40 OPERATION_METADATA_LIST_LIST_HASH_PREFIX = "LLr" // "\029\159\182" (* LLr(53) *) 41 42 // base58 prefixes for 33 byte hash magics 43 SECP256K1_PUBLIC_KEY_PREFIX = "sppk" 44 P256_PUBLIC_KEY_PREFIX = "p2pk" 45 SECP256K1_SCALAR_PREFIX = "SSp" 46 SECP256K1_ELEMENT_PREFIX = "GSp" 47 48 // base58 prefixes for 54 byte hash magics 49 SCRIPT_EXPR_HASH_PREFIX = "expr" 50 51 // base58 prefixes for 56 byte hash magics 52 ED25519_ENCRYPTED_SEED_PREFIX = "edesk" 53 SECP256K1_ENCRYPTED_SECRET_KEY_PREFIX = "spesk" 54 P256_ENCRYPTED_SECRET_KEY_PREFIX = "p2esk" 55 56 // base58 prefixes for 60 byte hash magics 57 SECP256K1_ENCRYPTED_SCALAR_PREFIX = "seesk" // "\001\131\036\086\248" (* seesk(93) *) 58 59 // base58 prefixes for 64 byte hash magics 60 ED25519_SECRET_KEY_PREFIX = "edsk" 61 ED25519_SIGNATURE_PREFIX = "edsig" 62 SECP256K1_SIGNATURE_PREFIX = "spsig1" 63 P256_SIGNATURE_PREFIX = "p2sig" 64 GENERIC_SIGNATURE_PREFIX = "sig" 65 66 // base58 prefixes for Sapling byte hash magics 67 SAPLING_SPENDING_KEY_PREFIX = "sask" // "\011\237\020\092" (* sask(241) *) // 169 bytes 68 SAPLING_ADDRESS_PREFIX = "zet1" // "\018\071\040\223" (* zet1(69) *) // 43 bytes 69 70 // base58 prefixes for rollup hash magics 71 BLS12_381_PUBLIC_KEY_HASH_PREFIX = "mv4" 72 GENERIC_AGGREGATE_SIGNATURE_PREFIX = "asig" 73 BLS12_381_SIGNATURE_PREFIX = "BLsig" 74 BLS12_381_PUBLIC_KEY_PREFIX = "BLpk" 75 BLS12_381_SECRET_KEY_PREFIX = "BLsk" 76 BLS12_381_ENCRYPTED_SECRET_KEY_PREFIX = "BLesk" 77 TX_ROLLUP_ADDRESS_PREFIX = "txr1" 78 TX_ROLLUP_INBOX_HASH_PREFIX = "txi" 79 TX_ROLLUP_MESSAGE_HASH_PREFIX = "txm" 80 TX_ROLLUP_COMMITMENT_HASH_PREFIX = "txc" 81 TX_ROLLUP_MESSAGE_RESULT_HASH_PREFIX = "txmr" 82 TX_ROLLUP_MESSAGE_RESULT_LIST_HASH_PREFIX = "txM" 83 TX_ROLLUP_WITHDRAW_LIST_HASH_PREFIX = "txw" 84 SMART_ROLLUP_ADDRESS_PREFIX = "sr1" 85 SMART_ROLLUP_STATE_HASH_PREFIX = "srs1" 86 SMART_ROLLUP_COMMITMENT_HASH_PREFIX = "src1" 87 SMART_ROLLUP_REVEAL_HASH_PREFIX = "scrrh1" 88 ) 89 90 var ( 91 // 4 byte hash magics 92 CHAIN_ID = []byte{0x57, 0x52, 0x00} // "\087\082\000" (* Net(15) *) 93 94 // 16 byte hash magics 95 ID_HASH_ID = []byte{0x99, 0x67} // "\153\103" (* id(30) *) cryptobox_public_key_hash 96 97 // 20 byte hash magics 98 ED25519_PUBLIC_KEY_HASH_ID = []byte{0x05, 0xBA, 0xC4} // "\005\186\196" (* mv1(36) *) 99 SECP256K1_PUBLIC_KEY_HASH_ID = []byte{0x05, 0xBA, 0xC7} // "\005\186\199" (* mv2(36) *) 100 P256_PUBLIC_KEY_HASH_ID = []byte{0x05, 0xBA, 0xC9} // "\005\186\201" (* mv3(36) *) 101 NOCURVE_PUBLIC_KEY_HASH_ID = []byte{0x02, 0x5A, 0x79} // "\002\090\121" (* KT1(36) *) 102 BLINDED_PUBLIC_KEY_HASH_ID = []byte{0x01, 0x01, 0x4B, 0x04} // "\001\001\075\004" (* bmv1(37) *) 103 104 // 32 byte hash magics 105 BLOCK_HASH_ID = []byte{0x01, 0x34} // "\001\052" (* B(51) *) 106 OPERATION_HASH_ID = []byte{0x05, 0x74} // "\005\116" (* o(51) *) 107 OPERATION_LIST_HASH_ID = []byte{0x85, 0xE9} // "\133\233" (* Lo(52) *) 108 OPERATION_LIST_LIST_HASH_ID = []byte{0x1D, 0x9F, 0x6D} // "\029\159\109" (* LLo(53) *) 109 PROTOCOL_HASH_ID = []byte{0x02, 0xAA} // "\002\170" (* P(51) *) 110 CONTEXT_HASH_ID = []byte{0x4F, 0xC7} // "\079\199" (* Co(52) *) 111 NONCE_HASH_ID = []byte{0x45, 0xDC, 0xA9} // "\069\220\169" (* nce(53) *) 112 113 BLOCK_PAYLOAD_HASH_ID = []byte{0x01, 0x6A, 0xF2} // "\001\106\242" (* vh(52) *) 114 BLOCK_METADATA_HASH_ID = []byte{0xEA, 0xF9} // "\234\249" (* bm(52) *) 115 OPERATION_METADATA_HASH_ID = []byte{0x05, 0xB7} // "\005\183" (* r(51) *) 116 OPERATION_METADATA_LIST_HASH_ID = []byte{0x86, 0x27} // "\134\039" (* Lr(52) *) 117 OPERATION_METADATA_LIST_LIST_HASH_ID = []byte{0x1D, 0x9F, 0xB6} // "\029\159\182" (* LLr(53) *) 118 119 ED25519_SEED_ID = []byte{0x0D, 0x0F, 0x3A, 0x07} // "\013\015\058\007" (* edsk(54) *) 120 ED25519_PUBLIC_KEY_ID = []byte{0x0D, 0x0F, 0x25, 0xD9} // "\013\015\037\217" (* edpk(54) *) 121 SECP256K1_SECRET_KEY_ID = []byte{0x11, 0xA2, 0xE0, 0xC9} // "\017\162\224\201" (* spsk(54) *) 122 P256_SECRET_KEY_ID = []byte{0x10, 0x51, 0xEE, 0xBD} // "\016\081\238\189" (* p2sk(54) *) 123 124 // 33 byte hash magics 125 SECP256K1_PUBLIC_KEY_ID = []byte{0x03, 0xFE, 0xE2, 0x56} // "\003\254\226\086" (* sppk(55) *) 126 P256_PUBLIC_KEY_ID = []byte{0x03, 0xB2, 0x8B, 0x7F} // "\003\178\139\127" (* p2pk(55) *) 127 SECP256K1_SCALAR_ID = []byte{0x26, 0xF8, 0x88} // "\038\248\136" (* SSp(53) *) 128 SECP256K1_ELEMENT_ID = []byte{0x05, 0x5C, 0x00} // "\005\092\000" (* GSp(54) *) 129 130 // 54 byte hash magics 131 SCRIPT_EXPR_HASH_ID = []byte{0x0D, 0x2C, 0x40, 0x1B} // "\013\044\064\027" (* expr(54) *) 132 133 // 56 byte hash magics 134 ED25519_ENCRYPTED_SEED_ID = []byte{0x07, 0x5A, 0x3C, 0xB3, 0x29} // "\007\090\060\179\041" (* edesk(88) *) 135 SECP256K1_ENCRYPTED_SECRET_KEY_ID = []byte{0x09, 0xED, 0xF1, 0xAE, 0x96} // "\009\237\241\174\150" (* spesk(88) *) 136 P256_ENCRYPTED_SECRET_KEY_ID = []byte{0x09, 0x30, 0x39, 0x73, 0xAB} // "\009\048\057\115\171" (* p2esk(88) *) 137 138 // 60 byte hash magics 139 SECP256K1_ENCRYPTED_SCALAR_ID = []byte{0x01, 0x83, 0x24, 0x56, 0xF8} // "\001\131\036\086\248" (* seesk(93) *) 140 141 // 64 byte hash magics 142 ED25519_SECRET_KEY_ID = []byte{0x2B, 0xF6, 0x4E, 0x07} // "\043\246\078\007" (* edsk(98) *) 143 ED25519_SIGNATURE_ID = []byte{0x09, 0xF5, 0xCD, 0x86, 0x12} // "\009\245\205\134\018" (* edsig(99) *) 144 SECP256K1_SIGNATURE_ID = []byte{0x0D, 0x73, 0x65, 0x13, 0x3F} // "\013\115\101\019\063" (* spsig1(99) *) 145 P256_SIGNATURE_ID = []byte{0x36, 0xF0, 0x2C, 0x34} // "\054\240\044\052" (* p2sig(98) *) 146 GENERIC_SIGNATURE_ID = []byte{0x04, 0x82, 0x2B} // "\004\130\043" (* sig(96) *) 147 148 // Sapling magics 149 SAPLING_SPENDING_KEY_ID = []byte{0x0b, 0xED, 0x14, 0x5C} // "\011\237\020\092" (* sask(241) *) 150 SAPLING_ADDRESS_ID = []byte{0x12, 0x47, 0x28, 0xDF} // "\018\071\040\223" (* zet1(69) *) 151 152 // Rollup hash magics 153 BLS12_381_PUBLIC_KEY_HASH_ID = []byte{5, 186, 204} // "\005\186\204" mv4(36) 20 154 GENERIC_AGGREGATE_SIGNATURE_ID = []byte{2, 075, 234, 101} // "\002\075\234\101" asig(96) 141 155 BLS12_381_SIGNATURE_ID = []byte{40, 171, 64, 207} // "\040\171\064\207" (* BLsig(96) *) 142 156 BLS12_381_PUBLIC_KEY_ID = []byte{6, 149, 135, 204} // "\006\149\135\204" (* BLpk(48) *) 76 157 BLS12_381_SECRET_KEY_ID = []byte{3, 150, 192, 40} // "\003\150\192\040" (* BLsk(32) *) 54 158 BLS12_381_ENCRYPTED_SECRET_KEY_ID = []byte{2, 5, 30, 53, 25} // "\002\005\030\053\025" (* BLesk(58) *) 88 159 TX_ROLLUP_ADDRESS_ID = []byte{1, 128, 120, 31} // "\001\128\120\031" txr1(37) 20 160 TX_ROLLUP_INBOX_HASH_ID = []byte{79, 148, 196} // "\079\148\196" txi(53) 32 161 TX_ROLLUP_MESSAGE_HASH_ID = []byte{79, 149, 30} // "\079\149\030" txm(53) 32 162 TX_ROLLUP_COMMITMENT_HASH_ID = []byte{79, 148, 17} // "\079\148\017" txc(53) 32 163 TX_ROLLUP_MESSAGE_RESULT_HASH_ID = []byte{18, 7, 206, 87} // "\018\007\206\087" txmr(54) 32 164 TX_ROLLUP_MESSAGE_RESULT_LIST_HASH_ID = []byte{79, 146, 82} // "\079\146\082" txM(53) 32 165 TX_ROLLUP_WITHDRAW_LIST_HASH_ID = []byte{79, 150, 72} // "\079\150\072" txw(53) 32 166 SMART_ROLLUP_ADDRESS_ID = []byte{6, 124, 117} // "\001\118\132\217" sr1(36) 20 167 SMART_ROLLUP_STATE_HASH_ID = []byte{17, 165, 235, 240} // "\017\165\235\240" srs1(54) 168 SMART_ROLLUP_COMMITMENT_HASH_ID = []byte{17, 165, 134, 138} // "\017\165\134\138" (* src1(54) *) 169 SMART_ROLLUP_REVEAL_HASH_ID = []byte{230, 206, 128, 200, 196} // "\230\206\128\200\196" scrrh1(56) 170 )