Exploración Solana Contrato inteligente modelo de programación

Principiante6/11/2024, 5:47:31 AM
Solana es una plataforma blockchain de alto rendimiento diseñada para soportar dApps. Es conocido por su velocidad y escalabilidad, lograda a través de un mecanismo de consenso y un diseño arquitectónico únicos. Este artículo utiliza Ethereum como objeto de comparación para presentar brevemente las características del modelo de programación de contratos inteligentes de Solana.

Reenviar el título original '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

Solana es una plataforma blockchain de alto rendimiento diseñada para soportar dApps. Es conocido por su velocidad y escalabilidad, lograda a través de un mecanismo de consenso y un diseño arquitectónico únicos. Este artículo utiliza Ethereum como objeto de comparación para presentar brevemente las características del modelo de programación de contratos inteligentes de Solana.

Contratos inteligentes y programas on-chain:

Los programas que se ejecutan en Ethereum se denominan contratos inteligentes, una serie de códigos (función) ubicados en una dirección específica en Ethereum y data(state). (Oh, el código y los datos están acoplados) Los contratos inteligentes también son cuentas de Ethereum, que se llaman cuentas de contrato. Tienen saldos y pueden convertirse en objetos de transacción, pero no pueden ser controlados por humanos y se despliegan en la red para ejecutarse como programas.

Los códigos ejecutables que se ejecutan en Solana se denominan programas on-chain y pueden interpretar las instrucciones enviadas en cada transacción. Estos programas pueden ser implementados directamente en el núcleo de la red como programas nativos, o publicados por cualquier persona como programas SPL.

  1. Instrucciones: Las instrucciones son términos únicos para programas en la cadena Solana. Los programas on-chain se componen de instrucciones. Son las unidades más pequeñas que realizan operaciones específicas: se incluyen una o más instrucciones en cada transacción de Solana. Las instrucciones especifican las acciones que se realizarán, incluida la llamada a un programa on-chain específico, pasar una cuenta, una lista de entradas y proporcionar una matriz de bytes. Las instrucciones tienen restricciones computacionales, por lo que los programas on-chain deben optimizarse para usar un pequeño número de unidades computacionales o para dividir operaciones costosas en múltiples instrucciones.

  1. Programas nativos: Son programas que proporcionan las funcionalidades necesarias para la validación de nodos. El más notable es el Programa del Sistema, que se encarga de gestionar la creación de nuevas cuentas y la transferencia de SOL entre dos cuentas.
  2. Programas SPL: Estos definen una serie de actividades on-chain, incluida la creación, intercambio y préstamo de tokens, así como la creación de grupos de participación y el mantenimiento de servicios de resolución de nombres de dominio on-chain. Entre estos, el Programa de token SPL se utiliza para operaciones de token, mientras que el Programa de cuenta de token asociado se usa comúnmente para escribir otros programas personalizados.

Tú los llamas contratos inteligentes, yo los llamo programas on-chain. Términos diferentes, pero ambos se refieren al código que se ejecuta en la cadena de bloques. Al igual que Alice, Bob y John son todos nombres, y sus cualidades reales deben ser evaluadas por otros aspectos.

Modelo de cuenta, desacoplamiento de datos:

Al igual que Ethereum, Solana también es una cadena de bloques basada en un modelo cuenta, pero Solana proporciona un modelo de cuenta diferente al Ethereum y almacena datos de diferentes maneras.

En Solana, las cuentas pueden guardar información de billetera y otros datos. Los campos definidos por la cuenta incluyen Lamports (saldo de la cuenta), Propietario (propietario cuenta), Ejecutable (si se trata de un cuenta ejecutable) y Datos (datos almacenados en el cuenta). Cada cuenta designa un programa como su propietario para distinguir para qué programa se usa la cuenta como almacén de estado. Estos programas on-chain son de solo lectura o sin estado: la cuenta del programa (cuenta ejecutable) solo almacena el bytecode BPF y no almacena ningún estado. El programa almacenará el estado en otras cuentas independientes (cuentas no ejecutables). Es decir, el modelo de programación de Solana desacopla el código y los datos.

El Ethereum cuenta es principalmente una referencia al estado EVM. Su contrato inteligente no solo tiene lógica de código, sino que también necesita almacenar datos de usuario. Esto a menudo se considera un defecto de diseño que queda de la historia de la EVM.

¡No subestimes esta distinción! Solana contratos inteligentes son fundamentalmente más difíciles de atacar en comparación con las cadenas de bloques con un modelo de programación acoplado como Ethereum.

En Ethereum, un "propietario" de contrato inteligente es una variable global que se corresponde uno a uno con el contrato inteligente. Por lo tanto, llamar a una función podría cambiar directamente el "propietario" del contrato.

