• 学习笔记-9


    基于区块链的智能合约技术与应用综述

    学习目标

    发票就应该和比特币一样是个数据资源,由税务机关发布到链上,同时发布智能合约,规定谁可以开票、谁可以报销等,不同动作之间如何制约,状态如何更新,这是智能合约做的,一旦有商家提交开发票申请,智能合约启动规则验证,看商家是能开发票,同时通过状态管理模块、商家、企业经过协议进行发票开具和状态更新,最后将过程记录在链上。

    我们编写这个智能合约,描述出状态迁移图,智能合约文本,并开发出代码。

    是什么把这个过程记录在链上,即数据如何上链,怎么判断是否上链,是什么机制使得智能合约实现的过程上链。

    初步设想

    老师,目前我的理解是这样的:智能合约行为有好多个(比方说开票、报销),分别对应不同的数据键值,这些数据键值又对应不同的记录变量(发票状态),这些都记录在初始的区块链区块中,当发生任意的智能合约行为(开发票),则查询到对应的记录变量,按照智能合约的行为更新记录变量,写到区块中

    论文内容

    • 阐述了智能合约技术的基本概念、全生命周期、基本分类、基本架构、关键技术、发展现状以及智能合约的主要技术平台
    • 探讨了智能合约技术的应用场景以及发展中所存在的问题
    • 基于智能合约的理论知识,搭建了以太坊实验环境并开发了一个众筹智能合约系统,旨在为基于区块链的智能合约技术的研究与发展提供参考与借鉴

    智能合约架构原理

    智能合约的实现,本质上是通过赋予对象(如资产、市场、系统、行为等)数字特性,即将对象程序化并部署在区块链上,成为全网共享的资源,再通过外部事件触发合约的自动生成与执行,进而改变区块链网络中数字对象的状态(如分配、转移)和数值。智能合约可以实现主动或被动的接受、存储、执行和发送数据,以及调用智能合约,以此实现控制和管理链上数字对象。目前已经出现的智能合约技术平台,如以太坊、Hyperledger等,具备图灵完备的开发脚本语言,使得区块链能够支持更多的金融和社会系统的智能合约应用。

    智能合约基本架构如图所示。总体来说,区块链智能合约包含数据层、传输层、智能合约主体、验证层、执行层以及合约之上的应用层这6个要素。数据层包括链上数据和链下数据,它们是智能合约运行的必要数据源。传输层则封装了用于支持“链上-链上”和“链上-链下”进行通信、数据传输的协议。智能合约主体包括协议和参数。验证层主要包含一些验证算法,用于保证合约代码和合约文本的一致性。执行层主要封装了智能合约运行环境的相关软件。应用层则是基于前5个要素的基础产生的相对高级的各种应用,它主要是为智能合约与其他计算机、应用程序通信服务的。本节将从智能合约主体、数据加载方式、执行环境、验证方法和扩展性的实现5个方面探讨智能合约的关键技术。

    数据加载方式

    数据层包括状态数据、交易数据、合约代码、应用数据等,出于可观察和可验证的目的,状态数据和交易数据一般都采用链上存储方式。应用数据和合约代码的加载方式则分为链上和链下2种。目前绝大多数区块链系统均采用链上方式,将代码和应用数据发布到链上,然后再从链上加载数据和代码并执行,其缺点是代码和应用数据将永久地存在于区块链中,不利于更新维护,占用节点存储资源,随着时间的积累将带来巨大的存储负担。链下方式是指将智能合约的散列值存储于链上,并通过以散列值为索引的存储网络或可信赖的数据源来保存完整的合约代码,如IPFS(inter planetart file system)系统、Tower Crier平台[23]。散列值是由合约代码内容计算而得,这样既可以保证合约的不可篡改性,又可以节约节点大量的存储空间和加强合约的隐私性。

    相关项目

  • 相关阅读:
    IntelliJ IDEA自动补全变量名称和属性名称的快捷键
    Redis客户端 Spring Data Redis(未完)
    用画小狗的方法来解释Java中的值传递
    Java -- Arrays.asList()方法
    有趣的IntegerCache
    字符串使用点滴
    字符串拼接+和concat的区别
    在一个Excel单元格内输入多行内容
    JSTL1.2学习总结
    Android ico
  • 原文地址:https://www.cnblogs.com/gdman/p/12490770.html
Copyright © 2020-2023  润新知