Date   

How to unpack a packaged chaincode

Mr.Phuwanai Thummavet
 

Hi all,

Does anyone know how to unpack a packaged chaincode (.cds and/or .out extension)? I can't find any documentation regarding it.

Thanks.
--
Best Regards,
Phuwanai Thummavet
Blockchain Architect and Full-Stack Developer


Re: Revoke User certificate

Nye Liu <nye@...>
 

You mean inside channel configuration MSPs, not peer MSPs. Not sure if what I wrote below was clear.

On 1/1/20 6:23 AM, Adhav Pavan wrote:
Hello Nye,

I think we have to place CRL(generated by ca) in the MSP folder and not inside peer.

MSP Structure:

image.png

Description for same: 

Revoked Certificates: If the identity of an actor has been revoked, identifying information about the identity — not the identity itself — is held in this folder. For X.509-based identities, these identifiers are pairs of strings known as Subject Key Identifier (SKI) and Authority Access Identifier (AKI) and are checked whenever the X.509 certificate is being used to make sure the certificate has not been revoked.

This list is conceptually the same as a CA’s Certificate Revocation List (CRL), but it also relates to the revocation of membership from the organization. As a result, the administrator of an MSP, local or channel, can quickly revoke an actor or node from an organization by advertising the updated CRL of the CA the revoked certificate as issued by. This “list of lists” is optional. It will only become populated as certificates are revoked.


Please correct me if I am wrong.

Thank you.

Heartfelt Regards,
Pavan Adhav

Blockchain Developer
Cell Phone:
+91-8390114357  E-Mail: adhavpavan@...



On Wed, Jan 1, 2020 at 3:49 AM Nye Liu <nye@...> wrote:
You have to update each applicable channel configuration with the new crls. The peer/orderer MSP would then be checked to make sure the entity making the channel configuration update has permission to do so (depending on whether the update is to an orderer system channel or an application channel). This is my understanding but I could be very wrong.

On Tue, Dec 31, 2019, 9:02 AM Hojjat Jashnniloofar <h.niloofar@...> wrote:
Hello,
We are a team worked KYC solution on heyperledger fabric for last 2 years. We register each user and enroll certificate for each user and install keyPairs on user mobiles. In case of lost or theft, we want to revoke user certificate and reenroll them. We find sdk functions for revoke and reenroll but we want to ban old certificates to access the chaincode methods. We can generate ca crl but we don't know where we must place this CRLs or how to enforce peers to check certificate status before submit or evaluate transaction. 

We place this CRL (generated by ca) on peer in this path:
/etc/hyperledger/msp/peer/crls
but still user can submit transaction by revoked certificate.

anyone can help us in this case? 

Best Regards
Hojjat Jashnniloofar


Re: Revoke User certificate

Roger <roger_sherwood@...>
 

Hi Nye,
    In addition to the peer's local MSP  the revoked certificate list exists in the configuration block of each of the channels, under the MSP section.    Depending on where the peer is checking you may need to update this as well using the configtxlator.
I don't think I can remember the definitive list of when the peer checks the local MSP config and not the channel configuration so I hope one of the developers can chip in on this subject.

Note the revocation works with the signing certificates but not with the TLS certs.


                       Thanks Roger

IBM Global Business Services




From:        "Adhav Pavan" <adhavpavan@...>
To:        Nye Liu <nye@...>
Cc:        Hojjat Jashnniloofar <h.niloofar@...>, hyperledger-fabric <hyperledger-fabric@...>
Date:        01/01/2020 14:23
Subject:        [EXTERNAL] Re: [Hyperledger Fabric] Revoke User certificate
Sent by:        fabric@...




Hello Nye,

I think we have to place CRL(generated by ca) in the MSP folder and not inside peer.

MSP Structure:

image.png

Description for same: 

Revoked Certificates: If the identity of an actor has been revoked, identifying information about the identity — not the identity itself — is held in this folder. For X.509-based identities, these identifiers are pairs of strings known as Subject Key Identifier (SKI) and Authority Access Identifier (AKI) and are checked whenever the X.509 certificate is being used to make sure the certificate has not been revoked.

This list is conceptually the same as a CA’s Certificate Revocation List (CRL), but it also relates to the revocation of membership from the organization. As a result, the administrator of an MSP, local or channel, can quickly revoke an actor or node from an organization by advertising the updated CRL of the CA the revoked certificate as issued by. This “list of lists” is optional. It will only become populated as certificates are revoked.



