Principios y desarrollo de blockchain.

Prefacio

Blockchain es una tecnología de base de datos distribuida que es descentralizada, inviolable, segura y confiable, y se usa ampliamente en criptomonedas, contratos inteligentes, activos digitales y otros campos. Este artículo presentará los principios y la historia del desarrollo de blockchain.

1. Principio de blockchain

Blockchain es una base de datos descentralizada basada en tecnología de criptografía, sistemas distribuidos y mecanismos de consenso. Utiliza una estructura de datos avanzada llamada bloque para empaquetar registros de datos y registros de transacciones, y utiliza tecnología de criptografía para protección y verificación. Blockchain se puede utilizar para registrar varios tipos de datos, como transacciones de moneda digital, propiedad de artículos, contratos inteligentes, etc.

En la cadena de bloques, cada bloque contiene múltiples registros de transacciones y cada registro de transacciones contiene información como el remitente, el destinatario y el monto de la transacción. Cada bloque tiene un hash único calculado a partir de los hash de todas las transacciones del bloque, el hash del bloque anterior y algunos datos adicionales. De esta manera, si se manipulan los datos de cualquier bloque, afectará el valor hash de los bloques posteriores, invalidando así toda la cadena.

Blockchain utiliza un mecanismo de consenso para garantizar la seguridad y credibilidad de los datos. El mecanismo de consenso significa que en la red blockchain, varios nodos deben llegar a un consenso, es decir, alcanzar los mismos registros de transacciones y estado de datos, para poder actualizar la cadena de bloques. Los mecanismos de consenso comunes incluyen Prueba de trabajo, Prueba de participación, Prueba de participación delegada, etc.
La prueba de trabajo (PoW) es el primer mecanismo de consenso utilizado en blockchain. Fue propuesto por Satoshi Nakamoto, el fundador de Bitcoin, para resolver el problema del doble gasto y prevenir ataques a la red en sistemas descentralizados. La idea central del mecanismo de prueba de carga de trabajo es permitir que los mineros (refiriéndose a los nodos involucrados en la verificación de transacciones) consuman recursos informáticos y obtengan el derecho de agregar nuevos bloques mediante el cálculo de problemas matemáticos complejos, logrando así consenso y seguridad.

1.1 Prueba de trabajo

El principio de funcionamiento de la Prueba de Trabajo es que cada vez que un nodo quiere agregar un nuevo bloque a la cadena de bloques, necesita completar una tarea computacional, que se encuentra dentro de un cierto rango de valores aleatorios, un valor que satisface una condición específica, que se llama Objetivo de Dificultad. Los mineros necesitan calcular una gran cantidad de números aleatorios para encontrar un valor que cumpla con el objetivo de dificultad. Este proceso de cálculo requiere muchos recursos computacionales, por lo que solo el minero que complete el cálculo primero puede obtener el derecho a agregar un nuevo bloque y recibir una cierta cantidad de Bitcoins como recompensa.

Bitcoin utiliza el algoritmo SHA-256 para sus cálculos de prueba de trabajo. SHA-256 es un algoritmo hash muy complejo y el valor hash de cada bloque debe ser menor que el objetivo de dificultad, lo cual es un problema computacional muy difícil. Por lo tanto, los mineros necesitan utilizar una gran cantidad de recursos informáticos para poder completar rápidamente las tareas informáticas y obtener el derecho a agregar nuevos bloques.

A continuación se toma Bitcoin como ejemplo para explicar en detalle el principio de funcionamiento y el proceso de prueba de trabajo:

  1. Cada bloque contiene múltiples registros de transacciones y un encabezado de bloque. El encabezado del bloque contiene el valor hash del bloque anterior, el valor hash del registro de transacción, la marca de tiempo y otra información.

  2. Los mineros deben seleccionar una cierta cantidad de registros de transacciones del grupo de transacciones, combinarlos en un bloque y calcular el valor hash del encabezado del bloque.

  3. Los mineros necesitan calcular un número aleatorio llamado Nonce, agregarlo al encabezado del bloque y volver a calcular el hash del encabezado del bloque.

  4. Si el nuevo hash es menor que el objetivo de dificultad, el minero encontró con éxito un bloque calificado y lo transmitió a toda la red.

  5. Otros nodos verificarán el nuevo bloque y actualizarán su propia cadena de bloques. Si varios mineros encuentran un bloque calificado al mismo tiempo, se producirá competencia y solo el minero que lo encuentre primero será recompensado con Bitcoin.

