兄弟连区块链教程Fabric1.0源代码分析Fabric1.0.4go代码量统计,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。
# Fabric 1.0源代码笔记 之Fabric 1.0.4 go代码量统计
## 1、概述
除test、vendor、mocks、example、protos外,go核心代码文件341个,核心代码行63433行。
```bash
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、代码分布
<TABLE>
<TR>
<TD>目录</TD>
<TD>代码量</TD>
<TD>代码量占比</TD>
</TR>
<TR>
<TD>bccsp</TD>
<TD>5605</TD>
<TD>8.84%</TD>
</TR>
<TR>
<TD>common</TD>
<TD>12998</TD>
<TD>20.49%</TD>
</TR>
<TR>
<TD>core</TD>
<TD>22613</TD>
<TD>35.65%</TD>
</TR>
<TR>
<TD>events</TD>
<TD>1069</TD>
<TD>1.69%</TD>
</TR>
<TR>
<TD>gossip</TD>
<TD>9389</TD>
<TD>14.80%</TD>
</TR>
<TR>
<TD>msp</TD>
<TD>2425</TD>
<TD>3.82%</TD>
</TR>
<TR>
<TD>orderer</TD>
<TD>5199</TD>
<TD>8.20%</TD>
</TR>
<TR>
<TD>peer</TD>
<TD>4135</TD>
<TD>6.52%</TD>
</TR>
</TABLE>
## 3、详情
```bash
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
```
有疑问加站长微信联系(非本文作者))