Intercambio de Ethereum Intercambio de Ethereum
Ctrl+D Intercambio de Ethereum
ads
Casa > DAI > Info

¿Cómo actualizar su contrato a Solidity 0.8?

Author:

Time:

Nos estamos acercando al lanzamiento de Solidity 1.0 (a menos que 0.10 después de 0.9, por supuesto). ¡Solidity 0.8 está disponible solo 5 meses después de 0.7!

La comunidad Denglian está traduciendo sincrónicamente documentos de Solidity 0.8

Hoy discutiremos cómo actualizar la migración del contrato a la versión 0.8...  

Echemos un vistazo a dos grandes funciones nuevas: SafeMath integrado y el nuevo manejo de errores.

Así es, ya no necesita importar Openzeppelin SafeMath. Lo mejor de todo es que no necesita hacer nada para activar la integración SafeMath de Solidity. Simplemente escriba a+b, y la transacción se revertirá automáticamente cuando se desborde.

Es posible que vea el siguiente mensaje de error en herramientas como Remix, porque 0.8 aún no es totalmente compatible. Como el desbordamiento no ha dado la razón exacta.

 transact to Solidity08.test errored: VM error: revert. revert Pero esto debería cambiar en el futuro.

¿Qué pasa si realmente quieres que tu código se desborde? ¿Todavía muy preocupado por las tarifas de gas?

El Comité de Servicios Financieros de la Cámara de Representantes de EE. UU.: Investigación exhaustiva sobre cómo regular mejor la industria del cifrado: Golden Finance informó que, según las noticias oficiales de Twitter, el Comité de Servicios Financieros de la Cámara de Representantes de EE. UU. está prestando atención al impacto de las criptomonedas como una inversión a largo plazo y está realizando una investigación en profundidad sobre cómo regular mejor la industria de las criptomonedas.Regular esta industria de rápido crecimiento. [2021/7/1 0:18:18]

Luego deshabilite SafeMath ajustando la declaración en forma no marcada:

