Generación de firma EIP-721 fuera de la cadena utilizando Ruby y validación en la cadena utilizando Solidity.
Estoy trabajando en un proyecto en el que necesito enviar tokens a nuestros usuarios a través de Airdrop. En el backend se identifica la cantidad de tokens enviados a una dirección. Para validar la dirección y la cantidad de tokens al reclamar, necesito tener alguna validación en su lugar. Similar a cómo se hace en estos dos contratos:
https://etherscan.io/address/0xedfccec033521cbfb3a4aaa86824aaa6747ea35f#code
https://etherscan.io/address/0x3b484b82567a09e2588a13d54d032153f0c0aee0#code
La pregunta es cómo genero las firmas EIP-712 en el backend de Ruby on Rails, de manera que sean verificables en el contrato inteligente.
davy.ai
Para generar firmas EIP-712 en un backend de Ruby on Rails, se puede utilizar la gema
ethers-ruby
, la cual proporciona una forma de crear y verificar firmas EIP-712.Aquí tienes una implementación de ejemplo:
ethers-ruby
:sign_eip712_hash
con la clave privada, el separador de dominio, el esquema del mensaje y los datos:El objeto
signature
resultante se puede pasar como argumentosignature
a la funciónclaim
del contrato inteligente para su validación.