第一个基于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目录上

 

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

启动

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

 

  • 输入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,至此功能演示完毕!

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

 

下载的话记得点一个star哦~

 

 

 

好的,下面是一个简单的前后端分离的转账应用的示例代码: 后端代码(使用Spring Boot框架和JPA): ```java @RestController @RequestMapping("/api/transfer") @EnableTransactionManagement public class TransferController { @Autowired private TransferRepository transferRepository; @PostMapping @Transactional public ResponseEntity<?> transfer(@RequestBody TransferDTO transferDTO) { TransferEntity from = transferRepository.findById(transferDTO.getFromAccountId()).orElseThrow(() -> new RuntimeException("Account not found")); TransferEntity to = transferRepository.findById(transferDTO.getToAccountId()).orElseThrow(() -> new RuntimeException("Account not found")); if (from.getBalance() < transferDTO.getAmount()) { throw new RuntimeException("Insufficient balance"); } from.setBalance(from.getBalance() - transferDTO.getAmount()); to.setBalance(to.getBalance() + transferDTO.getAmount()); transferRepository.save(from); transferRepository.save(to); return ResponseEntity.ok().build(); } } ``` 前端代码(使用Vue.js框架和Axios库): ```html <template> <div> <form @submit.prevent="transfer"> <label>From Account:</label> <input type="text" v-model="fromAccountId" required> <br> <label>To Account:</label> <input type="text" v-model="toAccountId" required> <br> <label>Amount:</label> <input type="text" v-model="amount" required> <br> <button type="submit">Transfer</button> </form> </div> </template> <script> import axios from 'axios' export default { data() { return { fromAccountId: '', toAccountId: '', amount: '' } }, methods: { transfer() { axios.post('/api/transfer', { fromAccountId: this.fromAccountId, toAccountId: this.toAccountId, amount: this.amount }).then(() => { alert('Transfer successful!') }).catch(error => { alert('Transfer failed: ' + error.response.data.message) }) } } } </script> ``` 在这个例子中,我们使用了`@EnableTransactionManagement`注解来启用事务管理,同时使用了`@Transactional`注解来标记转账方法,以确保在转账过程中如果任何一个操作失败,整个事务会回滚。此外,我们还使用了JPA和Vue.js框架来实现数据持久化和前端UI。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发呆...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值