当前位置:网站首页 > 智能合约开发 > 正文

fisco bcos 智能合约开发

项目需求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 XX
// 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 table tm.createKVTable(tableName, "ipfs_hash", "user"); // get table address address 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 : 资源hash user : 资源属主 返回值: 0 资产注册成功 -1 资产账户已存在 -2 其他错误 */ function register(string memory ipfs_hash, string memory user) public returns (int256) { int256 ret_code = 0; bool ret = true; string memory user_1=""; // 查询资源是否上链 (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 智能合约开发的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • fabric智能合约开发步骤2024-10-30 21:42:03
  • 区块链智能合约开发学习_区块链智能合约项目2024-10-30 21:42:03
  • 智能合约开发2024-10-30 21:42:03
  • 简单的智能合约开发2024-10-30 21:42:03
  • 以太坊智能合约开发:Solidity 语言快速入门2024-10-30 21:42:03
  • 区块链开发之Solidity智能合约开发_智能合约 区块链2024-10-30 21:42:03
  • Solidity 智能合约开发 - 基础:基础语法 基础数据类型、以及用法和示例2024-10-30 21:42:03
  • 详述TON的技术特点与智能合约开发范式2024-10-30 21:42:03
  • 智能合约开发过程2024-10-30 21:42:03
  • solidity 智能合约从入门到发币_智能合约链2024-10-30 21:42:03
  • 全屏图片