开源进展 | WeBASE v3.1.0发布,新增多个实用特性
WeBASE是一个友好、功能丰富的区块链中间件平台,通过一系列通用功能组件和实用工具,助力社区开发者更快捷地与区块链进行交互。
目前WeBASE已更新迭代至v3.1.0版本,本次更新中,WeBASE带来了最新的合约Java脚手架导出功能,完成达梦数据库适配,新增WeBASE CRUD预编译接口代码,并在技术文档中归类呈现了数十篇由社区开发者贡献的区块链教程,以便用户可以按需查阅。
一起来看看WeBASE v3.1.0的新功能吧,欢迎大家star并积极体验。
Java项目导出更友好
本次更新中,我们引入了微众区块链开源的WeBankBlockchain SmartDev-Scaffold合约中最新的v3.3.0版本Java脚手架组件,适配了合约IDE 中Java项目导出功能。
WeBASE v3.1.0导出的Java项目会自动配置节点的IP端口、SDK证书、私钥,使用方法与WeBASE v1.5.5版本所导出的Java项目使用方法一致。同时,基于WeBankBlockchain SmartDev-Scaffold组件,WeBASE优化了导出Java项目的代码逻辑,代码更简洁,可读性更好,更方便开源社区的开发者基于SmartDev-Scaffold或WeBASE的导出接口进行二次开发。
与此同时,WeBASE v3.1.0支持使用 Solidity v0.8.11版本的合约进行Java项目导出,同时也优化了对struct等复杂参数的适配。
图1-导出Java项目
适配达梦数据库
达梦数据库是具有完全自主知识产权的高性能数据库管理系统。来自数字广东网络建设有限公司的开发者梁锦辉(github ID:JHL)基于WeBASE v3.0.2 tag的代码进行二次开发,将私钥托管与签名服务WeBASE-Sign和节点管理服务WeBASE-Node-Manager适配了达梦数据库,并将代码贡献至WeBASE-Sign和WeBASE-Node-Manager的lab-xc分支。
值得关注的是,适配达梦数据库的代码可以通过修改数据库的JDBC驱动和修改Mybatis的配置,实现同一套代码在MySql和达梦数据库之间进行切换使用。
梁锦辉将如何改造WeBASE代码适配达梦数据库的经验整理为技术教程,帮助社区开发者理解其改造思路,方便使用WeBASE其他版本的社区开发者们可以参考其教程对WeBASE进行二次开发。
图2-达梦数据库适配教程
适配达梦数据库的WeBASE-Sign代码仓库:
https://github.com/WeBankBlockchain/WeBASE-Sign/tree/lab-xc
适配达梦数据库的WeBASE-Node-Manager代码仓库:
https://github.com/WeBankBlockchain/WeBASE-Node-Manager/tree/lab-xc
《使用达梦数据库对WeBASE进行适配》技术教程:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Console-Suit/articles/dameng_db_fit_in.html
新增WeBASE CRUD预编译接口代码
社区开发者李铁乔(github ID:Litieqiao)基于FISCO BCOS console控制台与WeBASE-Front v1.5.5版本的CRUD预编译合约接口,完成了节点前置服务WeBASE-Front中适配FISCO BCOS v3.x CRUD接口的开发,开发者可以直接调用节点前置的接口来发起CRUD预编译合约的调用。
该部分代码已合入到了WeBASE-Front master-3.0分支中,欢迎社区的伙伴们部署最新的WeBASE-Front v3.1.0进行体验。
开发者在体验时留意一下,此处更新的CRUD接口需要直接通过HTTP接口调用,具体方法为:使用WeBASE-Front的swagger进行调用,url为:/WeBASE-Front/swagger-ui.html#/precntauth_precompiled_controller/descTableUsingPOST
图3-节点前置中的CRUD接口列表
集合数十篇社区贡献的区块链教程
作为备受发者关注的区块链中间件,WeBASE一直秉承开放共享、多元包容的精神链接开源爱好者。在过往社区Task挑战赛中,众多开发者或是踊跃将自身在不同场景应用WeBASE的经验以技术教程形式贡献给社区,或者提交PR修复或优化WeBASE功能特性。本次更新,我们在WeBASE技术文档中新增“WeBASE社区文章”模块,将开发者贡献的数十篇教程归类呈现,以便社区用户可以按需查阅。
我们期待区块链技术爱好者和开源社区的伙伴们,一同参与共建,协力推动WeBASE向更完善、更友好的生态上发展。
图4-社区文章一览
“WeBASE技术文档社区文章”模块链接:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Console-Suit/articles/index.html
优化和修复
WeBASE应用管理SDK WeBASE-APP-SDK更新至 v1.5.6版本,同时支持WeBASE v1.x和v3.x版本的应用接入。
修复WeBASE v3.x版本应用管理接入时报错无法通过鉴权的问题, 开发者应用管理接入时需要对应使用webase-app-sdk v1.5.6及以上版本,更多详情可参考最新的WeBASE应用接入管理文档。
修复合约IDE使用solidity v0.6.10-gm时的版本判断为0.6.9版本的问题。
修复合约IDE中的地址参数长度判断。
即刻使用
上述优化及功能所涉及的最新代码和技术文档已同步更新,欢迎体验和star支持。如需咨询技术问题,欢迎本公众号对话框回复【小助手】进技术交流群。
WeBASE代码仓库:https://github.com/WeBankBlockchain/WeBASE/tree/master-3.0
WeBASE代码仓库国内镜像:https://gitee.com/WeBank/WeBASE/tree/master-3.0
WeBASE 技术文档:
https://webasedoc.readthedocs.io/zh_CN/lab
WeBASE 技术文档国内镜像:
https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/doc/lab/index.html
首次体验WeBASE,可参考一键部署文档:https://webasedoc.readthedocs.io/zh_CN/lab/docs/WeBASE/install.html
向我们报告问题,欢迎提交issue:
https://github.com/WeBankBlockchain/WeBASE/issues
相关文章:

