Date   

Re: Local Collections in Fabric 2.0 #fabric

David Enyeart
 

The pattern mentioned in 'Keeping transactors private' would meet the requirement of keeping the collaborators of a business transaction private in Fabric v2.0. In this pattern, each party writes common pre-image data, or a reference to each other's pre-image data, in their own private data collection that their own peer endorses. The pre-image data can later be shared as needed with other organizations, who can verify the hashes on the chain. If required in your scenario, you could also provide a third party such as a regulator access to the data so that they could verify both sets of hashes in chaincode and then 'settle' the business level transaction with a final Fabric transaction.

Concerning your specific question, I am aware of ongoing research to make either local collections proper, or private peer-to-peer transaction flows, available in a future version of Fabric. However, there is no specific plan or RFC available at this time.


Dave Enyeart

westerkamp---02/12/2020 04:50:16 AM---Hi everyone, Some time ago there has been a discussion concerning local collections with the goal to

From: westerkamp@...
To: fabric@...
Date: 02/12/2020 04:50 AM
Subject: [EXTERNAL] [Hyperledger Fabric] Local Collections in Fabric 2.0 #fabric
Sent by: fabric@...





Hi everyone,

Some time ago there has been a discussion concerning local collections with the goal to obscure members of a collection to other participants of a channel in FAB-7593.

I was wondering about the impact of novel Fabric 2.0 features on the proposal or if Fabric 2.0 delivers functionality that enables such collections already? In that context, I have checked out the private data sharing patterns descibed here. Especially the "Keeping transactors private" pattern seems very related.

I would like to introduce a short example to clearify the requirements: Four organizations A, B, C and D participate in a shared channel. A and B collaborate using chaincode containing a private data collection. C and D should not be able to observe that A and B are collaborating. Therefore, when A is submitting a transaction, C and D should not be able to tell who is affected by that transaction. Currently, the data collection definition reveals all members of the collections, so that C and D can derive that A and B are collaborating (from my understanding).

So my questions are:
- Can Fabric 2.0 already implement such a use can, e.g. by applying the "Keeping transactors private" pattern? If so, what would it look like in detail?
- If it cannot be implemented by Fabric 2.0 yet, what do we need to do so? Is FAB-7593 still relevant in context of Fabric 2.0?

Thanks and best regards,
Martin




Local Collections in Fabric 2.0 #fabric

@informartin
 

Hi everyone,

Some time ago there has been a discussion concerning local collections with the goal to obscure members of a collection to other participants of a channel in FAB-7593.

I was wondering about the impact of novel Fabric 2.0 features on the proposal or if Fabric 2.0 delivers functionality that enables such collections already? In that context, I have checked out the private data sharing patterns descibed here. Especially the "Keeping transactors private" pattern seems very related.

I would like to introduce a short example to clearify the requirements: Four organizations A, B, C and D participate in a shared channel. A and B collaborate using chaincode containing a private data collection. C and D should not be able to observe that A and B are collaborating. Therefore, when A is submitting a transaction, C and D should not be able to tell who is affected by that transaction. Currently, the data collection definition reveals all members of the collections, so that C and D can derive that A and B are collaborating (from my understanding).

So my questions are:
- Can Fabric 2.0 already implement such a use can, e.g. by applying the "Keeping transactors private" pattern? If so, what would it look like in detail?
- If it cannot be implemented by Fabric 2.0 yet, what do we need to do so? Is FAB-7593 still relevant in context of Fabric 2.0?

Thanks and best regards,
Martin


Installing HyperLedger Fabric on Raspberry Pi #hyperledger-fabric

Jonah Cancio
 

Hello, would you happen to have a tutorial on how to install HyperLedger Fabric 2.0 on a Raspberry Pi 3? As well as getting it to the point where one can run the fabric-samples such as byfn and fabcar properly?


Re: Unable to launch/instantiate chaincode container

Siddharth Jain
 

think we found what is causing the problem. the peer is on one network but if we manually create a container from the chaincode image, it is not on the same network. how can we fix this?

peer:
"Networks": {
                "testnet": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "2032a003bce7"
                    ],
                    "NetworkID": "c0d70c64a014356e634b6511bb551a44e7ce3badf172792adad5a44a64d1e27b",
                    "EndpointID": "c37e20e91cc5ec3fb8c3f33512cbfecfbdb7ed9021825a749ccffa029ae6bf8b",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:03",
                    "DriverOpts": null
                }
            }


chaincode container:
            "Networks": {
               "bridge": {
                   "IPAMConfig": null,
                   "Links": null,
                   "Aliases": null,
                   "NetworkID": "f6d2d4227f8879d8601149235c1574635be846bf8f9e63be8f6c0f56a62c5a8d",
                   "EndpointID": "ed2d439e55f0d3b74ab08ac528b52cdab0ab9b68f00cf671cab79687c0d1081e",
                   "Gateway": "172.17.0.1",
                   "IPAddress": "172.17.0.3",
                   "IPPrefixLen": 16,
                   "IPv6Gateway": "",
                   "GlobalIPv6Address": "",
                   "GlobalIPv6PrefixLen": 0,
                   "MacAddress": "02:42:ac:11:00:03",
                   "DriverOpts": null
               }
           }

we have tried setting CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE to testnet but it does not make any difference.

From: Siddharth Jain <siddjain@...>
Sent: Tuesday, February 11, 2020 11:16 AM
To: Siddharth Jain <siddjain@...>
Subject: Re: [Hyperledger Fabric] Unable to launch/instantiate chaincode container
 


