coinbase

Nadir Akhtar, Coinbase: El estándar ERC-20 se ha convertido en una forma popular de crear activos digitales y asignar derechos de voto de protocolo en la cadena de bloques Ethereum. Al evaluar un token ERC-20 para su inclusión en la lista, Coinbase realiza una evaluación de seguridad que busca principalmente estas cuatro cualidades:

  • Código fuente verificado
  • Uso de bibliotecas estándar de la industria
  • Alcance limitado para roles privilegiados
  • Diseño modular simple

Introducción

Para proteger a los usuarios, Coinbase realiza una revisión de seguridad exhaustiva de cada token antes de que pueda incluirse en la lista. Una de las categorías de tokens más solicitadas es un estándar de contrato inteligente de Ethereum conocido como » ERC-20 «.

Es posible que se esté preguntando: «¿Qué tan complicadas pueden llegar a ser realmente estos tokens?» Alerta de spoiler: mucho. 

Aunque el estándar ERC-20 es bastante simple, la diversidad de implementaciones de ERC-20 es notable, desde simples contratos individuales hasta ecosistemas completos.

A continuación, describimos un conjunto de pautas de seguridad que recomendamos para todos los tokens ERC-20. 

Estas cualidades dan a los titulares de tokens confianza en la propiedad de su token y hacen que los intercambios como Coinbase tengan más probabilidades de incluir ese token. Si no se siguen estas mejores prácticas, es posible que Coinbase no pueda listar su token o que su lista se retrase.

Cualidades fundamentales ERC-20

Estas cualidades son fundamentales para cualquier proyecto de contrato inteligente seguro:

Código fuente verificado

Este es el paso más importante para obtener un token en la lista. Sin acceso al código fuente, un auditor o un ingeniero de seguridad no puede analizar fácilmente el comportamiento del token, lo que excluye las revisiones de alta confianza. Verificar el código, una acción de bajo esfuerzo para un emisor de activos, es el paso de mayor apalancamiento para obtener un token en la lista.

Para verificar efectivamente el código del token:

  • Cargue el código fuente de todos los contratos inteligentes en una plataforma confiable (por ejemplo, Etherscan ).
  • Agrega el código a un repositorio que se pueda compartir fácilmente, como en GitHub, especialmente si aún no está implementado.
  • Si el token se puede actualizar, utilice distintas versiones para comunicar el estado del token en cada actualización.

Uso de bibliotecas estándar de la industria

Al igual que el adagio de «no lanzar su propia criptografía», evite escribir código de contrato inteligente desde cero tanto como sea posible. Un solo desarrollador o equipo puede, independientemente de su experiencia, perder un detalle crucial, comprometiendo la integridad del token. En comparación, los estándares de contratos inteligentes de código abierto populares y bien examinados se examinan y prueban rigurosamente, lo que los convierte en las implementaciones conocidas más seguras.

En lugar de construir un token desde cero:

Alcance limitado para roles privilegiados

Los tokens suelen tener roles privilegiados, también conocidos como superusuarios, a menudo denominados «propietario», «administrador» o «controlador». En algunos contratos inteligentes, estos roles pueden ejercer un poder significativo, como pausar transacciones, modificar saldos o cambiar por completo la lógica del token. Los privilegios de superusuario amenazan nuestra capacidad para custodiar de forma segura los activos de los clientes, lo que reduce la probabilidad de incluir el token en Coinbase.

Para limitar roles privilegiados:

  • No permita que ningún rol congele, queme o modifique los fondos de los usuarios sin permiso.
  • Si es posible, utilice un patrón de actualización en el que el usuario debe aceptar las actualizaciones de token en lugar de permitir que el rol privilegiado cambie unilateralmente la funcionalidad del contrato.
  • Si no puede hacer lo anterior, proporcione políticas y procedimientos detallados para la administración y el uso de claves basados ​​en quórum, especialmente para las acciones que afectan los saldos de los usuarios. Idealmente, las claves estarían en manos de un custodio calificado que pueda certificar que se cumple el quórum antes de que el rol pueda tomar medidas.

Diseño simple y modular

Nuestros tokens favoritos para evaluar desde una perspectiva de seguridad son los aburridos: vienen sin sorpresas. Aunque los protocolos complejos pueden habilitar funciones avanzadas para los tokens, el token en sí no tiene por qué ser complicado. «Simple» se refiere a reducir la cantidad de componentes que componen un proyecto de token, y «modular» se refiere a separar la lógica y las responsabilidades entre los contratos.

Para disminuir la complejidad del token, minimizando así la posibilidad de falla:

  • Mantenga las funciones relacionadas con el token al mínimo separando el contrato del token del resto del protocolo.
  • Reducir o eliminar las dependencias de tokens externos.
  • Prefiere usar menos contratos para implementar el token.

Cualidades avanzadas

Estas cualidades son especialmente importantes para los tokens complejos que toman decisiones sustancialmente nuevas de programación o arquitectura:

Auditoría externa

El desarrollo de contratos inteligentes está lleno de sutilezas y las fallas pueden costar millones de dólares. Una auditoría externa de una empresa de seguridad de renombre, que busca tanto las vulnerabilidades de los contratos inteligentes como las fallas en la lógica empresarial, puede descubrir problemas críticos y aumentar la confianza en la exactitud del token.

Para asegurarse de que su token se examine correctamente en busca de vulnerabilidades:

  • Solicite una auditoría de una empresa de auditoría de renombre, como Trail of Bits , OpenZeppelin o ConsenSys Diligence , centrada en garantizar los saldos de tokens correctos e inspeccionar las partes más complejas del proyecto.
  • Utilice recompensas de errores para alentar a los expertos en seguridad de contratos inteligentes de todo el mundo a revisar el token.

