go谈话+区块链教程peer根吩咐进口及加载子吩咐二

  伯仲连区块链教程fabric1.0源代码领会peer peer根吩咐进口及加载子吩咐二区块链伯仲。。币小哥资源讯息:币小哥资源讯息:...

go谈话+区块链教程peer根吩咐进口及加载子吩咐二

  伯仲连区块链教程fabric1.0源代码领会peer peer根吩咐进口及加载子吩咐二区块链伯仲。

币小哥资源讯息:币小哥资源讯息:github.com/op/go-logging

币小哥资源讯息:

  ```go

  func init() {

      logger = logging.mustgetlogger(pkglogid) //创造仅在flogging包内代码运用的logging.logger东西

      reset() //全部变量初始化为默许值

      initgrpclogger() //初始化grpc logger区块链伯仲,即创造logging.logger东西,并用这个东西树立grpclog

  //代码在common/flogging/logging.go

  init()实行中断后,peer/main.go中挪用flogging.initfromspec(loggingspec),将再次初始化全部日记级别为loggingspec,之前默许为logging.info区块链伯仲。

  func initfromspec(spec string) string代码如次区块链伯仲。

币小哥资源讯息:[<module>[,<module>...]=]<level>[:[<module>[,<module>...]=]<level>...]区块链伯仲。

  此处传入spec为"",将""模块日记级别树立为defaultlevel,并会将modules初始化为defaultlevel区块链伯仲。

  ```go

  levelall := defaultlevel //defaultlevel为logging.info

  var err error

  if spec != "" { //即使spec不为空区块链伯仲,则按既定方法读取

      fields := strings.split(spec, ":") //按:分隔

      for _, field := range fields {

          split := strings.split(field, "=") //按=分隔

          switch len(split) {

          case 1: //惟有level

              if levelall, err = logging.loglevel(field); err != nil { //levelall赋值为logging.loglevel列举中设置的level级别

                  levelall = defaultlevel // 即使没有设置区块链伯仲,则运用默许日记级别

          case 2: //对准module,module...=level区块链伯仲,split[0]为模块集,split[1]为要树立的日记级别

              levelsingle, err := logging.loglevel(split[1]) //levelsingle赋值为logging.loglevel列举中设置的level级别

              modules := strings.split(split[0], ",") //按,分隔获得模块名

              for _, module := range modules {

                  logging.setlevel(levelsingle, module) //本条文则中一切模块日记级别均树立为levelsingle

          default:

  //代码在common/flogging/logging.go

币小哥资源讯息:fabric 1.0源代码条记 之 flogging(fabric日记体例)

  ## 4、初始化 msp (membership service provider会员效劳供给者)

  如次代码为初始化msp,获得peer.mspconfigpath路途和peer.localmspid,辨别表白msp的当地路途(/etc/hyperledger/fabric/msp/)和peer所关系的msp id,并初始化构造和身份消息区块链伯仲。

  ```go

  var mspmgrconfigdir = config.getpath("peer.mspconfigpath")

  var mspid = viper.getstring("peer.localmspid")

  err = common.initcrypto(mspmgrconfigdir, mspid)

  //代码在peer/main.go

币小哥资源讯息:币小哥资源讯息:

币小哥资源讯息:为处置员文凭的pem文献,如admin@org1.example.com-cert.pem区块链伯仲。

币小哥资源讯息:为根ca文凭的pem文献,如ca.org1.example.com-cert.pem区块链伯仲。

币小哥资源讯息:为具备节点的出面密钥的pem文献,如91e54fccbb82b29d07657f6df9587c966edee6366786d234bbb8c96707ec7c16_sk区块链伯仲。

币小哥资源讯息:为节点x.509文凭的pem文献,如peer1.org1.example.com-cert.pem区块链伯仲。

币小哥资源讯息:为tls根ca文凭的pem文献,如tlsca.org1.example.com-cert.pem区块链伯仲。

币小哥资源讯息:

  ```go

  bccsp:

      default: sw

      sw:

          hash: sha2

          security: 256

          filekeystore:

              keystore:

  var bccspconfig *factory.factoryopts

  err = viperutil.enhancedexactunmarshalkey("peer.bccsp", &bccspconfig) //将peer.bccsp摆设消息加载至bccspconfig中

  err = mspmgmt.loadlocalmsp(mspmgrconfigdir, bccspconfig, localmspid) //从指定目次中加载当地msp

  //代码在peer/common/common.go

币小哥资源讯息:

  ```go

  type factoryopts struct {

      providername string `mapstructure:"default" json:"default" yaml:"default"`

      swopts *swopts `mapstructure:"sw,omitempty" json:"sw,omitempty" yaml:"swopts"`

  //factoryopts代码在bccsp/factory/nopkcs11.go,本目次下另有代码文献pkcs11.go,在-tags "nopkcs11"前提下二选一编写翻译区块链伯仲。

  ```go

  type swopts struct {

      // default algorithms when not specified (deprecated?)

      seclevel int `mapstructure:"security" json:"security" yaml:"security"`

      hashfamily string `mapstructure:"hash" json:"hash" yaml:"hash"`

      // keystore options

      ephemeral bool `mapstructure:"tempkeys,omitempty" json:"tempkeys,omitempty"`

      filekeystore *filekeystoreopts `mapstructure:"filekeystore,omitempty" json:"filekeystore,omitempty" yaml:"filekeystore"`

      dummykeystore *dummykeystoreopts `mapstructure:"dummykeystore,omitempty" json:"dummykeystore,omitempty"`

  type filekeystoreopts struct {

      keystorepath string `mapstructure:"keystore" yaml:"keystore"`

  //swopts和filekeystoreopts代码均在bccsp/factory/swfactory.go

  如次代码为viperutil.enhancedexactunmarshalkey("peer.bccsp", &bccspconfig)的简直实行,getkeysrecursively为递归读取peer.bccsp摆设消息区块链伯仲。

币小哥资源讯息:github.com/mitchellh/mapstructure,用来将map[string]interface{}变换为struct区块链伯仲。

币小哥资源讯息:

  ```go

  func enhancedexactunmarshalkey(basekey string, output interface{}) error {

      m := make(map[string]interface{})

      m[basekey] = nil

      leafkeys := getkeysrecursively("", viper.get, m)

      config := &mapstructure.decoderconfig{

          metadata: nil,

          result: output,

          weaklytypedinput: true,

      decoder, err := mapstructure.newdecoder(config)

      return decoder.decode(leafkeys[basekey])

  //代码在common/viperutil/config_util.go

  如次代码为mspmgmt.loadlocalmsp(mspmgrconfigdir, bccspconfig, localmspid)的简直实行,从指定目次中加载当地msp区块链伯仲。

  ```go

  conf, err := msp.getlocalmspconfig(dir, bccspconfig, mspid) //获得当地msp摆设区块链伯仲,序列化后写入msp.mspconfig,即conf

  return getlocalmsp().setup(conf) //调取msp.newbccspmsp()创造bccspmsp范例区块链伯仲,调取bccspmsp.setup(conf)解码conf.config并树立bccspmsp

  //代码在msp/mgmt/mgmt.go

  如次代码为msp.getlocalmspconfig(dir, bccspconfig, mspid)的简直实行区块链伯仲。

  setupbccspkeystoreconfig()中心代码为bccspconfig.swopts.filekeystore = &factory.filekeystoreopts{keystorepath: keystoredir},手段是在filekeystore或keystorepath为空时树立默许值区块链伯仲。

  ```go

  signcertdir := filepath.join(dir, signcerts) //signcerts为"signcerts"区块链伯仲,signcertdir即/etc/hyperledger/fabric/msp/signcerts/

  keystoredir := filepath.join(dir, keystore) //keystore为"keystore"区块链伯仲,keystoredir即/etc/hyperledger/fabric/msp/keystore/

  bccspconfig = setupbccspkeystoreconfig(bccspconfig, keystoredir) //树立bccspconfig.swopts.ephemeral = false和bccspconfig.swopts.filekeystore = &factory.filekeystoreopts{keystorepath: keystoredir}

      //bccspconfig.swopts.ephemeral能否短促的

  err := factory.initfactories(bccspconfig) //初始化bccsp factory区块链伯仲,并创造bccsp范例

  signcert, err := getpemmaterialfromdir(signcertdir) //读取x.509文凭的pem文献

  sigid := &msp.signingidentityinfo{publicsigner: signcert[0], privatesigner: nil} //结构signingidentityinfo

  return getmspconfig(dir, id, sigid) //辨别读取cacerts、admincerts、tlscacerts文献区块链伯仲,以及config.yaml中构造消息,结构msp.fabricmspconfig,序列化后用来结构msp.mspconfig

  //代码在msp/configbuilder.go

币小哥资源讯息:fabric 1.0源代码条记 之 bccsp(区块链加密效劳供给者)

  至此,peer/main.go中断,接下来将加入peer/node/start.go中serve(args)因变量区块链伯仲。

本文转载自互联网,如有侵权,联系删除

相关推荐

评论列表
  • 没错,波场上项目没一个好的,都是骗了跑,这孙割的项目都是一波流,不割韭菜这孙子心里难受。

    2021-11-04 14:07:42 回复该评论
  • 昨天开多了瑞波,爽。老外喊的1万美金一个瑞波。

    2021-11-04 14:07:42 回复该评论
  • 星展银行开始卖比特币以太坊了。

    2021-11-04 14:07:42 回复该评论
  • 刚进币圈的新人小白都听说过孙割的大名囧

    2021-11-04 14:07:42 回复该评论
  • 进去没用。。算了。你给他们说就是了。哈哈。反正我发现庄家跟我思路一样。

    2021-11-04 21:56:39 回复该评论
  • 狗狗就像我心电图的过山车一样?小心脏受不了

    2021-11-04 21:56:39 回复该评论
  • 以前我刚接触也是啊什么都不懂又不敢群里问,看完教程有不懂的直接问客服了

    2021-11-04 21:56:39 回复该评论
  • 都一样的,主要根据市场波动的,现在利润就很高

    2021-11-04 21:56:39 回复该评论