没有链码的创世块?
Genesis block without chaincode?
我的目的是复制 Marbles application, a Hyperledger demo. Using instructions from here,我能够在我的 Ubuntu VM 上设置区块链网络。但是,我没有部署链码。当我调用 API 读取链时,我得到了一个块;我认为这是创世块。还有一些日志列表也差不多。
我的问题如下。如果我对 运行 区块链的意图是启动分布式应用程序(例如 Marbles),那么在没有部署链代码的情况下,为什么要开采创世块?在没有部署链码的情况下,区块链网络无法处理任何交易,因此,区块中不可能(应该)存在任何交易。
那么,为什么在没有部署链代码的情况下开采创世块?
你是对的,创世块是由验证节点自动创建为账本中的第一个块。
它不包含任何交易,并且具有独特的格式。一个例子是:
{"nonHashData":{"localLedgerCommitTimestamp":{"seconds":1469225503,"nanos":346624842}}}
如您所见,其中没有“previousBlockHash”属性。您可以使用 ledger.blockchain.genesisBlock
:
在 core.yaml 文件中自定义此块的内容
ledger:
blockchain:
# Define the genesis block
genesisBlock:
# Deploy chaincodes into the genesis block
chaincode:
path: github.com/hyperledger/fabric/core/example/chaincode/chaincode_example01
type: GOLANG
constructor:
func: init
args:
- alice
- "4"
- bob
- "10"
我的目的是复制 Marbles application, a Hyperledger demo. Using instructions from here,我能够在我的 Ubuntu VM 上设置区块链网络。但是,我没有部署链码。当我调用 API 读取链时,我得到了一个块;我认为这是创世块。还有一些日志列表也差不多。
我的问题如下。如果我对 运行 区块链的意图是启动分布式应用程序(例如 Marbles),那么在没有部署链代码的情况下,为什么要开采创世块?在没有部署链码的情况下,区块链网络无法处理任何交易,因此,区块中不可能(应该)存在任何交易。
那么,为什么在没有部署链代码的情况下开采创世块?
你是对的,创世块是由验证节点自动创建为账本中的第一个块。 它不包含任何交易,并且具有独特的格式。一个例子是:
{"nonHashData":{"localLedgerCommitTimestamp":{"seconds":1469225503,"nanos":346624842}}}
如您所见,其中没有“previousBlockHash”属性。您可以使用 ledger.blockchain.genesisBlock
:
ledger:
blockchain:
# Define the genesis block
genesisBlock:
# Deploy chaincodes into the genesis block
chaincode:
path: github.com/hyperledger/fabric/core/example/chaincode/chaincode_example01
type: GOLANG
constructor:
func: init
args:
- alice
- "4"
- bob
- "10"