项目需求2张表:资源表、资源访问记录表,需要资源上链智能合约、访问记录上链智能合约、以及资源所有权转移智能合约。

FISCO BCOS提供合约KV存储接口开发模式,可以通过合约创建表,并对创建的表进行增删改查操作。

所以,针对2表创建两个智能合约即可实现对表的增删改查操作。资源的所有权转移可以通过对资源表的数据属主的修改实现。

1. KVTable合约

  • Solidity合约只需要引入FISCO BCOS官方提供的Table.sol抽象接口合约文件即可。

  • webankblockchain-liquid(以下简称WBC-Liquid)合约在实现合约之前对KVTable的接口进行声明使用即可。

Table包含分布式存储专用的智能合约接口,其接口实现在区块链节点,其中,TableManager可以创建专属KV表,KVTable可以用作表进行get/set操作。

使用KV存储预编译合约开发应用 — FISCO BCOS v3 v3.0.0 文档

1、资源表

resource
ipfs_hash(key) user(value)
QmUpYtJoyby5jYg9oez8qLpMxqae4pe6rHxsmtWLH2APTZ 20211165XX
// SPDX-License-Identifier: Apache-2.0
pragma solidity >=0.6.10 <0.8.20;
pragma experimental ABIEncoderV2;import "./Table.sol";contract r_upload{event RegisterEvent(int256 ret,string indexed ipfs_hash,string indexed user);KVTable kvTable;TableManager tm;string constant tableName = "resource";constructor() public {// 构造函数中创建r_upload表tm = TableManager(address(0x1002));// 资产管理表, key : ipfs_hash , field : user// |  存储hash(主键)      |     资源属主      |// |-------------------- |-------------------|// |        ipfs_hash    |      user         |// |---------------------|-------------------|//// create tabletm.createKVTable(tableName, "ipfs_hash", "user");// get table addressaddress t_address = tm.openTable(tableName);kvTable = KVTable(t_address);}/*描述 : 根据资源hash查询资源属主参数 :ipfs_hash : 资源hash返回值:参数一: 成功返回0, 账户不存在返回-1参数二: 第一个参数为0时有效,资源属主*/function select(string memory ipfs_hash) public view returns (bool, string memory) {// 查询bool result;string memory user;(result, user) = kvTable.get(ipfs_hash);return (result, user);}/*描述 : 资源上链参数 :ipfs_hash : 资源hashuser  : 资源属主返回值:0  资产注册成功-1 资产账户已存在-2 其他错误*/function register(string memory ipfs_hash, string memory user)publicreturns (int256){int256 ret_code = 0;bool ret = true;string memory user_1="2021116579";// 查询资源是否上链(ret,user_1) = select(ipfs_hash);if (ret != true) {// 不存在,上链// 插入int32 count = kvTable.set(ipfs_hash, user);if (count == 1) {// 成功ret_code = 0;} else {// 失败? 无权限或者其他错误ret_code = - 2;}} else {//资源已存在ret_code = - 1;}emit RegisterEvent(ret_code, ipfs_hash, user);return ret_code;}
}

fisco bcos 智能合约开发相关推荐

  1. 区块链 Fisco bcos 智能合约(19)-区块链性能腾飞:基于DAG的并行交易执行引擎PTE

    在区块链世界中,交易是组成事务的基本单元. 交易吞吐量很大程度上能限制或拓宽区块链业务的适用场景,愈高的吞吐量,意味着区块链能够支持愈广的适用范围和愈大的用户规模. 当前,反映交易吞吐量的TPS(Tr ...

  2. 区块链 Fisco bcos 智能合约(22)-全面的性能分析工具

    前 言 We should forget about small efficiencies, say about 97% of the time: premature optimization is ...

  3. 智能合约开发环境搭建及Hello World合约

    如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是Hello World.今天我们来一步一步从搭建以太坊智能合约 ...

  4. c++ eos智能合约开发_十分钟教你开发EOS智能合约

    EOS环境搭建和启动节点 下面从EOS入门的环境搭建.编译运行一个智能合约.发送一些Aigsen,给大家做一些展示,希望能让非技术人员也有一些收获. 首先下载EOS环境搭建和启动节点.这一步其实还是比 ...

  5. 以太坊智能合约开发第七篇:智能合约与网页交互

    原文发表于:以太坊智能合约开发第七篇:智能合约与网页交互 上一篇中,我们通过truffle开发框架快速编译部署了合约.本篇,我们将来介绍网页如何与智能合约进行交互. 编写网页 首先我们需要编写一个网页 ...

  6. 以太坊智能合约开发:让合约接受转账

    以太坊智能合约开发:让合约接受转账 在以太坊智能合约开发中,通常会有向合约地址进行转账的需求,那么有几种向合约地址进行转账的方式呢? 有三种方式: 部署合约时转账 调用合约提供的方法 直接向合约地址进 ...

  7. 智能合约开发环境搭建及 Hello World 合约

    智能合约开发环境搭建及 Hello World 合约 如果你对于以太坊智能合约开发还没有概念(本文会假设你已经知道这些概念),建议先阅读入门篇. 就先学习任何编程语言一样,入门的第一个程序都是 Hel ...

  8. c++ eos智能合约开发_TrustBase平台智能合约的开发与实现

    2020年11月,TrustBase团队研究并实现了基于Web的波卡智能合约应用平台.鉴于波卡智能合约开发缺少完善易用的开发工具的支持,TrustBase团队自主开发了基于Substrate框架的全新 ...

  9. c++ eos智能合约开发_[EOS智能合约]第二节:用EOS开发一个To-do List小应用

    EOS Asia 本教程原文作者为EOS Asia,亚洲最具技术实力和最国际化的EOS超级节点竞选者.EOS Asia 同时也是EOS Gems和Traffic Exchange Token这两个项目 ...

最新文章

  1. nodejs模块加载分析(1).md
  2. 机器学习:梯度下降法,几种实现策略
  3. Linux的java服务配置步骤
  4. bzoj2146 Construct
  5. LeetCode 641. 设计循环双端队列
  6. 数据中心 PUE 优化模型生成服务:AI 浪潮下的数据中心的省钱攻略,就用这几招
  7. MySql数据类型介绍
  8. 七牛切片视频php,音视频切片(HLS)
  9. POJ1149 最大流(Isap)
  10. js中如何判断按钮是否被点击了
  11. view函数_python测试开发django63.基于函数的视图(@api_view())
  12. PCSHARE VIP 2005源代码
  13. Ajax获得网页源文件
  14. Scikit-learn_聚类算法_K均值聚类
  15. 经典神经网络论文超详细解读(三)——GoogLeNet InceptionV1学习笔记(翻译+精读+代码复现)
  16. Python 一个漂亮的音乐节奏可视化方案
  17. 面试常问的PECS原则,到底是什么鬼?
  18. can和could的用法_Can 和 could 的用法和区别
  19. 安装文件时显示不能打开要写入的文件该如何解决?
  20. GNSS精密单点定位(PPP)基本原理

热门文章

  1. SQL2005SP2以及VS2005SP1补丁下载
  2. STC89C52RC最小系统板原理图(12MHZ)
  3. 北京移动 NFC nano USIM【异地】换卡流程
  4. emmc存储安装linux,eMMC 分区管理
  5. js换行符转换html换行
  6. SpringBoot之mockMvc
  7. java properties 参数_Java中Properties 类的详细使用
  8. android快速开发一个app,如何高效率开发Android一个APP?
  9. Linux下rtl8188eus+hostapd移植成功
  10. 基于Matlab融合惯性测量单元和全球定位系统数据估计地面车辆的位置和方向(附源码)