smartvaults / smartvaults-js-client

SmartVaults javascript client
https://smartvaults.github.io/smartvaults-js-client/
2 stars 2 forks source link

Generalize metadata #48

Open Dreyhh opened 9 months ago

Dreyhh commented 9 months ago

The transaction metadata can be generalized to vault metadata, this will allow metadata for vaults such as name and description. This will also help by separating the vault and its metadata so that PublishedPolicy objects are only constructed when needed.

sebastianmontero commented 9 months ago

@Dreyhh pero tienes multiples transacciones por vault, donde guardarias el metadata del vault(nombre, description) en su propio evento?

Dreyhh commented 9 months ago

@Dreyhh pero tienes multiples transacciones por vault, donde guardarias el metadata del vault(nombre, description) en su propio evento?

el contenido del evento puede ser cualquier JSON, se puede definir algo como { vaultMetadata: {} , transactionsMetadata : { trx1: {} , trx2: {}, ... } }, basicamente usar el mismo kind y logica del metodo actual solo que en lugar de generar un evento por cada trxid, seria un solo evento por vault.

sebastianmontero commented 9 months ago

Tendria 2 preocupaciones principales:

Dreyhh commented 9 months ago

Tendria 2 preocupaciones principales:

  • No exisitiria la posibilidad de que se pase el limite de tamaño de un evento?
  • Es posible que se pierda información porque dos versiones diferentes del evento se sobrescriban?

1) - Si existe la posibilidad de alcanzar el limite actual cuando se tengan muchas trx, tendria que hacer el calculo pero estimo que estaria en la centenas, aunque seria un trade-off ya que se reduciria el almacenamiento de 100 eventos ( asumiendo 100 trxs ) por uno solo.

    • Te refieres a que dos usuarios hagan cambios incompatibles al metadata (e.g sobreescribir labels) ? Eso es posible, pero tambien lo es en la implementacion actual.
sebastianmontero commented 9 months ago

1.- Si habria que ver cual es el limite, teniendo en cuenta que es posible que en un futuro queramos guardar mas metadata relacionada a una trx 2.- Si, aunque el impacto esta limitado a solo la metadata de una trx

Dreyhh commented 9 months ago

1) Ok hare unos pruebas para tener una idea del numero 2) El problema es mas general, dado cualquier metadata creado usando el mismo sourceId (txid, oupoint, vaultId, etc) cualquier usuario con el shared key puede hacer cambios, no importa si es un solo evento o varios, una solucion seria publicar cada metadata event usando el auth del user, pero tendriamos n veces mas eventos (n siendo el numero de participantes en el vault ) la implementacion actual sin embargo tiene el beneficio de que basta que un solo participante haga el fetch de los btc exchanges para los accouting details, igual tiene la ventaja de no requerir la aprobacion del usuario para decrypts y publish de metadata

sebastianmontero commented 9 months ago
  1. Creo que por el momento podemos asumir que los participantes de un vault son honestos y que no sobrescribirían mal intencionadamente la metadata