diff --git a/README.md b/README.md index fc5aa3b..c2413d6 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ sequenceDiagram autonumber participant M as Micrófono participant S as stt/ (Whisper local) - participant A as app/ (devnet-test-talk26.dot) + participant A as app/ (proof-of-talk-v02.dot) participant H as Asset Hub participant W as Polkadot App (wallet) participant P as People chain @@ -89,7 +89,7 @@ sequenceDiagram A->>W: firmar bytes canónicos con esa cuenta W-->>A: firma sr25519 A->>B: subir recibo (preimage) - A-->>A: QR a https://devnet-test-talk26.dev-dot.li/#/ + A-->>A: QR a https://proof-of-talk-v02.dev-dot.li/#/ Note over A,H: después de la charla A->>H: TalkRegistry.seal(huella, firma, ...) en pallet-revive ``` @@ -132,7 +132,7 @@ Lo que cambia: | Audio | WAV local, fuera del recibo | No se guarda: el recibo lleva solo texto y la referencia externa es el video de la charla | | Cierre | Última frase sin bloque posterior | Remache de bloque al sellar | | Firmante | `getLegacyAccountSigner` del dueño del username | Lo mismo; si el host no lo permite, la cuenta de la app, y el verificador lo dice | -| QR | `polkadotapp://proofoftalk.dot/#/` | `https://devnet-test-talk26.dev-dot.li/#/` (abre con la cámara, sin app) | +| QR | `polkadotapp://proofoftalk.dot/#/` | `https://proof-of-talk-v02.dev-dot.li/#/` (abre con la cámara, sin app) | | Verificación sin app | No | CLI: `npm run verify` | | Permanencia | Bulletin (14 días) | Registro en pallet-revive: [`TalkRegistry`](contract/) | | Ensayo | Requiere el host | Modo ensayo en cualquier navegador | @@ -141,7 +141,7 @@ Lo que cambia: ``` testalk/ -├── app/ Interfaz web (se publica en devnet-test-talk26.dot) +├── app/ Interfaz web (se publica en proof-of-talk-v02.dot) │ ├── src/ │ │ ├── lib/ │ │ │ ├── artifact.ts Formato del recibo, firma canónica, CID, verificación @@ -257,12 +257,12 @@ npm run verify -- /tmp/pot.json # firma válida; bloques de otra red, sin comp ```bash cd app pad login # una vez: QR con Polkadot App -npm run deploy # build + PAD_ENV=devnet pad dist devnet-test-talk26.dot +npm run deploy # build + PAD_ENV=devnet pad dist proof-of-talk-v02.dot --env devnet --js-merkle (pad 0.22.1) ``` Ejecútalo en una terminal propia: `pad` pide confirmaciones interactivas. -Después abre **`devnet-test-talk26.dot/#/diagnostico`** en Polkadot Desktop y en el +Después abre **`proof-of-talk-v02.dot/#/diagnostico`** en Polkadot Desktop y en el celular. Prueba cada pieza de la plataforma desde el dispositivo (canal con el host, permisos de red, micrófono, WebGPU, bloques, consulta histórica, transcriptor, firma y Bulletin) y deja un reporte copiable. diff --git a/app/README.md b/app/README.md index 39a110b..d773c90 100644 --- a/app/README.md +++ b/app/README.md @@ -1,4 +1,4 @@ -# app: devnet-test-talk26.dot +# app: proof-of-talk-v02.dot Interfaz web que se publica en el Products Devnet. Presentador, verificador y CLI de verificación. @@ -8,7 +8,7 @@ npm install npm run dev # modo ensayo en cualquier navegador npm run build # tsc + vite → dist/ npm run verify -- ../examples/rehearsal-uanl.json -npm run deploy # pad dist devnet-test-talk26.dot (ver ../docs/deploy.md) +npm run deploy # pad dist proof-of-talk-v02.dot (ver ../docs/deploy.md) npm run icon # regenera el ícono, el favicon y la marca ``` diff --git a/app/package.json b/app/package.json index e6f9c91..93b85b9 100644 --- a/app/package.json +++ b/app/package.json @@ -7,7 +7,7 @@ "dev": "vite", "build": "tsc --noEmit && vite build", "preview": "vite preview", - "deploy": "npm run build && PAD_ENV=devnet pad dist devnet-test-talk26.dot", + "deploy": "npm run build && PAD_ENV=devnet pad dist proof-of-talk-v02.dot --env devnet --js-merkle", "check-deploy": "node scripts/check-deploy.ts", "verify": "node scripts/verify.ts", "icon": "node scripts/icon.ts", diff --git a/app/polkadot-app-deploy.config.ts b/app/polkadot-app-deploy.config.ts index 9521e26..12232d3 100644 --- a/app/polkadot-app-deploy.config.ts +++ b/app/polkadot-app-deploy.config.ts @@ -4,7 +4,7 @@ * `icon` es obligatorio y solo acepta png o jpeg. */ export default { - domain: 'devnet-test-talk26.dot', + domain: 'proof-of-talk-v02.dot', displayName: 'testalk', description: 'Graba tu charla, ánclala a bloques de Polkadot y fírmala con tu wallet.', icon: { path: './icon.png', format: 'png' }, diff --git a/app/src/lib/network.ts b/app/src/lib/network.ts index a16b03b..dbaf508 100644 --- a/app/src/lib/network.ts +++ b/app/src/lib/network.ts @@ -31,7 +31,7 @@ export const PEOPLE_WS = [ * package.json (deploy) y en polkadot-app-deploy.config.ts. Define además la * cuenta de producto de la app. */ -export const APP_LABEL = 'devnet-test-talk26'; +export const APP_LABEL = 'proof-of-talk-v02'; export const APP_DOTNS = `${APP_LABEL}.dot`; /** diff --git a/docs/architecture.md b/docs/architecture.md index bbbedd5..bd625e0 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -10,14 +10,14 @@ flowchart LR STT -- "ws://localhost:8787
{type: final, text}" --> APP STT --> LOG[(grabaciones/*.jsonl)] subgraph Polkadot Desktop - APP[devnet-test-talk26.dot
app/] + APP[proof-of-talk-v02.dot
app/] end end APP -- "finalizedBlock$" --> AH[(Asset Hub)] APP -- "firma con la identidad .dot" --> PA[Polkadot App
celular] APP -- "UsernameOwnerOf" --> PE[(People chain)] APP -- "preimage submit" --> BU[(Bulletin)] - PUB[Público] -- "QR → https://devnet-test-talk26.dev-dot.li/#/CID" --> VER[Verificador
navegador o Polkadot App] + PUB[Público] -- "QR → https://proof-of-talk-v02.dev-dot.li/#/CID" --> VER[Verificador
navegador o Polkadot App] VER -- "lookup(CID)" --> BU VER -- "hash por altura" --> AH VER -- "¿username de esta llave?" --> PE @@ -91,8 +91,8 @@ hash en Bulletin y las rutas profundas no tienen fallback a `index.html`. |---|---| | Bloques finalizados en vez de `best` | Un bloque best puede quedar huérfano en un reorg; su hash dejaría de existir y el verificador marcaría el recibo como falso. Finalizar tarda unos segundos más en Asset Hub. | | Firmar con la identidad `.dot`, no con `SignerManager` | `SignerManager` solo entrega la cuenta de producto que el host deriva para el dominio ("never the user's identity account", código del SDK): nadie puede ligarla a un username. La cuenta dueña del username en People chain sí se puede comprobar. La de producto queda de respaldo. Ver la [revisión](platform-review-2026-09-25.md#h2-la-firma-sale-de-una-cuenta-de-producto-no-de-la-identidad-del-speaker). | -| QR con `https://devnet-test-talk26.dev-dot.li/#/` | La cámara del teléfono no resuelve `.dot`, y buena parte del público no tendrá Polkadot App. El gateway abre en cualquier navegador y es un contenedor con puente al host: lee Bulletin, y verificar no necesita firmar. En Polkadot App sirve también `devnet-test-talk26.dot/#/`. | -| Dominio `devnet-test-talk26` | En el protocolo v2 de DotNS los dígitos finales deben ser 0 o 2 y cuenta la base sin ellos: con base de 6 a 8 pide personhood, con 9 o más es abierto. `testalk26` (base 7) falló en la verificación previa de `pad`. El dominio vive en `lib/network.ts`, `package.json` y `polkadot-app-deploy.config.ts`. | +| QR con `https://proof-of-talk-v02.dev-dot.li/#/` | La cámara del teléfono no resuelve `.dot`, y buena parte del público no tendrá Polkadot App. El gateway abre en cualquier navegador y es un contenedor con puente al host: lee Bulletin, y verificar no necesita firmar. En Polkadot App sirve también `devnet-test-talk26.dot/#/`. | +| Dominio `proof-of-talk-v02` (antes `devnet-test-talk26`) | En el protocolo v2 de DotNS los dígitos finales deben ser 0 o 2 y cuenta la base sin ellos: con base de 6 a 8 pide personhood, con 9 o más es abierto. `testalk26` (base 7) falló en la verificación previa de `pad`. El 27 oct 2026 se pasó a `proof-of-talk-v02`: el nombre viejo es de la cuenta de `pad login` de pad 0.16.x, que ya no firma con la Polkadot App de TrUAPI 0.25. El dominio vive en `lib/network.ts`, `package.json` y `polkadot-app-deploy.config.ts`. | | Transcriptor en Python y no en el navegador | Rendimiento de Whisper. Coincide con la arquitectura probada en escenario por Proof of Talk. | | Recibo solo con texto, sin audio | La charla se graba en video: esa es la referencia externa y además muestra quién habló, cosa que una huella de audio no prueba. Guardar el audio costaba memoria (~115 MB por hora de charla) y solo servía si el speaker conservaba el archivo. Se quitó el 25 sep 2026; los recibos de prueba anteriores con `audio` siguen validando. | | Formato v1 intacto y campos nuevos aparte | Compatibilidad con los verificadores de Proof of Talk. Los campos nuevos quedan cubiertos por la firma. | diff --git a/docs/deploy.md b/docs/deploy.md index e9e723f..88ac69c 100644 --- a/docs/deploy.md +++ b/docs/deploy.md @@ -17,7 +17,7 @@ cuenta mapeada. cd app npm install pad login # una vez; QR con Polkadot App. El handshake puede tardar minutos. -npm run deploy # npm run build && PAD_ENV=devnet pad dist devnet-test-talk26.dot +npm run deploy # npm run build && PAD_ENV=devnet pad dist proof-of-talk-v02.dot --env devnet --js-merkle (pad 0.22.1) ``` - Corre `pad` en una terminal propia: pide confirmaciones interactivas. @@ -40,8 +40,10 @@ la **base**. | 6 a 8 | Personhood Lite (con 2 dígitos) o Full (sin dígitos) | | 9 o más | Registro abierto (NoStatus) | -El dominio es **`devnet-test-talk26`**: base de 16, dos dígitos, registro -abierto, libre al 25 sep 2026. `testalk` (base 7) y `testalk26` (base 7 más +El dominio es **`proof-of-talk-v02`**: base de 15, dos dígitos, registro +abierto, libre al 27 oct 2026. Hasta esa fecha fue `devnet-test-talk26`, que es de la cuenta +de `pad login` de pad 0.16.x: con la Polkadot App de TrUAPI 0.25 esa sesión ya no +firma («no allowance set for account») y pad 0.22.1 inicia sesión con otra cuenta. `testalk` (base 7) y `testalk26` (base 7 más dos dígitos) piden personhood: `testalk26` falló en la verificación previa de `pad` con *"requires ProofOfPersonhoodLite, but this signer is NoStatus"*, antes de gastar nada @@ -68,8 +70,8 @@ de equilibrio en CPU; `medium` mejora jerga técnica con más latencia. ## Checklist del día del evento **Una semana antes** -- [ ] Abrir `devnet-test-talk26.dot/#/diagnostico` en Polkadot Desktop **y** en el celular, pulsar **Probar con subida a Bulletin** y guardar el reporte. Todo debe salir en verde salvo lo marcado como opcional. Las filas clave: **Firma con identidad .dot**, **Bulletin: subida y clave** y las dos lecturas. -- [ ] Abrir `https://devnet-test-talk26.dev-dot.li/#/` en un celular **sin** Polkadot App: debe abrir el recibo (el gateway conserva el `#`). +- [ ] Abrir `proof-of-talk-v02.dot/#/diagnostico` en Polkadot Desktop **y** en el celular, pulsar **Probar con subida a Bulletin** y guardar el reporte. Todo debe salir en verde salvo lo marcado como opcional. Las filas clave: **Firma con identidad .dot**, **Bulletin: subida y clave** y las dos lecturas. +- [ ] Abrir `https://proof-of-talk-v02.dev-dot.li/#/` en un celular **sin** Polkadot App: debe abrir el recibo (el gateway conserva el `#`). - [ ] Charla de prueba completa en Desktop, sellada y verificada desde otro celular - [ ] Confirmar que el QR proyectado se lee desde el fondo de la sala @@ -78,7 +80,7 @@ de equilibrio en CPU; `medium` mejora jerga técnica con más latencia. - [ ] Si usas el **micrófono de la app**: en `#/presentar`, **Usar el micrófono de la app** para precargar Whisper (baja 80-200 MB; en Polkadot Desktop en cada arranque, así que **no cierres Desktop** hasta terminar) y habla hasta ver "Te escuché: «…»". Si usas el script de Python, los tres puntos siguientes - [ ] Micrófono correcto (`--list-mics`); sin audífonos Bluetooth robando la entrada - [ ] Transcriptor arrancado y con el modelo caliente -- [ ] Polkadot Desktop abierto en `devnet-test-talk26.dot/#/presentar` +- [ ] Polkadot Desktop abierto en `proof-of-talk-v02.dot/#/presentar` - [ ] Wallet conectada: la fila de wallet en verde y diciendo **Firmarás con tu identidad .dot** - [ ] Las tres filas de preparación en verde diff --git a/docs/guia-presentadores.md b/docs/guia-presentadores.md index 3319969..b183a29 100644 --- a/docs/guia-presentadores.md +++ b/docs/guia-presentadores.md @@ -25,7 +25,7 @@ Si algo sale distinto, ve a [Si algo falla](#si-algo-falla). ## 1. Abre testalk -En Polkadot Desktop entra a **`devnet-test-talk26.dot`** y pulsa **Presentar**. +En Polkadot Desktop entra a **`proof-of-talk-v02.dot`** y pulsa **Presentar**. El recuadro negro muestra bloques reales de Asset Hub llegando en vivo. Portada de testalk con bloques de Asset Hub en vivo @@ -162,6 +162,6 @@ Más abajo está **Lo que se dijo**: cada frase con el bloque y la hora. | *Sin sello permanente* | Tu cuenta no tiene saldo. Pide PAS en el faucet o pásale el JSON al organizador para que lo selle. | | El sello no se confirmó a tiempo | Revisa en **Verificar** en un minuto antes de reintentar: pudo haber entrado. | -Antes del evento puedes abrir **`devnet-test-talk26.dot/#/diagnostico`**: +Antes del evento puedes abrir **`proof-of-talk-v02.dot/#/diagnostico`**: prueba el micrófono, la subida a Bulletin y el sello permanente (este último simula y no envía nada), y genera un reporte para el organizador.