En Solana, sin embargo, el "propietario" de un contrato inteligente son los datos asociados con una cuenta en lugar de una variable global. Una cuenta puede tener varios propietarios, en lugar de una asociación uno a uno. Para que un atacante explote una vulnerabilidad de seguridad en un contrato inteligente, no solo necesita encontrar la función problemática, sino que también debe preparar las cuentas "correctas" para llamar a esa función. Este paso no es fácil porque Solana contratos inteligentes normalmente implican varias cuentas de entrada y administran sus relaciones a través de restricciones (como account1.owner == account2.key). El proceso desde "preparar las cuentas correctas" hasta "lanzar un ataque" le da al personal de monitoreo de seguridad tiempo suficiente para detectar de manera proactiva transacciones sospechosas relacionadas con la creación de cuentas "falsas" asociadas con el contrato inteligente antes de que ocurra el ataque.

Ethereum contratos inteligentes son como una bóveda que utiliza una contraseña única; una vez que obtienes esta contraseña, obtienes la propiedad completa. Por el contrario, los contratos inteligentes de Solana son como una bóveda con muchas contraseñas. Para obtener acceso, no solo debe obtener las contraseñas, sino también averiguar qué contraseña corresponde a qué cerradura abrirla.

Lenguaje de programación

Rust es el lenguaje de programación principal para desarrollar contratos inteligentes en Solana. Debido a sus características de rendimiento y seguridad, es adecuado para el entorno de alto riesgo de blockchain y contratos inteligentes. Solana también soporta C, C++, y (muy inusualmente) otros lenguajes. El SDK oficial para Rust y C se proporciona para soportar el desarrollo de programas on-chain. Los desarrolladores pueden usar herramientas para compilar el programa en el bytecode Berkley Packet Filter (BPF) (el archivo tiene una extensión .so), luego implementarlo en la cadena Solana y ejecutar la lógica del contrato inteligente a través del tiempo de ejecución del contrato inteligente paralelo Sealevel.

Dado que el lenguaje Rust en sí es difícil de comenzar y no está personalizado para el desarrollo de blockchain, muchos requisitos requieren reinventar la rueda y el código redundante. (Muchos proyectos en producción utilizan el marco Anchor creado por el cocreador de Backpack, Armani, para simplificar el desarrollo) Muchos lenguajes de programación de nueva creación dedicados al desarrollo de blockchain se basan en Rust, como Cairo (Starknet), Move (Sui, Aptos).

Muchos proyectos en producción utilizan el marco Anchor

Ethereum contratos inteligentes se desarrollan principalmente en el lenguaje Solidity (la sintaxis es similar a la de javascript y el archivo de código tiene una extensión .sol). Debido a la sintaxis relativamente simple y las herramientas de desarrollo más maduras (Hardhat framework, Remix IDE ...), generalmente pensamos que la experiencia de desarrollo de Ethereum es más simple y refrescante, mientras que el desarrollo de Solana es más difícil de comenzar. Entonces, aunque Solana es muy popular ahora, de hecho, el número de desarrolladores en Ethereum sigue siendo mucho mayor que Solana.

Bajo ciertas condiciones de la carretera, los mejores autos de carreras no son tan rápidos como los autos modificados. Rust es como un auto de carreras de alto nivel, que garantiza efectivamente el rendimiento y la seguridad de Solana. Sin embargo, no está diseñado para desarrollar esta pista para programas on-chain, sino que provoca un aumento en la dificultad de conducción (desarrollo). El uso de una cadena pública basada en Rust y el desarrollo de un lenguaje personalizado para la cadena equivale a modificar el coche de carreras para hacerlo más adecuado a las condiciones de la carretera. Solana está en desventaja aquí.

Resumen

El modelo de programación de contratos inteligentes de Solana es innovador. Ofrece un enfoque sin estado para el desarrollo de contratos inteligentes, utilizando Rust como lenguaje de programación principal y una arquitectura que separa la lógica del estado. Esto proporciona a los desarrolladores un entorno robusto para construir e implementar contratos inteligentes, lo que garantiza la seguridad y el rendimiento, aunque plantea una mayor dificultad de desarrollo. Solana se centra en el alto rendimiento, el bajo costo y la escalabilidad, lo que la convierte en la opción ideal para los desarrolladores que actualmente buscan crear dApps de alto rendimiento.

Disclaimer:

  1. Este artículo es una reimpresión de [Foresight News]. Todos los derechos de autor pertenecen al autor original [Alex Liu]. Si hay objeciones a esta reimpresión, póngase en contacto con el equipo de Gate Learn, y ellos se encargarán de ello con prontitud.
  2. Descargo de responsabilidad: Los puntos de vista y opiniones expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.

Exploración Solana Contrato inteligente modelo de programación

