├── Python脚本 └── energy-hyperledger.py ├── README.md ├── fabric-sdk-node └── test │ ├── fixtures │ ├── caimport.json │ ├── channel │ │ ├── configtx.yaml │ │ ├── crypto-config │ │ │ ├── ordererOrganizations │ │ │ │ └── ordererOrg1 │ │ │ │ │ ├── ca │ │ │ │ │ ├── 4d4a772215168b6594c87e82650e438f1f37c303e14b5f9e6f3ee06cc2bb823a_sk │ │ │ │ │ └── ordererOrg1-cert.pem │ │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── ordererOrg1-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ ├── ordererOrg0.pem │ │ │ │ │ │ ├── ordererOrg1-cert.pem │ │ │ │ │ │ ├── peerOrg0.pem │ │ │ │ │ │ ├── peerOrg1.pem │ │ │ │ │ │ └── peerOrg2.pem │ │ │ │ │ └── signcerts │ │ │ │ │ │ └── ordererOrg1-cert.pem │ │ │ │ │ └── orderers │ │ │ │ │ └── ordererOrg1orderer1 │ │ │ │ │ ├── admincerts │ │ │ │ │ └── ordererOrg1-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ └── ordererOrg1-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ └── 9707908924f92bbaa5c8a6961c260dc4992ad2fd7043cccf3f3948ffbea989e1_sk │ │ │ │ │ └── signcerts │ │ │ │ │ └── ordererOrg1orderer1-cert.pem │ │ │ └── peerOrganizations │ │ │ │ ├── peerOrg1 │ │ │ │ ├── ca │ │ │ │ │ ├── d8a5b3cac1b821f6e4b487ceaf1fd239cdcfc310894150908b90f05e9179556a_sk │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ ├── msp │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ ├── peerOrg0.pem │ │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ │ └── signcerts │ │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ └── peers │ │ │ │ │ ├── peerOrg1Peer1 │ │ │ │ │ ├── admincerts │ │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ │ └── 5e67f35124df6a9124bf3659365b8476af4090f73c82c9b626efc15f12739d5d_sk │ │ │ │ │ └── signcerts │ │ │ │ │ │ └── peerOrg1Peer1-cert.pem │ │ │ │ │ └── peerOrg1Peer2 │ │ │ │ │ ├── admincerts │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ │ ├── cacerts │ │ │ │ │ └── peerOrg1-cert.pem │ │ │ │ │ ├── keystore │ │ │ │ │ └── 707c2b3c02ddd36a6c4a17771769b54a3dc9066e05be1e76582cabd65c110e4e_sk │ │ │ │ │ └── signcerts │ │ │ │ │ └── peerOrg1Peer2-cert.pem │ │ │ │ └── peerOrg2 │ │ │ │ ├── ca │ │ │ │ ├── 96bdb57f4efbdcf201a269899eb47e2a73fbb728ae14d47d0d5afb75ddea71de_sk │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ ├── msp │ │ │ │ ├── admincerts │ │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ ├── cacerts │ │ │ │ │ ├── peerOrg1.pem │ │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ └── signcerts │ │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ └── peers │ │ │ │ ├── peerOrg2Peer1 │ │ │ │ ├── admincerts │ │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ ├── cacerts │ │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ ├── keystore │ │ │ │ │ └── 26d8ff264dd3956922ff23e2fa2bca59817df114630f95adce343388f9fffe7a_sk │ │ │ │ └── signcerts │ │ │ │ │ └── peerOrg2Peer1-cert.pem │ │ │ │ └── peerOrg2Peer2 │ │ │ │ ├── admincerts │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ ├── cacerts │ │ │ │ └── peerOrg2-cert.pem │ │ │ │ ├── keystore │ │ │ │ └── cc80356f4275390b2090bf0a62b26d3c5e9420c022d196267990eed7014bfcec_sk │ │ │ │ └── signcerts │ │ │ │ └── peerOrg2Peer2-cert.pem │ │ ├── mychannel.tx │ │ └── twoorgs.orderer.block │ ├── cloudant.json │ ├── couchdb.json │ ├── docker-compose-marbles.yml │ ├── docker-compose.yaml │ ├── docker-compose.yaml.bak │ ├── fabricca │ │ ├── ecert.pem │ │ ├── enroll-csr.pem │ │ ├── tlsOrg1 │ │ │ └── fabric-ca-server-config.yaml │ │ └── tlsOrg2 │ │ │ └── fabric-ca-server-config.yaml │ ├── local.json │ ├── msp │ │ ├── local │ │ │ ├── keystore │ │ │ │ └── admin.pem │ │ │ └── signcerts │ │ │ │ └── admin.pem │ │ ├── org0 │ │ │ ├── admincerts │ │ │ │ └── admin.pem │ │ │ └── cacerts │ │ │ │ └── org_ca.pem │ │ └── org1 │ │ │ ├── admincerts │ │ │ └── admin.pem │ │ │ └── cacerts │ │ │ └── org_ca.pem │ ├── src │ │ └── github.com │ │ │ ├── events_cc │ │ │ ├── Dockerfile │ │ │ └── events_cc.go │ │ │ ├── example_cc │ │ │ ├── example_cc.bak │ │ │ │ └── example_cc.go.bak │ │ │ └── example_cc.go │ │ │ ├── example_cc1 │ │ │ ├── example_cc1.bak │ │ │ │ └── example_cc1.go │ │ │ └── example_cc1.go │ │ │ └── marbles_cc │ │ │ └── marbles.go │ └── tls │ │ ├── orderer │ │ ├── ca-cert.pem │ │ ├── cert.pem │ │ └── key.pem │ │ └── peers │ │ ├── peer0 │ │ ├── ca-cert.pem │ │ ├── cert.pem │ │ └── key.pem │ │ ├── peer1 │ │ ├── ca-cert.pem │ │ ├── cert.pem │ │ └── key.pem │ │ ├── peer2 │ │ ├── ca-cert.pem │ │ ├── cert.pem │ │ └── key.pem │ │ └── peer3 │ │ ├── ca-cert.pem │ │ ├── cert.pem │ │ └── key.pem │ ├── integration │ ├── client.js │ ├── cloudant-fabricca-tests.js │ ├── couchdb-fabricca-tests.js │ ├── couchdb-util.js │ ├── e2e.bak │ │ ├── config.json │ │ ├── create-channel.js │ │ ├── e2eUtils.js │ │ ├── install-chaincode.js │ │ ├── instantiate-chaincode.js │ │ ├── invoke-transaction.js │ │ ├── join-channel.js │ │ ├── query.js │ │ └── upgrade.js │ ├── e2e.js │ ├── e2e.ks │ ├── e2e.version1 │ │ ├── config.json │ │ ├── config.json_bak │ │ ├── create-channel.js │ │ ├── e2eUtils.js │ │ ├── exec.js │ │ ├── hackfest │ │ │ ├── channel_test.sh │ │ │ ├── config.json │ │ │ ├── deploy.js │ │ │ ├── docker-compose-gettingstarted.yml │ │ │ ├── helper.js │ │ │ ├── invoke.js │ │ │ ├── package.json │ │ │ └── query.js │ │ ├── helper.js │ │ ├── install-chaincode.js │ │ ├── instantiate-chaincode.js │ │ ├── invoke-transaction.js │ │ ├── join-channel.js │ │ ├── query.js │ │ ├── query1.sh │ │ ├── re.py │ │ ├── result │ │ ├── script.sh │ │ ├── upgrade.js │ │ └── yunxing.py │ ├── e2e │ │ ├── config.json │ │ ├── config.json_bak │ │ ├── create-channel.js │ │ ├── e2eUtils.js │ │ ├── exec.js │ │ ├── hackfest │ │ │ ├── channel_test.sh │ │ │ ├── config.json │ │ │ ├── deploy.js │ │ │ ├── docker-compose-gettingstarted.yml │ │ │ ├── helper.js │ │ │ ├── invoke.js │ │ │ ├── package.json │ │ │ └── query.js │ │ ├── helper.js │ │ ├── install-chaincode.js │ │ ├── instantiate-chaincode.js │ │ ├── invoke-transaction.js │ │ ├── invoke-transaction.js.bak │ │ ├── join-channel.js │ │ ├── query.js │ │ ├── query1.sh │ │ ├── re.py │ │ ├── result │ │ ├── script.sh │ │ ├── upgrade.js │ │ └── yunxing.py │ ├── e2epy │ │ ├── config.json │ │ ├── config.json_bak │ │ ├── create-channel.js │ │ ├── exec.js │ │ ├── hackfest │ │ │ ├── channel_test.sh │ │ │ ├── config.json │ │ │ ├── deploy.js │ │ │ ├── docker-compose-gettingstarted.yml │ │ │ ├── helper.js │ │ │ ├── invoke.js │ │ │ ├── package.json │ │ │ └── query.js │ │ ├── helper.js │ │ ├── install-chaincode.js │ │ ├── instantiate-chaincode.js │ │ ├── invoke-transaction.js │ │ ├── join-channel.js │ │ ├── query.js │ │ ├── query1.js │ │ ├── re.py │ │ ├── result │ │ ├── script.sh │ │ └── yunxing.py │ ├── events.js │ ├── eventutil.js │ ├── fabric-ca-services-tests.js │ ├── get-config.js │ ├── install.js │ ├── marbles.js │ ├── new-chain.js │ ├── orderer-chain-tests.js │ ├── query.js │ └── upgrade.js │ └── unit │ ├── chain.js │ ├── client.js │ ├── couchdb-key-value-store.js │ ├── crypto-key-store.js │ ├── cryptosuite-ecdsa-aes.js │ ├── ecdsa-key.js │ ├── event-hub.js │ ├── fabric-ca-client.js │ ├── file-key-value-store.js │ ├── identity.js │ ├── logger.js │ ├── msp.js │ ├── orderer.js │ ├── peer.js │ ├── pkcs11.js │ ├── remote.js │ ├── user.js │ ├── util.js │ └── util.js.abc ├── 前端 ├── Makefile ├── README.md ├── dist │ ├── b02bdc1b846fd65473922f5f62832108.ttf │ ├── index.html │ ├── index.js │ ├── index.js.map │ ├── manifest.js │ ├── manifest.js.map │ ├── vendor.js │ └── vendor.js.map ├── package.json ├── postcss.config.js ├── router │ └── index.js ├── src │ ├── App.vue │ ├── assets │ │ └── logo.png │ ├── components │ │ ├── common │ │ │ ├── header.vue │ │ │ ├── home.vue │ │ │ └── sidebar.vue │ │ └── page │ │ │ ├── Login.vue │ │ │ ├── MainPage.vue │ │ │ ├── TopUpUser.vue │ │ │ ├── TradeRecord.vue │ │ │ └── UserInformation.vue │ ├── index.html │ ├── main.js │ ├── store │ │ ├── actions.js │ │ ├── index.js │ │ └── mutations.js │ └── vendor.js ├── static │ ├── b02bdc1b846fd65473922f5f62832108.ttf │ ├── css │ │ ├── datasource.css │ │ └── main.css │ ├── deviceInformationTable_bodyData.json │ ├── deviceTree_bodyData.json │ ├── historyDataTable_bodyData.json │ ├── historyDataTable_headerData.json │ ├── index.html │ ├── index.js │ ├── index.js.map │ ├── manifest.js │ ├── manifest.js.map │ ├── realTimeDataTable_bodyData.json │ ├── vendor.js │ └── vendor.js.map └── webpack.config.js └── 后台 ├── app.py └── static ├── b02bdc1b846fd65473922f5f62832108.ttf ├── index.html ├── index.js ├── index.js.map ├── manifest.js ├── manifest.js.map ├── vendor.js └── vendor.js.map /README.md: -------------------------------------------------------------------------------- 1 | Energy_blockchain 2 | 3 | 本项目是使用fabric 1.0模拟多用户在能源互联网环节中使用能源区块链进行能源交易,利用区块链技术的防篡改性进行交易认证。确保能源交易的可靠性,推动新能源利用率等。 4 | 5 | 在CC层加入了简单的能源交易智能合约,并将交易数据写入账本以及保存在couchdb中,业务层数据库在本地db.sqlite中,在上层使用python的胶水特性进行连接,前端界面使用vue框架,后台使用flask。 6 | 7 | 使用说明: 8 |    运行环境为Linux(Ubuntu 16.04): 9 |   Node版本:v6.9.5. Go版本:1.8 Python版本:3.5.2 Docker版本:17.03.1-ce及以上. 并安装docker-compose 10 | 11 | 设置$GOPATH为/home/leon/workspace. 12 | 13 |    需要在https://github.com/hyperledger里获取Fabirc-CA,Fabric. 放入$GOPATH/src/github.com/hyperledger中. 14 | 15 |    在Fabirc和Fabric中分别执行 make docke生成docker镜像并修改标签为latest. 16 | 17 |   将项目中的fabric-sdk-node 放入 $GOPATH/src/hyperledger/fabric中 18 | 19 |    在fabric-sdk-node/energy_blockchain/fabric-sdk-node/test/fixtures 中执行 docker-compose up --force-recreate. 20 | 21 |    在fabric-sdk-node/energy_blockchain/fabric-sdk-node/test/integration/e2e 中 执行: 22 |       23 | 24 | node create-channel.js 25 | 26 | node join-channel.js 27 | 28 | node install-chaincode.js 29 | 30 | node instantiate-chaincode.js 31 | 32 |    完成部署智能合约, 通过使用node upgrade.js更新智能合约(需要在upgrade.js和query1.sh中修改版本号 默认为 'v113') 33 | 34 |    运行 python3 energy-hyperledger.py 35 | 36 |    运行 python3 app.py 启动Flask后台,交易平台界面地址为 http://localhost:8080/ 37 | 38 |    在Web端进行基于hyperledger的能源管理交易。 39 | 40 | 41 |    第三次更新(Version 1.0) 42 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/caimport.json: -------------------------------------------------------------------------------- 1 | { 2 | "ca-import" : { 3 | "orgs": { 4 | "org1": { 5 | "username": "admin", 6 | "name": "peerOrg1", 7 | "mspid": "Org1MSP", 8 | "storePath": "/tmp/hfc-test-kvs_org1", 9 | "cryptoContent": { 10 | "privateKey": "../fixtures/msp/local/keystore/admin.pem", 11 | "signedCert": "../fixtures/msp/local/signcerts/admin.pem" 12 | } 13 | }, 14 | "org2": { 15 | "username": "admin", 16 | "name": "peerOrg2", 17 | "mspid": "Org2MSP", 18 | "storePath": "/tmp/hfc-test-kvs_org2", 19 | "cryptoContent": { 20 | "privateKeyPEM": "-----BEGIN PRIVATE KEY-----MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2HxfPVxvwHYM5X8o/tEoDZ54Rl9uW13U6RElpnFOCruhRANCAATx8pv9DCChfwHoa7IRUf2z7GTmC3k2Tl8e7DWA9fZ4cpL9vdk0ZMgQZKo8Gm61NSTuHMZ8zp3uZn7QOcCmwuDg-----END PRIVATE KEY-----", 21 | "signedCertPEM": "-----BEGIN CERTIFICATE-----MIIB8TCCAZegAwIBAgIUasxwoRvBrGrdyg9+HtdJ3brpcuMwCgYIKoZIzj0EAwIwfzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAKBgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTcwMTE5MTk1NjAwWhcNMTcxMjE5MDM1NjAwWjAQMQ4wDAYDVQQDEwVhZG1pbjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPHym/0MIKF/AehrshFR/bPsZOYLeTZOXx7sNYD19nhykv292TRkyBBkqjwabrU1JO4cxnzOne5mftA5wKbC4OCjYDBeMA4GA1UdDwEB/wQEAwICBDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQtEfVCvKOzNSiTgpaWzaYVm6eaBzAfBgNVHSMEGDAWgBQXZ0I9qp6CP8TFHZ9bw5nRtZxIEDAKBggqhkjOPQQDAgNIADBFAiEAvGd5YDIBeQZWpP9wEHFmezvSCjrzy8VcvH/7Yuv3vcoCICy5ssNrEHEyWXqBqeKfU/zrPhHsWJFIaJEDQLRQE05l-----END CERTIFICATE-----" 22 | } 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/ca/4d4a772215168b6594c87e82650e438f1f37c303e14b5f9e6f3ee06cc2bb823a_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEIAMJVFaIpzyJViVo/VLSD84gVidcKAvJsllwGwmQlJ6hoAoGCCqGSM49 3 | AwEHoUQDQgAETUmk7oKMKf2OF3GOx67Ppt6BP4/Af4yKdx/LYTYWFHZB1+vcDbEQ 4 | er/7xJR5+gj41B6TQIr218PXSM+192iP1w== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/ca/ordererOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICKTCCAdCgAwIBAgIRALz4qIofOY8ff94YDATVyGIwCgYIKoZIzj0EAwIwZjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC29yZGVyZXJPcmcxMRQwEgYDVQQDEwtvcmRlcmVy 5 | T3JnMTAeFw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGYxCzAJBgNVBAYT 6 | AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv 7 | MRQwEgYDVQQKEwtvcmRlcmVyT3JnMTEUMBIGA1UEAxMLb3JkZXJlck9yZzEwWTAT 8 | BgcqhkjOPQIBBggqhkjOPQMBBwNCAARNSaTugowp/Y4XcY7Hrs+m3oE/j8B/jIp3 9 | H8thNhYUdkHX69wNsRB6v/vElHn6CPjUHpNAivbXw9dIz7X3aI/Xo18wXTAOBgNV 10 | HQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkG 11 | A1UdDgQiBCBNSnciFRaLZZTIfoJlDkOPHzfDA+FLX55vPuBswruCOjAKBggqhkjO 12 | PQQDAgNHADBEAiBa6k7Cax+McCHy61Jma1vLuFZswBbnsC6DqbveiKdUoAIgeyAf 13 | HzWxMoVrLfPFwF75PqCjae7xnYq+RWlsHZlMGFU= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/msp/admincerts/ordererOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICKTCCAdCgAwIBAgIRALz4qIofOY8ff94YDATVyGIwCgYIKoZIzj0EAwIwZjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC29yZGVyZXJPcmcxMRQwEgYDVQQDEwtvcmRlcmVy 5 | T3JnMTAeFw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGYxCzAJBgNVBAYT 6 | AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv 7 | MRQwEgYDVQQKEwtvcmRlcmVyT3JnMTEUMBIGA1UEAxMLb3JkZXJlck9yZzEwWTAT 8 | BgcqhkjOPQIBBggqhkjOPQMBBwNCAARNSaTugowp/Y4XcY7Hrs+m3oE/j8B/jIp3 9 | H8thNhYUdkHX69wNsRB6v/vElHn6CPjUHpNAivbXw9dIz7X3aI/Xo18wXTAOBgNV 10 | HQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkG 11 | A1UdDgQiBCBNSnciFRaLZZTIfoJlDkOPHzfDA+FLX55vPuBswruCOjAKBggqhkjO 12 | PQQDAgNHADBEAiBa6k7Cax+McCHy61Jma1vLuFZswBbnsC6DqbveiKdUoAIgeyAf 13 | HzWxMoVrLfPFwF75PqCjae7xnYq+RWlsHZlMGFU= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/msp/cacerts/ordererOrg0.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBcjCCARigAwIBAwICA+gwCgYIKoZIzj0EAwIwFjEUMBIGA1UEAwwLb3JkZXJl 3 | ck9yZzAwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjAWMRQwEgYDVQQD 4 | DAtvcmRlcmVyT3JnMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABK8Sv0EA9h06 5 | fmBkUCO+D/b/2INZ2huy+W/HCxSF22c7WGoJbRzQcWtQmW1KqZowUk86RcxVfFqv 6 | jEMFVXzV38SjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFCVakuvq 7 | xEcK8pYMf/Hw8hsexRMTMB8GA1UdIwQYMBaAFCVakuvqxEcK8pYMf/Hw8hsexRMT 8 | MAoGCCqGSM49BAMCA0gAMEUCIQCmXgDSRTyxpSk+PXg0FNlYZ4ijTVwKgLkYVhod 9 | zZPfngIgO4y0p3Fs/gNsJYrroKaaVDe955KrPp/O55jYDKAD/oY= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/msp/cacerts/ordererOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICKTCCAdCgAwIBAgIRALz4qIofOY8ff94YDATVyGIwCgYIKoZIzj0EAwIwZjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC29yZGVyZXJPcmcxMRQwEgYDVQQDEwtvcmRlcmVy 5 | T3JnMTAeFw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGYxCzAJBgNVBAYT 6 | AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv 7 | MRQwEgYDVQQKEwtvcmRlcmVyT3JnMTEUMBIGA1UEAxMLb3JkZXJlck9yZzEwWTAT 8 | BgcqhkjOPQIBBggqhkjOPQMBBwNCAARNSaTugowp/Y4XcY7Hrs+m3oE/j8B/jIp3 9 | H8thNhYUdkHX69wNsRB6v/vElHn6CPjUHpNAivbXw9dIz7X3aI/Xo18wXTAOBgNV 10 | HQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkG 11 | A1UdDgQiBCBNSnciFRaLZZTIfoJlDkOPHzfDA+FLX55vPuBswruCOjAKBggqhkjO 12 | PQQDAgNHADBEAiBa6k7Cax+McCHy61Jma1vLuFZswBbnsC6DqbveiKdUoAIgeyAf 13 | HzWxMoVrLfPFwF75PqCjae7xnYq+RWlsHZlMGFU= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/msp/cacerts/peerOrg0.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzAwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKJfDc/CcaiHRipTG2AB 5 | K5fA0LO9SOlbtC9bZcjLo/xsL157p+3QB3UVF3gt7nkwgMs/ul3FhSEFTk2EVNlF 6 | 1QCjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFQzuQR1RZP/Qn/B 7 | NDtGSa8n4eN/MB8GA1UdIwQYMBaAFFQzuQR1RZP/Qn/BNDtGSa8n4eN/MAoGCCqG 8 | SM49BAMCA0gAMEUCIAuG+/Fy3x9JXAD1/rFsu3ZpCKbXiXZLGF7P6Gma8is5AiEA 9 | pSQpRcdukxe4zvcfRmNBjMbNLWCoWlHSQA2jD678QGE= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/msp/cacerts/peerOrg1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzEwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2S+UvyFgFZYL6qcrKo 5 | zy72Nkc/RQVzg1VfwC3X7QcnHEVBuCzba1nxdDVE8XPnhmKBWLKh0adn6GKUZpyf 6 | mbKjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAQlMVsXlKGMEWPf 7 | KMMM6QVASnlPMB8GA1UdIwQYMBaAFAQlMVsXlKGMEWPfKMMM6QVASnlPMAoGCCqG 8 | SM49BAMCA0gAMEUCIHr4AD6Xx3R6zFCsveIMnWao9Us88/0uGHoT4ELmMhA1AiEA 9 | yzfXU5qHp3xBJ1BrKOGi71UmQZVwWfO26INhxcfpCAg= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/msp/cacerts/peerOrg2.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzIwHhcNMTcwMjIwMTkwNjExWhcNMTgwMjIwMTkwNjExWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH3IweQK1AJdcV3FF27a 5 | gNKhy13Nz2OguzsmUbW85/7pReenAWzs89rEApHXoJqUtNzdZfaLkcq32E1Ilk3N 6 | oN2jVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFEhOilIyGA53r9Zo 7 | O5GQP0RSZcQ1MB8GA1UdIwQYMBaAFEhOilIyGA53r9ZoO5GQP0RSZcQ1MAoGCCqG 8 | SM49BAMCA0gAMEUCIQD+/5z68ewJarixMgYrg/MwyTMwX7ikCaCgU5TN2MU1PQIg 9 | Qe+klrq6COxsmrctClV64Wj4zhGTOhaZG1yN24OXukQ= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/msp/signcerts/ordererOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICKTCCAdCgAwIBAgIRALz4qIofOY8ff94YDATVyGIwCgYIKoZIzj0EAwIwZjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC29yZGVyZXJPcmcxMRQwEgYDVQQDEwtvcmRlcmVy 5 | T3JnMTAeFw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGYxCzAJBgNVBAYT 6 | AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv 7 | MRQwEgYDVQQKEwtvcmRlcmVyT3JnMTEUMBIGA1UEAxMLb3JkZXJlck9yZzEwWTAT 8 | BgcqhkjOPQIBBggqhkjOPQMBBwNCAARNSaTugowp/Y4XcY7Hrs+m3oE/j8B/jIp3 9 | H8thNhYUdkHX69wNsRB6v/vElHn6CPjUHpNAivbXw9dIz7X3aI/Xo18wXTAOBgNV 10 | HQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkG 11 | A1UdDgQiBCBNSnciFRaLZZTIfoJlDkOPHzfDA+FLX55vPuBswruCOjAKBggqhkjO 12 | PQQDAgNHADBEAiBa6k7Cax+McCHy61Jma1vLuFZswBbnsC6DqbveiKdUoAIgeyAf 13 | HzWxMoVrLfPFwF75PqCjae7xnYq+RWlsHZlMGFU= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/orderers/ordererOrg1orderer1/admincerts/ordererOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICKTCCAdCgAwIBAgIRALz4qIofOY8ff94YDATVyGIwCgYIKoZIzj0EAwIwZjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC29yZGVyZXJPcmcxMRQwEgYDVQQDEwtvcmRlcmVy 5 | T3JnMTAeFw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGYxCzAJBgNVBAYT 6 | AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv 7 | MRQwEgYDVQQKEwtvcmRlcmVyT3JnMTEUMBIGA1UEAxMLb3JkZXJlck9yZzEwWTAT 8 | BgcqhkjOPQIBBggqhkjOPQMBBwNCAARNSaTugowp/Y4XcY7Hrs+m3oE/j8B/jIp3 9 | H8thNhYUdkHX69wNsRB6v/vElHn6CPjUHpNAivbXw9dIz7X3aI/Xo18wXTAOBgNV 10 | HQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkG 11 | A1UdDgQiBCBNSnciFRaLZZTIfoJlDkOPHzfDA+FLX55vPuBswruCOjAKBggqhkjO 12 | PQQDAgNHADBEAiBa6k7Cax+McCHy61Jma1vLuFZswBbnsC6DqbveiKdUoAIgeyAf 13 | HzWxMoVrLfPFwF75PqCjae7xnYq+RWlsHZlMGFU= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/orderers/ordererOrg1orderer1/cacerts/ordererOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICKTCCAdCgAwIBAgIRALz4qIofOY8ff94YDATVyGIwCgYIKoZIzj0EAwIwZjEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xFDASBgNVBAoTC29yZGVyZXJPcmcxMRQwEgYDVQQDEwtvcmRlcmVy 5 | T3JnMTAeFw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGYxCzAJBgNVBAYT 6 | AlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2Nv 7 | MRQwEgYDVQQKEwtvcmRlcmVyT3JnMTEUMBIGA1UEAxMLb3JkZXJlck9yZzEwWTAT 8 | BgcqhkjOPQIBBggqhkjOPQMBBwNCAARNSaTugowp/Y4XcY7Hrs+m3oE/j8B/jIp3 9 | H8thNhYUdkHX69wNsRB6v/vElHn6CPjUHpNAivbXw9dIz7X3aI/Xo18wXTAOBgNV 10 | HQ8BAf8EBAMCAaYwDwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkG 11 | A1UdDgQiBCBNSnciFRaLZZTIfoJlDkOPHzfDA+FLX55vPuBswruCOjAKBggqhkjO 12 | PQQDAgNHADBEAiBa6k7Cax+McCHy61Jma1vLuFZswBbnsC6DqbveiKdUoAIgeyAf 13 | HzWxMoVrLfPFwF75PqCjae7xnYq+RWlsHZlMGFU= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/orderers/ordererOrg1orderer1/keystore/9707908924f92bbaa5c8a6961c260dc4992ad2fd7043cccf3f3948ffbea989e1_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEIO0ReZyfrYE1gpMCEp6xU+KK2rmA8oxwB+oMOt0H1ewtoAoGCCqGSM49 3 | AwEHoUQDQgAEqU74c/nK+RcqBb9RRMeBr1RrD7L8EBkmGjDza+CmsdHmIzQfbRYe 4 | /0erI/KbGx0DvN+sE3QDNbReQUp2aUjaRg== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/ordererOrganizations/ordererOrg1/orderers/ordererOrg1orderer1/signcerts/ordererOrg1orderer1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIQZKA22ytt3J3VxFVLHM5UBzAKBggqhkjOPQQDAjBmMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzEUMBIGA1UEChMLb3JkZXJlck9yZzExFDASBgNVBAMTC29yZGVyZXJP 5 | cmcxMB4XDTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowWDELMAkGA1UEBhMC 6 | VVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28x 7 | HDAaBgNVBAMTE29yZGVyZXJPcmcxb3JkZXJlcjEwWTATBgcqhkjOPQIBBggqhkjO 8 | PQMBBwNCAASpTvhz+cr5FyoFv1FEx4GvVGsPsvwQGSYaMPNr4Kax0eYjNB9tFh7/ 9 | R6sj8psbHQO836wTdAM1tF5BSnZpSNpGo2IwYDAOBgNVHQ8BAf8EBAMCBaAwEwYD 10 | VR0lBAwwCgYIKwYBBQUHAwEwDAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCBNSnci 11 | FRaLZZTIfoJlDkOPHzfDA+FLX55vPuBswruCOjAKBggqhkjOPQQDAgNHADBEAiA0 12 | YjwUHXbfNmEYutDdaCc7tOrSaqMUksGpqkFO3dSi5wIgLCPJKjaDYIL5qtR+uCSP 13 | ybLGGa4Tg4Oy0QgMDyrzudA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/ca/d8a5b3cac1b821f6e4b487ceaf1fd239cdcfc310894150908b90f05e9179556a_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEIN8gOECqqqNMYdWZVhaQ8OAjuaZdbFqOHJ3zQyzPIl5DoAoGCCqGSM49 3 | AwEHoUQDQgAE140SbgwoL+7Mr6WTFcXmvhoanwZqX2/dD0QZcmw2TvMKcvUcPUbE 4 | OPD0VzmA0GC9fUJwWdBhXdVegk6Mw6xxjg== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/ca/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/msp/admincerts/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/msp/cacerts/peerOrg0.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzAwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKJfDc/CcaiHRipTG2AB 5 | K5fA0LO9SOlbtC9bZcjLo/xsL157p+3QB3UVF3gt7nkwgMs/ul3FhSEFTk2EVNlF 6 | 1QCjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFQzuQR1RZP/Qn/B 7 | NDtGSa8n4eN/MB8GA1UdIwQYMBaAFFQzuQR1RZP/Qn/BNDtGSa8n4eN/MAoGCCqG 8 | SM49BAMCA0gAMEUCIAuG+/Fy3x9JXAD1/rFsu3ZpCKbXiXZLGF7P6Gma8is5AiEA 9 | pSQpRcdukxe4zvcfRmNBjMbNLWCoWlHSQA2jD678QGE= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/msp/cacerts/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/msp/signcerts/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer1/admincerts/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer1/cacerts/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer1/keystore/5e67f35124df6a9124bf3659365b8476af4090f73c82c9b626efc15f12739d5d_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEICKPEUyZLQFfJwgXQ9dDNnsLdYDSBSUAAGzc//SuMkyzoAoGCCqGSM49 3 | AwEHoUQDQgAEtITvAvKYfj4hZGIpHVQCv8wndnJMW+puW0zqueFbVke8G3T7rvXY 4 | yAk2kTk1Jn3qABxetKJf2f6Xp0fxunIaig== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer1/signcerts/peerOrg1Peer1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICEjCCAbigAwIBAgIQPjb63mDL4e062MPjtcA1CDAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowUjELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xFjAUBgNV 7 | BAMTDXBlZXJPcmcxUGVlcjEwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS0hO8C 8 | 8ph+PiFkYikdVAK/zCd2ckxb6m5bTOq54VtWR7wbdPuu9djICTaROTUmfeoAHF60 9 | ol/Z/penR/G6chqKo2IwYDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB 10 | BQUHAwEwDAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCDYpbPKwbgh9uS0h86vH9I5 11 | zc/DEIlBUJCLkPBekXlVajAKBggqhkjOPQQDAgNIADBFAiEAmGS3LTaqCkWV+myl 12 | lhg9ovtLJABuxQLnajMJYQOXURgCIHLVNrDbEF0KpEmFwXIBYMFdsKGRAF0kC43M 13 | bpq87UJq 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer2/admincerts/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer2/cacerts/peerOrg1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcOgAwIBAgIQMnFCpjSdv8WBC9VnEvJ4JTAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzExETAPBgNVBAMTCHBlZXJPcmcxMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowYDELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNV 7 | BAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTBZMBMGByqGSM49AgEGCCqG 8 | SM49AwEHA0IABNeNEm4MKC/uzK+lkxXF5r4aGp8Gal9v3Q9EGXJsNk7zCnL1HD1G 9 | xDjw9Fc5gNBgvX1CcFnQYV3VXoJOjMOscY6jXzBdMA4GA1UdDwEB/wQEAwIBpjAP 10 | BgNVHSUECDAGBgRVHSUAMA8GA1UdEwEB/wQFMAMBAf8wKQYDVR0OBCIEINils8rB 11 | uCH25LSHzq8f0jnNz8MQiUFQkIuQ8F6ReVVqMAoGCCqGSM49BAMCA0gAMEUCIQC0 12 | dL7pz5np3hoAaE41n/0c0Tjjs6zVk+zxysz3u9exKwIgBnhrJFK1rV13VUz+W8sp 13 | 8lrz5ZETok8lPoisXwRIe/E= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer2/keystore/707c2b3c02ddd36a6c4a17771769b54a3dc9066e05be1e76582cabd65c110e4e_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEII0oxsh+lV49AVCyYfqXr3QfvQ19rJl7VN/8g6nLCiCroAoGCCqGSM49 3 | AwEHoUQDQgAEZibYpTur7h/LIkZkV1yr11mP0M4Hts+ARrky3r97WihvF0+TgxUI 4 | UrFjEe4Yv+SIlz5+IE6BlNemaF67nUeD+Q== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg1/peers/peerOrg1Peer2/signcerts/peerOrg1Peer2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICEjCCAbmgAwIBAgIRANgd5gwHKxNyqxptv40oPEkwCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcxMREwDwYDVQQDEwhwZWVyT3JnMTAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMFIxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRYwFAYD 7 | VQQDEw1wZWVyT3JnMVBlZXIyMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEZibY 8 | pTur7h/LIkZkV1yr11mP0M4Hts+ARrky3r97WihvF0+TgxUIUrFjEe4Yv+SIlz5+ 9 | IE6BlNemaF67nUeD+aNiMGAwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsG 10 | AQUFBwMBMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAg2KWzysG4IfbktIfOrx/S 11 | Oc3PwxCJQVCQi5DwXpF5VWowCgYIKoZIzj0EAwIDRwAwRAIgJ6zmGTYWeAjaa8zV 12 | I73t3Zop/mF790NwkH2SSlt4SAMCIG9yeH7K8YdD8Ao3kBiARyjI+QpiWqi1K8qS 13 | b6EWptg2 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/ca/96bdb57f4efbdcf201a269899eb47e2a73fbb728ae14d47d0d5afb75ddea71de_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEIBxAH3LK1l03gaOwzNhPWfxBVZDQvWknmViEyTXSwFMqoAoGCCqGSM49 3 | AwEHoUQDQgAEK5qTfIT6ai4QxQZcgRjjwNYbT7HK59PdUBKqbt/wT4VR2dCvIC2a 4 | bxf5A7CtuLgKKL8xMsseh/0WD5dSiIBB1g== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/ca/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/msp/admincerts/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/msp/cacerts/peerOrg1.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzEwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2S+UvyFgFZYL6qcrKo 5 | zy72Nkc/RQVzg1VfwC3X7QcnHEVBuCzba1nxdDVE8XPnhmKBWLKh0adn6GKUZpyf 6 | mbKjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAQlMVsXlKGMEWPf 7 | KMMM6QVASnlPMB8GA1UdIwQYMBaAFAQlMVsXlKGMEWPfKMMM6QVASnlPMAoGCCqG 8 | SM49BAMCA0gAMEUCIHr4AD6Xx3R6zFCsveIMnWao9Us88/0uGHoT4ELmMhA1AiEA 9 | yzfXU5qHp3xBJ1BrKOGi71UmQZVwWfO26INhxcfpCAg= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/msp/cacerts/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/msp/signcerts/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer1/admincerts/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer1/cacerts/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer1/keystore/26d8ff264dd3956922ff23e2fa2bca59817df114630f95adce343388f9fffe7a_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEII4qcK71QQn3MUVdx84AsHaFOZJ2Coyz5uaFhBjPQWkioAoGCCqGSM49 3 | AwEHoUQDQgAE4uF+T15H10YdHK8ZDAP9T6zJuPHPqBCwZAXfU3dkR06uW+JEn1f2 4 | 8VWYRgtcf8oYnXcgYCTcWwdzckChOyBkZw== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer1/signcerts/peerOrg2Peer1-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICEjCCAbmgAwIBAgIRANUoapuJGF/Om0hyk45bQiQwCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMFIxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMRYwFAYD 7 | VQQDEw1wZWVyT3JnMlBlZXIxMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE4uF+ 8 | T15H10YdHK8ZDAP9T6zJuPHPqBCwZAXfU3dkR06uW+JEn1f28VWYRgtcf8oYnXcg 9 | YCTcWwdzckChOyBkZ6NiMGAwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsG 10 | AQUFBwMBMAwGA1UdEwEB/wQCMAAwKwYDVR0jBCQwIoAglr21f0773PIBommJnrR+ 11 | KnP7tyiuFNR9DVr7dd3qcd4wCgYIKoZIzj0EAwIDRwAwRAIgA0mw/fZ5YBX73LFO 12 | RjKXfWVXfXdEoq8mgWa6ir11QloCIB9mpenM34EsuH9AZR83cIMZZC2HiQbfFNAa 13 | 5zKksj3o 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer2/admincerts/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer2/cacerts/peerOrg2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICHTCCAcSgAwIBAgIRALakYEdO1ZkArcOQHj85ay8wCgYIKoZIzj0EAwIwYDEL 3 | MAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG 4 | cmFuY2lzY28xETAPBgNVBAoTCHBlZXJPcmcyMREwDwYDVQQDEwhwZWVyT3JnMjAe 5 | Fw0xNzAzMDExNzM2NDFaFw0yNzAyMjcxNzM2NDFaMGAxCzAJBgNVBAYTAlVTMRMw 6 | EQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1TYW4gRnJhbmNpc2NvMREwDwYD 7 | VQQKEwhwZWVyT3JnMjERMA8GA1UEAxMIcGVlck9yZzIwWTATBgcqhkjOPQIBBggq 8 | hkjOPQMBBwNCAAQrmpN8hPpqLhDFBlyBGOPA1htPscrn091QEqpu3/BPhVHZ0K8g 9 | LZpvF/kDsK24uAoovzEyyx6H/RYPl1KIgEHWo18wXTAOBgNVHQ8BAf8EBAMCAaYw 10 | DwYDVR0lBAgwBgYEVR0lADAPBgNVHRMBAf8EBTADAQH/MCkGA1UdDgQiBCCWvbV/ 11 | Tvvc8gGiaYmetH4qc/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiAe 12 | 1/wXZht2Gg6KVxf5lPdAOeoBWZzG0/TQN1KxTH7/QwIgMdJoWxbq2EzihNJlA/U0 13 | 3+aFesZjYUGvuvOA0ijYFgA= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer2/keystore/cc80356f4275390b2090bf0a62b26d3c5e9420c022d196267990eed7014bfcec_sk: -------------------------------------------------------------------------------- 1 | -----BEGIN ECDSA PRIVATE KEY----- 2 | MHcCAQEEILzFjZgOVuJ4nMdNxJqiLQr3RVEUwykkx4m7xb+AnLKsoAoGCCqGSM49 3 | AwEHoUQDQgAEW+vZBJb2GMwSQt76Sreg1lUClTUaJKgJoEI73PsPktRixgQxnAtG 4 | L3eB2o7Hzt3AEu2BGEjkR7H085aeAVlT0A== 5 | -----END ECDSA PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/crypto-config/peerOrganizations/peerOrg2/peers/peerOrg2Peer2/signcerts/peerOrg2Peer2-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICETCCAbigAwIBAgIQShO6B/mOsuBkRKow0G8U8TAKBggqhkjOPQQDAjBgMQsw 3 | CQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZy 4 | YW5jaXNjbzERMA8GA1UEChMIcGVlck9yZzIxETAPBgNVBAMTCHBlZXJPcmcyMB4X 5 | DTE3MDMwMTE3MzY0MVoXDTI3MDIyNzE3MzY0MVowUjELMAkGA1UEBhMCVVMxEzAR 6 | BgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xFjAUBgNV 7 | BAMTDXBlZXJPcmcyUGVlcjIwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARb69kE 8 | lvYYzBJC3vpKt6DWVQKVNRokqAmgQjvc+w+S1GLGBDGcC0Yvd4HajsfO3cAS7YEY 9 | SORHsfTzlp4BWVPQo2IwYDAOBgNVHQ8BAf8EBAMCBaAwEwYDVR0lBAwwCgYIKwYB 10 | BQUHAwEwDAYDVR0TAQH/BAIwADArBgNVHSMEJDAigCCWvbV/Tvvc8gGiaYmetH4q 11 | c/u3KK4U1H0NWvt13epx3jAKBggqhkjOPQQDAgNHADBEAiB6z75qAEH6/RMAJ8zi 12 | BptJ22zK+l7zPUkzI43jhEU8JAIgUJRBA9/IEkpMPCCmrFlBKaaOKk3LxUovAO01 13 | yuHGA5I= 14 | -----END CERTIFICATE----- 15 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/mychannel.tx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/fabric-sdk-node/test/fixtures/channel/mychannel.tx -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/channel/twoorgs.orderer.block: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/fabric-sdk-node/test/fixtures/channel/twoorgs.orderer.block -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/cloudant.json: -------------------------------------------------------------------------------- 1 | { 2 | "cloudant-username" : "1421acc7-6faa-491a-8e10-951e2e190684-bluemix", 3 | "cloudant-password" : "7179ef7a72602189243deeabe207889bde1c2fada173ae1022b5592e5a79dacc", 4 | "cloudant-bluemix" : "@1421acc7-6faa-491a-8e10-951e2e190684-bluemix.cloudant.com", 5 | "key-value-store" : "fabric-client/lib/impl/CouchDBKeyValueStore.js" 6 | } -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/couchdb.json: -------------------------------------------------------------------------------- 1 | { 2 | "couchdb-ip-addr" : "http://localhost", 3 | "couchdb-port" : "5984", 4 | "key-value-store" : "fabric-client/lib/impl/CouchDBKeyValueStore.js" 5 | } 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/docker-compose-marbles.yml: -------------------------------------------------------------------------------- 1 | orderer: 2 | image: hyperledger/fabric-orderer 3 | environment: 4 | - ORDERER_GENERAL_LEDGERTYPE=ram 5 | - ORDERER_GENERAL_BATCHTIMEOUT=10s 6 | - ORDERER_GENERAL_MAXMESSAGECOUNT=2 7 | - ORDERER_GENERAL_MAXWINDOWSIZE=1000 8 | - ORDERER_GENERAL_ORDERERTYPE=solo 9 | - ORDERER_GENERAL_LISTENADDRESS=0.0.0.0 10 | - ORDERER_RAMLEDGER_HISTORY_SIZE=100 11 | working_dir: /opt/gopath/src/github.com/hyperledger/fabric/orderer 12 | command: orderer 13 | ports: 14 | - 7050:7050 15 | 16 | couchdb0: 17 | image: klaemo/couchdb:2.0.0 18 | command: tini -- /docker-entrypoint.sh /opt/couchdb/bin/couchdb 19 | ports: 20 | - 5984:5984 21 | 22 | couchdb1: 23 | image: klaemo/couchdb:2.0.0 24 | command: tini -- /docker-entrypoint.sh /opt/couchdb/bin/couchdb 25 | 26 | vp0: 27 | image: hyperledger/fabric-peer 28 | environment: 29 | - CORE_PEER_ADDRESSAUTODETECT=true 30 | - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock 31 | - CORE_PEER_NETWORKID=${CORE_PEER_ID} 32 | - CORE_NEXT=true 33 | - CORE_PEER_ENDORSER_ENABLED=true 34 | - CORE_PEER_COMMITTER_ENABLED=true 35 | - CORE_PEER_ID=vp0 36 | - CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 37 | - CORE_PEER_GOSSIP_ORGLEADER=true 38 | - CORE_LEDGER_STATE_STATEDATABASE=CouchDB 39 | - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb0:5984 40 | volumes: 41 | - /var/run/:/host/var/run/ 42 | ports: 43 | - 7051:7051 44 | links: 45 | - orderer 46 | - couchdb0 47 | 48 | vp1: 49 | image: hyperledger/fabric-peer 50 | environment: 51 | - CORE_PEER_ADDRESSAUTODETECT=true 52 | - CORE_VM_ENDPOINT=unix:///host/var/run/docker.sock 53 | - CORE_PEER_NETWORKID=${CORE_PEER_ID} 54 | - CORE_NEXT=true 55 | - CORE_PEER_ENDORSER_ENABLED=true 56 | - CORE_PEER_COMMITTER_ENABLED=true 57 | - CORE_PEER_ID=vp1 58 | - CORE_PEER_GOSSIP_BOOTSTRAP=vp0:7051 59 | - CORE_PEER_GOSSIP_ORGLEADER=false 60 | - CORE_LEDGER_STATE_STATEDATABASE=CouchDB 61 | - CORE_LEDGER_STATE_COUCHDBCONFIG_COUCHDBADDRESS=couchdb1:5984 62 | volumes: 63 | - /var/run/:/host/var/run/ 64 | ports: 65 | - 7056:7051 66 | links: 67 | - vp0 68 | - couchdb1 69 | 70 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/fabricca/ecert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIB8zCCAZqgAwIBAgIUWvyWRhnNjkgI240frgUO1ajr/qMwCgYIKoZIzj0EAwIw 3 | YzELMAkGA1UEBhMCVVMxFzAVBgNVBAgTDk5vcnRoIENhcm9saW5hMRAwDgYDVQQH 4 | EwdSYWxlaWdoMRswGQYDVQQKExJIeXBlcmxlZGdlciBGYWJyaWMxDDAKBgNVBAsT 5 | A0NPUDAeFw0xNjExMjcxMjI0MDBaFw0xNzExMjcxMjI0MDBaMBAxDjAMBgNVBAMT 6 | BWFkbWluMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEnrhMQCKVUaJVZywJtkeb 7 | dg4HHoYz7lb6knfglfX3R7OuX504snLlgCsSL8FgjMEMWINVQRA/NtT9kec2j5I7 8 | OaN/MH0wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF 9 | BQcDAjAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBSMVEXbf7pQjqpf2G/bW6S6DTHD 10 | HjAfBgNVHSMEGDAWgBTg2/DcHUvWopkCVxLow6n63y/9QjAKBggqhkjOPQQDAgNH 11 | ADBEAiBH2XyV4MxNb11tyljqo+4iF53GjF26w+JBxHg5T/oOxwIgSUpFO4z0Zd0O 12 | b/f7YhvdYtAhJqqJDv5u21oZrugjXIw= 13 | -----END CERTIFICATE----- 14 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/fabricca/enroll-csr.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE REQUEST----- 2 | MIHQMHUCAQAwEzERMA8GA1UEAwwIdGVzdFVzZXIwWTATBgcqhkjOPQIBBggqhkjO 3 | PQMBBwNCAASSduelwzsHgCoVVJtMqaEbqkDVXQZiE68ffFc2OMnljKlx0/ndzB2H 4 | jWU9GhEG+zmjMBcARr6b/xas96wZeQ7LoAAwDAYIKoZIzj0EAwIFAANJADBGAiEA 5 | 8ODGpt+sqGIMj517SFkNtpMMAlcharmLFsDMWhxlcioCIQDfSU0pOkaEEn0/pWOU 6 | LxB2qFcakcohWyEFQHHDNJVFRw== 7 | -----END CERTIFICATE REQUEST----- -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/local.json: -------------------------------------------------------------------------------- 1 | { 2 | "request-timeout" : 7000, 3 | "tcert-batch-size" : 30, 4 | "ssl-target-name-override" : "localca", 5 | "default-authority" : "localca", 6 | "test-1": "local", 7 | "test-2": "local", 8 | "test-3": "local", 9 | "test-4": "local", 10 | "test-5": "local", 11 | "test-6": "local" 12 | } 13 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/msp/local/keystore/admin.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN PRIVATE KEY----- 2 | MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg2HxfPVxvwHYM5X8o 3 | /tEoDZ54Rl9uW13U6RElpnFOCruhRANCAATx8pv9DCChfwHoa7IRUf2z7GTmC3k2 4 | Tl8e7DWA9fZ4cpL9vdk0ZMgQZKo8Gm61NSTuHMZ8zp3uZn7QOcCmwuDg 5 | -----END PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/msp/local/signcerts/admin.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIB8TCCAZegAwIBAgIUasxwoRvBrGrdyg9+HtdJ3brpcuMwCgYIKoZIzj0EAwIw 3 | fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh 4 | biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK 5 | BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTcwMTE5MTk1NjAw 6 | WhcNMTcxMjE5MDM1NjAwWjAQMQ4wDAYDVQQDEwVhZG1pbjBZMBMGByqGSM49AgEG 7 | CCqGSM49AwEHA0IABPHym/0MIKF/AehrshFR/bPsZOYLeTZOXx7sNYD19nhykv29 8 | 2TRkyBBkqjwabrU1JO4cxnzOne5mftA5wKbC4OCjYDBeMA4GA1UdDwEB/wQEAwIC 9 | BDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQtEfVCvKOzNSiTgpaWzaYVm6eaBzAf 10 | BgNVHSMEGDAWgBQXZ0I9qp6CP8TFHZ9bw5nRtZxIEDAKBggqhkjOPQQDAgNIADBF 11 | AiEAvGd5YDIBeQZWpP9wEHFmezvSCjrzy8VcvH/7Yuv3vcoCICy5ssNrEHEyWXqB 12 | qeKfU/zrPhHsWJFIaJEDQLRQE05l 13 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/msp/org0/admincerts/admin.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBwTCCAWegAwIBAgIUS34H+bjGij1WZvTbc63YLlPEMCUwCgYIKoZIzj0EAwIw 3 | TzELMAkGA1UEBhMCVVMxFDASBgNVBAoTC0h5cGVybGVkZ2VyMSowKAYDVQQDEyFU 4 | cmFuc2FjdGlvbiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTcwMjEwMTgyNzAw 5 | WhcNMTgwMTEwMDIyNzAwWjAQMQ4wDAYDVQQDEwVhZG1pbjBZMBMGByqGSM49AgEG 6 | CCqGSM49AwEHA0IABGtQi+dqAwv4pReiz/4XR2Zi8VjyjsRqKvHNufWwQYQ9cQ/L 7 | r9LBorlbRfcv00JsFRJb3DU8edNSCXGgFMnPMmujYDBeMA4GA1UdDwEB/wQEAwIC 8 | BDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBQVz3t/i3/zn1XifsVTynRM7BVnoDAf 9 | BgNVHSMEGDAWgBSRULWdqUi+VpEMgeU8F/q9FGCZjzAKBggqhkjOPQQDAgNIADBF 10 | AiEAjb/mObUaf04qgyQHMsawn6ddPBeBqT3HM1XsuEsviSwCICz6kxz4tzZLxQPk 11 | risyGwYi7oazS3o8IEvIAAQH6m2B 12 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/msp/org0/cacerts/org_ca.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIICQTCCAcagAwIBAgIUQel8iXQdKaVJJABbwbekcZj37PQwCgYIKoZIzj0EAwMw 3 | TzELMAkGA1UEBhMCVVMxFDASBgNVBAoTC0h5cGVybGVkZ2VyMSowKAYDVQQDEyFU 4 | cmFuc2FjdGlvbiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTcwMjEwMTgyMDAw 5 | WhcNMjIwMjA5MTgyMDAwWjBPMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLSHlwZXJs 6 | ZWRnZXIxKjAoBgNVBAMTIVRyYW5zYWN0aW9uIENlcnRpZmljYXRlIEF1dGhvcml0 7 | eTB2MBAGByqGSM49AgEGBSuBBAAiA2IABD5gsruQ5klLZVECSW1y4e1VdgrpFNEa 8 | yWCgA6d9uvx96/C6fD4cXgvlM4V9BXkbeHTsQjtO0vd6Aimi0vhdOu2tzKVAwSEq 9 | +YDpaVOuZMYlAuaLdpU9lee9gjbFGyXQOqNjMGEwDgYDVR0PAQH/BAQDAgEGMA8G 10 | A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJFQtZ2pSL5WkQyB5TwX+r0UYJmPMB8G 11 | A1UdIwQYMBaAFJFQtZ2pSL5WkQyB5TwX+r0UYJmPMAoGCCqGSM49BAMDA2kAMGYC 12 | MQDxtLRjPNMF7xPMC/tNzr2hdmGhREw6xw0fU54IudNE8wn+qYbH2bMezdZz1vSd 13 | /kYCMQDuG6NCaBXYzltRh5mslAyanYw/xKvT8S3SNNB1av8kGB2HO7TKleqm6OC9 14 | 9lgKK4w= 15 | -----END CERTIFICATE----- 16 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/msp/org1/admincerts/admin.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBwTCCAWegAwIBAgIUJfcDpoSSnoUrWjqHunlel/F7It8wCgYIKoZIzj0EAwIw 3 | TzELMAkGA1UEBhMCVUsxFDASBgNVBAoTC0h5cGVybGVkZ2VyMSowKAYDVQQDEyFU 4 | cmFuc2FjdGlvbiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTcwMjEwMTgzNTAw 5 | WhcNMTgwMTEwMDIzNTAwWjAQMQ4wDAYDVQQDEwVhZG1pbjBZMBMGByqGSM49AgEG 6 | CCqGSM49AwEHA0IABE8V7+p+gdNZtiGPZnJ0DNCLsXOEiMa1xj2eGo8geyVjXt3T 7 | Qjl5nCXyu4Hp6luchZnynEKH9BskVWf9bCAD5qijYDBeMA4GA1UdDwEB/wQEAwIC 8 | BDAMBgNVHRMBAf8EAjAAMB0GA1UdDgQWBBRHwo2hSZl2ZsXfihAsK+yehg5jTDAf 9 | BgNVHSMEGDAWgBTVtYvw7nizPfbI47cMyKy87ib4XTAKBggqhkjOPQQDAgNIADBF 10 | AiEA7WxrA2jFX0zfrobmSlC2sbLpicNxn1UrNS/cXVNXM/sCIGmZCysSDQ0tdKqY 11 | M2ECTOmfRcE1kEgNX2JbajR5F/12 12 | -----END CERTIFICATE----- -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/msp/org1/cacerts/org_ca.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBDjCBtQICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9yZzEwHhcN 3 | MTcwMTI0MTk1NTQ1WhcNMTgwMTI0MTk1NTQ1WjATMREwDwYDVQQDDAhwZWVyT3Jn 4 | MTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABPi8WnwoK2C3n+vDktN1jPan9Ac8 5 | TeL9qQynMFZ15fdD8eOlhi2pk1koX8dfWfJuG3FU1cCvBM8YCNbqaNFYU2YwCgYI 6 | KoZIzj0EAwIDSAAwRQIgaSOImd20mKZeddceGMrgtBU12mE1oQl3zt6xyJcV5PQC 7 | IQCXmOyvtyRqiVop3BOVXAbnFvWTHjNs9UFRk7Hpc2vWAA== 8 | -----END CERTIFICATE----- 9 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/src/github.com/events_cc/Dockerfile: -------------------------------------------------------------------------------- 1 | from hyperledger/fabric-ccenv 2 | COPY . $GOPATH/src/build-chaincode/ 3 | WORKDIR $GOPATH 4 | 5 | RUN go install build-chaincode && mv $GOPATH/bin/build-chaincode $GOPATH/bin/events_unit_test -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/src/github.com/events_cc/events_cc.go: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright London Stock Exchange 2017 All Rights Reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the "License"); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an "AS IS" BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | package main 18 | 19 | import ( 20 | "fmt" 21 | "strconv" 22 | 23 | "github.com/hyperledger/fabric/core/chaincode/shim" 24 | pb "github.com/hyperledger/fabric/protos/peer" 25 | ) 26 | 27 | // EventSender example simple Chaincode implementation 28 | type EventSender struct { 29 | } 30 | 31 | // Init function 32 | func (t *EventSender) Init(stub shim.ChaincodeStubInterface) pb.Response { 33 | err := stub.PutState("noevents", []byte("0")) 34 | if err != nil { 35 | return shim.Error(err.Error()) 36 | } 37 | return shim.Success(nil) 38 | } 39 | 40 | // Invoke function 41 | func (t *EventSender) invoke(stub shim.ChaincodeStubInterface) pb.Response { 42 | _ , args := stub.GetFunctionAndParameters() 43 | if len(args) != 2 { 44 | return shim.Error("Incorrect number of arguments. Expecting 2") 45 | } 46 | b, err := stub.GetState("noevents") 47 | if err != nil { 48 | return shim.Error("Failed to get state") 49 | } 50 | noevts, _ := strconv.Atoi(string(b)) 51 | 52 | tosend := "Event " + string(b) + args[1] 53 | eventName := "evtsender" + args[0] 54 | 55 | err = stub.PutState("noevents", []byte(strconv.Itoa(noevts+1))) 56 | if err != nil { 57 | return shim.Error(err.Error()) 58 | } 59 | 60 | err = stub.SetEvent(eventName, []byte(tosend)) 61 | if err != nil { 62 | return shim.Error(err.Error()) 63 | } 64 | return shim.Success(nil) 65 | } 66 | 67 | // Clear State function 68 | func (t *EventSender) clear(stub shim.ChaincodeStubInterface) pb.Response { 69 | err := stub.PutState("noevents", []byte("0")) 70 | if err != nil { 71 | return shim.Error(err.Error()) 72 | } 73 | return shim.Success(nil) 74 | } 75 | 76 | // Query function 77 | func (t *EventSender) query(stub shim.ChaincodeStubInterface) pb.Response { 78 | b, err := stub.GetState("noevents") 79 | if err != nil { 80 | return shim.Error("Failed to get state") 81 | } 82 | return shim.Success(b) 83 | } 84 | 85 | func (t *EventSender) Invoke(stub shim.ChaincodeStubInterface) pb.Response { 86 | function, args := stub.GetFunctionAndParameters() 87 | 88 | if function != "invoke" { 89 | return shim.Error("Unknown function call") 90 | } 91 | 92 | if args[0] == "invoke" { 93 | return t.invoke(stub) 94 | } else if args[0] == "query" { 95 | return t.query(stub) 96 | } else if args[0] == "clear" { 97 | return t.clear(stub) 98 | } 99 | 100 | return shim.Error("Invalid invoke function name. Expecting \"invoke\" \"query\"") 101 | } 102 | 103 | func main() { 104 | err := shim.Start(new(EventSender)) 105 | if err != nil { 106 | fmt.Printf("Error starting EventSender chaincode: %s", err) 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/orderer/ca-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBcjCCARigAwIBAwICA+gwCgYIKoZIzj0EAwIwFjEUMBIGA1UEAwwLb3JkZXJl 3 | ck9yZzAwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjAWMRQwEgYDVQQD 4 | DAtvcmRlcmVyT3JnMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABK8Sv0EA9h06 5 | fmBkUCO+D/b/2INZ2huy+W/HCxSF22c7WGoJbRzQcWtQmW1KqZowUk86RcxVfFqv 6 | jEMFVXzV38SjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFCVakuvq 7 | xEcK8pYMf/Hw8hsexRMTMB8GA1UdIwQYMBaAFCVakuvqxEcK8pYMf/Hw8hsexRMT 8 | MAoGCCqGSM49BAMCA0gAMEUCIQCmXgDSRTyxpSk+PXg0FNlYZ4ijTVwKgLkYVhod 9 | zZPfngIgO4y0p3Fs/gNsJYrroKaaVDe955KrPp/O55jYDKAD/oY= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/orderer/cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBajCCAQ+gAwIBAwICA+gwCgYIKoZIzj0EAwIwFjEUMBIGA1UEAwwLb3JkZXJl 3 | ck9yZzAwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQD 4 | DAhvcmRlcmVyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABH1h6WeFWnBDgPN5 5 | biXbyzqShGrAZ9ztOu4j03xcrqUIenBQASJ/rmAErmq4kilNyRVnwdZwDcGTrAwP 6 | QfAXkVCjUDBOMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFK01/Qm7YoTpXLXjq18D 7 | +X2pExanMB8GA1UdIwQYMBaAFCVakuvqxEcK8pYMf/Hw8hsexRMTMAoGCCqGSM49 8 | BAMCA0kAMEYCIQDXdRYqrZdTAM6F2JBl/eN3nIHoBa7N3gIQDqdUAris8wIhAP6i 9 | f0CgyBN4nWmw2mT+XtxaB0xxWrhYj/j4agiuQzrd 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/orderer/key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEIJPtBtNKlilpgVZ5FGUBWB2KH3zBtzkBnkrFMmi6W/80oAoGCCqGSM49 3 | AwEHoUQDQgAEfWHpZ4VacEOA83luJdvLOpKEasBn3O067iPTfFyupQh6cFABIn+u 4 | YASuariSKU3JFWfB1nANwZOsDA9B8BeRUA== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer0/ca-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzAwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKJfDc/CcaiHRipTG2AB 5 | K5fA0LO9SOlbtC9bZcjLo/xsL157p+3QB3UVF3gt7nkwgMs/ul3FhSEFTk2EVNlF 6 | 1QCjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFQzuQR1RZP/Qn/B 7 | NDtGSa8n4eN/MB8GA1UdIwQYMBaAFFQzuQR1RZP/Qn/BNDtGSa8n4eN/MAoGCCqG 8 | SM49BAMCA0gAMEUCIAuG+/Fy3x9JXAD1/rFsu3ZpCKbXiXZLGF7P6Gma8is5AiEA 9 | pSQpRcdukxe4zvcfRmNBjMbNLWCoWlHSQA2jD678QGE= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer0/cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBYzCCAQmgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzAwHhcNMTcwMjIwMTkwNjExWhcNMTgwMjIwMTkwNjExWjAQMQ4wDAYDVQQDDAVw 4 | ZWVyMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABEF6dfqjqfbIgZuOR+dgoJMl 5 | /FaUlGI70A/ixmVUY83Yp4YtV3FDBSOPiO5O+s8pHnpbwB1LqhrxAx1Plr0M/UWj 6 | UDBOMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBY2bc84vLEwkX1fSAER2p48jJXw 7 | MB8GA1UdIwQYMBaAFFQzuQR1RZP/Qn/BNDtGSa8n4eN/MAoGCCqGSM49BAMCA0gA 8 | MEUCIQDeDZ71L+OTYcbbqiDNRf0L8OExO59mH1O3xpdwMAM0MgIgXySG4sv9yV31 9 | WcWRFfRFyu7o3T72kqiLZ1nkDuJ8jWI= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer0/key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEIKyhczWGQa7NbV1tq9LkZkvqslzoQ1HaEVwA6FCLOfvioAoGCCqGSM49 3 | AwEHoUQDQgAEQXp1+qOp9siBm45H52CgkyX8VpSUYjvQD+LGZVRjzdinhi1XcUMF 4 | I4+I7k76zykeelvAHUuqGvEDHU+WvQz9RQ== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer1/ca-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzAwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMDBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABKJfDc/CcaiHRipTG2AB 5 | K5fA0LO9SOlbtC9bZcjLo/xsL157p+3QB3UVF3gt7nkwgMs/ul3FhSEFTk2EVNlF 6 | 1QCjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFFQzuQR1RZP/Qn/B 7 | NDtGSa8n4eN/MB8GA1UdIwQYMBaAFFQzuQR1RZP/Qn/BNDtGSa8n4eN/MAoGCCqG 8 | SM49BAMCA0gAMEUCIAuG+/Fy3x9JXAD1/rFsu3ZpCKbXiXZLGF7P6Gma8is5AiEA 9 | pSQpRcdukxe4zvcfRmNBjMbNLWCoWlHSQA2jD678QGE= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer1/cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBYzCCAQmgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzAwHhcNMTcwMjIwMTkwNjExWhcNMTgwMjIwMTkwNjExWjAQMQ4wDAYDVQQDDAVw 4 | ZWVyMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABI9/7z3nMORUeS3rZ+F93ymD 5 | R2jiB6Wm+QSoSz/uQuRavnoksgU6peF5rBMfebk/PfNoVjdR4egCqAHBHIpp7Iuj 6 | UDBOMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFJpxVAXpMAEOHtbNCwvL1m/ku9gt 7 | MB8GA1UdIwQYMBaAFFQzuQR1RZP/Qn/BNDtGSa8n4eN/MAoGCCqGSM49BAMCA0gA 8 | MEUCIQDsQ6lmuLdKmMgnN5+9YjlpCRQEJCoaG3uxRHhrAecZngIgQZlwnvwka+TM 9 | gF/yC3r2MeELK9ocw8c22DAe6x71RT4= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer1/key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEIGke7eS6obPUxqqTr3k4svyI+7H2K8vtauJslox/rNjooAoGCCqGSM49 3 | AwEHoUQDQgAEj3/vPecw5FR5Letn4X3fKYNHaOIHpab5BKhLP+5C5Fq+eiSyBTql 4 | 4XmsEx95uT8982hWN1Hh6AKoAcEcimnsiw== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer2/ca-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzEwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2S+UvyFgFZYL6qcrKo 5 | zy72Nkc/RQVzg1VfwC3X7QcnHEVBuCzba1nxdDVE8XPnhmKBWLKh0adn6GKUZpyf 6 | mbKjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAQlMVsXlKGMEWPf 7 | KMMM6QVASnlPMB8GA1UdIwQYMBaAFAQlMVsXlKGMEWPfKMMM6QVASnlPMAoGCCqG 8 | SM49BAMCA0gAMEUCIHr4AD6Xx3R6zFCsveIMnWao9Us88/0uGHoT4ELmMhA1AiEA 9 | yzfXU5qHp3xBJ1BrKOGi71UmQZVwWfO26INhxcfpCAg= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer2/cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBYzCCAQmgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzEwHhcNMTcwMjIwMTkwNjExWhcNMTgwMjIwMTkwNjExWjAQMQ4wDAYDVQQDDAVw 4 | ZWVyMjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLZyoiEc/0aTctk8THKHtQ8W 5 | F2BAG1vgB6kxT+cUaLnEH2El9NTvRYjHmjq8ozM9+/R2JVucEGZelAIQxKD5pXuj 6 | UDBOMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFDdoFJ6jiClMPOVsNx5akist91so 7 | MB8GA1UdIwQYMBaAFAQlMVsXlKGMEWPfKMMM6QVASnlPMAoGCCqGSM49BAMCA0gA 8 | MEUCIQC7wATZy+O/7UIPzSiMSXNgBKCaT2U55+Y/e0FcHQFSoQIgCyKExrm3gtW0 9 | SAN1VofiAZkr3gYndu9goHZe4wVh9eQ= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer2/key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEICO7+w9YD/MdNiZHXusiWGhHTOOAXks10aJGuITmZ0wkoAoGCCqGSM49 3 | AwEHoUQDQgAEtnKiIRz/RpNy2TxMcoe1DxYXYEAbW+AHqTFP5xRoucQfYSX01O9F 4 | iMeaOryjMz379HYlW5wQZl6UAhDEoPmlew== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer3/ca-cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBbDCCARKgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzEwHhcNMTcwMjIwMTkwNjEwWhcNMTgwMjIwMTkwNjEwWjATMREwDwYDVQQDDAhw 4 | ZWVyT3JnMTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJ2S+UvyFgFZYL6qcrKo 5 | zy72Nkc/RQVzg1VfwC3X7QcnHEVBuCzba1nxdDVE8XPnhmKBWLKh0adn6GKUZpyf 6 | mbKjVjBUMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFAQlMVsXlKGMEWPf 7 | KMMM6QVASnlPMB8GA1UdIwQYMBaAFAQlMVsXlKGMEWPfKMMM6QVASnlPMAoGCCqG 8 | SM49BAMCA0gAMEUCIHr4AD6Xx3R6zFCsveIMnWao9Us88/0uGHoT4ELmMhA1AiEA 9 | yzfXU5qHp3xBJ1BrKOGi71UmQZVwWfO26INhxcfpCAg= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer3/cert.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN CERTIFICATE----- 2 | MIIBYzCCAQmgAwIBAwICA+gwCgYIKoZIzj0EAwIwEzERMA8GA1UEAwwIcGVlck9y 3 | ZzEwHhcNMTcwMjIwMTkwNjExWhcNMTgwMjIwMTkwNjExWjAQMQ4wDAYDVQQDDAVw 4 | ZWVyMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABMvgApKCXYIEY4YgPTgQKrLM 5 | GMdK/1j8WEl2hijED+onVUF/w/oleiSljNOCxdda3u3X0yXqXz/ozQPJL/d4YL+j 6 | UDBOMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOzMeVZK5xYzjaeO2uGvz8B7CQS7 7 | MB8GA1UdIwQYMBaAFAQlMVsXlKGMEWPfKMMM6QVASnlPMAoGCCqGSM49BAMCA0gA 8 | MEUCIQCgKtFodSdXcz2yf9MZB90t1nXYytpGUPMAl0/Gy2/yfQIgAcC1KRtaiclr 9 | 9C9tshhXdYdbpvDruVZrwqjJ4drPHik= 10 | -----END CERTIFICATE----- 11 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/fixtures/tls/peers/peer3/key.pem: -------------------------------------------------------------------------------- 1 | -----BEGIN EC PRIVATE KEY----- 2 | MHcCAQEEIPK7O2ZBw9tXDiVd2OM+riCIHT+uQPynGd0z9fjLSUltoAoGCCqGSM49 3 | AwEHoUQDQgAEy+ACkoJdggRjhiA9OBAqsswYx0r/WPxYSXaGKMQP6idVQX/D+iV6 4 | JKWM04LF11re7dfTJepfP+jNA8kv93hgvw== 5 | -----END EC PRIVATE KEY----- 6 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/couchdb-util.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the 'License'); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an 'AS IS' BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | var hfc = require('fabric-client'); 18 | var nano = require('nano'); 19 | var Cloudant = require('cloudant'); 20 | 21 | module.exports.getCloudantClient = function(configFile) { 22 | var username = hfc.getConfigSetting('cloudant-username', 'notfound'); 23 | var password = hfc.getConfigSetting('cloudant-password', 'notfound'); 24 | console.log('CloudantClient username = ' + username + ', password: ' + password); 25 | return Cloudant({account: username, password: password}); 26 | }; 27 | 28 | module.exports.destroy = function(name, url) { 29 | this._url = url; 30 | this._name = name; 31 | // Name of the database, optional 32 | if (!name) { 33 | this._name = 'member_db'; 34 | } 35 | var self = this; 36 | return new Promise(function(resolve, reject) { 37 | var dbClient = nano(self._url); 38 | dbClient.db.destroy(self._name, function(err, body) { 39 | if (err) { 40 | resolve(false); 41 | } else { 42 | resolve(true); 43 | } 44 | }); 45 | }); 46 | }; 47 | 48 | 49 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.bak/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "test-network": { 3 | "orderer": { 4 | "url": "grpcs://localhost:7050", 5 | "server-hostname": "orderer0", 6 | "tls_cacerts": "../../fixtures/tls/orderer/ca-cert.pem" 7 | }, 8 | "org1": { 9 | "name": "peerOrg1", 10 | "mspid": "Org1MSP", 11 | "ca": "https://localhost:7054", 12 | "peer1": { 13 | "requests": "grpcs://localhost:7051", 14 | "events": "grpcs://localhost:7053", 15 | "server-hostname": "peer0", 16 | "tls_cacerts": "../../fixtures/tls/peers/peer0/ca-cert.pem" 17 | }, 18 | "peer2": { 19 | "requests": "grpcs://localhost:7056", 20 | "events": "grpcs://localhost:7058", 21 | "server-hostname": "peer1", 22 | "tls_cacerts": "../../fixtures/tls/peers/peer1/ca-cert.pem" 23 | } 24 | }, 25 | "org2": { 26 | "name": "peerOrg2", 27 | "mspid": "Org2MSP", 28 | "ca": "https://localhost:8054", 29 | "peer1": { 30 | "requests": "grpcs://localhost:8051", 31 | "events": "grpcs://localhost:8053", 32 | "server-hostname": "peer2", 33 | "tls_cacerts": "../../fixtures/tls/peers/peer2/ca-cert.pem" 34 | }, 35 | "peer2": { 36 | "requests": "grpcs://localhost:8056", 37 | "events": "grpcs://localhost:8058", 38 | "server-hostname": "peer3", 39 | "tls_cacerts": "../../fixtures/tls/peers/peer3/ca-cert.pem" 40 | } 41 | } 42 | }, 43 | "invokeRequest":{ 44 | "functionName":"invoke", 45 | "args":[ 46 | "a", 47 | "b", 48 | "c", 49 | "d", 50 | "f", 51 | "g", 52 | "e", 53 | "p", 54 | "0", 55 | "0", 56 | "0", 57 | "0", 58 | "0", 59 | "0", 60 | "0", 61 | "0" 62 | ] 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.bak/create-channel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the 'License'); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an 'AS IS' BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 'use strict'; 17 | 18 | var utils = require('fabric-client/lib/utils.js'); 19 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 20 | var logger = utils.getLogger('E2E create-channel'); 21 | 22 | var tape = require('tape'); 23 | var _test = require('tape-promise'); 24 | var test = _test(tape); 25 | 26 | var hfc = require('fabric-client'); 27 | var util = require('util'); 28 | var fs = require('fs'); 29 | var path = require('path'); 30 | 31 | var testUtil = require('../../unit/util.js'); 32 | 33 | var the_user = null; 34 | 35 | hfc.addConfigFile(path.join(__dirname, './config.json')); 36 | var ORGS = hfc.getConfigSetting('test-network'); 37 | 38 | // 39 | //Attempt to send a request to the orderer with the sendCreateChain method 40 | // 41 | test('\n\n***** End-to-end flow: create channel *****\n\n', function(t) { 42 | // 43 | // Create and configure the test chain 44 | // 45 | var client = new hfc(); 46 | 47 | var caRootsPath = ORGS.orderer.tls_cacerts; 48 | let data = fs.readFileSync(path.join(__dirname, caRootsPath)); 49 | let caroots = Buffer.from(data).toString(); 50 | 51 | var orderer = client.newOrderer( 52 | ORGS.orderer.url, 53 | { 54 | 'pem': caroots, 55 | 'ssl-target-name-override': ORGS.orderer['server-hostname'] 56 | } 57 | ); 58 | 59 | // Acting as a client in org1 when creating the channel 60 | var org = ORGS.org1.name; 61 | 62 | utils.setConfigSetting('key-value-store', 'fabric-client/lib/impl/FileKeyValueStore.js'); 63 | return hfc.newDefaultKeyValueStore({ 64 | path: testUtil.storePathForOrg(org) 65 | }).then((store) => { 66 | client.setStateStore(store); 67 | return testUtil.getSubmitter(client, t, 'org1'); 68 | }) 69 | .then((admin) => { 70 | t.pass('Successfully enrolled user \'admin\''); 71 | the_user = admin; 72 | 73 | // readin the envelope to send to the orderer 74 | let normalPath = path.normalize( 75 | path.join(__dirname, '../../fixtures/channel/mychannel.tx')); 76 | t.comment('normalPath=' + normalPath); 77 | data = fs.readFileSync(normalPath); 78 | var request = { 79 | envelope : data, 80 | name : 'mychannel', 81 | orderer : orderer 82 | }; 83 | // send to orderer 84 | return client.createChannel(request); 85 | }, (err) => { 86 | t.fail('Failed to enroll user \'admin\'. ' + err); 87 | t.end(); 88 | }) 89 | .then((chain) => { 90 | logger.debug(' response ::%j',chain); 91 | 92 | if (chain) { 93 | var test_orderers = chain.getOrderers(); 94 | if(test_orderers) { 95 | var test_orderer = test_orderers[0]; 96 | if(test_orderer === orderer) { 97 | t.pass('Successfully created the channel.'); 98 | } 99 | else { 100 | t.fail('Chain did not have the orderer.'); 101 | } 102 | } 103 | return sleep(5000); 104 | } else { 105 | t.fail('Failed to create the channel. '); 106 | t.end(); 107 | } 108 | }, (err) => { 109 | t.fail('Failed to initialize the channel: ' + err.stack ? err.stack : err); 110 | t.end(); 111 | }) 112 | .then((nothing) => { 113 | t.pass('Successfully waited to make sure new channel was created.'); 114 | t.end(); 115 | }, (err) => { 116 | t.fail('Failed to sleep due to error: ' + err.stack ? err.stack : err); 117 | t.end(); 118 | }); 119 | }); 120 | 121 | function sleep(ms) { 122 | return new Promise(resolve => setTimeout(resolve, ms)); 123 | } 124 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.bak/install-chaincode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var utils = require('fabric-client/lib/utils.js'); 22 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 23 | var logger = utils.getLogger('E2E install-chaincode'); 24 | 25 | var tape = require('tape'); 26 | var _test = require('tape-promise'); 27 | var test = _test(tape); 28 | 29 | var e2eUtils = require('./e2eUtils.js'); 30 | var testUtil = require('../../unit/util.js'); 31 | 32 | testUtil.setupChaincodeDeploy(); 33 | 34 | test('\n\n***** End-to-end flow: chaincode install *****\n\n', (t) => { 35 | e2eUtils.installChaincode('org1', testUtil.CHAINCODE_PATH, 'v0', t) 36 | .then(() => { 37 | t.pass('Successfully installed chaincode in peers of organization "org1"'); 38 | return e2eUtils.installChaincode('org2', testUtil.CHAINCODE_PATH, 'v0', t); 39 | }, (err) => { 40 | t.fail('Failed to install chaincode in peers of organization "org1". ' + err.stack ? err.stack : err); 41 | t.end(); 42 | }).then(() => { 43 | t.pass('Successfully installed chaincode in peers of organization "org2"'); 44 | t.end(); 45 | }, (err) => { 46 | t.fail('Failed to install chaincode in peers of organization "org2". ' + err.stack ? err.stack : err); 47 | t.end(); 48 | }).catch((err) => { 49 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 50 | t.end(); 51 | }); 52 | }); 53 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.bak/instantiate-chaincode.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var utils = require('fabric-client/lib/utils.js'); 22 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 23 | var logger = utils.getLogger('E2E instantiate-chaincode'); 24 | 25 | var tape = require('tape'); 26 | var _test = require('tape-promise'); 27 | var test = _test(tape); 28 | 29 | var e2eUtils = require('./e2eUtils.js'); 30 | var testUtil = require('../../unit/util.js'); 31 | 32 | test('\n\n***** End-to-end flow: instantiate chaincode *****', (t) => { 33 | e2eUtils.instantiateChaincode('org1', testUtil.CHAINCODE_PATH, 'v0', false, t) 34 | .then((result) => { 35 | if(result){ 36 | t.pass('Successfully instantiated chaincode on the channel'); 37 | t.end(); 38 | } 39 | else { 40 | t.fail('Failed to instantiate chaincode '); 41 | t.end(); 42 | } 43 | }, (err) => { 44 | t.fail('Failed to instantiate chaincode on the channel. ' + err.stack ? err.stack : err); 45 | t.end(); 46 | }).catch((err) => { 47 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 48 | t.end(); 49 | }); 50 | }); 51 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.bak/invoke-transaction.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var tape = require('tape'); 22 | var _test = require('tape-promise'); 23 | var test = _test(tape); 24 | var e2eUtils = require('./e2eUtils.js'); 25 | 26 | test('\n\n***** End-to-end flow: invoke transaction to move money *****', (t) => { 27 | e2eUtils.invokeChaincode('org2', 'v0', t) 28 | .then((result) => { 29 | if(result){ 30 | t.pass('Successfully invoke transaction chaincode on channel'); 31 | t.end(); 32 | } 33 | else { 34 | t.fail('Failed to invoke transaction chaincode '); 35 | t.end(); 36 | } 37 | }, (err) => { 38 | t.fail('Failed to invoke transaction chaincode on channel. ' + err.stack ? err.stack : err); 39 | t.end(); 40 | }).catch((err) => { 41 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 42 | t.end(); 43 | }); 44 | }); 45 | 46 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.bak/query.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var tape = require('tape'); 22 | var _test = require('tape-promise'); 23 | var test = _test(tape); 24 | var e2eUtils = require('./e2eUtils.js'); 25 | 26 | test('\n\n***** End-to-end flow: query chaincode *****', (t) => { 27 | e2eUtils.queryChaincode('org2', 'v0', '300', t) 28 | .then((result) => { 29 | if(result){ 30 | t.pass('Successfully query chaincode on the channel'); 31 | t.end(); 32 | } 33 | else { 34 | t.fail('Failed to query chaincode '); 35 | t.end(); 36 | } 37 | }, (err) => { 38 | t.fail('Failed to query chaincode on the channel. ' + err.stack ? err.stack : err); 39 | t.end(); 40 | }).catch((err) => { 41 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 42 | t.end(); 43 | }); 44 | }); 45 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.bak/upgrade.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var tape = require('tape'); 22 | var _test = require('tape-promise'); 23 | var test = _test(tape); 24 | var e2eUtils = require('./e2eUtils.js'); 25 | var testUtil = require('../../unit/util.js'); 26 | 27 | 28 | test('\n\n***** U P G R A D E flow: chaincode install *****\n\n', (t) => { 29 | e2eUtils.installChaincode('org1', testUtil.CHAINCODE_UPGRADE_PATH, 'v1', t) 30 | .then(() => { 31 | t.pass('Successfully installed chaincode in peers of organization "org1"'); 32 | return e2eUtils.installChaincode('org2', testUtil.CHAINCODE_UPGRADE_PATH, 'v1', t); 33 | }, (err) => { 34 | t.fail('Failed to install chaincode in peers of organization "org1". ' + err.stack ? err.stack : err); 35 | t.end(); 36 | }).then(() => { 37 | t.pass('Successfully installed chaincode in peers of organization "org2"'); 38 | t.end(); 39 | }, (err) => { 40 | t.fail('Failed to install chaincode in peers of organization "org2". ' + err.stack ? err.stack : err); 41 | t.end(); 42 | }).catch((err) => { 43 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 44 | t.end(); 45 | }); 46 | }); 47 | 48 | test('\n\n***** U P G R A D E flow: upgrade chaincode *****', (t) => { 49 | e2eUtils.instantiateChaincode('org1', testUtil.CHAINCODE_UPGRADE_PATH, 'v1', true, t) 50 | .then((result) => { 51 | if(result){ 52 | t.pass('Successfully upgrade chaincode on the channel'); 53 | t.end(); 54 | } 55 | else { 56 | t.fail('Failed to upgrade chaincode '); 57 | t.end(); 58 | } 59 | }, (err) => { 60 | t.fail('Failed to upgrade chaincode on the channel' + err.stack ? err.stack : err); 61 | t.end(); 62 | }).catch((err) => { 63 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 64 | t.end(); 65 | }); 66 | }); 67 | 68 | test('\n\n***** U P G R A D E flow: invoke transaction to move money *****', (t) => { 69 | e2eUtils.invokeChaincode('org2', 'v1', t) 70 | .then((result) => { 71 | if(result){ 72 | t.pass('Successfully invoke transaction chaincode on the channel'); 73 | t.end(); 74 | } 75 | else { 76 | t.fail('Failed to invoke transaction chaincode '); 77 | t.end(); 78 | } 79 | }, (err) => { 80 | t.fail('Failed to invoke transaction chaincode on the channel' + err.stack ? err.stack : err); 81 | t.end(); 82 | }).catch((err) => { 83 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 84 | t.end(); 85 | }); 86 | }); 87 | 88 | test('\n\n***** U P G R A D E flow: query chaincode *****', (t) => { 89 | e2eUtils.queryChaincode('org2', 'v1', '410', t) 90 | .then((result) => { 91 | if(result){ 92 | t.pass('Successfully query chaincode on the channel'); 93 | t.end(); 94 | } 95 | else { 96 | t.fail('Failed to query chaincode '); 97 | t.end(); 98 | } 99 | }, (err) => { 100 | t.fail('Failed to query chaincode on the channel' + err.stack ? err.stack : err); 101 | t.end(); 102 | }).catch((err) => { 103 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 104 | t.end(); 105 | }); 106 | }); 107 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.js: -------------------------------------------------------------------------------- 1 | require('./e2e/create-channel.js'); 2 | require('./e2e/join-channel.js'); 3 | require('./e2e/install-chaincode.js'); 4 | require('./e2e/instantiate-chaincode.js'); 5 | require('./e2e/invoke-transaction.js'); 6 | require('./e2e/query.js'); 7 | require('./e2e/upgrade.js'); -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.ks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/fabric-sdk-node/test/integration/e2e.ks -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "test-network": { 3 | "orderer": { 4 | "url": "grpcs://localhost:7050", 5 | "server-hostname": "orderer0", 6 | "tls_cacerts": "../../fixtures/tls/orderer/ca-cert.pem" 7 | }, 8 | "org1": { 9 | "name": "peerOrg1", 10 | "mspid": "Org1MSP", 11 | "ca": "https://localhost:7054", 12 | "peer1": { 13 | "requests": "grpcs://localhost:7051", 14 | "events": "grpcs://localhost:7053", 15 | "server-hostname": "peer0", 16 | "tls_cacerts": "../../fixtures/tls/peers/peer0/ca-cert.pem" 17 | }, 18 | "peer2": { 19 | "requests": "grpcs://localhost:7056", 20 | "events": "grpcs://localhost:7058", 21 | "server-hostname": "peer1", 22 | "tls_cacerts": "../../fixtures/tls/peers/peer1/ca-cert.pem" 23 | } 24 | }, 25 | "org2": { 26 | "name": "peerOrg2", 27 | "mspid": "Org2MSP", 28 | "ca": "https://localhost:8054", 29 | "peer1": { 30 | "requests": "grpcs://localhost:8051", 31 | "events": "grpcs://localhost:8053", 32 | "server-hostname": "peer2", 33 | "tls_cacerts": "../../fixtures/tls/peers/peer2/ca-cert.pem" 34 | }, 35 | "peer2": { 36 | "requests": "grpcs://localhost:8056", 37 | "events": "grpcs://localhost:8058", 38 | "server-hostname": "peer3", 39 | "tls_cacerts": "../../fixtures/tls/peers/peer3/ca-cert.pem" 40 | } 41 | } 42 | }, 43 | "invokeRequest":{ 44 | "functionName":"invoke", 45 | "args":[ 46 | "a", 47 | "b", 48 | "c", 49 | "d", 50 | "f", 51 | "g", 52 | "e", 53 | "p", 54 | "-220.0", 55 | "0", 56 | "0", 57 | "0", 58 | "0", 59 | "220.0", 60 | "200.0", 61 | "1.1", 62 | "move" 63 | ] 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/config.json_bak: -------------------------------------------------------------------------------- 1 | { 2 | "test-network": { 3 | "orderer": { 4 | "url": "grpcs://localhost:7050", 5 | "server-hostname": "orderer0", 6 | "tls_cacerts": "../../fixtures/tls/orderer/ca-cert.pem" 7 | }, 8 | "org1": { 9 | "name": "peerOrg1", 10 | "mspid": "Org1MSP", 11 | "ca": "https://localhost:7054", 12 | "peer1": { 13 | "requests": "grpcs://localhost:7051", 14 | "events": "grpcs://localhost:7053", 15 | "server-hostname": "peer0", 16 | "tls_cacerts": "../../fixtures/tls/peers/peer0/ca-cert.pem" 17 | }, 18 | "peer2": { 19 | "requests": "grpcs://localhost:7056", 20 | "events": "grpcs://localhost:7058", 21 | "server-hostname": "peer1", 22 | "tls_cacerts": "../../fixtures/tls/peers/peer1/ca-cert.pem" 23 | } 24 | }, 25 | "org2": { 26 | "name": "peerOrg2", 27 | "mspid": "Org2MSP", 28 | "ca": "https://localhost:8054", 29 | "peer1": { 30 | "requests": "grpcs://localhost:8051", 31 | "events": "grpcs://localhost:8053", 32 | "server-hostname": "peer2", 33 | "tls_cacerts": "../../fixtures/tls/peers/peer2/ca-cert.pem" 34 | }, 35 | "peer2": { 36 | "requests": "grpcs://localhost:8056", 37 | "events": "grpcs://localhost:8058", 38 | "server-hostname": "peer3", 39 | "tls_cacerts": "../../fixtures/tls/peers/peer3/ca-cert.pem" 40 | } 41 | } 42 | }, 43 | "invokeRequest":{ 44 | "functionName":"invoke", 45 | "args":[ 46 | "a", 47 | "b", 48 | "100" 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/create-channel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the 'License'); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an 'AS IS' BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 'use strict'; 17 | 18 | var utils = require('fabric-client/lib/utils.js'); 19 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 20 | var logger = utils.getLogger('E2E create-channel'); 21 | 22 | var tape = require('tape'); 23 | var _test = require('tape-promise'); 24 | var test = _test(tape); 25 | 26 | var hfc = require('fabric-client'); 27 | var util = require('util'); 28 | var fs = require('fs'); 29 | var path = require('path'); 30 | 31 | var testUtil = require('../../unit/util.js'); 32 | 33 | var the_user = null; 34 | 35 | hfc.addConfigFile(path.join(__dirname, './config.json')); 36 | var ORGS = hfc.getConfigSetting('test-network'); 37 | 38 | // 39 | //Attempt to send a request to the orderer with the sendCreateChain method 40 | // 41 | test('\n\n***** End-to-end flow: create channel *****\n\n', function(t) { 42 | // 43 | // Create and configure the test chain 44 | // 45 | var client = new hfc(); 46 | 47 | var caRootsPath = ORGS.orderer.tls_cacerts; 48 | let data = fs.readFileSync(path.join(__dirname, caRootsPath)); 49 | let caroots = Buffer.from(data).toString(); 50 | 51 | var orderer = client.newOrderer( 52 | ORGS.orderer.url, 53 | { 54 | 'pem': caroots, 55 | 'ssl-target-name-override': ORGS.orderer['server-hostname'] 56 | } 57 | ); 58 | 59 | // Acting as a client in org1 when creating the channel 60 | var org = ORGS.org1.name; 61 | 62 | utils.setConfigSetting('key-value-store', 'fabric-client/lib/impl/FileKeyValueStore.js'); 63 | return hfc.newDefaultKeyValueStore({ 64 | path: testUtil.storePathForOrg(org) 65 | }).then((store) => { 66 | client.setStateStore(store); 67 | return testUtil.getSubmitter(client, t, 'org1'); 68 | }) 69 | .then((admin) => { 70 | t.pass('Successfully enrolled user \'admin\''); 71 | the_user = admin; 72 | 73 | // readin the envelope to send to the orderer 74 | data = fs.readFileSync('./test/fixtures/channel/mychannel.tx'); 75 | var request = { 76 | envelope : data, 77 | name : 'mychannel', 78 | orderer : orderer 79 | }; 80 | // send to orderer 81 | return client.createChannel(request); 82 | }, (err) => { 83 | t.fail('Failed to enroll user \'admin\'. ' + err); 84 | t.end(); 85 | }) 86 | .then((chain) => { 87 | logger.debug(' response ::%j',chain); 88 | 89 | if (chain) { 90 | var test_orderers = chain.getOrderers(); 91 | if(test_orderers) { 92 | var test_orderer = test_orderers[0]; 93 | if(test_orderer === orderer) { 94 | t.pass('Successfully created the channel.'); 95 | } 96 | else { 97 | t.fail('Chain did not have the orderer.'); 98 | } 99 | } 100 | return sleep(5000); 101 | } else { 102 | t.fail('Failed to create the channel. '); 103 | t.end(); 104 | } 105 | }, (err) => { 106 | t.fail('Failed to initialize the channel: ' + err.stack ? err.stack : err); 107 | t.end(); 108 | }) 109 | .then((nothing) => { 110 | t.pass('Successfully waited to make sure new channel was created.'); 111 | t.end(); 112 | }, (err) => { 113 | t.fail('Failed to sleep due to error: ' + err.stack ? err.stack : err); 114 | t.end(); 115 | }); 116 | }); 117 | 118 | function sleep(ms) { 119 | return new Promise(resolve => setTimeout(resolve, ms)); 120 | } 121 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/exec.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/fabric-sdk-node/test/integration/e2e.version1/exec.js -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/hackfest/channel_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # find address of peer0 in your network 4 | PEER0_IP_ADDRESS=`perl -e 'use Socket; $a = inet_ntoa(inet_aton("peer0")); print "$a\n";'` 5 | 6 | # create an anchor file 7 | cat<anchorPeer.txt 8 | $PEER0_IP_ADDRESS 9 | 7051 10 | -----BEGIN CERTIFICATE----- 11 | MIICjDCCAjKgAwIBAgIUBEVwsSx0TmqdbzNwleNBBzoIT0wwCgYIKoZIzj0EAwIw 12 | fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh 13 | biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK 14 | BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMTExMTcwNzAw 15 | WhcNMTcxMTExMTcwNzAwWjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGgg 16 | Q2Fyb2xpbmExEDAOBgNVBAcTB1JhbGVpZ2gxGzAZBgNVBAoTEkh5cGVybGVkZ2Vy 17 | IEZhYnJpYzEMMAoGA1UECxMDQ09QMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 18 | HBuKsAO43hs4JGpFfiGMkB/xsILTsOvmN2WmwpsPHZNL6w8HWe3xCPQtdG/XJJvZ 19 | +C756KEsUBM3yw5PTfku8qOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw 20 | FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOFC 21 | dcUZ4es3ltiCgAVDoyLfVpPIMB8GA1UdIwQYMBaAFBdnQj2qnoI/xMUdn1vDmdG1 22 | nEgQMCUGA1UdEQQeMByCCm15aG9zdC5jb22CDnd3dy5teWhvc3QuY29tMAoGCCqG 23 | SM49BAMCA0gAMEUCIDf9Hbl4xn3z4EwNKmilM9lX2Fq4jWpAaRVB97OmVEeyAiEA 24 | 25aDPQHGGq2AvhKT0wvt08cX1GTGCIbfmuLpMwKQj38= 25 | -----END CERTIFICATE----- 26 | EOF 27 | 28 | #create 29 | echo "Creating channel on Orderer" 30 | CORE_PEER_GOSSIP_IGNORESECURITY=true CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/msp/sampleconfig CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc1 -a anchorPeer.txt >>log.txt 2>&1 31 | cat log.txt 32 | grep -q "Exiting" log.txt 33 | if [ $? -ne 0 ]; then 34 | echo "ERROR on CHANNEL CREATION" >> results.txt 35 | exit 1 36 | fi 37 | echo "SUCCESSFUL CHANNEL CREATION" >> results.txt 38 | sleep 5 39 | TOTAL_PEERS=3 40 | i=0 41 | while test $i -lt $TOTAL_PEERS 42 | do 43 | echo "###################################### Joining peer$i" 44 | CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer$i:7051 peer channel join -b myc1.block >>log.txt 2>&1 45 | cat log.txt 46 | echo '-------------------------------------------------' 47 | grep -q "Join Result: " log.txt 48 | if [ $? -ne 0 ]; then 49 | echo "ERROR on JOIN CHANNEL" >> results.txt 50 | exit 1 51 | fi 52 | echo "SUCCESSFUL JOIN CHANNEL on PEER$i" >> results.txt 53 | echo "SUCCESSFUL JOIN CHANNEL on PEER$i" 54 | i=$((i+1)) 55 | sleep 10 56 | done 57 | echo "Peer0 , Peer1 and Peer2 are added to the channel myc1" 58 | cat log.txt 59 | exit 0 60 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/hackfest/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "chainName":"fabric-client1", 3 | "chaincodeID":"mycc", 4 | "channelID":"myc1", 5 | "goPath":"../../test/fixtures", 6 | "chaincodePath":"github.com/example_cc", 7 | "keyValueStore":"/tmp/fabric-client-kvs", 8 | "waitTime":"30000", 9 | "caserver":{ 10 | "ca_url":"http://localhost:8054" 11 | }, 12 | "orderer":{ 13 | "orderer_url":"grpc://localhost:8050" 14 | }, 15 | "peers":[ 16 | { 17 | "peer_url":"grpc://localhost:8051" 18 | }, 19 | { 20 | "peer_url":"grpc://localhost:8055" 21 | }, 22 | { 23 | "peer_url":"grpc://localhost:8056" 24 | } 25 | ], 26 | "events":[ 27 | { 28 | "event_url":"grpc://localhost:8053" 29 | }, 30 | { 31 | "event_url":"grpc://localhost:9053" 32 | }, 33 | { 34 | "event_url":"grpc://localhost:10053" 35 | } 36 | ], 37 | "users":[ 38 | { 39 | "username":"admin", 40 | "secret":"adminpw" 41 | } 42 | ], 43 | "dockerfile_contents": "from hyperledger/fabric-ccenv\n COPY . $GOPATH/src/build-chaincode/\n WORKDIR $GOPATH\n\n RUN go install build-chaincode && mv $GOPATH/bin/build-chaincode $GOPATH/bin/%s", 44 | "deployRequest":{ 45 | "functionName":"init", 46 | "args":[ 47 | "a", 48 | "100", 49 | "b", 50 | "200" 51 | ] 52 | }, 53 | "invokeRequest":{ 54 | "functionName":"invoke", 55 | "args":[ 56 | "move", 57 | "a", 58 | "b", 59 | "100" 60 | ] 61 | }, 62 | "queryRequest":{ 63 | "functionName":"invoke", 64 | "args":[ 65 | "query", 66 | "b" 67 | ] 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/hackfest/deploy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('DEPLOY'); 22 | 23 | var hfc = require('fabric-client'); 24 | var utils = require('fabric-client/lib/utils.js'); 25 | var Peer = require('fabric-client/lib/Peer.js'); 26 | var Orderer = require('fabric-client/lib/Orderer.js'); 27 | var EventHub = require('fabric-client/lib/EventHub.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | logger.setLevel('DEBUG'); 33 | 34 | var client = new hfc(); 35 | var chain; 36 | var eventhub; 37 | var tx_id = null; 38 | 39 | if (!process.env.GOPATH){ 40 | process.env.GOPATH = config.goPath; 41 | } 42 | 43 | init(); 44 | 45 | function init() { 46 | chain = client.newChain(config.chainName); 47 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 48 | eventhub = new EventHub(); 49 | eventhub.setPeerAddr(config.events[0].event_url); 50 | eventhub.connect(); 51 | for (var i = 0; i < config.peers.length; i++) { 52 | chain.addPeer(new Peer(config.peers[i].peer_url)); 53 | } 54 | } 55 | 56 | hfc.newDefaultKeyValueStore({ 57 | path: config.keyValueStore 58 | }).then(function(store) { 59 | client.setStateStore(store); 60 | return helper.getSubmitter(client); 61 | }).then( 62 | function(admin) { 63 | logger.info('Successfully obtained enrolled user to deploy the chaincode'); 64 | 65 | logger.info('Executing Deploy'); 66 | tx_id = helper.getTxId(); 67 | var nonce = utils.getNonce(); 68 | var args = helper.getArgs(config.deployRequest.args); 69 | // send proposal to endorser 70 | var request = { 71 | chaincodePath: config.chaincodePath, 72 | chaincodeId: config.chaincodeID, 73 | fcn: config.deployRequest.functionName, 74 | args: args, 75 | chainId: config.channelID, 76 | txId: tx_id, 77 | nonce: nonce, 78 | 'dockerfile-contents': config.dockerfile_contents 79 | }; 80 | return chain.sendDeploymentProposal(request); 81 | } 82 | ).then( 83 | function(results) { 84 | logger.info('Successfully obtained proposal responses from endorsers'); 85 | return helper.processProposal(chain, results, 'deploy'); 86 | } 87 | ).then( 88 | function(response) { 89 | if (response.status === 'SUCCESS') { 90 | logger.info('Successfully sent deployment transaction to the orderer.'); 91 | var handle = setTimeout(() => { 92 | logger.error('Failed to receive transaction notification within the timeout period'); 93 | process.exit(1); 94 | }, parseInt(config.waitTime)); 95 | 96 | eventhub.registerTxEvent(tx_id.toString(), (tx) => { 97 | logger.info('The chaincode transaction has been successfully committed'); 98 | clearTimeout(handle); 99 | eventhub.disconnect(); 100 | }); 101 | } else { 102 | logger.error('Failed to order the deployment endorsement. Error code: ' + response.status); 103 | } 104 | } 105 | ).catch( 106 | function(err) { 107 | eventhub.disconnect(); 108 | logger.error(err.stack ? err.stack : err); 109 | } 110 | ); 111 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/hackfest/invoke.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('INVOKE'); 22 | 23 | var hfc = require('fabric-client'); 24 | var utils = require('fabric-client/lib/utils.js'); 25 | var Peer = require('fabric-client/lib/Peer.js'); 26 | var Orderer = require('fabric-client/lib/Orderer.js'); 27 | var EventHub = require('fabric-client/lib/EventHub.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | logger.setLevel('DEBUG'); 33 | 34 | var client = new hfc(); 35 | var chain; 36 | var eventhub; 37 | var tx_id = null; 38 | 39 | init(); 40 | 41 | function init() { 42 | chain = client.newChain(config.chainName); 43 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 44 | eventhub = new EventHub(); 45 | eventhub.setPeerAddr(config.events[0].event_url); 46 | eventhub.connect(); 47 | for (var i = 0; i < config.peers.length; i++) { 48 | chain.addPeer(new Peer(config.peers[i].peer_url)); 49 | } 50 | } 51 | 52 | hfc.newDefaultKeyValueStore({ 53 | path: config.keyValueStore 54 | }).then(function(store) { 55 | client.setStateStore(store); 56 | return helper.getSubmitter(client); 57 | }).then( 58 | function(admin) { 59 | logger.info('Successfully obtained user to submit transaction'); 60 | 61 | logger.info('Executing Invoke'); 62 | tx_id = helper.getTxId(); 63 | var nonce = utils.getNonce(); 64 | var args = helper.getArgs(config.invokeRequest.args); 65 | // send proposal to endorser 66 | var request = { 67 | chaincodeId: config.chaincodeID, 68 | fcn: config.invokeRequest.functionName, 69 | args: args, 70 | chainId: config.channelID, 71 | txId: tx_id, 72 | nonce: nonce 73 | }; 74 | return chain.sendTransactionProposal(request); 75 | } 76 | ).then( 77 | function(results) { 78 | logger.info('Successfully obtained proposal responses from endorsers'); 79 | 80 | return helper.processProposal(chain, results, 'move'); 81 | } 82 | ).then( 83 | function(response) { 84 | if (response.status === 'SUCCESS') { 85 | var handle = setTimeout(() => { 86 | logger.error('Failed to receive transaction notification within the timeout period'); 87 | process.exit(1); 88 | }, parseInt(config.waitTime)); 89 | 90 | eventhub.registerTxEvent(tx_id.toString(), (tx) => { 91 | logger.info('The chaincode transaction has been successfully committed'); 92 | clearTimeout(handle); 93 | eventhub.disconnect(); 94 | }); 95 | } 96 | } 97 | ).catch( 98 | function(err) { 99 | eventhub.disconnect(); 100 | logger.error('Failed to invoke transaction due to error: ' + err.stack ? err.stack : err); 101 | } 102 | ); 103 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/hackfest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "balance-transfer", 3 | "version": "0.0.1", 4 | "description": "A balance-transfer example node program to demonstrate using NodeSDK apis", 5 | "main": "deploy.js", 6 | "keywords": [ 7 | "fabric-client example", 8 | "balance-transfer node sample" 9 | ], 10 | "engines": { 11 | "node": ">=4.5.0", 12 | "npm": ">=2.15.9" 13 | }, 14 | "devDependencies": { 15 | "fabric-client": "^0.1.0", 16 | "fabric-ca-client": "^0.1.0", 17 | "log4js": "^0.6.38", 18 | "winston": "^2.2.0" 19 | }, 20 | "license": "Apache-2.0" 21 | } 22 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/hackfest/query.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('QUERY'); 22 | logger.setLevel('DEBUG'); 23 | 24 | var hfc = require('fabric-client'); 25 | var utils = require('fabric-client/lib/utils.js'); 26 | var Peer = require('fabric-client/lib/Peer.js'); 27 | var Orderer = require('fabric-client/lib/Orderer.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | var client = new hfc(); 33 | var chain; 34 | 35 | init(); 36 | 37 | function init() { 38 | chain = client.newChain(config.chainName); 39 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 40 | for (var i = 0; i < config.peers.length; i++) { 41 | chain.addPeer(new Peer(config.peers[i].peer_url)); 42 | } 43 | } 44 | 45 | hfc.newDefaultKeyValueStore({ 46 | path: config.keyValueStore 47 | }).then(function(store) { 48 | client.setStateStore(store); 49 | return helper.getSubmitter(client); 50 | }).then( 51 | function(admin) { 52 | logger.info('Successfully obtained enrolled user to perform query'); 53 | 54 | logger.info('Executing Query'); 55 | var targets = []; 56 | for (var i = 0; i < config.peers.length; i++) { 57 | targets.push(config.peers[i]); 58 | } 59 | var args = helper.getArgs(config.queryRequest.args); 60 | //chaincode query request 61 | var request = { 62 | targets: targets, 63 | chaincodeId: config.chaincodeID, 64 | chainId: config.channelID, 65 | txId: utils.buildTransactionID(), 66 | nonce: utils.getNonce(), 67 | fcn: config.queryRequest.functionName, 68 | args: args 69 | }; 70 | // Query chaincode 71 | return chain.queryByChaincode(request); 72 | } 73 | ).then( 74 | function(response_payloads) { 75 | for (let i = 0; i < response_payloads.length; i++) { 76 | logger.info('############### Query results after the move on PEER%j, User "b" now has %j', i, response_payloads[i].toString('utf8')); 77 | } 78 | } 79 | ).catch( 80 | function(err) { 81 | logger.error('Failed to end to end test with error:' + err.stack ? err.stack : err); 82 | } 83 | ); 84 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/query1.sh: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | docker logs -t dev-peer0-end2end-v109 3 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/re.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | old_file ='/home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/config.json' 5 | f =open(old_file,'r+') 6 | 7 | flist=f.readlines() 8 | flist[45]=' "a"\n' 9 | flist[46]=' "a"\n' 10 | flist[47]=' "100"\n' 11 | f=open(old_file,'w+') 12 | f.writelines(flist) -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/result: -------------------------------------------------------------------------------- 1 | info: Successfully constructed a winston logger with configurations debug=console 2 | TAP version 13 3 | # 4 | 5 | ***** End-to-end flow: query chaincode ***** 6 | info: [crypto_ecdsa_aes]: This class requires a CryptoKeyStore to save keys, using the store: {"opts":{"path":"/root/.hfc-key-store"}} 7 | info: [Client.js]: Successfully loaded user "admin" from local key value store 8 | ok 1 Successfully loaded member from persistence 9 | info: [E2E query]: ############### Query results after the move on PEER0, User "b" now has "100" 10 | info: [E2E query]: ############### Query results after the move on PEER1, User "b" now has "100" 11 | 12 | 1..1 13 | # tests 1 14 | # pass 1 15 | 16 | # ok 17 | 18 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/script.sh: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | node /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2e/invoke-transaction.js 3 | #node /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/query.js 4 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/upgrade.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var tape = require('tape'); 22 | var _test = require('tape-promise'); 23 | var test = _test(tape); 24 | var e2eUtils = require('./e2eUtils.js'); 25 | var testUtil = require('../../unit/util.js'); 26 | 27 | testUtil.setupChaincodeDeploy(); 28 | 29 | test('\n\n***** U P G R A D E flow: chaincode install *****\n\n', (t) => { 30 | e2eUtils.installChaincode('org1', testUtil.CHAINCODE_UPGRADE_PATH, 'v112', t) 31 | .then(() => { 32 | t.pass('Successfully installed chaincode in peers of organization "org1"'); 33 | return e2eUtils.installChaincode('org2', testUtil.CHAINCODE_UPGRADE_PATH, 'v112', t); 34 | }, (err) => { 35 | t.fail('Failed to install chaincode in peers of organization "org1". ' + err.stack ? err.stack : err); 36 | t.end(); 37 | }).then(() => { 38 | t.pass('Successfully installed chaincode in peers of organization "org2"'); 39 | t.end(); 40 | }, (err) => { 41 | t.fail('Failed to install chaincode in peers of organization "org2". ' + err.stack ? err.stack : err); 42 | t.end(); 43 | }).catch((err) => { 44 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 45 | t.end(); 46 | }); 47 | }); 48 | 49 | test('\n\n***** U P G R A D E flow: upgrade chaincode *****', (t) => { 50 | e2eUtils.instantiateChaincode('org1', testUtil.CHAINCODE_UPGRADE_PATH, 'v112', true, t) 51 | .then((result) => { 52 | if(result){ 53 | t.pass('Successfully upgrade chaincode on the channel'); 54 | t.end(); 55 | } 56 | else { 57 | t.fail('Failed to upgrade chaincode '); 58 | t.end(); 59 | } 60 | }, (err) => { 61 | t.fail('Failed to upgrade chaincode on the channel' + err.stack ? err.stack : err); 62 | t.end(); 63 | }).catch((err) => { 64 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 65 | t.end(); 66 | }); 67 | }); 68 | /* 69 | test('\n\n***** U P G R A D E flow: invoke transaction to move money *****', (t) => { 70 | e2eUtils.invokeChaincode('org2', 'v112', t) 71 | .then((result) => { 72 | if(result){ 73 | t.pass('Successfully invoke transaction chaincode on the channel'); 74 | t.end(); 75 | } 76 | else { 77 | t.fail('Failed to invoke transaction chaincode '); 78 | t.end(); 79 | } 80 | }, (err) => { 81 | var path = require('path'); 82 | var fs = require('fs-extra'); 83 | var os = require('os'); 84 | 85 | t.fail('Failed to invoke transaction chaincode on the channel' + err.stack ? err.stack : err); 86 | t.end(); 87 | }).catch((err) => { 88 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 89 | t.end(); 90 | }); 91 | }); 92 | 93 | test('\n\n***** U P G R A D E flow: query chaincode *****', (t) => { 94 | e2eUtils.queryChaincode('org2', 'v112', '410', t) 95 | .then((result) => { 96 | if(result){ 97 | t.pass('Successfully query chaincode on the channel'); 98 | t.end(); 99 | } 100 | else { 101 | t.fail('Failed to query chaincode '); 102 | t.end(); 103 | } 104 | }, (err) => { 105 | t.fail('Failed to query chaincode on the channel' + err.stack ? err.stack : err); 106 | t.end(); 107 | }).catch((err) => { 108 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 109 | t.end(); 110 | }); 111 | }); 112 | */ -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e.version1/yunxing.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import os 3 | import socket 4 | import sys 5 | from thread import * 6 | #os .system('./script.sh') #run node invoke && query 7 | 8 | os .system('sh /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/script.sh') #run node invoke && query 9 | 10 | 11 | ''' 12 | 13 | #Receiving from client 14 | data = conn.recv(512) 15 | reply = u'收到交易信息....正在执行交易.....' 16 | #change config.json 17 | #os .system('./script.sh') #run node invoke && query 18 | #reply = u'交易完成 您已经购买 电量' 19 | ''' -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "test-network": { 3 | "orderer": { 4 | "url": "grpcs://localhost:7050", 5 | "server-hostname": "orderer0", 6 | "tls_cacerts": "../../fixtures/tls/orderer/ca-cert.pem" 7 | }, 8 | "org1": { 9 | "name": "peerOrg1", 10 | "mspid": "Org1MSP", 11 | "ca": "https://localhost:7054", 12 | "peer1": { 13 | "requests": "grpcs://localhost:7051", 14 | "events": "grpcs://localhost:7053", 15 | "server-hostname": "peer0", 16 | "tls_cacerts": "../../fixtures/tls/peers/peer0/ca-cert.pem" 17 | }, 18 | "peer2": { 19 | "requests": "grpcs://localhost:7056", 20 | "events": "grpcs://localhost:7058", 21 | "server-hostname": "peer1", 22 | "tls_cacerts": "../../fixtures/tls/peers/peer1/ca-cert.pem" 23 | } 24 | }, 25 | "org2": { 26 | "name": "peerOrg2", 27 | "mspid": "Org2MSP", 28 | "ca": "https://localhost:8054", 29 | "peer1": { 30 | "requests": "grpcs://localhost:8051", 31 | "events": "grpcs://localhost:8053", 32 | "server-hostname": "peer2", 33 | "tls_cacerts": "../../fixtures/tls/peers/peer2/ca-cert.pem" 34 | }, 35 | "peer2": { 36 | "requests": "grpcs://localhost:8056", 37 | "events": "grpcs://localhost:8058", 38 | "server-hostname": "peer3", 39 | "tls_cacerts": "../../fixtures/tls/peers/peer3/ca-cert.pem" 40 | } 41 | } 42 | }, 43 | "invokeRequest":{ 44 | "functionName":"invoke", 45 | "args":[ 46 | "a", 47 | "b", 48 | "c", 49 | "d", 50 | "f", 51 | "g", 52 | "e", 53 | "p", 54 | "-100.0", 55 | "0", 56 | "0", 57 | "0", 58 | "0", 59 | "100.0", 60 | "100.0", 61 | "1.0", 62 | "move" 63 | ] 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/config.json_bak: -------------------------------------------------------------------------------- 1 | { 2 | "test-network": { 3 | "orderer": { 4 | "url": "grpcs://localhost:7050", 5 | "server-hostname": "orderer0", 6 | "tls_cacerts": "../../fixtures/tls/orderer/ca-cert.pem" 7 | }, 8 | "org1": { 9 | "name": "peerOrg1", 10 | "mspid": "Org1MSP", 11 | "ca": "https://localhost:7054", 12 | "peer1": { 13 | "requests": "grpcs://localhost:7051", 14 | "events": "grpcs://localhost:7053", 15 | "server-hostname": "peer0", 16 | "tls_cacerts": "../../fixtures/tls/peers/peer0/ca-cert.pem" 17 | }, 18 | "peer2": { 19 | "requests": "grpcs://localhost:7056", 20 | "events": "grpcs://localhost:7058", 21 | "server-hostname": "peer1", 22 | "tls_cacerts": "../../fixtures/tls/peers/peer1/ca-cert.pem" 23 | } 24 | }, 25 | "org2": { 26 | "name": "peerOrg2", 27 | "mspid": "Org2MSP", 28 | "ca": "https://localhost:8054", 29 | "peer1": { 30 | "requests": "grpcs://localhost:8051", 31 | "events": "grpcs://localhost:8053", 32 | "server-hostname": "peer2", 33 | "tls_cacerts": "../../fixtures/tls/peers/peer2/ca-cert.pem" 34 | }, 35 | "peer2": { 36 | "requests": "grpcs://localhost:8056", 37 | "events": "grpcs://localhost:8058", 38 | "server-hostname": "peer3", 39 | "tls_cacerts": "../../fixtures/tls/peers/peer3/ca-cert.pem" 40 | } 41 | } 42 | }, 43 | "invokeRequest":{ 44 | "functionName":"invoke", 45 | "args":[ 46 | "a", 47 | "b", 48 | "100" 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/create-channel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the 'License'); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an 'AS IS' BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 'use strict'; 17 | 18 | var utils = require('fabric-client/lib/utils.js'); 19 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 20 | var logger = utils.getLogger('E2E create-channel'); 21 | 22 | var tape = require('tape'); 23 | var _test = require('tape-promise'); 24 | var test = _test(tape); 25 | 26 | var hfc = require('fabric-client'); 27 | var util = require('util'); 28 | var fs = require('fs'); 29 | var path = require('path'); 30 | 31 | var testUtil = require('../../unit/util.js'); 32 | 33 | var the_user = null; 34 | 35 | hfc.addConfigFile(path.join(__dirname, './config.json')); 36 | var ORGS = hfc.getConfigSetting('test-network'); 37 | 38 | // 39 | //Attempt to send a request to the orderer with the sendCreateChain method 40 | // 41 | test('\n\n***** End-to-end flow: create channel *****\n\n', function(t) { 42 | // 43 | // Create and configure the test chain 44 | // 45 | var client = new hfc(); 46 | 47 | var caRootsPath = ORGS.orderer.tls_cacerts; 48 | let data = fs.readFileSync(path.join(__dirname, caRootsPath)); 49 | let caroots = Buffer.from(data).toString(); 50 | 51 | var orderer = client.newOrderer( 52 | ORGS.orderer.url, 53 | { 54 | 'pem': caroots, 55 | 'ssl-target-name-override': ORGS.orderer['server-hostname'] 56 | } 57 | ); 58 | 59 | // Acting as a client in org1 when creating the channel 60 | var org = ORGS.org1.name; 61 | 62 | utils.setConfigSetting('key-value-store', 'fabric-client/lib/impl/FileKeyValueStore.js'); 63 | return hfc.newDefaultKeyValueStore({ 64 | path: testUtil.storePathForOrg(org) 65 | }).then((store) => { 66 | client.setStateStore(store); 67 | return testUtil.getSubmitter(client, t, 'org1'); 68 | }) 69 | .then((admin) => { 70 | t.pass('Successfully enrolled user \'admin\''); 71 | the_user = admin; 72 | 73 | // readin the envelope to send to the orderer 74 | let normalPath = path.normalize( 75 | path.join(__dirname, '../../fixtures/channel/mychannel.tx')); 76 | t.comment('normalPath=' + normalPath); 77 | data = fs.readFileSync(normalPath); 78 | var request = { 79 | envelope : data, 80 | name : 'mychannel', 81 | orderer : orderer 82 | }; 83 | // send to orderer 84 | return client.createChannel(request); 85 | }, (err) => { 86 | t.fail('Failed to enroll user \'admin\'. ' + err); 87 | t.end(); 88 | }) 89 | .then((chain) => { 90 | logger.debug(' response ::%j',chain); 91 | 92 | if (chain) { 93 | var test_orderers = chain.getOrderers(); 94 | if(test_orderers) { 95 | var test_orderer = test_orderers[0]; 96 | if(test_orderer === orderer) { 97 | t.pass('Successfully created the channel.'); 98 | } 99 | else { 100 | t.fail('Chain did not have the orderer.'); 101 | } 102 | } 103 | return sleep(5000); 104 | } else { 105 | t.fail('Failed to create the channel. '); 106 | t.end(); 107 | } 108 | }, (err) => { 109 | t.fail('Failed to initialize the channel: ' + err.stack ? err.stack : err); 110 | t.end(); 111 | }) 112 | .then((nothing) => { 113 | t.pass('Successfully waited to make sure new channel was created.'); 114 | t.end(); 115 | }, (err) => { 116 | t.fail('Failed to sleep due to error: ' + err.stack ? err.stack : err); 117 | t.end(); 118 | }); 119 | }); 120 | 121 | function sleep(ms) { 122 | return new Promise(resolve => setTimeout(resolve, ms)); 123 | } 124 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/exec.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/fabric-sdk-node/test/integration/e2e/exec.js -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/hackfest/channel_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # find address of peer0 in your network 4 | PEER0_IP_ADDRESS=`perl -e 'use Socket; $a = inet_ntoa(inet_aton("peer0")); print "$a\n";'` 5 | 6 | # create an anchor file 7 | cat<anchorPeer.txt 8 | $PEER0_IP_ADDRESS 9 | 7051 10 | -----BEGIN CERTIFICATE----- 11 | MIICjDCCAjKgAwIBAgIUBEVwsSx0TmqdbzNwleNBBzoIT0wwCgYIKoZIzj0EAwIw 12 | fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh 13 | biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK 14 | BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMTExMTcwNzAw 15 | WhcNMTcxMTExMTcwNzAwWjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGgg 16 | Q2Fyb2xpbmExEDAOBgNVBAcTB1JhbGVpZ2gxGzAZBgNVBAoTEkh5cGVybGVkZ2Vy 17 | IEZhYnJpYzEMMAoGA1UECxMDQ09QMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 18 | HBuKsAO43hs4JGpFfiGMkB/xsILTsOvmN2WmwpsPHZNL6w8HWe3xCPQtdG/XJJvZ 19 | +C756KEsUBM3yw5PTfku8qOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw 20 | FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOFC 21 | dcUZ4es3ltiCgAVDoyLfVpPIMB8GA1UdIwQYMBaAFBdnQj2qnoI/xMUdn1vDmdG1 22 | nEgQMCUGA1UdEQQeMByCCm15aG9zdC5jb22CDnd3dy5teWhvc3QuY29tMAoGCCqG 23 | SM49BAMCA0gAMEUCIDf9Hbl4xn3z4EwNKmilM9lX2Fq4jWpAaRVB97OmVEeyAiEA 24 | 25aDPQHGGq2AvhKT0wvt08cX1GTGCIbfmuLpMwKQj38= 25 | -----END CERTIFICATE----- 26 | EOF 27 | 28 | #create 29 | echo "Creating channel on Orderer" 30 | CORE_PEER_GOSSIP_IGNORESECURITY=true CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/msp/sampleconfig CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc1 -a anchorPeer.txt >>log.txt 2>&1 31 | cat log.txt 32 | grep -q "Exiting" log.txt 33 | if [ $? -ne 0 ]; then 34 | echo "ERROR on CHANNEL CREATION" >> results.txt 35 | exit 1 36 | fi 37 | echo "SUCCESSFUL CHANNEL CREATION" >> results.txt 38 | sleep 5 39 | TOTAL_PEERS=3 40 | i=0 41 | while test $i -lt $TOTAL_PEERS 42 | do 43 | echo "###################################### Joining peer$i" 44 | CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer$i:7051 peer channel join -b myc1.block >>log.txt 2>&1 45 | cat log.txt 46 | echo '-------------------------------------------------' 47 | grep -q "Join Result: " log.txt 48 | if [ $? -ne 0 ]; then 49 | echo "ERROR on JOIN CHANNEL" >> results.txt 50 | exit 1 51 | fi 52 | echo "SUCCESSFUL JOIN CHANNEL on PEER$i" >> results.txt 53 | echo "SUCCESSFUL JOIN CHANNEL on PEER$i" 54 | i=$((i+1)) 55 | sleep 10 56 | done 57 | echo "Peer0 , Peer1 and Peer2 are added to the channel myc1" 58 | cat log.txt 59 | exit 0 60 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/hackfest/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "chainName":"fabric-client1", 3 | "chaincodeID":"mycc", 4 | "channelID":"myc1", 5 | "goPath":"../../test/fixtures", 6 | "chaincodePath":"github.com/example_cc", 7 | "keyValueStore":"/tmp/fabric-client-kvs", 8 | "waitTime":"30000", 9 | "caserver":{ 10 | "ca_url":"http://localhost:8054" 11 | }, 12 | "orderer":{ 13 | "orderer_url":"grpc://localhost:8050" 14 | }, 15 | "peers":[ 16 | { 17 | "peer_url":"grpc://localhost:8051" 18 | }, 19 | { 20 | "peer_url":"grpc://localhost:8055" 21 | }, 22 | { 23 | "peer_url":"grpc://localhost:8056" 24 | } 25 | ], 26 | "events":[ 27 | { 28 | "event_url":"grpc://localhost:8053" 29 | }, 30 | { 31 | "event_url":"grpc://localhost:9053" 32 | }, 33 | { 34 | "event_url":"grpc://localhost:10053" 35 | } 36 | ], 37 | "users":[ 38 | { 39 | "username":"admin", 40 | "secret":"adminpw" 41 | } 42 | ], 43 | "dockerfile_contents": "from hyperledger/fabric-ccenv\n COPY . $GOPATH/src/build-chaincode/\n WORKDIR $GOPATH\n\n RUN go install build-chaincode && mv $GOPATH/bin/build-chaincode $GOPATH/bin/%s", 44 | "deployRequest":{ 45 | "functionName":"init", 46 | "args":[ 47 | "a", 48 | "100", 49 | "b", 50 | "200" 51 | ] 52 | }, 53 | "invokeRequest":{ 54 | "functionName":"invoke", 55 | "args":[ 56 | "move", 57 | "a", 58 | "b", 59 | "100" 60 | ] 61 | }, 62 | "queryRequest":{ 63 | "functionName":"invoke", 64 | "args":[ 65 | "query", 66 | "b" 67 | ] 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/hackfest/deploy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('DEPLOY'); 22 | 23 | var hfc = require('fabric-client'); 24 | var utils = require('fabric-client/lib/utils.js'); 25 | var Peer = require('fabric-client/lib/Peer.js'); 26 | var Orderer = require('fabric-client/lib/Orderer.js'); 27 | var EventHub = require('fabric-client/lib/EventHub.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | logger.setLevel('DEBUG'); 33 | 34 | var client = new hfc(); 35 | var chain; 36 | var eventhub; 37 | var tx_id = null; 38 | 39 | if (!process.env.GOPATH){ 40 | process.env.GOPATH = config.goPath; 41 | } 42 | 43 | init(); 44 | 45 | function init() { 46 | chain = client.newChain(config.chainName); 47 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 48 | eventhub = new EventHub(); 49 | eventhub.setPeerAddr(config.events[0].event_url); 50 | eventhub.connect(); 51 | for (var i = 0; i < config.peers.length; i++) { 52 | chain.addPeer(new Peer(config.peers[i].peer_url)); 53 | } 54 | } 55 | 56 | hfc.newDefaultKeyValueStore({ 57 | path: config.keyValueStore 58 | }).then(function(store) { 59 | client.setStateStore(store); 60 | return helper.getSubmitter(client); 61 | }).then( 62 | function(admin) { 63 | logger.info('Successfully obtained enrolled user to deploy the chaincode'); 64 | 65 | logger.info('Executing Deploy'); 66 | tx_id = helper.getTxId(); 67 | var nonce = utils.getNonce(); 68 | var args = helper.getArgs(config.deployRequest.args); 69 | // send proposal to endorser 70 | var request = { 71 | chaincodePath: config.chaincodePath, 72 | chaincodeId: config.chaincodeID, 73 | fcn: config.deployRequest.functionName, 74 | args: args, 75 | chainId: config.channelID, 76 | txId: tx_id, 77 | nonce: nonce, 78 | 'dockerfile-contents': config.dockerfile_contents 79 | }; 80 | return chain.sendDeploymentProposal(request); 81 | } 82 | ).then( 83 | function(results) { 84 | logger.info('Successfully obtained proposal responses from endorsers'); 85 | return helper.processProposal(chain, results, 'deploy'); 86 | } 87 | ).then( 88 | function(response) { 89 | if (response.status === 'SUCCESS') { 90 | logger.info('Successfully sent deployment transaction to the orderer.'); 91 | var handle = setTimeout(() => { 92 | logger.error('Failed to receive transaction notification within the timeout period'); 93 | process.exit(1); 94 | }, parseInt(config.waitTime)); 95 | 96 | eventhub.registerTxEvent(tx_id.toString(), (tx) => { 97 | logger.info('The chaincode transaction has been successfully committed'); 98 | clearTimeout(handle); 99 | eventhub.disconnect(); 100 | }); 101 | } else { 102 | logger.error('Failed to order the deployment endorsement. Error code: ' + response.status); 103 | } 104 | } 105 | ).catch( 106 | function(err) { 107 | eventhub.disconnect(); 108 | logger.error(err.stack ? err.stack : err); 109 | } 110 | ); 111 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/hackfest/invoke.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('INVOKE'); 22 | 23 | var hfc = require('fabric-client'); 24 | var utils = require('fabric-client/lib/utils.js'); 25 | var Peer = require('fabric-client/lib/Peer.js'); 26 | var Orderer = require('fabric-client/lib/Orderer.js'); 27 | var EventHub = require('fabric-client/lib/EventHub.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | logger.setLevel('DEBUG'); 33 | 34 | var client = new hfc(); 35 | var chain; 36 | var eventhub; 37 | var tx_id = null; 38 | 39 | init(); 40 | 41 | function init() { 42 | chain = client.newChain(config.chainName); 43 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 44 | eventhub = new EventHub(); 45 | eventhub.setPeerAddr(config.events[0].event_url); 46 | eventhub.connect(); 47 | for (var i = 0; i < config.peers.length; i++) { 48 | chain.addPeer(new Peer(config.peers[i].peer_url)); 49 | } 50 | } 51 | 52 | hfc.newDefaultKeyValueStore({ 53 | path: config.keyValueStore 54 | }).then(function(store) { 55 | client.setStateStore(store); 56 | return helper.getSubmitter(client); 57 | }).then( 58 | function(admin) { 59 | logger.info('Successfully obtained user to submit transaction'); 60 | 61 | logger.info('Executing Invoke'); 62 | tx_id = helper.getTxId(); 63 | var nonce = utils.getNonce(); 64 | var args = helper.getArgs(config.invokeRequest.args); 65 | // send proposal to endorser 66 | var request = { 67 | chaincodeId: config.chaincodeID, 68 | fcn: config.invokeRequest.functionName, 69 | args: args, 70 | chainId: config.channelID, 71 | txId: tx_id, 72 | nonce: nonce 73 | }; 74 | return chain.sendTransactionProposal(request); 75 | } 76 | ).then( 77 | function(results) { 78 | logger.info('Successfully obtained proposal responses from endorsers'); 79 | 80 | return helper.processProposal(chain, results, 'move'); 81 | } 82 | ).then( 83 | function(response) { 84 | if (response.status === 'SUCCESS') { 85 | var handle = setTimeout(() => { 86 | logger.error('Failed to receive transaction notification within the timeout period'); 87 | process.exit(1); 88 | }, parseInt(config.waitTime)); 89 | 90 | eventhub.registerTxEvent(tx_id.toString(), (tx) => { 91 | logger.info('The chaincode transaction has been successfully committed'); 92 | clearTimeout(handle); 93 | eventhub.disconnect(); 94 | }); 95 | } 96 | } 97 | ).catch( 98 | function(err) { 99 | eventhub.disconnect(); 100 | logger.error('Failed to invoke transaction due to error: ' + err.stack ? err.stack : err); 101 | } 102 | ); 103 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/hackfest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "balance-transfer", 3 | "version": "0.0.1", 4 | "description": "A balance-transfer example node program to demonstrate using NodeSDK apis", 5 | "main": "deploy.js", 6 | "keywords": [ 7 | "fabric-client example", 8 | "balance-transfer node sample" 9 | ], 10 | "engines": { 11 | "node": ">=4.5.0", 12 | "npm": ">=2.15.9" 13 | }, 14 | "devDependencies": { 15 | "fabric-client": "^0.1.0", 16 | "fabric-ca-client": "^0.1.0", 17 | "log4js": "^0.6.38", 18 | "winston": "^2.2.0" 19 | }, 20 | "license": "Apache-2.0" 21 | } 22 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/hackfest/query.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('QUERY'); 22 | logger.setLevel('DEBUG'); 23 | 24 | var hfc = require('fabric-client'); 25 | var utils = require('fabric-client/lib/utils.js'); 26 | var Peer = require('fabric-client/lib/Peer.js'); 27 | var Orderer = require('fabric-client/lib/Orderer.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | var client = new hfc(); 33 | var chain; 34 | 35 | init(); 36 | 37 | function init() { 38 | chain = client.newChain(config.chainName); 39 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 40 | for (var i = 0; i < config.peers.length; i++) { 41 | chain.addPeer(new Peer(config.peers[i].peer_url)); 42 | } 43 | } 44 | 45 | hfc.newDefaultKeyValueStore({ 46 | path: config.keyValueStore 47 | }).then(function(store) { 48 | client.setStateStore(store); 49 | return helper.getSubmitter(client); 50 | }).then( 51 | function(admin) { 52 | logger.info('Successfully obtained enrolled user to perform query'); 53 | 54 | logger.info('Executing Query'); 55 | var targets = []; 56 | for (var i = 0; i < config.peers.length; i++) { 57 | targets.push(config.peers[i]); 58 | } 59 | var args = helper.getArgs(config.queryRequest.args); 60 | //chaincode query request 61 | var request = { 62 | targets: targets, 63 | chaincodeId: config.chaincodeID, 64 | chainId: config.channelID, 65 | txId: utils.buildTransactionID(), 66 | nonce: utils.getNonce(), 67 | fcn: config.queryRequest.functionName, 68 | args: args 69 | }; 70 | // Query chaincode 71 | return chain.queryByChaincode(request); 72 | } 73 | ).then( 74 | function(response_payloads) { 75 | for (let i = 0; i < response_payloads.length; i++) { 76 | logger.info('############### Query results after the move on PEER%j, User "b" now has %j', i, response_payloads[i].toString('utf8')); 77 | } 78 | } 79 | ).catch( 80 | function(err) { 81 | logger.error('Failed to end to end test with error:' + err.stack ? err.stack : err); 82 | } 83 | ); 84 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/query.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var utils = require('fabric-client/lib/utils.js'); 22 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 23 | var logger = utils.getLogger('E2E query'); 24 | 25 | var tape = require('tape'); 26 | var _test = require('tape-promise'); 27 | var test = _test(tape); 28 | 29 | var path = require('path'); 30 | var fs = require('fs'); 31 | var util = require('util'); 32 | 33 | var hfc = require('fabric-client'); 34 | var EventHub = require('fabric-client/lib/EventHub.js'); 35 | var testUtil = require('../../unit/util.js'); 36 | 37 | var e2e = testUtil.END2END; 38 | hfc.addConfigFile(path.join(__dirname, './config.json')); 39 | var ORGS = hfc.getConfigSetting('test-network'); 40 | 41 | var tx_id = null; 42 | var nonce = null; 43 | var the_user = null; 44 | //new add 45 | var config = require('./config.json'); 46 | var helper = require('./helper.js'); 47 | var args = helper.getArgs(config.invokeRequest.args); 48 | 49 | test('\n\n***** End-to-end flow: query chaincode *****', (t) => { 50 | // this is a transaction, will just use org1's identity to 51 | // submit the request. intentionally we are using a different org 52 | // than the one that submitted the "move" transaction, although either org 53 | // should work properly 54 | var org = 'org1'; 55 | var client = new hfc(); 56 | var chain = client.newChain(e2e.channel); 57 | 58 | var orgName = ORGS[org].name; 59 | 60 | var targets = []; 61 | // set up the chain to use each org's 'peer1' for 62 | // both requests and events 63 | for (let key in ORGS) { 64 | if (ORGS.hasOwnProperty(key) && typeof ORGS[key].peer1 !== 'undefined') { 65 | let data = fs.readFileSync(path.join(__dirname, ORGS[key].peer1['tls_cacerts'])); 66 | let peer = client.newPeer( 67 | ORGS[key].peer1.requests, 68 | { 69 | pem: Buffer.from(data).toString(), 70 | 'ssl-target-name-override': ORGS[key].peer1['server-hostname'] 71 | }); 72 | chain.addPeer(peer); 73 | } 74 | } 75 | 76 | return hfc.newDefaultKeyValueStore({ 77 | path: testUtil.storePathForOrg(orgName) 78 | }).then((store) => { 79 | 80 | client.setStateStore(store); 81 | return testUtil.getSubmitter(client, t, org); 82 | 83 | }).then((admin) => { 84 | the_user = admin; 85 | 86 | nonce = utils.getNonce(); 87 | tx_id = hfc.buildTransactionID(nonce, the_user); 88 | 89 | // send query 90 | var request = { 91 | chaincodeId : e2e.chaincodeId, 92 | chaincodeVersion : e2e.chaincodeVersion, 93 | chainId: e2e.channel, 94 | txId: tx_id, 95 | nonce: nonce, 96 | fcn: 'invoke', 97 | args: ['query',args[1]], 98 | }; 99 | return chain.queryByChaincode(request); 100 | }, 101 | (err) => { 102 | t.comment('Failed to get submitter \'admin\''); 103 | t.fail('Failed to get submitter \'admin\'. Error: ' + err.stack ? err.stack : err ); 104 | t.end(); 105 | }).then((response_payloads) => { 106 | if (response_payloads) { 107 | for(let i = 0; i < response_payloads.length; i++) { 108 | logger.info('############### Query results after the move on PEER%j, User %j now has %j', i, args[1].toString('utf8'), response_payloads[i].toString('utf8')); 109 | //t.equal(response_payloads[i].toString('utf8'),'300','checking query results are correct that user b has 300 now after the move'); 110 | } 111 | t.end(); 112 | } else { 113 | t.fail('response_payloads is null'); 114 | t.end(); 115 | } 116 | }, 117 | (err) => { 118 | t.fail('Failed to send query due to error: ' + err.stack ? err.stack : err); 119 | t.end(); 120 | }).catch((err) => { 121 | t.fail('Failed to end to end test with error:' + err.stack ? err.stack : err); 122 | t.end(); 123 | }); 124 | }); 125 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/query1.sh: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | docker logs -t dev-peer0-end2end-v113 3 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/re.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | old_file ='/home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/config.json' 5 | f =open(old_file,'r+') 6 | 7 | flist=f.readlines() 8 | flist[45]=' "a"\n' 9 | flist[46]=' "a"\n' 10 | flist[47]=' "100"\n' 11 | f=open(old_file,'w+') 12 | f.writelines(flist) -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/result: -------------------------------------------------------------------------------- 1 | info: Successfully constructed a winston logger with configurations debug=console 2 | TAP version 13 3 | # 4 | 5 | ***** End-to-end flow: query chaincode ***** 6 | info: [crypto_ecdsa_aes]: This class requires a CryptoKeyStore to save keys, using the store: {"opts":{"path":"/root/.hfc-key-store"}} 7 | info: [Client.js]: Successfully loaded user "admin" from local key value store 8 | ok 1 Successfully loaded member from persistence 9 | info: [E2E query]: ############### Query results after the move on PEER0, User "b" now has "100" 10 | info: [E2E query]: ############### Query results after the move on PEER1, User "b" now has "100" 11 | 12 | 1..1 13 | # tests 1 14 | # pass 1 15 | 16 | # ok 17 | 18 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/script.sh: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | #修改为:node $GOPTAH/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2e/invoke-transaction.js 3 | node /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2e/invoke-transaction.js 4 | #node /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/query.js 5 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/upgrade.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var tape = require('tape'); 22 | var _test = require('tape-promise'); 23 | var test = _test(tape); 24 | var e2eUtils = require('./e2eUtils.js'); 25 | var testUtil = require('../../unit/util.js'); 26 | 27 | testUtil.setupChaincodeDeploy(); 28 | 29 | test('\n\n***** U P G R A D E flow: chaincode install *****\n\n', (t) => { 30 | e2eUtils.installChaincode('org1', testUtil.CHAINCODE_UPGRADE_PATH, 'v113', t) 31 | .then(() => { 32 | t.pass('Successfully installed chaincode in peers of organization "org1"'); 33 | return e2eUtils.installChaincode('org2', testUtil.CHAINCODE_UPGRADE_PATH, 'v113', t); 34 | }, (err) => { 35 | t.fail('Failed to install chaincode in peers of organization "org1". ' + err.stack ? err.stack : err); 36 | t.end(); 37 | }).then(() => { 38 | t.pass('Successfully installed chaincode in peers of organization "org2"'); 39 | t.end(); 40 | }, (err) => { 41 | t.fail('Failed to install chaincode in peers of organization "org2". ' + err.stack ? err.stack : err); 42 | t.end(); 43 | }).catch((err) => { 44 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 45 | t.end(); 46 | }); 47 | }); 48 | 49 | test('\n\n***** U P G R A D E flow: upgrade chaincode *****', (t) => { 50 | e2eUtils.instantiateChaincode('org1', testUtil.CHAINCODE_UPGRADE_PATH, 'v113', true, t) 51 | .then((result) => { 52 | if(result){ 53 | t.pass('Successfully upgrade chaincode on the channel'); 54 | t.end(); 55 | } 56 | else { 57 | t.fail('Failed to upgrade chaincode '); 58 | t.end(); 59 | } 60 | }, (err) => { 61 | t.fail('Failed to upgrade chaincode on the channel' + err.stack ? err.stack : err); 62 | t.end(); 63 | }).catch((err) => { 64 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 65 | t.end(); 66 | }); 67 | }); 68 | /* 69 | test('\n\n***** U P G R A D E flow: invoke transaction to move money *****', (t) => { 70 | e2eUtils.invokeChaincode('org2', 'v113', t) 71 | .then((result) => { 72 | if(result){ 73 | t.pass('Successfully invoke transaction chaincode on the channel'); 74 | t.end(); 75 | } 76 | else { 77 | t.fail('Failed to invoke transaction chaincode '); 78 | t.end(); 79 | } 80 | }, (err) => { 81 | var path = require('path'); 82 | var fs = require('fs-extra'); 83 | var os = require('os'); 84 | 85 | t.fail('Failed to invoke transaction chaincode on the channel' + err.stack ? err.stack : err); 86 | t.end(); 87 | }).catch((err) => { 88 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 89 | t.end(); 90 | }); 91 | }); 92 | 93 | test('\n\n***** U P G R A D E flow: query chaincode *****', (t) => { 94 | e2eUtils.queryChaincode('org2', 'v113', '410', t) 95 | .then((result) => { 96 | if(result){ 97 | t.pass('Successfully query chaincode on the channel'); 98 | t.end(); 99 | } 100 | else { 101 | t.fail('Failed to query chaincode '); 102 | t.end(); 103 | } 104 | }, (err) => { 105 | t.fail('Failed to query chaincode on the channel' + err.stack ? err.stack : err); 106 | t.end(); 107 | }).catch((err) => { 108 | t.fail('Test failed due to unexpected reasons. ' + err.stack ? err.stack : err); 109 | t.end(); 110 | }); 111 | }); 112 | */ -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2e/yunxing.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import os 3 | import socket 4 | import sys 5 | from thread import * 6 | #os .system('./script.sh') #run node invoke && query 7 | 8 | os .system('sh /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/script.sh') #run node invoke && query 9 | 10 | 11 | ''' 12 | 13 | #Receiving from client 14 | data = conn.recv(512) 15 | reply = u'收到交易信息....正在执行交易.....' 16 | #change config.json 17 | #os .system('./script.sh') #run node invoke && query 18 | #reply = u'交易完成 您已经购买 电量' 19 | ''' -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "test-network": { 3 | "orderer": { 4 | "url": "grpcs://localhost:7050", 5 | "server-hostname": "orderer0", 6 | "tls_cacerts": "../../fixtures/tls/orderer/ca-cert.pem" 7 | }, 8 | "org1": { 9 | "name": "peerOrg1", 10 | "mspid": "Org1MSP", 11 | "ca": "https://localhost:7054", 12 | "peer1": { 13 | "requests": "grpcs://localhost:7051", 14 | "events": "grpcs://localhost:7053", 15 | "server-hostname": "peer0", 16 | "tls_cacerts": "../../fixtures/tls/peers/peer0/ca-cert.pem" 17 | }, 18 | "peer2": { 19 | "requests": "grpcs://localhost:7056", 20 | "events": "grpcs://localhost:7058", 21 | "server-hostname": "peer1", 22 | "tls_cacerts": "../../fixtures/tls/peers/peer1/ca-cert.pem" 23 | } 24 | }, 25 | "org2": { 26 | "name": "peerOrg2", 27 | "mspid": "Org2MSP", 28 | "ca": "https://localhost:8054", 29 | "peer1": { 30 | "requests": "grpcs://localhost:8051", 31 | "events": "grpcs://localhost:8053", 32 | "server-hostname": "peer2", 33 | "tls_cacerts": "../../fixtures/tls/peers/peer2/ca-cert.pem" 34 | }, 35 | "peer2": { 36 | "requests": "grpcs://localhost:8056", 37 | "events": "grpcs://localhost:8058", 38 | "server-hostname": "peer3", 39 | "tls_cacerts": "../../fixtures/tls/peers/peer3/ca-cert.pem" 40 | } 41 | } 42 | }, 43 | "invokeRequest":{ 44 | "functionName":"invoke", 45 | "args":[ 46 | "a", 47 | "b", 48 | "c", 49 | "d", 50 | "f", 51 | "g", 52 | "e", 53 | "p", 54 | "0", 55 | "0", 56 | "0", 57 | "0", 58 | "0", 59 | "0", 60 | "0", 61 | "0", 62 | "move" 63 | ] 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/config.json_bak: -------------------------------------------------------------------------------- 1 | { 2 | "test-network": { 3 | "orderer": { 4 | "url": "grpcs://localhost:7050", 5 | "server-hostname": "orderer0", 6 | "tls_cacerts": "../../fixtures/tls/orderer/ca-cert.pem" 7 | }, 8 | "org1": { 9 | "name": "peerOrg1", 10 | "mspid": "Org1MSP", 11 | "ca": "https://localhost:7054", 12 | "peer1": { 13 | "requests": "grpcs://localhost:7051", 14 | "events": "grpcs://localhost:7053", 15 | "server-hostname": "peer0", 16 | "tls_cacerts": "../../fixtures/tls/peers/peer0/ca-cert.pem" 17 | }, 18 | "peer2": { 19 | "requests": "grpcs://localhost:7056", 20 | "events": "grpcs://localhost:7058", 21 | "server-hostname": "peer1", 22 | "tls_cacerts": "../../fixtures/tls/peers/peer1/ca-cert.pem" 23 | } 24 | }, 25 | "org2": { 26 | "name": "peerOrg2", 27 | "mspid": "Org2MSP", 28 | "ca": "https://localhost:8054", 29 | "peer1": { 30 | "requests": "grpcs://localhost:8051", 31 | "events": "grpcs://localhost:8053", 32 | "server-hostname": "peer2", 33 | "tls_cacerts": "../../fixtures/tls/peers/peer2/ca-cert.pem" 34 | }, 35 | "peer2": { 36 | "requests": "grpcs://localhost:8056", 37 | "events": "grpcs://localhost:8058", 38 | "server-hostname": "peer3", 39 | "tls_cacerts": "../../fixtures/tls/peers/peer3/ca-cert.pem" 40 | } 41 | } 42 | }, 43 | "invokeRequest":{ 44 | "functionName":"invoke", 45 | "args":[ 46 | "a", 47 | "b", 48 | "100" 49 | ] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/create-channel.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the 'License'); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an 'AS IS' BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 'use strict'; 17 | 18 | var utils = require('fabric-client/lib/utils.js'); 19 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 20 | var logger = utils.getLogger('E2E create-channel'); 21 | 22 | var tape = require('tape'); 23 | var _test = require('tape-promise'); 24 | var test = _test(tape); 25 | 26 | var hfc = require('fabric-client'); 27 | var util = require('util'); 28 | var fs = require('fs'); 29 | var path = require('path'); 30 | 31 | var testUtil = require('../../unit/util.js'); 32 | 33 | var the_user = null; 34 | 35 | hfc.addConfigFile(path.join(__dirname, './config.json')); 36 | var ORGS = hfc.getConfigSetting('test-network'); 37 | 38 | // 39 | //Attempt to send a request to the orderer with the sendCreateChain method 40 | // 41 | test('\n\n***** End-to-end flow: create channel *****\n\n', function(t) { 42 | // 43 | // Create and configure the test chain 44 | // 45 | var client = new hfc(); 46 | 47 | var caRootsPath = ORGS.orderer.tls_cacerts; 48 | let data = fs.readFileSync(path.join(__dirname, caRootsPath)); 49 | let caroots = Buffer.from(data).toString(); 50 | 51 | var orderer = client.newOrderer( 52 | ORGS.orderer.url, 53 | { 54 | 'pem': caroots, 55 | 'ssl-target-name-override': ORGS.orderer['server-hostname'] 56 | } 57 | ); 58 | 59 | // Acting as a client in org1 when creating the channel 60 | var org = ORGS.org1.name; 61 | 62 | utils.setConfigSetting('key-value-store', 'fabric-client/lib/impl/FileKeyValueStore.js'); 63 | return hfc.newDefaultKeyValueStore({ 64 | path: testUtil.storePathForOrg(org) 65 | }).then((store) => { 66 | client.setStateStore(store); 67 | return testUtil.getSubmitter(client, t, 'org1'); 68 | }) 69 | .then((admin) => { 70 | t.pass('Successfully enrolled user \'admin\''); 71 | the_user = admin; 72 | 73 | // readin the envelope to send to the orderer 74 | data = fs.readFileSync('./test/fixtures/channel/mychannel.tx'); 75 | var request = { 76 | envelope : data, 77 | name : 'mychannel', 78 | orderer : orderer 79 | }; 80 | // send to orderer 81 | return client.createChannel(request); 82 | }, (err) => { 83 | t.fail('Failed to enroll user \'admin\'. ' + err); 84 | t.end(); 85 | }) 86 | .then((chain) => { 87 | logger.debug(' response ::%j',chain); 88 | 89 | if (chain) { 90 | var test_orderers = chain.getOrderers(); 91 | if(test_orderers) { 92 | var test_orderer = test_orderers[0]; 93 | if(test_orderer === orderer) { 94 | t.pass('Successfully created the channel.'); 95 | } 96 | else { 97 | t.fail('Chain did not have the orderer.'); 98 | } 99 | } 100 | return sleep(5000); 101 | } else { 102 | t.fail('Failed to create the channel. '); 103 | t.end(); 104 | } 105 | }, (err) => { 106 | t.fail('Failed to initialize the channel: ' + err.stack ? err.stack : err); 107 | t.end(); 108 | }) 109 | .then((nothing) => { 110 | t.pass('Successfully waited to make sure new channel was created.'); 111 | t.end(); 112 | }, (err) => { 113 | t.fail('Failed to sleep due to error: ' + err.stack ? err.stack : err); 114 | t.end(); 115 | }); 116 | }); 117 | 118 | function sleep(ms) { 119 | return new Promise(resolve => setTimeout(resolve, ms)); 120 | } 121 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/exec.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/fabric-sdk-node/test/integration/e2epy/exec.js -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/hackfest/channel_test.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # find address of peer0 in your network 4 | PEER0_IP_ADDRESS=`perl -e 'use Socket; $a = inet_ntoa(inet_aton("peer0")); print "$a\n";'` 5 | 6 | # create an anchor file 7 | cat<anchorPeer.txt 8 | $PEER0_IP_ADDRESS 9 | 7051 10 | -----BEGIN CERTIFICATE----- 11 | MIICjDCCAjKgAwIBAgIUBEVwsSx0TmqdbzNwleNBBzoIT0wwCgYIKoZIzj0EAwIw 12 | fzELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNh 13 | biBGcmFuY2lzY28xHzAdBgNVBAoTFkludGVybmV0IFdpZGdldHMsIEluYy4xDDAK 14 | BgNVBAsTA1dXVzEUMBIGA1UEAxMLZXhhbXBsZS5jb20wHhcNMTYxMTExMTcwNzAw 15 | WhcNMTcxMTExMTcwNzAwWjBjMQswCQYDVQQGEwJVUzEXMBUGA1UECBMOTm9ydGgg 16 | Q2Fyb2xpbmExEDAOBgNVBAcTB1JhbGVpZ2gxGzAZBgNVBAoTEkh5cGVybGVkZ2Vy 17 | IEZhYnJpYzEMMAoGA1UECxMDQ09QMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE 18 | HBuKsAO43hs4JGpFfiGMkB/xsILTsOvmN2WmwpsPHZNL6w8HWe3xCPQtdG/XJJvZ 19 | +C756KEsUBM3yw5PTfku8qOBpzCBpDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw 20 | FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFOFC 21 | dcUZ4es3ltiCgAVDoyLfVpPIMB8GA1UdIwQYMBaAFBdnQj2qnoI/xMUdn1vDmdG1 22 | nEgQMCUGA1UdEQQeMByCCm15aG9zdC5jb22CDnd3dy5teWhvc3QuY29tMAoGCCqG 23 | SM49BAMCA0gAMEUCIDf9Hbl4xn3z4EwNKmilM9lX2Fq4jWpAaRVB97OmVEeyAiEA 24 | 25aDPQHGGq2AvhKT0wvt08cX1GTGCIbfmuLpMwKQj38= 25 | -----END CERTIFICATE----- 26 | EOF 27 | 28 | #create 29 | echo "Creating channel on Orderer" 30 | CORE_PEER_GOSSIP_IGNORESECURITY=true CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/msp/sampleconfig CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 peer channel create -c myc1 -a anchorPeer.txt >>log.txt 2>&1 31 | cat log.txt 32 | grep -q "Exiting" log.txt 33 | if [ $? -ne 0 ]; then 34 | echo "ERROR on CHANNEL CREATION" >> results.txt 35 | exit 1 36 | fi 37 | echo "SUCCESSFUL CHANNEL CREATION" >> results.txt 38 | sleep 5 39 | TOTAL_PEERS=3 40 | i=0 41 | while test $i -lt $TOTAL_PEERS 42 | do 43 | echo "###################################### Joining peer$i" 44 | CORE_PEER_COMMITTER_LEDGER_ORDERER=orderer:7050 CORE_PEER_ADDRESS=peer$i:7051 peer channel join -b myc1.block >>log.txt 2>&1 45 | cat log.txt 46 | echo '-------------------------------------------------' 47 | grep -q "Join Result: " log.txt 48 | if [ $? -ne 0 ]; then 49 | echo "ERROR on JOIN CHANNEL" >> results.txt 50 | exit 1 51 | fi 52 | echo "SUCCESSFUL JOIN CHANNEL on PEER$i" >> results.txt 53 | echo "SUCCESSFUL JOIN CHANNEL on PEER$i" 54 | i=$((i+1)) 55 | sleep 10 56 | done 57 | echo "Peer0 , Peer1 and Peer2 are added to the channel myc1" 58 | cat log.txt 59 | exit 0 60 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/hackfest/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "chainName":"fabric-client1", 3 | "chaincodeID":"mycc", 4 | "channelID":"myc1", 5 | "goPath":"../../test/fixtures", 6 | "chaincodePath":"github.com/example_cc", 7 | "keyValueStore":"/tmp/fabric-client-kvs", 8 | "waitTime":"30000", 9 | "caserver":{ 10 | "ca_url":"http://localhost:8054" 11 | }, 12 | "orderer":{ 13 | "orderer_url":"grpc://localhost:8050" 14 | }, 15 | "peers":[ 16 | { 17 | "peer_url":"grpc://localhost:8051" 18 | }, 19 | { 20 | "peer_url":"grpc://localhost:8055" 21 | }, 22 | { 23 | "peer_url":"grpc://localhost:8056" 24 | } 25 | ], 26 | "events":[ 27 | { 28 | "event_url":"grpc://localhost:8053" 29 | }, 30 | { 31 | "event_url":"grpc://localhost:9053" 32 | }, 33 | { 34 | "event_url":"grpc://localhost:10053" 35 | } 36 | ], 37 | "users":[ 38 | { 39 | "username":"admin", 40 | "secret":"adminpw" 41 | } 42 | ], 43 | "dockerfile_contents": "from hyperledger/fabric-ccenv\n COPY . $GOPATH/src/build-chaincode/\n WORKDIR $GOPATH\n\n RUN go install build-chaincode && mv $GOPATH/bin/build-chaincode $GOPATH/bin/%s", 44 | "deployRequest":{ 45 | "functionName":"init", 46 | "args":[ 47 | "a", 48 | "100", 49 | "b", 50 | "200" 51 | ] 52 | }, 53 | "invokeRequest":{ 54 | "functionName":"invoke", 55 | "args":[ 56 | "move", 57 | "a", 58 | "b", 59 | "100" 60 | ] 61 | }, 62 | "queryRequest":{ 63 | "functionName":"invoke", 64 | "args":[ 65 | "query", 66 | "b" 67 | ] 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/hackfest/deploy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('DEPLOY'); 22 | 23 | var hfc = require('fabric-client'); 24 | var utils = require('fabric-client/lib/utils.js'); 25 | var Peer = require('fabric-client/lib/Peer.js'); 26 | var Orderer = require('fabric-client/lib/Orderer.js'); 27 | var EventHub = require('fabric-client/lib/EventHub.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | logger.setLevel('DEBUG'); 33 | 34 | var client = new hfc(); 35 | var chain; 36 | var eventhub; 37 | var tx_id = null; 38 | 39 | if (!process.env.GOPATH){ 40 | process.env.GOPATH = config.goPath; 41 | } 42 | 43 | init(); 44 | 45 | function init() { 46 | chain = client.newChain(config.chainName); 47 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 48 | eventhub = new EventHub(); 49 | eventhub.setPeerAddr(config.events[0].event_url); 50 | eventhub.connect(); 51 | for (var i = 0; i < config.peers.length; i++) { 52 | chain.addPeer(new Peer(config.peers[i].peer_url)); 53 | } 54 | } 55 | 56 | hfc.newDefaultKeyValueStore({ 57 | path: config.keyValueStore 58 | }).then(function(store) { 59 | client.setStateStore(store); 60 | return helper.getSubmitter(client); 61 | }).then( 62 | function(admin) { 63 | logger.info('Successfully obtained enrolled user to deploy the chaincode'); 64 | 65 | logger.info('Executing Deploy'); 66 | tx_id = helper.getTxId(); 67 | var nonce = utils.getNonce(); 68 | var args = helper.getArgs(config.deployRequest.args); 69 | // send proposal to endorser 70 | var request = { 71 | chaincodePath: config.chaincodePath, 72 | chaincodeId: config.chaincodeID, 73 | fcn: config.deployRequest.functionName, 74 | args: args, 75 | chainId: config.channelID, 76 | txId: tx_id, 77 | nonce: nonce, 78 | 'dockerfile-contents': config.dockerfile_contents 79 | }; 80 | return chain.sendDeploymentProposal(request); 81 | } 82 | ).then( 83 | function(results) { 84 | logger.info('Successfully obtained proposal responses from endorsers'); 85 | return helper.processProposal(chain, results, 'deploy'); 86 | } 87 | ).then( 88 | function(response) { 89 | if (response.status === 'SUCCESS') { 90 | logger.info('Successfully sent deployment transaction to the orderer.'); 91 | var handle = setTimeout(() => { 92 | logger.error('Failed to receive transaction notification within the timeout period'); 93 | process.exit(1); 94 | }, parseInt(config.waitTime)); 95 | 96 | eventhub.registerTxEvent(tx_id.toString(), (tx) => { 97 | logger.info('The chaincode transaction has been successfully committed'); 98 | clearTimeout(handle); 99 | eventhub.disconnect(); 100 | }); 101 | } else { 102 | logger.error('Failed to order the deployment endorsement. Error code: ' + response.status); 103 | } 104 | } 105 | ).catch( 106 | function(err) { 107 | eventhub.disconnect(); 108 | logger.error(err.stack ? err.stack : err); 109 | } 110 | ); 111 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/hackfest/invoke.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('INVOKE'); 22 | 23 | var hfc = require('fabric-client'); 24 | var utils = require('fabric-client/lib/utils.js'); 25 | var Peer = require('fabric-client/lib/Peer.js'); 26 | var Orderer = require('fabric-client/lib/Orderer.js'); 27 | var EventHub = require('fabric-client/lib/EventHub.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | logger.setLevel('DEBUG'); 33 | 34 | var client = new hfc(); 35 | var chain; 36 | var eventhub; 37 | var tx_id = null; 38 | 39 | init(); 40 | 41 | function init() { 42 | chain = client.newChain(config.chainName); 43 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 44 | eventhub = new EventHub(); 45 | eventhub.setPeerAddr(config.events[0].event_url); 46 | eventhub.connect(); 47 | for (var i = 0; i < config.peers.length; i++) { 48 | chain.addPeer(new Peer(config.peers[i].peer_url)); 49 | } 50 | } 51 | 52 | hfc.newDefaultKeyValueStore({ 53 | path: config.keyValueStore 54 | }).then(function(store) { 55 | client.setStateStore(store); 56 | return helper.getSubmitter(client); 57 | }).then( 58 | function(admin) { 59 | logger.info('Successfully obtained user to submit transaction'); 60 | 61 | logger.info('Executing Invoke'); 62 | tx_id = helper.getTxId(); 63 | var nonce = utils.getNonce(); 64 | var args = helper.getArgs(config.invokeRequest.args); 65 | // send proposal to endorser 66 | var request = { 67 | chaincodeId: config.chaincodeID, 68 | fcn: config.invokeRequest.functionName, 69 | args: args, 70 | chainId: config.channelID, 71 | txId: tx_id, 72 | nonce: nonce 73 | }; 74 | return chain.sendTransactionProposal(request); 75 | } 76 | ).then( 77 | function(results) { 78 | logger.info('Successfully obtained proposal responses from endorsers'); 79 | 80 | return helper.processProposal(chain, results, 'move'); 81 | } 82 | ).then( 83 | function(response) { 84 | if (response.status === 'SUCCESS') { 85 | var handle = setTimeout(() => { 86 | logger.error('Failed to receive transaction notification within the timeout period'); 87 | process.exit(1); 88 | }, parseInt(config.waitTime)); 89 | 90 | eventhub.registerTxEvent(tx_id.toString(), (tx) => { 91 | logger.info('The chaincode transaction has been successfully committed'); 92 | clearTimeout(handle); 93 | eventhub.disconnect(); 94 | }); 95 | } 96 | } 97 | ).catch( 98 | function(err) { 99 | eventhub.disconnect(); 100 | logger.error('Failed to invoke transaction due to error: ' + err.stack ? err.stack : err); 101 | } 102 | ); 103 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/hackfest/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "balance-transfer", 3 | "version": "0.0.1", 4 | "description": "A balance-transfer example node program to demonstrate using NodeSDK apis", 5 | "main": "deploy.js", 6 | "keywords": [ 7 | "fabric-client example", 8 | "balance-transfer node sample" 9 | ], 10 | "engines": { 11 | "node": ">=4.5.0", 12 | "npm": ">=2.15.9" 13 | }, 14 | "devDependencies": { 15 | "fabric-client": "^0.1.0", 16 | "fabric-ca-client": "^0.1.0", 17 | "log4js": "^0.6.38", 18 | "winston": "^2.2.0" 19 | }, 20 | "license": "Apache-2.0" 21 | } 22 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/hackfest/query.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | // This is Sample end-to-end standalone program that focuses on exercising all 17 | // parts of the fabric APIs in a happy-path scenario 18 | 'use strict'; 19 | 20 | var log4js = require('log4js'); 21 | var logger = log4js.getLogger('QUERY'); 22 | logger.setLevel('DEBUG'); 23 | 24 | var hfc = require('fabric-client'); 25 | var utils = require('fabric-client/lib/utils.js'); 26 | var Peer = require('fabric-client/lib/Peer.js'); 27 | var Orderer = require('fabric-client/lib/Orderer.js'); 28 | 29 | var config = require('./config.json'); 30 | var helper = require('./helper.js'); 31 | 32 | var client = new hfc(); 33 | var chain; 34 | 35 | init(); 36 | 37 | function init() { 38 | chain = client.newChain(config.chainName); 39 | chain.addOrderer(new Orderer(config.orderer.orderer_url)); 40 | for (var i = 0; i < config.peers.length; i++) { 41 | chain.addPeer(new Peer(config.peers[i].peer_url)); 42 | } 43 | } 44 | 45 | hfc.newDefaultKeyValueStore({ 46 | path: config.keyValueStore 47 | }).then(function(store) { 48 | client.setStateStore(store); 49 | return helper.getSubmitter(client); 50 | }).then( 51 | function(admin) { 52 | logger.info('Successfully obtained enrolled user to perform query'); 53 | 54 | logger.info('Executing Query'); 55 | var targets = []; 56 | for (var i = 0; i < config.peers.length; i++) { 57 | targets.push(config.peers[i]); 58 | } 59 | var args = helper.getArgs(config.queryRequest.args); 60 | //chaincode query request 61 | var request = { 62 | targets: targets, 63 | chaincodeId: config.chaincodeID, 64 | chainId: config.channelID, 65 | txId: utils.buildTransactionID(), 66 | nonce: utils.getNonce(), 67 | fcn: config.queryRequest.functionName, 68 | args: args 69 | }; 70 | // Query chaincode 71 | return chain.queryByChaincode(request); 72 | } 73 | ).then( 74 | function(response_payloads) { 75 | for (let i = 0; i < response_payloads.length; i++) { 76 | logger.info('############### Query results after the move on PEER%j, User "b" now has %j', i, response_payloads[i].toString('utf8')); 77 | } 78 | } 79 | ).catch( 80 | function(err) { 81 | logger.error('Failed to end to end test with error:' + err.stack ? err.stack : err); 82 | } 83 | ); 84 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/query.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | // This is an end-to-end test that focuses on exercising all parts of the fabric APIs 18 | // in a happy-path scenario 19 | 'use strict'; 20 | 21 | var utils = require('fabric-client/lib/utils.js'); 22 | utils.setConfigSetting('hfc-logging', '{"debug":"console"}'); 23 | var logger = utils.getLogger('E2E query'); 24 | 25 | var tape = require('tape'); 26 | var _test = require('tape-promise'); 27 | var test = _test(tape); 28 | 29 | var path = require('path'); 30 | var fs = require('fs'); 31 | var util = require('util'); 32 | 33 | var hfc = require('fabric-client'); 34 | var EventHub = require('fabric-client/lib/EventHub.js'); 35 | var testUtil = require('../../unit/util.js'); 36 | 37 | var e2e = testUtil.END2END; 38 | hfc.addConfigFile(path.join(__dirname, './config.json')); 39 | var ORGS = hfc.getConfigSetting('test-network'); 40 | 41 | var tx_id = null; 42 | var nonce = null; 43 | var the_user = null; 44 | //new add 45 | var config = require('./config.json'); 46 | var helper = require('./helper.js'); 47 | var args = helper.getArgs(config.invokeRequest.args); 48 | 49 | test('\n\n***** End-to-end flow: query chaincode *****', (t) => { 50 | // this is a transaction, will just use org1's identity to 51 | // submit the request. intentionally we are using a different org 52 | // than the one that submitted the "move" transaction, although either org 53 | // should work properly 54 | var org = 'org1'; 55 | var client = new hfc(); 56 | var chain = client.newChain(e2e.channel); 57 | 58 | var orgName = ORGS[org].name; 59 | 60 | var targets = []; 61 | // set up the chain to use each org's 'peer1' for 62 | // both requests and events 63 | for (let key in ORGS) { 64 | if (ORGS.hasOwnProperty(key) && typeof ORGS[key].peer1 !== 'undefined') { 65 | let data = fs.readFileSync(path.join(__dirname, ORGS[key].peer1['tls_cacerts'])); 66 | let peer = client.newPeer( 67 | ORGS[key].peer1.requests, 68 | { 69 | pem: Buffer.from(data).toString(), 70 | 'ssl-target-name-override': ORGS[key].peer1['server-hostname'] 71 | }); 72 | chain.addPeer(peer); 73 | } 74 | } 75 | 76 | return hfc.newDefaultKeyValueStore({ 77 | path: testUtil.storePathForOrg(orgName) 78 | }).then((store) => { 79 | 80 | client.setStateStore(store); 81 | return testUtil.getSubmitter(client, t, org); 82 | 83 | }).then((admin) => { 84 | the_user = admin; 85 | 86 | nonce = utils.getNonce(); 87 | tx_id = hfc.buildTransactionID(nonce, the_user); 88 | 89 | // send query 90 | var request = { 91 | chaincodeId : e2e.chaincodeId, 92 | chaincodeVersion : e2e.chaincodeVersion, 93 | chainId: e2e.channel, 94 | txId: tx_id, 95 | nonce: nonce, 96 | fcn: 'invoke', 97 | args: ['query',args[1]], 98 | }; 99 | return chain.queryByChaincode(request); 100 | }, 101 | (err) => { 102 | t.comment('Failed to get submitter \'admin\''); 103 | t.fail('Failed to get submitter \'admin\'. Error: ' + err.stack ? err.stack : err ); 104 | t.end(); 105 | }).then((response_payloads) => { 106 | if (response_payloads) { 107 | for(let i = 0; i < response_payloads.length; i++) { 108 | logger.info('############### Query results after the move on PEER%j, User %j now has %j', i, args[1].toString('utf8'), response_payloads[i].toString('utf8')); 109 | //t.equal(response_payloads[i].toString('utf8'),'300','checking query results are correct that user b has 300 now after the move'); 110 | } 111 | t.end(); 112 | } else { 113 | t.fail('response_payloads is null'); 114 | t.end(); 115 | } 116 | }, 117 | (err) => { 118 | t.fail('Failed to send query due to error: ' + err.stack ? err.stack : err); 119 | t.end(); 120 | }).catch((err) => { 121 | t.fail('Failed to end to end test with error:' + err.stack ? err.stack : err); 122 | t.end(); 123 | }); 124 | }); 125 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/query1.js: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | docker logs -t dev-peer0-end2end-v109 3 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/re.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | old_file ='/home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/config.json' 5 | f =open(old_file,'r+') 6 | 7 | flist=f.readlines() 8 | flist[45]=' "a"\n' 9 | flist[46]=' "a"\n' 10 | flist[47]=' "100"\n' 11 | f=open(old_file,'w+') 12 | f.writelines(flist) -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/result: -------------------------------------------------------------------------------- 1 | info: Successfully constructed a winston logger with configurations debug=console 2 | TAP version 13 3 | # 4 | 5 | ***** End-to-end flow: query chaincode ***** 6 | info: [crypto_ecdsa_aes]: This class requires a CryptoKeyStore to save keys, using the store: {"opts":{"path":"/root/.hfc-key-store"}} 7 | info: [Client.js]: Successfully loaded user "admin" from local key value store 8 | ok 1 Successfully loaded member from persistence 9 | info: [E2E query]: ############### Query results after the move on PEER0, User "b" now has "100" 10 | info: [E2E query]: ############### Query results after the move on PEER1, User "b" now has "100" 11 | 12 | 1..1 13 | # tests 1 14 | # pass 1 15 | 16 | # ok 17 | 18 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/script.sh: -------------------------------------------------------------------------------- 1 | #/bin/bash 2 | node /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/invoke-transaction.js 3 | #node /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/query.js 4 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/e2epy/yunxing.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import os 3 | import socket 4 | import sys 5 | from thread import * 6 | #os .system('./script.sh') #run node invoke && query 7 | 8 | os .system('sh /home/leon/workspace/src/github.com/hyperledger/fabric/fabric-sdk-node/test/integration/e2epy/script.sh') #run node invoke && query 9 | 10 | 11 | ''' 12 | 13 | #Receiving from client 14 | data = conn.recv(512) 15 | reply = u'收到交易信息....正在执行交易.....' 16 | #change config.json 17 | #os .system('./script.sh') #run node invoke && query 18 | #reply = u'交易完成 您已经购买 电量' 19 | ''' -------------------------------------------------------------------------------- /fabric-sdk-node/test/integration/eventutil.js: -------------------------------------------------------------------------------- 1 | /* 2 | Copyright 2017 London Stock Exchange All Rights Reserved. 3 | 4 | Licensed under the Apache License, Version 2.0 (the 'License'); 5 | you may not use this file except in compliance with the License. 6 | You may obtain a copy of the License at 7 | 8 | http://www.apache.org/licenses/LICENSE-2.0 9 | 10 | Unless required by applicable law or agreed to in writing, software 11 | distributed under the License is distributed on an 'AS IS' BASIS, 12 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | See the License for the specific language governing permissions and 14 | limitations under the License. 15 | */ 16 | 17 | 'use strict'; 18 | 19 | var hfc = require('fabric-client'); 20 | var utils = require('fabric-client/lib/utils.js'); 21 | 22 | module.exports.registerTxEvent = function(eh, txid, timeout) { 23 | return new Promise((resolve, reject) => { 24 | var handle = setTimeout(() => { 25 | eh.unregisterTxEvent(txid); 26 | reject('timeout'); 27 | }, timeout); 28 | 29 | eh.registerTxEvent(txid, (txid, code) => { 30 | if (code !== 'VALID') { 31 | reject('invalid'); 32 | } else { 33 | resolve(); 34 | } 35 | clearTimeout(handle); 36 | eh.unregisterTxEvent(txid); 37 | }); 38 | }); 39 | }; 40 | 41 | module.exports.registerCCEvent = function(eh, ccid, enregex, timeout) { 42 | return new Promise((resolve, reject) => { 43 | var regid = null; 44 | var handle = setTimeout(() => { 45 | reject(); 46 | if (regid) { 47 | eh.unregisterChaincodeEvent(regid); 48 | } 49 | }, timeout); 50 | 51 | regid = eh.registerChaincodeEvent(ccid, enregex, (event) => { 52 | resolve(); 53 | clearTimeout(handle); 54 | eh.unregisterChaincodeEvent(regid); 55 | }); 56 | }); 57 | }; 58 | 59 | module.exports.createRequest = function(client, chain, user, chaincode_id, targets, fcn, args) { 60 | var nonce = utils.getNonce(); 61 | var tx_id = hfc.buildTransactionID(nonce, user); 62 | var request = { 63 | targets : targets, 64 | chaincodeId: chaincode_id, 65 | chaincodeVersion: '', 66 | fcn: fcn, 67 | args: args, 68 | chainId: chain.getName(), 69 | txId: tx_id.toString(), 70 | nonce: nonce 71 | }; 72 | return request; 73 | }; 74 | 75 | function checkProposal(results) { 76 | var proposalResponses = results[0]; 77 | var all_good = true; 78 | 79 | for (var i in proposalResponses) { 80 | let one_good = false; 81 | 82 | if (proposalResponses && 83 | proposalResponses[0].response && 84 | proposalResponses[0].response.status === 200) { 85 | 86 | one_good = true; 87 | } 88 | all_good = all_good & one_good; 89 | } 90 | return all_good; 91 | }; 92 | 93 | module.exports.checkProposal = checkProposal; 94 | 95 | module.exports.sendTransaction = function(chain, results) { 96 | if (checkProposal(results)) { 97 | var proposalResponses = results[0]; 98 | var proposal = results[1]; 99 | var header = results[2]; 100 | var request = { 101 | proposalResponses: proposalResponses, 102 | proposal: proposal, 103 | header: header 104 | }; 105 | return chain.sendTransaction(request); 106 | } else { 107 | return Promise.reject('bad result:' + results); 108 | } 109 | }; 110 | -------------------------------------------------------------------------------- /fabric-sdk-node/test/unit/couchdb-key-value-store.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the 'License'); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an 'AS IS' BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | 'use strict'; 18 | 19 | var tape = require('tape'); 20 | var _test = require('tape-promise'); 21 | var test = _test(tape); 22 | var CouchdbMock = require('mock-couch'); 23 | 24 | var CDBKVS = require('fabric-client/lib/impl/CouchDBKeyValueStore.js'); 25 | 26 | test('\n\n** CouchDBKeyValueStore tests', (t) => { 27 | t.throws( 28 | () => { 29 | new CDBKVS(); 30 | }, 31 | /Must provide the CouchDB database url to store membership data/, 32 | 'Error checking in the constructor: missing opts' 33 | ); 34 | 35 | t.throws( 36 | () => { 37 | new CDBKVS({dummy: 'value'}); 38 | }, 39 | /Must provide the CouchDB database url to store membership data/, 40 | 'Error checking in the constructor: opts object missing required "url"' 41 | ); 42 | 43 | var store; 44 | 45 | new CDBKVS({url: 'http://dummyUrl'}) 46 | .then(() => { 47 | t.fail('Should not have been able to successfully constructed a store from an invalid URL'); 48 | t.end(); 49 | }).catch((err) => { 50 | if (err.message && err.message.indexOf('Error: getaddrinfo ENOTFOUND dummyurl') > 0) { 51 | t.pass('Successfully rejected the construction request due to invalid URL'); 52 | } else { 53 | t.fail('Store construction failed for unknown reason: ' + err.stack ? err.stack : err); 54 | } 55 | 56 | var couchdb = CouchdbMock.createServer(); 57 | couchdb.listen(5985); 58 | 59 | // override t.end function so it'll always disconnect the event hub 60 | t.end = ((context, mockdb, f) => { 61 | return function() { 62 | if (mockdb) { 63 | console.log('Disconnecting the mock couchdb server'); 64 | mockdb.close(); 65 | } 66 | 67 | f.apply(context, arguments); 68 | }; 69 | })(t, couchdb, t.end); 70 | 71 | return new CDBKVS({url: 'http://localhost:5985'}); 72 | }).then((st) => { 73 | store = st; 74 | t.pass('Successfully connected the key value store to couchdb at localhost:5985'); 75 | 76 | t.notEqual(store._database, undefined, 'Check "_database" value of the constructed store object'); 77 | 78 | return store.setValue('someKey', 'someValue'); 79 | }).then((value) => { 80 | t.equal(value, 'someValue', 'Check result of setValue()'); 81 | 82 | return store.getValue('someKey'); 83 | }).then((value) => { 84 | t.equal(value, 'someValue', 'Check result of getValue()'); 85 | t.end(); 86 | }).catch((err) => { 87 | t.fail(err.stack ? err.stack : err); 88 | t.end(); 89 | }); 90 | }); -------------------------------------------------------------------------------- /fabric-sdk-node/test/unit/event-hub.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016-2017 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the 'License'); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an 'AS IS' BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | 'use strict'; 18 | 19 | var tape = require('tape'); 20 | var _test = require('tape-promise'); 21 | var test = _test(tape); 22 | 23 | var testutil = require('./util.js'); 24 | 25 | testutil.resetDefaults(); 26 | 27 | var EventHub = require('fabric-client/lib/EventHub.js'); 28 | 29 | test('\n\n** EventHub tests\n\n', (t) => { 30 | var eh = new EventHub(); 31 | 32 | t.throws( 33 | () => { 34 | eh.connect(); 35 | }, 36 | /Must set peer address before connecting/, 37 | 'Must not allow connect() when peer address has not been set' 38 | ); 39 | 40 | t.throws( 41 | () => { 42 | eh.setPeerAddr('badUrl'); 43 | }, 44 | /InvalidProtocol: Invalid protocol: undefined/, 45 | 'Must not allow a bad url without protocol to be set' 46 | ); 47 | 48 | t.throws( 49 | () => { 50 | eh.setPeerAddr('http://badUrl'); 51 | }, 52 | /InvalidProtocol: Invalid protocol: http/, 53 | 'Must not allow an http url to be set' 54 | ); 55 | 56 | t.throws( 57 | () => { 58 | eh.setPeerAddr('https://badUrl'); 59 | }, 60 | /InvalidProtocol: Invalid protocol: https/, 61 | 'Must not allow an https url to be set' 62 | ); 63 | 64 | t.doesNotThrow( 65 | () => { 66 | eh.setPeerAddr('grpc://localhost:7053'); 67 | }, 68 | null, 69 | 'Test valid url connect and disconnect' 70 | ); 71 | 72 | eh.registerTxEvent('dummyId', () => { 73 | // dummy function 74 | }); 75 | 76 | t.equal(eh.txRegistrants.size(), 1, 'txRegistrants size should be 1 after registering a transaction event listener'); 77 | 78 | t.end(); 79 | }); -------------------------------------------------------------------------------- /fabric-sdk-node/test/unit/orderer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2016 IBM All Rights Reserved. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | var tape = require('tape'); 18 | var _test = require('tape-promise'); 19 | var test = _test(tape); 20 | 21 | var hfc = require('fabric-client'); 22 | var sdkUtil = require('fabric-client/lib/utils.js'); 23 | var util = require('util'); 24 | var fs = require('fs'); 25 | var testUtil = require('./util.js'); 26 | 27 | var Orderer = require('fabric-client/lib/Orderer.js'); 28 | 29 | var keyValStorePath = testUtil.KVS; 30 | 31 | // 32 | // Orderer happy path test are implemented as part of the end-to-end tests only 33 | // because the orderer no longer accepts random data but requires all the payload 34 | // header structure, making it impractical to carry out a happy path test outside 35 | // of a proposal-transaction flow 36 | 37 | // 38 | // Orderer bad address test 39 | // 40 | // Attempt to initialize an orderer with a bad URL address. An invalid protocol 41 | // error is expected in this case. 42 | // 43 | 44 | test('orderer bad address test', function(t) { 45 | try { 46 | var client = new Orderer('xxxxx'); 47 | t.fail('Orderer allowed setting a bad URL.'); 48 | } 49 | catch(err) { 50 | console.log('Caught Error: ' + err); 51 | t.pass('Orderer did not allow setting bad URL.'); 52 | } 53 | t.end(); 54 | }); 55 | 56 | // 57 | // Orderer missing address test 58 | // 59 | // Attempt to initialize an orderer with a missing URL address. A TypeError 60 | // indicating that the URL must be a "string" is expected in this case. 61 | // 62 | 63 | test('orderer missing address test', function(t) { 64 | try { 65 | var client = new Orderer(); 66 | t.fail('Orderer allowed setting a missing address.'); 67 | } 68 | catch(err) { 69 | console.log('Caught Error: ' + err); 70 | t.pass('Orderer did not allow setting a missing address.'); 71 | } 72 | t.end(); 73 | }); 74 | 75 | // 76 | // Orderer missing data test 77 | // 78 | // Send an empty broadcast message to an orderer. An error indicating that no 79 | // data was sent is expected in this case. 80 | // 81 | 82 | test('orderer missing data test', function(t) { 83 | var client = new Orderer('grpc://127.0.0.1:5005'); 84 | 85 | client.sendBroadcast() 86 | .then( 87 | function(status) { 88 | console.log('response status: ' + JSON.stringify(status)); 89 | t.fail('Should have noticed missing data.'); 90 | t.end(); 91 | }, 92 | function(err) { 93 | console.log('Caught Error: ' + err); 94 | t.pass('Successfully found missing data: ' + err); 95 | t.end(); 96 | } 97 | ).catch(function(err) { 98 | t.fail('Caught Error: should not be here if we defined promise error function: ' + err); 99 | t.end(); 100 | }); 101 | }); 102 | 103 | // 104 | // Orderer unknown address test 105 | // 106 | // Send a broadcast message to a bad orderer address. An error indicating 107 | // a connection failure is expected in this case. 108 | // 109 | 110 | test('orderer unknown address test', function(t) { 111 | var client = new Orderer('grpc://127.0.0.1:51006'); 112 | 113 | client.sendBroadcast('some data') 114 | .then( 115 | function(status) { 116 | console.log('response status: ' + JSON.stringify(status)); 117 | t.fail('Should have noticed a bad address.'); 118 | t.end(); 119 | }, 120 | function(err) { 121 | t.pass('Successfully found bad address!'); 122 | t.end(); 123 | } 124 | ).catch(function(err) { 125 | t.fail('Caught Error: should not be here if we defined promise error function: ' 126 | + err); 127 | t.end(); 128 | }); 129 | }); 130 | -------------------------------------------------------------------------------- /前端/Makefile: -------------------------------------------------------------------------------- 1 | .PHONY: dist build 2 | install: 3 | @npm install 4 | 5 | dev: install 6 | @npm run dev 7 | 8 | build: 9 | @npm run build 10 | -------------------------------------------------------------------------------- /前端/README.md: -------------------------------------------------------------------------------- 1 | #version 1.0 2 | 3 | # element-starter 4 | 5 | > A starter kit for Element UI generated by vue-cli 6 | 7 | *If you are familiar with [cooking](https://github.com/elemefe/cooking), [here](https://github.com/ElementUI/element-cooking-starter) is a starter generated with it* 8 | 9 | ## Environment 10 | 11 | `Node >= 6` 12 | 13 | ## Start 14 | 15 | - Clone or download this repository 16 | - Enter your local directory, and install dependencies: 17 | 18 | ``` bash 19 | npm install 20 | ``` 21 | 22 | ## Develop 23 | 24 | ``` bash 25 | # serve with hot reload at localhost:8010 26 | npm run dev 27 | ``` 28 | 29 | ## Build 30 | 31 | ``` bash 32 | # build for production with minification 33 | npm run build 34 | ``` 35 | -------------------------------------------------------------------------------- /前端/dist/b02bdc1b846fd65473922f5f62832108.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/前端/dist/b02bdc1b846fd65473922f5f62832108.ttf -------------------------------------------------------------------------------- /前端/dist/index.html: -------------------------------------------------------------------------------- 1 | element-starter
-------------------------------------------------------------------------------- /前端/dist/manifest.js: -------------------------------------------------------------------------------- 1 | !function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,a){for(var u,i,f,l=0,s=[];l=6" 22 | }, 23 | "devDependencies": { 24 | "autoprefixer": "^6.6.0", 25 | "babel-core": "^6.21.0", 26 | "babel-eslint": "^7.1.1", 27 | "babel-helper-vue-jsx-merge-props": "^2.0.2", 28 | "babel-loader": "^6.4.0", 29 | "babel-plugin-syntax-jsx": "^6.18.0", 30 | "babel-plugin-transform-vue-jsx": "^3.4.2", 31 | "babel-preset-es2015": "^6.24.1", 32 | "chai": "^3.5.0", 33 | "css-loader": "^0.27.0", 34 | "element-theme-default": "^1.2.9", 35 | "eslint": "^3.19.0", 36 | "eslint-config-enough": "^0.2.6", 37 | "eslint-loader": "^1.7.1", 38 | "eslint-plugin-async": "^0.1.1", 39 | "file-loader": "^0.10.1", 40 | "html-loader": "^0.4.5", 41 | "html-webpack-plugin": "^2.24.1", 42 | "mocha": "^3.2.0", 43 | "postcss-loader": "^1.3.3", 44 | "rimraf": "^2.5.4", 45 | "style-loader": "^0.13.2", 46 | "supertest": "^3.0.0", 47 | "url-loader": "^0.5.8", 48 | "vue-datasource": "^1.0.5", 49 | "vue-loader": "^11.1.4", 50 | "vue-router": "^2.3.0", 51 | "vue-template-compiler": "^2.1.8", 52 | "webpack": "^2.2.0-rc.4" 53 | }, 54 | "eslintConfig": { 55 | "extends": "enough", 56 | "env": { 57 | "browser": true, 58 | "node": true 59 | }, 60 | "ecmaFeatures": { 61 | "ecmaVersion": 2017, 62 | "sourceType": "module", 63 | "ecmaFeatures": { 64 | "jsx": true 65 | } 66 | } 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /前端/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: [ 3 | require('autoprefixer')() 4 | ] 5 | } 6 | -------------------------------------------------------------------------------- /前端/router/index.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by finefenng on 3/15/17. 3 | */ 4 | import Vue from 'vue'; 5 | import Router from 'vue-router'; 6 | import Login from '../src/components/page/Login.vue'; 7 | import Home from '../src/components/common/home.vue'; 8 | import UserInfo from '../src/components/page/UserInformation.vue'; 9 | import MainPage from '../src/components/page/MainPage.vue'; 10 | import TopUpUser from '../src/components/page/TopUpUser.vue'; 11 | import TradeRecord from '../src/components/page/TradeRecord.vue'; 12 | 13 | Vue.use(Router); 14 | 15 | const routes = [ 16 | { 17 | path: '/', 18 | redirect: '/login', 19 | }, 20 | { 21 | path: '/home', 22 | component: Home, 23 | children: [ 24 | { 25 | path: 'userInfo', 26 | component: UserInfo, 27 | }, 28 | { 29 | path: 'mainPage', 30 | component: MainPage, 31 | }, 32 | { 33 | path: 'topUpUser', 34 | component: TopUpUser, 35 | }, 36 | { 37 | path: 'tradeRecord', 38 | component : TradeRecord, 39 | } 40 | ] 41 | }, 42 | { 43 | path: '/login', 44 | component: Login, 45 | } 46 | ]; 47 | 48 | export default new Router({ 49 | routes: routes 50 | }); 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /前端/src/App.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /前端/src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/前端/src/assets/logo.png -------------------------------------------------------------------------------- /前端/src/components/common/header.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 39 | 74 | 75 | -------------------------------------------------------------------------------- /前端/src/components/common/home.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 26 | 27 | 52 | 53 | 54 | -------------------------------------------------------------------------------- /前端/src/components/common/sidebar.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 23 | 24 | -------------------------------------------------------------------------------- /前端/src/components/page/TopUpUser.vue: -------------------------------------------------------------------------------- 1 | 24 | 25 | 78 | 79 | -------------------------------------------------------------------------------- /前端/src/components/page/UserInformation.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 39 | 40 | -------------------------------------------------------------------------------- /前端/src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | element-starter 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /前端/src/main.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import ElementUI from 'element-ui' 3 | import 'element-ui/lib/theme-default/index.css' 4 | import router from '../router/index' 5 | import App from './App.vue' 6 | import store from './store/index'; 7 | 8 | Vue.use(ElementUI); 9 | 10 | 11 | 12 | let vm = new Vue({ 13 | router, 14 | store, 15 | render: h => h(App) 16 | }).$mount('#app'); 17 | 18 | -------------------------------------------------------------------------------- /前端/src/store/actions.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by finefenng on 4/20/17. 3 | */ 4 | -------------------------------------------------------------------------------- /前端/src/store/index.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue'; 2 | import Vuex from 'vuex'; 3 | Vue.use(Vuex); 4 | export default new Vuex.Store({ 5 | state: { 6 | userInfo: { 7 | username: sessionStorage.getItem('username'), 8 | money: '', 9 | }, 10 | host: '', 11 | }, 12 | mutations: { 13 | initUserInfo(state, info) { 14 | state.userInfo.username = info.username; 15 | state.userInfo.money = info.money; 16 | sessionStorage.setItem('username', info.username); 17 | sessionStorage.setItem('money', info.money); 18 | }, 19 | changeUserInfoMoney(state, money) { 20 | state.userInfo.money = money; 21 | } 22 | }, 23 | }); 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /前端/src/store/mutations.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by finefenng on 4/20/17. 3 | */ 4 | -------------------------------------------------------------------------------- /前端/src/vendor.js: -------------------------------------------------------------------------------- 1 | import Vue from 'vue' 2 | import ElementUI from 'element-ui' 3 | -------------------------------------------------------------------------------- /前端/static/b02bdc1b846fd65473922f5f62832108.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/前端/static/b02bdc1b846fd65473922f5f62832108.ttf -------------------------------------------------------------------------------- /前端/static/css/main.css: -------------------------------------------------------------------------------- 1 | * { 2 | margin: 0; padding: 0; 3 | } 4 | 5 | 6 | 7 | body { 8 | background-color: #f1f2f7; 9 | } 10 | 11 | .breadcrumb-container { 12 | box-sizing: border-box; 13 | 14 | margin: 10px 0; 15 | border: 1px solid #d1dbe5; 16 | padding: 10px; 17 | width: 1000px; 18 | background-color: white; 19 | box-shadow: 0 0 2px #ccc; 20 | } 21 | -------------------------------------------------------------------------------- /前端/static/deviceInformationTable_bodyData.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "gprsID": "0000000001", 5 | "deviceName": "昂思数显1", 6 | "deviceTypeName": "US2000", 7 | "locationName": "配电室1", 8 | "protocolVersion": 1, 9 | "mobileNumber": "17713581634", 10 | "longitude": "23.12", 11 | "latitude": "23.12", 12 | "installDirection": "1", 13 | "isDiscard": "是", 14 | "addDate": "2017-02-02 12:23:21" 15 | } 16 | ] 17 | } -------------------------------------------------------------------------------- /前端/static/deviceTree_bodyData.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "name": "配电室1", 5 | "device": [ 6 | { 7 | "gprsID": "0000000001", 8 | "name": "昂思数显表1", 9 | "deviceTypeName": "US2000", 10 | "isLogin": true 11 | } 12 | ] 13 | }, 14 | { 15 | "name": "配电室2", 16 | "device": [ 17 | { 18 | "gprsID": "0000000003", 19 | "name": "昂思数显表3", 20 | "deviceTypeName": "US2000", 21 | "isLogin": true 22 | } 23 | ] 24 | } 25 | ] 26 | } -------------------------------------------------------------------------------- /前端/static/historyDataTable_bodyData.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "uploadTime": "2015-02-02 23:23:10", 5 | "var00": "1.1V", 6 | "var01": "1.1V", 7 | "var02": "1.1V", 8 | "var03": "1.1V", 9 | "var04": "1.1V", 10 | "var05": "1.1V", 11 | "var06": "1.1V", 12 | "var07": "1.1V", 13 | "var08": "1.1V", 14 | "var09": "1.1V", 15 | "var10": "1.1V" 16 | } 17 | ] 18 | } -------------------------------------------------------------------------------- /前端/static/historyDataTable_headerData.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": [ 3 | { 4 | "id": "var00", 5 | "name": "A相电压" 6 | }, 7 | { 8 | "id": "var01", 9 | "name": "B相电压" 10 | }, 11 | { 12 | "id": "var02", 13 | "name": "C相电压" 14 | }, 15 | { 16 | "id": "var03", 17 | "name": "A相电流" 18 | }, 19 | { 20 | "id": "var04", 21 | "name": "B相电流" 22 | }, 23 | { 24 | "id": "var05", 25 | "name": "C相电流" 26 | }, 27 | { 28 | "id": "var06", 29 | "name": "视载功率" 30 | }, 31 | { 32 | "id": "var07", 33 | "name": "总有功功率" 34 | }, 35 | { 36 | "id": "var08", 37 | "name": "总无功功率" 38 | }, 39 | { 40 | "id": "var09", 41 | "name": "功率因素" 42 | }, 43 | { 44 | "id": "var10", 45 | "name": "频率" 46 | } 47 | ] 48 | } -------------------------------------------------------------------------------- /前端/static/index.html: -------------------------------------------------------------------------------- 1 | element-starter
-------------------------------------------------------------------------------- /前端/static/manifest.js: -------------------------------------------------------------------------------- 1 | !function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,u){for(var i,a,f,l=0,s=[];l ({ 8 | entry: { 9 | vendor: './src/vendor', 10 | index: './src/main.js' 11 | }, 12 | output: { 13 | path: resolve(__dirname, 'dist'), 14 | filename: options.dev ? '[name].js' : '[name].js?[chunkhash]', 15 | chunkFilename: '[id].js?[chunkhash]', 16 | publicPath: options.dev ? '/assets/' : publicPath 17 | }, 18 | module: { 19 | rules: [ 20 | { 21 | test: /\.vue$/, 22 | use: ['vue-loader'] 23 | }, 24 | { 25 | test: /\.js$/, 26 | use: ['babel-loader'], 27 | exclude: /node_modules/ 28 | }, 29 | { 30 | test: /\.html$/, 31 | use: [ 32 | { 33 | loader: 'html-loader', 34 | options: { 35 | root: resolve(__dirname, 'src'), 36 | attrs: ['img:src', 'link:href'] 37 | } 38 | } 39 | ] 40 | }, 41 | { 42 | test: /\.css$/, 43 | use: ['style-loader', 'css-loader', 'postcss-loader'] 44 | }, 45 | { 46 | test: /favicon\.png$/, 47 | use: [{ 48 | loader: 'file-loader', 49 | options: { 50 | name: '[name].[ext]?[hash]' 51 | } 52 | }] 53 | }, 54 | { 55 | test: /\.(png|jpg|jpeg|gif|eot|ttf|woff|woff2|svg|svgz)(\?.+)?$/, 56 | exclude: /favicon\.png$/, 57 | use: [{ 58 | loader: 'url-loader', 59 | options: { 60 | limit: 10000 61 | } 62 | }] 63 | } 64 | ] 65 | }, 66 | plugins: [ 67 | new webpack.optimize.CommonsChunkPlugin({ 68 | names: ['vendor', 'manifest'] 69 | }), 70 | new HtmlWebpackPlugin({ 71 | template: 'src/index.html' 72 | }) 73 | ], 74 | resolve: { 75 | alias: { 76 | '~': resolve(__dirname, 'src') 77 | } 78 | }, 79 | devServer: { 80 | host: 'localhost', 81 | port: 8070, 82 | proxy: { 83 | '/api/': { 84 | target: 'http://127.0.0.1:8080', 85 | changeOrigin: true, 86 | pathRewrite: { 87 | '^/api': '' 88 | } 89 | } 90 | }, 91 | historyApiFallback: { 92 | index: url.parse(options.dev ? '/assets/' : publicPath).pathname 93 | } 94 | }, 95 | devtool: options.dev ? '#eval-source-map' : '#source-map' 96 | }) 97 | -------------------------------------------------------------------------------- /后台/static/b02bdc1b846fd65473922f5f62832108.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zdpleon/energy_blockchain/bc8730d7d9f04fe72071b66b4882e9676e598151/后台/static/b02bdc1b846fd65473922f5f62832108.ttf -------------------------------------------------------------------------------- /后台/static/index.html: -------------------------------------------------------------------------------- 1 | element-starter
-------------------------------------------------------------------------------- /后台/static/manifest.js: -------------------------------------------------------------------------------- 1 | !function(e){function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}var n=window.webpackJsonp;window.webpackJsonp=function(t,c,u){for(var i,a,f,l=0,s=[];l