Además de Bitcoin, la prueba de trabajo también se utiliza ampliamente en otros proyectos blockchain, como Ethereum, Litecoin, etc. Los diferentes proyectos de blockchain utilizarán diferentes algoritmos de hash y objetivos de dificultad para adaptarse a diferentes tamaños de red y necesidades de seguridad.

Aunque la prueba de trabajo es un mecanismo de consenso ampliamente utilizado, también tiene algunas deficiencias. En primer lugar, el proceso de cálculo de la prueba de trabajo consume mucha energía y se consume una gran cantidad de electricidad en el cálculo de las máquinas mineras, lo que provocará contaminación ambiental y desperdicio de energía. En segundo lugar, la prueba de carga de trabajo exige cada vez más potencia informática, lo que lleva a una tendencia a la centralización: sólo unos pocos mineros grandes tienen suficiente potencia informática, lo que afectará la descentralización y la seguridad de la red.

1.2 Prueba de participación

La prueba de participación (PoS) es diferente de la prueba de trabajo. La prueba de participación no requiere que los mineros completen tareas informáticas, sino que se basa en mantener una cierta cantidad de tokens o monedas como capital para verificar las transacciones y agregar nuevos bloques. Por lo tanto, la prueba de equidad puede reducir en gran medida el consumo de energía y los requisitos de potencia informática, y mejorar la eficiencia y confiabilidad de la cadena de bloques.

El principio de funcionamiento de la Prueba de participación es que cada nodo debe poseer una cierta cantidad de tokens o monedas y utilizar estos tokens como garantía (participación) para participar en el proceso de consenso de la cadena de bloques. Cada vez que un nodo quiere agregar un nuevo bloque a la cadena de bloques, necesita usar su propio capital para comprar algunos números aleatorios en la cadena de bloques, estos números aleatorios se denominan boletos. Los nodos pueden obtener una cantidad correspondiente de boletos en función de la cantidad de capital que poseen, aumentando así su probabilidad de ser seleccionados.

Cada nodo selecciona un valor inicial aleatorio (Seed) de los tickets seleccionados y utiliza este valor inicial para generar un número aleatorio. Este número aleatorio luego se comparará con el número aleatorio en el ticket. Si la coincidencia es exitosa, el nodo será seleccionado como validador y obtendrá el derecho de agregar nuevos bloques. Los validadores deben verificar la validez de los registros de transacciones, generar un nuevo bloque y luego transmitirlo a la red.

En comparación con la prueba de trabajo, la diferencia principal entre la prueba de participación y la prueba de trabajo es la cantidad de capital del nodo, no la cantidad de recursos informáticos. Por lo tanto, el mecanismo de prueba de participación puede reducir la dependencia de la potencia informática y también puede prevenir problemas como ataques del 51% y pagos dobles. Además, la prueba de participación también puede brindar más beneficios a los poseedores de tokens, como participar en la gobernanza de la red y compartir beneficios.

A continuación se toma Ethereum como ejemplo para explicar en detalle el principio de funcionamiento y el proceso de prueba de equidad:

  1. En Ethereum, los nodos deben poseer una cierta cantidad de Ether e hipotecarlo como capital. Este proceso se llama apostar.

  2. Después de apostar, los nodos pueden participar en la generación de números y boletos aleatorios. La cantidad de boletos que recibe cada nodo es proporcional a la cantidad de éter que ha comprometido.

  3. Cada nodo selecciona un valor inicial aleatorio de los boletos seleccionados y utiliza este valor inicial para generar un número aleatorio.

  4. El número aleatorio se compara con el número aleatorio del ticket. Si la coincidencia es exitosa, el nodo se selecciona como validador y obtiene el derecho de agregar nuevos bloques. El validador seleccionado debe verificar la validez del registro de transacción y generar un nuevo bloque. Los verificadores deben mostrar su prueba de cálculo (Prueba) a otros nodos para demostrar que han completado la tarea de cálculo del bloque.

  5. Otros nodos verificarán el nuevo bloque y actualizarán su propia cadena de bloques. Si varios nodos encuentran un bloque calificado al mismo tiempo, se producirá una competencia y solo el primer validador que lo encuentre será recompensado con monedas Ether.

