Can a composer fabric business network, .bna file, be deployed to the bluemix blockchain service today? If so, is there a connection profile example that someone can share? Thanks.
-
Welcome to Stack Overflow. The kinds of questions that get answered here have to do with specific programming problems. See http://stackoverflow.com/help/on-topic for the kinds of questions you can ask here. For questions like yours, about the Bluemix offerings, please post at IBM developerWorks Answers, https://developer.ibm.com/answers/smartspace/bluemix/. – ralphearle Feb 20 '17 at 14:44
1 Answers
You can use Composer with the Bluemix Blockchain service today.
However, you must be running a local copy of the Composer Playground as the version of Composer running on Bluemix (fabric-composer.mybluemix.net) only supports the web connection profile at the moment.
You can set up a local copy of the Composer Playground by following the instructions here: https://fabric-composer.github.io/start/getting-started-playground.html
Here's the connection profile that I used to connect to the Bluemix Blockchain service:
{
"type": "hlf",
"membershipServicesURL": "grpcs://f8946a6180f2431088ca17ce931a49dc-ca.us.blockchain.ibm.com:30001",
"peerURL": "grpcs://f8946a6180f2431088ca17ce931a49dc-vp1.us.blockchain.ibm.com:30001",
"eventHubURL": "grpcs://f8946a6180f2431088ca17ce931a49dc-vp1.us.blockchain.ibm.com:31001",
"keyValStore": "/home/composer/.composer-credentials",
"deployWaitTime": 300,
"invokeWaitTime": 30,
"certificate": "-----BEGIN CERTIFICATE-----\nMIID6TCCA26gAwIBAgIQCiYEWw1faoRpM2xufaiPLTAKBggqhkjOPQQDAjBMMQsw\nCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMSYwJAYDVQQDEx1EaWdp\nQ2VydCBFQ0MgU2VjdXJlIFNlcnZlciBDQTAeFw0xNjA2MDcwMDAwMDBaFw0xOTA2\nMTIxMjAwMDBaMIGJMQswCQYDVQQGEwJVUzERMA8GA1UECBMITmV3IFlvcmsxDzAN\nBgNVBAcTBkFybW9uazE0MDIGA1UEChMrSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBN\nYWNoaW5lcyBDb3Jwb3JhdGlvbjEgMB4GA1UEAwwXKi51cy5ibG9ja2NoYWluLmli\nbS5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARTKAZypDOqw34HWujQeL82\nj1e9rN1inpN6ngrq49+OpYIe8ckHnJhsWPpf+zeIQePboDQVUTDtYXh7212BsVoX\no4IB8jCCAe4wHwYDVR0jBBgwFoAUo53mH/naOU/AbuiRy5Wl2jHiCp8wHQYDVR0O\nBBYEFK+1RoBnUnb8nr2hNtkUu3FRrbYuMDkGA1UdEQQyMDCCFyoudXMuYmxvY2tj\naGFpbi5pYm0uY29tghV1cy5ibG9ja2NoYWluLmlibS5jb20wDgYDVR0PAQH/BAQD\nAgeAMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjBpBgNVHR8EYjBgMC6g\nLKAqhihodHRwOi8vY3JsMy5kaWdpY2VydC5jb20vc3NjYS1lY2MtZzEuY3JsMC6g\nLKAqhihodHRwOi8vY3JsNC5kaWdpY2VydC5jb20vc3NjYS1lY2MtZzEuY3JsMEwG\nA1UdIARFMEMwNwYJYIZIAYb9bAEBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3\nLmRpZ2ljZXJ0LmNvbS9DUFMwCAYGZ4EMAQICMHsGCCsGAQUFBwEBBG8wbTAkBggr\nBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNlcnQuY29tMEUGCCsGAQUFBzAChjlo\ndHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20vRGlnaUNlcnRFQ0NTZWN1cmVTZXJ2\nZXJDQS5jcnQwDAYDVR0TAQH/BAIwADAKBggqhkjOPQQDAgNpADBmAjEA7LViaN74\nOwIp/zqfwSRvURg965+m73/edCeNKrsLf6GuE0sLwpX6pQNnDlr6SzGnAjEA+qk0\nsYRnd2gCQeD9fWbCJIw0vJDqeZr1WJ64aVoJ8kyASzY/yoarSm2wqujXJwEf\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDrDCCApSgAwIBAgIQCssoukZe5TkIdnRw883GEjANBgkqhkiG9w0BAQwFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\nQTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaMEwxCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJjAkBgNVBAMTHURpZ2lDZXJ0IEVDQyBT\nZWN1cmUgU2VydmVyIENBMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE4ghC6nfYJN6g\nLGSkE85AnCNyqQIKDjc/ITa4jVMU9tWRlUvzlgKNcR7E2Munn17voOZ/WpIRllNv\n68DLP679Wz9HJOeaBy6Wvqgvu1cYr3GkvXg6HuhbPGtkESvMNCuMo4IBITCCAR0w\nEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwNAYIKwYBBQUHAQEE\nKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5jb20wQgYDVR0f\nBDswOTA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0RpZ2lDZXJ0R2xv\nYmFsUm9vdENBLmNybDA9BgNVHSAENjA0MDIGBFUdIAAwKjAoBggrBgEFBQcCARYc\naHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzAdBgNVHQ4EFgQUo53mH/naOU/A\nbuiRy5Wl2jHiCp8wHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJ\nKoZIhvcNAQEMBQADggEBAMeKoENL7HTJxavVHzA1Nm6YVntIrAVjrnuaVyRXzG/6\n3qttnMe2uuzO58pzZNvfBDcKAEmzP58mrZGMIOgfiA4q+2Y3yDDo0sIkp0VILeoB\nUEoxlBPfjV/aKrtJPGHzecicZpIalir0ezZYoyxBEHQa0+1IttK7igZFcTMQMHp6\nmCHdJLnsnLWSB62DxsRq+HfmNb4TDydkskO/g+l3VtsIh5RHFPVfKK+jaEyDj2D3\nloB5hWp2Jp2VDCADjT7ueihlZGak2YPqmXTNbk19HOuNssWvFhtOyPNV6og4ETQd\nEa8/B6hPatJ0ES8q/HO3X8IVQwVs1n3aAr0im0/T+Xc=\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nMIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh\nMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3\nd3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD\nQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT\nMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j\nb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG\n9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB\nCSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97\nnh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt\n43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P\nT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4\ngdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO\nBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR\nTLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw\nDQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr\nhMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg\n06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF\nPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls\nYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk\nCAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=\n-----END CERTIFICATE-----\n",
"certificatePath": "/certs/peer/cert.pem"
}
The hostname and port numbers in the URLs must come from the Bluemix dashboard. I find it easiest to get this information by navigating to "Service Credentials" and viewing the default credentials "Credentials-1". Here's an explanation of where each URL comes from:
membershipServicesURL is always "grpcs://" + url from the "ca" object (url also being discovery_host + ":" + discovery_port).
peerURL is always "grpcs://" + discovery_host + ":" + discovery_port from one of the peers listed in the "peers" array.
eventHubURL is always "grpcs://" + event_host + ":" + event_port from one of the peers listed in the "peers" array.
keyValStore is a directory on the file system of the system running Composer. If using the Docker images, then use the "/home/composer/.composer-credentials" path, otherwise use a directory that exists on your machine.
certificate comes from the "us.blockchain.ibm.com.cert" file which can be downloaded from the "cert" property in the credentials, for example "https://blockchain-certs.mybluemix.net/us.blockchain.ibm.com.cert". If you create this JSON manually, you must ensure that it ends with a "\n" newline character.
certificatePath comes from the "cert_path" property in the credentials.
You can also get the enrolment ID and enrolment secret to use for Bluemix from the credentials page; I recommend using "admin". Note that if you use the REST APIs to interact with the Bluemix service then you cannot use those same credentials with Composer.
One thing to note however is that the Bluemix Blockchain service can be unreliable due to problems with the event hub connection being timed out due to inactivity. When this happens, Composer will terminate and you may see an error. We are awaiting a fix to the hfc (Hyperledger Fabric Client) Node.js module that will correctly handle this error and reconnect as required.
Hope that helps,
Simon

