区块链技术原理与应用 课件 项目9智能合约与DAPP开发_第1页
区块链技术原理与应用 课件 项目9智能合约与DAPP开发_第2页
区块链技术原理与应用 课件 项目9智能合约与DAPP开发_第3页
区块链技术原理与应用 课件 项目9智能合约与DAPP开发_第4页
区块链技术原理与应用 课件 项目9智能合约与DAPP开发_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目9:智能合约与DAPP开发项目9任务19:工程款智能合约实战任务20:基于Java的抽奖智能合约实战任务21:新一代区块链系统DAPP开发体验1智能合约概述2智能合约编写与执行3基于Java智能合约编写与执行目录CONTENTSDAPP开发方法54DAPP概述知识导图知识目标教学目标了解智能合约的特性熟悉智能合约的编写、执行规则熟悉基于Java的智能合约的编写、执行规则熟悉DAPP开发方法能力目标素质目标认真的学习态度追根溯源的学习精神刻苦钻研的精神教学目标能够编写、执行智能合约能够编写、执行基于Java的智能合约能够开发简易DAPP1智能合约概述2智能合约编写与执行3基于Java智能合约编写与执行目录CONTENTSDAPP开发方法54DAPP概述1.智能合约概述智能合约概念由NickSzabo于1995年首次提出,所谓的智能合约其实质就是信息化的合同,区块链中可以通过智能合约在没有第三方的情况下进行可信交易,且这些交易可追踪并不可逆转,智能合约规则公开透明,合约内的规则以及数据对外部可见,所有交易公开可见,不会存在任何虚假或者隐藏的交易。智能合约的目的是提供优于传统合约的安全方法,并减少与合约相关的其他交易成本。1智能合约概述2智能合约编写与执行3基于Java智能合约编写与执行目录CONTENTSDAPP开发方法54DAPP概述2.智能合约编写、执行规则智能合约编写规则新一代区块链系统的智能合约共由4部分组成:合约名称、触发机制、预置条件、合约内容,必须严格按照顺序进行合约的编写,智能合约编写模板如下:智能合约名称(合约名称)触发机制函数预置条件函数合约内容合约主体合约上链2.智能合约编写、执行规则智能合约名称:用来指定智能合约名称,是编写智能合约的必填项,参数为智能合约名称。触发机制函数:包括合约执行时间函数和合约执行次数函数,编写智能合约时二者必须选其一,不能同时使用两个。合约执行时间函数:参数为合约开始执行的时间,格式为“YYYY-MM-DD”,设置该函数后合约只能执行一次。合约执行次数函数可以设置合约执行的次数,参数为允许智能合约执行的最大次数。2.智能合约编写、执行规则预置条件函数:指用户授权函数,也是编写合约的必填项,有多少方参与则需要添加多少个该函数。用户授权函数的第一个参数为合约参与方,为必填项,若填写公钥则为指定用户,反之则为泛指用户。第二个参数为变量的定义,为选填项,用于合约内容的判断和合约的执行,可根据实际情况进行参数的增减,如:用户授权("甲方","数值变量转出金额,数值变量工程进度")。合约内容函数:“合约内容”作为合约主体内容的开始标识,无需填写参数、无需添加括号,是整份合约的开始,为必填项。“合约上链”作为合约的结束标识,无需填写参数,是整份合约的结束,为必填项。“履约方()”为选填项,参数要求与用户授权函数中第一个参数的值一致,只能在合约内容中使用,使用后往下的函数都由该履约方执行,直至履约方更换或合约结束为止。需要注意的是,不是所有函数都能在合约中使用,例如闪信功能就不能够在智能合约中使用。2.智能合约编写、执行规则例6-1:编写一个名称为“数据上链合同”的智能合约,执行次数为1次,参与方只有1个,且没有指定公钥,任何人都可以执行该合约。智能合约名称("数据上链合同")合约执行次数(1)用户授权("甲方","文字变量上链文本")合约内容 履约方("甲方")准备数据(上链文本)