Please correct me if I am wrong.

Thank you.
Heartfelt Regards,
Pavan Adhav

Blockchain Developer
Cell Phone:
+91-8390114357  E-Mail: adhavpavan@...


On Wed, Jan 1, 2020 at 3:49 AM Nye Liu <nye@...> wrote:
You have to update each applicable channel configuration with the new crls. The peer/orderer MSP would then be checked to make sure the entity making the channel configuration update has permission to do so (depending on whether the update is to an orderer system channel or an application channel). This is my understanding but I could be very wrong.


On Tue, Dec 31, 2019, 9:02 AM Hojjat Jashnniloofar <h.niloofar@...> wrote:
Hello,
We are a team worked KYC solution on heyperledger fabric for last 2 years. We register each user and enroll certificate for each user and install keyPairs on user mobiles. In case of lost or theft, we want to revoke user certificate and reenroll them. We find sdk functions for revoke and reenroll but we want to ban old certificates to access the chaincode methods. We can generate ca crl but we don't know where we must place this CRLs or how to enforce peers to check certificate status before submit or evaluate transaction. 

We place this CRL (generated by ca) on peer in this path:
/etc/hyperledger/msp/peer/crls
but still user can submit transaction by revoked certificate.

anyone can help us in this case? 

Best Regards
Hojjat Jashnniloofar




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: some question about fabric

Jay Guo
 

hi,

an orderer store *all* blocks of _channels it participates in_ (in
case of Raft), or _all channels_ (in case of Kafka). I don't think the
second point in your statement is accurate. Could you point me to the
original post? thx

- J

On Tue, Dec 31, 2019 at 5:34 PM shijian fu <wentingyear@...> wrote:

Hi, our program group have used fabric for about 8 months. And there are some questions unsolved until now.
here is the question list:
1. Would orderer node store all the block of a channel when there is only one channel and without using any private data? Or the orderer node just need to store the newest N block of a channel?
2. I have read some post in stack overflow which indicated that a peer 'A' from one organization will pull blocks from peers from other organizations when peer 'A' pull those blocks which are "missing"(not include private data) in orderer.
In which condition would blocks missing in orderer?


Re: Revoke User certificate

Adhav Pavan
 

Hello Nye,

I think we have to place CRL(generated by ca) in the MSP folder and not inside peer.

MSP Structure:

image.png

Description for same: 

Revoked Certificates: If the identity of an actor has been revoked, identifying information about the identity — not the identity itself — is held in this folder. For X.509-based identities, these identifiers are pairs of strings known as Subject Key Identifier (SKI) and Authority Access Identifier (AKI) and are checked whenever the X.509 certificate is being used to make sure the certificate has not been revoked.

This list is conceptually the same as a CA’s Certificate Revocation List (CRL), but it also relates to the revocation of membership from the organization. As a result, the administrator of an MSP, local or channel, can quickly revoke an actor or node from an organization by advertising the updated CRL of the CA the revoked certificate as issued by. This “list of lists” is optional. It will only become populated as certificates are revoked.


Please correct me if I am wrong.

Thank you.

Heartfelt Regards,
Pavan Adhav

Blockchain Developer
Cell Phone:
+91-8390114357  E-Mail: adhavpavan@...



On Wed, Jan 1, 2020 at 3:49 AM Nye Liu <nye@...> wrote:
You have to update each applicable channel configuration with the new crls. The peer/orderer MSP would then be checked to make sure the entity making the channel configuration update has permission to do so (depending on whether the update is to an orderer system channel or an application channel). This is my understanding but I could be very wrong.

On Tue, Dec 31, 2019, 9:02 AM Hojjat Jashnniloofar <h.niloofar@...> wrote:
Hello,
We are a team worked KYC solution on heyperledger fabric for last 2 years. We register each user and enroll certificate for each user and install keyPairs on user mobiles. In case of lost or theft, we want to revoke user certificate and reenroll them. We find sdk functions for revoke and reenroll but we want to ban old certificates to access the chaincode methods. We can generate ca crl but we don't know where we must place this CRLs or how to enforce peers to check certificate status before submit or evaluate transaction. 

We place this CRL (generated by ca) on peer in this path:
/etc/hyperledger/msp/peer/crls
but still user can submit transaction by revoked certificate.

anyone can help us in this case? 

Best Regards
Hojjat Jashnniloofar


Re: Revoke User certificate

Nye Liu <nye@...>
 

