区块链教程Fabric1.0源代码分析Fabric1.0.4go代码量统计,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。

Fabric 1.0源代码笔记 之Fabric 1.0.4 go代码量统计

1、概述

除test、vendor、mocks、example、protos外,go核心代码文件341个,核心代码行63433行。

find ./ |grep -vE 'test|vendor|mocks|example|protos' | grep '\.go$' | wc -l
341
wc -l `find ./ |grep -vE 'test|vendor|mocks|example|protos' | grep '\.go$'`
63433 total

2、代码分布



  
  
  


  
  
  


  
  
  


  
  
  


  
  
  


  
  
  


  
  
  


  
  
  


  
  
  

目录代码量代码量占比
bccsp56058.84%
common1299820.49%
core2261335.65%
events10691.69%
gossip938914.80%
msp24253.82%
orderer51998.20%
peer41356.52%

3、详情

     65 ./bccsp/aesopts.go
    144 ./bccsp/bccsp.go
     49 ./bccsp/ecdsaopts.go
     93 ./bccsp/factory/factory.go
     87 ./bccsp/factory/nopkcs11.go
     35 ./bccsp/factory/opts.go
    106 ./bccsp/factory/pkcs11.go
     66 ./bccsp/factory/pkcs11factory.go
     82 ./bccsp/factory/swfactory.go
     70 ./bccsp/hashopts.go
     34 ./bccsp/keystore.go
    326 ./bccsp/opts.go
    108 ./bccsp/pkcs11/conf.go
    120 ./bccsp/pkcs11/ecdsa.go
     97 ./bccsp/pkcs11/ecdsakey.go
    535 ./bccsp/pkcs11/impl.go
    617 ./bccsp/pkcs11/pkcs11.go
     81 ./bccsp/rsaopts.go
     89 ./bccsp/signer/signer.go
    161 ./bccsp/sw/aes.go
     65 ./bccsp/sw/aeskey.go
     81 ./bccsp/sw/conf.go
     49 ./bccsp/sw/dummyks.go
    171 ./bccsp/sw/ecdsa.go
    120 ./bccsp/sw/ecdsakey.go
    431 ./bccsp/sw/fileks.go
     37 ./bccsp/sw/hash.go
    393 ./bccsp/sw/impl.go
     94 ./bccsp/sw/internals.go
    157 ./bccsp/sw/keyderiv.go
     67 ./bccsp/sw/keygen.go
    162 ./bccsp/sw/keyimport.go
     72 ./bccsp/sw/rsa.go
    136 ./bccsp/sw/rsakey.go
     26 ./bccsp/utils/errs.go
     69 ./bccsp/utils/io.go
    459 ./bccsp/utils/keys.go
     25 ./bccsp/utils/slice.go
     26 ./bccsp/utils/x509.go
    119 ./common/cauthdsl/cauthdsl.go
    174 ./common/cauthdsl/cauthdsl_builder.go
     68 ./common/cauthdsl/policy.go
     34 ./common/cauthdsl/policy_util.go
    279 ./common/cauthdsl/policyparser.go
    115 ./common/config/api.go
     96 ./common/config/application.go
     38 ./common/config/application_util.go
     94 ./common/config/applicationorg.go
    241 ./common/config/channel.go
     74 ./common/config/channel_util.go
    128 ./common/config/consortium.go
     99 ./common/config/consortiums.go
     44 ./common/config/consortiums_util.go
    150 ./common/config/msp/config.go
    108 ./common/config/msp/config_util.go
    247 ./common/config/orderer.go
     57 ./common/config/orderer_util.go
    129 ./common/config/organization.go
    152 ./common/config/proposer.go
     93 ./common/config/root.go
    105 ./common/config/standardvalues.go
    114 ./common/configtx/api/api.go
    186 ./common/configtx/compare.go
    282 ./common/configtx/config.go
    168 ./common/configtx/configmap.go
    155 ./common/configtx/initializer.go
    305 ./common/configtx/manager.go
    291 ./common/configtx/template.go
    412 ./common/configtx/tool/configtxgen/main.go
     38 ./common/configtx/tool/configtxgen/metadata/metadata.go
    268 ./common/configtx/tool/localconfig/config.go
    276 ./common/configtx/tool/provisional/provisional.go
    208 ./common/configtx/update.go
     99 ./common/configtx/util.go
     42 ./common/crypto/random.go
     28 ./common/crypto/signer.go
    104 ./common/errors/codes.go
    204 ./common/errors/errors.go
     61 ./common/flogging/grpclogger.go
    233 ./common/flogging/logging.go
     75 ./common/genesis/genesis.go
     75 ./common/ledger/blkstorage/blockstorage.go
    218 ./common/ledger/blkstorage/fsblkstorage/block_serialization.go
    209 ./common/ledger/blkstorage/fsblkstorage/block_stream.go
    117 ./common/ledger/blkstorage/fsblkstorage/blockfile_helper.go
    696 ./common/ledger/blkstorage/fsblkstorage/blockfile_mgr.go
     94 ./common/ledger/blkstorage/fsblkstorage/blockfile_rw.go
    381 ./common/ledger/blkstorage/fsblkstorage/blockindex.go
    101 ./common/ledger/blkstorage/fsblkstorage/blocks_itr.go
     54 ./common/ledger/blkstorage/fsblkstorage/config.go
     93 ./common/ledger/blkstorage/fsblkstorage/fs_blockstore.go
     65 ./common/ledger/blkstorage/fsblkstorage/fs_blockstore_provider.go
     53 ./common/ledger/ledger_interface.go
     99 ./common/ledger/util/ioutil.go
    165 ./common/ledger/util/leveldbhelper/leveldb_helper.go
    152 ./common/ledger/util/leveldbhelper/leveldb_provider.go
     56 ./common/ledger/util/protobuf_util.go
     62 ./common/ledger/util/util.go
     74 ./common/localmsp/signer.go
     24 ./common/metadata/metadata.go
     83 ./common/policies/implicitmeta.go
     69 ./common/policies/implicitmeta_util.go
    376 ./common/policies/policy.go
     66 ./common/tools/configtxlator/main.go
     32 ./common/tools/configtxlator/metadata/metadata.go
    125 ./common/tools/configtxlator/rest/configtxlator_handlers.go
    109 ./common/tools/configtxlator/rest/protolator_handlers.go
     40 ./common/tools/configtxlator/rest/router.go
    147 ./common/tools/configtxlator/sanitycheck/sanitycheck.go
    234 ./common/tools/configtxlator/update/update.go
    175 ./common/tools/cryptogen/ca/generator.go
     77 ./common/tools/cryptogen/csp/csp.go
    568 ./common/tools/cryptogen/main.go
     32 ./common/tools/cryptogen/metadata/metadata.go
    224 ./common/tools/cryptogen/msp/generator.go
    157 ./common/tools/protolator/api.go
    149 ./common/tools/protolator/dynamic.go
    445 ./common/tools/protolator/json.go
    111 ./common/tools/protolator/nested.go
    152 ./common/tools/protolator/statically_opaque.go
    124 ./common/tools/protolator/variably_opaque.go
    195 ./common/util/utils.go
    327 ./common/viperutil/config_util.go
     73 ./core/admin.go
    122 ./core/chaincode/ccproviderimpl.go
    759 ./core/chaincode/chaincode_support.go
     91 ./core/chaincode/chaincodeexec.go
    106 ./core/chaincode/exectransaction.go
   1459 ./core/chaincode/handler.go
     91 ./core/chaincode/platforms/car/platform.go
     89 ./core/chaincode/platforms/golang/env.go
     84 ./core/chaincode/platforms/golang/list.go
    149 ./core/chaincode/platforms/golang/package.go
    462 ./core/chaincode/platforms/golang/platform.go
     89 ./core/chaincode/platforms/java/hash.go
     48 ./core/chaincode/platforms/java/package.go
    148 ./core/chaincode/platforms/java/platform.go
    227 ./core/chaincode/platforms/platforms.go
    247 ./core/chaincode/platforms/util/utils.go
    882 ./core/chaincode/shim/chaincode.go
    807 ./core/chaincode/shim/handler.go
     45 ./core/chaincode/shim/inprocstream.go
    235 ./core/chaincode/shim/interfaces.go
     46 ./core/chaincode/shim/response.go
    127 ./core/comm/config.go
    215 ./core/comm/connection.go
     80 ./core/comm/creds.go
    101 ./core/comm/producer.go
    364 ./core/comm/server.go
     41 ./core/committer/committer.go
    130 ./core/committer/committer_impl.go
    673 ./core/committer/txvalidator/validator.go
    245 ./core/common/ccpackage/ccpackage.go
     70 ./core/common/ccprovider/ccinfocache.go
    466 ./core/common/ccprovider/ccprovider.go
    282 ./core/common/ccprovider/cdspackage.go
    346 ./core/common/ccprovider/sigcdspackage.go
     79 ./core/common/sysccprovider/sysccprovider.go
    435 ./core/common/validation/msgvalidation.go
    191 ./core/config/config.go
     37 ./core/container/api/core.go
     76 ./core/container/ccintf/ccintf.go
    266 ./core/container/controller.go
    473 ./core/container/dockercontroller/dockercontroller.go
    252 ./core/container/inproccontroller/inproccontroller.go
     41 ./core/container/inproccontroller/inprocstream.go
     72 ./core/container/util/dockerutil.go
    171 ./core/container/util/writer.go
    101 ./core/container/vm.go
    230 ./core/deliverservice/blocksprovider/blocksprovider.go
    246 ./core/deliverservice/client.go
    231 ./core/deliverservice/deliveryclient.go
     88 ./core/deliverservice/requester.go
    537 ./core/endorser/endorser.go
     72 ./core/fsm.go
     60 ./core/ledger/kvledger/history/historydb/histmgr_helper.go
     41 ./core/ledger/kvledger/history/historydb/historydb.go
    217 ./core/ledger/kvledger/history/historydb/historyleveldb/historyleveldb.go
    155 ./core/ledger/kvledger/history/historydb/historyleveldb/historyleveldb_query_executer.go
    247 ./core/ledger/kvledger/kv_ledger.go
    341 ./core/ledger/kvledger/kv_ledger_provider.go
     33 ./core/ledger/kvledger/recovery.go
    268 ./core/ledger/kvledger/txmgmt/rwsetutil/query_results_helper.go
    123 ./core/ledger/kvledger/txmgmt/rwsetutil/rwset_builder.go
    103 ./core/ledger/kvledger/txmgmt/rwsetutil/rwset_proto_util.go
    264 ./core/ledger/kvledger/txmgmt/statedb/statecouchdb/query_wrapper.go
    492 ./core/ledger/kvledger/txmgmt/statedb/statecouchdb/statecouchdb.go
    229 ./core/ledger/kvledger/txmgmt/statedb/statedb.go
    206 ./core/ledger/kvledger/txmgmt/statedb/stateleveldb/stateleveldb.go
     35 ./core/ledger/kvledger/txmgmt/statedb/util.go
    244 ./core/ledger/kvledger/txmgmt/txmgr/lockbasedtxmgr/helper.go
     64 ./core/ledger/kvledger/txmgmt/txmgr/lockbasedtxmgr/lockbased_query_executer.go
     83 ./core/ledger/kvledger/txmgmt/txmgr/lockbasedtxmgr/lockbased_tx_simulator.go
    133 ./core/ledger/kvledger/txmgmt/txmgr/lockbasedtxmgr/lockbased_txmgr.go
     36 ./core/ledger/kvledger/txmgmt/txmgr/txmgr.go
    174 ./core/ledger/kvledger/txmgmt/validator/statebasedval/combined_iterator.go
    157 ./core/ledger/kvledger/txmgmt/validator/statebasedval/range_query_validator.go
    252 ./core/ledger/kvledger/txmgmt/validator/statebasedval/state_based_validator.go
     27 ./core/ledger/kvledger/txmgmt/validator/validator.go
     75 ./core/ledger/kvledger/txmgmt/version/version.go
    127 ./core/ledger/ledger_interface.go
     93 ./core/ledger/ledgerconfig/ledger_config.go
    160 ./core/ledger/ledgermgmt/ledger_mgmt.go
     46 ./core/ledger/util/couchdb/config.go
   1426 ./core/ledger/util/couchdb/couchdb.go
    169 ./core/ledger/util/couchdb/couchdbutil.go
     55 ./core/ledger/util/txvalidationflags.go
     34 ./core/ledger/util/util.go
    150 ./core/peer/config.go
    562 ./core/peer/peer.go
    210 ./core/policy/policy.go
     43 ./core/policyprovider/provider.go
    235 ./core/scc/cscc/configure.go
    179 ./core/scc/escc/endorser_onevalidsignature.go
    144 ./core/scc/importsysccs.go
    905 ./core/scc/lscc/lscc.go
    218 ./core/scc/qscc/query.go
     91 ./core/scc/samplesyscc/samplesyscc.go
     73 ./core/scc/sccproviderimpl.go
    178 ./core/scc/sysccapi.go
    459 ./core/scc/vscc/validator_onevalidsignature.go
     29 ./events/consumer/adapter.go
    256 ./events/consumer/consumer.go
    123 ./events/producer/eventhelper.go
    345 ./events/producer/events.go
    188 ./events/producer/handler.go
     72 ./events/producer/producer.go
     56 ./events/producer/register_internal_events.go
     71 ./gossip/api/channel.go
     71 ./gossip/api/crypto.go
     68 ./gossip/comm/comm.go
    642 ./gossip/comm/comm_impl.go
    381 ./gossip/comm/conn.go
    122 ./gossip/comm/crypto.go
     97 ./gossip/comm/demux.go
    195 ./gossip/comm/mock/mock_comm.go
     58 ./gossip/comm/msg.go
     64 ./gossip/common/common.go
    140 ./gossip/discovery/discovery.go
   1044 ./gossip/discovery/discovery_impl.go
    171 ./gossip/election/adapter.go
    487 ./gossip/election/election.go
     77 ./gossip/filter/filter.go
    344 ./gossip/gossip/algo/pull.go
    148 ./gossip/gossip/batcher.go
    156 ./gossip/gossip/certstore.go
    733 ./gossip/gossip/channel/channel.go
    168 ./gossip/gossip/chanstate.go
     97 ./gossip/gossip/gossip.go
   1257 ./gossip/gossip/gossip_impl.go
    279 ./gossip/gossip/msgstore/msgs.go
    378 ./gossip/gossip/pull/pullstore.go
    214 ./gossip/identity/identity.go
     94 ./gossip/integration/integration.go
    120 ./gossip/service/eventer.go
    322 ./gossip/service/gossip_service.go
     72 ./gossip/state/metastate.go
    144 ./gossip/state/payloads_buffer.go
    689 ./gossip/state/state.go
     69 ./gossip/util/logging.go
    202 ./gossip/util/misc.go
     82 ./gossip/util/msgs.go
    133 ./gossip/util/pubsub.go
    146 ./msp/cert.go
    278 ./msp/configbuilder.go
    218 ./msp/identities.go
     69 ./msp/mgmt/deserializer.go
    172 ./msp/mgmt/mgmt.go
     73 ./msp/mgmt/principal.go
    190 ./msp/msp.go
   1172 ./msp/mspimpl.go
    107 ./msp/mspmgrimpl.go
    165 ./orderer/common/blockcutter/blockcutter.go
     28 ./orderer/common/bootstrap/bootstrap.go
     53 ./orderer/common/bootstrap/file/bootstrap.go
    162 ./orderer/common/broadcast/broadcast.go
     90 ./orderer/common/configtxfilter/filter.go
    223 ./orderer/common/deliver/deliver.go
    107 ./orderer/common/filter/filter.go
     75 ./orderer/common/sigfilter/sigfilter.go
     53 ./orderer/common/sizefilter/sizefilter.go
    150 ./orderer/configupdate/configupdate.go
    503 ./orderer/kafka/chain.go
     58 ./orderer/kafka/channel.go
     78 ./orderer/kafka/config.go
     76 ./orderer/kafka/consenter.go
     32 ./orderer/kafka/partitioner.go
     86 ./orderer/kafka/retry.go
     78 ./orderer/ledger/file/factory.go
    111 ./orderer/ledger/file/impl.go
    160 ./orderer/ledger/json/factory.go
    177 ./orderer/ledger/json/impl.go
     65 ./orderer/ledger/ledger.go
     97 ./orderer/ledger/ram/factory.go
    171 ./orderer/ledger/ram/impl.go
    105 ./orderer/ledger/util.go
    365 ./orderer/localconfig/config.go
    221 ./orderer/main.go
     35 ./orderer/metadata/metadata.go
    296 ./orderer/multichain/chainsupport.go
    319 ./orderer/multichain/manager.go
    189 ./orderer/multichain/systemchain.go
    126 ./orderer/sample_clients/broadcast_config/client.go
     31 ./orderer/sample_clients/broadcast_config/newchain.go
    105 ./orderer/sample_clients/broadcast_timestamp/client.go
    144 ./orderer/sample_clients/deliver_stdout/client.go
    166 ./orderer/sample_clients/single_tx_client/single_tx_client.go
     94 ./orderer/server.go
    120 ./orderer/solo/consensus.go
     85 ./orderer/util.go
    130 ./peer/chaincode/chaincode.go
    348 ./peer/chaincode/common.go
    210 ./peer/chaincode/install.go
    129 ./peer/chaincode/instantiate.go
     59 ./peer/chaincode/invoke.go
    193 ./peer/chaincode/package.go
     64 ./peer/chaincode/query.go
     77 ./peer/chaincode/signpackage.go
    132 ./peer/chaincode/upgrade.go
    188 ./peer/channel/channel.go
    214 ./peer/channel/create.go
    152 ./peer/channel/deliverclient.go
    110 ./peer/channel/fetchconfig.go
    144 ./peer/channel/join.go
    112 ./peer/channel/list.go
     90 ./peer/channel/update.go
     73 ./peer/clilogging/common.go
     55 ./peer/clilogging/getlevel.go
     48 ./peer/clilogging/logging.go
     55 ./peer/clilogging/revertlevels.go
     55 ./peer/clilogging/setlevel.go
    230 ./peer/common/common.go
     96 ./peer/common/mockclient.go
    103 ./peer/common/ordererclient.go
    319 ./peer/gossip/mcs.go
     88 ./peer/gossip/sa.go
    122 ./peer/main.go
     46 ./peer/node/node.go
    382 ./peer/node/start.go
     60 ./peer/node/status.go
     51 ./peer/version/version.go
  63433 total

-