开源进展 | WeBASE v3.1.0发布,新增多个实用特性
WeBASE是一个友好、功能丰富的区块链中间件平台,通过一系列通用功能组件和实用工具,助力社区开发者更快捷地与区块链进行交互。 目前WeBASE已更新迭代至v3.1.0版本,本次更新中,WeBASE带来了最新的合约Java脚手架导出功能ÿ…...

C++动态加载 插件
动态加载(Dynamic Loading)是指在程序运行时,根据需要动态地加载和链接代码或资源。 动态加载的主要目的是实现程序的灵活性和可扩展性,以及减少内存消耗和启动时间。通过动态加载,程序可以根据运行时的需求加载特定的…...

redis的缓存更新策略
目录 三种缓存更新策略 业务场景: 主动更新的三种实现 操作缓存和数据库时有三个问题 1.删除缓存还是更新缓存? 2.如何保证缓存与数据库的操作的同时成功或失败? 3.先操作缓存还是先操作数据库? 缓存更新策略的最佳实践方案&am…...

Android应用开发(6)TextView进阶用法
Android应用开发学习笔记——目录索引 本章介绍文本视图(TextView)的显示,包括:设置文本内容、设置文本大小、设置文本显示颜色。 一、设置TextView显示内容 Layout XML文件中设置 如:res/layout/activity_main.xm…...

Matlab滤波、频谱分析
Matlab滤波、频谱分析 滤波: 某目标信号是由5、15、30Hz正弦波混合而成的混合信号,现需要设计一个滤波器滤掉5、30Hz两种频率。 分析:显然我们应该设计一个带通滤波器,通带频率落在15Hz附近。 % 滤波 % 某目标信号是由5、15、3…...

车载软件架构 —— 车载软件入侵检测系统
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人…...

“深入解析JVM内部机制:理解Java虚拟机的工作原理“
标题:深入解析JVM内部机制:理解Java虚拟机的工作原理 摘要:本文将深入探讨Java虚拟机(JVM)的内部机制,解释其工作原理。我们将讨论JVM的组成部分、类加载过程、运行时数据区域以及垃圾回收机制。此外&…...

