<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jeison, autor en Desarrollo Blockchain y Web3 desde Barcelona | Smart Contracts y dApps | Blocklack</title>
	<atom:link href="https://www.blocklack.com/author/jeison/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.blocklack.com/author/jeison/</link>
	<description>Desarrollo tecnologia Blockchain en Barcelona</description>
	<lastBuildDate>Wed, 22 Jan 2025 15:15:43 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.blocklack.com/wp-content/uploads/2026/01/cropped-favicon-web-blocklack-32x32.png</url>
	<title>Jeison, autor en Desarrollo Blockchain y Web3 desde Barcelona | Smart Contracts y dApps | Blocklack</title>
	<link>https://www.blocklack.com/author/jeison/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Encriptación Homomórfica. ¿La última línea de defensa contra las IA intrusivas?. (Parte 1)</title>
		<link>https://www.blocklack.com/blockchain/encriptacion-homomorfica-la-ultima-linea-de-defensa-contra-las-ia-intrusivas/</link>
					<comments>https://www.blocklack.com/blockchain/encriptacion-homomorfica-la-ultima-linea-de-defensa-contra-las-ia-intrusivas/#respond</comments>
		
		<dc:creator><![CDATA[Jeison]]></dc:creator>
		<pubDate>Mon, 24 Jun 2024 11:31:44 +0000</pubDate>
				<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[Web3.0]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Blockhain]]></category>
		<category><![CDATA[Cryptografia]]></category>
		<category><![CDATA[Intelingencia artificial.]]></category>
		<guid isPermaLink="false">https://blocklack.com/?p=3457</guid>

					<description><![CDATA[<p>Encriptación Homomórfica. ¿ La última línea de defensa contra las IA intrusivas ?. Parte 1. Encriptación Homomórfica (Homomorphic Encryption): Es un tipo de encriptación que permite realizar cálculos matemáticos usando...</p>
<p>La entrada <a href="https://www.blocklack.com/blockchain/encriptacion-homomorfica-la-ultima-linea-de-defensa-contra-las-ia-intrusivas/">Encriptación Homomórfica. ¿La última línea de defensa contra las IA intrusivas?. (Parte 1)</a> se publicó primero en <a href="https://blocklack.com">Desarrollo Blockchain y Web3 desde Barcelona | Smart Contracts y dApps | Blocklack</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="3457" class="elementor elementor-3457" data-elementor-settings="{&quot;element_pack_global_tooltip_width&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_padding&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true}}">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-5ef633cd elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5ef633cd" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-6d0dacee" data-id="6d0dacee" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1b9c6c2d elementor-widget elementor-widget-text-editor" data-id="1b9c6c2d" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<h2><span style="font-weight: 400;"><strong>Encriptación Homomórfica. ¿ La última línea de defensa contra las IA intrusivas ?. Parte 1</strong>.</span></h2><p><img fetchpriority="high" decoding="async" class="size-medium wp-image-3462 aligncenter" src="https://blocklack.com/wp-content/uploads/2024/06/Captura-de-pantalla-2024-06-24-132458-300x251.png" alt="" width="300" height="251" srcset="https://www.blocklack.com/wp-content/uploads/2024/06/Captura-de-pantalla-2024-06-24-132458-300x251.png 300w, https://www.blocklack.com/wp-content/uploads/2024/06/Captura-de-pantalla-2024-06-24-132458.png 473w" sizes="(max-width: 300px) 100vw, 300px" /></p><p><b>Encriptación Homomórfica (Homomorphic Encryption): </b><span style="font-weight: 400;">Es un tipo de encriptación que permite realizar cálculos matemáticos usando datos cifrados como inputs, existen dos propiedades, Encriptacion Homomorfica parcial y encriptación homomórfica completa.</span></p><p><b>Homomorfismo: </b><span style="font-weight: 400;">Es la propiedad de la información encriptada que nos permite realizar cálculos sobre datos encriptados, a su vez el resultado puede ser desencriptado para obtener el resultado del cálculo sin encriptar.  </span></p><p><b>Evaluador: </b><span style="font-weight: 400;"> Es quien recibe la información encriptada y ejecuta los cálculos  parcial o completamente.</span></p><p><b>Lattice Cryptography: </b><span style="font-weight: 400;">Método de cifrado que utiliza la dificultad de resolver problemas relacionados con redes (lattices) matemáticas para asegurar los datos. Es una base común para muchos esquemas de encriptación homomórfica</span></p><p><b>Assumption-based Security:</b><span style="font-weight: 400;"> Es todo aquel método que se basa en problemas matemáticos difíciles de resolver para encriptar información, como factorización de números enteros, logaritmo discreto, en este caso Lattice. </span></p><p><b>Noise Ruido: </b><span style="font-weight: 400;">Se refiere a la cantidad de datos no relevantes y aleatorios que se agregan al encriptado homomórfico.</span></p><h3><strong>“ON DATA BANKS AND PRIVACY HOMOMORPHISMS”</strong></h3><p><span style="font-weight: 400;">La primera vez que se mencionó la propiedad homomórfica de datos encriptados y una solución criptográfica compatible fue en un paper publicado en 1978, por  </span><i><span style="font-weight: 400;">Ronald L. Rivest, ,Len Adleman, Michael L. Dertouzos. </span></i><span style="font-weight: 400;">En donde se propone una solución para implementar una base de datos encriptada para una empresa pequeña de préstamos, que permita realizar operaciones sin necesidad de saber el contenido de la misma. Así solo las sedes centrales podrían codificar y decodificar la información de la base de datos, lo que previene fugas o pérdidas de información. </span><img decoding="async" class=" wp-image-3458 aligncenter" src="https://blocklack.com/wp-content/uploads/2024/06/Captura-de-pantalla-2024-06-24-131929-300x130.png" alt="" width="384" height="167" srcset="https://www.blocklack.com/wp-content/uploads/2024/06/Captura-de-pantalla-2024-06-24-131929-300x130.png 300w, https://www.blocklack.com/wp-content/uploads/2024/06/Captura-de-pantalla-2024-06-24-131929.png 451w" sizes="(max-width: 384px) 100vw, 384px" /></p><p><span style="font-weight: 400;">Por supuesto esa información debe siempre mantenerse privada, aun asi permitirá responder preguntas sobre:</span></p><ul><li style="font-weight: 400;" aria-level="1"><strong>¿Cuál es el importe medio de los préstamos pendientes?</strong></li><li style="font-weight: 400;" aria-level="1"><strong>¿A cuánto ascienden los ingresos por pagos de préstamos previstos para el próximo mes?</strong></li><li style="font-weight: 400;" aria-level="1"><strong>¿Cuántos préstamos superiores a 5.000 $ se han concedido?</strong></li></ul><p>Ahora si escalamos este método a otras áreas y dejamos que la imaginación nos lleve a considerar en donde aplicar esta maravillosa matemática surge soluciones muy eficaces que se enfocan en proteger los datos de los usuarios, pero sin cerrar la posibilidad de que esos datos sean usado por terceras personas sin saber su contenido para calcular con ellos.</p><h3><strong>¿ Cómo funciona la encriptación Homomórfica ?</strong></h3><p><span style="font-weight: 400;">La encriptación homomórfica se compone de una parte fundamental de la criptografía y es el uso de claves públicas y privadas con propiedades homomórficas, hay varios algoritmos de generación de claves homomórficas que permiten lograr de manera parcial o completa operar sobre datos encriptados. He preguntado a chat gpt y está algunos de la lista.</span></p><ul><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">RSA (Rivest-Shamir-Adleman) </span><span style="font-weight: 400;">Permite la homomorfía multiplicativa.</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">Paillier. </span><span style="font-weight: 400;">Permite la homomorfía aditiva.</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">BFV (Brakerski-Fan-Vercauteren). </span><span style="font-weight: 400;">Permite operaciones aditivas y multiplicativas limitadas (Somewhat Homomorphic Encryption, SHE).</span></li></ul><p>Aunque las más usadas son:</p><ul><li><span style="font-weight: 400;">CKKS (Cheon-Kim-Kim-Song). </span><span style="font-weight: 400;">Permite operaciones aproximadas sobre números complejos</span></li><li style="font-weight: 400;" aria-level="1"><span style="font-weight: 400;">BGV (Brakerski-Gentry-Vaikuntanathan). </span><span style="font-weight: 400;">Permite operaciones aditivas y multiplicativas (Somewhat Homomorphic Encryption, SHE).</span></li></ul><p>Una vez seleccionado el algoritmo de generación de claves privadas lo que debemos hacer es encriptar con la clave pública la información sobre la que se quiere hacer operaciones o cálculos complejos. imaginemos que tenemos una gran cantidad de datos donde queremos calcular la media móvil de un dato especifico, o calcular los gastos y entradas de una empresa de café sin revelar esa información a nadie este es <strong>el santo grial de la criptografía</strong>.</p><p>Los pasos sencillos para encriptar información son:</p><ol><li style="font-weight: 400;" aria-level="1">Generamos las claves privadas y públicas, las claves públicas deben haber sido generadas con un ruido polinómico, esto evita que un atacante intente saber la información secreta.</li><li style="font-weight: 400;" aria-level="1">Encriptamos la información que deseamos enviar al evaluador usando las claves públicas.</li><li style="font-weight: 400;" aria-level="1">Enviamos la información al evaluador que realiza los cálculos</li><li style="font-weight: 400;" aria-level="1">Por último, el evaluador envía los resultados cifrados de vuelta al propietario de los datos, quién puede desencriptarlos usando la clave privada. El resultado desencriptado debe coincidir con el resultado que se obtendría si las operaciones se hubieran realizado sobre los datos en claro.</li></ol><p>Una vez el evaluador recibe esta información procede a realizar los cálculos que permite la propiedad homomórfica del cifrado elegido. A medida que se van aplicando los cálculos se debe tener en cuenta que a medida que se calcula, el ruido o noise también crece, por lo tanto se debe hacer una realinearización de los cálculos para generar un resultado que pueda ser desencriptado correctamente al final. El ruido acumulado hay que  manejarlo apropiadamente e irlo reduciendo de acuerdo a los cálculos realizados por el evaluador. </p><p>Las partes más importantes de la encriptación homomórfica son la elección del algoritmo de generación de claves según la propiedad homomórfica que deseemos, la elección del ruido polinómico, y el manejo en el aumento del ruido en el evaluador. La aplicacion de estos principios nos permite realizar opereaciones y desatar una gran aplicacion donde la proteccion a la privada es prioritaria. por  ello queda una pregunta por responder. <strong>¿ Es la encriptacion Homomorfica la ultima linea de defensa contra las IA intrusivas ?.</strong></p><p>La implementación práctica de la encriptación homomórfica puede ser compleja, por eso en este artículo sólo tratamos los aspectos importantes, y la aplicación que pudiese tener, aunque en Blocklack  somos expertos en este tipo de encriptación. Consulta nuestros servicios.</p><p>Dependiendo del alcance de esta publicación se considerará la segunda parte.</p><ul><li><span style="font-weight: 400;"><a href="https://luca-giuzzi.unibs.it/corsi/Support/papers-cryptography/RAD78.pdf">https://luca-giuzzi.unibs.it/corsi/Support/papers-cryptography/RAD78.pdf</a><br /></span></li></ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>La entrada <a href="https://www.blocklack.com/blockchain/encriptacion-homomorfica-la-ultima-linea-de-defensa-contra-las-ia-intrusivas/">Encriptación Homomórfica. ¿La última línea de defensa contra las IA intrusivas?. (Parte 1)</a> se publicó primero en <a href="https://blocklack.com">Desarrollo Blockchain y Web3 desde Barcelona | Smart Contracts y dApps | Blocklack</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.blocklack.com/blockchain/encriptacion-homomorfica-la-ultima-linea-de-defensa-contra-las-ia-intrusivas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deserializando una transaccion de counterparty</title>
		<link>https://www.blocklack.com/blockchain/deserializando-una-transaccion-de-counterparty/</link>
					<comments>https://www.blocklack.com/blockchain/deserializando-una-transaccion-de-counterparty/#respond</comments>
		
		<dc:creator><![CDATA[Jeison]]></dc:creator>
		<pubDate>Wed, 03 Apr 2024 16:41:33 +0000</pubDate>
				<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[NFTs]]></category>
		<category><![CDATA[NFT]]></category>
		<category><![CDATA[Token]]></category>
		<guid isPermaLink="false">https://blocklack.com/?p=2863</guid>

					<description><![CDATA[<p>Tutorial: Como decodificar una transaccion Counterparty en Rust Counterparty: Es un metaprocolo que usa el OP_RETURN de bitcoin como almacenamiento y registro de transacciones. Rust: Lenguaje de Programacion compilado de alto...</p>
<p>La entrada <a href="https://www.blocklack.com/blockchain/deserializando-una-transaccion-de-counterparty/">Deserializando una transaccion de counterparty</a> se publicó primero en <a href="https://blocklack.com">Desarrollo Blockchain y Web3 desde Barcelona | Smart Contracts y dApps | Blocklack</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="2863" class="elementor elementor-2863" data-elementor-settings="{&quot;element_pack_global_tooltip_width&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_width_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;element_pack_global_tooltip_padding&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_padding_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true},&quot;element_pack_global_tooltip_border_radius_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;top&quot;:&quot;&quot;,&quot;right&quot;:&quot;&quot;,&quot;bottom&quot;:&quot;&quot;,&quot;left&quot;:&quot;&quot;,&quot;isLinked&quot;:true}}">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-448ec98 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="448ec98" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-09ca06d" data-id="09ca06d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1ae30a7 elementor-widget elementor-widget-heading" data-id="1ae30a7" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h1 class="elementor-heading-title elementor-size-default">Tutorial: Como decodificar una transaccion Counterparty en Rust</h1>				</div>
				</div>
				<div class="elementor-element elementor-element-124c163 elementor-widget elementor-widget-text-editor" data-id="124c163" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul><li><strong>Counterparty: </strong>Es un metaprocolo que usa el OP_RETURN de bitcoin como almacenamiento y registro de transacciones.</li><li><strong>Rust: </strong>Lenguaje de Programacion compilado de alto rendimiento.</li><li><strong>OP_RETURN: </strong>Es un opcode en el script de Bitcoin que marca una transacción como inválida si se intenta gastar, esencialmente creando una salida que no se puede gastar. A pesar de que la transacción en sí es válida y puede ser incluida en un bloque, las salidas que contienen OP_RETURN no pueden ser utilizadas como entradas en transacciones futuras<strong>.</strong></li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-b282e55 elementor-widget elementor-widget-heading" data-id="b282e55" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Historia de Counterparty</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-371720c elementor-widget elementor-widget-text-editor" data-id="371720c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Sus fundadores <strong>Robert Dermody, Adam Krellenstein y Evan Wagner Lanzaron</strong> Counterparty en enero del 2014 en un intento de usar la blockchain de bitcoin como capa para ejecutar el metaprotocolo de transacciones en el OPCODE OP_RETURN.<br /><br />Los OP CODES son un metalenguaje de scripting de bitcoin, que permiten realizar operaciones lógicas sencillas, esto permitió que se pudiesen grabar un registro de transacciones en Bitcoin. <strong>Desde el 2014</strong> se han lanzado numerosos activos, de hecho <strong>Counterparty</strong> ha sido el protocolo pionero en la acuñación de <strong>NFTs (Token no fungibles)</strong> mucho antes que Ethereum, y es a su vez la blockchain conocida por iniciar un movimiento de memes, trolls y pepes de internet, siendo la base de operaciones de verdaderos coleccionistas de memes y activos de alto valor.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-f48154e elementor-widget elementor-widget-heading" data-id="f48154e" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Como se ve una Transacción en Counterparty?</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-d9b524a elementor-widget elementor-widget-code-highlight" data-id="d9b524a" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-9b99f46 elementor-widget elementor-widget-text-editor" data-id="9b99f46" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Tomemos como ejemplo una transacción del <strong>primer NFT de la historia de Counterparty.</strong> OLGA vamos a diseccionar la transacción poco a poco.<br />El primer paso es decodificar la transacción a un formato JSON estándar que podamos entender, esto lo podemos hacer con la siguiente función de RUST que podemos encontrar en nuestro repositorio que hace parte de una API para decodificar y consultar transacciones en counterparty.</p><p>Enlace: https://github.com/blocklack-team/counterpartydb</p>								</div>
				</div>
				<div class="elementor-element elementor-element-d80fab7 elementor-widget elementor-widget-image-gallery" data-id="d80fab7" data-element_type="widget" data-e-type="widget" data-widget_type="image-gallery.default">
				<div class="elementor-widget-container">
							<div class="elementor-image-gallery">
			
<a data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="d80fab7" data-elementor-lightbox-title="deserialize" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjg2NSwidXJsIjoiaHR0cHM6XC9cL2Jsb2NrbGFjay5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9kZXNlcmlhbGl6ZS5wbmciLCJzbGlkZXNob3ciOiJkODBmYWI3In0%3D" href='https://blocklack.com/wp-content/uploads/2024/04/deserialize.png'><img decoding="async" width="640" height="896" src="https://blocklack.com/wp-content/uploads/2024/04/deserialize.png" class="attachment-full size-full" alt="" srcset="https://blocklack.com/wp-content/uploads/2024/04/deserialize.png 640w, https://blocklack.com/wp-content/uploads/2024/04/deserialize-214x300.png 214w" sizes="(max-width: 640px) 100vw, 640px" /></a>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-aedbb78 elementor-widget elementor-widget-image-gallery" data-id="aedbb78" data-element_type="widget" data-e-type="widget" data-widget_type="image-gallery.default">
				<div class="elementor-widget-container">
							<div class="elementor-image-gallery">
			
<a data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="aedbb78" data-elementor-lightbox-title="return_json" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjg2NiwidXJsIjoiaHR0cHM6XC9cL2Jsb2NrbGFjay5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9yZXR1cm5fanNvbi5wbmciLCJzbGlkZXNob3ciOiJhZWRiYjc4In0%3D" href='https://blocklack.com/wp-content/uploads/2024/04/return_json.png'><img loading="lazy" decoding="async" width="1252" height="719" src="https://blocklack.com/wp-content/uploads/2024/04/return_json.png" class="attachment-full size-full" alt="" srcset="https://blocklack.com/wp-content/uploads/2024/04/return_json.png 1252w, https://blocklack.com/wp-content/uploads/2024/04/return_json-300x172.png 300w, https://blocklack.com/wp-content/uploads/2024/04/return_json-1024x588.png 1024w, https://blocklack.com/wp-content/uploads/2024/04/return_json-768x441.png 768w" sizes="(max-width: 1252px) 100vw, 1252px" /></a>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-1c9e1b3 elementor-widget elementor-widget-text-editor" data-id="1c9e1b3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									La trasnsaccion deserializada  en formato JSON.								</div>
				</div>
				<div class="elementor-element elementor-element-33d349a elementor-widget elementor-widget-code-highlight" data-id="33d349a" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-7ef4a2b elementor-widget elementor-widget-text-editor" data-id="7ef4a2b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Es la dirección que inicio la transacción por lo tanto en el protocolo de Counterparty a esta direccion se le conoce como signatario o remitente.

Ahora si nos fijamos la transaccion tiene una entrada (vin) UTXO, este txId es importante ya que se usa como clave de cifrado del mensaje, mas adelante la usaremos.								</div>
				</div>
				<div class="elementor-element elementor-element-5e517b6 elementor-widget elementor-widget-code-highlight" data-id="5e517b6" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-f827bb2 elementor-widget elementor-widget-text-editor" data-id="f827bb2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Esa entrada hace referencia a una transaccion entrante de 298000 satoshis. aunque en el objeto JSON veamos que el value es 0, esto es asi por que la funcion Rust solo decodifica la transaccion y no consulta que cantida de satoshis tiene el UTXO de entrada. Pero la parte que nos permitira identificar si es una transaccion de Counterparty es el vout <strong>(UTXO de salida) que contiene un OP_RETURN</strong>. este es un script, y esta en dos formatos, en scriptpubkey_asm y scriptpubkey en hexadecimal, vamos a diseccionar el scriptpubkey en hexadecimal.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-fd6abe4 elementor-widget elementor-widget-code-highlight" data-id="fd6abe4" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-5a3a2de elementor-widget elementor-widget-text-editor" data-id="5a3a2de" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>El <strong>primer byte 6a</strong> nos inidcan que el script es un <strong>OP_RETURN  el siguiente byte contiene la longitud del script 2e</strong>  que en numero entero es 46, una vez identificados la longitud del script de 46 bytes,  sabemos que el mensaje posiblemente este en los siguientes 46 bytes.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9116f8d elementor-widget elementor-widget-code-highlight" data-id="9116f8d" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-9ba13a2 elementor-widget elementor-widget-text-editor" data-id="9ba13a2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Una vez que tenemos el mensaje counterparty el siguiente paso es descifrar el mensaje, los mensajes enchance send de counterparty usan el <strong>cifrado RC4 que es un algoritmo</strong> de cifrado rapido y liviano. el siguiente bloque de código descifra el mensaje usando como clave el txId de la entrada vin(UTXO).</p>								</div>
				</div>
				<div class="elementor-element elementor-element-05445dc elementor-widget elementor-widget-image-gallery" data-id="05445dc" data-element_type="widget" data-e-type="widget" data-widget_type="image-gallery.default">
				<div class="elementor-widget-container">
							<div class="elementor-image-gallery">
			
<a data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="05445dc" data-elementor-lightbox-title="rc4" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjg2NywidXJsIjoiaHR0cHM6XC9cL2Jsb2NrbGFjay5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9yYzQucG5nIiwic2xpZGVzaG93IjoiMDU0NDVkYyJ9" href='https://blocklack.com/wp-content/uploads/2024/04/rc4.png'><img loading="lazy" decoding="async" width="690" height="415" src="https://blocklack.com/wp-content/uploads/2024/04/rc4.png" class="attachment-full size-full" alt="" srcset="https://blocklack.com/wp-content/uploads/2024/04/rc4.png 690w, https://blocklack.com/wp-content/uploads/2024/04/rc4-300x180.png 300w" sizes="(max-width: 690px) 100vw, 690px" /></a>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-245bc80 elementor-widget elementor-widget-text-editor" data-id="245bc80" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Si el mensaje es descifrado exitosamente esto quiere decir que efectivamente es un mensaje de Counterparty usando el metalenguaje de scripting de Bitcoin.								</div>
				</div>
				<div class="elementor-element elementor-element-15c2346 elementor-widget elementor-widget-code-highlight" data-id="15c2346" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-c1ad57f elementor-widget elementor-widget-text-editor" data-id="c1ad57f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Este es el resultado y asi se ve una transaccion de counterparty.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-8a54922 elementor-widget elementor-widget-heading" data-id="8a54922" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Decodificando la transacción de counterparty.</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-76bb8b3 elementor-widget elementor-widget-text-editor" data-id="76bb8b3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Una vez que se obtiene el mensaje de counterparty, debemos diseccionar cada byte para saber que tipo de transaccion es.</p><p>Los primeros 8 bytes son <strong>434e545250525459</strong>  si transformamos los 8 bytes a un formato ASCII obtenemos CNTRPRTY , el byte en la position numero <strong>9 contiene el identificador de la transaccion, en este caso es 02</strong> , este es el identificador que nos indica que el mensaje es un enchance send.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3fae9d9 elementor-widget elementor-widget-code-highlight" data-id="3fae9d9" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-fbadaac elementor-widget elementor-widget-text-editor" data-id="fbadaac" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>El cuerpo de la transacción se ve así, ahora lo siguiente es identificar el tipo de activo, la dirección de destino y  la cantidad.  para identificar el tipo de activo contamos desde la posicion  de 9 byte  y nos movemos 8 bytes a la derecha, <strong>000000000003ded8</strong> este  rango de bytes contiene el identificador del activo que esta comprimido. para obtener el nombre del activo aplicamos la siguiente funcion enviando los bytes como u64 o numero entero.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-48d143a elementor-widget elementor-widget-image-gallery" data-id="48d143a" data-element_type="widget" data-e-type="widget" data-widget_type="image-gallery.default">
				<div class="elementor-widget-container">
							<div class="elementor-image-gallery">
			
<a data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="48d143a" data-elementor-lightbox-title="asset_name" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjg2OCwidXJsIjoiaHR0cHM6XC9cL2Jsb2NrbGFjay5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9hc3NldF9uYW1lLnBuZyIsInNsaWRlc2hvdyI6IjQ4ZDE0M2EifQ%3D%3D" href='https://blocklack.com/wp-content/uploads/2024/04/asset_name.png'><img loading="lazy" decoding="async" width="622" height="333" src="https://blocklack.com/wp-content/uploads/2024/04/asset_name.png" class="attachment-full size-full" alt="" srcset="https://blocklack.com/wp-content/uploads/2024/04/asset_name.png 622w, https://blocklack.com/wp-content/uploads/2024/04/asset_name-300x161.png 300w" sizes="(max-width: 622px) 100vw, 622px" /></a>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-f524190 elementor-widget elementor-widget-text-editor" data-id="f524190" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Si el identificador es  0 el activo enviado es BTC, si es <strong>1 es XCP que es el activo principal de Counterparty,</strong> pero si el identificador del activo esta en este rango</p>								</div>
				</div>
				<div class="elementor-element elementor-element-cf69b4b elementor-widget elementor-widget-code-highlight" data-id="cf69b4b" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
					 				</div>
				</div>
				<div class="elementor-element elementor-element-c0df4ad elementor-widget elementor-widget-text-editor" data-id="c0df4ad" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>El activo es numerico, si ninguna de las condiciones anteriores se cumplen, los bytes en numero entero se decodifican y se obtiene el nombre del mensaje en este caso es OLGA.</p><ul><li>Para saber la cantidad que se envia en la transaccion sustraemos los bytes desde la posicion 16 hasta la posicion 24, <strong>0000000000000001</strong> estos 8 bytes contienen la cantidad de envio, si convertimos de bytes a entero obtenemos 1.</li></ul><p>Ahora ya hemos identificado el activo y la cantidad, ahora el ultimo paso es identificar a que dirección se esta enviando. el byte en la posicion 25 hace referencia a la version de la direccion. <strong>05 si es base58 para direcciones legacy o pay to hash, 80 si es una direccion bech32 que es usada por direcciones segwit.</strong> en este caso la version del bytes es 05 lo que indica que es una direccion legacy. la siguiente funcion decodifica la direccion en hexadecimal a una direccion en texto compatible con cualquier billetera Bitcoin.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-9218f78 elementor-widget elementor-widget-image-gallery" data-id="9218f78" data-element_type="widget" data-e-type="widget" data-widget_type="image-gallery.default">
				<div class="elementor-widget-container">
							<div class="elementor-image-gallery">
			
<a data-elementor-open-lightbox="yes" data-elementor-lightbox-slideshow="9218f78" data-elementor-lightbox-title="address" data-e-action-hash="#elementor-action%3Aaction%3Dlightbox%26settings%3DeyJpZCI6Mjg2OSwidXJsIjoiaHR0cHM6XC9cL2Jsb2NrbGFjay5jb21cL3dwLWNvbnRlbnRcL3VwbG9hZHNcLzIwMjRcLzA0XC9hZGRyZXNzLnBuZyIsInNsaWRlc2hvdyI6IjkyMThmNzgifQ%3D%3D" href='https://blocklack.com/wp-content/uploads/2024/04/address.png'><img loading="lazy" decoding="async" width="711" height="366" src="https://blocklack.com/wp-content/uploads/2024/04/address.png" class="attachment-full size-full" alt="" srcset="https://blocklack.com/wp-content/uploads/2024/04/address.png 711w, https://blocklack.com/wp-content/uploads/2024/04/address-300x154.png 300w" sizes="(max-width: 711px) 100vw, 711px" /></a>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-8a12a23 elementor-widget elementor-widget-text-editor" data-id="8a12a23" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>ahora que ya tenemos la transacción completa decodificada sabemos que</p><p><strong>1NFTzmvY1RE8xg6jJaK8TewZAvbJwnUC6G</strong>  envio la cantidad <strong>1 del NFT OLGA a la dirección 3GWCaREJRyrcB4iccpDw9kcnctJpPDAjKh</strong></p><p>Algo curioso del la dirección del remitente es que sus primeras letras son 1 NFT <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f642.png" alt="🙂" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>La entrada <a href="https://www.blocklack.com/blockchain/deserializando-una-transaccion-de-counterparty/">Deserializando una transaccion de counterparty</a> se publicó primero en <a href="https://blocklack.com">Desarrollo Blockchain y Web3 desde Barcelona | Smart Contracts y dApps | Blocklack</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.blocklack.com/blockchain/deserializando-una-transaccion-de-counterparty/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
