Gestión de wallets
Primeros pasos con los wallets en Chaingateway
Sección titulada «Primeros pasos con los wallets en Chaingateway»Introducción
Sección titulada «Introducción»Chaingateway ofrece dos métodos para generar wallets: wallets protegidos con contraseña y wallets no seguros. A continuación describimos ambos enfoques, sus implicaciones de seguridad y ejemplos de uso.
1. Wallets protegidos con contraseña (recomendado)
Sección titulada «1. Wallets protegidos con contraseña (recomendado)»Si proporciona un parámetro password en el cuerpo de su solicitud a /api/v2/{blockchain}/addresses, la clave privada del wallet generado se almacenará de forma segura en un formato cifrado.
Mecanismo de seguridad
Sección titulada «Mecanismo de seguridad»- La clave privada se cifra utilizando su contraseña y mecanismos internos de cifrado adicionales.
- Al enviar transacciones, proporciona el
passworden lugar de la clave privada. - Este método aumenta la seguridad al garantizar que las claves privadas nunca se expongan en las solicitudes a la API.
Gestión de contraseñas
Sección titulada «Gestión de contraseñas»- Actualizar contraseña: Utilice
UPDATE /api/v2/{blockchain}/addresses/{address}con los parámetrosold_passwordynew_password. - Exportar clave privada: Utilice
POST /api/v2/{blockchain}/addresses/export/{address}para recuperar su clave privada (requiere contraseña).
::: danger Guarde su contraseña de forma segura Nunca almacenamos claves privadas ni contraseñas dentro de nuestra aplicación, ni en nuestra base de datos ni en nuestros mecanismos de registro o de gestión de excepciones. Si pierde su contraseña, no podemos restaurar la clave privada de su wallet. :::
Ejemplo de solicitud
Sección titulada «Ejemplo de solicitud»curl --request POST \ --url https://app.chaingateway.io/api/v2/ethereum/addresses \ --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "password": "architecto"}'<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://app.chaingateway.io/api/v2/ethereum/addresses');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["password" => "architecto"]));curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer YOUR_SECRET_TOKEN', 'Content-Type': 'application/json']);$response = curl_exec($ch);curl_close($ch);echo $response;fetch('https://app.chaingateway.io/api/v2/ethereum/addresses', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_SECRET_TOKEN', 'Content-Type': 'application/json' }, body: JSON.stringify({ password: 'architecto' })}).then(response => response.json()).then(data => console.log(data));import requestsheaders = { 'Authorization': 'Bearer YOUR_SECRET_TOKEN', 'Content-Type': 'application/json'}data = {"password": "architecto"}response = requests.post('https://app.chaingateway.io/api/v2/ethereum/addresses', headers=headers, json=data)print(response.json())Ejemplo de transacciones
Sección titulada «Ejemplo de transacciones»curl --request POST \ --url https://app.chaingateway.io/api/v2/ethereum/transactions \ --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "from": "0xSenderAddress", "to": "0xRecipientAddress", "amount": "100", "password": "password"}'2. Wallets no seguros (usar con precaución)
Sección titulada «2. Wallets no seguros (usar con precaución)»Si no proporciona una contraseña en su solicitud de creación de dirección, la clave privada se devolverá directamente en la respuesta. Esto significa que la clave privada debe almacenarse y gestionarse de forma segura en su extremo.
::: danger Usar solo para wallets no permanentes Dado que la clave privada se incluye en la respuesta, es su responsabilidad almacenarla y protegerla de forma segura. Recomendamos encarecidamente utilizar en su lugar wallets protegidos con contraseña. Si alguien obtiene acceso a su clave privada, puede controlar todos los fondos del wallet. :::
Riesgos de seguridad
Sección titulada «Riesgos de seguridad»- La clave privada queda expuesta en la respuesta de la API, lo que la hace vulnerable si es interceptada.
- Si un atacante obtiene acceso a la clave privada, puede controlar completamente el wallet.
- Este método solo debe utilizarse para wallets temporales o direcciones de un solo uso.
Ejemplo de solicitud
Sección titulada «Ejemplo de solicitud»curl --request POST \ --url https://app.chaingateway.io/api/v2/tron/addresses \ --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \ --header 'Content-Type: application/json'<?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://app.chaingateway.io/api/v2/tron/addresses');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["activated" => true]));curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer YOUR_SECRET_TOKEN', 'Content-Type': 'application/json']);$response = curl_exec($ch);curl_close($ch);echo $response;fetch('https://app.chaingateway.io/api/v2/tron/addresses', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_SECRET_TOKEN', 'Content-Type': 'application/json' }, body: JSON.stringify({ activated: true })}).then(response => response.json()).then(data => console.log(data));import requestsheaders = { 'Authorization': 'Bearer YOUR_SECRET_TOKEN', 'Content-Type': 'application/json'}data = {"activated": True}response = requests.post('https://app.chaingateway.io/api/v2/tron/addresses', headers=headers, json=data)print(response.json())Ejemplo de transacciones
Sección titulada «Ejemplo de transacciones»curl --request POST \ --url https://app.chaingateway.io/api/v2/ethereum/transactions \ --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "from": "0xSenderAddress", "to": "0xRecipientAddress", "amount": "100", "password": "password"}'