FPGA初步学习之串口发送模块【单字节和字符串的发送】
串口相关简介 UART 在发送或接收过程中的一帧数据由4部分组成,起始位、数据位、奇偶校验位和停止位,如图所示。其中,起始位标志着一帧数据的开始,停止位标志着一帧数据的结束,数据位是一帧数据中的有效数据。 通常用…...

Kotlin重点理解安全性
目录 一 Kotlin安全性1.1 可空类型1.2 安全调用运算符1.3 Elvis 运算符1.4 非空断言运算符1.5 安全类型转换1.6 延迟初始化 一 Kotlin安全性 Kotlin 在设计时采用了一系列策略,旨在尽可能地减少空指针异常(NullPointerException)的出现。空指…...

基于Java+SpringBoot+SpringCloud+Vue的智慧养老平台设计与实现(源码+LW+部署文档等)
博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…...

Spring中的全局异常处理
在项目中通常会定义各种异常,比如断言异常、业务异常,甚至调用外部接口报的异常需要转成自己系统中的异常类型,这时就需要将各种异常类型进行统一的处理,返回统一的数据结构。在spring中提供了这样全局统一处理异常的注解Controll…...

【安全测试】Web应用安全之XSS跨站脚本攻击漏洞
目录 前言 XSS概念及分类 反射型XSS(非持久性XSS) 存储型XSS(持久型XSS) 如何测试XSS漏洞 方法一: 方法二: XSS漏洞修复 原则:不相信客户输入的数据 处理建议 资料获取方法 前言 以前都只是在各类文档中见到过XSS,也进…...

LeNet卷积神经网络-笔记
LeNet卷积神经网络-笔记 手写分析LeNet网三卷积运算和两池化加两全连接层计算分析 修正上图中H,W的计算公式为下面格式 基于paddle飞桨框架构建测试代码 #输出结果为: #[validation] accuracy/loss: 0.9530/0.1516 #这里准确率为95.3% #通过运行结果可以看出&am…...