From: fabric@... <fabric@...> on behalf of Siddharth Jain <siddjain@...>
Sent: Tuesday, February 11, 2020 10:48 AM
To: fabric@... <fabric@...>
Subject: [Hyperledger Fabric] Unable to launch/instantiate chaincode container
 
we are running into a problem where chaincode container is not getting launched. full stacktrace can be found here but basically the execution reaches this point:

if err := r.Runtime.Start(ccci, codePackage); err != nil {
                startFailCh <- errors.WithMessage(err, "error starting container")
                return
            }
            exitCode, err := r.Runtime.Wait(ccci) // this is where we get an exitCode 1
            if err != nil {
                launchState.Notify(errors.Wrap(err, "failed to wait on container exit"))
            }
            launchState.Notify(errors.Errorf("container exited with %d", exitCode))

and fails with

launchState.Notify(errors.Errorf("container exited with %d", exitCode))
2020-02-10 23:49:40.130 UTC [endorser] SimulateProposal -> ERRO 056 [tracktrace][b69889f9] failed to invoke chaincode name:"mycc" , error: container exited with 1
github.com/hyperledger/fabric/core/chaincode.(*RuntimeLauncher).Launch.func1
	/opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/runtime_launcher.go:63
runtime.goexit

Things we have tried to debug:
  • verified the chaincode image is getting built
  • verified chaincode image has smart contract installed under /usr/local/src
  • docker ps -f "status=exited" shows no record of container ==> container never got instantiated 
  • verified /var/run/docker.sock exists and is mounted to the peer node using 
    --volume /var/run/:/host/var/run/ and 
    CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
  • from within the peer we can verify

    root@c54560119c91:/home# ls /host/var/run

    diagnosticsd.sock  docker  docker.pid  docker.sock  linuxkit-containerd  linuxkit-external-logging.sock  rpc.statd.pid rpcbind.lock  rpcbind.sock  service-port-opener  sm-notify.pid

  • the host is a mac machine in case it matters

  • chaincode was previously instantiated when peer was running in dev mode and we were able to submit transactions. now we are switching peer to net mode.

$ docker version
Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf5
 Built:             Thu Oct 17 23:44:48 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf5
  Built:            Thu Oct 17 23:50:38 2019
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

we are using fabric version 1.4

not sure where to go from here.


Unable to launch/instantiate chaincode container

Siddharth Jain
 

we are running into a problem where chaincode container is not getting launched. full stacktrace can be found here but basically the execution reaches this point:

if err := r.Runtime.Start(ccci, codePackage); err != nil {
                startFailCh <- errors.WithMessage(err, "error starting container")
                return
            }
            exitCode, err := r.Runtime.Wait(ccci) // this is where we get an exitCode 1
            if err != nil {
                launchState.Notify(errors.Wrap(err, "failed to wait on container exit"))
            }
            launchState.Notify(errors.Errorf("container exited with %d", exitCode))

and fails with

launchState.Notify(errors.Errorf("container exited with %d", exitCode))
2020-02-10 23:49:40.130 UTC [endorser] SimulateProposal -> ERRO 056 [tracktrace][b69889f9] failed to invoke chaincode name:"mycc" , error: container exited with 1
github.com/hyperledger/fabric/core/chaincode.(*RuntimeLauncher).Launch.func1
	/opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/runtime_launcher.go:63
runtime.goexit

Things we have tried to debug:
  • verified the chaincode image is getting built
  • verified chaincode image has smart contract installed under /usr/local/src
  • docker ps -f "status=exited" shows no record of container ==> container never got instantiated 
  • verified /var/run/docker.sock exists and is mounted to the peer node using 
    --volume /var/run/:/host/var/run/ and 
    CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock
  • from within the peer we can verify

    root@c54560119c91:/home# ls /host/var/run

    diagnosticsd.sock  docker  docker.pid  docker.sock  linuxkit-containerd  linuxkit-external-logging.sock  rpc.statd.pid rpcbind.lock  rpcbind.sock  service-port-opener  sm-notify.pid

  • the host is a mac machine in case it matters

  • chaincode was previously instantiated when peer was running in dev mode and we were able to submit transactions. now we are switching peer to net mode.

$ docker version
Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf5
 Built:             Thu Oct 17 23:44:48 2019
 OS/Arch:           darwin/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf5
  Built:            Thu Oct 17 23:50:38 2019
  OS/Arch:          linux/amd64
  Experimental:     true
 containerd:
  Version:          v1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

we are using fabric version 1.4

not sure where to go from here.


Have you registered for Hyperledger Global Forum, March 3-6?

Brian Behlendorf <bbehlendorf@...>
 

Hello Hyperledger Community,


Less than four weeks to go until Hyperledger Global Forum 2020! I am so excited to see not only long time friends but all the new people, projects, deployments, and energy in our community. We've grown so much even just since the last Forum in Basel just over a year ago. This time no one needs to bundle up in scarves and mittens, as Arizona in springtime is gorgeous.


As digitally connected as our community is, in-person meetings like this are essential to developing a healthy Open Source software community. Community itself is an inherent part of blockchain technology - our ledger platforms are operating systems for cooperative networks. Whether you're a developer or product manager or business-level decision-maker, if you want to better understand the full scope of what everyone in the Hyperledger Greenhouse are building and deploying, and where the enterprise blockchain movement is going, you want to be here!


