Date   

Hyperledger Project Quarterly Update Due #tsc-project-update - Thu, 07/09/2020 #tsc-project-update #cal-notice

fabric@lists.hyperledger.org Calendar <noreply@...>
 

Hyperledger Project Quarterly Update Due #tsc-project-update

When:
Thursday, 9 July 2020

Organizer:
community-architects@...

Description:
Please file a project status report for the TSC here:

https://wiki.hyperledger.org/display/TSC/Project+Status+Updates


Re: Critical: Chaincode package Installation error in Openshift Platform with Fabric v2.1.0 using external chaincode service #fabric #externalbuilders

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

This is correct. Docker is still the default implementation if none of the externalBuilders you set pass validation. You would need to do more debugging to figure out why the externalBuidlers you specified in `core.yaml` were not picked up (and as such the peer fell back to its default behavior).
 
Brett Logan
Software Engineer, IBM Blockchain
Phone: 1-984-242-6890
 
 
 

----- Original message -----
From: keerthycbe@...
Sent by: fabric@...
To: fabric@...
Cc:
Subject: [EXTERNAL] [Hyperledger Fabric] Critical: Chaincode package Installation error in Openshift Platform with Fabric v2.1.0 using external chaincode service #fabric #externalbuilders
Date: Thu, Jul 9, 2020 12:44 PM
 
Hi All,

We are trying to deploy fabric nodes with external chaincode service option in Openshift platform 4.3. As the Openshift platform doesn't have access to docker daemon for peer to create chaincode container, we are using the external chaincode service feature provided in version 2.0. All our nodes are running 2.1.0 but getting the following error while installing chaincode in peer nodes from the cli container. There should not be any docker dependency as we have moved to the external chainocde option. Please find below the screenshot for error details. Appreciate any help on this.
 


Thanks and Regards
Keerthi
 


Critical: Chaincode package Installation error in Openshift Platform with Fabric v2.1.0 using external chaincode service #fabric #externalbuilders

keerthycbe@...
 

Hi All,

We are trying to deploy fabric nodes with external chaincode service option in Openshift platform 4.3. As the Openshift platform doesn't have access to docker daemon for peer to create chaincode container, we are using the external chaincode service feature provided in version 2.0. All our nodes are running 2.1.0 but getting the following error while installing chaincode in peer nodes from the cli container. There should not be any docker dependency as we have moved to the external chainocde option. Please find below the screenshot for error details. Appreciate any help on this.
 


Thanks and Regards
Keerthi


Re: Chain code install approval and commit on existing channel .

p.kirkinezis@...
 

Yeah what about when 2 organizations  exist on separate servers ?
You have to exchange tls keys with secure copy and then run the commit command on one of the servers ?


Re: Chain code install approval and commit on existing channel .

David Enyeart
 

This document walks you through exactly what you need to do to deploy a chaincode across two orgs with a policy of majority:
https://hyperledger-fabric.readthedocs.io/en/latest/deploy_chaincode.html
It also includes a troubleshooting section for errors such as yours.

In a nutshell:
- org1 admin installs and approves on org1 peer.
- org2 admin installs and approves on org2 peer.
- either admin can then send the final commit request to both peers.

Each of the approval transactions, and the final commit transaction, get submitted to ordering service to record the transactions on the channel.


Dave Enyeart

p.kirkinezis---07/09/2020 04:25:40 AM---I have a channel with 2 organizations Server 1 Org1 and Server 2 Org2 . My endorsement policy and li

From: p.kirkinezis@...
To: fabric@...
Date: 07/09/2020 04:25 AM
Subject: [EXTERNAL] [Hyperledger Fabric] Chain code install approval and commit on existing channel .
Sent by: fabric@...





I have a channel with 2 organizations Server 1 Org1 and Server 2 Org2 .
My endorsement policy and lifecycle policy is set to majority .