- 495
- 2
- 4
-
Excellent, that worked! With the settings above I was able to run the cli 'composer network deploy -p bluemix -a
-i admin -s – Jon Dockter Feb 21 '17 at 15:33', where bluemix was my connection profile. -
Is is possible to have more than one peer (ie. use the 4 validating peers the Blockchain service offers in Bluemix). If we only specify one peer, what will happen with the other 3? – Jeff Apr 04 '17 at 22:06
-
I get an error when trying to set up the connection profile. I have used my credentials, but I get the following error: "Error: Error: sql: no rows in result set". Tried to log in with the admin. – Jeff Apr 04 '17 at 22:19
-
1You can only specify one peer in a Composer connection profile for Hyperledger Fabric v0.6. This is OK as that peer distributes the transaction to all of the other peers at submission time, however it does not allow for specifying multiple peers to handle failovers (in case a peer goes down). For the Hyperledger Fabric v1.0 support, we are allowing users to specify multiple peers. – Simon Stone Apr 05 '17 at 20:01
-
1The "no rows in result set" error usually indicates that you have enrolled somewhere with that enrolment ID (admin) before. Once you have enrolled with an enrolment ID and secret and received an enrolment certificate from membership services, you can no longer use that enrolment ID and secret again. – Simon Stone Apr 05 '17 at 20:03
-