contract Solidity08 {    function test() external pure devoluciones(uint256) {        /       /              ;Use SafeMath  de forma predeterminada, y recurra         uint256 x = 0;         x--;      ;   return x;    }}contrato Solidity08 {      ;función prueba() externo puro devoluciones( uint256) {        // No utilice SafeMath, devuelva type(uint256) .max      ;  uint256 x = 0;         desmarcado { x-- ; }         return x;    }} 2. Los códigos de operación no válidos se reemplazan por revert resultarán en la ejecución del código de operación INVÁLIDO. El problema con este código de operación es que consume todo el gas restante. Esto es claramente malo e innecesario. ¿Por qué desperdiciar Gas y donarlo a mineros?

"Lobo de Wall Street": Estudiando cómo ingresar al mercado del cifrado a "gran escala": el multimillonario estadounidense y "Lobo de Wall Street" Carl Icahn dijo que está estudiando cómo ingresar al mercado del cifrado a "gran escala". (Diez de oro) [2021/5/27 22:48:08]

Para más detalles, vea la diferencia entre revertir y afirmar aquí.

Solidity ahora usa el código de operación de reversión. Para distinguir entre una reversión regular y un error interno del sistema (pánico), Solidity agrega un identificador antes de devolver los datos:

Los errores de reversión regulares comienzan con los primeros cuatro bytes de keccak256 (Error (cadena)), que equivale a 0x08c379a0.

**Error interno del sistema (Panic)** comienza con los primeros cuatro bytes de keccak256(Panic(uint256)), que es igual a 0x4e487b71.

Panic tiene un indicador de error adicional. Los pánicos disponibles actualmente son:

0x01: usar activo;

0x11: desbordamiento de SafeMath.

0x12: dividir por 0.

0x21: conversión a tipo de enumeración inexistente.

En vivo | Economista digital independiente Liu Zhiyi: El núcleo de la economía de la cadena de bloques radica en cómo establecer un nuevo orden: Informe en vivo de Jinse Finance, en la 6.ª Conferencia de Empresarios de China Cumbre de Tecnología y Aplicación de la Cadena de Bloques celebrada hoy, un economista digital independiente, Liu Zhiyi, mencionó que el núcleo del pensamiento blockchain es la información, y el núcleo de la economía blockchain radica en cómo establecer un nuevo orden. Él cree que debemos establecer una comprensión de la naturaleza de la evolución del pensamiento, de la relación entre la evolución tecnológica y la civilización, y de la naturaleza de la revolución de la tecnología de la información. [2018/7/19]

0x22: error de codificación de matriz de bytes de almacenamiento.

0x31: pop() en una matriz vacía.

0x32: Excepción de sobrelongitud de índice.

0x41: asignación de demasiada memoria o creación de una matriz demasiado grande.

0x51: Llamada a una variable de tipo función intrínseca no inicializada.

Consulte la nueva sección de manejo de errores en los documentos para obtener más detalles aquí.

La migración debería ser bastante sencilla en la mayoría de los casos. Solo en algunos casos puede resultarle más difícil realizar conversiones de tipos extraños.

Los cambios que debe realizar para la migración incluyen:

ABIEncoderV2 ahora se activa automáticamente de forma predeterminada. A partir de 0.6, Encoder ya no es experimental, pero por razones heredadas, se conserva el nombre pragma experimental. Ahora no necesita agregar esta línea.

Mercado | Redemption dijo moneda: Es mejor no comprar WFEE, no importa lo bueno que sea el mundo exterior: Según el análisis de Redemption, se puede ver el gráfico de tendencia de WFEE. Los puntos cayeron 7 veces. No importa cómo sea el anuncio oficial, o cuán positivo sea el mundo exterior, la moneda no tiene una gestión de valor de mercado, si la hay, no caerá tan mal y no se negociará lateralmente por tanto tiempo. Por lo tanto, esta moneda no debe comprarse. No hay línea de fondo en el círculo de divisas, y mucho menos un límite inferior. En términos de análisis técnico, la compra no es fuerte, pero la venta es casi inexistente. Sin embargo, no hay órdenes de venta por el momento, y la parte del proyecto todavía tiene monedas en la mano. Pero si no hay compra, realmente no habrá más. [2018/7/16]

Elimine cualquier Openzeppelin SafeMath, ya no lo necesita.

Es posible que se requieran algunas conversiones de tipo.

msg.sender y tx.origin no se pagan por defecto. Cambie msg.sender.transfer a payable(msg.sender).transfer.

Las conversiones de tipo solo se permiten si coinciden con el tipo dado, por lo que uint256(-1) ya no funcionará. Utilice type(uint256).max en su lugar.

Las conversiones de tipo están limitadas en algunos casos cuando el signo se cambia varias veces, porque el orden de las conversiones de tipo puede tener un efecto en el resultado. Ahora verá un error tipo TypeError. No se permite la conversión de tipo explícito de int256 a bytes32, primero debe convertir manualmente a uint256.

Yang Dong: Cómo proteger a los inversores en la industria de la cadena de bloques y la moneda digital: Yang Dong, profesor de la Universidad Renmin de China, habló sobre la protección de la industria de la cadena de bloques y los inversores de la moneda digital en la comunidad de la cadena de bloques de las tres en punto: 1. Primero , debe controlar la fuente, comenzar desde el lado de los activos y formular estándares relevantes; 2. Debe haber un cierto umbral para que los inversores ingresen al mercado; 3. Llevar a cabo la gestión de idoneidad del inversor; 4. Desempeñar el papel de protección del inversor. departamento del Banco y los Tres Comités y fortalecer la supervisión del comportamiento 5. Mejorar el mecanismo de resolución de múltiples disputas para los inversionistas 6. Considerar el uso de la tecnología blockchain para establecer una ecología de resolución de disputas, protección y educación, para lograr una solución rastreable y creíble mecanismo de resolución de disputas, para cambiar el modelo tradicional de resolución de disputas y darse cuenta de que "La alquimia tiene su propia ley". [2018/3/7]

Combinación de modificaciones

myContract.functionCall{gas: 10000}{value: 1 ether }() se cambia a:

myContract.functionCall{gas: 10000, value: 1 ether}().

Cambie x**y**z a (x**y)**z porque el orden predeterminado de ejecución ha cambiado.

Cambie el tipo de byte a byte1 .

Omití algunos detalles, para ver el registro de cambios completo y los detalles de todos los cambios, consulte los documentos aquí.

Fuente: https://soliditydeveloper.com/solidity-0.8

Proyecto de traducción pionero: https://github.com/lbc-team/Pioneer

Equipo de traducción: https://learnblockchain.cn/people/412

Pequeño oso: https://learnblockchain.cn/people/15

Solidity0.8: https://blog.soliditylang.org/2020/12/16/solidity-v0.8.0-release-announcement/

Versión 0.7: https://blog.soliditylang.org/2020/07/28/solidity-v0.7.0-release-announcement/

Documentación para Solidity 0.8: https://learnblockchain.cn/docs/solidity/

SafeMath: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/math/SafeMath.sol

Aquí: https://medium.com/blockchannel/the-use-of-revert-assert-and-require-in-solidity-and-the-new-revert-opcode-in-the-evm-1a3a7990e06e

Aquí: https://docs.soliditylang.org/en/latest/control-structures.html#panic-via-assert-and-error-via-require

Aquí: https://docs.soliditylang.org/en/latest/080-breaking-changes.html

Red celular: https://www.cellnetwork.io/?utm_souce=learnblockchain

Traducción de: Denglian Translation Project

Traductor: Equipo de traducción

Corrección: Tiny Bear

Tags:

DAI
Ethereum alcanza un nuevo máximo, DeFi está en auge, pero la expansión de Layer2 es inminente.

A partir de las 17:00 horas del 3 de febrero, el mercado QKL123 mostró que Ethereum superó los 1500 dólares estadounidenses, alcanzando un máximo de 1568,42 dólares estadounidenses en 24 horas.

1.Mercado nocturno de 30: la tendencia a corto plazo sigue vigente.

El artículo es una contribución de Biquan Beiming, columnista de Jinse Finance and Economics, y sus comentarios solo representan sus puntos de vista personales.

Golden Outpost | Musk vuelve a apoyar a Dogecoin: Dogecoin es la criptomoneda de la gente

Elon Musk es la figura más popular en los círculos tecnológicos y financieros de hoy. Musk ha hablado sobre la industria de las criptomonedas varias veces recientemente.A las 4 a. m. del 4 de febrero (hora de EE. UU.

¿Cómo actualizar su contrato a Solidity 0.8?

Nos estamos acercando al lanzamiento de Solidity 1.0 (a menos que 0.10 después de 0.9.

Banco de Pagos Internacionales: Tercera Encuesta Mundial sobre Monedas Digitales de Bancos Centrales

Banco de Pagos Internacionales: La mayoría de los inversores minoristas ingresan al mercado cuando Bitcoin está en $ 20,000: Noticias del 16 de noviembre.

Gatos cifrados y tarjetas de estrellas Son los fabricantes de NFT de "precio altísimo"

“Lo primero desde el nacimiento de los seres humanos es la colección.” En diciembre de 2018, en la Conferencia Mundial de Conferencias TED, el fundador de Dapper Labs, Roham Gharegozlou.

ads