What approach should I apply for approval distribution ?
I have to approve the same package id in both server 1 and server 2 and orderer will distribute approval ?
Because i am a little confused i only tried the concept on local host.
I tried many times but I end up getting endorsement policy failure
2020-07-09 07:38:42.239 UTC [chaincodeCmd] ClientWait -> INFO 001 txid [1e2e5a9c1717f2546fc520d0760012281b2c137f23e4457405aa469f66a96bfd] committed with status (ENDORSEMENT_POLICY_FAILURE) at 192.168.69.20:7001
Error: transaction invalidated with status (ENDORSEMENT_POLICY_FAILURE)




two proposal responses and failure on commit?

Roxana Danger
 

Hello,

I have a contract with one transaction returning a boolean. The transaction is endorsed to just one peer (peer0.org1.example.com). The transaction executes correctly until the end and returns true, but it fails to commit with the following error:

org.hyperledger.fabric.gateway.ContractException: Transaction commit was rejected by peer peer0.org1.example.com:7051

I noticed that submit(...) generated two proposals (for two peers at peer0.org1.example.com:7051 with different IDs). The method validatePeerResponses returns just one of these proposals as valid, but it fails to commit it by the CommitHandler (it has again two peers of org1!!).

My network is formed by 2 peers, one orderer, and the endorsement policy is majority for all.
Does anyone can explain this behaivour?

Many thanks,
Roxana


invoke failed

Roxana Danger
 

Hello,

I have a chaincode with two contracts such that the second contract invoke a transaction of the first one as follows:

class ContractA implements ContractInterface{
     .....
     @Transaction
     public boolean trans1(MyContext ctx, String data) {
         ...
         return result;
     }
}

class ContractB implements ContractInterface{
     .....
     @Transaction
     public boolean trans2(MyContext ctx, String data) {
         ...
         Chaincode.Response response = ctx.getStub().invokeChaincode(chaincodeId,
                    new String[]{ContractA:trans1, "data"});
         ...
     }
}

During the execution of trans2, the invokeChaincode fails with the error: "INVOKE_CHAINCODE failed: transaction ID exists". According to the documentation, no other transaction will be created by calling invokeChaincode, therefore, it is correct that the invocation is created with the same transaction ID.

Is it a bug or am I doing something incorrect in my design?

Many thanks in advance,

Roxana


Chain code install approval and commit on existing channel .

p.kirkinezis@...
 

I have a channel with 2 organizations Server 1 Org1 and Server 2 Org2 .
My endorsement policy and lifecycle policy is set to majority .

What approach should I apply for approval distribution ?
I have to approve the same package id in both server 1 and server 2 and orderer will distribute approval  ?
Because i am a little confused i only tried the concept on local host.
I tried many times but I end up getting endorsement policy failure
2020-07-09 07:38:42.239 UTC [chaincodeCmd] ClientWait -> INFO 001 txid [1e2e5a9c1717f2546fc520d0760012281b2c137f23e4457405aa469f66a96bfd] committed with status (ENDORSEMENT_POLICY_FAILURE) at 192.168.69.20:7001
  Error: transaction invalidated with status (ENDORSEMENT_POLICY_FAILURE)


Upcoming Event: Hyperledger Fabric Documentation Workgroup call - Eastern hemisphere - Fri, 07/10/2020 6:00am-7:00am #cal-reminder

fabric@lists.hyperledger.org Calendar <fabric@...>
 

Reminder: Hyperledger Fabric Documentation Workgroup call - Eastern hemisphere

When: Friday, 10 July 2020, 6:00am to 7:00am, (GMT+01:00) Europe/London

Where:https://zoom.us/j/6223336701

View Event

Organizer: Anthony O'Dowd a_o-dowd@... +441962816761

Description: Documentation workgroup call.
Agenda, minutes and recordings: https://wiki.hyperledger.org/display/fabric/Documentation+Working+Group


Re: RFC for ledger checkpointing

David Enyeart
 

Let's move this RFC to final comment period. Please provide any remaining feedback in the next week so that we can merge the RFC and plan the delivery for a subsequent Fabric release.


Thanks,

Dave Enyeart

"Manish" ---04/22/2020 12:11:36 PM---Hi folks, An RFC for ledger checkpointing is available now in this PR -

