• Stars
    star
    103
  • Rank 333,046 (Top 7 %)
  • Language
    C#
  • License
    MIT License
  • Created almost 4 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

FISCO BCOS client sdk for C#



FISCOBCOS C# Sdk

介绍

FISCOBCOS 区块链 C# Sdk,目前是采用Json RPC API 接口和区块链底层(标准版本)进行适配。

作者:林宣名

B站教学视频:

FISCO BCOS C#Sdk之交易解析(上):https://www.bilibili.com/video/BV1av41147Lo

FISCO BCOS C#Sdk之交易解析(中):https://www.bilibili.com/video/BV19z4y167zv

FISCO BCOS C#Sdk之交易解析(下):https://www.bilibili.com/video/BV11K4y1L7SD

国密版本使用介绍和代码解析:https://www.bilibili.com/video/BV1tY4y137GN?vd_source=d13b0630d8f5bdd49b00820fee2bcbde#reply118116701616

有好的建议,请联系我! 我的邮箱:[email protected]

软件架构

软件架构说明

FISCOBCOS C# Sdk 采用 net core 3.1,配套开发工具是vs Code 和 Visual Studio 2019。

功能介绍

  1. 实现 RPC 同步/异步请求
  2. 实现FISCO BCOS公私钥、账户生成,拓展生成Webase Front导入用户json,可以直接导入Webase中间件。
  3. 实现合约操作封装,如:合约部署、请求参数构建、交易签名、RLP编码转换等。
  4. 实现合约部署、合约交易、合约Call操作、合约交易回执获取等。
  5. 实现合约input、output、event等解析。
  6. 所有操作配置对应的单元测试Demo。可以参考复制。
  7. 实现国密支持,创建国密账户、国密下合约部署、交易等。

备注:发送交易并同步返回交易回执测试,有一定几率为空,那是因为底层交易在打包,还没完成共识。目前最新代码新增轮询获取,优化交易回执方法,提高用户体验。

安装教程

备注:也可以使用webase-front 区块链中间件导出合约获得abi和bin文件。

  1. 下载源码,vs2019 nuget包还原; 或使用 nuget包安装,安装命令如下: Install-Package FISCOBCOS.CSharpSdk -Version 1.0.0.6
  2. vs code 安装solidity 插件,在vs code创建一个文件夹存放原始sol合约。
  3. vs code 按 F5 执行编译命令 “compile current Solidity contract”,会生成合约对应的abi和bin。
  4. 将上面编译得到abi和bin 放到你的项目中,进行相关操作。

参考: vs Code 编译合约说明

使用说明

  1. 在 FISCOBCOS.CSharpSdk 类库配置 BaseConfig 文件,配置好对应的底层请求DefaultUrl,如:http://127.0.0.1:8545
  2. 使用ContractService 和QueryApiService进行相关业务操作。
  3. ContractService 主要是合约调用等操作封装,详细看对应的单元测试中的ContractTest.cs。
  4. QueryApiService是底层非交易的Json RPC API 封装,可参考单元测试ApiServiceTest.cs。
  5. 如果使用redis 发布订阅,请参考ConsoleTest 项目中的RedisThreadWorkTest,开启多个RedisSubClient 项目进行订阅。 (该功能可以根据实际情况拓展指定的合约、指定事件等获取解析操作)。

备注:通用的Json RPC API 相对简单,没有封装对应的DTO 实体,操作时候可以通过在线json 生成实体进行业务结合。

