Curso Blockhain Utrecht




Blockchain Course

DIARIO CURSO ERASMUS +  (Utrecht 2018)
Lunes día 6-8-2018

Una de las nuevas tecnologías que parece que se van a imponer en un futuro cercano, es la tecnología Blockchain, por ello desde el Departamento de Tecnología del Colegio San Antonio decidimos apostar la formación en esta disciplina y nos fue concedida una movilidad Erasmus plus en la Universidad de Utrecht, Holanda.


.............................................................................................................



Durante la sesión de la mañana los profesores Pascal y Andy, habían preparado dinámicas de presentanción, en el curso había alumnos de distintas procedencia de toda la Unión Europea: tres españoles, cinco italianos, dos alemanes, un frances, dos belgas, un holandés, un Esloveno y un inglés  (antes del Brexit) . 



También había alumnos de fuera de la Unión Europea: tres coreanos, un iraní y un egipcio.

Cada alumno tenía venía con diferentes experiencias y motivaciones, había desde ingenieros informáticos de caminos o agrónomos hasta trabajadores del sector bancario, estudiantes que acababan de terminar derecho o economía. Los italianos querían conocer las posibilidades de la blockchain con la trazabilidad del aceite de oliva algo que también se está estudiando para el aceite de oliva en España con IBM y su hiperledger. Los alemanes querían conocer las posibilidades del blockchain y la economía, Nima, el estudiante iraní era el que más conocimentos previos tenía sobre programación en solidity y quería estudiar la blockchain en la logística de productos alimentarios , los koreanos con la industria del video juego, otros sobre la aplicación de licitaciones públicas, nosotros estabamos interesados en la aplicación de la tecnología blockchain en educación, ciertamente hay infinidad de aplicaciones que se están empezando a estudiar y que descubrimos en el desarrollo del curso.

Durante la sesión de la tarde tuvimos un seminario con Lara Plandsoen, que trabaja en el hiperledger de IBM y nos estuvo exponiendo los casos prácticos que han estado desarrollando como proyectos piloto con MAERSK (pincha aquí para ver video).



Durante la sesión de la tarde del lunes con Lara Plandsoen de IBM.



MAERSK es uno de los principales grupos mundiales en transporte marítimo y tiene un proyecto piloto con el Hiperledger de IBM con el que pretenden utilizar blockchain para reducir todas las gestiones de papel a cero, lo que hace que el transporte resulte un 33% más barato y hace a la empres más competitiva. (pincha aquí para ver video)




Martes día 7-8-2018

El segundo día el profesor Robert Mudler, nos habló de la primera aplicación de blockchain desde su inicio, el concepto de hash,  minado, las transacciones hasta llegar a los "smart contrat" con Ethereum.
La sesión de la mañana del martes con el profesor Robert Mudler.



Blockchain, en español "cadena de bloques", es un protocolo para el registro de transacciones que se caracteriza por ser un "ledger", es decir, un libro de contabilidad electrónico como una base de datos o una hoja de cálculo, pero que cumple con las siguientes características:
-Descentralizado: la cadena de bloques se encuentra distribuida en nodos, no hay ningún nodo único del  que dependa toda la información.
-Seguro: la cadena de bloques es inmutable, no se puede falsificar, resuelve el problema de los generales bizantinos, es decir, los ataques del 51%, apoyandose en el consenso, necesitando 6 confirmaciones cada transacción.
-Integrable: es programable y se puede adaptar a las necesidades de cada empresa. 



Cada "smart contract" es un objeto y se utiliza el lenguaje de programación solidity.



Durante la clase de la tarde el profesor Ander de Keijzer nos enseñó los primeros pasos para utilizar la versión de simulación de metamask de ethereum y programar el primer smart contract "hello world"


                        
Miércoles día 8-8-2018

El miércoles por la mañana realizamos un workshop para realizar grupos y  estudiar cual de los proyectos de aplicación blockchain podríamos realizar en común.

El equipo que estuvo formado por James ingeniero de caminos, de Inglaterra, Mateo, economista de Italia y Antonio, informático y agricultor de España, y José Luis, yo mismo, como profesor de tecnología. 


Yo proponía una aplicación blockchain relacionada con un token que aune el patrimonio, el turismo y la educación, como herramienta para gestionar un proyectos sobre códigos QR que han desarrollado los alumnos del colegio y se podrá proponer como actividad para un proyecto Erasmus plus KA229. Antonio proponía una solución blockchain para resolver de forma transparente e inmediata los problemas de gobernabilidad. Mateo prefería buscar una aplicación económica, pero quien tenía mejor estructurado el proyecto era James, con la aplicación de blockchain para resolver problemas de registro de los planos de diseño en su trabajo la Railnetwork.