From: "Manish" <manish.sethi@...>
To: fabric@...
Date: 04/22/2020 12:11 PM
Subject: [EXTERNAL] [Hyperledger Fabric] RFC for ledger checkpointing
Sent by: fabric@...





Hi folks,

An RFC for ledger checkpointing is available now in this PR - https://github.com/hyperledger/fabric-rfcs/pull/27. Any feedback is appreciated.

Thanks,
Manish




How to get block with fabric-network 2.0?

Siddharth Jain
 

v1.x of fabric-client used to have methods using which one could get block by number or hash. For example:
let response_payload = await channel.queryBlock(parseInt(blockNumber), peer);

How does one do the same thing using fabric-network API?


Re: Install Hyperledger Fabric in Raspberry Pi #fabric

Matthew Sykes
 

We don't publish images for ARM but it's very easy to build fabric from source. And yes, it is possible to run Fabric on a Pi but only on 64 bit systems as one of the crypto packages used in Fabric only supports 64 bit.


On Sun, Jul 5, 2020 at 7:36 AM <kokolaki@...> wrote:
Hello Community,
I am trying to set up hyperledger fabric on raspberry Pi armv7 archItecture, raspbian OS, following the instructions of the doc https://hyperledger-fabric.readthedocs.io/en/release-2.1/install.html  to install platform specific binaries and docker iamges. But when I run the command
curl -sSL https://bit.ly/2ysbOFE | bash -

I get the following error:
 Downloading:  https://github.com/hyperledger/fabric/releases/download/v2.1.1/hyperledger-fabric-linux-armv7l-2.1.1.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100     9  100     9    0     0     24      0 --:--:-- --:--:-- --:--:--    24

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
==> There was an error downloading the binary file.

------> 2.1.1 platform specific fabric binary is not available to download <----

It seems that there is no fabric binary available for armv7 architecture of raspberry. Does anyone know how it is possible to set up hyperledger fabric on raspberry pi? I need 64-bit architecture raspberry and 64-bit OS to isntall it?
If I use other SDKs to set up it, it will be ok?
Thank you in advance.



--
Matthew Sykes
matthew.sykes@...


Re: When I run `peer lifecycle chaincode approveformyorg`, I always get the error: ENDORSEMENT_POLICY_FAILURE

Nikhil Gupta
 

The deploy a chaincode to a channel tutorial also has a troubleshooting section that may be helpful: https://hyperledger-fabric.readthedocs.io/en/latest/deploy_chaincode.html#troubleshooting

Nik



-----fabric@... wrote: -----
To: fabric@...
From: "Pam Andrejko"
Sent by: fabric@...
Date: 07/06/2020 08:16AM
Subject: [EXTERNAL] Re: [Hyperledger Fabric] When I run `peer lifecycle chaincode approveformyorg`, I always get the error: ENDORSEMENT_POLICY_FAILURE

I think the problem here is that you are using org1’s admin identity to execute peer lifecycle chaincode approveformyorg

The approval needs to be done by a peer.

See the new channel tutorial: https://hyperledger-fabric.readthedocs.io/en/latest/create_channel/channel_policies.html#signature-policies

The Admins policy can only be satisfied by transactions submitted by an identity with an admin role, while only identities with a peer role can satisfy the Endorsement policy.

Pam



Re: When I run `peer lifecycle chaincode approveformyorg`, I always get the error: ENDORSEMENT_POLICY_FAILURE

Chris Gabriel <alaskadd@...>
 

This error can also be seen if you commit chaincode BEFORE approving for each org after installation. The way the sample is written, this is easy to do because most want to install, approve, and commit before exporting the env variables for the next peer org. I made this same mistake the first time I ran the tutorial. I recommend you ./network down and then start again, following the tutorial exactly as written and it should solve your error.


On Jul 6, 2020, at 7:16 AM, Pam Andrejko <pama@...> wrote:



I think the problem here is that you are using org1’s admin identity to execute peer lifecycle chaincode approveformyorg

The approval needs to be done by a peer.

