前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Golang语言情怀--第77期 区块链技术-长安链长安链基础知识介绍

Golang语言情怀--第77期 区块链技术-长安链长安链基础知识介绍

作者头像
李海彬
发布2022-06-07 10:16:06
6840
发布2022-06-07 10:16:06
举报
文章被收录于专栏:Golang语言社区Golang语言社区
1.1. 基础术语说明

名称

说明

区块(Block)

区块是区块链中存储交易和交易相关的数据的单元,通常由区块头和区块体组成。

区块链(Blockchain)

使用密码技术链接将共识确认过的区块按顺序追加而形成的分布式账本。

智能合约(SmartContract)

以数字形式定义的能够自动执行条款的合约。

读写集 (Read-write set)

区块链上的一条交易执行过程中,被读取和被修改或写入的状态数据的集合。

交易(Transaction)

也称为事务,区块链上的一次原子性账本数据状态变更及其过程和结果记录。

交易哈希(TransactionHash)

交易上链成功后,产生的唯一哈希值。

对等网络(Peer-to-peer Networking)

一种仅包含对控制和操作能力等效的节点的计算机网络。

可装配性 (Assemblability )

对于可装配区块链系统,其组成模块的易替代性使得整个系统具备易变更性,从而适应各种定制需求,称为可装配性。

交易调度(TransactionScheduling)

将一批交易按照调度策略分配计算资源进行执行的过程。交易调度的调度策略决定一批交易的执行顺序和交易并行冲突的处理机制。

可装配区块链系统(Assemblable Blockchain System)

可装配区块链系统是由一组易替代、遵循一定规范的模块按照使用者的定制需求组合而成的可正常运作的区块链系统。该系统具备易变更的特性,通过替换模块能够灵活变更为具备不同特性的另一个可正常运作的区块链系统。

可装配区块链系统框架(Assemblable Blockchain System Framework)

可装配区块链系统框架是指为确定区块生成流程而设计的具有一定约束性的支撑结构。框架决定了各个模块的调用规则,根据区块生成的具体要求选择相应的框架按照使用者的定制需求组合模块或在已有框架上扩展、安插更多的模块,从而更迅速和方便地构建完整的区块链系统。

提议节点(ProposingNode)

区块链网络中负责产生新的候选区块的节点。

验证节点(VerifyingNode)

区块链网络中负责验证新的候选区块的节点。对某一候选区块而言,除提议此区块的节点外其余区块链节点均为验证节点。在不同轮次中提议节点和验证节点身份可互相转换。

可信执行环境(TrustedExecutionEnvironment)

提供硬件级别的资源隔离和信任度量能力,其中最具代表性的是 Intel SGX。

交易读取 (Transactionreading)

链上拉取区块,并读取区块中解析交易信息的过程。

默克尔根(Merkle root)

在构造Merkle树时通过从下到上两两计算得出的最后的唯一哈希值为默克尔根。有向无环图(DAG)    DAG原本是计算机领域一种常用数据结构,因为独特的拓扑结构所带来的优异特性,经常被用于处理动态规划、导航中寻求最短路径、数据压缩等多种算法场景。有向无环图指的是一个无回路的有向图。如果有一个非有向无环图,且A点出发向B经C可回到A,形成一个环。将从C到A的边方向改为从A到C,则变成有向无环图。

以太坊虚拟机(Ethereum Virtual Machine)

EVM是简化版的虚拟机,为了保证智能合约运行的流畅度,EVM并没有模拟完整的计算机,而是采用了轻量级的虚拟机架构。

长安链可执行文件(chainmaker binary)

长安链项目chainmaker-go源码编译后生成的可执行二进制文件执行make命令后将生成在chainmaker-go/bin目录下

长安链SDK(chainmaker SDK)

用于与长安链交互(发送交易,订阅等)的软件开发工具

合约SDK(contract SDK)

用于开发智能合约的软件开发工具,使编译的wasm文件可与长安链进行交互

wasm文件(webassembly file)