I wanted to make sure that you do not miss out on standard pricing, which ends on February 18. Save up to $400 if you register by the deadline. Hotel rooms will most likely sell out in advance - I encourage you to book ASAP to secure a room at the conference rate, which was just extended through Friday, Feb 14.


At Global Forum, you will have the chance to talk directly with Hyperledger project maintainers and the Technical Steering Committee, collaborate with other developers and executives on ideas that will directly impact the future of Hyperledger. Plus you get to promote your work among the enterprise blockchain community.


This year’s agenda will feature more than 80 sessions, including dozens of breakout sessions plus panels, workshops and a Demo Theater. You can search the agenda and also browse by filter type including industry, project focus. There’s some really great technical sessions/workshops lined up that I would like to highlight:



Going into Production! Performance Best Practices in Hyperledger Fabric - Alfonso De la Rocha Gómez-Arevalillo, Telefónica

Hyperledger Fabric is getting traction in the corporate world, with more and more companies deploying Fabric-based projects and PoCs. One of the main limitations Telefonica’s found is getting a PoC into production because of a lack of performance best practices. In this talk Alfonso will answer common performance questions such as: What configurations should I fine-tune to get the most out of my infrastructure? And How many peers, endorsers and ordering nodes do I need?


Governing DLT Networks - David Treat, Accenture & Rob Palatnick, DTCC

Accenture and DTCC have co-authored a paper, Governing DLT Networks, and will present their work with David Treat, MD, Global Blockchain Lead at Accenture and member of the Hyperledger Board and Rob Palatnick, CTO of DTCC and Chair of the Hyperledger Board. Proposing a governance operating model to address approaches to managing the activity, connectivity, software changes, contractual agreements and transaction finality for every participant across the network.


Blockchain Platform For A Billion Customers: A Telecom (Digital Marketing) Case Study - Babu Jayaraj, Reliance Jio Infocom Ltd.

India with 1.2+ Billion registered mobile subscribers have been plagued with unsolicited communications from the unregistered telemarketers. A consortium of telecom operators under the TRAI's guidance have built a Blockchain based platform to regulate marketing communications. This talk is about learnings/experiences in designing and building the Hyperledger Fabric based platform by consortium of telecom operators including choosing right technologies, overcoming platform stability issues, scaling performance and building business practices/process around the new platform.


Building Secure Protocols Using Ursa- Mike Lodder, Sovrin Foundation & Brent Zundel, Evernym

It's notoriously difficult to properly implement blockchain protocols that use cryptographic algorithms.In this talk, Mike and Brent will explain some of the features in Hyperledger Ursa and how to use them to solve some of the most common problems faced by people looking to build private and secure protocols on blockchains.


A Standardized Approach to Creating Digital Tokens - Paul DiMarzio, Enterprise Ethereum Alliance; Marley Gray, Microsoft & Jonathan Levi, HACERA

In this session, the speakers will lay out the value of digital tokens and dive into a few examples of how the Token Taxonomy Framework (TTF) can be used to simplify the design and implementation of new token classes.

DIDs without blockchains - Daniel Hardman, Evernym,

Decentralized Identifiers (DIDs) are like DNS without any registrars. They're a foundation of decentralized identity, and are relevant to most Hyperledger projects. In this session, Daniel will explain how peer DIDs work, and show developers how they can get support for them in an hour or a day (depending on their circumstances).


Panel: Business Interoperability – The Key to Supply Chain Traceability - Rich Meszaros & Sarah Banks, Accenture; Melanie Nuce, GS1 US; David Cecchi, Cargill

Technology such as blockchain has the power to solve complex challenges and achieve improved supply chain traceability. In order to tap into this powerful technology, interoperability, enabled by robust data and transaction standards, are a must! Segments of the supply chain, such as the food industry, have made significant progress leveraging data standards to support food safety and product transparency use cases.

Workshop: Intro to Hyperledger Besu - Danno Ferrin, ConsenSys

There is no better way to learn about Hyperledger Besu than by doing.In this session attendees will set up and run Hyperledger Besu nodes that connect to public networks as well as start their own permissioned network between the other attendees in the session.


Workshop: Hyperledger Fabric 101 - Swetha Repakula & Morgan Bauer, IBM

The workshop will involve participants standing up their own Hyperledger Fabric network, deploying smart contracts, and interacting with their contracts using decentralized applications. Attendees will leave the tutorial with a better understanding of the properties of permissioned blockchains, and decentralized application development. Recently announced Hyperledger Fabric 2.0 features and updates will also be explored.


Workshop: Hands-on Experience with Avalon on How to Bridge On-chain and Off-chain Worlds - Yevgeniy Yarmosh & Dan Anderson, Intel

Avalon addresses blockchain scalability and privacy challenges by moving compute intensive and private data processing off-chain. Other similar approaches typically trade resilience and integrity for scalability and privacy. During this workshop, you will understand Avalon architecture and how it extends a notion of computational trust.


Workshop: Getting Started with Indy and Aries: Beginner and Advanced Scenarios - Stephen Curran, Cloud Compass Computing, Inc. & John Jordan, Government of British Columbia (Canada),

This full day technical workshop will cover beginner and advanced sessions on getting started with Hyperledger Indy and Hyperledger Aries.

Keynote speakers confirmed so far:

Keynote: Don Tapscott: The Blockchain Revolution -State of the Union, Co-author, Blockchain Revolution: How the Technology Behind Bitcoin and Other Cryptocurrencies is Changing the World, and Co-founder, Blockchain Research Institute

