Buscar un código

Mostrando del 61 al 70 de 148 coincidencias
Se ha buscado por la cadena: validar
Imágen de perfil

BITCOIN: Transación, formato raw.


Python

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 4 de Marzo del 2025 por Hilario (145 códigos)
1.643 visualizaciones desde el 4 de Marzo del 2025
Captura-de-pantalla-de-2025-03-04-11-16-50

**********************************************




Ejercicio: Aula_28_Transacion_Bit_Coin_Marzo_25.py
**************************************************

Formato RAW de la transacción BITCOIN
//////////////////////////////////////////////////////////////////


Propongo un ejercicio interesante. Datos de una transacción de Bitcoin en formato raw (hexadecimal).Cuando una transacción se crea, se representa en un formato hexadecimal binario. Pero luego, ¿Cómo se calcula el txid de una transacción en Bitcoin?. Pues, queridos alumnos, de eso va este ejercicio propuesto.
IDEA INICIAL DEL CÓDIGO.
Necesitamos hacer en Python, bajo Ubuntu, un programa ejemplo de una transacción en formato raw (hexadecimal), teniendo en cuenta que se deben aportar los datos ficticios, es decir para tener una salida en formato raw, de la transación y posteriormente lograr el cálculo que nos dará el txid, correspondiente. Este es el punto de partida, para que una vez optenidos todos los TXID, de todas las transacciones podramos obtener :
Una vez que tenemos todos los TXID de las transacciones de un bloque, los organizamos en un árbol de Merkle, - que ya vimos en un ejercicio anterior, que se construye aplicando doble SHA-256 a pares de hashes hasta obtener un único hash raíz (Merkle root).

¿Qué significa esto en la práctica?
El hash final del bloque (Block Hash) es el identificador único de ese bloque en la blockchain.
Este hash será el "hash del bloque anterior" en el siguiente bloque de la cadena, asegurando la integridad y seguridad de la blockchain.

Bien, los datos ficticios que aportaremos en nuestro programa serán los siguientes:
*******************************************************************************
Este formato hexadecimal incluye:
• Version de la transacción.
• Entradas (Inputs):
• Hash de la transacción previa (UTXO).
• Índice de salida (vout).
• Script de firma.
• Salidas (Outputs):
• Cantidad de satoshis enviados.
• Script de bloqueo (scriptPubKey).
• Locktime (para definir si se puede gastar en el futuro).

SIGNIFICADOS:
***********************
1. Versión de la transacción
Este es un número que indica la versión del formato de la transacción. A medida que el protocolo de Bitcoin evoluciona, pueden introducirse nuevas versiones para mejorar la funcionalidad y seguridad de las transacciones.

Actualmente, las versiones más comunes son 1 y 2.
La versión 2 se introdujo para admitir Replace-By-Fee (RBF), permitiendo reemplazar una transacción no confirmada con una versión de mayor comisión.
2. Entradas (Inputs)
Las entradas indican de dónde provienen los bitcoins que se están gastando en la transacción.

2.1. Hash de la transacción previa (UTXO)
Cada entrada hace referencia a una salida no gastada (UTXO, Unspent Transaction Output) de una transacción anterior. Para identificar de dónde provienen los fondos, se usa el hash de la transacción previa que contenía la salida que ahora queremos gastar.

Este hash es un identificador único de 256 bits (64 caracteres en hexadecimal).
Se obtiene aplicando SHA-256 dos veces a los datos de la transacción anterior.
2.2. Índice de salida (vout)
Dado que una transacción puede tener múltiples salidas, necesitamos especificar cuál de esas salidas estamos gastando.

vout es un número entero que indica el índice de la salida en la transacción anterior (comienza desde 0).
Ejemplo:
Si la transacción anterior tiene dos salidas y queremos gastar la segunda, vout será 1.

2.3. Script de firma
También llamado scriptSig, es un script que prueba que el usuario tiene permiso para gastar los bitcoins de la UTXO referenciada.

Contiene la firma digital generada con la clave privada del propietario de los bitcoins.
También incluye la clave pública del firmante.
Se ejecuta junto con el script de bloqueo (scriptPubKey) de la transacción anterior para validar la autenticidad del gasto.
3. Salidas (Outputs)
Cada salida define a dónde van los bitcoins en esta transacción.

3.1. Cantidad de satoshis enviados
Especifica la cantidad de bitcoins que se enviarán en esta salida, expresados en satoshis (1 BTC = 100,000,000 satoshis).