See the new channel tutorial: https://hyperledger-fabric.readthedocs.io/en/latest/create_channel/channel_policies.html#signature-policies

The Admins policy can only be satisfied by transactions submitted by an identity with an admin role, while only identities with a peer role can satisfy the Endorsement policy.

Pam


Re: When I run `peer lifecycle chaincode approveformyorg`, I always get the error: ENDORSEMENT_POLICY_FAILURE

Pam Andrejko
 

I think the problem here is that you are using org1’s admin identity to execute peer lifecycle chaincode approveformyorg

The approval needs to be done by a peer.

See the new channel tutorial: https://hyperledger-fabric.readthedocs.io/en/latest/create_channel/channel_policies.html#signature-policies

The Admins policy can only be satisfied by transactions submitted by an identity with an admin role, while only identities with a peer role can satisfy the Endorsement policy.

Pam


Next Hyperledger Fabric Application Developer Community call -- this Thursday 9th July @ 3pm UTC time: 4pm UK, 11am ET, 8am PT

Paul O'Mahoney <mahoney@...>
 

dear Fabric Application Developer,


the next  Fabric Application Developer community call is: Thursday 9th July - 3pm UTC,  4pm UK time (+1), 11am ET (-5 hrs), 8am PT (-8 hrs)  - other time zones here.   It lasts approx 30-60 mins FYI.

The agenda will be posted here -> https://wiki.hyperledger.org/display/fabric/Agendas%3A+Fabric+Application+Developer+Community+Call+Meetings  

This community call is held bi-weekly via Zoom webconference and is aimed at :

- helping the worldwide Hyperledger Fabric Application Developer community grow (eg. developing applications, smart contracts, client apps using the SDKs, tutorials/demos etc -  eg using NodeJS/TypeScript, Java, Go etc etc) 
- helping app developers understand / hear more about exciting new things in Fabric, eg. features upcoming or work in progress - ie things that appeal to the developer
- foster more interest, best practices etc in developing applications (eg developing solutions, use cases) with Hyperledger Fabric. 
- opportunity to ask questions of the Fabric team eg. you may have feedback/questions on your experiences developing solutions with Fabric
- to share stuff you've done with the community, eg sample code / sample use cases that others may be interested in

If you wish to share content on a call, just let me know via email direct or DM me on Rocketchat (ID: mahoney1) and I'll put an item on the agenda. Provide the following:
- the topic (state whether its presentation, or demo etc)
- the full name of the presenter, and 
- approx length of your pitch in minutes


The Zoom webconference ID is https://zoom.us/my/hyperledger.community   

More information can be found on the community page -> https://wiki.hyperledger.org/display/fabric/Fabric+Application+Developer+Community+Calls

You can get calendar invites (eg iCal) here

many thanks for your time - feel free to forward this email if you think it is of interest to a colleague.

Paul O'Mahony
Community Lead - Hyperledger Fabric Developer Community
RocketChat:  mahoney1

mahoney@...


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


Re: When I run `peer lifecycle chaincode approveformyorg`, I always get the error: ENDORSEMENT_POLICY_FAILURE

David Enyeart
 

You are submitting from Org1, but your log shows Org2 peer endorsed.
You need to submit the approveformyorg transaction from an Org1 admin to an Org1 peer. Then from an Org2 admin to an Org2 peer.


Dave Enyeart

"Mind" ---07/03/2020 05:19:36 AM---I have a network with 3 org. org0 is the orderer, org1 & org2 has 1 peerWhen I install the chaincod

From: "Mind" <shenbin0252@...>
To: "fabric" <fabric@...>
Date: 07/03/2020 05:19 AM
Subject: [EXTERNAL] [Hyperledger Fabric] When I run `peer lifecycle chaincode approveformyorg`, I always get the error: ENDORSEMENT_POLICY_FAILURE
Sent by: fabric@...





I have a network with 3 org. org0 is the orderer, org1 & org2 has 1 peer
When I install the chaincode with each peer. And I use org1’s admin identity to execute the follow common:

