合集-区块链
摘要:1. Gossip协议基础 1.1 什么是分布式系统 分布式系统(Distributed System)是由多台计算机或计算节点组成的计算机系统,这些计算节点通过网络连接在一起,并协同工作以完成共同的任务或提供服务。与单一计算机系统不同,分布式系统中的计算节点可以分布在不同的地理位置。 以下是分布式
阅读全文
摘要:本文介绍Ubuntu 18.04环境下如何配置Fabric开发环境。 安装Golang 因为Fabric是基于Go语言开发的,所以首先需要配置好Golang开发环境。 由于某些原因,国内无法从Golang官网上下载Golang,不过好在国内的Golang开发者们搭建的可供国内Golang爱好者分享的
阅读全文
摘要:因为工作的需要,最近了解了下如何通过sdk来操作Chaincode,本文是sdk使用时的一些操作总结。 在fabric网络启动过程中,一般分为“启动网络 → 创建通道 → 加入通道 → 安装链码 → 实例化链码 → 调用链码”。本文以fabric-sdk-go项目中的end_to_end.go为例,
阅读全文
摘要:比特币又称加密货币,但其实加密货币并没有加密:区块链中的所有信息都是公开的,包括交易的内容、交易的金额以及交易账户的地址。之所以称之为加密货币,主要是因为交易的双方在不与真实世界发生关联的情况下,双方的身份是无法获知的。 比特币中主要用到了密码学中的“哈希”和“签名”。 密码学中用的哈希被称作Cry
阅读全文
摘要:原文在这里。文中假定Amazon在区块链上存储用户的购物交易,并以此为例介绍了区块链公链的基本概念和工作原理、区块链与比特币、区块链的优劣以及区块链的前景。本文主要介绍区块链的优劣,举例几个应用场景。 声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
阅读全文
摘要:原文在这里。文中假定Amazon在区块链上存储用户的购物交易,并以此为例介绍了区块链公链的基本概念和工作原理、区块链与比特币、区块链的优劣以及区块链的前景。本文主要介绍公链的基本概念和工作原理、区块链与比特币。 声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA
阅读全文
摘要:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。 在fabric的chaincode开发时,有时候需要用到第三方库提供的功能。这些库有些是没有go的实现,或开发者只提供了库,这时候就需要从chaincode中调用第三方库。而fa
阅读全文
摘要:一般来说,匿名通常跟隐私保护联系在一起。在比特币是基于交易的区块链,系统中没有用户的概念,不要求用户使用真名,可以用公钥产生地址,所以比特币具有一定的匿名性。 但比特币中的交易记录在区块链上,区块链是公开的。虽然使用者可以生成任意多的地址来隐藏自己,但由于所有的交易信息的都是公开的,仍可以通过分析链
阅读全文
摘要:Hash指针 指针保存的是本地内存地址,只在本地计算机上才有意义,发送到其它计算机上就没有意义了。所谓的Hash指针只是一种形象的说法,实际系统中用到的时候只有Hash,没有指针。 那么怎么才能找到前一个区块的内容呢?全节点一般是把这些区块存储在一个key-value的数据库中:key是区块的Has
阅读全文
摘要:区块链由一条变为两条或者多条,这一过程被称为分叉。导致分叉的原因有很多,按分叉出现的原因可分为两种: state fork(状态分叉) 挖矿时,两个节点差不多同时挖到了矿,此时就会出现一个临时性的分叉,这是由于对于比特币区块链当前状态出现意见分歧而导致的分叉。分叉攻击(forking attack)
阅读全文
摘要:挖矿难度 \(H(version,target,nonce,Hash_{pre},MerkleTreeRoot) <= target\) 比特币中使用的Hash算法是SHA-256,产生的Hash值是256位。即整个输出空间是$2^{256}$。比特币的挖矿难度的调整,就是调整目标空间占输出空间的比
阅读全文
摘要:比特币工作在应用层,它的底层是一个P2P网络。比特币的P2P网络是非常简单的,所有节点都是对等的,不会出现某些P2P网络中所谓的超级节点或者中心节点。 比特币网络的设计原则:simple, robust, but not efficient,即简单,健壮,而不是高效。每个节点都会维护一个邻居节点的集
阅读全文
摘要:比特币系统是一个基于交易的账本,这意味着存储在账本中的是一笔笔交易。那么在用户进行转账交易时,首先就需要确保用户所持有的数量要大于或等于将要交易的。这要做的目的是为了避免双花问题。 这种基于交易的账本好处在于隐私保护性比较好,缺点在于每次交易都需要说明币的来源。 在比特币的全节点中,会在内存中维护一
阅读全文
摘要:双花问题 在比特币系统中,Hash指针有两个用途:指向前一个区块和指向某笔交易。 比特币支付过程中,每笔交易都必须包含输入和输出。 交易输入中需要包含付款方此次交易的币的来源,付款方的公钥,交易输出包括此次要交易的币的数量以及收款方的地址。 币的来源中会包含付款方的地址,这样可以防止盗币事件的发生。
阅读全文
摘要:哈希指针(Hash Pointers) 对于一个结构体而言,指向它的指针存储的是它在内存中的首地址;而指向它的哈希指针,不仅保存这它的首地址,还保存着该结构体内容的哈希值。通过哈希指针,不仅可以找到该结构体,还能查验该结构内容是否被篡改过。 区块链 比特币中存储数据用的是区块链。所谓区块链,可以理解
阅读全文
摘要:Merkle 树(Merkle Tree)是一种树状数据结构,通常用于验证大规模数据集的完整性和一致性。它的名字来源于其发明者 Ralph Merkle。Merkle 树在密码学、分布式系统和区块链等领域得到广泛应用,尤其在区块链中,它用于验证交易和区块的完整性,确保数据不被篡改。 下面是 Merk
阅读全文
摘要:表象:Return schema invalid. required items must be unique [recovered] 虽然 Fabric v2.2 已经发布了很久了,但之前因为项目历史问题,一直使用的都是 Fabric v1.4.8,所以智能合约也一直使用的都是 github.co
阅读全文
摘要:本文是区块链浏览器系列的第五篇,项目完整代码在[这里](https://github.com/mengbin92/browser/tree/main)。 在[上一篇文章](https://mengbin.top/2023-08-20-browser2/)中给浏览器增加了简单的用户认证,至此浏览器的基
阅读全文
摘要:## 简介 Hyperledger Fabric的Idemix是一个基于密码学的身份混淆系统,它提供了一种在区块链网络中实现用户隐私的方法。Idemix的主要特性是它的零知识证明系统,这是一种允许用户证明他们拥有某些属性,而无需透露任何其他信息的技术。 以下是一些更详细的关于Idemix的信息: 1
阅读全文
摘要:本文是区块链浏览器系列的第四篇。 在[上一篇文章](https://mengbin.top/2023-08-13-blockBrowser/)介绍如何解析区块数据时,使用`session`对客户端上传的pb文件进行区分,到期后自动删除。 在这片文章中,会着重介绍下认证系统的实现,主要分为三部分: -
阅读全文
摘要:本文是区块链浏览器系列的第三篇,本文介绍区块链浏览器的主体部分,即区块数据的解析。 这一版本的[区块链浏览器](https://github.com/mengbin92/browser/tree/gin)是基于[gin](https://github.com/gin-gonic/gin)实现的,只提
阅读全文
摘要:在Hyperledger Fabric中,LSCC(Lifecycle System Chaincode)、CSCC(Chaincode System Chaincode)、QSCC(Query System Chaincode)、ESCC(Endorsement System Chaincode)
阅读全文
摘要:原文在这里。 1. 获取通道配置 peer channel fetch config config_block.pb -o $ORDERER_CONTAINER -c $CH_NAME --tls --cafile $TLS_ROOT_CA 上述命令需要在peer容器中执行 这一步得到对应通道的pr
阅读全文
摘要:从源码中解析fabric区块数据结构(一) 前言 最近打算基于fabric-sdk-go实现hyperledger fabric浏览器,其中最重要的一步就是解析fabric的上链区块。虽说fabric是Golang实现的,但直到2021年2月1号才发布了第一个稳定版fabric-sdk-go,而且官
阅读全文
摘要:Fabric v1.4.x升级至v2.2.0 本文首发于这里,转载请注明出处。 以fabric-samples v1.4.8为例,将v1.4.8升级至v2.2.0。注意,所有节点以滚动的方式进行升级,这样可以保证即使单个节点数据备份过程出错也不会影响整个网络的运行。先升级orderer节点,再升级p
阅读全文
摘要:原文来自这里。 用户从v1.4.x升级到v2.x后,必须编辑通道配置来启用新的lifecycle功能。这个过程涉及到相关用户必须执行的一系列通道配置更新。 要启用新的chaincode lifecycle,应用程序通道的Channel和Applicationcapabilities必须更新到V2_0
阅读全文
摘要:原文来自这里。 如果不熟悉capability,那么操作前可以查阅Capabilities。需要注意的是在启用capabilities前,需要升级归属该通道的peer节点和排序节点。 更多关于最新版Fabric中capabilities版本的信息,详见Upgrading your component
阅读全文
摘要:原文来自这里。 如果想了解最新版Fabric的特殊事项,详见Upgrading to the latest release of Fabric。 本章只介绍更新Fabric组件的操作。关于如何通过编辑通道来改变你通道的capability版本,详见Updating a 通道 capability。
阅读全文
摘要:原文来自这里。 本章节主要介绍如何从之前的版本或其他长期支持版本升级至最新版。 从2.1升级到2.2 Fabric v2.1和v2.2都是稳定版,以bug修复和其它形式的代码加固位置。因此,升级不需要特别考虑,也不需要更新特定的镜像版本或通道配置更新。 从v1.4.x长期支持版本升级到v2.2 从v
阅读全文
摘要:原文地址在这里。 在fabric网络中,升级nodes和通道至最新版本需要四步: 备份账本和MSPs。 以滚动的方式将orderer升级到最新版。 以滚动的方式将peers升级到最新版。 将orderer系统通道和所有可用的应用程序通道升级至最新版。 更多通道 capabilities信息,可以从这
阅读全文
摘要:根据TxID获取上链信息 前段时间应甲方爸爸的要求,需要在现有的业务系统中新增一个根据TxID来查询上链信息的接口。搜了一圈发现相关的信息很少,最后只能祭出终极大招:Read Source Code。 本文主要记录我实现这一功能的过程。 1、获取交易信息 首先要做的就是拿到交易信息,我这里是通过fa
阅读全文
摘要:1. 概览 PoW(工作量证明)、PoS(权益证明)、DPoS(委托权益证明)和PBFT(拜占庭容错)是区块链和分布式系统领域中常见的共识算法。下面将详细介绍这些共识算法的原理和特点: PoW(工作量证明): 原理:PoW是比特币等区块链网络使用的共识算法。在PoW中,矿工通过解决一个数学难题(哈希
阅读全文
摘要:1. btcd网络部署 btcd 提供了一个轻量级且高效的比特币全节点实现。这里以docker方式部署 btcd 网络,docker-compose.yml 文件如下: networks: btcd: services: btcd: build: . # image: mengbin92/btcd:
阅读全文
摘要:交易流程 比特币的交易流程涉及多个步骤和参与方,包括发送方、接收方、矿工和比特币网络中的节点。以下是比特币交易的详细流程: 创建交易: 生成比特币地址:比特币地址是一个由公钥生成的字符串,用于接收比特币。每个用户在创建比特币钱包时,都会生成一对公钥和私钥。公钥通过哈希算法生成比特币地址,私钥用于签名
阅读全文
摘要:Merkle 树是一种用于高效且安全地验证大数据结构完整性和一致性的哈希树。它在比特币网络中起到至关重要的作用。Merkle 树是一种二叉树结构,其中每个叶子节点包含数据块的哈希值,每个非叶子节点包含其子节点哈希值的组合哈希。 比特币网络中的 Merkle 树 在比特币区块链中,每个区块包含多个交易
阅读全文
摘要:比特币地址(Bitcoin Address)是用于接收和发送比特币的唯一标识符,类似于传统金融系统中的银行账号。一个比特币地址由一串字母和数字组成,通常以1、3或bc1开头,具体长度为26至35个字符。以下是比特币地址的主要类型及其特点: P2PKH地址(Pay-to-PubKey-Hash): 以
阅读全文