Mina中的delta_transition_chain_proof/delta_block_chain_proof

1. Introducción

El propósito principal del campo delta_transition_chain_proof/delta_block_chain_proof en el bloque Mina es: Prueba de que el bloque se produjo dentro del intervalo de tiempo asignado.

(* header.ml中有: *)
type t =
      { protocol_state : Protocol_state.Value.Stable.V2.t
      ; protocol_state_proof : Proof.Stable.V2.t [@sexp.opaque]
      ; delta_block_chain_proof :
          (* TODO: abstract *)
          State_hash.Stable.V1.t * State_body_hash.Stable.V1.t list
      ; current_protocol_version : Protocol_version.Stable.V1.t
      ; proposed_protocol_version_opt : Protocol_version.Stable.V1.t option
      ; body_reference : Body_reference.Stable.V1.t
      }

(* external_transition.ml(指节点收到的由外部产块者产的区块)中有: *)
type t =
          { protocol_state : Protocol_state.Value.Stable.V2.t
          ; protocol_state_proof : Proof.Stable.V2.t [@sexp.opaque]
          ; staged_ledger_diff : Staged_ledger_diff.Stable.V2.t
          ; delta_transition_chain_proof :
              State_hash.Stable.V1.t * State_body_hash.Stable.V1.t list
          ; current_protocol_version : Protocol_version.Stable.V1.t
          ; proposed_protocol_version_opt : Protocol_version.Stable.V1.t option
          ; mutable validation_callback : Validate_content.t
          }

El código para generar esta prueba es:

				let delta_block_chain_proof =
                      Transition_chain_prover.prove
                        ~length:
                          (Mina_numbers.Length.to_int consensus_constants.delta)
                        ~frontier previous_state_hash
                      |> Option.value_exn

en:

  • consensus_constants.delta: es el valor delta en el parámetro de consenso de Mina, la red principal actual de Mina se establece en 0.
  • previous_state_hash: Compromiso con el bloque anterior (hash de hash de estado de protocolo anterior y hash de cuerpo). Puede protocol_stateconsiderarse como un encabezado de bloque tradicional, que contiene la información más importante del bloque.

protocol_stateLa estructura es:

Campo Tipo Descripción
version u8(= 0x01) Versión de estructura de bloque
previous_state_hash State_hash.Stable.V1.t Compromiso con el bloque anterior (hash de hash de estado de protocolo anterior y hash de cuerpo)
body Protocol_state.Body.Value.Stable.V1 El cuerpo del protocolo estatal