```
peer lifecycle chaincode approveformyorg -o localhost:7050 --ordererTLSHostnameOverride orderer1-org0 --channelID mychannel --name iotmanager --version 1.0 --package-id iot_1:5b6d649d9aaa9b19a1d03612b6a4a644574bd1632f12a0524a263fafe4b85100 --sequence 1 --tls true --cafile $PWD/tlscacerts/tls-0-0-0-0-7052.pem
```

I always get the error like this:
```
INFO 001 txid [cf6051d0a0fc825cf683394e00ada5505768bebde6688772694816e25826bcf5] committed with status (ENDORSEMENT_POLICY_FAILURE) at
Error: transaction invalidated with status (ENDORSEMENT_POLICY_FAILURE)
```

And this is the peer’s log:
```
peer1-org2 | 2020-07-03 09:07:47.445 UTC [lifecycle] ApproveChaincodeDefinitionForOrg -> INFO 056 Successfully endorsed chaincode approval with name 'iotmanager', package ID 'iot_1:5b6d649d9aaa9b19a1d03612b6a4a644574bd1632f12a0524a263fafe4b85100', on channel 'mychannel' with definition {sequence: 1, endorsement info: (version: '1.0', plugin: 'escc', init required: false), validation info: (plugin: 'vscc', policy: '12202f4368616e6e656c2f4170706c69636174696f6e2f456e646f7273656d656e74'), collections: ()}
peer1-org2 | 2020-07-03 09:07:47.445 UTC [endorser] callChaincode -> INFO 057 finished chaincode: _lifecycle duration: 1ms channel=mychannel txID=9485f26c
peer1-org2 | 2020-07-03 09:07:47.450 UTC [comm.grpc.server] 1 -> INFO 058 unary call completed grpc.service=protos.Endorser grpc.method=ProcessProposal grpc.peer_address=172.19.0.1:32864 grpc.code=OK grpc.call_duration=7.15544ms
peer1-org2 | 2020-07-03 09:07:49.471 UTC [gossip.privdata] StoreBlock -> INFO 059 [mychannel] Received block [4] from buffer
peer1-org2 | 2020-07-03 09:07:49.472 UTC [vscc] Validate -> ERRO 05a VSCC error: stateBasedValidator.Validate failed, err validation of endorsement policy for collection _implicit_org_ca-org2 chaincode _lifecycle in tx 4:0 failed: signature set did not satisfy policy
peer1-org2 | 2020-07-03 09:07:49.473 UTC [committer.txvalidator] validateTx -> ERRO 05b Dispatch for transaction txId = 9485f26c175008f5e4e2bc92234e8f3ae3d8320acf221f2bed7b685e0d9eec37 returned error: validation of endorsement policy for collection _implicit_org_ca-org2 chaincode _lifecycle in tx 4:0 failed: signature set did not satisfy policy
peer1-org2 | 2020-07-03 09:07:49.473 UTC [committer.txvalidator] Validate -> INFO 05c [mychannel] Validated block [4] in 1ms
peer1-org2 | 2020-07-03 09:07:49.473 UTC [gossip.privdata] prepareBlockPvtdata -> INFO 05d Successfully fetched all eligible collection private write sets for block [4] channel=mychannel
peer1-org2 | 2020-07-03 09:07:49.473 UTC [valimpl] preprocessProtoBlock -> WARN 05e Channel [mychannel]: Block [4] Transaction index [0] TxId [9485f26c175008f5e4e2bc92234e8f3ae3d8320acf221f2bed7b685e0d9eec37] marked as invalid by committer. Reason code [ENDORSEMENT_POLICY_FAILURE]
peer1-org2 | 2020-07-03 09:07:49.484 UTC [kvledger] CommitLegacy -> INFO 05f [mychannel] Committed block [4] with 1 transaction(s) in 10ms (state_validation=0ms block_and_pvtdata_commit=6ms state_commit=1ms) commitHash=[04cbc8cfcf0030fed952b77a2cc7d5df59a9960fec9b475819bfd98525952f9b]
peer1-org2 | 2020-07-03 09:07:49.489 UTC [comm.grpc.server] 1 -> INFO 060 streaming call completed grpc.service=protos.Deliver grpc.method=DeliverFiltered grpc.request_deadline=2020-07-03T09:08:17.454Z grpc.peer_address=172.19.0.1:32868 error="context finished before block retrieved: context canceled" grpc.code=Unknown grpc.call_duration=2.03508306s
```

