Guías · Parte 7 de 7
Levante su propia pasarela
Verificar un registro de Label 309 no le pide nada a nadie: sin cuenta, sin servidor, sin clave. Publicar es la otra mitad: coloca una transacción en Cardano, y eso tiene un coste. La pasarela es la pieza que lo paga. Guarda la billetera de Cardano con fondos que ancla el registro (y una billetera de Arweave para los archivos sellados), construye y envía la transacción, la sigue hasta su consolidación y devuelve los registros para su verificación autónoma.
La mayor parte del tiempo apuntará su SDK o su CLI a la pasarela de otra persona.
Pero todo el backend es de código abierto —label-309-gateway,
un único binario de Rust más Postgres—, así que puede levantar la suya. Levante
una para uso privado con sus propias apps u opere una como servicio de pago para
otros: es multiinquilino por diseño, con muchas cuentas y claves de API bajo una
sola instancia. Esta guía lo lleva desde cero hasta una primera cotización con
precio usando el Docker Compose de referencia.
Antes de empezar
Necesita Docker y Docker Compose, y un host con unos cuantos gigabytes de disco libre. Todo lo que sigue apunta a la red preprod de Cardano: la postura segura para poner en marcha un despliegue. Pasar a mainnet es un cambio deliberado que hará más adelante, una vez que el despliegue tenga fondos y esté verificado.
Consiga el código y escriba la configuración
Clone el repositorio y trabaje desde deploy/, donde se encuentra el
docker-compose.yml de referencia. Copie la configuración de ejemplo y edítela
para su despliegue: red, banda de comisiones, almacenamiento y precios:
git clone https://github.com/cardanowall/label-309-gateway
cd label-309-gateway/deploy
cp ../gateway.example.toml gateway.tomlEl ejemplo está comentado y ya apunta a preprod, así que arranca tal cual para una primera ejecución.
Cree el llavero
Cada clave de firma que usa la pasarela vive en un único archivo de llavero
cifrado con age. Créelo y luego añada una clave de Cardano (preprod), una clave
de Arweave y una clave de envoltura de webhooks. Estos pasos de keyring
ejecutan directamente el binario gateway: el llavero está pensado para crearse
en una máquina de confianza y copiar al contenedor únicamente su archivo cifrado,
así que para este paso concreto consiga una compilación de release del
repositorio.
mkdir -p secrets
printf '%s' 'a-strong-passphrase' > secrets/gateway-keyring-passphrase
export GATEWAY_KEYRING_PASSPHRASE="$(cat secrets/gateway-keyring-passphrase)"
gateway keyring init --path secrets/gateway-keyring.age
gateway keyring add-cardano --path secrets/gateway-keyring.age --network preprod
gateway keyring add-arweave --path secrets/gateway-keyring.age
gateway keyring add-webhook-wrap --path secrets/gateway-keyring.age
chmod 600 secrets/*Cada paso add- imprime la dirección que acaba de crear. Añada fondos a las
dos direcciones impresas: la dirección de Cardano paga las comisiones de
anclaje y la dirección de Arweave financia los créditos de almacenamiento de los
archivos sellados. Luego establezca la contraseña de la base de datos que lee el
compose:
echo 'POSTGRES_PASSWORD=a-strong-db-password' > .envPóngala en marcha
Aprovisione primero el operador. Esto aplica las migraciones e imprime el secreto raíz una sola vez: guárdelo en un lugar seguro, es la credencial maestra del plano de control:
docker compose run --rm gateway operator bootstrap --label acmeLuego arranque Postgres y la pasarela:
docker compose up -dRegistre una billetera, una cuenta y una clave
El compose no publica ningún puerto del host a propósito: el plano de datos y el plano de control comparten un mismo socket, de modo que exponerlo expondría también el plano de control. Maneje el plano de control desde dentro del contenedor. Abra una shell:
docker compose exec gateway shApúntelo al plano de control local con el secreto raíz que imprimió bootstrap,
luego registre la billetera de Cardano con fondos (la dirección que imprimió
keyring add-cardano), cree una cuenta, acredítela y genere una clave de API del
plano de datos con alcance para publicar:
export GATEWAY_CONTROL_URL=http://127.0.0.1:8080/control/v1
export GATEWAY_CONTROL_TOKEN='ctl_…the root secret from bootstrap…'
gateway admin wallet register primary addr_test1… preprod
gateway admin account create
gateway admin account fund <account_id> 10000000 "starter credit" # $10
gateway admin key create <account_id> poe:create,poe:read,account:readkey create imprime la clave de API que gobierna el plano de datos. Eso, junto
con la URL base, es todo lo que necesita una app.
Obtenga su primera cotización
Para llegar al plano de datos desde el host durante la configuración, descomente
el mapeo de ports de loopback (127.0.0.1:8080:8080) en docker-compose.yml y
vuelva a ejecutar docker compose up -d: solo loopback, nunca 0.0.0.0. Luego
fije un precio con la clave de API que acaba de generar:
curl -sS -X POST http://127.0.0.1:8080/api/v1/poe/quote \
-H "Authorization: Bearer <your-api-key>" \
-H "Content-Type: application/json" \
-d '{"record_bytes":256,"recipient_count":0,"file_bytes_total":0}'La respuesta lleva un quote_id válido durante 15 minutos, junto con un desglose
de costes. Una llamada de publicación consume ese quote_id de forma atómica
junto con el cargo al saldo: la misma forma en dos pasos —fijar un precio y
luego enviar— que usan las guías del SDK. Su pasarela está operativa.
Qué hacer a continuación
El binario en ejecución sirve su propia referencia de API interactiva: el plano
de datos en /api/v1/docs y el plano de control en /control/v1/docs, cada uno
renderizado por completo sin conexión. Dos documentos del repositorio profundizan
más: el manual del operador
cubre la financiación, las credenciales, la semántica del dinero y las
operaciones del día a día, y la guía del integrador
cubre cómo construir un producto encima.
El plano de datos de su pasarela es exactamente lo que las guías del SDK y la CLI
llaman una URL base. Sustituya https://your-gateway.example por la dirección que
ahora controla, reparta claves de API y publique su primera PoE
a través de un backend que es enteramente suyo.
Primero preprod, mainnet cuando esté listo
Todo lo aquí descrito apunta a la red preprod de Cardano: la forma segura de poner en marcha un
despliegue. Pasar a mainnet es un cambio deliberado: establezca network = "mainnet" en la
configuración, añada al llavero una clave de Cardano de mainnet y registre la billetera como
mainnet. Los tres deben coincidir antes de que la pasarela ancle una transacción real.