长安链指的智能合约编译后生成的文件。wasm指通过各自符合WebAssembly规范的编译器编译出来的以.wasm结尾的文件。c++: emmake makerust: wasm-pack buildtinygo: tinygo build -no-debug -opt=s -o main.wasm -target wasm

长安链CA(chainmaker CA)

指使用长安链配套证书管理工具chainmaker-cryptogen管理的证书、密钥体系

SPV(Simplified Payment Verification)

轻节点,通过同步区块头和部分其他数据实现对交易的有效性证明

外部证书

非长安链CA服务(chainmaker-ca)或证书生成工具(chainmaker-cryptogen)颁发的数字证书

1.2. 功能清单说明

功能名称

描述

合约引擎

GASM、WASMER、WXVM、EVM、NATIVE、VM-DOCKER GO分别对应 tinygo、rust、 c++、 solidity、golang等合约语言native为内置系统合约

合约执行环境

合约功能

put、get、迭代器范围查询、隐私计算、事件

合约内支持的功能

合约加密方案

层级身份加密、paillier半同态加密、bulletproofs零知识证明

合约内可提供加密方案

系统合约

证书管理、节点管理、链配置更新、区块/交易信息查询

长安链内置合约

共识算法

SOLO、RAFT、TBFT、maxBFT、dPoS

加密算法

(sha256、sm3)(ecc_p256、sm2)

并行调度

DAG有向无环图

使交易可并行执行的方案

KV存储引擎

LevelDB、BadgerDB、MySQL

使用K、V格式存储数据

SQL合约存储引擎

MySQL,SQLite

使用结构化存储数据

SQL合约引擎

tinygo、rust

可在合约内写sql语句

存储内存加速

将需要存储的内容预先放在内存, 异步存储落盘

P2P网络模块

本地配置种子节点和信任根

节点间连接网络

RPC服务

提供与SDK交互接口

链与其他工具交互接口

交易缓存

batch交易池、single 交易池

接收交易的交易池

轻节点

SPV,同步块头和交易有效性校验

同步部分数据的客户端

跨链

异构链,正/逆向操作的合约实现

区块链数据互通技术

归档

历史数据归档、恢复、查询功能

权限控制

使用证书标识账户体系

工具:运维监控

Prometheus、Grafana

工具:自拉起服务

使服务在电脑重启后可自动运行

工具:链SDK

go、java、nodejs。支持发送交易、查询交易、订阅区块/交易/合约事件

与链交互的软件包

工具:CMC

命令行工具。支持发送交易、查询交易

与链交互的命令行工具

工具:证书生成工具

生成链需要的证书的工具

生态:区块链浏览器

可查看链区块、交易数据和链状态

生态:CA证书服务

提供签发证书功能

1.3. 编写语言

项目

编程语言

说明

长安链主项目

golang

长安链主项目采用golang,以降低并发编程的使用门槛,提升整体性能。

SDK

golang、java、nodejs

长安链SDK目前支持golang、java和nodejs,方便使用者与业务系统集成开发。后续会增加对python的支持。

智能合约

golang、c++、rust、solidity

长安链智能合约目前支持golang、c++、rust、solidity等语言,方便各个开发者选择熟悉的语言开发业务逻辑。不久as(assembly script) 也将支持

生态工具

golang

长安链证书生成工具、区块链浏览器、区块链管理平台等一系列生态工具的后端目前也选择golang作为开发语言。

同学们,兴趣是最好的老师;只争朝夕,不负韶华!加油!


参考资料:

Go语言中文文档

http://www.golang.ltd/

Go语言官方文档

https://golang.google.cn/

海伦链论坛(筹建中)

https://www.HeronChain.Com/

Golang语言情怀

ID:wwwGolangLtd

 www.Golang.Ltd

游戏服务器架构丨分布式技术丨大数据丨Go语言学习

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言情怀 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.1. 基础术语说明
  • 1.2. 功能清单说明
  • 1.3. 编写语言
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档