This is the orderer’s log:
```
orderer1-org0 | 2020-07-03 09:07:49.459 UTC [orderer.consensus.etcdraft] propose -> INFO 056 Created block [4], there are 0 blocks in flight channel=mychannel node=1
orderer1-org0 | 2020-07-03 09:07:49.464 UTC [orderer.consensus.etcdraft] writeBlock -> INFO 057 Writing block [4] (Raft index: 6) to ledger channel=mychannel node=1
orderer1-org0 | 2020-07-03 09:07:49.491 UTC [orderer.common.broadcast] Handle -> WARN 058 Error reading from 172.19.0.1:39116: rpc error: code = Canceled desc = context canceled
orderer1-org0 | 2020-07-03 09:07:49.491 UTC [comm.grpc.server] 1 -> INFO 059 streaming call completed grpc.service=orderer.AtomicBroadcast grpc.method=Broadcast grpc.peer_address=172.19.0.1:39116 error="rpc error: code = Canceled desc = context canceled" grpc.code=Canceled grpc.call_duration=2.049287023s
```

I've tried everything, nothing seems to work. Can anyone
shed some light?

Thanks in advance.


Below are the configtx.yaml:
```
Organizations:
- &Org0
Name: ca-org0
ID: ca-org0
MSPDir: orderer1-org0
Policies:
Readers:
Type: Signature
Rule: "OR('ca-org0.member')"
Writers:
Type: Signature
Rule: "OR('ca-org0.member')"
Admins:
Type: Signature
Rule: "OR('ca-org0.admin')"

OrdererEndpoints:
- orderer1-org0:7050

- &Org1
Name: ca-org1
ID: ca-org1
MSPDir: peer1-org1
Policies:
Readers:
Type: Signature
Rule: "OR('ca-org1.member')"
Writers:
Type: Signature
Rule: "OR('ca-org1.member')"
Admins:
Type: Signature
Rule: "OR('ca-org1.admin')"
Endorsement:
Type: Signature
Rule: "OR('ca-org1.peer')"

AnchorPeers:
- Host: peer1-org1
Port: 7051

- &Org2
Name: ca-org2
ID: ca-org2
MSPDir: peer1-org2
Policies:
Readers:
Type: Signature
Rule: "OR('ca-org2.member')"
Writers:
Type: Signature
Rule: "OR('ca-org2.member')"
Admins:
Type: Signature
Rule: "OR('ca-org2.admin')"
Endorsement:
Type: Signature
Rule: "OR('ca-org2.peer')"

AnchorPeers:
- Host: peer1-org2
Port: 7051

Capabilities:
Channel: &ChannelCapabilities
V2_0: true
Orderer: &OrdererCapabilities
V2_0: true
Application: &ApplicationCapabilities
V2_0: true


Channel: &ChannelDefaults
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "ANY Admins"

Capabilities:
<<: *ChannelCapabilities


Application: &ApplicationDefaults

Organizations:

Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
LifecycleEndorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"
Endorsement:
Type: ImplicitMeta
Rule: "MAJORITY Endorsement"

Capabilities:
<<: *ApplicationCapabilities


Orderer: &OrdererDefaults
OrdererType: etcdraft

EtcdRaft:
Consenters:
- Host: orderer1-org0
Port: 7050
ClientTLSCert: orderer1-org0/tls-msp/signcerts/cert.pem
ServerTLSCert: orderer1-org0/tls-msp/signcerts/cert.pem

BatchTimeout: 2s

BatchSize:
MaxMessageCount: 10
AbsoluteMaxBytes: 99 MB
PreferredMaxBytes: 512 KB

Organizations:

Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"
BlockValidation:
Type: ImplicitMeta
Rule: "ANY Writers"


Channel: &ChannelDefaults
Policies:
Readers:
Type: ImplicitMeta
Rule: "ANY Readers"
Writers:
Type: ImplicitMeta
Rule: "ANY Writers"
Admins:
Type: ImplicitMeta
Rule: "MAJORITY Admins"

Capabilities:
<<: *ChannelCapabilities

Profiles:

OrgsOrdererGenesis:
<<: *ChannelDefaults
Orderer:
<<: *OrdererDefaults
Organizations:
- *Org0
Capabilities:
<<: *OrdererCapabilities
Consortiums:
SampleConsortium:
Organizations:
- *Org1
- *Org2
OrgsChannel:
Consortium: SampleConsortium
<<: *ChannelDefaults
Application:
<<: *ApplicationDefaults
Organizations:
- *Org1
- *Org2
Capabilities:
<<: *ApplicationCapabilities
```




