Una breve descripción del modelo de programación de Solana: ¿Cuál es la diferencia con ETH?
Autor original: Foresight News, Alex Liu
Solana es una plataforma blockchain de alto rendimiento diseñada para soportar dApps, conocida por su velocidad y escalabilidad, que se logra 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, programas en cadena:
Los programas que se ejecutan en Ethereum se denominan contratos inteligentes, que son una serie de códigos (funciones) y datos (estado) ubicados en una dirección específica en Ethereum. (Oh no, el código y los datos están acoplados) Los contratos inteligentes también son cuentas de Ethereum, llamadas cuentas de contrato, que tienen saldos y se pueden negociar, pero no pueden ser manipuladas por humanos y se implementan en la red para ejecutarse como programas.
El código ejecutable que se ejecuta en Solana se denomina programa en cadena y que interpreta las instrucciones enviadas en cada transacción. Estos programas pueden implementarse directamente en el núcleo de la red como programas nativos o pueden ser publicados por cualquier persona como programas SPL.
- Instrucciones: Las instrucciones son un término especial para los programas en cadena de Solana. Los programas en cadena están compuestos de instrucciones, que son la unidad más pequeña para realizar operaciones específicas: cada transacción de Solana contiene una o más instrucciones. Las instrucciones especifican las operaciones que se realizarán, incluida la llamada a un programa en cadena específico, el paso de cuentas, listas de entrada y el suministro de matrices de bytes. Las instrucciones tienen límites computacionales, por lo que los programas en cadena deben optimizarse para usar una pequeña cantidad de unidades computacionales o dividir operaciones costosas en múltiples instrucciones.
- Programa nativo: programa nativo que proporciona las funciones requeridas por un nodo de verificación. El más famoso de ellos es el Programa de sistema, que se encarga de gestionar la creación de nuevas cuentas y la transferencia de SOL entre dos cuentas.
- Programa SPL: define una serie de actividades en cadena, incluyendo la creación, intercambio, préstamo, creación de grupos de participación, mantenimiento de servicios de resolución de nombres de dominio en cadena, etc. Entre ellos, el Programa de tokens SPL se utiliza para operaciones de tokens, mientras que el Programa de cuentas de tokens asociadas se utiliza a menudo para escribir otros programas personalizados.
Tú lo llamas contrato inteligente, yo lo llamo programa en cadena. Cada uno tiene términos diferentes, pero todos se refieren al código que se ejecuta en la cadena de bloques. Zhang San, Li Si y Wang Mazi son nombres de personas. Su calidad aún necesita ser examinada en otros aspectos.
Modelo de cuenta y disociación de datos:
Al igual que Ethereum, Solana también es una cadena de bloques basada en un modelo de cuenta, pero Solana proporciona un modelo de cuenta diferente al de Ethereum y almacena los datos de una manera diferente.
En Solana, las cuentas pueden almacenar información de la billetera y otros datos. Los campos definidos por una cuenta incluyen Lamports (saldo de la cuenta), Owner (propietario de la cuenta), Executable (si es una cuenta ejecutable) y Data (datos almacenados en la cuenta). Cada cuenta especifica un programa como su propietario para distinguir qué programa se utiliza como almacenamiento de estado de la cuenta. Estos programas en cadena son de solo lectura o sin estado: las cuentas de programa (cuentas ejecutables) solo almacenan el código de bytes BPF y no almacenan 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.
Las cuentas de Ethereum son principalmente referencias a estados de EVM y sus contratos inteligentes contienen tanto la lógica del código como la necesidad de almacenar datos de los usuarios. Esto generalmente se considera un defecto de diseño heredado de la historia de EVM.
¡No subestimes esta distinción! Los contratos inteligentes de Solana son fundamentalmente más difíciles de atacar que las cadenas de bloques con modelos de programación acoplados como Ethereum:
En Ethereum, el propietario del contrato inteligente es una variable global que corresponde a cada contrato inteligente de forma individual. Por lo tanto, al llamar a una función se puede cambiar directamente el propietario del contrato.
En Solana, el propietario de un contrato inteligente son los datos asociados a una cuenta, no 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 necesita preparar la cuenta correcta para llamar a la función. Este paso no es fácil porque los contratos inteligentes de Solana generalmente involucran múltiples cuentas de entrada y administran la relación entre ellas a través de restricciones (como `cuenta 1.propietario==cuenta 2.clave`). El proceso desde la preparación de la cuenta correcta hasta el lanzamiento de un ataque es suficiente para que los monitores de seguridad detecten de manera proactiva transacciones sospechosas que crean cuentas falsas asociadas con contratos inteligentes antes de un ataque.
El contrato inteligente de Ethereum es como una caja fuerte con una contraseña única. Siempre que obtengas la contraseña, puedes obtener la propiedad total. Solana es una caja fuerte con muchas contraseñas, pero para obtener permiso, no solo tienes que encontrar una manera de obtener la contraseña, sino también averiguar el número correspondiente a la contraseña antes de poder abrir la cerradura.
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 entornos de alto riesgo de cadenas de bloques y contratos inteligentes. Solana también admite C, C++ y otros lenguajes (muy poco comunes). Se proporcionan SDK oficiales para Rust y C para respaldar el desarrollo de programas en cadena. Los desarrolladores pueden usar herramientas para compilar programas en código de bytes de Berkley Packet Filter (BPF) (archivos con una extensión .so), luego implementarlos en la cadena Solana y ejecutar la lógica del contrato inteligente a través del entorno de ejecución de contratos inteligentes paralelos Sealevel.
Dado que el lenguaje Rust en sí es difícil de aprender y no está personalizado para el desarrollo de blockchain, muchos requisitos requieren reinvención y código redundante. (Muchos proyectos en producción utilizan el marco Anchor creado por el cofundador de Backpack, Armani, para simplificar el desarrollo). Muchos lenguajes de programación recientemente creados dedicados al desarrollo de blockchain se basan en Rust, como Cairo (Starknet) y Move (Sui, Aptos).
Muchos proyectos en producción utilizan el marco Anchor
Los contratos inteligentes de Ethereum se desarrollan principalmente en 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 a las herramientas de desarrollo más maduras (el framework Hardhat, Remix IDE, etc.), generalmente pensamos que la experiencia de desarrollo de Ethereum es más simple y refrescante, mientras que el desarrollo de Solana es difícil de comenzar. Entonces, aunque Solana es muy popular ahora, de hecho, el número de desarrolladores de Ethereum sigue siendo mucho mayor que el de Solana.
En determinadas condiciones de la carretera, un coche de carreras de alto nivel no puede correr tan rápido como un coche modificado. Rust es como un coche de carreras de alto nivel, lo que garantiza eficazmente el rendimiento y la seguridad de Solana. Sin embargo, no está diseñado para el desarrollo de programas en cadena, lo que dificulta la conducción (desarrollo). El uso de una cadena pública basada en Rust y la personalización del lenguaje para el desarrollo en cadena es equivalente a modificar el coche de carreras para que se adapte mejor a las condiciones de la carretera. Solana está en desventaja en este sentido.
Resumir
El modelo de programación de contratos inteligentes de Solana es innovador. Proporciona un método de desarrollo de contratos inteligentes sin estado, utiliza Rust como lenguaje de programación principal y una arquitectura que separa la lógica del estado, lo que proporciona un entorno potente para que los desarrolladores creen e implementen contratos inteligentes, lo que garantiza la seguridad y el rendimiento, pero el desarrollo es difícil. Solana se centra en un alto rendimiento, un bajo coste y una escalabilidad, y sigue siendo una opción ideal para los desarrolladores que buscan crear aplicaciones descentralizadas de alto rendimiento.
Enlaces de referencia
https://solana.com/docs
https://ethereum.org/en/developers/docs
https://www.anchor-lang.com/
Este artículo proviene de Internet: Una breve descripción del modelo de programación de Solana: ¿Cuál es la diferencia con ETH?
Autor original: @Web3 Mario Introducción: Ayer, por accidente, me enteré por un amigo de que había obtenido un considerable retorno de la inversión en el campo de las inscripciones de BTC, lo que despertó profundamente en el autor la mentalidad de dar un paso al vacío. Estuve ansioso durante dos días consecutivos, lo cual fue realmente vergonzoso. Recordando que la arquitectura técnica de Ordinals acababa de ser lanzada anteriormente, el autor estudió los documentos relevantes, pero como desarrollador, estaba bastante insatisfecho con este camino técnico. En ese momento, juzgué que esto era simplemente una inversión de la tecnología de cifrado, porque su concepto de diseño parecía ser similar a un proyecto de altcoin distante Color Coin, es decir, cómo usar la arquitectura técnica de BTC para emitir algunos tokens independientes, pero la diferencia es que Ordinals no…