Professional Documents
Culture Documents
Desm. TV - Blockchain
Desm. TV - Blockchain
mediante Blockchain
Director:
Ing. Sistemas y Computación M. Sc. Ph. D., Darío Ernesto Correal
Línea investigativa:
Arquitectura Blockchain
Proyecto:
Títulos Valores
Con este proyecto, se propone realizar una herramienta para crear y administrar títulos
valores desmaterializados de cualquier tipo sobre el Blockchain (inicialmente Hyperledger
Sawtooth). Esto con el fin de solucionar problemas que tienen los títulos valores físicos
actualmente. Para esto, se realizó una arquitectura de referencia. Esta solución debe tener
características para que los títulos valores sean legalmente vinculantes. Además, se creó
un MVP que muestra y valida la solución en los requisitos legales.
1. Introducción
1.1 Motivación
En Colombia, según la legislación colombiana, los títulos valores son definidos como,
“documentos necesarios para legitimar el ejercicio del derecho literal y autónomo que en
ellos se incorpora. Pueden ser de contenido crediticio, corporativos o de participación y de
tradición o representativos de mercancías”. De este modo, los documentos asociados a los
títulos valores, son esenciales al momento de hacer ejercicio del derecho textual expresado
en ellos.
Aun así, al ser documentos físicos, los títulos valores presentan algunas limitaciones ligadas
al deterioro y la garantía de seguridad; y, por ende, la posible invalidez de estos.
Con el fin de resolver los problemas mencionados, la solución debe tener la capacidad de:
• Fecha de creación
• Lugar de creación
• Nombre del deudor
• Nombre del acreedor
• Firma del deudor
Para resolver los anteriores requerimientos se propuso utilizar Blockchain. Esta se escoge
por su facilidad a la ahora de autenticar transacciones, además de que se asegura la
integridad de los datos almacenados. Se decidió utilizar Hyperledger Sawtooth ya que es
un software que ofrece una arquitectura modular y flexible que separa el dominio de la
aplicación con los Smart Contracts.
Al finalizar el proyecto se pudo diseñar y desarrollar una solución para los diferentes títulos
valores desmaterializados haciendo uso de Blockchain. Además, se implementaron los
Smart Contracts necesarios para la verificación y consenso de lógica de administración de
información de estos y eliminar algunas de sus vulnerabilidades presentadas en títulos
valores físicos.
• Introducción: Contiene un breve repaso del proyecto para dar contexto de este.
• Descripción: Se compone de definición de objetivos de proyecto, marco legal y
teórico, antecedentes bajo la línea investigativa, e identificación del problema.
• Diseño y Especificaciones: Describe los pasos preliminares al desarrollo del diseño,
teniendo en cuenta la definición del problema, las especificaciones formales y las
restricciones y/o condiciones consideradas.
• Desarrollo del diseño: Concibe lo relacionado al proceso de propuesta y seguimiento
del diseño del proyecto.
• Implementación: Se relaciona a las especificaciones de implementación bajo los
diversos frentes de ejecución evidenciados.
• Validación: Pruebas de validación sobre la implementación realizada.
• Conclusiones: Mención de retos, limitaciones y trabajo futuro.
• Referencias: Material bibliográfico e investigativo consultado.
1.6 Agradecimientos
Agradecemos profundamente a:
Darío Correal, quien cómo profesor, asesor y director de la línea investigativa sobre
Arquitecturas Blockchain, con su profesionalismo y paciencia nos orientó en el proceso de
desarrollo del proyecto en tiempos de bastante incertidumbre.
Luis Esteban Flórez, quien cómo estudiante doctoral a cargo del proyecto de títulos valores,
nos asistió de manera oportuna en todos los requerimientos teóricos, y prácticos a lo largo
del proyecto.
Andrés Rodríguez, quien cómo asistente graduado, asumió gran parte del reto de
implementación del proyecto; aportando muchísimo valor en la colección, consolidación,
interpretación y traducción del conocimiento legislativo, finalmente plasmado en su trabajo.
A nuestras familias y allegados, por apoyarnos en todos los aspectos en todo nuestro
proceso de formación profesional.
2. Descripción
2.1 Objetivos
General
Desarrollar una arquitectura soportada sobre Blockchain que modele el comportamiento y
ofrezca servicios de administración de títulos valores; integrando los proyectos realizados
previamente en el marco conceptual y legal en favor de la desmaterialización física como
un aporte al precedente de la incursión virtual de estos al mercado bancario.
Específicos
• Modelar el problema relacionado al marco legal y teórico de los títulos valores sobre
las condiciones, restricciones, y aplicaciones de estos en un contexto real.
• Diseñar e implementar una arquitectura integradora y genérica que soporte el flujo
de estados, y las funcionalidades de algunos de los títulos valores de manera virtual.
• Generar la documentación requerida que evidencie las decisiones relevantes
tomadas sobre la prueba de concepto, el diseño, la implementación, las
correcciones y las pruebas de la arquitectura propuesta.
• Generar la documentación requerida que sirva como punto de partida para el
trabajo futuro sobre el proyecto.
Según el artículo 619 del Código del Comercio los títulos valores son documentos que
legitiman el ejercicio de derecho que en ellos se incorpora. Además, en el artículo 620 del
Código del Comercio un título valor solamente es válido si se cumplen todos los requisitos.
Los requisitos de un título valor se definen en el artículo 621 del Código del Comercio:
2.2.2 Cheque
Un cheque es un título valor que se encuentra estipulado en el artículo 712 del Código de
Comercio, en donde se define como un documento autorizado por un banco que le permite
a la persona que lo recibe cobrar una determinada suma de dinero. El cheque cuenta con
los siguientes requisitos:
Un pagare es un título valor que se encuentra estipulado en el artículo 709 del Código de
Comercio, en el cual se denomina una persona como otorgante, que es alguien que promete
pagar una suma determinada de dinero a otra persona denominada beneficiario. El pagare
cuenta con los siguientes requisitos:
2.2.4 Endoso
La ley 527 de 1999 establece como un documento digital puede ser equivalente a un
documento físico, siempre y cuando se cumplan los requisitos de integridad, autenticidad,
no repudio y accesibilidad de la información. Uno de los requerimientos es el uso de una
firma digital o electrónica.
2.3.1 Blockchain
Ofrece una arquitectura modular y flexible que separa el sistema central del dominio de la
aplicación, por lo que los Smart Contracts pueden especificar las reglas comerciales para las
aplicaciones sin necesidad de conocer el diseño subyacente del sistema central.
2.3.3 MetaMask
Es una extensión para varios de los exploradores que le permite al usuario crear, importar
y manejar billeteras de Ethereum directamente en su explorador. Esta se utiliza con el fin
de que los usuarios tengan una manera fácil de utilizar aplicaciones distribuidas por
blockchain y todo esto integrado en el navegador.
El componente Ledger Sync, ideado y adaptado por Luis Flórez, cumple la función de
sincronizar la información persistida satisfactoriamente a una base de datos; creando una
capa de administración de la información en Blockchain con el objetivo de simplificar la
consulta de información, y adicionalmente tener traza de la ocurrencia de las transacciones
con los entes involucrados en el ciclo de vida de la información.
2.4 Antecedentes
2.4.1 Pagarés
Para el semestre 2020-I, el proyecto de grado realizado por Luis Ernesto Viana
(le.viana@uniandes.edu.co) y Juan David Zambrano (jd.zambrano@uniandes.edu.co)
titulado “Pagarés virtuales utilizando Ethereum”, tuvo un enfoque sobre la
desmaterialización de títulos valores específicamente para pagarés. A nivel tecnológico, el
proyecto fue soportado principalmente mediante Ethereum, Infura y Metamask;
tecnologías que fueron condiciones importantes en el diseño de la solución. Dicho proyecto
fue el fundamento y la primera iteración enmarcada en la rama de investigación de
desmaterialización de títulos valores. Finalmente, este proyecto dejó varios aportes y retos
consigo, ya que al ser el primer proyecto se logró consolidar el alcance que toda la rama de
investigación podría explorar mediante diversos marcos de trabajo y tecnologías asociadas
a Blockchain.
2.4.2 Cheques
• Permitir que haya varios bancos y haciendo uso de todas las funcionalidades de
Sawtooth, gestionar los permisos de la red de acuerdo con esto.
• Manejar pagos parciales del cheque al momento de ser presentado al banco.
• Haciendo uso de los eventos de Sawtooth se podrían manejar notificaciones a las
partes interesadas cuando haya un cambio en el estado del cheque.
• Diseñar una nueva familia específica para el caso en lugar de adaptar la familia de
en los proyectos base de ejemplo dados por Sawtooth.
• Por otro lado, es posible ampliar el alcance del proyecto para incluir otros tipos de
títulos valores más complejos.
Precisamente, este último punto es el enfoque para la iteración del semestre 2021-I.
Integrar aquellos títulos valores trabajados previamente en una única solución que
generalice algunos casos de uso comunes entre los diversos títulos valores.
2.5 Identificación del problema
3. Diseño y Especificaciones
Este conjunto de problemas se asocia fuertemente al hecho de que los títulos valores
tradicionales son fundamentados en un soporte físico el cual puede presentar cualquiera
de las condiciones mencionadas anteriormente. Por ende, la intención de
desmaterialización de dichos documentos pretende tomar gran valor hacia el usuario final
y también hacia entes financieros; todo sobre un marco legislativo que avale el uso y
circulación de dichos documentos virtuales.
3.2 Especificaciones
ID Nombre Expectativa
REQ-NF-1 Usabilidad La solución debe ser sencilla, fácil
e intuitiva de usar. Con el fin de
que personas que nunca utilizan
los medios virtuales o los títulos
valores puedan usarla.
REQ-NF-2 No repudio La solución debe garantizar la no
duda de la identidad de su
originador.
REQ-NF-3 Privacidad Se debe respetar la protección de
los datos acorde a la ley.
REQ-NF-4 Conformidad a las leyes La solución debe contemplar todos
los atributos necesarios de cada
título valor con el fin de acreditar
su validez en el ámbito legal y
judicial.
• Tecnológicas y de implementación
o Ceñirse en gran medida a la arquitectura de referencia
o Los títulos valores deben contener todos los campos que se estableces según
la ley.
o Garantizar que la información de cada título valor no sea modificada.
o Validar la firma electrónica.
• Dominio de conocimiento
o Consideración y acato de las instrucciones y recomendaciones dadas por el
grupo de abogados.
• Ingenieros:
El grupo de ingeniería (en función de consultor), conformado por nuestro profesor asesor
Darío Correal, el estudiante Doctoral Luis Flórez, el asistente graduado Andrés Rodríguez, y
los estudiantes asociados al proyecto para la vigencia 2021-10 Manuel Vallejo y Julián
Bermúdez, manejó una metodología de reunión, contextualización, correcciones, y
definición de tareas cada semana con el fin de refinar el proyecto. Algunas de las actividades
más relevantes fueron los diálogos para la definición de una arquitectura de referencia con
el objetivo de cumplir con los requerimientos administrativos y transaccionales sobre la
solución y la retroalimentación continua de los avances.
• Abogados:
El grupo de abogados (en función de clientes), conformado por la profesora María Lorena
Flórez y la economista Andrea Guzmán, fueron de gran valor en cada una de las sesiones
semanales al compartir todo su conocimiento referente a los parámetros legales a
considerar en el proceso de desarrollo. Adicionalmente, sus aportes sobre temas
relacionados a Blockchain, contexto legislativo y de control sobre soluciones actuales, y
relacionados, fue relevante al momento de abstraer y direccionar una solución enfocada a
la realidad.
Adicionalmente, en las primeras semanas se dispusieron temas y espacios de investigación
y experimentación para aplicar los conocimientos adquiridos.
• Pagaré
1
Perfil docente de la profesora María Lorena Flórez Rojas en
https://derecho.uniandes.edu.co/en/professors/profesores/maria-lorena-florez-rojas
Imagen. Diagrama de estados título valor (pagare).
• Cheque
Imagen. Diagrama de estados título valor (Cheque).
El proceso creativo de un título valor, requirió identificar las similitudes y diferencias entre
los diversos títulos valores. Esto fue posible gracias al aporte de la profesora Lorena Flórez
y la estudiante Andrea Guzmán, quienes socializaron los aspectos más relevantes acerca de
los títulos valores. La siguiente tabla muestra la comparativa entre títulos valores:
Ahora, las tres etapas identificadas para crear un título valor son:
Imagen. Proceso creativo de un título valor
Cómo se vio en la sección 4.2 Procesos de negocio, el paso inicial recomendado es identificar
el flujo de ocurrencias que se presentan en un título valor. A nivel conceptual, este flujo de
ocurrencias secuenciales es interpretado como una máquina de estados que ayuda a
comprender el comienzo, los pasos intermedios, y el final de todo lo que podría suceder
con sobre la casuística de dicho título valor. Así mismo, se definen las condiciones y/o
restricciones entre estados, y la precedencia entre estos.
Una vez se tiene definida una máquina de estados que sea en lo posible fielmente
interpretable a los casos de uso de un título valor, se procede a definir programáticamente
estos estados a nivel comportamental y visual. A continuación, se muestra un breve ejemplo
de cómo se define el orden y las condiciones de transiciones sobre los diversos estados de
un título valor:
• Usuarios: Se consideran los usuarios finales o tipo persona natural, que son aquellos
usuarios que adquieren un conjunto de servicios financieros enfocados a títulos
valores; por otro lado, se considera el usuario entidad financiero o administrador
quien gestiona la creación y la asignación de títulos valores para cada usuario final.
Para entender la estructura arquitectural del proyecto, el estudiante doctoral Luis Esteban
Flórez desarrolló el concepto evolutivo sobre la arquitectura de referencia, la cual fue
esencial para orientar el trabajo por cada uno de los frentes de desarrollo identificados
mediante dicha arquitectura.
Cabe resaltar que sobre la visión general del diagrama de arquitectura a tres frentes que
valen la pena resaltar:
• Interfaz visual
Frente relacionado a la interfaz visual exhibida tanto al usuario final (cliente) poseedor de
diversos servicios de títulos valores, cómo al usuario administrador que tiene potestad
sobre la creación y asignación de servicios de títulos valores.
Esta capa es responsable de administrar y validar las credenciales del usuario final y de
firmar las transacciones que se deseen ejecutar sobre el sistema; para ello, se hace uso de
mecanismos de criptografía asimétrica proveyendo al usuario de una llave privada, la cual
solamente debe conocer cada usuario de manera personal y no debería compartirse; y una
llave pública, a la cual podrían tener acceso cualquier entidad o usuario en el sistema
(inclusive, dicha llave publica podría funcionar como mecanismo de identificación de
entidades o usuarios).
• API Dominio
• API Blockchain
Imagen5. API Blockchain.
5. Implementación
La implementación del cliente web se fundamentó en ofrecer una interfaz visual funcional
que integrara los distintos títulos valores, y que permitiera interactuar con los casos de uso
relacionados a cada título valor.
Del cliente web para el usuario final, se resalta la labor realizada para:
• Permitir visualizar e interactuar con las acciones y/o transacciones realizadas para
cierto título valor.
• Permitir visualizar el resumen financiero de la cuenta.
• Permitir la solicitud y adquisición de títulos valores.
• Definir un título valor mediante la descripción de sus atributos.
• Definir el flujo de información de los estados de un título valor.
• Registro de cuenta
• Ingreso a cuenta
De igual manera, se debe firmar el payload de solicitud de ingreso para proceder con la
solicitud de transacción hacia el sistema Blockchain.
La acción de girar un cheque requiere de la firma del usuario que realiza el giro, mediante
Metamask.
La gráfica muestra la vista en donde se tienen los títulos valores librados. En el caso puntual
de un cheque, se tiene el listado de los cheques girados.
El proyecto tuvo la necesidad de exponer una API de dominio específico sobre las
funcionales necesarias para el manejo de los diferentes títulos valores. Esto incluye a los
cheques y a los pagarés; en general, se pretende considerar la administración de títulos
valores de manera general del lado del usuario final.
Este api se desarrolló en JavaScript, utilizando nodejs como REST framework. Se utilizo para
hacer las consultas más eficientes una base de datos en mongoDB. Por otro lado, en el
proceso de autenticación se utilizó JWT para manejar la autenticación y autorización. Por
último, se utilizó un ledger al cual se le realizan las peticiones con el fin de almacenar la
información de la transacción en la respectiva Blockchain.
• Generalización
El Proyecto contemplo la necesidad de exponer una API tipo fachada sobre las
funcionalidades de persistencia y administración sobre plataformas Blockchain, esto con los
objetivos de:
En esta ocasión, el foco es brindar una API de administración sobre Blockchain soportado
mediante Hyperledger Sawtooth, pero cómo trabajo futuro se desea proveer facilidad de
integración con diversas plataformas Blockchain.
• Generalización:
- Iteración 1:
A continuación, se exhibe la Iteración 1 de inputs para el POST de una transacción:
/**
* @Schema:
*
* - context: Indicates the context of the app/project.
*
* - subject: Major entity who performs the predicate.
* - signature: Signature that identifies the major subject performing a
predicate.
*
* - predicates: Set of objects that describe actions performed over
objects and possibly related to
* subjects.
* - action: Description of the action to be performed over the object.
* - object: Entity over which the predicate is going to be performed.
* - _id_: Client-side defined object ID (optional).
* - domain: Object domain (alias 'name').
* - properties: Multi-value data dependent to the context domain.
*
* - _subject_: Possible subject who is related to the predicate
performed. (optional).
* - signature: Signature that identifies the minor subject related to
a performed predicate.
*/
La primera iteración del modelo de creación de una transacción tuvo el objetivo de
representar los actores (sujetos) y las acciones (predicados) realizadas sobre los objetos.
Puntualmente, para el caso de títulos valores, los actores serían los usuarios finales, las
entidades financieras, e incluso las entidades artificiales (máquinas); las acciones son las
transacciones relacionadas a transiciones de estados del título valor; y los objetos son los
diversos títulos valores que pueda soportar la aplicación.
- Iteración 2
A continuación, se exhibe la Iteración 2 de inputs para el POST de una transacción:
La iteración 2 se centró en diferenciar cada actor relacionado en una acción. Es así cómo
se evidencia un actor principal (major), quién emite o ejecuta cierta acción; y un actor
secundario (minor), quien recibe o es afectado por dicha acción.
- Iteración 3
- Iteración 4 (y final)
Cómo reflexión final, es oportuno resaltar que si bien las primeras 3 versiones del modelo
de creación de transacciones y estados sobre Blockchain tuvo una evolución escalonada
basada en la forma en cómo se concibió persistir la información en Blockchain inicialmente,
la administración de la información mediante este modelo de persistencia se complicó de
manera significativa.
Ahora bien, con una implementación más liviana fundamentada en la información de la
transacción; y no en las posibles relaciones entre los diversos actores, acciones y objetos
mejoró la forma en cómo se manipulan las transacciones (y consecuentemente los estados)
sobre el sistema Blockchain.
Para aquellos casos de uso relacionados a la obtención de información, se hizo uso del
componente definido como Ledger Sync por Luis Esteban Flórez. Este componente se
definirá posteriormente.
La incursión del componente Ledger Sync fue de gran importancia puesto que consultar de
manera nativa los estados de información sobre Blockchain, puntualmente Hyperledger
Sawtooth, es una tarea dispendiosa y propensa a fallos; dada la manera de persistir y
referenciar un estado sobre el sistema Blockchain.
No obstante, con el uso del Ledger Sync, las consultas son soportadas por una base de datos
(MongoDB) que se sincroniza cada vez que un estado es confirmado cómo persistido en
Blockchain.
• Protocolos de comunicación
• Clientes: Los clientes, son aquellos componentes que establecen conexión con el
ambiente de Sawtooth mediante la API REST. Desde este tipo de componentes se
realiza la serialización de los datos para enviar la solicitud de transacción al API REST.
En el caso de la implementación del proyecto, el cliente es el Distributed Ledger API.
• API REST: Este componente expone servicios de administración de las transacciones,
estados, bloques y recursos sobre Sawtooth.
• Procesadores de transacciones: Los procesadores de transacciones son la instancia
de SmartContracts de Sawtooth. Estos son definidos por el desarrollador,
conteniendo toda la lógica de validación previa a la persistencia sobre Blockchain.
• Validadores: Componente principal encargado de orquestar la recepción de
transacciones, la persistencia de estados, la administración de los bloques, y el
consenso.
Imagen31. Grupo de contenedores de infraestructura / arquitectura Sawtooth
El fragmento de código muestra la extensión sobre las funciones básicas del SDK de
Sawtooth para administrar la información sobre Blockchain. Las funciones más relevantes
son getState, putState, deleteState; las cuales son funcionales que redefinen parcialmente
la lógica de acceso y persistencia sobre Blockchain. Adicionalmente, se añadieron otras
funciones y valores contextuales que sirven para soportar funcionalidades específicas
(context, transactionProcessRequest, publicKey).
• TP Handler
Imagen33. TP Handler
El módulo “TP-Handler” contiene la lógica de validación de información de entrada y se
encarga de invocar los servicios de administración de información definidos en
El componente Ledger Sync fue adaptado y rediseñado por Luis Esteban Flórez, quién
formalizó el concepto y lo aplico sobre el proyecto de títulos valores propiamente.
Cómo se mencionó anteriormente, el Ledger Sync es precisamente un componente que
sincroniza la información persistida de forma efectiva y confirmada sobre Blockchain. Dicha
confirmación se verifica mediante la suscripción a eventos relacionados a cambios recientes
sobre la información2; una vez se valida que la transacción o solicitud de persistencia y/o
modificación de información fue satisfactoria, se procede a tomar esa información y se
mapea a un dominio de datos definido y fácil de interpretar; puntualmente, un modelo de
datos soportado mediante una base de datos (para el proyecto se usó MongoDB como
tecnología de bases de datos).
Enviar de manera periódica y reactiva la información de Blockchain al Ledger Sync es una
tarea clave dado que aliviana procesos de consulta de información directamente sobre
Blockchain, lo cual no es fácilmente intuitivo debido a su paradigma de referenciación y
persistencia de información. 3 Por ende, el componente como tal es de suma importancia.
Hyperledger provee una definición base de lo que es el Ledger Sync, esta puede ser
encontrada en el repositorio de caso de ejemplo “Marketplace”
(https://github.com/hyperledger/sawtooth-marketplace/tree/main/ledger_sync).
6. Validación
2
Suscripción a eventos en Sawtooth: https://sawtooth.hyperledger.org/docs/core/nightly/1-
2/app_developers_guide/about_event_subscriptions.html#
3
Sistema de referenciación y persistencia de información “Global state”:
https://sawtooth.hyperledger.org/docs/core/nightly/1-2/architecture/global_state.html
6.1.1 Resultados individuales (por iteración)
I. Resultados individuales
a. Carga con 10 usuarios y 50 solicitudes HTTP REST
7. Conclusiones
A partir de la primera reunión estipulada para el trabajo se realizó un plan de trabajo los
temas a tratar y como se iba a desarrollar cada uno de los desafíos propuestos. Las primeras
semanas se trabajó en el aprendizaje conceptual sobre un Blockchain y títulos valores, con
el fin de identificar la posible solución y arquitectura para dicho tema. Por otro lado, la
constante retroalimentación llevada contribuyo a que el desarrollo del proyecto fuera
exitoso y que el prototipo cumpliera los requerimientos legales definidos. Por último, cabe
mencionar que no se implementaron todas las funcionalidades planteadas, pero fue posible
implementar y validar la arquitectura y los requerimientos.
Otro factor importante para tener en cuenta que tomo tiempo fue la comunicación entre el
API de dominio y el API del Blockchain ya que se plantearon diferentes esquemas y solo
hasta las últimas iteraciones se tuvo un concepto claro de cómo debíamos comunicarnos
entre los diferentes API utilizados.
Por último, otro factor importante en los tiempos de desempeño fue el cambio realizado
de utilizar TypeScrypt y directamente el framework (NestJS) a utilizar JavaScript con el
framework (NodeJS). Este cambio se realizó con el fin de adaptarnos de una manera más
fácil a la arquitectura propuesta.
7.3 Aportes, retos y trabajo futuro
Actualmente el prototipo cumple los requerimientos, pero este podría ampliarse con las
siguientes funcionalidades:
8. Referencias
Leyes desde 1992—Vigencia expresa y control de constitucionalidad
[CODIGO_COMERCIO]. (s. f.). Recuperado de
http://www.secretariasenado.gov.co/senado/basedoc/codigo_comercio.html
Abogados, D. J. C. (s. f.). ¿Por qué es legal endosar pagarés electrónicos utilizando
Blockchain? Recuperado de https://www.colombiafintech.co/post/por-que-es-legal-
endosar-pagares-electronicos-utilizando-blockchain
Realidad, U., Molano, V. M., & Castro, Y. L. (n.d.). LOS TITULOS VALORES ELECTRÓNICOS.
Títulos valores [Facultad de Derecho]. (n.d.). Retrieved July 11, 2021, from
https://hipertexto-obligaciones.uniandes.edu.co/doku.php?id=titulos_valores
Apéndice