Ejemplo:
Si queremos enviar 0.01 BTC, la cantidad en satoshis será 1,000,000.

3.2. Script de bloqueo (scriptPubKey)
Es un script que define las condiciones para gastar esta salida en el futuro.

Generalmente, es un Pay-to-PubKey-Hash (P2PKH), que especifica que solo la persona que tenga la clave privada correspondiente a la clave pública hash puede gastar esos bitcoins.
También puede ser un Pay-to-Script-Hash (P2SH), Pay-to-Witness-PubKey-Hash (P2WPKH) u otros formatos de pago.
Ejemplo de scriptPubKey para una dirección P2PKH:


OP_DUP OP_HASH160 <PublicKeyHash> OP_EQUALVERIFY OP_CHECKSIG
4. Locktime (para definir si se puede gastar en el futuro)
Locktime es un campo opcional que define a partir de cuándo la transacción puede ser confirmada.

Si locktime es 0, la transacción se procesa inmediatamente.
Si es un número mayor que 500,000,000, representa una fecha en formato timestamp UNIX (segundos desde 1970).
Si es menor, representa el número de bloque a partir del cual la transacción será válida.
Ejemplo:

locktime = 800000 → Solo se confirmará después del bloque 800,000.
locktime = 1700000000 → Solo se confirmará después del 14 de noviembre de 2023 (según la fecha UNIX).
Resumen final
La transacción en Bitcoin tiene una versión para definir su formato.
Cada entrada (input) hace referencia a una UTXO anterior mediante su hash y un índice de salida (vout).
Para validar el gasto, la transacción incluye un script de firma (scriptSig).
Cada salida (output) especifica cuántos satoshis se envían y a quién, mediante un script de bloqueo (scriptPubKey).
Locktime puede definir un tiempo de espera antes de que la transacción sea válida.

**********************************************************************************

• Locktime (para definir si se puede gastar en el futuro).
Deberas de tener en cuenta que los datos aportados en formato hash, deberan ser chequeados para que cumplan las normas, es decir deben de ser exadecimales de 0 a 9, y letras de A a la F, sin espacios etc, si no eres cuidado en esto, el programa siempre dara errores.
Una vez que tengas la transacción en formato raw (hexadecimal), deberás Calcular el txid
1. Hash SHA-256 sobre los datos en formato hexadecimal.
2. Aplicar SHA-256 de nuevo al resultado del primer hash (doble SHA-256).
3. Invertir el orden de los bytes (little-endian).
Deberá verse por consola la transacion en formato Hexadecimal.
También deberá verse por consola el TXID.
Según la foto adjunta del programa.

*****************************************************************
No os explico aquí el programa, porque he intentado explicaros en el propio código
cada paso.
------------------------------------------------------------------------------------
Programa realizado en linux Ubuntu.
Con el editor sublime text.
Ejecución bajo consola linux:
python3 Aula_28_Transacion_Bit_Coin_Marzo_25.py
------------------------------------------------------------------------------------------

En las clases sucesivas, explicaremos dudas, que supongo serán muchas.
sin imagen de perfil

Registro - Login - Mail - OTP


PHP

Publicado el 25 de Diciembre del 2022 por Jefferson (11 códigos)
2.681 visualizaciones desde el 25 de Diciembre del 2022

SISTEMA DE REGISTRO-LOGIN mediante EMAIL-OTP



otp_register

1) Al descomprimir hay un archivo txt que debes leer y seguir las instrucciones

-> Bien, si seguiste todos los pasos no debería petar el sistema <-

2) No posee usuario administrador (debes crearlo tu)
simplemente agregas a la tabla usuarios un campo al que puedas llamar admin tipo INT donde 1 indica que es el administrador
luego por medio de php creas controles de seguridad

3) Una vez que te logueas, recibirás un correo donde debes pulsar el botón de activar la verificación del email
(Incluye una plantilla correo para registro/verificacion email)

4) Al verificar el email el campo email_verify de la tabla usuarios cambia a TRUE o 1 permitiendo el acceso

5) Existe un campo en la tabla usuarios llamado activo tipo INT que si lo colocas a FALSE o 0 impide el acceso
(esto, por si decides crear un usuario administrador y mediante programacion php puedes darle o quitarle acceso a cualquier usuario)

6) Una vez logueado, verificado y aceptado. Puedes ingresar al sistema, no sin antes validar un codigo OTP que se te enviara
a tu correo cada vez que entres. "Incluye una plantilla correo para OTP"
(Si utilizas algun servicio SMS o WhatsApp puedes enviar ese codigo OTP por alguna de esas vias)