Principiante6/11/2024, 5:47:31 AM
Solana es una plataforma blockchain de alto rendimiento diseñada para soportar dApps. Es conocido por su velocidad y escalabilidad, lograda a través de un mecanismo de consenso y un diseño arquitectónico únicos. Este artículo utiliza Ethereum como objeto de comparación para presentar brevemente las características del modelo de programación de contratos inteligentes de Solana.

Reenviar el título original '小学生也能看懂!Solana 的编程模型,究竟和 ETH 有啥区别?'

Solana es una plataforma blockchain de alto rendimiento diseñada para soportar dApps. Es conocido por su velocidad y escalabilidad, lograda a través de un mecanismo de consenso y un diseño arquitectónico únicos. Este artículo utiliza Ethereum como objeto de comparación para presentar brevemente las características del modelo de programación de contratos inteligentes de Solana.

Contratos inteligentes y programas on-chain:

Los programas que se ejecutan en Ethereum se denominan contratos inteligentes, una serie de códigos (función) ubicados en una dirección específica en Ethereum y data(state). (Oh, el código y los datos están acoplados) Los contratos inteligentes también son cuentas de Ethereum, que se llaman cuentas de contrato. Tienen saldos y pueden convertirse en objetos de transacción, pero no pueden ser controlados por humanos y se despliegan en la red para ejecutarse como programas.

Los códigos ejecutables que se ejecutan en Solana se denominan programas on-chain y pueden interpretar las instrucciones enviadas en cada transacción. Estos programas pueden ser implementados directamente en el núcleo de la red como programas nativos, o publicados por cualquier persona como programas SPL.

  1. Instrucciones: Las instrucciones son términos únicos para programas en la cadena Solana. Los programas on-chain se componen de instrucciones. Son las unidades más pequeñas que realizan operaciones específicas: se incluyen una o más instrucciones en cada transacción de Solana. Las instrucciones especifican las acciones que se realizarán, incluida la llamada a un programa on-chain específico, pasar una cuenta, una lista de entradas y proporcionar una matriz de bytes. Las instrucciones tienen restricciones computacionales, por lo que los programas on-chain deben optimizarse para usar un pequeño número de unidades computacionales o para dividir operaciones costosas en múltiples instrucciones.

  1. Programas nativos: Son programas que proporcionan las funcionalidades necesarias para la validación de nodos. El más notable es el Programa del Sistema, que se encarga de gestionar la creación de nuevas cuentas y la transferencia de SOL entre dos cuentas.
  2. Programas SPL: Estos definen una serie de actividades on-chain, incluida la creación, intercambio y préstamo de tokens, así como la creación de grupos de participación y el mantenimiento de servicios de resolución de nombres de dominio on-chain. Entre estos, el Programa de token SPL se utiliza para operaciones de token, mientras que el Programa de cuenta de token asociado se usa comúnmente para escribir otros programas personalizados.

Tú los llamas contratos inteligentes, yo los llamo programas on-chain. Términos diferentes, pero ambos se refieren al código que se ejecuta en la cadena de bloques. Al igual que Alice, Bob y John son todos nombres, y sus cualidades reales deben ser evaluadas por otros aspectos.

Modelo de cuenta, desacoplamiento de datos:

Al igual que Ethereum, Solana también es una cadena de bloques basada en un modelo cuenta, pero Solana proporciona un modelo de cuenta diferente al Ethereum y almacena datos de diferentes maneras.

En Solana, las cuentas pueden guardar información de billetera y otros datos. Los campos definidos por la cuenta incluyen Lamports (saldo de la cuenta), Propietario (propietario cuenta), Ejecutable (si se trata de un cuenta ejecutable) y Datos (datos almacenados en el cuenta). Cada cuenta designa un programa como su propietario para distinguir para qué programa se usa la cuenta como almacén de estado. Estos programas on-chain son de solo lectura o sin estado: la cuenta del programa (cuenta ejecutable) solo almacena el bytecode BPF y no almacena ningún estado. El programa almacenará el estado en otras cuentas independientes (cuentas no ejecutables). Es decir, el modelo de programación de Solana desacopla el código y los datos.

El Ethereum cuenta es principalmente una referencia al estado EVM. Su contrato inteligente no solo tiene lógica de código, sino que también necesita almacenar datos de usuario. Esto a menudo se considera un defecto de diseño que queda de la historia de la EVM.

¡No subestimes esta distinción! Solana contratos inteligentes son fundamentalmente más difíciles de atacar en comparación con las cadenas de bloques con un modelo de programación acoplado como Ethereum.

En Ethereum, un "propietario" de contrato inteligente es una variable global que se corresponde uno a uno con el contrato inteligente. Por lo tanto, llamar a una función podría cambiar directamente el "propietario" del contrato.