Re: Test cases for Chaincode written with fabric-contract-api

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

With the new chaincode model you can simply use standard mocking tools in your language of choice. While I don't have experience with mocking NodeJS, a quick Google search show's multiple mocking tools that can be used to do the job.
 
In Golang this looks something like this where I've mocked the actual interface you need to test chaincode:
 
//go:generate counterfeiter -o mock/transaction.go -fake-name TransactionContext . TransactionContext
type TransactionContext interface {
   contractapi.TransactionContextInterface
}
 
And then you simply call:
 
"go generate ." 
 
from the directory and you get an auto generated mock you can use for testing. The same general principle applies across languages, just implement it using the language and framework of you choice. 
 
Brett Logan
Software Engineer, IBM Blockchain
Phone: 1-984-242-6890
 
 
 

----- Original message -----
From: "Abhijeet Bhowmik" <abhijeet@...>
Sent by: fabric@...
To: fabric@...
Cc:
Subject: [EXTERNAL] [Hyperledger Fabric] Test cases for Chaincode written with fabric-contract-api
Date: Sun, Jul 5, 2020 1:08 PM
 
Dear all,
 
Hope everyone is doing well. I have run into a dire situation where I have a bulk of chaincode written but can't find a way to do offline testing. Earlier we used fabric-shim for cc development but now switched to fabric-contract-api due to cleanliness and easy handling of chaincode. But, what we used earlier to write test ''@theledger/fabric-mock-stub" now no longer works as it expects ChaincodeInterface and what we have is a class extending Contract class. So now the question arises, how could we do it for Contract API? Deploying untested chaincode is unaffordable. I have gone through documentation, online forums and other helpful resources but to no avail. Please advise.
 
Thank you. Regards.
Abhijeet Bhowmik
 


Test cases for Chaincode written with fabric-contract-api

Abhijeet Bhowmik <abhijeet@...>
 

Dear all,

Hope everyone is doing well. I have run into a dire situation where I have a bulk of chaincode written but can't find a way to do offline testing. Earlier we used fabric-shim for cc development but now switched to fabric-contract-api due to cleanliness and easy handling of chaincode. But, what we used earlier to write test ''@theledger/fabric-mock-stub" now no longer works as it expects ChaincodeInterface and what we have is a class extending Contract class. So now the question arises, how could we do it for Contract API? Deploying untested chaincode is unaffordable. I have gone through documentation, online forums and other helpful resources but to no avail. Please advise.

Thank you. Regards.
Abhijeet Bhowmik


Hyperledger Fabric Documentation Workgroup call - Western hemisphere - Fri, 07/03/2020 #cal-notice

fabric@lists.hyperledger.org Calendar <noreply@...>
 

Hyperledger Fabric Documentation Workgroup call - Western hemisphere

When:
Friday, 3 July 2020
4:00pm to 5:00pm
(GMT+01:00) Europe/London

Where:
https://zoom.us/j/6223336701

Organizer:
a_o-dowd@... +441962816761

Description:
Documentation workgroup call.
Agenda, minutes and recordings :https://wiki.hyperledger.org/display/fabric/Documentation+Working+Group