GithubHelp home page GithubHelp logo

bcos-c-sdk's Introduction

中文 / English

codecov CodeFactor GitHub All Releases

FISCO BCOS(读作/ˈfɪskl bi:ˈkɒz/) 是一个稳定、高效、安全的区块链底层平台,由微众银行牵头的金链盟主导研发,其可用性经广泛应用实践检验。至今已涌现300+产业数字化标杆应用,覆盖金融、医疗、教育、文化、社会治理等领域,如珠三角征信链、区块链服务网络BSN、人民链、国家健康医疗大数据科创平台、粤澳健康码跨境互认系统等。

单链配置下,性能TPS可达10万+。全面支持国密算法、国产操作系统与国产CPU架构。包含区块流水线、可拔插共识机制、全方位并行计算、区块链文件系统、权限治理框架、分布式存储等特性。

版本信息

系统概述

FISCO BCOS系统架构包括基础层、核心层、服务层、用户层和接入层提供稳定、安全的区块链底层服务。中间件层通过可视化界面,简化了用户管理区块链系统的流程。右侧配套相关开发、运维、安全控制的组件,辅助应用落地过程中不同角色的需要;同时,提供隐私保护和跨链相关的技术组件,满足不同场景的应用诉求。

关键特性

  • Pipelined:区块流水线,连续且紧凑地生成区块
  • 可插拔的共识机制: 设计可插拔共识框架,灵活可选
  • 全方位并行计算:多群组,块内分片,DMC,DAG等并行机制,实现强大处理性能。
  • 区块链文件系统: 所见即所得的合约数据管理
  • 权限治理框架:内置权限治理框架,多方投票治理区块链
  • 分布式存储 TiKV:分布式事务性提交,支撑海量存储
  • SDK基础库:多语言SDK,更方便的全平台国密接入

组件服务

  • 隐私保护:场景式即使可用隐私保护解决方案WeDPR
  • 跨链协作:支持多链互通的跨链协作平台WeCross
  • 区块链管理:可视化的区块链管理平台WeBASE

开发运维工具

  • 搭链工具:一键建链脚本,自动化部署区块链
  • 可视化工具:提供可视化管理工具,减少操作流程
  • 监控告警工具:监控区块链系统运行状态,实时告警
  • 数据归档工具:冷数据归档,支持RocksDB和TiKV,释放存储压力

技术文档

《FISCO BCOS官方技术文档》提供建链开发指引、工具介绍以及设计原理解析,用户可通过阅读官方技术文档快速了解、使用FISCO BCOS。

  1. 快速开始
  2. 合约开发
  3. SDK教程
  4. 搭链教程
  5. 应用开发
  6. 区块链运维工具
  7. 高阶功能使用
  8. 设计原理

若需查阅FISCO BCOS 2.x版本相关信息,可参考 《FISCO BCOS 2.x 技术文档》

落地应用案例

以数助实,链通产业协作,FISCO BCOS已落地400+产业数字化标杆应用,场景覆盖文化版权、司法服务、政务服务、物联网、金融、智慧社区、房产建筑、社区治理、乡村振兴等领域,如:

  • 金融业:机构间对账、供应链金融、旅游金融等。
  • 司法存证:仲裁链、电子借据、司法存证平台等。
  • 文化版权:版权存证与交易、虎彩印刷链等。
  • 社会管理:不动产登记、社区治理等。
  • 乡村振兴:智慧农业养殖大数据云平台、数字化平台建设等。
  • 智慧政务:城市大脑、公积金区块链平台、证书电子化项目等

FISCO BCOS已在领域创建了诸多标杆应用示范,涵盖19类场景的252个典型应用案例,产业应用具体信息可参考《2023 FISCO BCOS 产业应用发展报告》

加入我们的社区

FISCO BCOS开源社区 FISCO BCOS是由深圳市金融区块链发展促进会(以下简称“金链盟”)开源工作组牵头研发的金融级、国产安全可控的区块链底层平台。作为最早开源的国产联盟链底层平台之一,FISCO BCOS于2017年面向全球开源。

开源六周年至今,FISCO BCOS开源社区在技术创新、应用产业以及开源生态均取得了非凡成绩。