Keynote: Sheila Warren: Blockchain Matters: How it’s Already Changing the World, Head of Blockchain and Distributed Ledger Technology, World Economic Forum


Other unique activities I’m personally excited about:


Diversity Happy Hour 

March 2, 6:00 - 8:30pm

Location: Renaissance Phoenix Downtown Hotel, Rooftop


Mentoring Session

March 3, 8:00 - 8:50am

Location: Phoenix Convention Center


Onsite Networking Reception & Booth Crawl

March 3,5:45 - 6:45pm

Location: Phoenix Convention Center, Sponsor Showcase


Hyperledger Public Meetup

March 3, 6:45 - 8:00pm

Location: Phoenix Convention Center


Offsite All Attendee Party

March 4, 7:00 - 10:00pm

Location: Corona Ranch and Rodeo Grounds


I look forward to seeing you there!

Brian




-- 
Brian Behlendorf
Executive Director, Hyperledger
bbehlendorf@...
Twitter: @brianbehlendorf


Modify Chain code container

sanjaykumar3989@...
 

I want to expose port from chain code container to host machine. From where peer node fire the docker run cmd .


Re: Customize chaincode docker image

sanjaykumar3989@...
 

How peer run the chain code container ? I want to expose port from chaincode container and map with host machine. 

I want to customized the docker run cmd fired from peer node.


Re: Who needs to sign on a config update to change addresses of an orderer?

Siddharth Jain
 

so the sign off will require orderer org's admins but channel update will be done by a peer since peer channel update can only be executed by a peer. correct? that doesn't sound right btw.


From: Baohua Yang <yangbaohua@...>
Sent: Monday, February 10, 2020 12:54 PM
To: Siddharth Jain <siddjain@...>
Cc: fabric@... <fabric@...>
Subject: Re: [Hyperledger Fabric] Who needs to sign on a config update to change addresses of an orderer?
 
You only needs to change the orderer section in the channel configuration.

That will require the majority of the orderer orgs's admins to sign by default.


On Mon, Feb 10, 2020 at 12:36 PM Siddharth Jain <siddjain@...> wrote:
Hello,

We are trying to update orderer addresses.

  • does the change need to be made to the application channel config or the system channel config?
  • who needs to sign on the config update?
is there any tutorial on how to update orderer addresses?

Sid



--
Best wishes!

Baohua Yang


Re: Who needs to sign on a config update to change addresses of an orderer?

Baohua Yang
 

You only needs to change the orderer section in the channel configuration.

That will require the majority of the orderer orgs's admins to sign by default.


On Mon, Feb 10, 2020 at 12:36 PM Siddharth Jain <siddjain@...> wrote:
Hello,

We are trying to update orderer addresses.

  • does the change need to be made to the application channel config or the system channel config?
  • who needs to sign on the config update?
is there any tutorial on how to update orderer addresses?

Sid



--
Best wishes!

Baohua Yang


Who needs to sign on a config update to change addresses of an orderer?

Siddharth Jain
 

Hello,

We are trying to update orderer addresses.

  • does the change need to be made to the application channel config or the system channel config?
  • who needs to sign on the config update?
is there any tutorial on how to update orderer addresses?

Sid


Re: #hyperledger-fabric #hyperledger-fabric

sstone1@...
 

Hi Subhra,

The balance transfer sample was removed in Fabric v2.0 as it was not a good sample, and it did not demonstrate good practices for application development. You can use the FabCar sample or the Commercial Paper sample instead.

Best regards,

Simon Stone


-----fabric@... wrote: -----
To: fabric@...
From: ssbose77@...
Sent by: fabric@...
Date: 02/10/2020 05:20PM
Subject: [EXTERNAL] [Hyperledger Fabric] #hyperledger-fabric

Hi Team,
I don't see the balance-transfer example in v2.Will it be updated anytime soon or not in v2 ?

Regards,
Subhra
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU


#hyperledger-fabric #hyperledger-fabric

ssbose77@...
 

Hi Team,
I don't see the balance-transfer example in v2.Will it be updated anytime soon or not in v2 ?

Regards,
Subhra


Re: Hyperperledger 1.4 LTS, until when?

Aboubakar Koïta
 

All right, thank you for that information.

Regards,
Aboubakar


Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Monday 10 February 2020 15:48, Brett T Logan <Brett.T.Logan@...> wrote:

We expect sometime mid-year to announce Fabric 2.x as LTS. Once this happens there will be a period of time where both 1.4.4 and 2.x are LTS to provide a transition period for users to migrate to 2.x.
 
Brett Logan
Software Engineer, IBM Blockchain
Phone: 1-984-242-6890
 

 
 
----- Original message -----
From: "Aboubakar Koïta via Lists.Hyperledger.Org" <aboubakar.koita=protonmail.com@...>
Sent by: fabric@...
To: "fabric@..." <fabric@...>
Cc: fabric@...
Subject: [EXTERNAL] [Hyperledger Fabric] Hyperperledger 1.4 LTS, until when?
Date: Mon, Feb 10, 2020 9:45 AM
 
Hi,
 
With the release of Hyperledger 2.0 I would like to know until when version 1.4 will be maintained.
 
Best regards,
Aboubakar
 


Re: Hyperperledger 1.4 LTS, until when?

Brett T Logan <brett.t.logan@...>
 

