区块链学习笔记(一. 了解)

区块链是一种全新的信息记录模式,每一个参与者都可以是记录者,分布式账本。它不是一种单纯的技术,是多个老技术和新技术的结合应用,去中心化,如果是联盟链应该是多中心化了,类似于git,p2p下载,数据不可篡改,不可抵赖。

第一代是加密货币, 第二代是智能合约, 第三代是联盟链(私有链)。

共识算法

 

Merkle 树(简化支付验证),查询的话,区块头(版本号,区块高度,难度值,时间戳,随机数,前一区块哈希,后一区块哈希)

 

数据库, 任何一个数据库都可以, 中本聪使用 leveldb

   boltdb, couchDB

 

区块链中的联盟链(私有链) 的开源项目Hyperledger fabric,主要代码由IBM,Intel,R3,各大银行等贡献,链中的参与需要授权, 参与者都是经过预先选择的, 并且仅限于这些参与者访问网络。运行在许可模式下,因此可为记录提供更细粒度的访问控制,从而增强了隐私,只有参与交易的各方才必须要达成共识,因此在性能上有所提高。只能在交易层面达成共识, 不能在账本层面达成共识。

 

Fabric  将节点区分为客户节点(client)、对等节点(Peer)和订购节点(Orderer)。

  • 客户节点代表最终客户,创建并调用交易。他们与对等节点和订购节点沟通。
  • 对等节点维护账本,并接收订购节点订购的更新消息, 以向账本提交新的交易。
  • 背书节点(Endorser)是一类特殊的对等节点,任务是通过检查自身是否满足一些必要和充分的条件(例如提供所需的签名),对交易提供背书,在共识机制的投票环节里,背书意味着参与投票。
  • 订购节点在客户节点和对等节点间提供了通信通道,用于广播包含交易的消息。特别是对于共识,这些通道确保了所有已连接的对等节点按照安全相同的逻辑顺序传递完全相同的消息。

 

节点是区块链的通信主体,是逻辑概念。 节点之间通过gRPC 消息进行通信, 对等节点间通信使用 Gossip 协议。每个Peer 节点必定是一个记账节点,除记账节点外,它也开源担任其他一到多种角色,即某个节点可以同时是记账节点和背书节点,也可以同时是记账,背书,主节点,锚节点。

 

联盟链不允许节点任意加入,因此会对节点认证做出严格的限制,主要是用到了数字证书。

 

 

在Fabric 上运行的主要是智能合约, 因此Fabric 的交易定义比比特币要宽泛很多。在比特币上, 一笔交易指的就是转账,而在Fabric 上,任何对数据的增删改查都是交易。

 

交易流程

  1. 客户节点通过SDK 调用证书服务(CA)服务,进行注册和登记,并获取身份证书。
  2. 客户节点向已连接的背书节点发送交易,启动对账本的更新流程。
  3. 所有背书节点都必须就提出的交易达成一致,因此需要根据更新所建议的账本达成某种共识。
  4. 客户节点依次收集所有背书节点的批准,然后将经批准的交易发送给已连接的订购节点。
  5. 由这些订购节点再次达成共识,汇总各客户节点递交过来的交易,排序打包为区块。
  6. 随后,交易区块将被转发给持有分类账的对等节点, 以提交交易,各对等节点各自验证结果,最后将交易区块记录到自己的ledger 账本中,并修改世界状态。

智能合约,该术语有两种不同的常用方式,

  • 智能合约代码(smart contract code)。
  • 智能法律合约(smart legal contracts)。

智能合约代码就是用某种编程语言编写的软件。他作为一个软件代理, 或是代表其中某个一方,目的是履行某些义务,行使某些权限, 并以自动的方式控制分布式账本中的资产。因此,智能合约通过代码执行模拟,或模拟现实世界中合约逻辑,承担了分布式账本的任务和责任,尽管其合法性可能尚未明确。

所有的DLT 都支持以智能合约代码的形式履行智能合约。代码可以使用Go、Java for Fabric、Solidity for Ethereum,以及Java/Kotlin for Corda 编写。在Fabric 中使用了术语“链码”(chaincode),以此作为智能合约的同义词。