FISCO BCOS持续攻关核心关键技术,单链性能突破10万TPS。首创DMC算法大幅度提升性能、推出三种架构形态灵活适配业务需求;全链路国产化,采用国密算法与软硬件体系,支持国产OS,适配国产芯片和服务器,支持多语言多终端国密接入。拥有覆盖底层+中间件+应用组件的丰富周边组件。

底层平台可用性已经广泛应用实践检验,支撑政务、金融、医疗、双碳、跨境数据通等关乎国计民生的重点领域落地超过400个标杆应用,在助力实体经济发展、促进公平与可持续等方面贡献力量。

社区以开源链接多方,截止2023年12月,围绕FISCO BCOS构建的国产开源联盟链生态圈已汇聚了超过5000家机构、超10万名个人成员,以及50家认证合作伙伴、500余名核心贡献者。社区认证了63位FISCO BCOS MVP, 发展了12个专项兴趣小组SIG,此外与上百所知名院校开展人才共育合作,培育区块链产业人才超8万人次,已发展成为最大最活跃的国产开源联盟链生态圈之一。

如您对FISCO BCOS开源技术及应用感兴趣,欢迎加入社区获得更多支持与帮助。

贡献代码

  • 我们欢迎并非常感谢您的贡献,请参阅代码贡献流程

  • 如项目对您有帮助,欢迎star支持!

License

FISCO BCOS的开源协议为Apache License 2.0, 详情参见LICENSE

bcos-c-sdk's People

Contributors

bxq2011hust avatar cyjseagull avatar hopshine avatar keyon11 avatar kyonray avatar lucasli1024 avatar toby1991 avatar yinghuochongfly avatar ywy2090 avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bcos-c-sdk's Issues

编译

编译SDK的时候 很慢 并且编译过程将cpu全部占满 电脑什么事都做不了

the error = [libproviders.so: cannot open shared object file: No such file or directory]

根据文档安装了bcos-c-sdk,运行go run main.go会提示:
go run main.go the error = [libproviders.so: cannot open shared object file: No such file or directory] false

这是我的main.go
`

package main

import (
	"context"
	"encoding/hex"
	"fmt"
	"log"

	"github.com/FISCO-BCOS/go-sdk/v3/client"
	"github.com/ethereum/go-ethereum/common"

	"backend/contract"
	"math/big"
)

func main() {
	privateKey, _ := hex.DecodeString("f0b814c21021be9553c23dc3960032847511d13c76b7d5abf613829c0880b924")
	config := &client.Config{IsSMCrypto: false, GroupID: "group0",
		PrivateKey: privateKey, Host: "127.0.0.1", Port: 20200, TLSCaFile: "./ca.crt", TLSKeyFile: "./sdk.key", TLSCertFile: "./sdk.crt"}
	client, err := client.DialContext(context.Background(), config)
	if err != nil {
		fmt.Print("client error")
		log.Fatal(err)
	}
	//创建合约对象,合约地址和合约.go文件
	//NewCertificates(address common.Address, backend bind.ContractBackend) (*Certificates, error)
	//address:0x6849f21d1e455e9f0712b1e99fa4fcd23758e8f1
	cerAddress := common.HexToAddress("0x6849f21d1e455e9f0712b1e99fa4fcd23758e8f1")

	certificates, err := contract.NewCertificates(cerAddress, client)
	if err != nil {
		fmt.Print("contract error")
		log.Fatal(err)
	}

	ID := big.NewInt(1)
	isExists, err := certificates.CertificateIDExists(nil, ID)
	fmt.Print(isExists)  // 输出false
}

`

也就是说测试的结果是正确的,但是会提示最上面的错误,是什么导致的,我应该怎么做?

3.0SDK的问题

bcos-sdk-jni-3.0.0.jar 中提取的文件 文件的md5的值8f34f38b2b3d75e64fac187bea0493d0
提取的sdk的libbcos-sdk-jni.so 文件md5的值533a2e2c8bc0c360a20811029096851e
使用的案例是/bcos-c-sdk/sample/rpc中的代码 个人编译的时候 修改了target_link_libraries(${target} bcos-sdk-jni ssl crypto pthread)