You have to update each applicable channel configuration with the new crls. The peer/orderer MSP would then be checked to make sure the entity making the channel configuration update has permission to do so (depending on whether the update is to an orderer system channel or an application channel). This is my understanding but I could be very wrong.


On Tue, Dec 31, 2019, 9:02 AM Hojjat Jashnniloofar <h.niloofar@...> wrote:
Hello,
We are a team worked KYC solution on heyperledger fabric for last 2 years. We register each user and enroll certificate for each user and install keyPairs on user mobiles. In case of lost or theft, we want to revoke user certificate and reenroll them. We find sdk functions for revoke and reenroll but we want to ban old certificates to access the chaincode methods. We can generate ca crl but we don't know where we must place this CRLs or how to enforce peers to check certificate status before submit or evaluate transaction. 

We place this CRL (generated by ca) on peer in this path:
/etc/hyperledger/msp/peer/crls
but still user can submit transaction by revoked certificate.

anyone can help us in this case? 

Best Regards
Hojjat Jashnniloofar


Revoke User certificate

Hojjat Jashnniloofar
 

Hello,
We are a team worked KYC solution on heyperledger fabric for last 2 years. We register each user and enroll certificate for each user and install keyPairs on user mobiles. In case of lost or theft, we want to revoke user certificate and reenroll them. We find sdk functions for revoke and reenroll but we want to ban old certificates to access the chaincode methods. We can generate ca crl but we don't know where we must place this CRLs or how to enforce peers to check certificate status before submit or evaluate transaction. 

We place this CRL (generated by ca) on peer in this path:
/etc/hyperledger/msp/peer/crls
but still user can submit transaction by revoked certificate.

anyone can help us in this case? 

Best Regards
Hojjat Jashnniloofar


some question about fabric

shijian fu
 

Hi, our program group have used fabric for about 8 months. And there are some questions unsolved until now. 
here is the question list:
1. Would orderer node store all the block of a channel when there is only one channel and without using any private data? Or the orderer node just need to store the newest N block of a channel?
2. I have read some post in stack overflow which indicated that a peer 'A'  from one organization  will pull blocks from peers from other organizations when peer 'A' pull those blocks which are "missing"(not include private data) in orderer. 
In which condition would blocks missing in orderer?


Re: Fabric CA server installation fails

Suhan Sumeet
 

It worked thanks :)


On Mon, Dec 30, 2019 at 4:37 PM Gari Singh <garis@...> wrote:
You need to use Go 1.13 to build the master branch of fabric ca.


-----------------------------------------
Gari Singh
Distinguished Engineer, CTO - IBM Blockchain
IBM Middleware
550 King St
Littleton, MA 01460
Cell: 978-846-7499
garis@...
-----------------------------------------

-----fabric@... wrote: -----
To: hyperledger-fabric@...
From: "Suhan Sumeet"
Sent by: fabric@...
Date: 12/30/2019 04:44AM
Cc: sunil suseelan <sunil18031992@...>
Subject: [EXTERNAL] [Hyperledger Fabric] Fabric CA server installation fails

Hello Team,

Am following the fabric CA documentation and while am trying to do the installation with "go get -u github.com/hyperledger/fabric-ca/cmd/..." command  it fails with below error

# github.com/hyperledger/fabric-ca/lib
src/github.com/hyperledger/fabric-ca/lib/server.go:668:18: undefined: "crypto/tls".VersionTLS13

Could someone please guide me around this issue?




Re: Fabric CA server installation fails

Gari Singh <garis@...>
 

You need to use Go 1.13 to build the master branch of fabric ca.


-----------------------------------------
Gari Singh
Distinguished Engineer, CTO - IBM Blockchain
IBM Middleware
550 King St
Littleton, MA 01460
Cell: 978-846-7499
garis@...
-----------------------------------------

-----fabric@... wrote: -----
To: hyperledger-fabric@...
From: "Suhan Sumeet"
Sent by: fabric@...
Date: 12/30/2019 04:44AM
Cc: sunil suseelan <sunil18031992@...>
Subject: [EXTERNAL] [Hyperledger Fabric] Fabric CA server installation fails

Hello Team,

Am following the fabric CA documentation and while am trying to do the installation with "go get -u github.com/hyperledger/fabric-ca/cmd/..." command it fails with below error

# github.com/hyperledger/fabric-ca/lib
src/github.com/hyperledger/fabric-ca/lib/server.go:668:18: undefined: "crypto/tls".VersionTLS13