在Corda 中,智能合约不仅可以包含代码,还允许包含法律行文。智能法律合约是法律行文,其制定方式可以通过智能合同代码来表达和实施。   

智能合约中封装了信息处理的完整方案,以此来经量简化整个网络的信息交易。智能合约通过编写, 可以被升级,通过升级来丰富其功能并增强其对事务的处理能力。所有的参与者都可以按照智能合约中的约定自动执行相关事务处理操作。

简单理解,hyperledger fabric 的区块链通过智能合约进行更新, 并通过共识的协作过程保持一致。

 隐私

    联盟链(私有链),企业对企业(B2B)网络的参与者对他们所共享的信息非常敏感。HyperLedger Fabric 通过使用channel(频道)的方式,让一组参与者来共同维护一套账本,其他的参与者无法参与其中,在channel 内部的网络对参与者是开放的。


部署实例: 陶辉笔记《区块链开源实现FABRIC 快速部署及CLI 体验》

简书: 李孝伟 《Hyperledger Fabric 基于Kafka 的多机部署》

Java: tualala《基于Hyperledger Fabric 交易系统账户的钱包模型的java Chaincode 实例》

Csdn: Physicaloser 《Hyperledger fabric 在现有组织中增加节点》

 

调用api 写入,读取等,账本状态交互API,交易信息相关API,参数API

Stub sim.ChaincodeStubInterface

Stub.PutState(key, value)

Stub.GetState(key)

Stub.GetStateByRange(startKey, endKey)

Stub.GetHistroyForKey(key)

Stub.DelState(key)

//创建一个组合对象, 类似hash 对象, 这个用于高并发,官方例子high-throuhput。

//compositeIndexName := “varName~op~value~txID”

Stub.CreateCompositeKey(compositeIndexName, attributes)

Stub.GetStateByPartialCompositeKey(compositeIndexName, keys)

Stub.SplitCompositeKey()

//返回交易提案中指定交易的交易ID

Stub.GetTxID() 

 

chainCode 会执行完逻辑, 但是并不会在stub.PutState 的时候写数据库。

 

