第六讲 weBASE IDE 的使用和智能合约的开发

Posted yimumengke

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第六讲 weBASE IDE 的使用和智能合约的开发相关的知识,希望对你有一定的参考价值。

01 智能合约概述



智能合约产生价值的最基本前提是有一个强有力的底层介质用于储存,让其不可被物理破坏。
然而,智能合约的本体是一份代码,非常容易被慧改,如何为其提供强力的存储介质就成了问题。这正好是区块链
擅长解决的——通过比特币的实践,证明了区块链可以在分布式环境下让电子记录不可被慕改。
2013年,Vitalik Buterin提出了以太坊,其核心是通过世界状态对区块链数据进行更新和验证。以太坊与比特币最大的不同在于可通过智能合约执行复杂的逻辑操作。
在以太坊上,智能合约的语言是Solidity,它是图灵完备且较为上层的语言,极大地扩展了智能合约的能力范畴,降低了智能合约编写难度。


02 Solidity基础特性

合约构成

状态变量

构造函数

一个智能合约只能有一个构造函数

函数


第一个:uint-》输入
value
自定义:onlyAdmin
返回值:只需给定数据类型

事件


定义事件
构造事件

修饰符



代码在区块链上才能运行,限制在EVM中,

命名规范

合约命名:采用驼峰命名、首字母大写、且能表达对应的业务含义;
方法命名:采用驼峰命名、首字母小写、且能表达对应的业务含义;
事件命名:采用驼峰命名、首字母小写、且能表达对应的业务含义,以Event结尾;
合约变量:采用驼峰命名、以开头,首字母小写、且能表达对应的业务含义;
方法入参/事件参数/局部变量:采用驼峰命名、首字母小写、且能表达对应的业务含义;
方法出参:建议只写出参类型,无需命名,特殊情况例外;

注释

智能合约的注释同大部分编程语言,没有很严格的要求。
对于一些特殊字段、常量、数组中的每个变量及特定逻辑,需进行说明,方法及Event可以使用/comments/
特定字段及逻辑说明可采用//。

03 WeBASE IDE的使用

主要功能

  1. 首先是建立两个存储的结构体:
  • 1)Voter(用于存储投票人的相关信息)
  • 2)Proposal(用于存储候选人的相关信息)
  1. 建立主席的地址存储变量chairperson,和投票人的地址映射对:mapping(address=>Voter)public voters;
  2. 编写投票等相关功能的函数,如:
  • 主席给投票人(地址)授权函数giveRightToVote();
  • 投票人投票函数vote(); 投票人委托函数delegate();
  • 最后是获胜者输出函数winningProposal()与winnerName()函数。

进入we-deploy
cd fisco/webase-deploy
停止所有服务
python3 deploy.py stopAll
开启所有服务
python3 deploy.py startAll

04 智能合约开发实践

05 Q&A

开源进展 | 区块链中间件平台WeBASE v1.4.2发布

作为一个体验友好、功能丰富的区块链中间件平台,WeBASE通过一系列通用功能组件和实用工具,助力社区开发者快速搭建区块链应用的基础环境,并提供可视化合约IDE和一站式联盟链管理台。


开源以来,WeBASE在社区伙伴的通力协作下高速迭代,积累了像合约IDE、ABI编辑器、动态群组管理等工具。这些工具投入社区广泛使用后,使用者也不遗余力地反馈了一系列优化点。 较为高频的建议是:
  1. 合约IDE能够导出合约功能,方便合约开发。
  2. 管理台增加合约事件查看功能,方便应用开发使用。
  3. WeBASE-Front补全更多API工具,以便单独利用WeBASE-Front构建应用而不需要依赖其他工具。
  4. 合约IDE支持solidity 0.6版本。


这些优化点既是WeBASE不断向更好优化的动力,也为项目的前进指引方向。此次更新的WeBASE v1.4.2,针对性地就上述优化点进行迭代,希望能够持续为社区伙伴带来更好用的区块链应用开发工具。


  新增合约事件查看功能