Could someone please guide me around this issue?


Re: Fabric CA server installation fails

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

What version of golang are you using? We recently added support for TLS1.3 and I assume the version of Go you are using doesn't support it.

Brett

Suhan Sumeet --- [EXTERNAL] [Hyperledger Fabric] Fabric CA server installation fails ---

From:"Suhan Sumeet" <suhan.premilu@...>
To:hyperledger-fabric@...
Cc:"sunil suseelan" <sunil18031992@...>
Date:Mon, Dec 30, 2019 12:44
Subject:[EXTERNAL] [Hyperledger Fabric] Fabric CA server installation fails


Hello Team,

Am following the fabric CA documentation and while am trying to do the installation with "go get -u github.com/hyperledger/fabric-ca/cmd/..." command  it fails with below error


Could someone please guide me around this issue?




Fabric CA server installation fails

Suhan Sumeet
 

Hello Team,

Am following the fabric CA documentation and while am trying to do the installation with "go get -u github.com/hyperledger/fabric-ca/cmd/..." command  it fails with below error


Could someone please guide me around this issue?



Re: Performance Difference bet RAFT Orderer and Orderer with Kafka(Latency, Throughput, TPS)

soumya nayak <soumyarjnnayak@...>
 

Hi pavan, 

From my experience I did not find much latency. it was very similar in both the cases. 

Fabric - v1. 4.3
Kafka - 4 brokers (all in 4 different azure cloud VM) 
Orderers - 2 ( 2 different vms) 
AZURE VM - 2 VCPU, 8 GB RAM, 200GB SPACE

Raft orderers- 3 nodes (all in 3 different azure VMs) 

Uploaded 21 million records from a sql server to blockchain set up in above both the configurations set up. 

We did 900-1000 transactions as per the block creation cutoff and sometimes we were able to achieve around 1300-1400 trans also for both the above cases. 

Even when I am trying to fetch also records from the 21 million with a load of 30-40 concurrent users iam able to fetch the records in less than a second in both the cases. 

If you can tell us more details about your set up would be great. 

Regards, 
Soumya

On Mon 30 Dec, 2019, 3:34 AM Baohua Yang, <yangbaohua@...> wrote:
Hi pavan

How many kafka nodes are you using?  And is it in the same VMWARE with OSN? 

Would expect the CPU utilization is different here,  the kafka one is higher? 

On Dec 28, 2019, at 20:52, Adhav Pavan <adhavpavan@...> wrote:


Hello Experts,

Did anyone compare performance(Latency, Throughput, TPS) between orderer with Kafka and RAFT Orderer?

I could see here a considerable difference in terms of latency, throughput, and TPS.

I tried with the same setup with the same resource configuration on two different VM(the Only difference is the orderer system).

Note: Used Single orderer in both networks.
Fabric Version: 1.4.4

Orderer with Kafka is more efficient than RAFT. 
I am using the default configuration for RAFT and Kafka

I tried with load generator at the rate of 100tps
WIth Kafka all parameters are fine(latency 0.3 to 2 Seconds) whereas using RAFT, latency is gradually increasing up to 10+ Seconds, the tx failure rate is also high.

What could be the reason for this considerable difference in terms of TPS, throughput, and latency?

Please correct If I am doing something wrong.

Thank you so much.

Heartfelt Regards,
Pavan Adhav

Blockchain Developer
Cell Phone:
+91-8390114357  E-Mail: adhavpavan@...


Re: Performance Difference bet RAFT Orderer and Orderer with Kafka(Latency, Throughput, TPS)

Baohua Yang
 

Hi pavan

How many kafka nodes are you using?  And is it in the same VMWARE with OSN? 

Would expect the CPU utilization is different here,  the kafka one is higher? 

On Dec 28, 2019, at 20:52, Adhav Pavan <adhavpavan@...> wrote:


Hello Experts,

Did anyone compare performance(Latency, Throughput, TPS) between orderer with Kafka and RAFT Orderer?

I could see here a considerable difference in terms of latency, throughput, and TPS.

I tried with the same setup with the same resource configuration on two different VM(the Only difference is the orderer system).

Note: Used Single orderer in both networks.
Fabric Version: 1.4.4

Orderer with Kafka is more efficient than RAFT. 
I am using the default configuration for RAFT and Kafka