En comparación con la prueba de trabajo, la prueba de participación tiene un menor consumo de energía y una mayor eficiencia, pero también tiene algunas desventajas. En primer lugar, la prueba de participación puede conducir a la concentración de riqueza, ya que los nodos con más tokens pueden obtener más fácilmente el derecho a agregar nuevos bloques y así recibir mayores recompensas. En segundo lugar, la prueba de participación puede no ser tan buena como la prueba de trabajo para garantizar la seguridad y la descentralización de la cadena de bloques.

1.3 Consenso de equidad

La Prueba de participación delegada y la Prueba de participación (PoS) tienen ciertas similitudes, pero también existen algunas diferencias. A diferencia de la Prueba de participación, el Consenso de participación se basa en el historial de participación del nodo en lugar de en la cantidad actual de tokens que se poseen.

El principio de funcionamiento del consenso de equidad es que al participar en el proceso de consenso de la cadena de bloques, cada nodo debe poseer una cierta cantidad de tokens o monedas y utilizar estos tokens como garantía (participación) para participar en la verificación de transacciones y la adición de nuevos bloques. El historial de participación de un nodo afecta su influencia y recompensas en el proceso de consenso.

El historial de participación de un nodo puede determinarse mediante los siguientes tres factores:

  1. Número de tokens: cuantos más tokens tenga un nodo, mejor será su historial de apuestas.

  2. Duración del tiempo de apuesta: cuanto más tiempo haya apostado tokens un nodo, mejor será su historial de apuestas.

  3. Actividad del nodo: cuanto más activo esté un nodo en la cadena de bloques, mejor será su historial de participación. Los nodos pueden aumentar su actividad validando transacciones y agregando nuevos bloques.

En el consenso de equidad, cada nodo se denomina validador y su tarea es verificar la validez de los registros de transacciones y agregar nuevos bloques a la cadena de bloques. La probabilidad de que se seleccione un validador es directamente proporcional a su historial de apuestas. Por lo tanto, el consenso de equidad puede prevenir problemas como ataques del 51% y pagos dobles, y mejorar la eficiencia y confiabilidad de la cadena de bloques.

El siguiente es el flujo de trabajo del mecanismo de consenso de acciones en Ethereum 2.0:

  1. Cada validador debe hipotecar una cierta cantidad de ETH como capital, estos ETH quedarán bloqueados en el contrato y no podrán ser utilizados por otros.

  2. En Ethereum 2.0, la duración de cada ciclo (Epoch) es de 6,4 minutos. Al comienzo de cada ciclo, se selecciona un conjunto de validadores para validar transacciones y agregar nuevos bloques. El proceso de selección de validadores es aleatorio, pero la probabilidad de que cada validador sea seleccionado es proporcional a su historial de apuestas.

  3. En cada ciclo, los validadores deben verificar la validez de los registros de transacciones y generar un nuevo bloque. Los verificadores deben completar estas tareas dentro de un cierto período de tiempo y enviar la prueba del cálculo (Prueba) a la cadena de bloques.

  4. Si el verificador completa con éxito las tareas de verificación y cálculo y envía la prueba de cálculo correcta, recibirá las recompensas correspondientes. Si los validadores no completan sus tareas o envían pruebas computacionales incorrectas, pueden ser multados o perder su participación.

  5. En Ethereum 2.0, el mecanismo de consenso de equidad también introduce un mecanismo llamado "limitador de bloques", que puede limitar la cantidad de bloques generados por cada validador en un ciclo. Esto evita que los validadores intenten generar demasiados bloques para obtener más recompensas.

En comparación con la prueba de trabajo y la prueba de participación, el consenso de participación tiene un menor consumo de energía y una mayor eficiencia, pero también tiene algunas desventajas. Por ejemplo, apostar por el consenso puede conducir a la concentración de la riqueza porque los nodos con más tokens pueden obtener más fácilmente el derecho a agregar nuevos bloques y así recibir más recompensas. Además, el consenso de apuestas también puede verse afectado si los atacantes toman el control de la red comprando grandes cantidades de tokens.

Por lo tanto, el consenso de equidad también es un campo de investigación activo y se están proponiendo muchos mecanismos de consenso nuevos, como el algoritmo de consenso bizantino tolerante a fallas de la cadena de bloques, que puede garantizar la confiabilidad y seguridad de la cadena de bloques en presencia de nodos maliciosos.

