## statedb.go
stateDB用来存储以太坊中关于merkle trie的所有内容。 StateDB负责缓存和存储嵌套状态。 这是检索合约和账户的一般查询界面:数据结构type StateDB struct {db Database // 后端的数据库trie Trie // trie树 main account trie// This map holds ‘live‘ objects, which will get modified while processing a state transition.// 下面的Map用来存储当前活动的对象,这些对象在状态转换的时候会被修改。// stat...
兄弟连区块链教程以太坊源码分析core-state-process源码分析(二):关于g0的计算,在黄皮书上由详细的介绍和黄皮书有一定出入的部分在于if contractCreation && homestead {igas.SetUint64(params.TxGasContractCreation) 这是因为 Gtxcreate+Gtransaction = TxGasContractCreation
func IntrinsicGas(data []byte, contractCreation, homestead bool) *big.Int {igas := new(big.Int)if contractCreation && homestead {igas.Set...
Fabric 1.0源代码笔记 之 blockfile(区块文件存储)
1、blockfile概述blockfile,即Fabric区块链区块文件存储,默认目录/var/hyperledger/production/ledgersData/chains,含index和chains两个子目录。其中index为索引目录,采用leveldb实现。而chains为各ledger的区块链文件,子目录以ledgerid为名,使用文件系统实现。区块文件以blockfile_为前缀,最大大小默认64M。blockfile,相关代码集中在common/ledger/blkstorage/fsblkst...
3、MSP接口实现
MSP接口实现,即bccspmsp结构体及方法,bccspmsp定义如下:type bccspmsp struct {
????rootCerts []Identity //信任的CA证书列表
????intermediateCerts []Identity //信任的中间证书列表
????tlsRootCerts [][]byte //信任的CA TLS 证书列表
????tlsIntermediateCerts [][]byte //信任的中间TLS 证书列表
????certificationTreeInternalNodesMap map[string]bool //待定
????signer SigningIdentity //签名身份
?...
区块链教程Fabric1.0源代码分析PeerBroadcastClient(Broadcast客户端),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
Fabric1.0源代码笔记之Peer DeliverClient(Deliver客户端)1、DeliverClient概述DeliverClient代码分布如下:peer/channel/deliverclient.go,deliverClientIntf接口...
区块链教程Fabric1.0源代码分析policy(背书策略),2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
Fabric 1.0源代码笔记 之 policy(背书策略)1、policy概述policy代码分布在core/policy、core/policyprovider、common/policies目录下。目录结构如下:core/policy/policy.go,PolicyChe...
Fabric 1.0源代码笔记 之 Chaincode(链码)
1、Chaincode概述Chaincode,即链码或智能合约,代码分布在protos/peer目录、core/chaincode和core/common/ccprovider目录,目录结构如下:protos/peer目录:????* chaincode.pb.go,ChaincodeDeploymentSpec、ChaincodeInvocationSpec结构体定义。core/chaincode目录:???? platforms目录,链码的编写语言平台实现,如golang或java。???????? platforms.go,Platform接口定义,及部分工...
1、idStore概述
Fabric支持创建多个Ledger,不同Ledger以ledgerID区分。多个ledgerID及其创世区块存储在idStore数据库中,idStore数据库基于leveldb实现。idStore默认使用路径:/var/hyperledger/production/ledgersData/ledgerProvider/。idStore库中特殊key "underConstructionLedgerKey",用于标志最新在建的ledgerID,ledgerID创建成功后或失败时该标志将清除,另外此标志也用于异常时按ledgerID恢复数据。idStore相关代码集中...
Fabric 1.0源代码笔记 之 Ledger #statedb(状态数据库)
1、statedb概述
statedb,或VersionedDB,即状态数据库,存储了交易(transaction)日志中所有键的最新值,也称世界状态(world state)。可选择基于leveldb或cauchdb实现。
statedb,代码分布在core/ledger/kvledger/txmgmt/statedb目录下,目录结构如下:statedb.go,定义了核心接口VersionedDBProvider、VersionedDB、ResultsIterator和QueryResult,以及UpdateBatch和n...
区块链本身是封闭的。区块链的确定性模型基于这样一个事实:在交易执行时区块链不能执行任何来自外部的逻辑,所有的外部数据只能通过交易进入到系统中。预言机/Oracle就是通过交易为智能合约提供可信数据的服务。Oracle虽然听起来神秘,但实现并不复杂,在这篇文章里,我们将介绍预言机的作用以及运作原理,并通过天气数据预言机WeatherOracle的完整实现过程,来帮助你快速掌握区块链预言机/Oracle的精髓。1、为什么智能合约需要预...
兄弟连区块链教程Fabric1.0源代码分析ECDSA椭圆曲线数字签名算法,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
Fabric 1.0源代码笔记 之 ECDSA(椭圆曲线数字签名算法)
1、椭圆曲线算法概述
1.1、无穷远点、无穷远直线、射影平面平行线相交于无穷远点;
直线上有且只有一个无穷远点;
...
区块链教程区块链信息安全3椭圆曲线加解密及签名算法的技术原理一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
椭圆曲线加解密及签名算法的技术原理及其Go语言实现
椭圆曲线加密算法,即:Elliptic Curve Cryptography,简称ECC,是基于椭圆曲线数学理论实现的一种非对称加密算法。相比...
区块链教程Fabric1.0源代码分析Peer peer node start命令实现,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
Fabric 1.0源代码笔记 之 Peer #peer node start命令实现1、peer node加载子命令start和status
peer node加载子命令start和status,代码如下:
func Cmd() *cobra.Command {
??...
btcpool矿池-slparser(share log parser)模块解析
核心机制总结支持三种功能: 指定Date和UID,将打印指定日期指定用户的share信息到stdout UID=0时,将打印指定日期所有用户的share信息 指定Date但未指定UID,读取指定日期sharelog,统计数据并写入数据库 按Worker、user、pool三个维度统计:Accept1h、Accept1d、score1h、score1d、Reject1h、Reject1d 数据库仅保留最近3个月统计数据 如果Date和UID均未指定,将...
这是一个交互式的 JavaScript 执行环境,在这里面可以执行 JavaScript 代码,其中 > 是命令提示符。在这个环境里也内置了一些用来操作eth的 JavaScript 对象,可以直接使用这些对象。这些对象主要包括:
eth:包含一些跟操作区块链相关的方法;net:包含一些查看p2p网络状态的方法;admin:包含一些与管理节点相关的方法;miner:包含启动&停止挖矿的一些方法;personal:主要包含一些管理账户的方法;txpool:包含一些查看交易内存...