显示信息(数据上链())合约上链()2.智能合约编写、执行规则智能合约的执行规则新一代区块链系统通过合约授权函数执行智能合约,参数为合约的哈希值,若合约的用户授权函数中设置了变量,则参数中需要根据变量的数量填写对应的值,当合约中所有参与方都授权合约后才会生效,且只有最后一个授权合约的参与方能看到执行合约后生成的哈希值。合约授权的条件受合约上链时的设置控制,包括执行方是否有指定、触发机制的设置和预置条件的设置等。2.智能合约编写、执行规则登录李四账号,将例6-1的智能合约进行授权执行,代码如下:登录系统("李四","123456")显示信息(解析函数返回变量(取出合约哈希()))文字变量合约哈希=返回_合约哈希显示信息(合约授权(返回_合约哈希,"上链文本='这是智能合约执行的数据上链'"))[{"合约授权":"授权合约成功!"},{"系统返回_0":"执行合约成功!"},{"数据上链":"数据上链成功!","哈希值":"202106031012024434344556056502450624024424624445623263562263424622222546506222","区块高度":"8","业务名称":"cy_chain"}]合约执行结果显示如下任务实施LOGO详细步骤请参考教材任务19的任务实施部分1智能合约概述2智能合约编写与执行3基于Java智能合约编写与执行目录CONTENTSDAPP开发方法54DAPP概述3.Java智能合约编写规则新一代区块链系统中Java智能合约共由6部分组成:合约名称、触发机制、预置条件、合约内容、合约内容结束标志、合约结束标识,必须严格按照顺序进行合约的编写,智能合约编写模板如下://设置合约名称contractName(......)//触发机制-设置合约执行次数contractExeTimes(......)//触发机制-设置合约执行时间contractExeTime(......)//预置条件-设置用户授权要素userWarrant(......)//设置合约内容contractBegin(“executeUser(......)......”)//合约结束标志contractEnd(......)3.Java智能合约编写规则模板说明如下:1、智能合约名称智能合约名称函数“contractName()”指定智能合约名称,是编写智能合约的必填项,参数为智能合约名称。2、触发机制函数触发机制函数包括合约执行时间函数“contractExeTime()”和合约执行次数函数“contractExeTimes()”,编写智能合约时二者必须选其一,不能同时使用两个。合约执行时间函数参数为合约开始执行的时间,格式为“YYYY-MM-DD”,设置该函数后合约只能执行一次。合约执行次数函数可以设置合约执行的次数,参数为允许智能合约执行的次数。3.Java智能合约编写规则模板说明如下:3、预置条件函数预置条件函数指用户授权函数“userWarrant()”,也是编写合约的必填项,有多少方参与则需要添加多少个该函数。用户授权函数的第一个参数为合约参与方,为必填项,若填写公钥则为指定用户,反之则为泛指用户。第二个参数为变量的定义,为选填项,用于合约内容的判断和合约的执行,可根据实际情况进行参数的增减,如:用户授权("甲方","数值变量转出金额,数值变量工程进度")。3.Java智能合约编写规则模板说明如下:4、合约内容函数合约内容“contractBegin()”作为合约主体内容的函数,其只有一个参数,此参数包括了整份合约的内容。履约方“executeUser()”为选填项,其以String类型作为“contractBegin()”的形参的一部分。“executeUser()”参数要求与用户授权函数中第一个参数的值一致,只能在合约内容中使用,使用后往下的函数都由该履约方执行,直至履约方更换或合约结束为止。需要注意的是,不是所有函数都能在合约内容中使用,例如闪信功能就不能够在智能合约内容中使用。3.Java智能合约编写规则模板说明如下:5、合约结束标志“合约结束”作为合约内容的结束标识,无需填写参数、无需添加括号,是整份合约内容的结束,为必填项。6、合约上链“合约上链”作为合约的结束标识,无需填写参数,是整份合约的结束,为必填项。3.Java智能合约编写规则例6-2:编写一个名称为“数据上链合同”的智能合约,执行次数为1次,参与方只有1个,且没有指定公钥,任何人都可以执行该合约。//智能合约名称("数据上链合同")StringcontractName="数据上链合同";//合约执行次数(1)IntegercontractExeTimes=1;/** *预置条件(用户授权) *用户授权("甲方","文字变量上链文本")*/Map<String,List<String>>preConditions=newHashMap<>(1);preConditions.put("甲方",Arrays.asList("文字变量上链文本"));3.Java智能合约编写规则//合约内容StringcontractContent=newStringBuffer( //履约方("甲方") BasicApiTemple.executeUser("甲方")) .append("\n") /** *文本上链 *准备数据("上链文本") *显示信息(数据上链()) */.append(BasicApiTemple.textOnChain("上链文本",null,null,null,null,null,null,null)).toString();//合约上链StringcontractOnChain=CyChainApi.contractOnChain(null,contractName,null,contractExeTimes,preConditions,contractContent);System.out.print(contractOnChain);3.Java智能合约编写规则Java智能合约执行规则新一代区块链系统java智能合约编写时通过合约授权函数“contractWarrant()”执行智能合约,参数为合约的哈希值登录李四账号,将例6-2的智能合约进行授权执行,代码如下:Stringlogin=CyChainApi.login("李四","123456");System.out.print(login);//取出合约哈希StringgetContractHash=BasicApiTemple.getLatestContractHash();//解析函数返回变量StringparseFuncReturnVar=BasicApiVarTemple.parseFuncReturnVar(getContractHash);//显示信息(解析函数返回变量(取出合约哈希()))StringparseContractHash=CyChainApi.printVar(parseFuncReturnVar);//合约授权参数值Stringparameters="上链文本='这是智能合约执行的数据上链'";//显示信息(合约授权(contractHash,parameters))StringcontractWarrant=CyChainApi.contractWarrant(contractHash,parameters);System.out.print(contractWarrant);任务实施LOGO详细步骤请参考教材任务20的任务实施部分1智能合约概述2智能合约编写与执行3基于Java智能合约编写与执行目录CONTENTSDAPP开发方法54DAPP概述4.

DAPP概述DAPP就是去中心化应用,也叫做分布式应用,指在底层区块链平台衍生的各种分布式引用,是区块链的服务提供形式。DAPP之于区块链就如同APP之于IOS和Android,APP就是把一段程序放到你手机的中,而DAPP也是把一段程序放到你的手机,DAPP甚至可以没有程序,就是一个网页页面。DAPP与APP并不是取代关系,而是并存关系。因为DAPP直接和区块链技术挂钩,和交易数据、交易资产有关联,和不可篡改去中心化存储有关联,随着区块链技术越来越普及且被应用于各种业务场景中,DAPP将越来越受重视。目前已有的DAPP有基于以太坊的加密猫游戏、imToken钱包等。4.1DAPP简介4.

DAPP概述DAPP前端与普通的APP或者WEB应用一致,后端基于区块链分布式存储,通过智能合约取出数据,且DAPP的运营也是去中心化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论