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

news2024/12/26 23:31:44

   本文旨在介绍一个简单的基于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.coloradmin.cn/o/1912827.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文阅读2-《Dynamic Multimodal Fusion》

摘要 (DynMM),一种新的方法,自适应融合多模态数据和 d在推理过程中生成依赖于数据的前向路径。为此,我们提出了一种门控功能来提供基于多模态特征和一个的模态级或融合级决策提高计算效率的源感知损失函数。 细节 模…

Java技术栈总结:JVM虚拟机篇

一、Java的四种引用类型 1、强引用 最常见的引用,类似Object obj new Object()、String str “hello”。如果一个对象具有强引用,垃圾回收器绝对不会回收它。即使抛出“OutOfMemoryError”错误,程序终止,也不会随意回收具有强引…

【鸿蒙学习笔记】使用动画

官方文档:使用动画 目录标题 属性动画:通用属性发生改变时而产生的属性渐变效果animationanimateTo自定义属性动画 AnimatableExtend 转场动画:是页面或组件的切换动画 , 显示/隐藏 切换时的动画出现/消失转场:实现一个组件出现或…

数据可视化之智慧农业的窗口与引擎

在科技日新月异的今天,农业作为国民经济的基础产业,正逐步向智能化、数字化转型。农业为主题的数据可视化大屏看板,作为这一转型过程中的重要工具,不仅为农业管理者提供了全面、实时的农田信息,还促进了农业资源的优化配置和农业生产效率的提升。本文将深入探讨农业数据可…

Linux_网络编程_TCP

服务器客户端模型: client / server brow / ser b / s http p2p socket——tcp 1、模式 C/S 模式 》服务器/客户端模型 server :socket()-->bind()--->listen()-->accept()-->recv()-->close()client :socket()-->conn…

Mock 测试技术

一、Mock 类框架的使用场景 在实际软件开发中,要进行测试的方法存在外部依赖(如 db,redis,第三方接口调用等),这些外部依赖可能存在各种问题,例如不稳定、缺乏数据、难以模拟等等,所…

Python29 Tensorflow的基本知识和使用

1. TensorFlow TensorFlow 是一个开源的机器学习框架,由 Google Brain 团队开发。它用于数据流图的计算,尤其擅长深度学习任务。在 TensorFlow 中,数据流图(Data Flow Graph)是其核心概念之一,它定义了计算…

(图文详解)小程序AppID申请以及在Hbuilderx中运行

今天小编给大家带来了如何去申请APPID,如果你是小程序的开发者,就必须要这个id。 申请步骤 到小程序注册页面,注册一个小程序账号 微信公众平台 填完信息后提交注册 会在邮箱收到 链接激活账号 确认。邮箱打开链接后,会输入实…

宜春旅游集散中心展厅OLED透明屏方案设计

一、项目概述 为提升宜春旅游集散中心展厅的现代化展示水平,增强游客的参观体验,我们计划在展厅的核心区域引入OLED透明屏技术。该方案旨在通过高科技的视觉呈现方式,将展品信息以虚拟与现实相结合的方式展现,打造出一个既具科技感…

Junior.Crypt.2024 CTF Web方向 题解WirteUp 全

Buy a cat 题目描述:Buy a cat 开题 第一思路是抓包改包 Very Secure App 题目描述:All secrets become clear 开题 乱输一个密码就登陆成功了(不是弱口令) 但是回显Your role is: user 但是有jwt!!&a…

【ROS2】中级-编写动作服务器和客户端(C++)

目标:用 C实现一个动作服务器和客户端。 教程级别:中级 时间:15 分钟 目录 背景 先决条件 任务 1. 创建 custom_action_cpp 包2. 编写动作服务器3. 编写动作客户端 摘要 相关内容 背景 动作是 ROS 中异步通信的一种形式。动作客户端向动作服务…

每日Attention学习9——Efficient Channel Attention

模块出处 [CVPR 20] [link] [code] ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 模块名称 Efficient Channel Attention (ECA) 模块作用 通道注意力 模块结构 模块代码 import torch import torch.nn as nn import torch.nn.functional …

LeetCode之无重复字符的最长子串

1.题目链接 3. 无重复字符的最长子串 - 力扣(LeetCode)https://leetcode.cn/problems/longest-substring-without-repeating-characters/description/ 2.题目解析 题目主要思路其实是滑动窗口,使用两个指针维护一个动态区间,使…

uniapp使用高德地图(公众号+h5)

选择微信小程序的话后果就是你的地图出不来,出来了就报key异常 下面直接放配置和代码: 打包后的高德uni-app,uniCloud,serverless,高德地图,申请高德地图Key,配置使用高德地图,参数说明,高德开放平台用户名,百度地图,申请百度地图Key,配置使用百度地图,…

【深度学习基础】环境搭建 linux系统下安装pytorch

目录 一、anaconda 安装二、创建pytorch1. 创建pytorch环境:2. 激活环境3. 下载安装pytorch包4. 检查是否安装成功 一、anaconda 安装 具体的安装说明可以参考我的另外一篇文章【环境搭建】Linux报错bash: conda: command not found… 二、创建pytorch 1. 创建py…

计算给定数字的阶乘

1 问题 计算给定数字的阶乘. 2 方法 使用while循环。使用for循环。使用函数。 通过实验、实践等证明提出的方法是有效的&#xff0c;是能够解决开头提出的问题。 代码清单 1 使用while循环numberint(input(请输入一个数字:))factorial1i1while i<number: factorialfactor…

Python面试宝典第8题:二叉树遍历

题目 给定一棵二叉树的根节点 root &#xff0c;返回它节点值的前序遍历。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,2,3] 示例 2&#xff1a; 输入&#xff1a;root [] 输出&#xff1a;[] 示例 3&#xff1a; 输入&#xff1a;root […

python学习-容器类型

列表 列表&#xff08;list&#xff09;是一种有序容器&#xff0c;可以向其中添加或删除任意元素. 列表数据类型是一种容器类型&#xff0c;列表中可以存放不同数据类型的值,代码示例如下&#xff1a; 列表中可以实现元素的增、删、改、查。 示例代码如下&#xff1a; 增 …

xcode项目添加README.md文件并进行编辑

想要给xcode项目添加README.md文件其实还是比较简单的&#xff0c;但是对于不熟悉xcode这个工具的人来讲&#xff0c;还是有些陌生&#xff0c;下面简单给大家讲一下流程。 选择“文件”>“新建”>“文件”&#xff0c;在其他&#xff08;滚动到工作表底部&#xff09;下…

Linux 一键部署Mysql 8.4.1 LTS

mysql 前言 MySQL 是一个基于 SQL(Structured Query Language)的数据库系统,SQL 是一种用于访问和管理数据库的标准语言。MySQL 以其高性能、稳定性和易用性而闻名,它被广泛应用于各种场景,包括: Web 应用程序:许多动态网站和内容管理系统(如 WordPress)使用 MySQL 存…