1.4 Consenso de tolerancia a fallas bizantinas

Byzantine Fault Tolerance (BFT) es un algoritmo de consenso que logra tolerancia a fallas en sistemas distribuidos. Puede garantizar la confiabilidad y seguridad del sistema en presencia de nodos defectuosos y atacantes maliciosos.

La Cuestión Bizantina se originó durante el Imperio Bizantino, cuando los generales del Imperio Bizantino necesitaban decidir conjuntamente si atacar al enemigo. Dado que las comunicaciones entre varios generales no son confiables, existe la posibilidad de que la información sea manipulada o falsificada. Si algún general se rinde o traiciona, el ataque fracasará. Por lo tanto, cómo llegar a un consenso en presencia de nodos defectuosos y atacantes maliciosos se ha convertido en una cuestión importante.

En el algoritmo de consenso bizantino, cada nodo puede ser un nodo ordinario o un nodo líder. Los nodos ordinarios solo son responsables de recibir y entregar mensajes, mientras que los nodos líderes son responsables de tomar decisiones y organizar la comunicación entre nodos.

Los algoritmos de consenso bizantinos suelen tener dos fases: transmisión y toma de decisiones.

En la fase de transmisión, el nodo líder enviará una propuesta a todos los nodos y les pedirá que confirmen o rechacen la propuesta. Una propuesta puede ser una transacción o un bloque.

Durante la fase de decisión, si el nodo líder recibe más de la mitad de los mensajes de confirmación, decidirá que la propuesta ha sido aceptada, en caso contrario considerará que la propuesta es rechazada. Si un nodo no recibe suficientes acuses de recibo, espera respuestas de otros nodos o reenvía la propuesta.

La cuestión clave en el algoritmo de consenso bizantino es cómo lidiar con la existencia de nodos maliciosos y nodos defectuosos. Para abordar estos problemas, el algoritmo de consenso bizantino introduce algunos mecanismos, como:

  1. Mecanismo de confirmación mayoritaria: en el algoritmo de consenso bizantino, una propuesta sólo será aceptada si más de la mitad de los nodos la confirman. Este mecanismo previene el impacto de nodos maliciosos y nodos defectuosos.

  2. Mecanismo de firma: el algoritmo de consenso bizantino utiliza firmas digitales para verificar la identidad de los nodos y la autenticidad de los mensajes. Al utilizar firmas digitales, los nodos pueden garantizar que solo los nodos líderes reales puedan enviar propuestas y que solo los nodos reales puedan confirmar propuestas.

  3. Mecanismo de tiempo de espera: si un nodo no recibe suficientes mensajes de confirmación, considerará que la propuesta es rechazada y esperará a que llegue la siguiente propuesta. Este mecanismo puede evitar que los nodos caigan en un estado de espera infinito.

A continuación se muestra un ejemplo del algoritmo de consenso bizantino en acción:

Hyperledger Fabric es una plataforma de contabilidad distribuida basada en la tecnología blockchain que utiliza un algoritmo de consenso llamado "tolerancia a fallas bizantinas" para garantizar la confiabilidad y seguridad de la red.

En Hyperledger Fabric, cada nodo puede ser un nodo líder o un nodo de respaldo (Backup). El nodo líder es responsable de proponer transacciones y bloques y enviar solicitudes de confirmación a los nodos de respaldo. Cuando el nodo líder recibe más de la mitad de los mensajes de confirmación, genera un nuevo bloque y lo transmite a toda la red.

En el algoritmo de tolerancia a fallas bizantinas de Hyperledger Fabric, existe un módulo llamado "Servicio de consenso", que se compone de un grupo de nodos que coordinan la interacción entre nodos a través de un algoritmo de consenso. El servicio de consenso utiliza un mecanismo de confirmación mayoritaria para decidir si se acepta una propuesta y un mecanismo de firma para garantizar la identidad de los nodos y la autenticidad de los mensajes.

En Hyperledger Fabric, el algoritmo bizantino tolerante a fallas también incluye un mecanismo llamado "respaldo". En el mecanismo de respaldo, el nodo líder solicitará el respaldo de otros nodos de la red para verificar la validez y corrección de la transacción. Cuando el nodo líder recibe suficientes respaldos, puede agregar la transacción al bloque.

