Skip to content

Commit ae98a8c

Browse files
committed
[FAB-4318] Fix block-listener.go to adapt fabric alpha2
The current block-listener.go example cannot run in alpha2. o resolve this problem, it is necessary to load appropriate msp info here. also in fabric/event/consumer/consumer.go, the signerCertbytes also needs to be passed to the creator of event message. Change-Id: I63c54ee1e4691c46b51983e73588328b3638c8db Signed-off-by: Hangyu Li <[email protected]>
1 parent 3b40efa commit ae98a8c

File tree

3 files changed

+71
-2
lines changed

3 files changed

+71
-2
lines changed

events/consumer/consumer.go

+7
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,13 @@ func (ec *EventsClient) send(emsg *ehpb.Event) error {
8080
return fmt.Errorf("could not obtain the default signing identity, err %s", err)
8181
}
8282

83+
//pass the signer's cert to Creator
84+
signerCert, err := signer.Serialize()
85+
if err != nil {
86+
return fmt.Errorf("fail to serialize the default signing identity, err %s", err)
87+
}
88+
emsg.Creator = signerCert
89+
8390
signedEvt, err := utils.GetSignedEvent(emsg, signer)
8491
if err != nil {
8592
return fmt.Errorf("could not sign outgoing event, err %s", err)

examples/events/block-listener/README.md

+42-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,46 @@
11
# What is block-listener
2-
## WIP : TODO for v1.0 using FAB-3037
3-
Need to describe this tool, and all about events
2+
block-listener.go will connect to a peer and receive block and chaincode events (if there are chaincode events being set).
3+
Currently, this example only runs with TLS disabled.
4+
5+
# To Run
6+
```sh
7+
1. go build
8+
9+
2. ./block-listener -events-address=< event address > -events-from-chaincode=< chaincode ID > -events-mspdir=< msp directory > -events-mspid=< msp id >
10+
```
11+
Please be noted that if no msp info provided, it uses default MSP under fabric/sampleconfig.
12+
# Example with e2e
13+
Please make sure you have finished running the [e2e_cli example](https://github.com/hyperledger/fabric/tree/master/examples/e2e_cli). Before doing that, don't forget to make sure that TLS has been disabled by setting the CORE_PEER_TLS_ENABLED=***false*** in ``docker-compose-cli.yaml``, ``base/docker-compose-base.yaml`` and ``base/peer-base.yaml``.
14+
15+
Suppose you just finished the All-in-one:
16+
```sh
17+
./network_setup.sh up
18+
```
19+
Attach event client to peer peer0.org1.example.com (suppose you are running block-listener in the host environment):
20+
```sh
21+
./block-listener -events-address=127.0.0.1:7053 -events-mspdir=<peer0.org1.example.com's msp directory > -events-mspid=Org1MSP
22+
```
23+
24+
Event client should output "Event Address: 127.0.0.1:7053" and wait for events.
25+
26+
Exec into the cli container:
27+
28+
```sh
29+
docker exec -it cli bash
30+
```
31+
Setup the environment variables for peer0.org1.example.com
32+
```sh
33+
CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/users/[email protected]/msp
34+
CORE_PEER_ADDRESS=peer0.org1.example.com:7051
35+
CORE_PEER_LOCALMSPID="Org1MSP"
36+
```
37+
38+
Create an invoke transaction:
39+
40+
```sh
41+
peer chaincode invoke -o orderer.example.com:7050 -C $CHANNEL_NAME -n mycc -c '{"Args":["invoke","a","b","10"]}'
42+
```
43+
Now you should see the block content received in events client.
444
545
646
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.

examples/events/block-listener/block-listener.go

+22
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import (
2424

2525
"github.com/hyperledger/fabric/core/ledger/util"
2626
"github.com/hyperledger/fabric/events/consumer"
27+
"github.com/hyperledger/fabric/msp/mgmt"
28+
"github.com/hyperledger/fabric/msp/mgmt/testtools"
2729
"github.com/hyperledger/fabric/protos/common"
2830
pb "github.com/hyperledger/fabric/protos/peer"
2931
"github.com/hyperledger/fabric/protos/utils"
@@ -135,10 +137,30 @@ func getChainCodeEvents(tdata []byte) (*pb.ChaincodeEvent, error) {
135137
func main() {
136138
var eventAddress string
137139
var chaincodeID string
140+
var mspDir string
141+
var mspId string
138142
flag.StringVar(&eventAddress, "events-address", "0.0.0.0:7053", "address of events server")
139143
flag.StringVar(&chaincodeID, "events-from-chaincode", "", "listen to events from given chaincode")
144+
flag.StringVar(&mspDir, "events-mspdir", "", "set up the msp direction")
145+
flag.StringVar(&mspId, "events-mspid", "", "set up the mspid")
140146
flag.Parse()
141147

148+
//if no msp info provided, we use the default MSP under fabric/sampleconfig
149+
if mspDir == "" {
150+
err := msptesttools.LoadMSPSetupForTesting()
151+
if err != nil {
152+
fmt.Printf("Could not initialize msp, err %s", err)
153+
os.Exit(-1)
154+
}
155+
} else {
156+
//load msp info
157+
err := mgmt.LoadLocalMsp(mspDir, nil, mspId)
158+
if err != nil {
159+
fmt.Printf("Could not initialize msp, err %s", err)
160+
os.Exit(-1)
161+
}
162+
}
163+
142164
fmt.Printf("Event Address: %s\n", eventAddress)
143165

144166
a := createEventClient(eventAddress, chaincodeID)

0 commit comments

Comments
 (0)