Skip to main content
Firmado de Acciones: El sistema de la entidad deberá realizar el firmado de las acciones (Upload, Download, SEND, SENDMOL, Withdraw y Claim) generando un hash y enviandolo al siguiente endpoint de Tranfiya POST /v1/action/:action_id/sendit  Ejemplo: \
 Proceso de firma:
  • Preparar la data
    Arma el objeto data con los campos acordados (amount, domain, expiry, random, source, symbol, target).
    • Importante: normaliza expiry a UTC con Z (ej. “2026-02-13T15:32:43.701Z”).
  • Convertir la data a JSON canónico
    Serializa la data a JSON determinístico:
    • Claves ordenadas alfabéticamente.
    • Sin espacios extra (separators (”,”, ”:”)).
    • Mismos tipos (ej. amount como string si así lo usas).
  • Calcular hash.value (doble SHA‑256)
    • Hash #1 = SHA256( UTF‑8(canonical_json) ) → (hex).
    • Hash #2 = SHA256( bytes.fromhex(Hash #1) ) → (hex).
      El Hash #2 es tu hash.value.
  • Firmar hash.value
    • Convierte hash.value (hex) a bytes.
    • Firma esos bytes con Ed25519 prehash (Ed25519ph) usando tu secretKey (seed Ed25519 de 32 bytes).
    • Obtén la firma (64 bytes) y conviértela a HEX (128 caracteres).
      Ese HEX es lo que va en meta.signatures[0].string.
  • Armar la firma en el body
    Dentro de meta.signatures[0]:
    • scheme: “eddsa-ed25519”
    • signer: data.source
    • string: firma HEX (128)
    • public: clave pública RAW (32 bytes) en HEX (64), derivada de la misma secretKey
 Nota: Es importante resaltar que las acciones se firman con las llaves de quien origina la petición (source) Generación de Kepers: Las keepers son un par de llaves (pública y privada) utilizadas para crear los signers dentro del servicio y firmar las distintas acciones durante el flujo; para crear las keepers se deberán tener en cuenta las siguientes condiciones dependiendo del lenguaje utilizado:
Image
El sistema de la entidad debe generar un par de llaves criptográficas que se usan para garantizar la seguridad y autenticidad de la información  Este proceso produce dos llaves:
  1. Llave pública
    • Es la llave que sí puede compartirse
    • Permite verificar que un mensaje o acción realmente proviene de quien dice enviarlo.
  2. Llave secreta
    • Debe protegerse y mantenerse privada.
    • Es la que se utiliza para firmar digitalmente información.
    • Funciona como “la firma personal” del sistema.
Ambas llaves se generan con estandares modernos de seguridad Eddsa25519 - Ecdsa25519, que es uno de los algoritmos más rápidos y seguros actualmente utilizados para firmas digitales. Una vez generadas, las dos llaves se convierten a un formato de texto (una cadena de caracteres en formato hexadecimal) para que puedan almacenarse o transmitirse fácilmente dentro del sistema. Ejemplo generación de keepers en java