Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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/#/<CID>
A-->>A: QR a https://proof-of-talk-v02.dev-dot.li/#/<CID>
Note over A,H: después de la charla
A->>H: TalkRegistry.seal(huella, firma, ...) en pallet-revive
```
Expand Down Expand Up @@ -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/#/<cid>` | `https://devnet-test-talk26.dev-dot.li/#/<cid>` (abre con la cámara, sin app) |
| QR | `polkadotapp://proofoftalk.dot/#/<cid>` | `https://proof-of-talk-v02.dev-dot.li/#/<cid>` (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 |
Expand All @@ -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
Expand Down Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions app/README.md
Original file line number Diff line number Diff line change
@@ -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.
Expand All @@ -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
```

Expand Down
2 changes: 1 addition & 1 deletion app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
2 changes: 1 addition & 1 deletion app/polkadot-app-deploy.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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' },
Expand Down
2 changes: 1 addition & 1 deletion app/src/lib/network.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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`;

/**
Expand Down
8 changes: 4 additions & 4 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ flowchart LR
STT -- "ws://localhost:8787<br/>{type: final, text}" --> APP
STT --> LOG[(grabaciones/*.jsonl)]
subgraph Polkadot Desktop
APP[devnet-test-talk26.dot<br/>app/]
APP[proof-of-talk-v02.dot<br/>app/]
end
end
APP -- "finalizedBlock$" --> AH[(Asset Hub)]
APP -- "firma con la identidad .dot" --> PA[Polkadot App<br/>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<br/>navegador o Polkadot App]
PUB[Público] -- "QR → https://proof-of-talk-v02.dev-dot.li/#/CID" --> VER[Verificador<br/>navegador o Polkadot App]
VER -- "lookup(CID)" --> BU
VER -- "hash por altura" --> AH
VER -- "¿username de esta llave?" --> PE
Expand Down Expand Up @@ -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/#/<cid>` | 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/#/<cid>`. |
| 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/#/<cid>` | 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/#/<cid>`. |
| 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. |
Expand Down
14 changes: 8 additions & 6 deletions docs/deploy.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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
Expand All @@ -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/#/<CID de la prueba>` 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/#/<CID de la prueba>` 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

Expand All @@ -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

Expand Down
4 changes: 2 additions & 2 deletions docs/guia-presentadores.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

<img src="img/guia/01-portada.png" alt="Portada de testalk con bloques de Asset Hub en vivo" width="100%" />
Expand Down Expand Up @@ -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.
Loading