Urko Larrañaga Piedra Head of Blockchain

Los desafíos de Blockchain ¿Cómo legislarlos?

¿Es Blockchain la tecnología del futuro o nos encontramos ante una falacia? ¿Tienen algún tipo de soporte o valor legal las transacciones realizadas? Son muchas las voces que hoy en día hablan de la tecnología de bloques. Sin embargo, son pocos los que exponen los límites de la misma.

La descentralización de la información, así como la garantía de su permanencia e inmutabilidad, sin la necesidad de ser custodiada por un tercero de confianza, son funcionalidades que hasta hace poco eran inalcanzables. No obstante, Blockchain está llena de claroscuros. En las siguientes líneas mencionamos algunos de ellos, profundizando en el desafío de la legalidad.

Retos

La escalabilidad y los tiempos de respuesta son desafíos a los que nos enfrentamos. Cada bloque puede guardar una cantidad limitada de transacciones, lo que restringe el almacenamiento de múltiples registros. Por otra parte, la inmediatez de las transacciones no es instantánea. Además, existe el problema de la confidencialidad. ¿Cómo compartir información, verificar su integridad y al mismo tiempo filtrar la visibilidad de la misma?

En esa misma línea, nos encontramos con el debate de la privacidad y el anonimato, en mi opinión, el mayor desafío de la cadena de bloques. Las implementaciones privadas responden a la necesidad de construir sistemas en los que poder controlar y reducir la participación. Las públicas en cambio, responden a una política de acceso y participación abierta y transparente. ¿Es posible garantizar el derecho universal a la participación y conocer a cada usuario? ¿Y necesario?.

Legislación

Una única legislación a escala mundial podría facilitar las cosas, no obstante, como nos ha demostrado el caso de Facebook, esto no parece más que una utopía. Más allá del debate sobre la política a seguir, conviene analizar la situación actual. Cada estado tiene sus leyes y regulaciones, por lo que, algunas empresas apuestan por aprovechar las ventajas fiscales que encuentran. Esto mismo ocurre en el contexto de cadena de bloques: hay estados que han tomado la delantera, por lo que una mayoría de ICOs y proyectos construidos sobre dicho protocolo, se ubican en los mismos países.

Sin embargo, esta tecnología no conoce de fronteras. La capacidad de implantar nodos en cualquier lugar del mundo nos lleva a cuestionarnos la posibilidad de regular las transacciones. A pesar de ello, hay estados que están convirtiendo este reto en una obsesión. En vez de perseguir a la cadena de bloques, ¿no convendría enfocarla como tecnología habilitadora para una transformación del modelo actual?

Conclusión

Los fundamentos como la descentralización y el empoderamiento de los usuarios que otorga Blockchain, son requisitos que requieren los nuevos negocios emergentes, enfocados 100% al cliente. Aunque se trata de una tecnología inmadura que se enfrenta a múltiples desafíos, la multitud de variantes y alternativas que se publican iluminan el camino.

En lo referente a la legislación, aunque a día de hoy no queda otra que adecuarse a la normativa vigente, cabe destacar la cantidad de profesionales que forman parte del ecosistema de esta tecnología, los cuales trabajan orientando e incluso recomendado sobre la legislación. Un ejemplo de ellos es la asociación LegalBlock que forman expertos del sector.

Whitepaper
¿Cómo funciona Blockchain?
Descarga gratuita
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> link  [in template "20099#20135#190900" at line 41, column 47]