I tried with load generator at the rate of 100tps
WIth Kafka all parameters are fine(latency 0.3 to 2 Seconds) whereas using RAFT, latency is gradually increasing up to 10+ Seconds, the tx failure rate is also high.

What could be the reason for this considerable difference in terms of TPS, throughput, and latency?

Please correct If I am doing something wrong.

Thank you so much.

Heartfelt Regards,
Pavan Adhav

Blockchain Developer
Cell Phone:
+91-8390114357  E-Mail: adhavpavan@...


Performance Difference bet RAFT Orderer and Orderer with Kafka(Latency, Throughput, TPS)

Adhav Pavan
 

Hello Experts,

Did anyone compare performance(Latency, Throughput, TPS) between orderer with Kafka and RAFT Orderer?

I could see here a considerable difference in terms of latency, throughput, and TPS.

I tried with the same setup with the same resource configuration on two different VM(the Only difference is the orderer system).

Note: Used Single orderer in both networks.
Fabric Version: 1.4.4

Orderer with Kafka is more efficient than RAFT. 
I am using the default configuration for RAFT and Kafka

I tried with load generator at the rate of 100tps
WIth Kafka all parameters are fine(latency 0.3 to 2 Seconds) whereas using RAFT, latency is gradually increasing up to 10+ Seconds, the tx failure rate is also high.

What could be the reason for this considerable difference in terms of TPS, throughput, and latency?

Please correct If I am doing something wrong.

Thank you so much.

Heartfelt Regards,
Pavan Adhav

Blockchain Developer
Cell Phone:
+91-8390114357  E-Mail: adhavpavan@...


Re: mixing CouchDB and LevelDB

Siddharth Jain
 

Thanks. That's what I wanted to confirm. So its a should not a must.


From: David Enyeart <enyeart@...>
Sent: Friday, December 27, 2019 8:27 AM
To: Siddharth Jain <siddjain@...>
Cc: fabric@... <fabric@...>
Subject: Re: [Hyperledger Fabric] mixing CouchDB and LevelDB
 

The general guidance as that all peers on a channel should use the same database type to ensure deterministic endorsement and validation across peers.
We know that CouchDB itself places limitations on valid keys and even valid JSON content as documented here: https://hyperledger-fabric.readthedocs.io/en/latest/couchdb_as_state_database.html#state-database-options.
Therefore what may pass endorsement and validation on LevelDB may not pass validation on CouchDB.
Similarly, range queries used in transactions are validated at commit time on every peer to ensure the results at endorsement time still match current results, and although both LevelDB and CouchDB sort keys as bytes lexicographically, it is possible that in some edge cases LevelDB and CouchDB would return results in different order and therefore you could get different validation results (I don't know of any such edge cases, but I also haven't reviewed LevelDB and CouchDB source code to completely rule out any such cases).

You don't necessarily have to follow the general guidance however. If your chaincode data validation limits keys and values to what is supported on both LevelDB and CouchDB, there is no technical reason why you can't have both LevelDB and CouchDB based peers on the same channel.

BTW there is a Jira to add a channel capability that would enforce CouchDB data validation at endorsement time on all peers (not just CouchDB-based peers as is done in v1.4.x). See https://jira.hyperledger.org/browse/FAB-16355.


Dave Enyeart

"Siddharth Jain" ---12/24/2019 07:03:06 PM---this is the link where I read All peers on the network *must* use the same database type https://url

From: "Siddharth Jain" <siddjain@...>
To: fabric@...
Date: 12/24/2019 07:03 PM
Subject: [EXTERNAL] Re: [Hyperledger Fabric] mixing CouchDB and LevelDB
Sent by: fabric@...





this is the link where I read All peers on the network must use the same database type
https://hyperledger-fabric.readthedocs.io/en/release-1.4/couchdb_tutorial.html#why-couchdb

Pardon me but I am still trying to understand whether this is a must or a should.

also w.r.t. https://jira.hyperledger.org/browse/FAB-17163

There may also be scenarios where range query results are sorted differently across LevelDB and CouchDB, causing differences in range query validation.

is it possible to give an example illustrating what is meant in above? how will it cause differences in range query validation?





Re: #couchdb #fabric-chaincode #fabric-chaincode #couchdb

David Enyeart
 

Fabric only exposes a subset of CouchDB functionality. JSON queries and associated indexes are supported, but map reduce queries are not supported, since this is not a pattern we expect many databases to support. For more advanced queries (reporting, analytics, etc), the recommendation is to use block events to create a downstream data store that supports the query requirements. See https://hyperledger-fabric.readthedocs.io/en/latest/couchdb_as_state_database.html#good-practices-for-queries.