We expect sometime mid-year to announce Fabric 2.x as LTS. Once this happens there will be a period of time where both 1.4.4 and 2.x are LTS to provide a transition period for users to migrate to 2.x.
 
Brett Logan
Software Engineer, IBM Blockchain
Phone: 1-984-242-6890
 
 
 

----- Original message -----
From: "Aboubakar Koïta via Lists.Hyperledger.Org" <aboubakar.koita=protonmail.com@...>
Sent by: fabric@...
To: "fabric@..." <fabric@...>
Cc: fabric@...
Subject: [EXTERNAL] [Hyperledger Fabric] Hyperperledger 1.4 LTS, until when?
Date: Mon, Feb 10, 2020 9:45 AM
 
Hi,
 
With the release of Hyperledger 2.0 I would like to know until when version 1.4 will be maintained.
 
Best regards,
Aboubakar
 


Hyperperledger 1.4 LTS, until when?

Aboubakar Koïta
 

Hi,

With the release of Hyperledger 2.0 I would like to know until when version 1.4 will be maintained.

Best regards,
Aboubakar


Re: [External] Re: [Hyperledger Fabric] Transaction Validation Failure

Eryargi, Hakan
 

Regular one

 

From: Yacov Manevich <YACOVM@...>
Sent: Monday, 10 February 2020 13:19
To: Eryargi, Hakan <hakan.eryargi@...>
Cc: fabric@...
Subject: [External] Re: [Hyperledger Fabric] Transaction Validation Failure

 

This message is from an EXTERNAL SENDER - be CAUTIOUS, particularly with links and attachments.


 

Is this a system chaincode or a regular one?





From:        "Eryargi, Hakan via Lists.Hyperledger.Org" <hakan.eryargi=accenture.com@...>
To:        "fabric@..." <fabric@...>
Cc:        fabric@...
Date:        02/10/2020 02:16 PM
Subject:        [EXTERNAL] [Hyperledger Fabric] Transaction Validation Failure
Sent by:        fabric@...





Hi,
 
Are all transaction validation failures handled the same way and propagated back to client (Node.js SDK)? In particular I’m asking about EXPIRED_CHAINCODE failure.
 
I’m investigating a weird issue where some transactions somehow disappear from the chain. Developers claim it is committed to chain and visible in the CouchDB but somehow later on disappear somehow. It’s not also visible in the key history.
 
While checking the peer logs I’ve came across below failure. My understanding is, chaincode is upgraded to a new version in the time window between transaction proposal is endorsed and sent to peers for commitment. So peers rejected the transaction because it’s endorsed by an old version of chaincode.
 
Weird thing is, there are no logs on the application side related to this validation failure.
 
So may it be the case, this error is not propagated to the client application? Or is it an improper setting on our side for listening for such events?
 
