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  )