当前位置: 首页 > news >正文

第一个基于FISCOBCOS的前后端项目(发行转账)

   本文旨在介绍一个简单的基于fiscobcos的前后端网站应用。Springboot+js前后端不分离。

所使用到的合约也是一个最基本的。首先您需要知道的是完整项目分为三部分,1是区块链平台webase搭建(此项目使用节点前置webase-front即可),2是智能合约编写(此项目使用的合约是webase自带的Asset合约,便于后者学习),3是前后端代码编写以及连接区块链平台(此项目后端为spring boot,前端仅仅使用了css+html+js)。OK,介绍完毕,那我们正式开始吧!

 

目录

一.才艺展示

一.区块链平台搭建

二,智能合约编写

三,前后端

功能演示:

一.才艺展示

先展示图片,在文末展示具体功能

一.区块链平台搭建

1.搭建单机4节点。戳我查看    (console可以不用搭建,但是java肯定要下载)

2.搭建webase-front节点前置

  • 下载安装包(建议在fisco文件下面)
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.5/webase-front.zip

  • 解压
unzip webase-front.zip

cd webase-front

  • 拷贝sdk证书文件
 cp -r ../nodes/127.0.0.1/sdk/* ./conf/

  • 启动节点

进入~/fisco/nodes/127.0.0.1目录上

img

  • 配置java环境变量
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/

启动

cd &&cd fisco
​​​​​​​cd webase-front
​
bash start.sh

img

  • 输入ip a 查询到你的虚拟机IP

  • ​​​​​​​在浏览器中输入
http://虚拟机IP:5002/WeBASE-Front

 至此,区块链平台已经搭建。

二,智能合约编写

好的,到了我们第二部分了,智能合约可以理解为是我们连接区块链平台的介质,本项目作为最适合新手学习的项目,所以采用的合约是webase-front自带的合约Asset,在我的项目内进行了简单的修改。

我修改后的:

pragma solidity ^0.4.0;contract Asset {address public issuer;mapping (address => uint) public balances;event Sent(address from, address to, uint amount);constructor() {issuer = msg.sender;}function issue(address receiver, uint amount) public {require(msg.sender == issuer, "Only issuer can issue tokens");balances[receiver] += amount;}function send(address receiver, uint amount) public {require(balances[msg.sender] >= amount, "Insufficient balance");balances[msg.sender] -= amount;balances[receiver] += amount;emit Sent(msg.sender, receiver, amount);}function getBalance(address account) public  view returns (uint) {return balances[account];}}

然后我们编译部署该合约

 部署成功后会得到合约地址以及abi的信息,这两个信息可以在后端里进行调用。

合约一共有三个功能(发行,转账,查看余额)

三,前后端

首先展示一下项目目录,可以看到核心代码文件。后端调用智能合约,然后前端进行可视化操作。

后端主要配置文件的地方

功能演示:

代币发行:

登录管理员账户,发行代币。

如果不是管理员账户则发行失败:

这里的权限控制是合约进行的。只需要一行代码,神奇吧。

查询余额:

用户之间转账:

OK,至此功能演示完毕!

想要源码可以私信~     觉得有意思可以举起你发财的小手帮我点个赞~~

http://www.lryc.cn/news/395839.html

相关文章:

  • python采集阿里巴巴历年员工人数统计报告
  • git 基础场景操作
  • 代码随想录-DAY④-链表——leetcode 24 | 19 | 142
  • ORA-12537: TNS:连接关闭/Io 异常: Got minus one from a read call
  • 【Python】一文向您详细介绍 np.inner()
  • pdf分割,这几款软件轻松搞定PDF拆分
  • 【吊打面试官系列-MyBatis面试题】什么是 MyBatis 的接口绑定?有哪些实现方式?
  • 实时消息推送系统,写得太好了!
  • 泛微E9开发 控制日期浏览按钮的可选日期范围
  • ppt接单渠道大公开‼️
  • 从零开始搭建vite开发环境
  • FastAPI本身是一个高性能的Web框架
  • yolov7:训练自己的数据集和测试
  • Redis 集群模式
  • 如何快速实现一个无缝轮播效果
  • kubernetes集群证书过期问题解决
  • PHP框架详解-symfony框架
  • Linux--线程的控制
  • 大数据------JavaWeb------会话跟踪技术(Cookie、Session)(完整知识点汇总)
  • crossJoin笛卡尔积
  • Java客户端调用SOAP方式的WebService服务实现方式分析
  • 华为机试真题--字符串序列判定
  • Linux内核 -- 虚拟化之virtqueue结构
  • 【pytorch18】Logistic Regression
  • PostgreSQL的使用
  • python 高级技巧 0706
  • 面试经典 106. 从中序与后序遍历序列构造二叉树
  • 如何解决群晖Docker注册表查询失败/无法拉取镜像等问题
  • 【Scrapy】 深入了解 Scrapy 中间件中的 process_spider_input 方法
  • 数据库MySQL---基础篇