En Solana, sin embargo, el "propietario" de un contrato inteligente son los datos asociados con una cuenta en lugar de una variable global. Una cuenta puede tener varios propietarios, en lugar de una asociación uno a uno. Para que un atacante explote una vulnerabilidad de seguridad en un contrato inteligente, no solo necesita encontrar la función problemática, sino que también debe preparar las cuentas "correctas" para llamar a esa función. Este paso no es fácil porque Solana contratos inteligentes normalmente implican varias cuentas de entrada y administran sus relaciones a través de restricciones (como account1.owner == account2.key). El proceso desde "preparar las cuentas correctas" hasta "lanzar un ataque" le da al personal de monitoreo de seguridad tiempo suficiente para detectar de manera proactiva transacciones sospechosas relacionadas con la creación de cuentas "falsas" asociadas con el contrato inteligente antes de que ocurra el ataque.

Ethereum contratos inteligentes son como una bóveda que utiliza una contraseña única; una vez que obtienes esta contraseña, obtienes la propiedad completa. Por el contrario, los contratos inteligentes de Solana son como una bóveda con muchas contraseñas. Para obtener acceso, no solo debe obtener las contraseñas, sino también averiguar qué contraseña corresponde a qué cerradura abrirla.

Lenguaje de programación

Rust es el lenguaje de programación principal para desarrollar contratos inteligentes en Solana. Debido a sus características de rendimiento y seguridad, es adecuado para el entorno de alto riesgo de blockchain y contratos inteligentes. Solana también soporta C, C++, y (muy inusualmente) otros lenguajes. El SDK oficial para Rust y C se proporciona para soportar el desarrollo de programas on-chain. Los desarrolladores pueden usar herramientas para compilar el programa en el bytecode Berkley Packet Filter (BPF) (el archivo tiene una extensión .so), luego implementarlo en la cadena Solana y ejecutar la lógica del contrato inteligente a través del tiempo de ejecución del contrato inteligente paralelo Sealevel.

Dado que el lenguaje Rust en sí es difícil de comenzar y no está personalizado para el desarrollo de blockchain, muchos requisitos requieren reinventar la rueda y el código redundante. (Muchos proyectos en producción utilizan el marco Anchor creado por el cocreador de Backpack, Armani, para simplificar el desarrollo) Muchos lenguajes de programación de nueva creación dedicados al desarrollo de blockchain se basan en Rust, como Cairo (Starknet), Move (Sui, Aptos).

Muchos proyectos en producción utilizan el marco Anchor

Ethereum contratos inteligentes se desarrollan principalmente en el lenguaje Solidity (la sintaxis es similar a la de javascript y el archivo de código tiene una extensión .sol). Debido a la sintaxis relativamente simple y las herramientas de desarrollo más maduras (Hardhat framework, Remix IDE ...), generalmente pensamos que la experiencia de desarrollo de Ethereum es más simple y refrescante, mientras que el desarrollo de Solana es más difícil de comenzar. Entonces, aunque Solana es muy popular ahora, de hecho, el número de desarrolladores en Ethereum sigue siendo mucho mayor que Solana.

Bajo ciertas condiciones de la carretera, los mejores autos de carreras no son tan rápidos como los autos modificados. Rust es como un auto de carreras de alto nivel, que garantiza efectivamente el rendimiento y la seguridad de Solana. Sin embargo, no está diseñado para desarrollar esta pista para programas on-chain, sino que provoca un aumento en la dificultad de conducción (desarrollo). El uso de una cadena pública basada en Rust y el desarrollo de un lenguaje personalizado para la cadena equivale a modificar el coche de carreras para hacerlo más adecuado a las condiciones de la carretera. Solana está en desventaja aquí.

Resumen

El modelo de programación de contratos inteligentes de Solana es innovador. Ofrece un enfoque sin estado para el desarrollo de contratos inteligentes, utilizando Rust como lenguaje de programación principal y una arquitectura que separa la lógica del estado. Esto proporciona a los desarrolladores un entorno robusto para construir e implementar contratos inteligentes, lo que garantiza la seguridad y el rendimiento, aunque plantea una mayor dificultad de desarrollo. Solana se centra en el alto rendimiento, el bajo costo y la escalabilidad, lo que la convierte en la opción ideal para los desarrolladores que actualmente buscan crear dApps de alto rendimiento.

Disclaimer:

  1. Este artículo es una reimpresión de [Foresight News]. Todos los derechos de autor pertenecen al autor original [Alex Liu]. Si hay objeciones a esta reimpresión, póngase en contacto con el equipo de Gate Learn, y ellos se encargarán de ello con prontitud.
  2. Descargo de responsabilidad: Los puntos de vista y opiniones expresados en este artículo son únicamente los del autor y no constituyen ningún consejo de inversión.
  3. Las traducciones del artículo a otros idiomas son realizadas por el equipo de Gate Learn. A menos que se mencione, está prohibido copiar, distribuir o plagiar los artículos traducidos.
Empieza ahora
¡Regístrate y recibe un bono de
$100
!