Me gustaría explorar la opción de verificar los mensajes que se han firmado en las billeteras de Bitcoin en los contratos inteligentes de Ethereum.
El contrato inteligente de Ethereum recibe una lista de direcciones de Bitcoin
El contrato inteligente de Ethereum puede verificar si la llamada de función entrante msg, v, r, s coincide con alguna de las direcciones de Bitcoin proporcionadas anteriormente
Ahora, la pregunta es que el incorporado ecrecover()
solo da una dirección de Ethereum resultante y no sé cómo podría proceder desde aquí.
¿Puede el ecrecover() incorporado tratar con direcciones de Bitcoin?
¿Existe alguna forma de mapear la dirección de Bitcoin a la dirección de Ethereum 1:1?
¿Puede el ecrecover() incorporado dar una salida de clave pública completa?
Si el ecrecover() incorporado no funciona, ¿puedo escribir mi propia recuperación que genere una dirección de Bitcoin y gaste una cantidad razonable de gasolina?
¿Puedo preprocesar de alguna manera las direcciones de Bitcoin (o claves públicas) en un formato compatible con Ethereum ecrecover()?
... que todo tipo de están relacionados con una pregunta
Tanto Ethereum como Bitcoin usan la misma curva elíptica para las claves privadas secp256k1. La diferencia es que Ethereum formatea las direcciones como hexadecimal y bitcoin como base58.
Se puede hacer que ecrecover funcione para ambos, devuelve los 20 bytes sin formato de dirección.
Un posible problema es que Ethereum usa keccak256 para firmar, y las bibliotecas de bitcoin normalmente usan sha256, por lo que debe usar bibliotecas de ethereum para firmar.
mikko ohtamaa
david escocés
ismael