更新智能合约代码放在: /opt/gopath/src/,   /github.com/hyperledger/fabric/examples/chiancode/go/***

根目录/opt/gopath/src/ 可以换,  目录 /github.com/hyperledger/fabric/ 保持这样的结构

 

Fabric

  • 证书生成工具 cryptogen (配置文件crypto-config.yaml)
  • 每个通道的创世区块生成工具configtxgen(configtx.yaml)

帮助脚本类文件(IBM 写的)

       download-dockerimages.sh

         generateArtifacts-3o4p.sh yourchannel  生成通道根证书,msp证书,orderer证书,peer证书,tls 证书等等和区块相关文件

        e2e_cli/scripts/script.sh

 

 

证书:

  • 每个组织都有子的TLS Root CA 证书, 与其数据层的组织Root CA 证书独立开来
  • 每个节点(Orderer和Peer)都有自己的Server TLS 证书, 是由它所在组织的TLS Root CA 签发出来的。

 

共识排序服务

  • 1.1 版本开始支持kafka 共识(生产环境部署需要至少4个kafka和3个Zookeeper)
  • 1.4.1 版本开始支持 Raft 共识和排序。
  • 单机环境默认使用Solo

 

 

Fabric 的区块链, 本身是文件系统,不是数据库, 所以会把区块中的数据在LevelDB 中建立索引。

状态快照, 不支持并行验证

数据存储结构

  • 文件系统,保存区块链数据。
  • 状态数据,最新的世界状态数据
  • 区块索引,快速查询区块/交易

 

智能合约代码

  • 默认go 语言
  • 也支持node.js
  • 也支持java
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 《机器学习学习笔记.pdf》是一本关于机器学习学习笔记的电子书,其内容涵盖了机器学习的基本概念、算法原理和实践应用等方面。 该电子书的主要内容包括但不限于以下几个方面: 1. 机器学习基础:介绍了机器学习的基本概念、发展历史和核心原理,帮助读者建立起对机器学习的整体认识和理解。 2. 机器学习算法:详细介绍了常见的机器学习算法,包括监督学习算法(如线性回归、逻辑回归、决策树、支持向量机等)、无监督学习算法(如聚类算法、降维算法等)和强化学习算法等,使读者能够了解和掌握不同类型的机器学习算法及其应用场景。 3. 机器学习实践:讲解了机器学习的实践方法和流程,涵盖了数据预处理、特征工程、模型选择和评估等方面的内容,帮助读者掌握如何在实际问题中应用机器学习技术。 4. 应用案例:通过实际案例的介绍和分析,展示了机器学习在自然语言处理、计算机视觉、推荐系统等领域的应用,激发读者对机器学习在实际问题中的应用的兴趣和思考能力。 通过阅读《机器学习学习笔记.pdf》,读者可以系统地学习机器学习的基础知识和算法原理,了解机器学习的应用场景和实践方法,并通过实际案例的分析加深对机器学习技术的理解。这本电子书可以作为机器学习初学者的入门学习资料,也适合有一定机器学习基础的读者作为参考和进一步学习的资料。希望通过这本电子书的阅读,读者能够理解和掌握机器学习的相关知识,为未来在机器学习领域的学习和研究打下坚实的基础。 ### 回答2: 《机器学习学习笔记.pdf》是一本介绍机器学习学习资料。机器学习是一种通过利用数据来训练计算机算法的方法,使其能够自动地从数据中学习和提高性能。这本学习笔记涵盖了机器学习的基本概念、原理和方法,适合初学者和对机器学习感兴趣的读者。 首先,学习笔记从机器学习的基本概念入手,包括机器学习的定义、应用领域以及机器学习的三个主要任务:监督学习、无监督学习和强化学习。然后,详细介绍了机器学习的基本原理,如训练集、测试集、特征选择和模型评估等。此外,学习笔记还介绍了几种常见的机器学习算法,如决策树、支持向量机和深度学习等。 除了理论知识,学习笔记还提供了实践案例和代码示例,帮助读者更好地理解和应用机器学习算法。读者可以通过实践案例来掌握机器学习算法的具体应用,并且可以利用代码示例进行实际编程实践。同时,学习笔记还讨论了机器学习的一些挑战和未来的发展方向,如数据质量、模型解释性和自动化机器学习等。 总的来说,《机器学习学习笔记.pdf》是一本全面介绍机器学习学习资料。它结合理论和实践,旨在帮助读者建立对机器学习的基本理解,并具备在实际问题中应用机器学习算法的能力。无论是初学者还是有一定机器学习基础的读者,都可以从中获得有益的知识和经验。 ### 回答3: 《机器学习学习笔记.pdf》是一本关于机器学习学习笔记文档。机器学习是人工智能领域的重要分支,它研究如何使计算机系统自动从数据中学习和改进,以完成特定任务。这本学习笔记以简洁明了的方式介绍了机器学习的基本概念、算法和实践应用。 笔记中首先介绍了机器学习的基础知识,包括监督学习、无监督学习和强化学习等不同的学习类型。然后详细讲解了常用的机器学习算法,如线性回归、逻辑回归、决策树、支持向量机等。每种算法都给出了清晰的定义和示例,并详细解释了算法的原理和应用场景。 此外,《机器学习学习笔记.pdf》还包括了机器学习的实践应用和案例分析。它介绍了如何通过Python等编程语言和机器学习库进行实际的机器学习项目开发,包括数据预处理、特征工程、模型训练和评估等环节。对于初学者来说,这部分内容非常有价值,可以帮助他们快速进入实际应用的阶段。 总结来说,《机器学习学习笔记.pdf》是一本很好的机器学习入门教材,它详细介绍了机器学习的基本概念和常用算法,并提供了实际项目的实践指导。无论是对于想要了解机器学习基础知识的初学者,还是对于已经有一定机器学习经验的开发者来说,这本学习笔记都是一本值得阅读和参考的资料。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值