¿Se puede bifurcar cualquier contrato inteligente?

El último sistema de desincentivo en Casper es la bifurcación del contrato, lo que resulta en la pérdida de la participación del atacante. ¿Es posible este mecanismo con cualquier contrato inteligente?

Estoy tratando de escribir un contrato de Oracle que incentive el consenso sobre algunos datos del mundo real y quiero poder bifurcar el contrato si es atacado.

Respuestas (2)

Bifurcar un sistema es, como usted sugiere, a menudo una buena manera de proporcionar una capa de seguridad a un sistema de consenso. La idea es que si alguien gasta algunos recursos para atacar el sistema y ponerlo en un estado que los usuarios consideran incorrecto, se puede implementar una nueva versión de ese sistema, idealmente eliminando o reasignando cualquier recurso que aún tenga el atacante, y el los usuarios simplemente ignorarán el sistema antiguo y pasarán al nuevo sistema.

En la práctica, bifurcar puede significar algunas cosas diferentes.

Si tiene su propia red, como la red Bitcoin o la red Ethereum, puede bifurcarse cambiando las reglas que siguen algunos de los nodos. Esto divide el sistema en dos redes diferentes, que comparten el mismo estado en el bloque antes de dividirse, pero luego tienen un estado divergente.

Si tiene la intención de que su código se ejecute en la parte superior de una red existente como Ethereum, no puede cambiar las reglas de esa red cuando bifurca, y todos sus datos se almacenan en un registro único y consistente. Como no puede bifurcar el libro mayor, debe crear de alguna manera una nueva estructura de datos en el libro mayor existente.

Una opción es que, si todos sus recursos están sujetos al mismo contrato, simplemente puede implementar una nueva versión de ese contrato y todos se trasladarán a ella. Esto funciona si lo principal que administra el contrato es un token, y usted (la comunidad de bifurcación) puede persuadir a cualquier persona interesada en ese token para que se cambie al nuevo contrato. Si se trata de un token ERC20 normal, probablemente no funcione a la perfección, ya que algunos contratos que hablan con el token pueden no saber sobre la bifurcación, lo que probablemente resulte en la pérdida de fondos, pero puede ser lo suficientemente bueno para sus propósitos. Hay más sobre los aspectos prácticos de esto aquí: https://medium.com/@edmundedgar/what-happens-when-you-try-to-fork-an-ethereum-token-863e3defcf7

Otra opción es gestionar todas las sucursales en un único contrato, y obligar siempre a los usuarios a especificar la sucursal. Esta es la estrategia que usamos en el contrato que describimos aquí: https://decentralize.today/get-the-facts-hard-fork-all-the-things-3ea2233da0fd

Una tercera opción también mantiene las bifurcaciones en un solo contrato, pero intenta adjudicarse entre ellas para crear una bifurcación "verdadera". Esta es la estrategia utilizada por Augur: cuando se activa una bifurcación, los usuarios deben migrar su token ("REP") a una rama u otra rama, y ​​el sistema eventualmente trata la rama a la que se migró la mayor cantidad de REP como el rama "verdadera". Esto tiene la ventaja de exponer una única interfaz de token a otros contratos, y no necesita que otros contratos hablen con su contrato para especificar una rama, ya que hay una "mejor" rama. La desventaja es que este proceso es bastante perturbador, por lo que debe protegerse con un sistema de bonos, lo que agrega complejidad y puede no activarse si resulta que los bonos se han fijado en los niveles incorrectos.

Tenga en cuenta que en todos los casos en los que no hay una rama "verdadera", es probable que el sistema no pueda administrar recursos externos como (para un sistema que se ejecuta sobre Ethereum) ETH. Todos estos sistemas se basan en tener un token nativo que puede ser redefinido a voluntad por la comunidad que lo usa.

Hay un par de conceptos erróneos mezclados aquí. A ver si puedo desenredarlos. (1) El desincentivo de Casper no es "bifurcar contratos", de hecho, ni siquiera estoy seguro de qué significa "bifurcar contratos". Casper a veces "recortará" la apuesta de un validador si hace algo mal, pero no lo llamaría "bifurcación de un contrato".

Cuando dices "bifurcar un contrato", parece que estás pensando en Linux, donde uno puede bifurcar un programa y tener dos versiones en ejecución del programa. Las bifurcaciones de blockchain no son así, pero no estoy seguro de que eso sea lo que estás diciendo.

Las palabras "contrato de oráculo" también son un poco desconocidas. Un 'oráculo' en el mundo de la cadena de bloques, al menos que yo sepa, es una pieza de software fuera de la cadena que periódicamente escribe datos en la cadena (es decir, en un contrato inteligente) como una forma de proporcionar datos para el inteligente. contrato. No creo que la mayoría de la gente piense que un oráculo está en cadena. (No es que no pueda proporcionar datos a otros contratos de otro contrato inteligente, pero en general no creo que eso sea lo que la gente quiere decir cuando dice "oráculo").

Finalmente, no está claro a qué te refieres con "anular el contrato cuando se trata de un ataque". ¿Quiere decir que quiere hacer que el contrato inteligente reaccione de alguna manera si alguien está tratando de piratearlo? Algunas personas escriben contratos inteligentes con un interruptor de "matar" o "pausar", pero no parece que eso sea lo que estás diciendo.

En general, su pregunta es un poco confusa. Tal vez podrías aclararlo un poco.

Supongo que lo que quiero decir con "bifurcación de contratos" es esto de una de las publicaciones de Vitalik: "si intentan evitar que se unan nuevos validadores o ejecutan ataques del 51 %, entonces la comunidad puede simplemente coordinar una bifurcación dura y eliminar a los validadores infractores". 'depósitos'. ¿Cómo se coordina exactamente y se puede coordinar para cualquier contrato inteligente? Digamos que hay un contrato de revelación de compromiso de bloqueo parcial que tiene a las personas apostando tokens y votando en algún evento del mundo real. El voto de la mayoría escribe datos a otro contrato.
Esos comentarios son sobre Casper, que es una actualización propuesta del algoritmo de consenso, no sobre ningún contrato inteligente en particular. La "comunidad" son todos los mineros. "Simplemente coordinar" significa que el algoritmo de consenso se puede escribir de tal manera que detecte y castigue automáticamente el mal comportamiento. Todo esto está discutiendo cosas a nivel de todo el sistema, no relacionado de ninguna manera con un contrato inteligente en particular. La bifurcación ocurre a nivel de todo el sistema. Es por eso que dije que había un concepto erróneo cuando hablas de "bifurcación de contratos". La bifurcación de contratos (al nivel de Casper) nunca sucede.