El algoritmo de consenso bizantino es un algoritmo de consenso muy importante que puede lograr tolerancia a fallas en un sistema distribuido y garantizar la confiabilidad y seguridad del sistema. Aunque el algoritmo de consenso bizantino tiene algunas desventajas, como una mayor latencia y complejidad de la red, sigue siendo un área de investigación activa, que atrae cada vez a más investigadores y desarrolladores para explorar sus aplicaciones más amplias.

En resumen, la tecnología blockchain es una tecnología de base de datos distribuida y descentralizada que logra seguridad y credibilidad de los datos a través de mecanismos de consenso y tecnología de criptografía. El surgimiento de blockchain ha promovido en gran medida el desarrollo de la economía digital, la tecnología financiera y otros campos, y también ha despertado la atención y el pensamiento de la gente sobre los derechos digitales, la seguridad de los datos, la privacidad personal y otros temas.

2. Características de la cadena de bloques:

  1. Descentralización
    Blockchain es un sistema de base de datos descentralizado sin servidor centralizado ni organización de gestión. Cada nodo puede registrar, verificar y difundir datos, los nodos son independientes entre sí y se verifican entre sí, formando una red distribuida.

  2. No manipulabilidad:
    la cadena de bloques utiliza función hash y tecnología de firma digital para garantizar la integridad y la no manipulabilidad de los datos. Cada bloque contiene el valor hash del bloque anterior. Si los datos de cualquier bloque son manipulados, afectará el valor hash de los bloques posteriores, invalidando así toda la cadena.

  3. Blockchain segura y confiable
    utiliza tecnologías de criptografía, como cifrado de clave pública, firmas digitales, funciones hash, etc., para garantizar la seguridad y credibilidad de los datos. Los registros de transacciones en la cadena de bloques no se pueden alterar y el proceso de transacción es abierto y transparente, lo que garantiza la seguridad y equidad de la transacción.

3. Historia del desarrollo de Blockchain

3.1 La historia del desarrollo de blockchain:

  1. Bitcoin: Bitcoin es el creador de la tecnología blockchain. Satoshi Nakamoto propuso el concepto de Bitcoin en 2008 y se lanzó oficialmente en 2009. La cadena de bloques de Bitcoin es un sistema de efectivo electrónico descentralizado que utiliza la tecnología blockchain para registrar transacciones y garantizar la seguridad y la no manipulación de las transacciones.

  2. Ethereum: Ethereum es una tecnología blockchain de segunda generación que no solo admite transacciones de moneda digital sino también contratos inteligentes. La cadena de bloques Ethereum utiliza Ether como moneda digital y tiene funciones de contrato inteligente más flexibles y mayor escalabilidad, lo que la convierte en una de las plataformas de cadena de bloques más populares.

  3. Hyperledger: Hyperledger es una plataforma blockchain de código abierto lanzada por la Fundación Linux. Su objetivo es proporcionar a las empresas soluciones blockchain más seguras, confiables y eficientes y promover la cooperación y el desarrollo de blockchain entre industrias.

  4. EOS: EOS es un sistema operativo descentralizado basado en Ethereum que ofrece mayor escalabilidad y velocidades de transacción más rápidas. EOS utiliza un mecanismo de prueba de participación que puede admitir más transacciones simultáneas y también tiene mayor seguridad y descentralización.

  5. Blockchain Alliance: Blockchain Consortium es una organización de alianza basada en la tecnología blockchain, compuesta por múltiples empresas o instituciones. La Blockchain Alliance tiene como objetivo promover el desarrollo y la aplicación de la tecnología blockchain y promover la colaboración y el intercambio entre industrias y organizaciones.