Documentación completa

La documentación bien organizada y actualizada que describa con precisión un proyecto en detalle es el sueño de todo ingeniero. Sin dicha documentación, los revisores pueden verse obligados a dedicar un tiempo insoportable a descifrar la intención y la estructura del proyecto.

Para facilitar la vida de cualquier desarrollador de incorporación o ingeniero de seguridad, asegúrese de la disponibilidad de documentación que cubra:

  • El propósito del token
  • Arquitectura y dependencias del proyecto
  • Roles de superusuario que afectan el comportamiento del token o los fondos del usuario
  • Controles de seguridad utilizados para administrar roles y claves de superusuario

Adicionalmente:

  • Utilice NatSpec para agregar documentación al código tanto como sea posible.
  • Si la documentación está desactualizada o el proyecto se está desarrollando rápidamente, indíquelo claramente para evitar malentendidos.

Versión reciente de Solidity

Solidity, diseñado para EVM, evoluciona regularmente no solo para empoderar a los desarrolladores sino para defender los contratos inteligentes de las vulnerabilidades de forma predeterminada. El lenguaje incorpora protecciones para evitar que los desarrolladores hagan que sus contratos inteligentes sean propensos a ataques por accidente; Una de esas mejoras con v0.5.0 requería visibilidad de función explícita en lugar de permitir que cualquiera llamara a una función por defecto .

Las versiones actualizadas de Solidity tienen un beneficio adicional: las herramientas populares para el análisis automatizado, como el análisis estático y las herramientas de verificación formal, no funcionan tan bien (si es que lo hacen) con versiones anteriores de Solidity.

Para estar lo más actualizado posible:

  • Utilice la versión estable más reciente de Solidity disponible, utilizando interfaces para interactuar con contratos de versiones anteriores.
  • En lugar de utilizar una versión de Solidity «flotante» , fije todos los contratos a una versión específica para evitar resultados inesperados al compilar con una versión diferente (con la excepción de las bibliotecas).

Test Suites

Los tokens, especialmente los que tienen complejidad, deberían venir con un conjunto completo de pruebas con una cobertura significativa (aspirando al 100%), desde pruebas unitarias hasta pruebas de un extremo a otro. Las pruebas no solo detectan errores temprano, sino que también describen implícitamente el comportamiento esperado de un token, un complemento útil para la documentación completa.

Para asegurarse de que su token esté bien probado:

  • Escriba pruebas unitarias para cada función recién escrita para probar propiedades básicas (por ejemplo, un usuario no puede transferir más que su saldo).
  • Realice pruebas de extremo a extremo que pasen por flujos importantes para garantizar que el proyecto se comporte como se espera, posiblemente detectando errores graves.
  • Implemente el proyecto en una red de prueba para probar la funcionalidad vital del contrato inteligente y detectar cualquier problema extraño o inesperado (como límites de gas) antes de implementarlo en la red principal.
  • Ejecute herramientas de análisis automatizadas como Slither , Echidna y Mythril para descubrir problemas conocidos de forma automática. Considere consultar a Certora para realizar una verificación formal de invariantes importantes para su token.

Conclusión

Aunque cualquiera puede crear un token ERC-20 estándar con relativa facilidad, las implementaciones pueden variar mucho en complejidad y seguridad. Al desarrollar tokens con estas mejores prácticas de seguridad en mente, el camino hacia la construcción de un sistema financiero abierto se vuelve mucho más seguro. En Coinbase, esperamos adoptar nuevas tecnologías y enumerar proyectos innovadores en nuestra plataforma y esperamos que esta guía sea útil tanto para los desarrolladores como para la comunidad en general.


Este sitio web contiene enlaces a sitios web de terceros u otro contenido solo con fines informativos («Sitios de terceros»). Los sitios de terceros no están bajo el control de Coinbase, Inc. y sus afiliados («Coinbase»), y Coinbase no es responsable del contenido de ningún sitio de terceros, incluido, entre otros, cualquier enlace contenido en un tercero. Sitio de terceros, o cualquier cambio o actualización de un Sitio de terceros. Coinbase no es responsable de la transmisión por Internet o cualquier otra forma de transmisión recibida de cualquier sitio de terceros. Coinbase le proporciona estos enlaces solo para su conveniencia, y la inclusión de cualquier enlace no implica respaldo, aprobación o recomendación por parte de Coinbase del sitio o asociación con sus operadores.

La implementación de las pautas de seguridad de Coinbase no garantiza que un activo se incluya en Coinbase. Coinbase evalúa los activos potenciales contra nuestro Marco de Activos Digitales para evaluar factores como la seguridad, el cumplimiento y la alineación del proyecto con nuestra misión de crear un sistema financiero abierto para el mundo. Para solicitar la inclusión en la lista, complete una solicitud aquí .

Coinbase no respalda ni promueve ninguno de los proyectos o criptomonedas mencionados en esta publicación de blog. Las descripciones de la funcionalidad y los servicios proporcionados son solo para información. Coinbase no se hace responsable de ninguna pérdida de fondos u otros daños causados ​​como resultado del uso de cualquiera de los proyectos descritos anteriormente.

Coinbase Ventures es un inversor en Etherscan y Certora. Consulte aquí para obtener más información.

Todas las imágenes proporcionadas en este documento son de Coinbase

Más sobre Coinbase aqui

coinbase erc-20
coinbase