¿Cómo puedo crear una dirección de firma múltiple en Ethereum?

Quiero almacenar mi ether en un formulario que requiera más de una firma digital para autorizar gastos. ¿Cómo hago eso en Ethereum?

Respuestas (3)

Las direcciones de "firma múltiple" en Ethereum difieren de las de Bitcoin. Aunque ambas redes permiten transacciones complejas arbitrarias, los conceptos no son intrínsecamente iguales:

En Bitcoin , hay 2 clases principales de transacciones:

  • pagar a pubkey (direcciones que comienzan con "1")
  • pay to script hash (direcciones que comienzan con "3", también conocido como P2SH)

El primero es el sistema basado en cuentas más tradicional de Bitcoin, mientras que el segundo era una extensión BIP escrita por Gavin Andresen para permitir transacciones más complejas. Esencialmente, P2SH permite que se use un script arbitrario para producir firmas para consumir alguna entrada.

En contraste, Ethereum hay 2 clases principales de cuentas:

  • cuentas de propiedad externa
  • cuentas de contrato

La principal diferencia entre estos es que las cuentas de contrato contienen código que puede ejecutarse e interactuar con la cadena de bloques. Debido a que Ethereum es "turing-complete", el código puede ser cualquier cosa, incluida una billetera de tipo de firma múltiple. En comparación, Bitcoin tiene un lenguaje de secuencias de comandos más limitado que permite algunas funciones de secuencias de comandos de Ethereum, pero no todas.

Ejecutar contrato

Por ejemplo, aquí hay un código de Wallet , escrito en Solidity, que se compila para ejecutarse en la red Ethereum como una cuenta de contrato. Tiene varias características que incluyen compatibilidad con múltiples firmas (con participantes ilimitados) y límites de retiro diarios, lo que le permite gastar pequeñas cantidades, pero requiere múltiples firmas para transacciones grandes. Esta billetera se ejecuta completamente en Blochchain y está disponible en Mist , (navegador Ethereum DApp) con una interfaz HTML fácil de usar que no requiere conocimientos de programación.

Contrato multifirma en Mist

Le recomendaría que descargue la versión beta de Ethereum Wallet aquí.

ingrese la descripción de la imagen aquí

La billetera le brinda una GUI fácil para crear un contrato de billetera multi-sig.

Recientemente trabajé en el contrato inteligente universal Solidity para firmas múltiples: https://github.com/bitclave/Multiownable

Puede enviar fácilmente la funcionalidad de múltiples firmantes a cualquier contrato inteligente mediante la subclasificación Multiownabley la adición onlyManyOwnersde modificadores a los métodos que desea proteger. Este es un ejemplo de la billetera multisig más simple que puedas imaginar:

contract SimplestMultiWallet is Multiownable {
    function transferTo(address to, uint256 amount) onlyManyOwners {
        to.transfer(amount);
    }
}

Técnicamente, podrá usar transferOwnershipuna matriz de direcciones y onlyManyOwnersel método protegido con modificador se ejecutará solo cuando el último de los propietarios llame a este método con los mismos argumentos.