Durante toda la tarde estuvimos diseñando y definiendo el promblema mediante los diagramas de relaciones.










Jueves día 9-8-2018

Durante la mañana y la tarde Ronal Mulder estuvo supervisando cada uno de los trabajos que estaban desarrollando los equipos.







Viernes día 10-8-2018

El último, a excepción del grupo A, todos los grupos tenían la programación de los "smart contract" para resolver los objetivos de aplicaciones de blockchain propuestos:

Grupo A: estudiaron la aplicación del blockchain para los títulos en educación.
Grupo B: realizó un trabajo sobre la aplicación blockchain a prestamos bancarios.
Grupo C: sobre la trazabilidad del aceite de oliva.
Grupo D(nosotros): sobre la gestión de proyectos de ingeniería.
Grupo E: estudió como tener transparencia en el estudio del dopaje en deporte de élite.
Grupo F: realizaron un caso práctico para una panadería.
GrupoG: estudiaron la forma de aplicar blockchain para mayor transparencia en organizaciones de dicadas a la caridad y ONG's. 


El resultado final de nuestro trabajo fue este código:

pragma solidity ^0.4.13;

contract SimpleAssemblyContract1 {
    address public owner;
    address public stakeholder;
    string public drawingNo;
    string public drawingVersion;
    string public drawingDescription;
    string public drawingSHA256Hash;
    bool public drawingClosed;
 
    enum State {Created, DrawingFingerPrint, SignedOff, StateError}

 
    event MessageEvent(address indexed recipient, string drawingNo, string drawingVersion, string message);
    event LogEvent(string drawingNo, string drawingVersion, string message);

    constructor (address _stakeholder, string _drawingNo, string _drawingVersion, string _drawingDescription) public {
        owner = msg.sender;
        stakeholder = _stakeholder;
        UpdateAssemblyRecord(_drawingNo, _drawingVersion, _drawingDescription );
    }
 
    function DoLog (string message) private
    {
        emit LogEvent(drawingNo, drawingVersion, message);
    }
 
    function SendStakeHolderMessage (string message) private
    {
       emit MessageEvent(stakeholder, drawingNo, drawingVersion, message);
    } 
 
    function UpdateAssemblyRecord (string _drawingNo, string _drawingVersion, string _drawingDescription) public {
        drawingNo = _drawingNo;
        drawingVersion = _drawingVersion;
        drawingDescription = _drawingDescription;
    }
 
    modifier onlyOwner()
    {
        require(owner == msg.sender);
        _;
    }
 
    function HashAssemblyDrawing (string _drawingSHA256Hash) onlyOwner() public {
        assert(GetState() == State.Created);
        drawingSHA256Hash = _drawingSHA256Hash;
        DoLog("HashAssemblyDrawing");
        SendStakeHolderMessage("HashAssemblyDrawing");
    }

    function SignAssembly () onlyOwner() public {
        assert(GetState() == State.DrawingFingerPrint);
        drawingClosed = true;
        SendStakeHolderMessage("SignAssembly");
        DoLog("SignAssembly");
    }

    function RejectAllOfAssembly () onlyOwner() public {
        assert(GetState() == State.SignedOff);
        drawingClosed = false;
        drawingSHA256Hash = "";
        DoLog("RejectAllOfAssembly");
        SendStakeHolderMessage("RejectAllOfAssembly");
    }

    function GetState() public view returns (State)
    {
        if (bytes(drawingSHA256Hash).length == 0 && !drawingClosed) {
            return State.Created;
        } else if (bytes(drawingSHA256Hash).length > 0 && !drawingClosed) {
            return State.DrawingFingerPrint;
        } else if (bytes(drawingSHA256Hash).length > 0 && drawingClosed) {
            return State.SignedOff;
        } else {
            return State.StateError;
        }
    }
}


--------------------------------------------------------------------------------------------------------------



Con este código conseguimos:

-Que no se produzca la duplicación de datos.
-Simplificar los formularios y la comunicación.
-Integrar y unificar a cada uno de los participantes en el proceso de creación y sus datos.
-Validación automática a partir del consenso.
-Control de la trazabilidad y evolución del proyecto.


Realizamos la aplicación en Metamask el simulador de smart contrat de Ethereum.





No hay comentarios:

Publicar un comentario

Proyectos SABS. Movilidades Erasmus plus para el curso 2018-2022

Proyecto SABS IV del Colegio San Antonio de Padua  El Servicio Español para la Interancionalización de la Eduación (SEPIE)  ha aprobado ...