使用的bcos的节点程序版本是3.0.0对应的
FISCO BCOS Version : 3.0.0
Build Time : 20220830 05:44:17
Build Type : Linux/g++/Release
Git Branch : HEAD
Git Commit : 07f3ca4fa727300290113c8ba339db27b6516864
fisco-bcos的程序文件的md5值 f6e2cfa0af6840bad188e48ba1511ed6

Please update doc sdk

文档上下载的sdk落伍了,麻烦更新一下

https://fisco-bcos-doc.readthedocs.io/zh_CN/latest/docs/develop/sdk/c_sdk/dylibs.html

/opt/homebrew/Cellar/go/1.19/libexec/pkg/tool/darwin_arm64/link: running clang failed: exit status 1
Undefined symbols for architecture arm64:
  "_bcos_sdk_create_config", referenced from:
      __cgo_c30aa36f07fc_Cfunc_bcos_sdk_create_config in 000006.o
     (maybe you meant: __cgo_c30aa36f07fc_Cfunc_bcos_sdk_create_config)
  "_bcos_sdk_create_keypair_by_prikey", referenced from:
      __cgo_c30aa36f07fc_Cfunc_bcos_sdk_create_keypair_by_prikey in 000006.o
     (maybe you meant: __cgo_c30aa36f07fc_Cfunc_bcos_sdk_create_keypair_by_prikey)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

dbc8241

use bcos_sdk_create to create and start sdk costing 100% cpu with empty run

Describe the bug
I modify hello_sample.c with following code found that program always costing 100% cpu when sleep waiting for free sdk.

    // 1. create sdk object by config
    void* sdk;
    if (strlen(config) == 0) {
        struct bcos_sdk_c_config* cfg = bcos_sdk_create_config(1, "172.25.0.3", 20210);
        sdk = bcos_sdk_create(cfg);
    } else {
        sdk = bcos_sdk_create_by_config_file(config);
    }
   ... 
  sleep(300);
 //before bcos_sdk_c_free

To Reproduce
Steps to reproduce the behavior:

  1. check out branch main
  2. modify hello_sample.c as above and fix host:port
  3. compile and run hello_sample
  4. use command 'top' to see hello_sample cpu cost

Expected behavior
no empty run cost

Screenshots
none

Environment (please complete the following information):

  • OS: [e.g. CentOS 7.9]
  • fisco-bcos Version [3.2.1]

Additional context
none

bcos-c-sdk symbol conflict

关于上次bcos3.0在调用的时候 出现的原因我定位到了。由于你们那边提供的sdk在函数导出的时候,将jsoncpp相关的也导出了。然后我自己在编写程序的时候,自己引入了jsoncpp的库。然后编译的时候,不会出现问题。程序运行就core错误。
建议官方在生成bcos3.0的库的时候,将不需要的用到的库不要导出。
看了你们的bcos3.0的sdk,里面也使用了jsoncpp这个库的。
产生错误的原因就是函数导出出现的同名函数符号表
https://blog.csdn.net/segments/article/details/110204695?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-110204695-blog-106636745.pc_relevant_3mothn_strategy_recovery&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-3-110204695-blog-106636745.pc_relevant_3mothn_strategy_recovery&utm_relevant_index=6 类似这样的问题。

3.0的SDK使用有问题

bcos-sdk-jni-3.0.0.jar 中提取的文件 文件的md5的值8f34f38b2b3d75e64fac187bea0493d0
提取的sdk的libbcos-sdk-jni.so 文件md5的值533a2e2c8bc0c360a20811029096851e
使用的案例是/bcos-c-sdk/sample/rpc中的代码 个人编译的时候 修改了target_link_libraries(${target} bcos-sdk-jni ssl crypto pthread)

使用的bcos的节点程序版本是3.0.0对应的
FISCO BCOS Version : 3.0.0
Build Time : 20220830 05:44:17
Build Type : Linux/g++/Release
Git Branch : HEAD
Git Commit : 07f3ca4fa727300290113c8ba339db27b6516864
fisco-bcos的程序文件的md5值 f6e2cfa0af6840bad188e48ba1511ed6

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.