3.2 Tecnología blockchain de vanguardia:

  1. Tecnología de fragmentación: la tecnología de fragmentación es una solución de escalabilidad que permite que múltiples nodos procesen transacciones de blockchain simultáneamente, aumentando así el rendimiento de las transacciones. La tecnología de fragmentación mejora el rendimiento de todo el sistema al dividir la cadena de bloques en múltiples bloques para que cada nodo solo necesite procesar una parte de las transacciones.

  2. Prueba de conocimiento cero: la prueba de conocimiento cero es una técnica criptográfica que protege la privacidad del usuario y puede demostrar que ciertas cosas son ciertas sin revelar ninguna información específica sobre esas cosas. La prueba de conocimiento cero se puede utilizar en la verificación de transacciones, verificación de identidad y otros campos de la cadena de bloques para mejorar la protección de la privacidad y la seguridad de los datos.

  3. Tecnología de cadena lateral: la tecnología de cadena lateral permite que las cadenas de bloques interactúen y se comuniquen con otras cadenas de bloques o sistemas financieros tradicionales, ampliando así la funcionalidad y el alcance de aplicación de las cadenas de bloques. La tecnología de cadena lateral puede realizar transacciones entre cadenas entre cadenas de bloques y también puede construir un puente entre las cadenas de bloques y los sistemas financieros tradicionales para promover la integración de la economía digital y la economía real.

  4. Seguridad informática cuántica: una computadora cuántica es una supercomputadora que tiene mayor potencia informática y la capacidad de romper algoritmos de cifrado que una computadora tradicional. Para proteger la seguridad del sistema blockchain, es necesario utilizar algoritmos de cifrado cuánticos seguros para computadoras, como algoritmos de cifrado basados ​​en funciones hash y algoritmos de cifrado basados ​​en celosías.

  5. DeFi: DeFi es la abreviatura de Finanzas Descentralizadas, es un servicio y aplicación financiera basada en la tecnología blockchain, cuyo objetivo es brindar servicios financieros más seguros, transparentes y abiertos de manera descentralizada. Las aplicaciones de DeFi incluyen intercambios descentralizados, protocolos de préstamos, monedas estables, mercados de predicción, etc.

4. Aplicaciones prácticas de blockchain

  1. Moneda digital
    La tecnología Blockchain proporciona soporte técnico confiable para la realización de moneda digital. Los registros de transacciones de monedas digitales como Bitcoin y Ethereum se registran en la cadena de bloques, lo que permite realizar transacciones descentralizadas y gestión de activos. La tecnología blockchain de la moneda digital también puede prevenir problemas como pagos repetidos y moneda falsificada, mejorando la seguridad y estabilidad de la moneda digital.

  2. La tecnología Blockchain de Internet de las cosas
    puede proporcionar autenticación de identidad segura e intercambio de datos para dispositivos de Internet de las cosas. La tecnología Blockchain puede registrar la identidad de los dispositivos de IoT y el proceso de intercambio de datos, realizando un intercambio y gestión de datos descentralizados y mejorando la confiabilidad y seguridad de IoT.

  3. Protección de los derechos de autor
    La tecnología Blockchain puede proporcionar medios técnicos eficaces para la protección de los derechos de autor. Al registrar la información de derechos de autor y los registros de transacciones en la cadena de bloques, se puede lograr una gestión descentralizada y la protección de los derechos de autor. Este método puede prevenir eficazmente el robo y la infracción de los derechos de autor y mejorar la credibilidad y eficiencia de la protección de los derechos de autor.

  4. La tecnología Healthcare
    Blockchain puede proporcionar un intercambio y una gestión seguros de datos para la atención sanitaria. Blockchain puede registrar registros médicos, información sobre medicamentos y otros datos, y realizar un intercambio y gestión seguros de datos. Este enfoque puede mejorar la eficiencia y confiabilidad de la atención médica al tiempo que protege la privacidad del paciente y la seguridad de los datos.

  5. Pago y liquidación
    La tecnología Blockchain puede proporcionar soluciones eficientes y seguras para pagos y liquidaciones. Blockchain puede registrar transacciones de pago, información de compensación y otros datos, y realizar pagos y liquidaciones descentralizados. Este método puede mejorar la eficiencia y seguridad de la liquidación de pagos y reducir los costos y riesgos de pago.

Resumen: Los escenarios de aplicación de la tecnología blockchain se están expandiendo e innovando constantemente. Desde moneda digital hasta Internet de las cosas, protección de derechos de autor, atención médica, pagos y liquidaciones y otros campos, la tecnología blockchain brinda soporte técnico confiable para la gestión e intercambio de datos descentralizados, seguros y confiables. Con el mayor desarrollo y mejora de la tecnología blockchain, podemos esperar escenarios de aplicación más innovadores.

Supongo que te gusta

Origin blog.csdn.net/qq_33578950/article/details/129899100
Recomendado
Clasificación