----
Tip: If the failing expression is known to be legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #if !currentUrl?contains(link + "/") ...  [in template "20099#20135#190900" at line 41, column 21]
----
1<#if entries?has_content> 
2 
3    <#assign journalArticleExtLocalService = serviceLocator.findService("com.izertis.internet.journal.ext.service.service.JournalArticleExtLocalService")> 
4    <#assign currentUrl = themeDisplay.getURLCurrent() + "/" /> 
5    <!-- Configuración hardcoded --> 
6    <#assign delta = 4> 
7 
8    <div class="row related-content"> 
9        <div class="col-xxl-11 px-5 pl-xxl-100px pl-xl-5 py-5"> 
10            <div class="title"><@liferay.language key="related-contents-title" /></div> 
11            <div class="row"> 
12            <#assign cont = 0> 
13            <#list entries as curEntry> 
14                 
15                <#assign renderer = curEntry.getAssetRenderer()> 
16                <#assign className = renderer.getClassName()> 
17 
18                <#if className == "com.liferay.journal.model.JournalArticle"> 
19                    <#assign journalArticle = renderer.getArticle()> 
20                    <#assign document = saxReaderUtil.read(journalArticle.getContent())> 
21                    <#assign rootElement = document.getRootElement()> 
22                    <#assign defaultLanguageId = parseXml ("@default-locale", rootElement)> 
23                    <#attempt> 
24                        <#assign xPathSelector = saxReaderUtil.createXPath("dynamic-element[@name='miniatureimage']")> 
25                        <#assign img = xPathSelector.selectSingleNode(rootElement).getStringValue()> 
26                        <#if isJson(img)> 
27                            <#assign imgJson = jsonFactoryUtil.createJSONObject(img)> 
28                            <#assign imgUrl = "/documents/" + imgJson.groupId + "/" + imgJson.uuid > 
29                        <#else> 
30                            <#assign imgUrl = "/o/portal-izertis-theme/images/publications/" + journalArticle.getArticleId()[journalArticle.getArticleId()?length-1] + ".jpg"> 
31                        </#if> 
32                    <#recover> 
33                        <#assign imgUrl = "/o/portal-izertis-theme/images/publications/" + journalArticle.getArticleId()[journalArticle.getArticleId()?length-1] + ".jpg"> 
34                    </#attempt> 
35 
36                    <#assign title = getField("title", locale, defaultLanguageId, rootElement)!> 
37                    <#attempt> 
38                        <#assign link = "/-/" + journalArticleExtLocalService.getFriendlyUrl(journalArticle, themeDisplay.getLocale()) /> 
39                    <#recover> 
40                    </#attempt> 
41                    <#if !currentUrl?contains(link + "/") && (cont < delta)> 
42                        <#if title != ""> 
43                            <div class="col-sm-6 col-lg-3 pr-5 pb-5 pb-lg-0"> 
44                                <div class="img-cont"> 
45                                    <img alt="" src="${imgUrl}" /> 
46                                </div> 
47                                <#if title != ""> 
48                                    <div class="info"><a href="${link}">${title}</a></div> 
49                                </#if> 
50                            </div> 
51                            <#assign cont = cont + 1 /> 
52                        </#if> 
53                    </#if> 
54                </#if> 
55            </#list> 
56            </div> 
57         
58        </div> 
59    </div> 
60</#if> 
61 
62<#function getField field languageId defaultLanguageId xml> 
63    <#local defaultSelector = "//dynamic-content[@language-id='" + defaultLanguageId + "' and ancestor-or-self::*[@name='" + field + "']]"> 
64    <#local localeSelector = "//dynamic-content[@language-id='" + languageId + "' and parent::*[@name='" + field + "']]"> 
65 
66    <#local selector = saxReaderUtil.createXPath(localeSelector)> 
67    <#local value = selector.selectSingleNode(xml)!> 
68 
69    <#if value?has_content> 
70        <#return value.getText()> 
71    </#if> 
72 
73    <#local selector = saxReaderUtil.createXPath(defaultSelector)> 
74    <#local value = selector.selectSingleNode(xml)!> 
75 
76    <#if value?has_content> 
77        <#return value.getText()> 
78    </#if> 
79 
80    <#return ""> 
81</#function> 
82 
83<#function parseXml xpath xml> 
84    <#local selector = saxReaderUtil.createXPath(xpath)> 
85    <#local result = selector.selectSingleNode(xml)!> 
86 
87    <#if result?has_content> 
88        <#return result.getStringValue()> 
89    </#if> 
90 
91    <#return ""> 
92</#function> 
93 
94<#function isJson json> 
95    <#local value = json?trim> 
96    <#return value?has_content && value?starts_with("{") && value?ends_with("}")> 
97</#function>