国密使用说明

  1. 在BaseConfig.cs 文件中配置IsSMCrypt = true;采用国密签名及配套通信。

  2. 在BaseConfig.cs 文件中配置DefaultPrivateKeyPemPath 为默认用户私钥pem 文件【可选】。

  3. 生成国密用户账户等信息,可导入webase-front,查看单元测试。

            /// <summary>
            /// 国密生成一对公私钥,生成的json可以copy 到txt文件,直接导入webase front 等组件中
            /// </summary>
            [Fact]
            public void GMGeneratorAccountJsonTest() 
            {
                var account = AccountUtils.GMGeneratorAccount("adminUser" + new Random().Next(100000, 1000000).ToString());
                var accountString = account.ToJson();
                // Debug.WriteLine(accountString);
                _testOutput.WriteLine(accountString);
                Assert.True(accountString.ToObject<AccountDto>().PublicKey.Length > 0);
            }
    
  4. 进行合约部署、交易等,查看单元测试GMContractTest.cs。

            /// <summary>
            /// 异步调用合约方法,本测试调用合约set方法,可以解析input和event
            /// 遇到交易hash为空,生产环境采用定时服务/队列形式,先获取交易哈希,之后再去获取对应的数据
            /// </summary>
            /// <returns></returns>
            [Fact]
            public async Task SendTranscationWithReceiptDecodeAsyncTest()
            {
           var contractService = new ContractService(BaseConfig.DefaultUrl, BaseConfig.DefaultRpcId, BaseConfig.DefaultChainId, BaseConfig.DefaultGroupId, privateKey);
            string contractAddress = "0x26cf8fcb783bbcc7b320a46b0d1dfff5fbb27feb";//上面测试部署合约得到合约地址
            var inputsParameters = new[] { BuildParams.CreateParam("string", "n") };
            var paramsValue = new object[] { "123" };
            string functionName = "set";//调用合约方法
            ReceiptResultDto receiptResultDto = await contractService.SendTranscationWithReceiptAsync(abi, contractAddress, functionName, inputsParameters, paramsValue);
    
            Assert.NotEmpty(receiptResultDto.Output);
            Assert.NotEmpty(receiptResultDto.Input);
            Assert.NotEmpty(receiptResultDto.Logs);
            var solidityAbi = new SolidityABI(abi);
            var inputList = solidityAbi.InputDecode(functionName, receiptResultDto.Input);
            Assert.True(inputList[0].Parameter.Name == "n" && inputList[0].Result.ToString() == "123");
    
            string eventName = "SetEvent";
            var eventList = solidityAbi.EventDecode(eventName, receiptResultDto.Logs);
            var eventpramas1 = eventList[0].Event.Find(x => x.Parameter.Name == "paramsStr");
            var eventpramas2 = eventList[0].Event.Find(x => x.Parameter.Name == "operationTimeStamp");
            Assert.True(eventpramas1.Result.ToString() == "123");
            Assert.NotNull(eventpramas2.Result);
        }
    

新增特性

  1. 新增助记词、钱包模块
  2. 新增BIP 32、新增EIP 55 等特性
  3. 优化获取交易回执
  4. 新增线程池拉取指定区块交易,新增Redis订阅发布
  5. 国密支持

More Repositories

1

FISCO-BCOS

FISCO BCOS(发音为/ˈfɪskl bi:ˈkɒz/)是一个稳定、高效、安全的许可区块链平台,已被广泛应用于现实的行业应用。截至目前,已拥有5000多家企事业单位,400多个产业数字化标杆应用,涵盖文化版权、司法服务、政府服务、物联网、金融、智慧社区、房地产建设、社区治理、乡村振兴等领域。FISCO BCOS (pronounced /ˈfɪskl bi:ˈkɒz/) is a stable, efficient, and secure permissioned blockchain platform that has been widely used in real-world industry applications.
C++
2,360
star
2

Wiki

knowledge about FISCO BCOS
226
star
3

FISCO-BCOS-DOC

FISCO BCOS 技术文档(安装部署、搭链教程、系统原理、社区资源)Document of FISCO BCOS
Python
175
star
4

fisco-bcos-browser

A broswer to show the detail infomation of a running FISCO BCOS chain
Vue
174
star
5

web3sdk

java sdk for FISCO BCOS(deprecated, please use FISCO-BCOS/java-sdk)
Java
117
star
6

evidenceSample

A sample of using FISCO BCOS to build an evidence application
Java
101
star
7

console

交互式区块链控制台,合约编译、部署、调用以及区块链管理Interactive client tool of FISCO BCOS
Shell
90
star
8