7) Ofrece la posibilidad de recuperar la contraseña en caso de olvido, he diseñado una password de un solo uso y que al entrar al sistema
deberias cambiarla inmediatamente. Si no lo haces esta password aleatoria quedara invalidada.

8) Al cambiar la password o contraseña por motivo de olvido, se te enviara un email notificando del cambio y te otorgaremos una nueva
password aleatoria. Si al abrir el correo no fuistes tu quien solicito el cambio de contraseña, hay un link para revertir y dejar todo
original.
(Incluye una plantilla correo para recuperacion de contraseña)
Imágen de perfil

Demo OCR en Flask


Python

estrellaestrellaestrellaestrellaestrella(2)
Publicado el 9 de Septiembre del 2021 por Luis (10 códigos)
1.697 visualizaciones desde el 9 de Septiembre del 2021
Demo OCR

Pequeño demo OCR desarrollado en python - Flask

Permite convertir imágenes a texto
Comparar rostros
Obtener información de documentos
Validar DUI (Solo para documentos de identidad de El Salvador ) y solo valida que el numero este correctamente construido.


Posibles Mejoras
------------------------------------
Puede modificarse para utilizarse con un KYC ( Know You Client)
Realizar la obtención de imagenes desde el movil .
Construirse api para ofrecer servicios de KYC a externos .








2021-09-09_10h22_34
2021-09-09_10h29_00
2021-09-09_10h29_16
2021-09-09_10h29_33
Imágen de perfil

Clase para el uso de fechas en PHP


PHP

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 15 de Agosto del 2019 por Xavi (548 códigos)
2.261 visualizaciones desde el 15 de Agosto del 2019
Esta clase es para gestionar todas las posibles utilidades con fechas...

Permite:
- validar una fecha en formato español
- validar una fecha en formato ingles
- validar la hora, minutos y segundos
- convertir una fecha entre el formato ingles y el español
- convertir una fecha entre el formato español y el ingles
- obtener los días entre dos fechas
- validar si una fecha esta dentro del siguiente año a la fecha actual
- convertir una fecha a texto
- obtener la edad de una persona
- obtener la fecha menor de un array de fechas

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$df=new dateFunctions();
echo "<br>".$df->dateSpanishToEnglish("25/01/2019"); // 2019/01/25
echo "<br>".$df->dateEnglishToSpanish("01-25-2019"); // true
echo "<br>".$df->validateDateEs("25/01/2019"); // false
echo "<br>".$df->validateDateEs("32/01/2019"); // true
echo "<br>".$df->validateDateTimeEs("2019/25/01 10:10:10"); // true
echo "<br>".$df->validateDateTimeEs("2019/25/01 10:62:10"); // false
echo "<br>".$df->validateDateEn("2019/01/25"); // true
echo "<br>".$df->validateDateEn("2019/01/32"); // false
echo "<br>".$df->validateDateTimeEn("2019/01/25 10:10:10"); // true
echo "<br>".$df->validateDateTimeEn("2019/01/25 10:62:10"); // false
echo "<br>".$df->validateTime("10:10:10"); // true
echo "<br>".$df->validateTime("10:62:10"); // false
echo "<br>".$df->daysBetweenTwoDates("2019/01/25", "2019/02/25"); // 31
echo "<br>".$df->daysBetweenTwoDates("2019/02/25", "2019/01/25"); // -31
echo "<br>".$df->validate_dateInOneYear("25/01/2020"); // True (hoy es 15 de Agosto del 2019)
echo "<br>".$df->dateToText("2019/01/25"); // 25 de Enero del 2019
echo "<br>".$df->getYearsOld("1975/01/25"); // 44 (hoy es 18 de Agosto del 2019)
echo "<br>".$df->getMinDate(["1975/01/25", "1978/01/20", "1970/10/25"]); // 1970-10-25
Imágen de perfil

Formulario para cambiar la contraseña


JavaScript

estrellaestrellaestrellaestrellaestrella(5)
Actualizado el 21 de Julio del 2019 por Xavi (548 códigos) (Publicado el 17 de Mayo del 2009)
43.705 visualizaciones desde el 17 de Mayo del 2009
Código de ejemplo que muestra el código para validar la nueva contraseña en un formulario para cambiarla. Valida que tenga un tamaño mínimo de 6 caracteres y que contenga números y letras.

contrasena