Thanks,
Hakan
 
 
[34m2020-02-0709:34:55.628UTC [gossip.privdata] StoreBlock -> INFO3f2[0m [public] Received block [386] from buffer
[31m2020-02-0709:34:55.628UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3f3[0m chaincode info:17260/publicdidn't match info:17280/publicin lscc
github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158
runtime.goexit
    /opt/go/src/runtime/asm_amd64.s:1337
[31m2020-02-0709:34:55.628UTC [committer.txvalidator] validateTx -> ERRO 3f4[0m VSCCValidateTx for transaction txId = ecb40373f63e23e46b95a9181b82bd667d88ffd3ec2ce3298f6584f6320babedreturned error:chaincode info:17260/publicdidn't match info:17280/publicin lscc
[34m2020-02-0709:34:55.629UTC [committer.txvalidator] Validate -> INFO3f5[0m [public] Validated block [386] in 0ms
[33m2020-02-0709:34:55.629UTC [valimpl] preprocessProtoBlock -> WARN3f6[0m Channel [public]: Block [386] Transaction index [1] TxId [ecb40373f63e23e46b95a9181b82bd667d88ffd3ec2ce3298f6584f6320babed] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]
[34m2020-02-0709:34:55.719UTC [kvledger] CommitWithPvtData -> INFO3f7[0m [public] Committed block [386] with 2transaction(s) in 90ms (state_validation=6ms block_and_pvtdata_commit=63ms state_commit=7ms) commitHash=[04da119737eb4edc05196bf00299754f07df0b5f1601474c227140486f547b07]
[34m2020-02-0709:34:56.964UTC [gossip.privdata] StoreBlock -> INFO3f8[0m [public] Received block [387] from buffer
[31m2020-02-0709:34:56.964UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3f9[0m chaincode info:17260/publicdidn't match info:17280/publicin lscc
github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158
runtime.goexit
    /opt/go/src/runtime/asm_amd64.s:1337
[31m2020-02-0709:34:56.964UTC [committer.txvalidator] validateTx -> ERRO 3fa[0m VSCCValidateTx for transaction txId = 2a686e6948e892c853e48972863bdd6c40c79189ec89099d80dfd69db9fe68eareturned error:chaincode info:17260/publicdidn't match info:17280/publicin lscc
[34m2020-02-0709:34:56.964UTC [committer.txvalidator] Validate -> INFO3fb[0m [public] Validated block [387] in 0ms
[33m2020-02-0709:34:56.964UTC [valimpl] preprocessProtoBlock -> WARN3fc[0m Channel [public]: Block [387] Transaction index [0] TxId [2a686e6948e892c853e48972863bdd6c40c79189ec89099d80dfd69db9fe68ea] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]
[34m2020-02-0709:34:57.043UTC [kvledger] CommitWithPvtData -> INFO3fd[0m [public] Committed block [387] with 1transaction(s) in 78ms (state_validation=0ms block_and_pvtdata_commit=46ms state_commit=16ms) commitHash=[e229a1c1b938ac6f9ee707f3ab7a6899f5dccb5cbc30443a18da54121fa56194]
[34m2020-02-0709:34:58.533UTC [gossip.privdata] StoreBlock -> INFO3fe[0m [public] Received block [388] from buffer
[31m2020-02-0709:34:58.534UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3ff[0m chaincode info:17260/publicdidn't match info:17280/publicin lscc
github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158
runtime.goexit
    /opt/go/src/runtime/asm_amd64.s:1337
[31m2020-02-0709:34:58.534UTC [committer.txvalidator] validateTx -> ERRO 400[0m VSCCValidateTx for transaction txId = df6187ff4f6b822cd60f17a4cd5f04e27ac8ab1c86bbbf550409feff47912b43returned error:chaincode info:17260/publicdidn't match info:17280/publicin lscc
[34m2020-02-0709:34:58.534UTC [committer.txvalidator] Validate -> INFO401[0m [public] Validated block [388] in 0ms
[33m2020-02-0709:34:58.534UTC [valimpl] preprocessProtoBlock -> WARN402[0m Channel [public]: Block [388] Transaction index [1] TxId [df6187ff4f6b822cd60f17a4cd5f04e27ac8ab1c86bbbf550409feff47912b43] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]
 

 



This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of internal compliance with Accenture policy. Your privacy is important to us. Accenture uses your personal data only in compliance with data protection laws. For further information on how Accenture processes your personal data, please see our privacy statement at
https://www.accenture.com/us-en/privacy-policy.
______________________________________________________________________________________

www.accenture.com



Re: Transaction Validation Failure

Yacov
 

Is this a system chaincode or a regular one?





From:        "Eryargi, Hakan via Lists.Hyperledger.Org" <hakan.eryargi=accenture.com@...>
To:        "fabric@..." <fabric@...>
Cc:        fabric@...
Date:        02/10/2020 02:16 PM
Subject:        [EXTERNAL] [Hyperledger Fabric] Transaction Validation Failure
Sent by:        fabric@...




Hi,
 
Are all transaction validation failures handled the same way and propagated back to client (Node.js SDK)? In particular I’m asking about EXPIRED_CHAINCODE failure.
 
I’m investigating a weird issue where some transactions somehow disappear from the chain. Developers claim it is committed to chain and visible in the CouchDB but somehow later on disappear somehow. It’s not also visible in the key history.
 
While checking the peer logs I’ve came across below failure. My understanding is, chaincode is upgraded to a new version in the time window between transaction proposal is endorsed and sent to peers for commitment. So peers rejected the transaction because it’s endorsed by an old version of chaincode.
 
Weird thing is, there are no logs on the application side related to this validation failure.
 
So may it be the case, this error is not propagated to the client application? Or is it an improper setting on our side for listening for such events?
 
Thanks,
Hakan
 
 
[34m2020-02-0709:34:55.628UTC [gossip.privdata] StoreBlock -> INFO3f2[0m [public] Received block [386] from buffer
[31m2020-02-0709:34:55.628UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3f3[0m chaincode info:17260/publicdidn't match info:17280/publicin lscc
github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158
runtime.goexit
    /opt/go/src/runtime/asm_amd64.s:1337
[31m2020-02-0709:34:55.628UTC [committer.txvalidator] validateTx -> ERRO 3f4[0m VSCCValidateTx for transaction txId = ecb40373f63e23e46b95a9181b82bd667d88ffd3ec2ce3298f6584f6320babedreturned error:chaincode info:17260/publicdidn't match info:17280/publicin lscc
[34m2020-02-0709:34:55.629UTC [committer.txvalidator] Validate -> INFO3f5[0m [public] Validated block [386] in 0ms
[33m2020-02-0709:34:55.629UTC [valimpl] preprocessProtoBlock -> WARN3f6[0m Channel [public]: Block [386] Transaction index [1] TxId [ecb40373f63e23e46b95a9181b82bd667d88ffd3ec2ce3298f6584f6320babed] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]
[34m2020-02-0709:34:55.719UTC [kvledger] CommitWithPvtData -> INFO3f7[0m [public] Committed block [386] with 2transaction(s) in 90ms (state_validation=6ms block_and_pvtdata_commit=63ms state_commit=7ms) commitHash=[04da119737eb4edc05196bf00299754f07df0b5f1601474c227140486f547b07]
[34m2020-02-0709:34:56.964UTC [gossip.privdata] StoreBlock -> INFO3f8[0m [public] Received block [387] from buffer
[31m2020-02-0709:34:56.964UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3f9[0m chaincode info:17260/publicdidn't match info:17280/publicin lscc
github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158
runtime.goexit
    /opt/go/src/runtime/asm_amd64.s:1337
[31m2020-02-0709:34:56.964UTC [committer.txvalidator] validateTx -> ERRO 3fa[0m VSCCValidateTx for transaction txId = 2a686e6948e892c853e48972863bdd6c40c79189ec89099d80dfd69db9fe68eareturned error:chaincode info:17260/publicdidn't match info:17280/publicin lscc
[34m2020-02-0709:34:56.964UTC [committer.txvalidator] Validate -> INFO3fb[0m [public] Validated block [387] in 0ms
[33m2020-02-0709:34:56.964UTC [valimpl] preprocessProtoBlock -> WARN3fc[0m Channel [public]: Block [387] Transaction index [0] TxId [2a686e6948e892c853e48972863bdd6c40c79189ec89099d80dfd69db9fe68ea] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]
[34m2020-02-0709:34:57.043UTC [kvledger] CommitWithPvtData -> INFO3fd[0m [public] Committed block [387] with 1transaction(s) in 78ms (state_validation=0ms block_and_pvtdata_commit=46ms state_commit=16ms) commitHash=[e229a1c1b938ac6f9ee707f3ab7a6899f5dccb5cbc30443a18da54121fa56194]
[34m2020-02-0709:34:58.533UTC [gossip.privdata] StoreBlock -> INFO3fe[0m [public] Received block [388] from buffer
[31m2020-02-0709:34:58.534UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3ff[0m chaincode info:17260/publicdidn't match info:17280/publicin lscc
github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345
github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1
    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158
runtime.goexit
    /opt/go/src/runtime/asm_amd64.s:1337
[31m2020-02-0709:34:58.534UTC [committer.txvalidator] validateTx -> ERRO 400[0m VSCCValidateTx for transaction txId = df6187ff4f6b822cd60f17a4cd5f04e27ac8ab1c86bbbf550409feff47912b43returned error:chaincode info:17260/publicdidn't match info:17280/publicin lscc
[34m2020-02-0709:34:58.534UTC [committer.txvalidator] Validate -> INFO401[0m [public] Validated block [388] in 0ms
[33m2020-02-0709:34:58.534UTC [valimpl] preprocessProtoBlock -> WARN402[0m Channel [public]: Block [388] Transaction index [1] TxId [df6187ff4f6b822cd60f17a4cd5f04e27ac8ab1c86bbbf550409feff47912b43] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]
 




This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of internal compliance with Accenture policy. Your privacy is important to us. Accenture uses your personal data only in compliance with data protection laws. For further information on how Accenture processes your personal data, please see our privacy statement at
https://www.accenture.com/us-en/privacy-policy.
______________________________________________________________________________________

www.accenture.com




Transaction Validation Failure

Eryargi, Hakan
 

Hi,

 

Are all transaction validation failures handled the same way and propagated back to client (Node.js SDK)? In particular I’m asking about EXPIRED_CHAINCODE failure.

 

I’m investigating a weird issue where some transactions somehow disappear from the chain. Developers claim it is committed to chain and visible in the CouchDB but somehow later on disappear somehow. It’s not also visible in the key history.

 

While checking the peer logs I’ve came across below failure. My understanding is, chaincode is upgraded to a new version in the time window between transaction proposal is endorsed and sent to peers for commitment. So peers rejected the transaction because it’s endorsed by an old version of chaincode.

 

Weird thing is, there are no logs on the application side related to this validation failure.

 

So may it be the case, this error is not propagated to the client application? Or is it an improper setting on our side for listening for such events?

 

Thanks,

Hakan

 

 

[34m2020-02-07 09:34:55.628 UTC [gossip.privdata] StoreBlock -> INFO 3f2[0m [public] Received block [386] from buffer

[31m2020-02-07 09:34:55.628 UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3f3[0m chaincode info:17260/public didn't match info:17280/public in lscc

github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200

github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345

github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158

runtime.goexit

    /opt/go/src/runtime/asm_amd64.s:1337

[31m2020-02-07 09:34:55.628 UTC [committer.txvalidator] validateTx -> ERRO 3f4[0m VSCCValidateTx for transaction txId = ecb40373f63e23e46b95a9181b82bd667d88ffd3ec2ce3298f6584f6320babed returned error: chaincode info:17260/public didn't match info:17280/public in lscc

[34m2020-02-07 09:34:55.629 UTC [committer.txvalidator] Validate -> INFO 3f5[0m [public] Validated block [386] in 0ms

[33m2020-02-07 09:34:55.629 UTC [valimpl] preprocessProtoBlock -> WARN 3f6[0m Channel [public]: Block [386] Transaction index [1] TxId [ecb40373f63e23e46b95a9181b82bd667d88ffd3ec2ce3298f6584f6320babed] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]

[34m2020-02-07 09:34:55.719 UTC [kvledger] CommitWithPvtData -> INFO 3f7[0m [public] Committed block [386] with 2 transaction(s) in 90ms (state_validation=6ms block_and_pvtdata_commit=63ms state_commit=7ms) commitHash=[04da119737eb4edc05196bf00299754f07df0b5f1601474c227140486f547b07]

[34m2020-02-07 09:34:56.964 UTC [gossip.privdata] StoreBlock -> INFO 3f8[0m [public] Received block [387] from buffer

[31m2020-02-07 09:34:56.964 UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3f9[0m chaincode info:17260/public didn't match info:17280/public in lscc

github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200

github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345

github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158

runtime.goexit

    /opt/go/src/runtime/asm_amd64.s:1337

[31m2020-02-07 09:34:56.964 UTC [committer.txvalidator] validateTx -> ERRO 3fa[0m VSCCValidateTx for transaction txId = 2a686e6948e892c853e48972863bdd6c40c79189ec89099d80dfd69db9fe68ea returned error: chaincode info:17260/public didn't match info:17280/public in lscc

[34m2020-02-07 09:34:56.964 UTC [committer.txvalidator] Validate -> INFO 3fb[0m [public] Validated block [387] in 0ms

[33m2020-02-07 09:34:56.964 UTC [valimpl] preprocessProtoBlock -> WARN 3fc[0m Channel [public]: Block [387] Transaction index [0] TxId [2a686e6948e892c853e48972863bdd6c40c79189ec89099d80dfd69db9fe68ea] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]

[34m2020-02-07 09:34:57.043 UTC [kvledger] CommitWithPvtData -> INFO 3fd[0m [public] Committed block [387] with 1 transaction(s) in 78ms (state_validation=0ms block_and_pvtdata_commit=46ms state_commit=16ms) commitHash=[e229a1c1b938ac6f9ee707f3ab7a6899f5dccb5cbc30443a18da54121fa56194]

[34m2020-02-07 09:34:58.533 UTC [gossip.privdata] StoreBlock -> INFO 3fe[0m [public] Received block [388] from buffer

[31m2020-02-07 09:34:58.534 UTC [committer.txvalidator] VSCCValidateTx -> ERRO 3ff[0m chaincode info:17260/public didn't match info:17280/public in lscc

github.com/hyperledger/fabric/core/committer/txvalidator.(*VsccValidatorImpl).VSCCValidateTx

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/vscc_validator.go:200

github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).validateTx

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:345

github.com/hyperledger/fabric/core/committer/txvalidator.(*TxValidator).Validate.func1.1

    /opt/gopath/src/github.com/hyperledger/fabric/core/committer/txvalidator/validator.go:158

runtime.goexit

    /opt/go/src/runtime/asm_amd64.s:1337

[31m2020-02-07 09:34:58.534 UTC [committer.txvalidator] validateTx -> ERRO 400[0m VSCCValidateTx for transaction txId = df6187ff4f6b822cd60f17a4cd5f04e27ac8ab1c86bbbf550409feff47912b43 returned error: chaincode info:17260/public didn't match info:17280/public in lscc

[34m2020-02-07 09:34:58.534 UTC [committer.txvalidator] Validate -> INFO 401[0m [public] Validated block [388] in 0ms

[33m2020-02-07 09:34:58.534 UTC [valimpl] preprocessProtoBlock -> WARN 402[0m Channel [public]: Block [388] Transaction index [1] TxId [df6187ff4f6b822cd60f17a4cd5f04e27ac8ab1c86bbbf550409feff47912b43] marked as invalid by committer. Reason code [EXPIRED_CHAINCODE]

 




This message is for the designated recipient only and may contain privileged, proprietary, or otherwise confidential information. If you have received it in error, please notify the sender immediately and delete the original. Any other use of the e-mail by you is prohibited. Where allowed by local law, electronic communications with Accenture and its affiliates, including e-mail and instant messaging (including content), may be scanned by our systems for the purposes of information security and assessment of internal compliance with Accenture policy. Your privacy is important to us. Accenture uses your personal data only in compliance with data protection laws. For further information on how Accenture processes your personal data, please see our privacy statement at https://www.accenture.com/us-en/privacy-policy.
______________________________________________________________________________________

www.accenture.com


Re: How many ordering services should a network have? #fabric #fabric-orderer

Joe Alewine <joe.alewine@...>
 

Rui,
 
While it's possible to use the console to build a configuration of any number of ordering nodes (no configuration is explicitly restricted), some numbers provide a better balance between cost and performance than others. The reason for this lies in satisfying the needs of high availability (HA) and in understanding the Raft concept of the "quorum", the minimum number of nodes that must be available (out of the total number) for the ordering service to process transactions.
 
In Raft, a majority of the total number of nodes is needed to form a quorum. In other words, if you have one node, you need that node available to have a quorum, because the majority of one is one. Similarly, if you have two nodes, you will need both available, since the majority of two is two (for this reason, a configuration of two nodes is discouraged; there is no advantage to a two node configuration). In a similar vein, the majority of three is two, the majority of four is three, the majority of five is three, and so on.
 
While satisfying the quorum will make sure the ordering service is functioning, production networks also have to think about deployment configurations that are highly available (in other words, configurations in which the loss of a certain number of nodes can be tolerated by the system). Typically, this means tolerating two nodes failing: one node going down during a normal maintenance cycle, and another going down for any other reason (such as a power outage or error).
 
This is why five nodes is a good number for a production network. Recall that the majority of five is three. This means that in a five node configuration, the loss of two nodes can be tolerated. If your configuration features four nodes, only one node can be down for any reason before another node going down means a quorum has been lost and the ordering service will stop processing transactions.
 
Hope this helps.
 
Regards,
 
Joe Alewine
IBM Blockchain, Raleigh
 
rocket chat: joe-alewine
slack: joe.alewine
 
 
 

----- Original message -----
From: "Rui Gonçalo" <rainmanmorais@...>
Sent by: fabric@...
To: fabric@...
Cc:
Subject: [EXTERNAL] [Hyperledger Fabric] How many ordering services should a network have? #fabric #fabric-orderer
Date: Sat, Feb 8, 2020 11:03 AM
 
Hello guys,

I was just wondering what is the best practice when it comes to the ordering service in a production environment.
What is the proportion of ordering service nodes in relation to the size of the network? Or is a ordering service node with Raft, meaning various instances, enough for a production network?
Should each organization have its own ordering service node? or only a instance?

Help would be much apreciated guys, Thank You.
 

3841 - 3860 of 11527