使用XMLHttpRequest实现文件异步下载
1、问题描述 我想通过异步的方式实现下载文化,请求为post请求。一开始我打算用ajax。 $.ajax({type:post,contentType:application/json,url:http://xxx/downloadExcel,data:{data:JSON.stringify(<%oJsonResponse.JSONoutput()%>)},}).success(function(dat…...

Lombok 的安装与使用
文章目录 一、什么是 Lombok1.1 Lombok 的概念1.2 为什么使用 Lombok1.3 Lombok 的相关注解 二、Lombok 的安装2.1 引入依赖2.2 安装插件 三、Lombok 的使用案例四、Lombok 的原理 一、什么是 Lombok 1.1 Lombok 的概念 Lombok(“Project Lombok”)是一…...

springBean生命周期解析
本文基于Spring5.3.7 参考: kykangyuky Spring中bean的生命周期 阿斌Java之路 SpringBean的生命周期, 杨开振 JavaEE互联网轻量级框架整合开发 黑马程序员 JavaEE企业级应用开发教程 马士兵 Spring源码讲解 一. SpringBean生命周期流程图 二. 示例代码 …...

人工智能轨道交通行业周刊-第54期(2023.7.31-8.6)
本期关键词:BIM智能运维、铁水联运、编组站美容、鸿蒙4.0、LK-99完全悬浮 1 整理涉及公众号名单 1.1 行业类 RT轨道交通人民铁道世界轨道交通资讯网铁路信号技术交流北京铁路轨道交通网上榜铁路视点ITS World轨道交通联盟VSTR铁路与城市轨道交通RailMetro轨道世界…...

Docker Compose 使用方法
目录 前言 安装 Docker Compose Ubuntu 安装与更新 Red Hat 安装与更新 验证是否安装 Docker Compose 创建 docker-compose.yml 文件 创建一个MySQL 与 tomcat 示例 使用Docker Compose启动服务 前言 Docker Compose 是一个工具,旨在帮助定义和 共享多容器…...

HTML 初
前言 HTML的基本骨架 HTML基本骨架是构建网页的最基本的结果。 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…...

IPv6地址分类,EUI-64转换规则
1、可聚合的单全球单播地址Global Unique Address: Aggregate global unicast address,前3位是001,即2000::/3,目前IANA已经将一部分可聚合全球单播进行了专门使用,如:2001::/16用于IPV6互联网,…...

Nginx安装部署
什么是Nginx? Nginx(发音同engine x)是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器、反向代 理服务器以及电子邮件(IMAP/POP3)代理服务器。 Nginx 因具有高并发(特別是静态资源)、 占用系统资…...

物联网|按键实验---学习I/O的输入及中断的编程|读取I/O的输入信号|中断的编程方法|轮询实现按键捕获实验-学习笔记(13)
文章目录 实验目的了解擒键的工作原理及电原理图 STM32F407中如何读取I/O的输入信号STM32F407对中断的编程方法通过轮询实现按键捕获实验如何利用已有内工程创建新工程通过轮询实现按键捕获代码实现及分析1 代码的流程分析2 代码的实现 Tips:下载错误的解决 实验目的 了解擒键…...

Hadoop-HDFS的Namenode及Datanode(参考Hadoop官网)
HDFS有什么特点,被设计做什么 Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统。有一下几个特点: HDFS是一个高度容错性的系统,具有高容错、高可靠性、高扩展性的特点,适合部…...

C:通过alarm发送信号
可以通过alarm定时发送SIGALRM信号: #include <unistd.h> unsigned int alarm(unsigned int seconds); alarm()函数用来在seconds秒之后安排发送一个SIGALRM信号,如果seconds为0,将取消所有已设置的闹钟请求。alarm()函数的返回值是以前…...

如何将 dubbo filter 拦截器原理运用到日志拦截器中?
业务背景 我们希望可以在使用日志拦截器时,定义属于自己的拦截器方法。 实现的方式有很多种,我们分别来看一下。 拓展阅读 java 注解结合 spring aop 实现自动输出日志 java 注解结合 spring aop 实现日志traceId唯一标识 java 注解结合 spring ao…...

【java】【maven】【基础】MAVEN安装配置介绍
目录 1 下载 2 安装-windows为例 3 配置环境变量 3.1 JAVA_HOME 3.2 MAVEN_HOME 3.3 PATH 3.4 验证 4 MAVEN基础概念 4.1 仓库概念 4.2 坐标概念 4.2.1 打开网址 4.2.2 输入搜索内容junit 4.2.3 找到对应API名称点击 4.2.4 点击对应版本 4.2.5 复制MAVEN坐标 4.3 配置…...

【C语言进阶】指针的高级应用(下)
文章目录 一、指针数组与数组指针1.1 指针数组与数组指针的表达式 二、函数指针2.1 函数指针的书写方式 三、二重指针与一重指针3.1 二重指针的本质3.2 二重指针的用法3.3 二重指针与数组指针 总结 一、指针数组与数组指针 (1)指针数组的实质是一个数组,这个数组中存…...

【uniapp APP隐藏顶部的电量,无线,时间状态栏与导航栏】
uniapp APP隐藏顶部的电量,无线,时间状态栏 如下代码配置(在一个页面设置这个段代码,所有页面都会消失) onShow() {// #ifdef APP-PLUS// 隐藏顶部电池,时间等信息 plus.navigator.setFullscreen(true);//隐藏虚拟按…...

微信小程序前后页面传值
微信小程序前后页面传值 从前一个页面跳转到下一个页面,如何传递参数?从后一个页面返回前一个页面,如何回调参数? 向后传值 从前一个页面跳转到下一个页面并传值。 前页面:在跳转链接中添加参数并传递 wx.navigat…...

没有jodatime,rust里怎么比较两个日期(时间)的大小呢?
关注我,学习Rust不迷路!! 在 Rust 中,比较两个日期的大小有多种方法。以下是列举的四种常见方法: 1. 使用 PartialOrd trait: use chrono::prelude::*;fn main() {let date1 NaiveDate::from_ymd(2022,…...