Otros términos básicos son:

  • Transición: Equivalente a bloque bloque.
  • Frontera de transición: para el último kk en la red contenido en el almacén de datos localk bloques. Para la estructura de datos de tipo árbol de rosas, cada nodo del árbol puede tener varios hijos, es decir, bifurcaciones. Cada nodo en el árbol se puede llamar migas de pan. [Establecer k = 290 k = 290en el consenso de red principal de Minak=2 9 0kkk significa: Profundidad de finalidad (número de confirmaciones)]
    Cuando un nodo recibe un bloque de un par, primero se valida, se aplica al estado existente y se agrega a la frontera de transición del nodo. Si, de acuerdo con las reglas de consenso, da como resultado el aumento de la longitud de la cadena de bloques, la mejor punta del nodo se actualiza y la raíz de la frontera de transición se mueve hacia arriba para mantener solo k bloques en la frontera de transición.[Los bloques producidos por los propios productores de bloques se denominan transiciones internas. Los bloques de otros productores de bloques se denominan transiciones externas.
(* breadcrumb结构体定义为: *)
type t =
    { validated_transition : External_transition.Validated.t
    ; staged_ledger : Staged_ledger.t [@sexp.opaque]
    ; just_emitted_a_proof : bool
    ; transition_receipt_time : Time.t option
    }

(* transition_frontier结构体定义为: *)
type t =
  { logger : Logger.t
  ; verifier : Verifier.t
  ; consensus_local_state : Consensus.Data.Local_state.t
  ; catchup_tree : Catchup_tree.t
  ; full_frontier : Full_frontier.t
  ; persistent_root : Persistent_root.t
  ; persistent_root_instance : Persistent_root.Instance.t
  ; persistent_frontier : Persistent_frontier.t
  ; persistent_frontier_instance : Persistent_frontier.Instance.t
  ; extensions : Extensions.t
  ; genesis_state_hash : State_hash.t
  ; closed : unit Ivar.t
  }

 (* Extensionts结构体定义为: *)
  type t =
  { root_history : Root_history.Broadcasted.t
  ; snark_pool_refcount : Snark_pool_refcount.Broadcasted.t
  ; best_tip_diff : Best_tip_diff.Broadcasted.t
  ; transition_registry : Transition_registry.Broadcasted.t
  ; ledger_table : Ledger_table.Broadcasted.t
  ; identity : Identity.Broadcasted.t
  ; new_breadcrumbs : New_breadcrumbs.Broadcasted.t
  }
(* Transition_chain_prover: *)
let prove ?length ~frontier state_hash =
    let open Option.Let_syntax in
    let%map requested_transition =
      Option.merge
        Transition_frontier.(
          find frontier state_hash >>| Breadcrumb.validated_transition)
        (find_in_root_history frontier state_hash)
        ~f:Fn.const
    in
    let first_transition, merkle_list =
      Merkle_list.prove ?length ~context:frontier requested_transition
    in
    ( (External_transition.Validated.state_hashes first_transition).state_hash
    , merkle_list )

Apéndice A. Obtenga la API de bloque más reciente de Mina

La información de bloque más reciente en la cadena canónica de Mina se puede obtener a través de la siguiente API. La información de bloque más reciente se devuelve de forma predeterminada y los 10 últimos bloques se pueden devolver como máximo. Para datos de bloque completo, utilice la API de GraphQL.

$ curl --request GET \
>  --url https://api.minaexplorer.com/blocks?limit=1
{
    
    
  "blocks": [
    {
    
    
      "blockHeight": 131444, 
      "canonical": true, 
      "creator": "B62qphpEdBwSycpN67XFjcXSEY9j18chmttFTXYerhTPMX4JkXubWkd", 
      "creatorAccount": {
    
    
        "publicKey": "B62qphpEdBwSycpN67XFjcXSEY9j18chmttFTXYerhTPMX4JkXubWkd"
      }, 
      "dateTime": "Mon, 25 Apr 2022 08:18:00 GMT", 
      "protocolState": {
    
    
        "blockchainState": {
    
    
          "date": 1650874680000, 
          "snarkedLedgerHash": "jxdqjqb13YoWnqmcYLsLHzcufdu7WHhM5DPZcz77R6KNTUaHU7o", 
          "stagedLedgerHash": "jwJ9SunhJxpAvTJHrskGnoXG6oD5A1cKV9CJpBy49iMsZnHmVhE", 
          "utcDate": 1650874680000
        }, 
        "consensusState": {
    
    
          "blockHeight": 131444, 
          "blockchainLength": 131444, 
          "epoch": 27, 
          "epochCount": 27, 
          "hasAncestorInSameCheckpointWindow": true, 
          "lastVrfOutput": "EiRtbPoEfWdYFSmLFvXsybucaXdtuw4KHrzqU1JhgEePTmvGKV2RC", 
          "minWindowDensity": 14, 
          "nextEpochData": {
    
    
            "epochLength": 854, 
            "ledger": {
    
    
              "hash": "jx29wpTRDF8tuMFXgqT8inkJhb5chPjtZiwgTHzs6GxsvAy5KiH", 
              "totalCurrency": 911458252840039233
            }, 
            "lockCheckpoint": "3NK7scXTiS5huxuaZZWhiDJLPu8aAWZmPau4q2RLE1wu3YppsSb5", 
            "seed": "2vaMPjFYKDJpeBbyZeBkTXzuPBRLXA6PZpcKe1QrBkmdCmRAqmP5", 
            "startCheckpoint": "3NKsqyz5gDjjf3rKjzNUFTPXbnth3ZULGfBzhP47uXUvSqkmrjvp"
          }, 
          "slot": 1306, 
          "slotSinceGenesis": 194086, 
          "stakingEpochData": {
    
    
            "epochLength": 4924, 
            "ledger": {
    
    
              "hash": "jxsdc9d3AkKmVSWZQExucepfuLwfzQHtZpiCFArGqtfVe5jveiZ", 
              "totalCurrency": 907174972840039233
            }, 
            "lockCheckpoint": "3NKkU6PNVgY6RNSgXpQ5V3mKdjNuwFWPB5DSsEG5tTnAcyscvJhz", 
            "seed": "2vakgmuzxwow8WB6EBGggsTBZyRcbDTgBXJWJkWwvs5athQ1WeGk", 
            "startCheckpoint": "3NK86sb3HTArDahaSLWbsMihC49N2rC72sYP2vTVEr6mq8gLNvqH"
          }, 
          "totalCurrency": 912225772840039233
        }, 
        "previousStateHash": "3NK7scXTiS5huxuaZZWhiDJLPu8aAWZmPau4q2RLE1wu3YppsSb5"
      }, 
      "receivedTime": "Mon, 25 Apr 2022 08:19:19 GMT", 
      "snarkJobs": [], 
      "stateHash": "3NL3TectUwQUQW86AurwRCWz1H4n4cQRXyJZa5a7AmtxQ3cCe4NH", 
      "stateHashField": "13610166132023585511305744971845126343390668980628345075948931205879504829316", 
      "transactions": {
    
    
        "coinbase": 720000000000, 
        "coinbaseReceiverAccount": {
    
    
          "publicKey": "B62qmybys2vViMnedZSheEZ6ZSBjNwXHr9uBDy8kMUEJx8UsJ53r11D"
        }, 
        "feeTransfer": [
          {
    
    
            "fee": 91100000, 
            "recipient": "B62qmybys2vViMnedZSheEZ6ZSBjNwXHr9uBDy8kMUEJx8UsJ53r11D", 
            "type": "Fee_transfer"
          }
        ], 
        "userCommands": [
          {
    
    
            "amount": 1000, 
            "blockHeight": 131444, 
            "blockStateHash": "3NL3TectUwQUQW86AurwRCWz1H4n4cQRXyJZa5a7AmtxQ3cCe4NH", 
            "dateTime": "Mon, 25 Apr 2022 08:18:00 GMT", 
            "fee": 1000000, 
            "feePayer": {
    
    
              "publicKey": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy", 
              "token": 1
            }, 
            "feeToken": 1, 
            "from": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy", 
            "fromAccount": {
    
    
              "publicKey": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy", 
              "token": 1
            }, 
            "hash": "Ckpa1G9q2VATS1kHGqyoUjZUtMtNw7UiSBZJwMrRM5riopodrA9ji", 
            "id": "PSJ6tbskxprEcucuCKvoyV3ujHYFFvF3crYB37cjvPWsFzwkTTem7pXZRuwMJWSgr6JRDZhj2Gt1K3KokxsQ1diisxyESSyQEWZ2DoqF7Yaaox45aJcPHQFFza5es2wjLwyDRXYT6fujqbxfYgiwN8dxCnCBwyx3TND9FSKg3a7bzSFhGd2npF7XjBaC86wsJgtrKg7yNcUj8BvtkpHvpJBPG8QfxHoRc3qr2z1MbZVu3LQK7G2n12W6sTDNBJuxNEAZiV3RPTVE6VmsfHfPhtXDTgd3dai2xBc6WP7Hj3V5hXu6WrScCbWhoku8BF6mxV8ahPePo8oQUhUHtDcmwXVH7gsN1UhprJRKzvnvmferyLcubwti1ZDKgUgH15UVxjsCtTp3k4mWP", 
            "isDelegation": false, 
            "kind": "PAYMENT", 
            "memo": "E4YM2vTHhWEg66xpj52JErHUBU4pZ1yageL4TVDDpTTSsv8mK6YaH", 
            "nonce": 184335, 
            "receiver": {
    
    
              "publicKey": "B62qjYanmV7y9njVeH5UHkz3GYBm7xKir1rAnoY4KsEYUGLMiU45FSM"
            }, 
            "source": {
    
    
              "publicKey": "B62qre3erTHfzQckNuibViWQGyyKwZseztqrjPZBv6SQF384Rg6ESAy"
            }, 
            "to": "B62qjYanmV7y9njVeH5UHkz3GYBm7xKir1rAnoY4KsEYUGLMiU45FSM", 
            "toAccount": {
    
    
              "publicKey": "B62qjYanmV7y9njVeH5UHkz3GYBm7xKir1rAnoY4KsEYUGLMiU45FSM", 
              "token": 1
            }, 
            "token": 1
          }, 
          {
    
    
            "amount": 1905000, 
            "blockHeight": 131444, 
            "blockStateHash": "3NL3TectUwQUQW86AurwRCWz1H4n4cQRXyJZa5a7AmtxQ3cCe4NH", 
            "dateTime": "Mon, 25 Apr 2022 08:18:00 GMT", 
            "fee": 10000000, 
            "feePayer": {
    
    
              "publicKey": "B62qqa9g4CFfkSuX2j22S52z6UfcDcS9tMTgQrFKZ21v7GrEP6Zu5Tc", 
              "token": 1
            }, 
            "feeToken": 1, 
            "from": "B62qqa9g4CFfkSuX2j22S52z6UfcDcS9tMTgQrFKZ21v7GrEP6Zu5Tc", 
            "fromAccount": {
    
    
              "publicKey": "B62qqa9g4CFfkSuX2j22S52z6UfcDcS9tMTgQrFKZ21v7GrEP6Zu5Tc", 
              "token": 1
            }, 
            "hash": "CkpYtQ48qS3CaHkaVB7okZwKLq4twFg56ofN5yKe37SZmtTP29kPj", 
            "id": "PSJ6tbskxprEcue6aySgF6jSQg4w7tC2a2QekB6rDZbAsLEVPoXdyHSt46774q9KkPyeSsQuKAsoByhMgAz3jU7iC6rbfuhHShgNvCDZbbDzrJpGLxxEWbH3BiHXd83WbY1axTsCQge8mmKAvixUADTQmhS5Va8ayoYCt87DHkAMEqscoqVn8ufdgB23EHX5G5gyttrsfhahL8pUBznSeAB3Lvu5Z673VoT3ahra5efhZt34iUVJiyK9ATY7J1FBfF1m22xsmeYsfcoN7DXTgwv9VqxmKKJDQaBY1EQtvRws7QX4BVeQfawTRPmmivEQCNMeFZYxUdwuEanw93LEAkqLdgbPe3t9K7aqLiL6aasFSQ1dXAjLqGgbEpYCdnPzGTFdxfGCTX337", 
            "isDelegation": false, 
            "kind": "PAYMENT", 
            "memo": "E4Yd7qwaRCHR6t7i6ToM98eSUy5eKKadQUPZX7Vpw4CWBvWyd8fzK", 
            "nonce": 4187, 
            "receiver": {
    
    
              "publicKey": "B62qq3fsYyjPWfhLSfoXDd2dxopsrzCPaQnvfdQm3wtmHT9UarBkh3f"
            }, 
            "source": {
    
    
              "publicKey": "B62qqa9g4CFfkSuX2j22S52z6UfcDcS9tMTgQrFKZ21v7GrEP6Zu5Tc"
            }, 
            "to": "B62qq3fsYyjPWfhLSfoXDd2dxopsrzCPaQnvfdQm3wtmHT9UarBkh3f", 
            "toAccount": {
    
    
              "publicKey": "B62qq3fsYyjPWfhLSfoXDd2dxopsrzCPaQnvfdQm3wtmHT9UarBkh3f", 
              "token": 1
            }, 
            "token": 1
          }, 
          {
    
    
            "amount": 253303898779, 
            "blockHeight": 131444, 
            "blockStateHash": "3NL3TectUwQUQW86AurwRCWz1H4n4cQRXyJZa5a7AmtxQ3cCe4NH", 
            "dateTime": "Mon, 25 Apr 2022 08:18:00 GMT", 
            "fee": 10100000, 
            "feePayer": {
    
    
              "publicKey": "B62qopdvPkbF8Gp3Uafs5zPgmTnqCPe3arBoT5xCZ6CjenYVuDBrzjX", 
              "token": 1
            }, 
            "feeToken": 1, 
            "from": "B62qopdvPkbF8Gp3Uafs5zPgmTnqCPe3arBoT5xCZ6CjenYVuDBrzjX", 
            "fromAccount": {
    
    
              "publicKey": "B62qopdvPkbF8Gp3Uafs5zPgmTnqCPe3arBoT5xCZ6CjenYVuDBrzjX", 
              "token": 1
            }, 
            "hash": "CkpYYo8BCAsr7eY7UVbqUswPKUsFXXvPL3JKZPabrpAiWhA2jckNb", 
            "id": "8Y6GSZvuW1bNvwdV9zWpr1LrtTAJmAgyskzbbvaNBVayaa9CHDTskBPCcgkwaTcfcYTSgoex6KgRw4FYtN9ZLo7uA9gd8djS4TbShP53seShLg3KXfBUdeWHmwqUeJqymta2iZSaWjzksLBYimCAfecsoer4CTePLmKhLRPuUZDA5nrtNqZVCaNx5Kudv9PNGKbm5Z8fMcoRamLNBbyq9uDKzmdvgShnLDoYVfE4PLYrPbEJMcpa24fXGa8J1eXbvKLoHtpUfSgGaxBH6YSKhPnsBP6bW35vjjns5eCNnDeBArfjzGK9WPmfNPeYbZ78HGXNimddBcBzcYyCFsgD4Vj7n2SqaqwLcBNkB6Hz5xaV1LF8qVM8XYiTk9R9apGy7ENXHgy67nBW53oZ", 
            "isDelegation": false, 
            "kind": "PAYMENT", 
            "memo": "E4YM2vTHhWEg66xpj52JErHUBU4pZ1yageL4TVDDpTTSsv8mK6YaH", 
            "nonce": 1, 
            "receiver": {
    
    
              "publicKey": "B62qpEva8DE1Z6KPSi3MpZEKgrrNnj7ZGVF5PzKD6RXVgU5cxmD4JM9"
            }, 
            "source": {
    
    
              "publicKey": "B62qopdvPkbF8Gp3Uafs5zPgmTnqCPe3arBoT5xCZ6CjenYVuDBrzjX"
            }, 
            "to": "B62qpEva8DE1Z6KPSi3MpZEKgrrNnj7ZGVF5PzKD6RXVgU5cxmD4JM9", 
            "toAccount": {
    
    
              "publicKey": "B62qpEva8DE1Z6KPSi3MpZEKgrrNnj7ZGVF5PzKD6RXVgU5cxmD4JM9", 
              "token": 1
            }, 
            "token": 1
          }, 
          {
    
    
            "amount": 38951000000, 
            "blockHeight": 131444, 
            "blockStateHash": "3NL3TectUwQUQW86AurwRCWz1H4n4cQRXyJZa5a7AmtxQ3cCe4NH", 
            "dateTime": "Mon, 25 Apr 2022 08:18:00 GMT", 
            "fee": 20000000, 
            "feePayer": {
    
    
              "publicKey": "B62qp2BETsTNsFg1TXcbwt4zYH4SWgjvGtNB1SjKWhb1m6xjYaW3Us4", 
              "token": 1
            }, 
            "feeToken": 1, 
            "from": "B62qp2BETsTNsFg1TXcbwt4zYH4SWgjvGtNB1SjKWhb1m6xjYaW3Us4", 
            "fromAccount": {
    
    
              "publicKey": "B62qp2BETsTNsFg1TXcbwt4zYH4SWgjvGtNB1SjKWhb1m6xjYaW3Us4", 
              "token": 1
            }, 
            "hash": "CkpZZJ3LZUnGMCDSnNCXEDfXnDFrcwUWAtz2huy3eSFFRYuo17LGN", 
            "id": "8Y6GSZvuW1bNvwdHapkk5X5MbRx2ikTCaYmKsZBVCedhH9RM8B9gQEgT3VVm8Crs6u5vHWHsHqytYDQf9XbRmawUfVdThyka2AgHMgq4Hj82Mdr3ti4L8PWffFwXNhnmHuZRKyH4iuK5Qf9eWbEhuusgeEoJwseU5fXkgufHLMC9FEuNCu2vv43EQmxmkJa84n9PMLA1WCxcHqMQ8hAw3rGeVDPjYys57YfG7c6DjcTB4H1UdDMybrUUjPWFn4xtkMMNpRmPLcKaheoyLvxM6qy84rTEUuhzvxUREFzCDaWBp2CRn1VcN2fTE1kprtoTo5hJBdk4TYUssHHeCTwUBF3Dk5VH2233fdhQezYQBu4K7Px9cX7i3kwnaEybnCtQrN9uEuPCghUNZD9j", 
            "isDelegation": false, 
            "kind": "PAYMENT", 
            "memo": "E4YM2vTHhWEg66xpj52JErHUBU4pZ1yageL4TVDDpTTSsv8mK6YaH", 
            "nonce": 2, 
            "receiver": {
    
    
              "publicKey": "B62qpq3jk9tAb52DTEZaLhgM7j8EgXX9U6Xkm5n9KRXVdgLwi4ad8tL"
            }, 
            "source": {
    
    
              "publicKey": "B62qp2BETsTNsFg1TXcbwt4zYH4SWgjvGtNB1SjKWhb1m6xjYaW3Us4"
            }, 
            "to": "B62qpq3jk9tAb52DTEZaLhgM7j8EgXX9U6Xkm5n9KRXVdgLwi4ad8tL", 
            "toAccount": {
    
    
              "publicKey": "B62qpq3jk9tAb52DTEZaLhgM7j8EgXX9U6Xkm5n9KRXVdgLwi4ad8tL", 
              "token": 1
            }, 
            "token": 1
          }, 
          {
    
    
            "amount": 730458000000, 
            "blockHeight": 131444, 
            "blockStateHash": "3NL3TectUwQUQW86AurwRCWz1H4n4cQRXyJZa5a7AmtxQ3cCe4NH", 
            "dateTime": "Mon, 25 Apr 2022 08:18:00 GMT", 
            "fee": 50000000, 
            "feePayer": {
    
    
              "publicKey": "B62qmLLkkx3y22DXfNACbF24dSiBVjvAQVLup9RBXhNvgDVQkkvLbmT", 
              "token": 1
            }, 
            "feeToken": 1, 
            "from": "B62qmLLkkx3y22DXfNACbF24dSiBVjvAQVLup9RBXhNvgDVQkkvLbmT", 
            "fromAccount": {
    
    
              "publicKey": "B62qmLLkkx3y22DXfNACbF24dSiBVjvAQVLup9RBXhNvgDVQkkvLbmT", 
              "token": 1
            }, 
            "hash": "CkpZ3MA7iLm8dDtwv7nDDYdmEFFmvRkxuts7qoZLxTxgPP4DmcTw6", 
            "id": "CB1PypTjpLT56HzVoH38qjS2Fth7PNdUviE7xKgsnE8T63PKz2UybbM46HC7V5wJUUhtcdADpV7hKdmUcRXt7Hm7CaP9qnDtfH9gvAU6jTym4jWBa4TCztHfh86aou7ZW3eEFzM5CrMCV3rD2zSzfHkGVNvBHvmTbvxgddj33Cb7JqXSbY8Fem1XxnWwaSu4wnXgQiz2fAHc9xSAi1K2EB9yh5sbhCE3FBMYJeP12nSa6q6J4k3H5Q3WVrVwvLmsznXsSqJam5ya9df4TmFoVswL94EQk14oHhDtVjkheg4j5kr33majEs25soMQeBt6ZRWWiZ7JG5dw7cJWjeUo2DxVfwFgFE2YWKtXEUqPWAMk3qGienVNYxw4mUGWzMfS8eZPxBD2xTJPaRduxrDi", 
            "isDelegation": false, 
            "kind": "PAYMENT", 
            "memo": "E4YM2vTHhWEg66xpj52JErHUBU4pZ1yageL4TVDDpTTSsv8mK6YaH", 
            "nonce": 0, 
            "receiver": {
    
    
              "publicKey": "B62qkRodi7nj6W1geB12UuW2XAx2yidWZCcDthJvkf9G4A6G5GFasVQ"
            }, 
            "source": {
    
    
              "publicKey": "B62qmLLkkx3y22DXfNACbF24dSiBVjvAQVLup9RBXhNvgDVQkkvLbmT"
            }, 
            "to": "B62qkRodi7nj6W1geB12UuW2XAx2yidWZCcDthJvkf9G4A6G5GFasVQ", 
            "toAccount": {
    
    
              "publicKey": "B62qkRodi7nj6W1geB12UuW2XAx2yidWZCcDthJvkf9G4A6G5GFasVQ", 
              "token": 1
            }, 
            "token": 1
          }
        ]
      }, 
      "winnerAccount": {
    
    
        "balance": {
    
    
          "blockHeight": 131444, 
          "liquid": 1180040858424360, 
          "locked": 1000000000, 
          "stateHash": "3NL3TectUwQUQW86AurwRCWz1H4n4cQRXyJZa5a7AmtxQ3cCe4NH", 
          "total": 1180041858424360, 
          "unknown": 1180041858424360
        }, 
        "publicKey": "B62qmanR1vreSJgKYZcHSiNrov8jvXShfcjioaBLpCGbr7vrt3DxZq9"
      }
    }
  ]
}

Apéndice 1. Serie de blogs de Mina

La serie de blogs de Mina incluye:

Supongo que te gusta

Origin blog.csdn.net/mutourend/article/details/124408198
Recomendado
Clasificación