Dave Enyeart

praviteja---12/27/2019 08:56:33 AM---How to use map reduce functions in Chaincode written in Node js? I am saving data into couch db in t

From: praviteja@...
To: fabric@...
Date: 12/27/2019 08:56 AM
Subject: [EXTERNAL] [Hyperledger Fabric] #couchdb #fabric-chaincode
Sent by: fabric@...





How to use map reduce functions in Chaincode written in Node js?

I am saving data into couch db in the following format :
1. users collection : {
"id":"user101"
"docType":"user",
"name":"test user",
"active":"true"
}
documents collection:
{
"id":"doc101",
"userId":"user101",
"documentName":"Test Document",
"docType":"document"
}

I want to query documents along with the user references into it like this:
{"documentname":"Test Document",
"id":"doc101",
"user":{ "userId":101,"name:"test user""}
}

From my reading on the couch db literature it is possible with map reduce functions.

How to use this map reduce functions in chain code?





Re: mixing CouchDB and LevelDB

David Enyeart
 

The general guidance as that all peers on a channel should use the same database type to ensure deterministic endorsement and validation across peers.
We know that CouchDB itself places limitations on valid keys and even valid JSON content as documented here: https://hyperledger-fabric.readthedocs.io/en/latest/couchdb_as_state_database.html#state-database-options.
Therefore what may pass endorsement and validation on LevelDB may not pass validation on CouchDB.
Similarly, range queries used in transactions are validated at commit time on every peer to ensure the results at endorsement time still match current results, and although both LevelDB and CouchDB sort keys as bytes lexicographically, it is possible that in some edge cases LevelDB and CouchDB would return results in different order and therefore you could get different validation results (I don't know of any such edge cases, but I also haven't reviewed LevelDB and CouchDB source code to completely rule out any such cases).

You don't necessarily have to follow the general guidance however. If your chaincode data validation limits keys and values to what is supported on both LevelDB and CouchDB, there is no technical reason why you can't have both LevelDB and CouchDB based peers on the same channel.

BTW there is a Jira to add a channel capability that would enforce CouchDB data validation at endorsement time on all peers (not just CouchDB-based peers as is done in v1.4.x). See https://jira.hyperledger.org/browse/FAB-16355.


Dave Enyeart

"Siddharth Jain" ---12/24/2019 07:03:06 PM---this is the link where I read All peers on the network *must* use the same database type https://url

From: "Siddharth Jain" <siddjain@...>
To: fabric@...
Date: 12/24/2019 07:03 PM
Subject: [EXTERNAL] Re: [Hyperledger Fabric] mixing CouchDB and LevelDB
Sent by: fabric@...





this is the link where I read All peers on the network must use the same database type
https://hyperledger-fabric.readthedocs.io/en/release-1.4/couchdb_tutorial.html#why-couchdb

Pardon me but I am still trying to understand whether this is a must or a should.

also w.r.t. https://jira.hyperledger.org/browse/FAB-17163

There may also be scenarios where range query results are sorted differently across LevelDB and CouchDB, causing differences in range query validation.

is it possible to give an example illustrating what is meant in above? how will it cause differences in range query validation?





#couchdb #fabric-chaincode #fabric-chaincode #couchdb

praviteja@...
 

How to use map reduce functions in Chaincode written in Node js?

I am saving data into couch db in the following format :
1. users collection : {
"id":"user101"
"docType":"user",
"name":"test user",
"active":"true"
}
 documents collection:
{
"id":"doc101",
"userId":"user101",
"documentName":"Test Document",
"docType":"document"
}

I want to query documents along with the user references into it like this:
{"documentname":"Test Document",
"id":"doc101",
"user":{ "userId":101,"name:"test user""}
}

From my reading on the couch db literature it is possible with map reduce functions. 

 How to use  this map reduce functions  in chain code?
 


fabric-chaincode-evm v0.4.0 Release

Morgan Bauer <mbauer@...>
 

Hello,


This is the fourth release of fabric-chaincode-evm.

Please find it here:
https://github.com/hyperledger/fabric-chaincode-evm/releases/tag/v0.4.0

Try it out and let us know what you think.

We can be found on the mailing-lists and in the RocketChat Channel
#fabric-evm at chat.hyperledger.org


Thank you

3761 - 3780 of 11218