hackathon

基于FISCO BCOS的黑客松参赛项目集锦
C++
83
star
9

whitepaper

Financial Blockchain Open Source Platform FISCO BCOS Whitepaper
81
star
10

go-sdk

golang SDK of FISCO BCOS
Go
73
star
11

paillier-lib

Use paillier in FISCO BCOS
Java
67
star
12

python-sdk

python sdk for FISCO BCOS
Python
67
star
13

spring-boot-starter

An example to help users use java-sdk(master branch) and web3sdk(master-web3sdk branch) with Spring Boot
Java
65
star
14

nodejs-sdk

Node.js sdk for FISCO BCOS
JavaScript
61
star
15

generator

FISCO BCOS generator(企业级区块链部署工具)
Python
55
star
16

java-sdk

Java SDK of FISCO-BCOS
Java
47
star
17

FISCO-BCOS-SIG

专项兴趣小组(Special Interest Group,简称SIG)信息展示
Shell
41
star
18

group-signature-client

Client of group-signature and ring-signature
Java
40
star
19

group-signature-server

RPC server for group-signature and ring-signature
C++
40
star
20

group-signature-lib

A group signature library for FISCO BCOS
C++
29
star
21

fisco-package-build-tool

A tool to generate installation package for FISCO BCOS
JavaScript
26
star
22

SCStudio

Making Smart Contract Development More Secure and Easier
Python
22
star
23

zkg-tx1to1

zero-knowledge-utility:user-client and gov-client
CMake
21
star
24

meshchain

The schedule module of multiple chains
Java
21
star
25

depotSample

Java
20
star
26

key-manager

Key manager for FISCO BCOS
C++
19
star
27

amdb-proxy

A proxy to access SQL-based database for FISCO BCOS node
Java
18
star
28

contract-lib

JavaScript
16
star
29

LargeFiles

Store large files for FISCO-BCOS
Shell
16
star
30

libzkg

zero-knowledge-library for end-to-end transfer
C++
14
star
31

java-sdk-demo

java sdk demo
Java
13
star
32

spring-boot-crud

a spring boot demo of java sdk, which implements the basic functions of CRUD service
Java
12
star
33

bcos-pbft

PBFT implementation for FISCO BCOS 3.0
C++
8
star
34

solcJ

a jar for the solidity compiler
Java
7
star
35

rust-gears-sdk

Rust SDK for FISCO-BCOS ,like some rusted but solid gears , help to build blockchain application with FISCO-BCOS
Rust
6
star
36

crypto

a copy of golang/go/crypto, modify elliptic to support secp256k1 and sm2p256v1
Go
5
star
37

bcos-crypto

crypto module for FISCO BCOS 3.0
C++
4
star
38

bcos-auth

bcos-auth is FISCO BCOS 3.0 permissions control implementation.
Solidity
3
star
39

bcos-cpp-sdk

c++ sdk for FISCO-BCOS 3.0
C++
2
star
40

bcos-storage

C++
2
star
41

bcos-tars-services

tars-services
2
star
42

bcos-boostssl

C++
2
star
43

bcos-c-sdk

c-style sdk for FISCO-BCOS 3.0
C++
2
star
44

bcos-node-proxy

proxy of bcos node
Java
2
star
45

asset-app-demo

An asset transfer demo of FISCO BCOS.
Java
2
star
46

bcos-ledger

Ledger logic for FISCO BCOS 3.0.
C++
1
star
47

bcos-framework

Framework for FISCO BCOS 3.0
C++
1
star
48

evm-static-analysis

Shell
1
star
49

bcos-gateway

Gateway for FISCO BCOS 3.0
C++
1
star
50

registry

FISCO BCOS vcpkg ports
CMake
1
star
51

code-generator

An ABI code generator, which generate code by ABI definition string.
Java
1
star
52

fisco-bcos-android-sdk

android sdk for FISCO BCOS
Java
1
star
53

FISCOBCOS-RPC-API

1
star
54

bcos-tars-protocol

tars implementation for bcos-proto
C++
1
star