合约事件是区块链应用开发的一种工具,其主要用途是:
  1. 合约事件可以作为一种链上链下的交互工具。对于区块链应用来说,合约事件可以用异步的方式把智能合约更改通知链下应用,让链下应用感知到链上状态的变化,实现相应的业务逻辑。
  2. 合约事件可以作为一种区块链存储数据的方式。这种方式存储的数据,链不能再直接读取消费。
  3. 合约事件可以作为一个合约开发调试的工具。利用合约事件输出合约执行的状态,便于开发者开发调试使用。


随着社区的发展,越来越多开发者使用这个工具来服务于应用开发。为了更方便开发者使用合约事件,我们在WeBASE v1.4.2中新增合约事件查看功能,支持开发者便捷地查看合约事件。



  持续优化合约IDE


WeBASE v1.4.2在上一版本的基础上,继续对合约IDE进行优化,主要针对合约文件导出功能、0.6版本solidity的切换功能,以及IDE合约按需加载等进行优化。
  • 合约文件导出功能:用户可以在IDE中选中合约文件或文件夹,点击右键,然后在弹出的右键菜单中点击“导出”选项。合约或合约文件夹会以ZIP包的格式导出,其中内容包括合约源文件、合约abi和合约bin。
  • 支持0.6版本solidity,此功能主要方便用户使用0.6版本合约的新特性。


开源进展 | 区块链中间件平台WeBASE v1.4.2发布


  WeBASE-Front新增一系列工具接口


在整理社区用户反馈的需求与问题时,我们看到这么一条需求:希望WeBASE-Front补全更多API工具,以便单独利用WeBASE-Front构建应用而不需要依赖其他工具。


因此,我们在WeBASE-Front暴露了一系列新的工具类接口,提供区块链开发中经常用到的解析、转换、转码等工具,减少依赖,提高效率:
  • 交易解析接口
  • 私钥生成接口
  • 公私钥转换接口
  • 私钥格式转换接口
  • HASH计算接口等


后续,我们将持续开发和丰富这部分工具,更好地支持社区的区块链应用开发和落地。


  更多优化和修复


优化
  • WeBASE-Front升级web3sdk为2.6.2版本
  • WeBASE-Sign适配FISCO BCOS java-sdk
  • 项目增加release_notes.txt
  • 一键部署脚本优化数据库检测
  • 浏览器支持合约版本切换、用户导入和关联、增加配置分离开关


bugfix
  • 修改WeBASE-Front内存数据库中topicList字段为text类型
  • bugfix: DB中合约存储字段长度扩展,修正长度太长导致合约存储接口报错
  • bugfix: 修复使用了结构体的合约部署失败的问题
  • bugfix: 一键部署脚本调整服务启动顺序,防止服务启动顺序错误出现的错误日志


WeBASE日渐茁壮的路上,离不开每一位社区伙伴的帮助与支持。感谢@George、@power、@lilianwen等伙伴对本次迭代作出的贡献,欢迎更多伙伴在github或交流群中,和我们分享想法和建议!


  即刻使用



WeBASE 代码仓库:
https://github.com/WeBankFinTech/WeBASE
WeBASE 国内镜像:
https://gitee.com/WeBank/WeBASE
WeBASE 技术文档:
https://webasedoc.readthedocs.io/zh_CN/latest
WeBASE 技术文档国内镜像:
https://fintech.webank.com/developer/docs/webase

首次体验WeBASE,可参考一键部署文档:
https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/install.html

如需升级已有版本,可参考:
WeBASE-Front升级说明:
https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Front/upgrade.html
WeBASE-Node-Manager升级说明:
https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Node-Manager/upgrade.html
WeBASE-Sign升级说明:
https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Sign/upgrade.html

向我们报告问题,欢迎提交issue:
https://github.com/WeBankFinTech/WeBASE/issues


以上是关于第六讲 weBASE IDE 的使用和智能合约的开发的主要内容,如果未能解决你的问题,请参考以下文章

WeBASE-Front安装及使用

“知识与生活”系列讲座第六讲预告|人工智能时代的文学与潜能

「科创俱乐部 第六讲」初窥网络模型

EOS基础全家桶智能合约IDE-EOS_Studio

EOS基础全家桶智能合约IDE-EOS_Studio

智能合约开发实例——房产产权——2021.7.30