{"_id":"@hyperledger/cactus-plugin-ledger-connector-quorum","_rev":"71-f54595b4a0b1006e1ffd19b18cc83bcc","name":"@hyperledger/cactus-plugin-ledger-connector-quorum","dist-tags":{"canary":"0.1.1-alpha.289","fix-quorum-contract-types":"0.4.2-fix-quorum-contract-types.d7f00975.23","feat-1122":"0.5.1-feat-1122.01a4d64d.130","fix-1226":"0.7.1-fix-1226.7df02452.10","vaultTransitKeychain":"0.8.1-vaultTransitKeychain.5ad9cac4.17","docs-1312":"0.9.1-docs-1312.bcfd3c31.6","web-socket-identity-provider":"0.9.1-web-socket-identity-provider.845e2a3e.23","add-bluebird-dependency":"0.9.1-add-bluebird-dependency.a8944f63.33","ci-942":"0.9.1-ci-942.cbb849c6.35","fix-quorum-no-keychain-endpoints":"0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1","fix-quorum-api-server":"0.10.1-fix-quorum-api-server.0677a0e6.4","pr-brioux-1333":"0.8.1-pr-brioux-1333.92b26c3a.36","jwt-supply-chain":"1.0.1-jwt-supply-chain.9df3fe79.16","build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix":"2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126","dev":"2.0.0-dev.197","lfx-connector":"2.0.0-lfx-connector.208","2945-supply-chain-app-build-failed":"2.0.0-2945-supply-chain-app-build-failed.241","main":"2.0.0-main.339","latest":"2.0.0-rc.2"},"versions":{"0.1.1-alpha.289":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.1.1-alpha.289","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.1.1-alpha.289","maintainers":[{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"f376a36f2525a5c67d9fca3eda31c5321210c559","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.1.1-alpha.289.tgz","fileCount":54,"integrity":"sha512-im/Bfl3rrkzmc+Sx9Ny9T+6Fuq5YUMHpMCEO2r6C3V7q4uBaTbbnvCed8IYa3Do+YtnB27exMXNDxwx5VRQqiA==","signatures":[{"sig":"MEYCIQDbFq933om2QW9ZtiP+GL9XWdNfIy0ZeiEQtQKDOHXGGwIhAPV3ZX0popR8ZwDobSuDdbEbMmhR7RE+9N4SZdTqSl1S","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13901560,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxqFMCRA9TVsSAnZWagAAd4kP/0OL4m+1XzhSMRiM9oh4\nwaWgGbQXSZY/IUd06E9mZPw3OqCiDM70vvq7MjDVYAhcqb4sekjUwvEgDldq\nagodH9+dDwumNfbHD3+wBhstiNZ/QFGg49gDjGylg9zdp5jW2wwjI8FCjYv2\nAArJTFEjphnaMRejPVt3Xwnt5biaRFheTlYiwHpUyBl58xRUHHiRlQpG55iA\nxmDeeXBTS9FbDNBh1kG+0uzXkZFbgbxZXQ1ZPwRbWZFMCfXUJfrWaM0ANDib\nZl/W5q1dTelmIHZTCleVFiOdotIpp2juONUOi4dai2c2BuI5ecrAr1t65M8Y\nR60C6DAxbXxPAP1CefoTw5VICilQN0xUTA7MqRKLDS0TDt7l+ZdmxJHpE4Sg\nglV0GGGvHc6AnullxP+DjW5nBTv34r0UWhUi2CjZukW0xkG4NoJCoQn/UT+a\nVh170b4eniltwhYJF+o9f4YXH/k9RuBipmSztEULOo3t26o2MfQfYeqADPS2\nXUAOHB/ZOOvxcqsFhAaO1KwL9vjmNwF2KEMEFPi58MBhGCtV+xMQ15Da3ln/\njxCx+l/Nmcu1Oi/9kbIGe+wL2Zsqr4ADHelIpDJcUiYIie99zUpRldCZ2YuI\n0jPB3Npz3JpeE3OA+AcyChsBON4XVNgXXIO1IBZyyHiqeydOskKFmOGsS3uB\n4mcz\r\n=vOcS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cactus-plugin-ledger-connector-quorum.node.umd.js","types":"dist/types/main/typescript/index.d.ts","module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"dcdfcf59e8e5220e24093e3dbeb41f49f1e5ab1b","scripts":{"tsc":"tsc --project ./tsconfig.json","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec cactus-openapi-spec-plugin-ledger-connector-quorum.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","pregenerate-sdk":"npm-run-all export-open-api-spec","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js","export-open-api-spec":"ts-node ./src/main/typescript/openapi-spec.ts"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"joi":"14.3.1","web3":"1.2.7","axios":"0.20.0","express":"4.17.1","web3-utils":"1.2.7","openapi-types":"7.0.1","web3-core-method":"1.3.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.1.1-alpha.289+dcdfcf5","@hyperledger/cactus-common":"^0.1.1-alpha.289+dcdfcf5","@hyperledger/cactus-core-api":"^0.1.1-alpha.289+dcdfcf5"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"@types/joi":"14.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"^0.1.1-alpha.289+dcdfcf5","@hyperledger/cactus-plugin-keychain-memory":"^0.1.1-alpha.289+dcdfcf5"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.1.1-alpha.289_1606852939698_0.3224736714033709","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.2.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.2.0","maintainers":[{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"20853955df98a8724eb7e19ac56f8f63ea1c268c","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.2.0.tgz","fileCount":55,"integrity":"sha512-hMmtlwPVuMYRtfnmZE6pXXJRqyKXXsDeumpbKfO/YEkv1qoc4AP1XqjIjQI6PiLpOco56gb56uOivJqGowEHfg==","signatures":[{"sig":"MEQCIGTq6K9aLqWNlwlqL7XtrflHbWi4Wsqe2sqw8FZe1noHAiBSmo202kIxdeLfjfQghRbJH0faR+SazGOb+gBFw9TL4g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":13902049,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfxqu5CRA9TVsSAnZWagAAmeAQAIc5o2thowantyXF3IFm\nPZmCEFEWjXO12yDiwWhJnxRg579XpbNZXQw4y34JhZgxLbqminZ/r8E4R0ML\nuckFJHNoBhBY/0vSywSSRoR7TCxIF8D8+8YwXwyLMu8flp7Nl7fe2RFMrZKo\ns9gRFd6ipYjQyQene6Vyqw6u24vwskMFLCp6PLV9wBdWzx4gkQbggr2kFdrv\nKvifGobDxrU1q6NCE4tLCTL23XQU8sTaiT8fq2WImAq+B4/jy1Ot//XjFZSE\nSP7c3QuamUspHt5re3u988VcQL4un/XOXopazo65PuEvKDGmyJrhM9/KdUG9\nMIgNCVHqYRTcCAg0NJMRG92nOfrP6Y8hm5JJsFGzhvAO9AHgAR96mpiBYWS/\nkGYDJAOzYnO5x6xi5EKYY0c0n/Txo+rssBwyHAvLtG9zhPqLzCxvuz++PuID\nqhreZXxmac7QMxzUicwFoVRDAieQsVBoE/SwbRjF4LDaaBPPzxKYdL0HfDXr\nRou+izy12a8gtQ7mrU8Z14q0X2mHhvLy85E2Tlq0EscCMUnJslo0Ezh4YIgs\n5J9GlKjmPgErlP7IdcpwX1h+tzTu5i5R6TrQHpTOlFVV/TDeUrw7iL4lIgvJ\nUa8Lu9PKw2RlUAZucZoK7DvNjBudFTGkr6hUEQf3MUiEQmlJUS2JRMZYiJo7\nAMPD\r\n=+fBA\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/cactus-plugin-ledger-connector-quorum.node.umd.js","types":"dist/types/main/typescript/index.d.ts","module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"a2abbc0258c83be50def828e8e9ad9717ef89d72","scripts":{"tsc":"tsc --project ./tsconfig.json","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec cactus-openapi-spec-plugin-ledger-connector-quorum.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","pregenerate-sdk":"npm-run-all export-open-api-spec","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js","export-open-api-spec":"ts-node ./src/main/typescript/openapi-spec.ts"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"joi":"14.3.1","web3":"1.2.7","axios":"0.20.0","express":"4.17.1","web3-utils":"1.2.7","openapi-types":"7.0.1","web3-core-method":"1.3.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.2.0","@hyperledger/cactus-common":"^0.2.0","@hyperledger/cactus-core-api":"^0.2.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"@types/joi":"14.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"^0.2.0","@hyperledger/cactus-plugin-keychain-memory":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.2.0_1606855609320_0.7903128138552482","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.3.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.3.0","maintainers":[{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"4330caa8343254a22b67b2f61302e1972e7559ce","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.3.0.tgz","fileCount":54,"integrity":"sha512-/gDQFdBhhO0di7eKdElbkJRBFFEE4W1GaO+T9It3hWXGsfKcViiNcEUg+iEz3T/QTrAa1x3MhriXxEykkW22JA==","signatures":[{"sig":"MEUCIQC3yDMJskkgpWOZjYl7BIbkk2iWu5HUMJ74CLkPeoS7ZgIgU3ZSToO88jCgN7OcHfXoRFD6hPeR/lImFAOZdBH3oVY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6156154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgGFVrCRA9TVsSAnZWagAA3kQP/1SrsiwuJZoiE72M3bOJ\nZWUV9DDapzrtSdHNblFrGgevevQCGl2hyXh+iOwnNG7ZT6VitYlwq8L45+7H\nrKTXYU1QTJMdXGy4i2e25g6BbZdSPYBy/tN8FnyuqjZdVoamW2FsetCBdtIS\nwGx2rcxOYyok37rmk1JFfU0Ni+dzBSkj6R+SjyBFFlWOcoW/tWO+BSwYqaAb\nbCylKJhuc5QTTumM3fjDj0k3GixLAe/vqr78o1pxm9bItrVCWsUv7OFbscTF\nZE3jF/0yUea4+HlHL3xwgcaQ84RjeE5oE9JwmmuhjDo1qFnNFkfpVirUj7OG\n892sVBhNJQ0yv50wqYxI6CBmpn+TUGDkomRZWAGS4k9KGoNvs9SNHTbtrDKC\ndtgG5wZqNh7mVQgCwvB4z6kqchIB67BIhPBV8yEj5ZmPJOwjE6EEUelNKuAH\nP1x6zT1DTgsA3Nmlg5YheA3b5u4WzzreQt5QMsGVF6IVmIcax8tQrO3MbtAF\nmlyrk6kNJroVFEbc5QflPZzHFScMyODB5nKdWVRIvHRgiqhGsDl5kVbEZPlz\nYbmtzx8PscHAPl0stwsLOVwHz4m57EYTtAAo5CtZkzbIK5dEfYGGcivcP44s\nwfgIIcYuWtvzEQ9z+1hK61SIdNXzwjU9zoKh9FvVb3lFXLJfg6GCz9pAR4yz\nNDdo\r\n=0yYt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"10f19a20aa8b4479a13e363aaaeba2300aab6db0","scripts":{"tsc":"tsc --project ./tsconfig.json","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec cactus-openapi-spec-plugin-ledger-connector-quorum.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","pregenerate-sdk":"npm-run-all export-open-api-spec","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js","export-open-api-spec":"ts-node ./src/main/typescript/openapi-spec.ts"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"joi":"14.3.1","web3":"1.2.7","axios":"0.20.0","express":"4.17.1","web3-utils":"1.2.7","openapi-types":"7.0.1","web3-core-method":"1.3.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.3.0","@hyperledger/cactus-common":"0.3.0","@hyperledger/cactus-core-api":"0.3.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"@types/joi":"14.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"0.3.0","@hyperledger/cactus-plugin-keychain-memory":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.3.0_1612207467084_0.2391256672264217","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.4.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.4.0","maintainers":[{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"2f403378a64f031181367e682e7baa5402e247ac","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.4.0.tgz","fileCount":61,"integrity":"sha512-Lln9S0tKNsLUpFsTW5jntYdXB5KS5EfkCgVHRTKKaJoqQWhlk+B1/sZlV0qNgYINSc8omG/makc0uknATdt+4A==","signatures":[{"sig":"MEYCIQCjRX8fs1UphOaSSW/EYJPdeQN2ozTwRyd7uo9//wgSfgIhALFYt0E9/X+nFCQCR2Eq2eQyL6+XjjuaNvNxIJa88sBR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6903332,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgY351CRA9TVsSAnZWagAAaXIP/jMZnAaPGAsargVoaoQc\nCw6Q11g2mLgAzA0Ggn+kj0eKL6vkPcYBhCVxLh69cTSvwoYs3ZlK2B80e3vM\n7F5cLYGhycSpVNN6S+xV19+fId+vS1jx71ATOEdi768vylrpvM3C+Tt63238\ne4ZQNauD3Bc3Ja7oU1TARKVCaT4FME9JFd80XX9YaLtkbKI/qtDIyDndVd/1\nVfHGe28zsMnh1O62Y5rzSzte3dc/0RvggiR9VvgTqJJPiquFaBKmxFzu0dgi\n0AOxNas3ulWzgjVeZriC/BEoqBE2rfS3e8Muwu2D/iDi9e4aMyHOw7QK+u85\nO+r3DsscPbb8qhr8ccFt1j7ndT+mFqxPZlblN0K0475WmPwCPm1tf+fNPfTe\nygCb0Avn2CrtBZKN/rO7mIdMPVyAkKOAxAK7WmR1PUgf3P9XKG193oYA5ECS\n1qteN1+f87QbG5jv0eNhsirgRW94tFs7ObgLrjeTxImaGZ4bc6qmqS7lGWrE\nn2q+VsDMDv58PFHbgzFZ7WdGphR9NW7Vl2XvRZNuE5mj7myo47zE6RGp5HX4\n11jlHTuKTwgFXEPGyXUk9067va80VPkgbStoZKpR3h4PilslIE4xBMpvFEzM\nGrntSt0UBBs3yOIsCERgnx1G5G1FF6cZ1xFkTMDa540LWsUAjScxtjLQUOab\nEOOs\r\n=ztJp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"b03611ff9bf209f6b8eaf1c42b4ecfed47de8631","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.4.0","@hyperledger/cactus-common":"0.4.0","@hyperledger/cactus-core-api":"0.4.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"0.4.0","@hyperledger/cactus-plugin-keychain-memory":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.4.0_1617133173177_0.8108961473665752","host":"s3://npm-registry-packages"}},"0.4.1":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.4.1","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.4.1","maintainers":[{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"ae1178ba3295d4134e0b2914277a78fe39f280dc","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.4.1.tgz","fileCount":61,"integrity":"sha512-axvKg4b5fW/F4d2Vzb2vyXRio9ji4P5kMuntj2bhTb/Ub2NNlKkm+vx2Sx1tRL72fAJZm9t9XcYiNkR8DYB0wg==","signatures":[{"sig":"MEUCIDoD13/ona6mmWtSMbH/o4iMkNFmJwlZPf+eDbBYdYpyAiEA7CAitvS1gHwJmF1dwSs+cUc+5zdEALVSh3rpA1YcVnQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6903212,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgaM3ACRA9TVsSAnZWagAALfcP/1CzZM09lYrxFbZysEzI\nBDxGMqnCVRpNmbZboqtTcdbiODA8FlAGSgpOvQm1tm2yuqg0YHO+ZFvWz2Dw\nnW7tnngA1YeYMqqP0YkrovovtBjKWmC2k4JEWhyYHJum/lLXIyrN3npStyZ6\niwnJR755lTEKB0TedV4ISERNszyBVjuMAsfDIXrvo8PaqIgj0CMxofqoPKag\nGy7tBrSGaaMFLCFJaS7nItcDDkWfUkKAC2oRinzHP3Ta8jHlcjlT4dfevAeL\nMNtPS2W9tp6bqJHyv3gCwq6G96GxZnmQsNH1u3KH5qu2wAhR+JPSxgiPI5iM\nBRea5IjAfO9yI3zVGYu080tMVcHUexE4QpfFBs1LXWpYPhH1wdWaWP7IKQF6\nYm+pCni3kthopvc9HcYQ0r47JZ//NoA6q5Md4FwIlu3WkwuvGUm5X9OErdp1\nfvD3tgl3pQfl5HdlYtl61TK0OD75vB91VwlqfO/RFvARh8rwKGGo7tfcUpAS\n+StUH6VbB+HoeV6m/UP6zWxUPagP1vdE7uIVKUw6nTOeFjdQXyIVenodzv5r\nI/CifMR2IxPBHO1SR5f2Abf0CqTdYpelkIQ8N7Q+f/WmLQZbx7GLQODATjBM\nuUtCDsujQLDz//m5bCdGOR//kRMk/9jutXo1uKRilHgYvaEsNQct2nZS9eqD\nXdrw\r\n=q4Rt\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"277e2d76aa74064dc0bc3aa5bc05d26cb5f3cd75","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v14.15.4+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"14.15.4","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.4.1","@hyperledger/cactus-common":"0.4.0","@hyperledger/cactus-core-api":"0.4.1"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"0.4.0","@hyperledger/cactus-plugin-keychain-memory":"0.4.1"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.4.1_1617481152166_0.15094456416016477","host":"s3://npm-registry-packages"}},"0.4.2-fix-quorum-contract-types.d7f00975.23":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.4.2-fix-quorum-contract-types.d7f00975.23","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.4.2-fix-quorum-contract-types.d7f00975.23","maintainers":[{"name":"timoglastra","email":"timo@glastra.me"},{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"15d0e83f1513c607e616bccc429e44355b6bb9b2","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.4.2-fix-quorum-contract-types.d7f00975.23.tgz","fileCount":61,"integrity":"sha512-0bX8wULYkHfypEZzD2ta9N05ol3vxbX/jC7wu133TO3da53I/lxcO2jLYb6CTLzoxGGrZ20Jiz65RSxF55FpxA==","signatures":[{"sig":"MEUCIQCburM3rgE5vsJCXAEzx/v0+O9Z19k84e7zzfDRIGrcGQIgRI3pqI2lI46SBt3CzkWlBjneyrQ5+o2kvZEyn2lmdnw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6653561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfLWTCRA9TVsSAnZWagAA0/MP/3PZvQqdhQgjP+yOuiMX\nraF5ErFNmNr27EOS3Mov4e/KpvdZLa4QFEucXAA8ukrBZxeOnaIB1gQ7ms+H\no3pjJ+UrRGStvw106aNAGI1tGiLVOerh4uvkItj1o928ZAyYkrdRNaYW5uZU\n7eHcsECBqtZa7eGeOjG9gdLv7579qD5j0XqouyzwWuGGMSva+E7tjvMBGMJp\nn/dGPeagRdJnXYyvwJdsvfN5rxeyTpNvuZ6A8zMlkqGPYBn/KqZ8MsZ6bmnM\nMW9lJepeCpONwZ4DPIMLOwMVG8yxvzqm59HRrtCsTMpSeLtycnc5WK8HrQkW\nVH2mpkrSLNcguxcpCEYtwYohjqE21E+WD06/XdofkzVcrg1TymEVDxhiVda/\nbCkf+czA85Twp4TmLM+jrljAn4JRx6V1oQvSt8cmXC4cmyUCch9lz7BMLR7I\noHxOH1Rv76GuBEjVAi5ljA7nZb/lJYtUDaOKCnEXS0NOHIPiGDS0Q1DUxhKr\nd/f0y6plOXO/tITt0WdWwHoW03Rz+LPt0r/OpEaeGC9bIZ0L+5M0CWqxtQQy\nwk5OnTA5pQXZlWIkDDg7kCd0zn0NZnlLVYPWHFML07iKlfiOXrsrHHJtACS/\nZx0dBmOaYz+q38K+wTEZ27f7Gq9MqmjpX1m/dbPfexDud4gtxbm3+doyNZcs\nudsj\r\n=lNQQ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusExporterMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"d7f00975452f3343e92f4e2e6629ddc5b000124e","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.4.2-fix-quorum-contract-types.d7f00975.23+d7f00975","@hyperledger/cactus-common":"^0.4.2-fix-quorum-contract-types.d7f00975.23+d7f00975","@hyperledger/cactus-core-api":"^0.4.2-fix-quorum-contract-types.d7f00975.23+d7f00975"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"^0.4.2-fix-quorum-contract-types.d7f00975.23+d7f00975","@hyperledger/cactus-plugin-keychain-memory":"^0.4.2-fix-quorum-contract-types.d7f00975.23+d7f00975"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.4.2-fix-quorum-contract-types.d7f00975.23_1618785682993_0.36472912925915124","host":"s3://npm-registry-packages"}},"0.4.2-main.b067fdd.29":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.4.2-main.b067fdd.29","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.4.2-main.b067fdd.29","maintainers":[{"name":"timoglastra","email":"timo@glastra.me"},{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"d9e9bd35711417e899627afed55bf229da25a6b3","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.4.2-main.b067fdd.29.tgz","fileCount":61,"integrity":"sha512-lUyJAvxE+qhoWJ7Tjcu8F4TTmujGktfgvWyoL1a3ew3wp8k4+UHhX+k2XPx87qULPsGAA6i3/zXM5uqDOtrtsQ==","signatures":[{"sig":"MEUCIFLPlqCW5lKPKTqXqZfvBNQWRioXmG4rUix3y/XDPk8aAiEAtyCd/OAJHR9czdaVDnGvVmO3u88oYaWvneeJXrebc2o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6653579,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgfv7RCRA9TVsSAnZWagAAWgYP/jddjlzDjpo8x0Vul2Ba\n4VlaC3b7bKiDjjXT3j7pYmtHdkbzXydoOVKOHdjGntZCp8K554AsPz2wKI/+\n4KiAAbvXhqCTpvIDt48Ej1nSeJQePz9/TavvOVCbFo1nhJVK1L1EHyEF8OS4\n7n44pY/Sdy5Br3LNy5UyaBchN/WD5Jq4oNVFheZK3lmyXUYuwjorCqSwzeNg\ni9hu9hQ/CzUVCx/R/5GhoWiqJxKLgHKkXCmd+xu2FXhxd/SHD5RqJBmvNkP1\no9lJRFnmf5b5I9C4HwZk/8a5CnHUbL0CDYxRg9/xcOioJaO9rmS68+7b77ES\nivbh40uIr7uw6ATzd3IXYO9EPWYibTjWCk2/n+KioAR9SE4pFSlHe2Hrvb5Y\nXtlsxyt8yMa/eWmzvdvD1Pn7xQ+CWS7ebzGpgrFEZU/ADF3Ph+lwoCckKa6A\nTer2Awu0ghZ05d92F1PWtUXtY4/TPTtHrJhpwG4OXCyY3liMNF3gR///f/gy\nuJhz28v7one+FcpuqfExD9oqGGqI9Kq5tazg1IiLcCMKFVo7BCg2+RjLPCSM\ngoS4qcmuwU89CO2oHCcfa9snmT9MmmuT8xHrz5oHQB22psB8m8uI6QUdEcJZ\nW83XCaBQujWku2wAW5tLXffOExoijK4hhXmv42dkGKGnYLS0HpmOhyJEVvXN\nwz9W\r\n=iSP+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusExporterMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"b067fdd1e7e9fbae4a18fa8efdba19bf977d86df","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.4.2-main.b067fdd.29+b067fdd","@hyperledger/cactus-common":"^0.4.2-main.b067fdd.29+b067fdd","@hyperledger/cactus-core-api":"^0.4.2-main.b067fdd.29+b067fdd"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"^0.4.2-main.b067fdd.29+b067fdd","@hyperledger/cactus-plugin-keychain-memory":"^0.4.2-main.b067fdd.29+b067fdd"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.4.2-main.b067fdd.29_1618935504831_0.09816011767444355","host":"s3://npm-registry-packages"}},"0.5.0-alpha.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.5.0-alpha.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.5.0-alpha.0","maintainers":[{"name":"timoglastra","email":"timo@glastra.me"},{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"2f6e0a8ee1dcb2429ee31a491ddd1047cac7c4e0","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.5.0-alpha.0.tgz","fileCount":59,"integrity":"sha512-13CWB0szRKHxMAMIQPs0gKiq0+diLYTl+WStt4M82voGasPh+uU9SlM6Jepu5b8HHzVSQ3zr0aaLe4E7KUL3LQ==","signatures":[{"sig":"MEUCIC1Vk+2xlZQSd8rlhb/+6f1LBaoY+I/de03NfT7gUZ3nAiEAzKYBcD2QsDnE1jaGZdhkfhs3GPJpFTqmO9s+TZvIFmk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6631648,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJglF1BCRA9TVsSAnZWagAAZhsP/Au8pjqS/dK/yLtdGvNx\nKjz5ps3xiG2vqODPweiNCwgeVXeCPmw5H4N7uJZk+u8w+4vX1lQIrt5wASKW\nvZfRgYXf10CU9mRv7OBFObaGQA/r/JB7o+JhrXNbLj9LkhkYUFUOUDoSutvY\n25H89/BXQpq7vkU6kFC9adqLMDQSiynQt5YedYG7KObgkbtyej5QY3eYpITY\nRqQneA4d1FEgKIijHqBmZ7kG6x+tt+UKRWocX2Y163TLu3jwCQdnZBYtpdUZ\nZWZecK6KQ8TrtLXxa+ruvagEm9t8CnXpwp1DXGUEKJrGzQPGACotuTUsdOzn\nf79r+10aIhYsCKb6ga03msTUqJakPiaBlbA99Yfz0yWMd003P2cT1mRhwbY5\nrmmaZUZzkQXhr0iN3ZqtXUjZfF3XiC4ZlQLMWTtmUgapkV05T95D/VlhaIwF\n2Habu+TQCqoz/dafC9nR8Fh53wu11NMp3DtxaLzVgcZ39F7a8pPVdjXzh3yt\nYueqyC4nZ+z/mFg5YgFy9zXv3UNt0ENoBrJIitoKRDaueBtfEYYMvEpuXzrv\nzaab6tbDMqaOtQwDiarSVJSj+6mAj439HcDz3fkb9zjQuc0ddzziiJ49gIqr\nfIr59iMTNkMJ8i0qItf3v/LLYoMcdscIunDkKGNoIvbpKHbNIaMeJwMHzV9F\nOwyu\r\n=hLT3\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"26fd7f54ccdfee0c37586c51a1fdfd0746a9a512","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.5.0-alpha.0","@hyperledger/cactus-common":"0.5.0-alpha.0","@hyperledger/cactus-core-api":"0.5.0-alpha.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"0.5.0-alpha.0","@hyperledger/cactus-plugin-keychain-memory":"0.5.0-alpha.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.5.0-alpha.0_1620335936489_0.3461447393434449","host":"s3://npm-registry-packages"}},"0.5.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.5.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.5.0","maintainers":[{"name":"timoglastra","email":"timo@glastra.me"},{"name":"hyperledger-lf","email":"collab-it+npm+hyp@linuxfoundation.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"dd2254d7cf51ebfd34b1a0b0abe3a5886dc3b932","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.5.0.tgz","fileCount":59,"integrity":"sha512-K2KKfHcwQ7z/5aPuT/XbrkijpXPm8LVxl/Mq/urSOwLjEagH3XydsqBvLlh3FNGqmWAQnwevBqyDSsTn6Vxmgw==","signatures":[{"sig":"MEUCIQDrS8JqxLZ8biMkoNjIjiEBlwxYseztIr2BDvGVeEw3dgIgX9P/POHwhwd+q1XPOLETCVxr3jj97gUaVwH//OwdiLo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6631584,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpXhoCRA9TVsSAnZWagAAuV0P/0PkZXm9qOE5fFaeaomk\n6LO6peDHwpJbFIrzGUInwLwlUC0Sl8wuvlgfpDTeUl9ZcCDWqYRx0JJJrtWc\n81DZzl0MHVJ7iCd3Bu9idB66cjyoCilqGfwqVEvNds7dEAhggLjGcdFjrwLj\nP3OMvqeGvV3ofPJ7yI+j93SepTap1wHxKgeNk3hVGYuvYU18bBtbtX1zBmyZ\n7dcydI1I78ih6tB3JoCJEpmbRrnPyxtiBvUfnxgVc8xkH4nm9/eUFh3dwQMZ\nNLOWTyi2vRrbCxJnM0phTykXIkOIk09LB+P0vKwmeNDM/9wFMN0DdDERkv1G\n4uj0JPvwdWweKdHAjal2SWNI79ud0RS0ptLSig4c+TDKl0nw5he+WMv1nrQc\n0KKXJ874BCkLUEH4W/zLYEeAJXEoNhm2ZDp1y7pcQDHqucdw5v6BIgu5rRJS\nLhpRggYAn151syvGNUqWH+bnjaxUKjEkYGmVVYV8k5jJQOeLVoJIdNpATyLU\nLXFSaZEqrBQd1YhD2PBYOrjjbiX6IZ8EIcxXEhVhbt8jKoVCOtMt1RbnRghM\nGRr/Fo7Y3FBOn5EwjVaydrTuAiBVe3dZoGJS91nGa9nrYVeNbPUFSJK2/EDz\nQi+u9v0d5Ofaz0rBRN+xIgG0OfSl+M1vOnBemfMLmSl6NvKI8gAwnurcsJ7R\ni7vV\r\n=5UgR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"e53558dbcb64d0f408957fd7cbb1cf5d7255b560","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator generate --input-spec src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/3.22.1/node@v12.16.3+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"12.16.3","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.5.0","@hyperledger/cactus-common":"0.5.0","@hyperledger/cactus-core-api":"0.5.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"0.5.0","@hyperledger/cactus-plugin-keychain-memory":"0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.5.0_1621456999489_0.5638112758178555","host":"s3://npm-registry-packages"}},"0.5.1-main.6d1de274.129":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.5.1-main.6d1de274.129","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.5.1-main.6d1de274.129","maintainers":[{"name":"timoglastra","email":"timo@glastra.me"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"ae5bb642f13714ebc297aa00c03bd68736186cfc","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.5.1-main.6d1de274.129.tgz","fileCount":64,"integrity":"sha512-D/TdUpMPM6ZL10kJ4noZrT9rreuomZx9IXi4je9BptCqlTYVJeYDQd/DWaMrw+i4wESOY5e0melzEEjofbuq7g==","signatures":[{"sig":"MEUCIQC6fzwYytIrGvWS6ky5gsFD43eXxpGJeFBKhK4ulXHvaQIgb0mWtqsiInbbO1YQwgeYIzcwtzpfZyFihqwtHqIMaHM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6736280,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7iC2CRA9TVsSAnZWagAA98UP/06D0r83KgMBkUaeeeKq\nUdG1AfQhuadnWzmlmujcLDicoa2LgM87cyfpHMoo7HVjCcFjiCoZY81V53II\n7MuiQfQISh59i9UQpdMeQ6yC6U2E+p6ZDmBJCqKSHNwVxldTWEod8TzNZDr5\nmhDVbVMqOr65p82Rn7xdnOrb3sNzEp10U2xSSFgFmKNZ3NRdCT09NGCuOLEg\nwrn48GpMfcpCB6YMdmmy8AojmVA8zsPrmFoiwT25Ei6a7vdPOErkkMEEq/fa\niyYap4N1asuIQpWC7bUKPHlaaGVgFukbUMbzWSVXnGQnCk7T+JfXhAltPNf9\n9PUl2RGR1TYv2C5Pp8lwJHc1Jq0g7DSSr1vQlXW8vnytGYArrzmiciCCuhgx\ntFCBBhVzbyHWVlgrmJa9hDEUSQMj05VZoCmGWv6XMOnU698M15nXY8TsT0+I\nWfcsezZ12rP7L7AqK5fDStnmLeVqstXBMK1gqETmRgLZbkQ1f7lAd2CNKA+B\nXfFXb/E5SV9Ctg2uQm6Et103+DkioO0eNFMS9NiI3G3ZKUaWJeNFEsQ3dM19\nltdsoWbujikQIn/TBPLBDMRfkhyICXvFH4WNTWh7IpT8j9JGLhxj6YIBTxAP\nDKq0qj48KfDGo7xNSVtNueqFBRiTak/khKkKXCC4KdztnXrjHyiZ4g97ZCRL\nzCRe\r\n=f6/x\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusExporterMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"6d1de274b45a3fd2cc5120588f9d8594d5d3ace6","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.5.1-main.6d1de274.129+6d1de274","@hyperledger/cactus-common":"^0.5.1-main.6d1de274.129+6d1de274","@hyperledger/cactus-core-api":"^0.5.1-main.6d1de274.129+6d1de274"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"^0.5.1-main.6d1de274.129+6d1de274","@hyperledger/cactus-plugin-keychain-memory":"^0.5.1-main.6d1de274.129+6d1de274"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.5.1-main.6d1de274.129_1626218677612_0.303575583515735","host":"s3://npm-registry-packages"}},"0.5.1-feat-1122.01a4d64d.130":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.5.1-feat-1122.01a4d64d.130","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.5.1-feat-1122.01a4d64d.130","maintainers":[{"name":"timoglastra","email":"timo@glastra.me"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"e043097c45028a6425536913fd0f3f8befe20edb","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.5.1-feat-1122.01a4d64d.130.tgz","fileCount":64,"integrity":"sha512-keGDkTdgUj/ipnrXS3bHTxcgsau20Qr6i7rM2UG0OAgKf+lQODA7umplHEhdHMEiOjaw1nBHzQGkm0shwIxZ/g==","signatures":[{"sig":"MEUCICz4+OtR87RUs5S9F5MLFv36l+Mit8ZJ0TFRSQr8HF1VAiEA7YKswoEDnDRoYqnmbK1ifFuhT2ThNS5tyaL0N75Tbds=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6764024,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg7of2CRA9TVsSAnZWagAAIW0P/0sBBxJuso2WBquju15/\nr99DWIuKYHpkD7vuXdGw1S5iVggjmrmUkocryYWvqBIkS68ScB4UReF8fjPx\n3kIMditfeG2HAjctechTXs7zvUOj132D+FyOaB5fwDSt5ZsKsRSqbMxX65aR\nIZ/l6o242HC4/iDJ+AFcPO5qpuSifWDUOPESnyyLpCfpEFRx7bodbtO4HTmq\nJMu0aHzUBkUGmy0zswsK1AR6G5dwCFZb09K2QhachRV/w6nNo2TJQZA5dfv5\nW0R+fZavnS9JAH3N+RJ77XCG2O+vEp0UMPO6umon9dSWBLjModn5Vc3ZLNLm\niCy5rp4+7tcFy5BqcGvBSpqAVk2rqFGxxtuO8IH7onF3+4NTaAj7chW84btE\n9YCdmESfgVCZdRx6CWQwhEYcS+dJuXkZMtEYM206nKH4Gg1I+mRY6Y02rCaY\nWQvRUxyZJ4vOpL+o53EIf+Get98exjsboHo6gCPA54aw3MC70w+pIyxrjVTd\n98EWgRuO7l5Vv5Gnn+nm3eTPcOK+nSWJqJYAvlbsrkP5mvuUoOvTW4SSYsBX\njjRmrUudcbsWPMVhogrr6pdV7ao85XcYM2NPfkUppp37bn0je0Jvf15Evwi+\npYK6a9HyDq8jr4N1g3VnH5S++B2OqzYIo+7NJFhXFx2YZL4wS5CPw1LslGLU\nGd0T\r\n=+w5g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusExporterMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"01a4d64df747c43ac6857578c3f20bdcba4f2c26","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.5.1-feat-1122.01a4d64d.130+01a4d64d","@hyperledger/cactus-common":"^0.5.1-feat-1122.01a4d64d.130+01a4d64d","@hyperledger/cactus-core-api":"^0.5.1-feat-1122.01a4d64d.130+01a4d64d"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"^0.5.1-feat-1122.01a4d64d.130+01a4d64d","@hyperledger/cactus-plugin-keychain-memory":"^0.5.1-feat-1122.01a4d64d.130+01a4d64d"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.5.1-feat-1122.01a4d64d.130_1626245109830_0.6695664601563158","host":"s3://npm-registry-packages"}},"0.6.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.6.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.6.0","maintainers":[{"name":"timoglastra","email":"timo@glastra.me"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"4a276c8da81b3f16cc380e09b188b119fcc5ba26","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.6.0.tgz","fileCount":64,"integrity":"sha512-a/T7nS/LoCAeK5BPn3ibFNqtwipopQuA7JXW5aUsyG5KHTtGUz7lzhtJOqneBnDN39oV3HLalrMhcwcoSLWazA==","signatures":[{"sig":"MEQCIFX1V6AYgTSBeZ1z7pDaphhUIq2pkHCL0SqIAuHlG0M6AiBbHBAOeeWH2kk+cBeCRHguuSogxMuw1nXQkhVbVQUqSA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6736113,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg9kxfCRA9TVsSAnZWagAAJt8P/1cijbMj7yI69A3d6mrD\nRPIIApAPOarUl4EDumkLVSeSlXU7O0nZrt08tSlN6ytwoXbOIyuxDt4sVaQV\njg5Iz+cZxK/Sl+0VjzackdjKwJVDln4b63rj4WmfZpwyJG4T+Yoqe/WatjQE\n/HtumE1yLoLmLB05zFSC0INe2BzwwQzg68+m3LoRyicAJwep/qw7k9RNBcLQ\n+2K8zhWXBIjJ2Uh9a6RPqQn/xqEr0SlMCnOsglp0M0QA4OM5maRZYv4aThN4\n4iWbWGuoaDGaib2iN6kKYKs+9dwu9+m5f8BOfxBjyjkxsEdrGi84Nm60VSuL\nSza9EsMw0rGAZfqyI6Zd+X9+XXfA5PaVBxwYHqV+pNEeLYPyHZq+n1OjogTn\ng5lbx9McI86nmf8SCYe995pHhtd9bz/yM67B6HQp/TUAcTw50ve0r8W2Cb/9\nGFadEUHddCzzMtno8Wko3PxKTjQZaRp49MOKCLm54BKnyo5zxyqEEPQiQEFn\nTxHmnmxXOuvGE+rlzmqoGTM541uekCjCWMtipl/sGbze2HktAAEwDjGEhFM/\nzgh3MEOEKIqpakgwmBlIR+rIl3ym/dZXtu9VWVFi1MhHHmnAXaXTsHjrt/R+\nW0OjBfwg6hVjg3OG1/RXeIQxoSw0u1iRm7D6IIq5rCRPaOZ1B6ZhGsWVXG2l\nNKjk\r\n=NR7g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"tsc":{"quiet":true,"ignore":["src/**/generated/*"],"verbose":false,"patterns":["src/","src/*/json/**/openapi*"],"extensions":["ts","json"],"runOnChangeOnly":true}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"c45c85b194dd93edcdd7cc34e027022c401f1e96","scripts":{"tsc":"tsc --project ./tsconfig.json","watch":"npm-watch","pretsc":"npm run generate-sdk","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.6.0","@hyperledger/cactus-common":"0.6.0","@hyperledger/cactus-core-api":"0.6.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-common":"0.2.0","@hyperledger/cactus-test-tooling":"0.6.0","@hyperledger/cactus-plugin-keychain-memory":"0.6.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.6.0_1626754143455_0.9200642267680417","host":"s3://npm-registry-packages"}},"0.7.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.7.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.7.0","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"36fce32d17b76976fc3e1c4a21fae706aa399c89","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.7.0.tgz","fileCount":63,"integrity":"sha512-KcXqiQN96PBdCXbGAlQdSdXXLyM+IapcGxA0QEv14uf3ncBHEKQqdgJTff9SG02bXvpABPmzNjdtW1mbv9WzLg==","signatures":[{"sig":"MEQCICL1VBvH3Da91iEiDX6aF93E096jZ8pAMmyJxlqokkUNAiA/rv05PBhmOBqOKUZCep+jjKBkLxuyobTH0gMw0JVsFA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8669136,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhEdqPCRA9TVsSAnZWagAA684P/18B0HYXSReTfzT3LHNa\nQCc+zMaBSgWcqXDvR1s5gintfp3SmhpxAT2fNimSJxZ4WrmXXAyybidl753j\noZO9f4lDe/sl4a1V77kFUB2L4i3poJ4K4AvVqy90TWQC37lB1LyW8uG2bkId\nhHvNyAgkFQJaUGnDO/2EEideDcO/vGT8Qs8YPALUHj94ie4zXEEYjGrMd2kS\n9+nMM6b2ipIZH2NQTH1/JiPZFjEIqU+2xylWwyx8evCSSeqnemqSgDH1bXhn\nfPEM671LjCnH0p+0gdghe9EHrvW6avs1TSOVptQLYrTeWU1oG7q+raUMLubc\nQX/pzfKVNCsq3JGh8ZjNVcdIHLk9Jhok2ZAVeDcNqPmGPiJVb6DJoCiwYPpC\nPPf+qWCLIXCMVlbpjFeYTj1ktSNO0k27PFNMcLMbP1DhiSmGmGV7Nal1oCn5\n2gXZiM/Xjf/XXzDNcZkuME4b+0M2x0PzK8YuWI2vmolGKkJWcqHLEtCYyMYh\nuOUKm/+U89O2VSbYOUYO47Ty9A5cpr79Kwib4tggBUj3duWlqLLEf8nkF7up\n40YnVVLmjPsr5M8QoIJRy2VdadqGkIPuJUJhD8dutqw9cyeai3bsy3oYZF1W\nu9m3No9YqRzA8ykawYI/DFlv1qQXCX1QdcmsxoqKIN31I0RtYU90gMmTW7eM\nWbF8\r\n=h/qb\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/types/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"91bb1f85e1fe45e182114dc05a0f2c4cbe0caeb3","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.7.0","@hyperledger/cactus-common":"0.7.0","@hyperledger/cactus-core-api":"0.7.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-test-tooling":"0.7.0","@hyperledger/cactus-plugin-keychain-memory":"0.7.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.7.0_1628560015146_0.11588111829809122","host":"s3://npm-registry-packages"}},"0.7.1-main.57afe153.9":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.7.1-main.57afe153.9","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.7.1-main.57afe153.9","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"589633aca93d9d577f1866d727289c763cb54fa2","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.7.1-main.57afe153.9.tgz","fileCount":57,"integrity":"sha512-L9K8f0NFuRdo7Dun7UKyDPrBGfhzyW88FWJcESQ3TgdRqt/ZVMNW+LLisoOArI/EjWtN81dO/IP+4LQBRrOdhQ==","signatures":[{"sig":"MEUCIEp07Ln5wefBy8buJiiCk+OgES7kKB0AFOaoRsueChChAiEA3F4pGS7JpsnOq7v+fSF9Fj2fheXu8hEJehpZbwHXzGs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":351568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGdQ8CRA9TVsSAnZWagAA/ZAP/iTl+Npp6dHtDtMiAmhi\n8EZOnevWjA/SzlDgr6LpqVAE94DyBW4LNCZDfq5ghXfrqRHe1G2Mjb8JBRK2\n9+iD/T7JcSgWJyoxT7mPua3D+FG0bwKKIEBDqaZkLeop7OKKcfd9m2aecWBY\nxgQGAq2ZWUgzj7GXyeFnJ2f5P8tPj6NG3mUqU7Tp8m5w+lSAanCX1RSxS6Ru\n6qAHH2zqu4e/ad1cFS6riMjSRFwnFa99S6CKBLQ9hpRmnbAANzhC7cc7W40N\nIX1Uoul6JBz0GBEMrLIuxW8sngIUBPUqbVZUfExZYrFw1lfQRZflGXDYLqfz\nHznv0MlqkVrszqQ3O54jdJLL8XRXCcKmkVgJxnhj0Hsvq5b5Su/UZLNhu8kx\nmA03/R7idsWn3Sk7FglSrEyfhkLmkaFh0mZVX51UxQX3KhECzw7dxNLIrcSC\nPrFrQ0Crj6sJPLk0wAPa6CvmPjdbOGO9muPIIaYRbmh0QIgAGSBMhjpGmNdP\nE5P0TlblLnsyLPI0aKXvaCb0Ly73El/Uq6nQBvafUs0umd9Sb9JdxqxzOveO\nQbET0NO3QiHYkyoTnCWvPjRSc+jmdy2zh5fp+DnunCioGb9JleTS0sbcjm++\nX3HRZBvQJMgiTqAxPdKz3igfA+zwlbwy+knMEoZIyvCoRDoZBj0WP5P65t07\nA1o9\r\n=wynH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"57afe153cfb9b004bd922645f4f9e34a8e370f55","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.7.1-main.57afe153.9+57afe153","@hyperledger/cactus-common":"^0.7.1-main.57afe153.9+57afe153","@hyperledger/cactus-core-api":"^0.7.1-main.57afe153.9+57afe153"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-test-tooling":"^0.7.1-main.57afe153.9+57afe153","@hyperledger/cactus-plugin-keychain-memory":"^0.7.1-main.57afe153.9+57afe153"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.7.1-main.57afe153.9_1629082683923_0.0802479480822742","host":"s3://npm-registry-packages"}},"0.7.1-fix-1226.7df02452.10":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.7.1-fix-1226.7df02452.10","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.7.1-fix-1226.7df02452.10","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"a6fba38f403f0380bd7ae93094ca90690cbc4ffd","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.7.1-fix-1226.7df02452.10.tgz","fileCount":57,"integrity":"sha512-hrhhQHVS5Lz4PIpFKl0RVdMxytjo5Lzsr4ZMtrJA66+NOfQulxke1GHG16FajU2WxOkPAIjK0mbie6nbyzCPmA==","signatures":[{"sig":"MEQCIF4XrToND9GfmD8aws+MCWFDh0uQ4zTT3SeqITabBPb2AiAKZKn0kMJCvjG3M6CYY/CQ79oaMSW+O2ioEVFukFqJCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":351598,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGe6vCRA9TVsSAnZWagAA8qMP/Rkowt17r2pQrsFKcGjX\nD+btMAUwiRGHptpV0/RSjQM+hN3ULGYqWYaXEaL6nu+oat4WMp1V/W1fgQ4x\n5HJIKf9UhT8L9eXeiP2eqwGb5O5pC3gICizbjVzP/Ytoeduplk8ohiNKtS7K\n6enSx5MdPgrkUuiqjrZqOyjXnnfX2mFeMB1xJ30kJ8Fu8r0PWk3FetVqueyM\nMK4qLtPZcAWgepVi+thbFlhtK8aW77x7ovCzVK23fM/ME7ZhMx3eiHnTiARx\nDmrdneqwRdh1beqBoUz4+MqFne8b7DslA/Ya5LDTb147eLCccqfmHV+/6vFq\nj1Hk8Beb5gSt/cjBQ5Vc+skk1XTqZkoMbMvVbgPLvEqmYDwvToAaRYjykWWo\nmgGaY8H9q4BLSTNcT64WoidwGNF/NihHtEwfvCmlxZ46ibnhqkiAmW/o//mo\nyhSUfwhJ75jKbaE0Ezn3PxFepxjybsBp4WFJct+qwn7FcYU+wlfXXWjbxwhC\ng5oQWQz59CnFtHF589ERuA1A9MnbkA7T+dvpMLm+lPoyV4CL3FGiR1bBFsbX\nI5i19kKJ5IVEUQhphSOLqoRu86WjIY/FgUBk9toulcufv53Oar7fodVS6XWl\n15NoGgvwcLzhk9tzze1kBlLFOqvHHmM7w9vcfe0Njg6WsV5kxwwBjR63sUfk\nxol6\r\n=Jqs0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"7df02452acd940752bc8805779df0f007ee42b66","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.7.1-fix-1226.7df02452.10+7df02452","@hyperledger/cactus-common":"^0.7.1-fix-1226.7df02452.10+7df02452","@hyperledger/cactus-core-api":"^0.7.1-fix-1226.7df02452.10+7df02452"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-test-tooling":"^0.7.1-fix-1226.7df02452.10+7df02452","@hyperledger/cactus-plugin-keychain-memory":"^0.7.1-fix-1226.7df02452.10+7df02452"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.7.1-fix-1226.7df02452.10_1629089455739_0.9197662473591126","host":"s3://npm-registry-packages"}},"0.8.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.8.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.8.0","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"ff12adc333c7122b684fce6ab79688a208834627","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.8.0.tgz","fileCount":63,"integrity":"sha512-csBbtWC8tQuen6HuNlPyEK0AosQJsqop1z5LdAH85TZsTUF8P2xsj7dnC0xcztoyNFgM00vtdWyw+z9f2ETz2Q==","signatures":[{"sig":"MEUCIB0XA33VPeix8LvJyNRdrzmI4lSyQnxNNtz/EU/7ZuweAiEAidSVjK4O8PMSw15OJzF5aRV8GVOh1EYm6fYGqhUU3fM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8673807,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhG+JuCRA9TVsSAnZWagAAoE4P/2+iqIxhS/g7tAbMBNph\naa2fe9tbnYAEg2bzFEbtLMRWDJshRv8A0a6ktCdAn1qgQR1ZtUSokarJpSqz\nyGVYuIo92mEfp5AFAgRJY67F88Eqf0EDRNhHlEo6iyiL2nFIwUloks39QBZ1\nLl+zXL9K+yyFc4pMeh9f1W5VF0J2UR3/KjibJ18q8ik71thfBrE629Wb5rCD\nwkVNL0HXOb/M3zT2ziIOvzfJJpHv5IkAG0SAZkf0jls2DIxsW2XK8pxl18UD\nkyFHNdxfk7oM20w5j4rDljHArvwTwogjKi8ODxM8SXRhzKeEhuSakqH+smhQ\nPpv5lAc1lOwpLPH7X+oBae5tCEY62VBCKcoAL+eOI/U6ax+925wXw/MeEhXS\n88oQc0nYDhSvXX6SLYMVZaMqJXux++ohcoq5PLqtRGoF2A8pZ+9U02zvSqyd\nY3cMdX1Fbee+V4FBmr2ZC16cgi51l98xVctEGc3ePNBOJyGmBPnFPP/7eAEA\n+Pg/X79KvR+KS52EuR3HfTz6xeUCnzM2bR+m4M5CttI5CCQBYjR6esldpKai\nZ+dtIq1T5qAOrrpskiax1uFOBspgcxydM+XRS1r7/f1DQ3IrgYyq8NBx1h4W\n5zqfz/y5H0ntJILLegV6WA1zFjapWuO4RsYNezv3DnsNtoFIyp2aGo9yW+zC\nmcdy\r\n=lUuf\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"63d34d066ad394ad5a0b50be6f54a8bc09a9226d","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.2.7","axios":"0.21.1","express":"4.17.1","prom-client":"13.1.0","web3-eth-contract":"1.2.7","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.8.0","@hyperledger/cactus-common":"0.8.0","@hyperledger/cactus-core-api":"0.8.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.4","@types/express":"4.17.8","@hyperledger/cactus-test-tooling":"0.8.0","@hyperledger/cactus-plugin-keychain-memory":"0.8.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.8.0_1629217390624_0.5294978281221485","host":"s3://npm-registry-packages"}},"0.8.1-vaultTransitKeychain.5ad9cac4.17":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.8.1-vaultTransitKeychain.5ad9cac4.17","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.8.1-vaultTransitKeychain.5ad9cac4.17","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"a38868ec83774a2aa5f2dab0be7684cd2f719da8","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.8.1-vaultTransitKeychain.5ad9cac4.17.tgz","fileCount":57,"integrity":"sha512-3/HNoqAD6ferAkJFD/D0F/uYCdG93oGpZb9sH7qtXsARkJXw4Rs1U5aqNGWoHwNXbqDIfMOwQ+37qS9HMyYhew==","signatures":[{"sig":"MEQCIGza5AfYNk1oHoBUk/5W9FUqK+DIV74SwJgEZkn1MPu7AiAybQr2QKUGbiIO4tFu4HgLS6LUg6uKy+nT4kTBSGcz6A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":351671,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLPufCRA9TVsSAnZWagAA+L4P/0EakCqz5awpXfuzpoVX\nSHylfI/s5YLgZcqtl8HHjQ7VGfbuxNfBt9M2+i+tkFyDnVkyb8bZszfzDcqa\nEchEgW9nR4vte9DR6H3RYnxRqDk6/7+3nBGNsvZKz9OPI+iGqtWoN7d9g00B\nunyQ7UPbDRRj6bC8e5KB+BzjOgBApyxLgwAnhvDnbpDqdPqaAzoAkmhuih6h\ni5Gsu6rCNdVNnEOlMwpXO3vemfe27LiSbbd1HPhKG3cRSU0EYsBDPgp9e2WZ\nITudcWlMyISR+YyZiiOCy1Gpde9E2m0IMTEmer2A3scRnIvsiirk/Hqcykq7\nNf1QzscLO39oWtga78zFLKoLYdVVsGQTUu9AZFh5H6Ih/UvkkE/Am5dgJuF6\nznxtKWKjQXKWYhjjRUjxH9F/PEEKMagFHwxgBlZIzWNvfCdExVWi874YQ/m6\nFE9jiPnpza90kn+0Q87fw8qVN/COQrnjXt72Hm0v1xhdTN4hQdtUA/0kQ/Fs\niC2RP2Godk6vYJEAeiz5GA0UcUi8f21u6GajO3rNIU9R8IFbtp9R7QGwxw+8\ncSZTuE4eU7H65IC1gjT6Z5K0/lusensVyFHJIhK/Fu3sgvcXWtRvlkNP/9ee\niB6C58RIKcbnAoOtvF+8WkdSAf4Wquv/c5Rkj6AWcEmKRcJm7V3GU/EizA1D\nr2w6\r\n=8mZD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"5ad9cac40807d2fae77e8a8759abd5b9fc4fa87a","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.3.5","axios":"0.21.1","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.3.5","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.8.1-vaultTransitKeychain.5ad9cac4.17+5ad9cac4","@hyperledger/cactus-common":"^0.8.1-vaultTransitKeychain.5ad9cac4.17+5ad9cac4","@hyperledger/cactus-core-api":"^0.8.1-vaultTransitKeychain.5ad9cac4.17+5ad9cac4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.5","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.8.1-vaultTransitKeychain.5ad9cac4.17+5ad9cac4","@hyperledger/cactus-plugin-keychain-memory":"^0.8.1-vaultTransitKeychain.5ad9cac4.17+5ad9cac4"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.8.1-vaultTransitKeychain.5ad9cac4.17_1630337951627_0.5155751719128521","host":"s3://npm-registry-packages"}},"0.9.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.9.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.9.0","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"e66c2f24b1fc5bb6c6d56dcd2077da34611e1948","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.9.0.tgz","fileCount":63,"integrity":"sha512-9/lDiNEhZejKsqkLBjZGOJbb/6+e5M9SfyRjx8Wm63V3ApoBx28AIzWPnphhUXvav1glvnkyLEiR/2xxzhsXZg==","signatures":[{"sig":"MEYCIQC6hCOsivjuY6K4iv+LtLoAcurMbBZmh/vGDfQkffwIfgIhAPJ4/N5SGGhn7u/FpEAXBkq7GqibtXn13tD4ttQZuEQL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5508733,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOQswCRA9TVsSAnZWagAAwwIP+QDFENizoFRCQMXD1fml\nALUIjzQVo05Wro0VHBvV0aU7qmwGguQMHNPnv1OaViTl4BJ5wy7kzNR6EzDl\nnKKnvg3hUTLX4wHkdvR2JSLzrJagYN64YWm8rq72WtxUTkN1sSg3fshNJRcM\nUqawD3V47+sgvqpzYuDLoVXo/lWR+dwZBqAtWMutdRyfoGPqUqail4epqQrp\nQy1txfeIxzy3+Wi9pS6VXxLQaRgxblrvs57pabpT6fbzVwfMdBUfDimoYphN\n9SS2c1WjDUac2+F7kssRUctyYZ/8+mrynTYSiMYc8Q5CzTlPEQ0kpKC/h4OZ\niHsDKcA0Z8vC9f/VTTdC+wWgrZsmhJ/AVhZusxRVe6RtbEtlCnNiH9Cmt87U\nSaoDj4zGre5V010j25Nbd/Ab4RJUgMU/hDekE/bUV1B/XRExXATsC/b+uyao\nhcGRX6ufz/HeAbn2iJQGD/5aBpw6C908VUqD++Vk9k4AFvJFn1Lt9oaaNk1L\nmckCqdyUQqDCvcCBKp5NWWGvcRJtuYs/tUv+8nHlmd5pkN3SHWojGVy8eR3m\nEpmolSPn5mMm65kHHf8ZBa2quLGWgEW5Jr49V5AskhwTSnTy5hFog/NuvJ9R\n7XXb77rmJDMZezzLEY8Vz9T0jwfLShDS3Fc3SQxV93kThG28Nd7Xtju2rhv2\ncUrQ\r\n=GoiH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"e7b60a04051d0590203482430e5161d5f6a31d24","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.3.5","axios":"0.21.1","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.3.5","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.9.0","@hyperledger/cactus-common":"0.9.0","@hyperledger/cactus-core-api":"0.9.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.5","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"0.9.0","@hyperledger/cactus-plugin-keychain-memory":"0.9.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.9.0_1631128368684_0.06749093016873409","host":"s3://npm-registry-packages"}},"0.9.1-docs-1312.94850924.6":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.9.1-docs-1312.94850924.6","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.9.1-docs-1312.94850924.6","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"921f90ec9c29829bb02786d64659cc248bdbf673","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.9.1-docs-1312.94850924.6.tgz","fileCount":57,"integrity":"sha512-H44Dylg7W09s0nX52KE5Fjc2WK0yqAlkEEVDVPxU9RuRSovbjlav2VsgfmRpQMV8xJOb9F2rKGk5YaCRvAOl4A==","signatures":[{"sig":"MEUCIELtq/hUinRRIx/Q8UqS8G4a66KhbegMZqt6D7iDhLG7AiEAm5kI9gp2zPLlvYIhOsNPJr9AewrUZkNtNk+GbVztDB8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":349127,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOQ/BCRA9TVsSAnZWagAA0ZwP/1Ao/lnXu03Kg2/+Bh55\ncXKDRc1vf4GlRFPNnwL7YsjxEpHxFm8hClGehEqAZ9EnV2UyTWEqf6KMqz/v\nfS6KcD3QIuEUE3yoB/qSalYcL1urTmYUUz7EAOef7gAaxGLtacRpCV96MZke\nIfYzKfWLp2ffYAjEJ+ABRB39AR+o4d4IWaZpis3Ynf4oVm1OUdDtwS5Pkcdu\nWJ9vEh3mUz/VybT1o2t8WhSgeroPH0qf86TPElfEUbdOBk5ut+UgMcKrMEXp\ndnJGzicmNObmu5+9gxA5ZyEjl5/jRGYXYlm5GJB1rhZntYNT1bA+gK7qrjRA\nplMGjQYxW3QjP9TTmBouJE0lDsaiRfu4bon/xyDOunaqmd4oChKIkgIr8O9m\nJG2Gjm7UXa31/i5plDSXILAxM3Yo+SyK6pzNH6R9G/zMATP5sqFe4KuUiRy0\nNUhvtn6V52JW40pyTwQq9Hfq8Li2lUr19VwoPQHwYTURYjPIGhX4WkIZMmF/\nNrig/pKL2FKsTo1fzB72eM5F3UDNbHhLaNL8846+ibbIetyIJIeVyVlQhGGF\n4XiR1a6QhOALxUq/RMxy0DonSUEiKIHyLJ9X45I4CU7H5Lv93udGPGMk9dbw\nOwsnbfygWZJuX6Q1a2obaxZXZlaF6LiJss9P1qR66dqhEccCaqZ0t0yI3mTe\nqP49\r\n=T3Ox\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"94850924d420a26335a577a1802d2b5681158123","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.3.5","axios":"0.21.1","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.3.5","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.9.1-docs-1312.94850924.6+94850924","@hyperledger/cactus-common":"^0.9.1-docs-1312.94850924.6+94850924","@hyperledger/cactus-core-api":"^0.9.1-docs-1312.94850924.6+94850924"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.5","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.9.1-docs-1312.94850924.6+94850924","@hyperledger/cactus-plugin-keychain-memory":"^0.9.1-docs-1312.94850924.6+94850924"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.9.1-docs-1312.94850924.6_1631129536835_0.5318961131965128","host":"s3://npm-registry-packages"}},"0.9.1-docs-1312.bcfd3c31.6":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.9.1-docs-1312.bcfd3c31.6","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.9.1-docs-1312.bcfd3c31.6","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"15b0ac3fbd7fea0cc5fc17838b4b2bc2b91f6ed3","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.9.1-docs-1312.bcfd3c31.6.tgz","fileCount":58,"integrity":"sha512-MpYpZRlaMV0rUZOyothf4cwW9OoTy2+IvL9raKRxvCVsUbfdXQ4DZmU8lhMpUjYaQ2C6pFERKakrKQA+90r9kw==","signatures":[{"sig":"MEYCIQCSbPAisuVwrdUldJgXlIqyK2LFIcc8NC5btwukkMkpXQIhAP6F7a+93+Dl40n7DvI3qV7SDUc/7CvvhvZGWBNXJ37d","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":352055,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOXYBCRA9TVsSAnZWagAAxj0QAKKwwwx0mcTEIIWSlmHY\nxC9QGzZ70BgUpXB+oyZPme23eXHjesbyhbciOLZ0VkQRvYKgmkCBvngtPjva\niW3LZgqpMpnm8c4d7c5pi3vSRFQJatkH5qw/A6I9THVwsT9ZMhItiNTK3vRi\n4z+dVhEjnY4JcV6F8URwxj+c0TogYaB1PvaOs8mH2PfEZ8RN3DrQjUgpiHJc\njS1H+hbOWwjDsz4fLAH2bJSW2CvSapYtadUtbyg3TF2Vme/sAlHbq9+HFDb9\nXbBAWTCgnxcEpnKVCWpa9dPC4FuKYjjC30Ql8tkOI23EmF9hzqaJ5dWfIQi1\nweUVrEsdTt5OnJPlM43H4qzdBSTWwmoquOF8ldAsbOiSzM3CDhaQWR0jEqBD\nHiNiMsrhiJvgjoDwWMdydimTQWo5Io2Rl0Ya52nS4DBayn7vM1DY03HlklyW\nAf0EOrB8jf+cktQ01+D7BM+PEvFFSOVtx34BIZ2VsyB3OPeOxFZ2e9bVU1DD\nPNfQmOryumNx4iPh6mohGPDwL4QapqAfpjPm6FXYcECWdNKOIM/GF8AoM6Hj\nM5DvbAjdt3PIlQ5w61IWTd0PYJqQQFbJVmMJ7sPflH9glssDm9rhxnbWFxxa\nn/LTdf2VBgf4FDt+BYMT3+BjfAn5NuuHrccHraXQrWmyF7zUDZizUTkQ/cQ1\nLmcR\r\n=echI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"bcfd3c3113ef63bae0d83a81a855efb5254b91fb","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.1.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.1.0","dependencies":{"web3":"1.3.5","axios":"0.21.1","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.3.5","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.9.1-docs-1312.bcfd3c31.6+bcfd3c31","@hyperledger/cactus-common":"^0.9.1-docs-1312.bcfd3c31.6+bcfd3c31","@hyperledger/cactus-core-api":"^0.9.1-docs-1312.bcfd3c31.6+bcfd3c31"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.5","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.9.1-docs-1312.bcfd3c31.6+bcfd3c31","@hyperledger/cactus-plugin-keychain-memory":"^0.9.1-docs-1312.bcfd3c31.6+bcfd3c31"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.9.1-docs-1312.bcfd3c31.6_1631155713743_0.4146948916194466","host":"s3://npm-registry-packages"}},"0.9.1-web-socket-identity-provider.845e2a3e.23":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.9.1-web-socket-identity-provider.845e2a3e.23","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.9.1-web-socket-identity-provider.845e2a3e.23","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"b86aae3b3d2282ebd1e7b635f5eb5cfda60a941a","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.9.1-web-socket-identity-provider.845e2a3e.23.tgz","fileCount":63,"integrity":"sha512-GUy61PcPGYmeJS20di++bEJ5K8cHpgeg0rHGHncBbRcd8AfvUma17xeCGwWoD4lMee5Lx+cdV8/oXalT8pHyvw==","signatures":[{"sig":"MEYCIQC17Pj05a574DzLSOxmrVXj2BnvW/O7YQxHh2Xb9LoEnQIhAOhjR+7OoCkvik85IG2jNH/jkG4wTS5jmi4Zj3LcxkWL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10640222,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ4U/CRA9TVsSAnZWagAAfosP/jEcGawZOwfPjekHsM9O\nCIzqpP9zXnFQTGRQ2CKU+TeDJePtEfPD5DcP8xveVmR9BOTXETvge0/WexZs\nfs5jFPI9iS+UZiaUtZMiAWxDl6oN9qMmNqSrkQVYjvebr/W9hT7u2wPEI5Lt\nhOUjJeTgNOLzZ63WfGKa+AJbP6amNVjoyndShwiC8q3fl6KcImF491BD9XGe\nUUROtbMJTCivsyHkZd5U+rAwJNDstA3ZgB/6G+LMCmUUawDDV/rzyRhJmopo\nDMa7F8HJsQ0FQGqSpiqaRPvPW+dfeLoGa4oYDc2xHgR6QatSHAhkyAFZ4qB7\n/CJ0YWPBVncWrdsGZNCq16gpR5EJAS9XPAQpRUUL04SVepESu1Uk2OZpvjcG\ngoStVsngDARLHBvRG81YgJ9F2hUPCTb4F3nb9UGAH94neI/CUXZzCqh49gqT\nOx8DYz+frl7QNfyiveKOH7DYqgocpTTjzKVJ/83BkOtOScBZG3mh0MD67k54\n2PY6ysU97GUaaPhZLwTLYoaRBAoH9T1/ycOTJ2ZjfIVJS4SC87WmFpu8ciN3\njcPrKnhE1jsGw4FX01ZtArcwn1KRL2pgCkAHWMhxESDEeloBvzFDJXU0ft32\n78vFUaeP+35vFk5ZdaI7+fkUF70RVBf5V+nigRxHY1ZvsbhfWbUayUsBrXk7\npB+y\r\n=OlQw\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"845e2a3ed547c1ed8046e33ba55e365605fd6058","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.3.5","axios":"0.21.1","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.3.5","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.9.1-web-socket-identity-provider.845e2a3e.23+845e2a3e","@hyperledger/cactus-common":"^0.9.1-web-socket-identity-provider.845e2a3e.23+845e2a3e","@hyperledger/cactus-core-api":"^0.9.1-web-socket-identity-provider.845e2a3e.23+845e2a3e"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.5","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.9.1-web-socket-identity-provider.845e2a3e.23+845e2a3e","@hyperledger/cactus-plugin-keychain-memory":"^0.9.1-web-socket-identity-provider.845e2a3e.23+845e2a3e"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.9.1-web-socket-identity-provider.845e2a3e.23_1631814975178_0.2707508023211118","host":"s3://npm-registry-packages"}},"0.9.1-add-bluebird-dependency.a8944f63.33":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.9.1-add-bluebird-dependency.a8944f63.33","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.9.1-add-bluebird-dependency.a8944f63.33","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"4021d4041178e19fe6f93fb75e5d0ab666fb3be6","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.9.1-add-bluebird-dependency.a8944f63.33.tgz","fileCount":71,"integrity":"sha512-q4E98pc2V7w1vk4k/TM6zzlQTvjcGu+iztWNaWS4JMEhHDiCoZ/ZsfmL/LAdwLXOrBr5xWEg3T4fpJQ9vw4gtg==","signatures":[{"sig":"MEYCIQDkjutSeJa8Bn+l5e9QF3nifvyK4yE8EW2IDWQKpss9wwIhAOTj/uZY60eveLhUjvAULdD4AAfpH22q1Zv1lFhVd1qT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":531175},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"a8944f63a62bd254be94503e5d795fe8c7d7e309","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.9.1-add-bluebird-dependency.a8944f63.33+a8944f63","@hyperledger/cactus-common":"^0.9.1-add-bluebird-dependency.a8944f63.33+a8944f63","@hyperledger/cactus-core-api":"^0.9.1-add-bluebird-dependency.a8944f63.33+a8944f63"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.9.1-add-bluebird-dependency.a8944f63.33+a8944f63","@hyperledger/cactus-plugin-keychain-memory":"^0.9.1-add-bluebird-dependency.a8944f63.33+a8944f63"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.9.1-add-bluebird-dependency.a8944f63.33_1632438746501_0.09198641582063072","host":"s3://npm-registry-packages"}},"0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"d4432b3b8372265f782f248f3d2df2f7a85dacd1","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33.tgz","fileCount":71,"integrity":"sha512-2j69eO2fgAryrLk3tc1+6gnvSbf6mDKVmBTSrR7b2PPNjlqIB+w8cE1k1VJo9ITtAn/PbjnMaeD4PMk7P8VCIQ==","signatures":[{"sig":"MEUCIQDopokVW32J3R1ATrTWsdujdMzxsJh+xNlR2OhIETFKOQIgD1FOQe4+mC693hSXpD1xQgM2VlY0yCHUWxI5pNz/lsE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":530759},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"e1eba3a46e9c66662c2db3f07f1d68ec76a2a62d","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33+e1eba3a4","@hyperledger/cactus-common":"^0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33+e1eba3a4","@hyperledger/cactus-core-api":"^0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33+e1eba3a4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33+e1eba3a4","@hyperledger/cactus-plugin-keychain-memory":"^0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33+e1eba3a4"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33_1632519003852_0.21516253154621","host":"s3://npm-registry-packages"}},"0.9.1-ci-942.cbb849c6.35":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.9.1-ci-942.cbb849c6.35","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.9.1-ci-942.cbb849c6.35","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"a231256af1ae6b344a95284136ec35d9786ba096","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.9.1-ci-942.cbb849c6.35.tgz","fileCount":71,"integrity":"sha512-V3Dd8mIIgDPTL8oVNY2ykmI50ZkJ/LU/MMwLPOcGPI5deGFcgZonEAuI76QfO4cM8iqSJfprp+sty49zQhNOYg==","signatures":[{"sig":"MEUCIQDJc5VYmC+PdZ99rmb8ZdwB45BLxdZ3P9KssjTfeB+q6wIgFkE4MuKCc7hHNMG+CvsBXg20FDPOTgnsEy6kswmvbNk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":531073},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"cbb849c65f8addd6cbca1cebd247988744c4588c","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.9.1-ci-942.cbb849c6.35+cbb849c6","@hyperledger/cactus-common":"^0.9.1-ci-942.cbb849c6.35+cbb849c6","@hyperledger/cactus-core-api":"^0.9.1-ci-942.cbb849c6.35+cbb849c6"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.9.1-ci-942.cbb849c6.35+cbb849c6","@hyperledger/cactus-plugin-keychain-memory":"^0.9.1-ci-942.cbb849c6.35+cbb849c6"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.9.1-ci-942.cbb849c6.35_1632701683933_0.7908721379152308","host":"s3://npm-registry-packages"}},"0.10.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.10.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.10.0","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"2baa42d91c3f912b06c31fbd5e10cf2cb9988d06","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.10.0.tgz","fileCount":77,"integrity":"sha512-I+QdHfK3u9PL30e3JoQJwFMu0L0zSXx9+MmYLsK1zOIpVCRhQgvMgeuWfB2iKbjDxyZ9y/PLxXo1+E/8f+rZyQ==","signatures":[{"sig":"MEYCIQDZuPmMMXWct19QXAg5C5kxi++GzW2i9K4vrKDeuT4iFgIhAO04TVf4HWwcRyYa5xdJibVzs1eiJafWY4b9HcHvlor3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":12109200},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"a298592dc8b0408c2b46619e37fdb97d90f4f2ce","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"0.10.0","@hyperledger/cactus-common":"0.10.0","@hyperledger/cactus-core-api":"0.10.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"0.10.0","@hyperledger/cactus-plugin-keychain-memory":"0.10.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.10.0_1632801581044_0.4705150615140321","host":"s3://npm-registry-packages"}},"0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"a7b7ae75a7ecefe243ec6666c61b01dcfad02224","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1.tgz","fileCount":73,"integrity":"sha512-3EMDitSEhgSNl5NEKp+Mza+uv1P4pGRH26p+GLnG8tflObb/nPzX/UhmQDHdRGFVg3ovEOy/vOpoPOBbLUSAdg==","signatures":[{"sig":"MEYCIQC5cdpQTgKBnuNeSQz/G8GbbTJjUUqZUIt6TLW2SPscmgIhAPC8nhaf5/squhDYmwfdglYdfYVmNyr0nUGBcvTWyI/6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":550835},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"bf5e0403907bef8d84e52eb945a71713f4c8385f","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1+bf5e0403","@hyperledger/cactus-common":"^0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1+bf5e0403","@hyperledger/cactus-core-api":"^0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1+bf5e0403"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1+bf5e0403","@hyperledger/cactus-plugin-keychain-memory":"^0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1+bf5e0403"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1_1632851117133_0.4671018095987134","host":"s3://npm-registry-packages"}},"0.10.1-fix-quorum-api-server.0677a0e6.4":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.10.1-fix-quorum-api-server.0677a0e6.4","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.10.1-fix-quorum-api-server.0677a0e6.4","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"8a17dbe4377bc28d504de88796595056fe36fbf5","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.10.1-fix-quorum-api-server.0677a0e6.4.tgz","fileCount":73,"integrity":"sha512-/A3liEDRN1dFVB12eEamry3AHjvVRW+AvtqzRM+qmiS6wq3he93FeOJ1oXVts8GnHjftLoz6BEsPbyWpR5pbXw==","signatures":[{"sig":"MEQCIEX2xXzAQVnkNkzNJ+EYZ8ttpqRHxtwIs22aGO9IXhM7AiA/xAEpvJCg/gGR5zqu0si+01Y2gN9oLdcMM0XCPpaVgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":550769},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"0677a0e61c21eb4851628a1897684e6c4bf92d48","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.10.1-fix-quorum-api-server.0677a0e6.4+0677a0e6","@hyperledger/cactus-common":"^0.10.1-fix-quorum-api-server.0677a0e6.4+0677a0e6","@hyperledger/cactus-core-api":"^0.10.1-fix-quorum-api-server.0677a0e6.4+0677a0e6"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.10.1-fix-quorum-api-server.0677a0e6.4+0677a0e6","@hyperledger/cactus-plugin-keychain-memory":"^0.10.1-fix-quorum-api-server.0677a0e6.4+0677a0e6"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.10.1-fix-quorum-api-server.0677a0e6.4_1632927770719_0.3016619529878899","host":"s3://npm-registry-packages"}},"0.8.1-pr-brioux-1333.92b26c3a.36":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"0.8.1-pr-brioux-1333.92b26c3a.36","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@0.8.1-pr-brioux-1333.92b26c3a.36","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"62f1a3aba25039ae02b419d7e27e32bb487920ec","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-0.8.1-pr-brioux-1333.92b26c3a.36.tgz","fileCount":57,"integrity":"sha512-OlN40ESic2INQwpg3rOVIkxZp8IckTZMq7/KjtajgeU4BKPRN4dnoKstQMIWpfW26sPwJm+N4vW+bFvvCB3adg==","signatures":[{"sig":"MEQCIA1PKPuaJRBgaitDtqPPvhMEvLUBpCJNH5FQwEMoz01MAiAnl3njK9lRPKmE7gESv6VBsnULoYwA1J3gkN7QaFr19Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":349017},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"92b26c3aec03f2be25f130c762a2fd162f265579","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev webpack:prod","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","webpack:prod":"npm-run-all webpack:prod:node webpack:prod:web","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","webpack:prod:web":"webpack --env=prod --target=web --config ../../webpack.config.js","webpack:prod:node":"webpack --env=prod --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.9.1+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.9.1","dependencies":{"web3":"1.3.5","axios":"0.21.1","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.3.5","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^0.8.1-pr-brioux-1333.92b26c3a.36+92b26c3a","@hyperledger/cactus-common":"^0.8.1-pr-brioux-1333.92b26c3a.36+92b26c3a","@hyperledger/cactus-core-api":"^0.8.1-pr-brioux-1333.92b26c3a.36+92b26c3a"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.3.5","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^0.8.1-pr-brioux-1333.92b26c3a.36+92b26c3a","@hyperledger/cactus-plugin-keychain-memory":"^0.8.1-pr-brioux-1333.92b26c3a.36+92b26c3a"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_0.8.1-pr-brioux-1333.92b26c3a.36_1633546280080_0.42084541576802303","host":"s3://npm-registry-packages"}},"1.0.0-rc.1":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.0.0-rc.1","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.0.0-rc.1","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"a95a78a72e02666d2d1e5d86e3b4ee1aabea79db","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.0.0-rc.1.tgz","fileCount":82,"integrity":"sha512-k5h0QE6eTyjkLDK82RnWhwSJdG4XowqEzFg9aBpf7QbRyc0rueJMt03YnyUH6Eo/MTYMlDK+9xCqeBHgj69hOw==","signatures":[{"sig":"MEQCICr30VJHneC8LR1brhEJPduwAmVh8Lu1HULuAILS9pIPAiAmfrqT/YdzANR3F1C25avjS2e3XpOVBzbg6qqW+e3H6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":645258},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"bfe342e9f443737a3bc083e0d9697024021229ae","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.0.0-rc.1","@hyperledger/cactus-common":"1.0.0-rc.1","@hyperledger/cactus-core-api":"1.0.0-rc.1"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"1.0.0-rc.1","@hyperledger/cactus-plugin-keychain-memory":"1.0.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.0.0-rc.1_1634001072268_0.5286320347382616","host":"s3://npm-registry-packages"}},"1.0.0-rc.2":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.0.0-rc.2","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.0.0-rc.2","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"cf27a77039a8ef6c8fdab2d6dab0c4a704da80ac","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.0.0-rc.2.tgz","fileCount":82,"integrity":"sha512-ZupVzFw2FCqc6BJ4qc+H4K3NmHtC1f8pXd488+ebpszGT3MjVA1NBtQfUOmPHDGfTNtavtgV70Ie1mnVlumxJw==","signatures":[{"sig":"MEUCIQDwxkVPt2UnJQfbWpnoHD1YNtuHOclj6qOmt/5OLoutbAIgWwJtKR3ZnUYWyOkUTgATz+KRAaA2u1teliMRou3Gt0o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":649235},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"b673fbe019554b6f946d14a7e928f92d3d4126ee","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.8.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.8.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.0.0-rc.2","@hyperledger/cactus-common":"1.0.0-rc.2","@hyperledger/cactus-core-api":"1.0.0-rc.2"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"1.0.0-rc.2","@hyperledger/cactus-plugin-keychain-memory":"1.0.0-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.0.0-rc.2_1635876125974_0.8811773504162692","host":"s3://npm-registry-packages"}},"1.0.0-rc.3":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.0.0-rc.3","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.0.0-rc.3","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"d88510d143fbc95c92bfc2dc80418f227dbd5231","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.0.0-rc.3.tgz","fileCount":82,"integrity":"sha512-cnDhnuZO9RUcdUPQPcuqjydpmliqiyuxzZDXrDuVujcBTtKKMI3nRHsRfrHo6p2JMhFV6T9JAeHGM3oXwq/pqw==","signatures":[{"sig":"MEYCIQDZlxH03cIVUpSOCjIEgWhN9Yup0ntd0fX7L8MoyGd0qQIhAISiHmAZ0XMhKU6tRqcMLjl5Ll7K5qwNQZZY9/P4w5RH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":648912,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhsCB+CRA9TVsSAnZWagAAZqQP/R6oqOLcRLLf9rOIzphT\nryS1s0umoME45HDd4eLncxiVIo3lggrkwNs8t+h7kj3xfSVE0kNhdQTMIbWl\nvCqZJNT5YFFGFy8kgx+fsLIj+dfI/bxbM7cM6Q23KDCmPCCIaY7t5Uh20f9m\n9c2oSdAbdy3ODZiIJJxZCqNBDqAWY8BxyRwY3kcvCgOgbJEmhlntBtOwDQWx\nMcUwnjhUguNxtAr0+zZkUwBIhHnHbx0jV52JjwcpBOChG6/oTz9QpiixU67w\nUoHbPz9b2yKEszvE59mt8wJmPd6laj6u4i2O1Mw1f9U6uBQGC0SNTAX9n8ar\nLOJmgjw7fw63sEMMswGksb4lmGrltTob+Hpm8mrfn2hLuGtlaE/W6OX96ybW\nms/5P16BSWp177mLiA5AjJ7qvSARqmPneTKAWsbPdh2ygmKhc0H9XBS/S2Ix\nTC0KV0Bwo4g/d24ClHJU4zRx99/fQ2IqTamqzf1GOJvq0Sd7rjCTmVFHnYtS\ntVf6HePNBZgqtu31DY1EKUB40tI2J+7ltlO811XGqBvFgNcOs8DLnwqx1/TS\nfvW7HqSnWAA8XQJ8fdPRc6AS5BBzqFjmVpM5IetDDTaUyqHs+aDLxJG90ZXd\ncWzN0iuAuvLxrffnNZw+BeOJ/pN11C98u+NykXSfYv53Zi2++NKJzdNP/kSw\nNbkW\r\n=eKWy\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"fdd888396d6727ee225b6729a2aac6d6d05b802c","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.7.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.7.0","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.0.0-rc.3","@hyperledger/cactus-common":"1.0.0-rc.3","@hyperledger/cactus-core-api":"1.0.0-rc.3"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"1.0.0-rc.3","@hyperledger/cactus-plugin-keychain-memory":"1.0.0-rc.3"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.0.0-rc.3_1638932606694_0.7231382123747134","host":"s3://npm-registry-packages"}},"1.0.0-main.334593a7.46":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.0.0-main.334593a7.46","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.0.0-main.334593a7.46","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"7ea0c9eae569705d6502836abbb73a9bd41194da","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.0.0-main.334593a7.46.tgz","fileCount":81,"integrity":"sha512-a3ciaB0V3TyVqZEkNqW6Em4WVkoQ/ESDR/GortF+MH1NdMqzEwo6ShQ/GRsZuaGXuHQCo4IKrkXXOdP/pYe2ng==","signatures":[{"sig":"MEQCIFr7CFpPiykRsFfzGeeJBCYk7nI6d8Ri+yViZ2hxqxvGAiBS+YYtHVSl8qqRSk3Zi2jLOblA5Tsbb63U4YSI3dgGSQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":643028,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh5hESCRA9TVsSAnZWagAANJIP/RGCZscP5Uz4RzsGJfvt\nbSgy5aInbcprPyQvXNmx5iFjCxosrMSrYoPONHh1f7nuOO4feUKH40zCrCMz\ntoU1zshbEJ1E6AEfe8Y7NDfRhJZ/hDAP6yIGEybJ9DWguDmva8LCwaBokMdK\nUB0KuwKnknweWcCiD8KD92CN0DLkDCF1PswjcrSs5di9efN+H3DsDQd79vJt\nkHjzTzWJKdBb4YbajifZuzbl9nVtOTPJSy3jHAqb+KR8OCFFv7J7Xx7QR0ap\nSCJJWW0mCUwmFzCmxH/ZGBbGxm3kht7axYoy0ggMfbRkI8tFCrimZ2DyKgSW\nmwTQ6Cj4k30iiFsdz+xYccwsascEFuSTl+67DpTaKDjbjR5C+nphXrEJxvyJ\n0mj/yGH55y2AIyMsShmfY6EZ1QOCTAqOU+VOmHR1De/kls/+5Q2STbJf+Ehg\nQdu3zb3WY5VcEdIcCHOf9jbyJgSURl8Jfw9d95zwITONi5zc0g1Tn6s28Vne\nPCdULG0S6EYJS0vlz0kc3EMwejLQoqwtz6TO/oBh0FIt67nKf6IlY4iQQmQ0\nA+Dl6/HNOIkM4+5NGbJfqI6K8oAMHwzeWsmyilksZFn2LYSH4yFJ2HKHmkhf\nNwFymuF0J/Mln+vS7dVyj/uipGa8KnKTZF7B2F2ZiT6tiA0zV8oOPl73m34u\n5Ojg\r\n=SIqo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/.bin/cactusapi \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/.bin/cactusapi \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"334593a74e9ba454a5e5b2511f1784a569564aaa","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.13.1","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^1.0.0-main.334593a7.46+334593a7","@hyperledger/cactus-common":"^1.0.0-main.334593a7.46+334593a7","@hyperledger/cactus-core-api":"^1.0.0-main.334593a7.46+334593a7"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^1.0.0-main.334593a7.46+334593a7","@hyperledger/cactus-plugin-keychain-memory":"^1.0.0-main.334593a7.46+334593a7"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.0.0-main.334593a7.46_1642467601886_0.9742088668741837","host":"s3://npm-registry-packages"}},"1.0.0-jwt-supply-chain.62c7e930.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.0.0-jwt-supply-chain.62c7e930.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.0.0-jwt-supply-chain.62c7e930.0","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"0ab68350aa24fb5714355f500426be370bd0abd2","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.0.0-jwt-supply-chain.62c7e930.0.tgz","fileCount":82,"integrity":"sha512-Wrtd5IBefGG+FMufAncF3w9/t1QKi70YpfGZV7Qjqxgi3IOZm2xtO8+gkjhHVKNcFtxg9LDIr5fBIvmIDThpMg==","signatures":[{"sig":"MEUCIAOv93fWlUqAn+ZgQCd166t9gJW/nSS6OnrHuwY9kvbPAiEA/AWkTk7oLeGG0aSyEKBiHQJ5P89XyaH93B8Ar2ukhXU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":646022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+yDrCRA9TVsSAnZWagAAgCQQAKCvYxqePFwnOr+42KBi\n5ECzoeUmpT4Hjo6l+QYkztKejxJdgHOLKmp6/zvI13PZtlo45QCL6fiW8F9p\ndBAubvpcs16qSK0K+bON09yMmcNWimriIvneuSZt9osdJDwkV0Qixz9LCNJy\nmMJzmO/QV04GMyYgwLDOkHD6fbLpJaAsyZ3IXZj4iUZOlUqBwet7mSputpW8\n3b1TSrmYuOmXxZzSdcGUpp6+VrIIN5gAPJbr/vSl4Eoq5OA/0MoO+wkR6bQA\nvkQywgbSGNQalG1LyruLt+wdN0ZCA3xnM2L0NSO+wab9Qak8h+SXe3D5U3UJ\nYzYRwhZpvxaS6+TpBliOZEY7AUQp1JARqI9mJ/QnVhzsBOlr6OaRhJIwKH6h\n+YxuOA9ctxjHG6P/lDeRYRIMdiI5NKL1eh5r440JQjgzAMKNwkcSbQe1deHt\notHG7N5Zv24pKiEzJGvqL4sxCmwfpQRnHg2U2KpocTXnepjPoxFHNWE5R6FJ\nVLaqnZbyF83+msqWioIyftCvopIPqR6vAE4rYX8rfDEv1QdbqyfWw5eQ6ASn\nj7+WyH+cfPfrAkA6haJqY8pPuIknHPikvnjlPimU6y+DYUJxmbH5qRiim6kP\nbubmlp3ebpjW8z7aC/INLYHMgRUK7EOIs0h38oBAGlrRObZNSLFK0qAisY2q\nInSN\r\n=IxAF\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/.bin/cactusapi \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/.bin/cactusapi \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"62c7e9301a806f7dbdd300247b692dbaa3abf570","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.13.1","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^1.0.0-jwt-supply-chain.62c7e930.0+62c7e930","@hyperledger/cactus-common":"^1.0.0-jwt-supply-chain.62c7e930.0+62c7e930","@hyperledger/cactus-core-api":"^1.0.0-jwt-supply-chain.62c7e930.0+62c7e930"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^1.0.0-jwt-supply-chain.62c7e930.0+62c7e930","@hyperledger/cactus-plugin-keychain-memory":"^1.0.0-jwt-supply-chain.62c7e930.0+62c7e930"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.0.0-jwt-supply-chain.62c7e930.0_1643847915267_0.7749134383558314","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.0.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.0.0","maintainers":[{"name":"hyperledger-lf","email":"npm@hyperledger.org"},{"name":"hlfdev-azp","email":"hlfdev.azp@gmail.com"},{"name":"silasdavis","email":"npm@silasdavis.net"},{"name":"gregdhill","email":"gregorydhill@outlook.com"},{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"patrikstas","email":"patrik.stas@gmail.com"},{"name":"timoglastra","email":"timo@glastra.me"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"50a444ee0478d8442a2f3bd25a42ff7376c763d1","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.0.0.tgz","fileCount":82,"integrity":"sha512-OaRKvUSqDIHCMZeINV6KoO7wIAytZwCeG6fi8QD3zbCOsTyfSrVEflQZSkEzYv20B/v3q62H1HysFoi1dyw0TQ==","signatures":[{"sig":"MEYCIQDYYsNUrmCdOSnG8kNzJIE62hcAwG5GEGly+JKLYY9XCQIhAOZswLaJe0pr7npWozG6LAuUnMWHGngJinP42cmq24eM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":648966,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMnvCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpO/xAAlg6PUiVWIig/HWwyPZ1rVKDIvL2b0AYntx1UnrmZoLiqIAMU\r\nLhyYx3q/oJj16W+mbPTdo/ZxSKlC1OqgCWHXed9Mfk3zL9BbT0pXFNx3DxcG\r\nyYyJFL3QV4b4nX4Lppy6zvQpFtILfsIPofJ2ReebmuzAgzAHbCLjJ790hpxD\r\n8YkR5upjaT5neqbkbp6UV2OuLTqC5q8VsLLJqJagBAGv5TaS6qucrVRR8yFK\r\nT4OvJgRzDIDo9b5vhNXsC90equjoU5PwxxfSysmqClZ/w598fQ1rdSSbEVp1\r\nDbAhasw00U5LrCN61BWxdv2A8XKsDhUE77Akwb23c4ixTbFCb4pWqGK89eXZ\r\n1G55XFpJfXPs61ghBurvAp72HemvttSIh8salrh6DgtHzrAZWOJZAXXc+nDB\r\n5hfjWfULOhJT9+yFthR3+GW90q1iCrlF4G8nqSODbyslfkZ3Fw3YxZNcRMqc\r\nceZVattbyMZhAA6CY54x0B1OhEKJcTDiCeaPgvtuu+TQa4hJMc8afFimfCZi\r\n0tkQdV2fFAQxJ++JwionmlFBvY8cpI1+2LvU27D0coUmEzHv7iOpfprDEkRc\r\nkjMqiBPrv+pkUanc5sImS3zL6UBcbbZI5mgaR+iIJerQbUDK0DG7bXggkq94\r\nRESeyLfYf5j/890ru4PPyD44g2CF77v/Ya8=\r\n=p/Qu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"864449fb96c39e4605d5df4d51465af765b3d10f","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.13.1","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.0.0","@hyperledger/cactus-common":"1.0.0","@hyperledger/cactus-core-api":"1.0.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"1.0.0","@hyperledger/cactus-plugin-keychain-memory":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.0.0_1647475649884_0.050392549592604086","host":"s3://npm-registry-packages"}},"1.0.1-jwt-supply-chain.9df3fe79.16":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.0.1-jwt-supply-chain.9df3fe79.16","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.0.1-jwt-supply-chain.9df3fe79.16","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"abe8d1dade40030b17e035c76e1369eac736b2b3","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.0.1-jwt-supply-chain.9df3fe79.16.tgz","fileCount":82,"integrity":"sha512-pcV322i1w2SqzV1uEP/RiFxy9rpOKfPYNcWn+hzfZQgekzexXyQ177Z85yp5+FFVJMwDv8BA+awdrXPLcLQcUw==","signatures":[{"sig":"MEMCIDOKtH95ckUOSq88oO3vJKoSY/h6jjAvkwdFtpH7EyKIAh9LhxX7gvBvCl7xoDrQHGum1QA/lm/wng8Jn/IzSnPS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":649199,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTHYfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmooDA//Z+UOGG5JqDl3oXVzjGdhXy5U1d4MY6Lh7gUyQTjVBvS5arPr\r\neIviU8kwaxq6FVUO5pZJHhqeKjfUsGt1zgJqoIJd1u8jrdABhQ7Q7hC5Fskd\r\n7GiiKfOFMmPikx8AeU1zDsfcDQwoayoK/A/aDjlfdkNQ1XRwixrbkiNWi7Bx\r\nELrid6aFLBYxVio5VZGNxLF9e17wNzDQR/srkP6Nwl9zqcPs6kaKRkHF7x5Z\r\nlCZEP1XRvpueSZSV1C4lvfcVwwfq5bUB7Q+KMGmRboPX+gT33VxtbOAa2dqD\r\nYQC0WEaV0m3y7wf9MWZ98Z0cUyDtQsDeqhwbzWNnCnzGC5+EN+serd81UnBw\r\n47TarCkIMyItwvfydSfysSOlEuuL/7twCf/ey+Je7uKaJtOR8A6TTTt0L7su\r\nDeoTTJO+alBnNYCUGi0EWWKUKolkjDdmaLrjeJkTwpxg4a9tm6qHr5eDAnns\r\nZTEsfKPU6XvZNkAHClZrMcFHy8gYnLo0Bp76eIGgeno5P3tkWf9UlmE2NRv5\r\nKb5OpuivIrOwMSiSWKmAyS/dS3Pj7T6bpKYRIzBZgrhAv02gMDXWFbm9xrBd\r\nMim0LlCZR/ivPS2TE0qAG6n6dUhhDOyoQHOcRZGK42Dusx/QNvU6wGlZLicL\r\n7lqJIX1WdstU/M4IArjm47x55b1LqYEwYDM=\r\n=LbhJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run comfigure\n```\n\n### Compiling\n\nIn the projects root folder, run this command to compile the plugin and create the dist directory:\n```sh\nnpm run tsc\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractV1Request):Promise<InvokeContractV1Response>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request):Promise<RunTransactionResponse>;\nasync signTransaction(req: SignTransactionRequest):Promise<Optional<SignTransactionResponse>>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/.bin/cactusapi \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/.bin/cactusapi \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments \n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"9df3fe79252a78893e746a303e4f30d3a725a559","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/4.0.0/node@v16.13.1+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.13.1","dependencies":{"web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^1.0.1-jwt-supply-chain.9df3fe79.16+9df3fe79","@hyperledger/cactus-common":"^1.0.1-jwt-supply-chain.9df3fe79.16+9df3fe79","@hyperledger/cactus-core-api":"^1.0.1-jwt-supply-chain.9df3fe79.16+9df3fe79"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@hyperledger/cactus-test-tooling":"^1.0.1-jwt-supply-chain.9df3fe79.16+9df3fe79","@hyperledger/cactus-plugin-keychain-memory":"^1.0.1-jwt-supply-chain.9df3fe79.16+9df3fe79"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.0.1-jwt-supply-chain.9df3fe79.16_1649178143477_0.18684986086889888","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.1.2","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.1.2","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"3cd837e6cdfd7b42415e8947070c7ade56c07cd6","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.1.2.tgz","fileCount":93,"integrity":"sha512-4mue/jvCSBtdAluSpMPn5KeuIOzQsXlR/G6geG1+1CbJPMm6WOBUfRIq2g+JCMXqtb3FJ8eeJAQkZtJO224oeQ==","signatures":[{"sig":"MEYCIQCugPC1ttjI6lCgIKhJU8rNcsK0Bp0O0ne3+3E5JKYw5gIhAJ4PcnMaBZpbJTUeJvKqUH7sB3lIbJpjsDSH1tMfQ2tX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":758665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbuPzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrdHQ//fJNvpp2M0z7SKYqtEfU8xPOCJkFPulzPNxImcyk/FAmv+n1k\r\n5JiriuQ/YmwBE/ezr0Y/dArC8hmK5NnXjuX3Ym+UrcewlmAwDC34M9X+ETGs\r\nmyiDoy1I/uLj5A6vAk9SNBm8cMbopqhYna/HD3Tr+61Y96jbg3swXPhF6cYP\r\n8YT4/P9ZQvMAzqitOybFROX+pq+jk3By8XsfMOp7LAhDxW6kermS8+8uQGtF\r\n0qUhor4oj+M18Lf0EbVNguUcYxk7NHxh7lshGcRxQqUODkDvdUl46HEIQGV8\r\n94KGvkp+giTEb77GkbK55lAnhJVgDPLKfAwAFvrj2oN4zkUkF1nTOlyPALnb\r\nLUt7LHPYBzKNSaCTUzAZisowneDwvdcDx5FT1cq3ZtW1wbRhQPlNsIFzb3w0\r\nxErNFd6VBaYHa5rcEA7Q/DZSz5qsDOCtOobJVj5O434cjaVa4A/9vwiQ7raa\r\nE9IEp2vb4OXDYATzmXU1aUrogHJF2H1KnetEBoMsfmPJJT4TwxAhHP6LwIBh\r\nqfCYLYr0t21AnIqSpWxTsqEk1J0PSLaA4u9JIxMkEWEwANp3oCWu0KNtgN77\r\ntNGzBo4b1IKrv6aO7UQFyDqCCvG/UHbyxQO1awpybfn1GmKfCV0oDcEwVYDM\r\nUnvIQoLgTrOHngT3toxjHPnLPoUzQmKP+Qw=\r\n=OEly\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"c339075fbcda8a26521c0414c9334d49d569dfe4","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"8.5.0","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.14.2","dependencies":{"rxjs":"7.3.0","web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","sanitize-html":"2.7.0","run-time-error":"1.4.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.1.2","@hyperledger/cactus-common":"1.1.2","@hyperledger/cactus-core-api":"1.1.2"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"1.1.2","@hyperledger/cactus-plugin-keychain-memory":"1.1.2"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.1.2_1668211699010_0.60398825545055","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.1.1","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.1.1","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"e830aba7c596aad9b4692d010bb71cb77f808474","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.1.1.tgz","fileCount":94,"integrity":"sha512-IJvEgfHZ0ushOJVh2I5qFZ0rAdnxMLsl/f0JDVZa7dk3lLBn2Nu1Scu6Ts7wo3GggeESY+n44AFVE10FgNFN2Q==","signatures":[{"sig":"MEUCIQCHIdb7UglkCJTxN91TQpJwSVJSu4QdlQoxxMRzE4K/owIgAZrcjEg1ScImQjjYefs51ACzVPJOySQjNFahZqHJpKQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":770022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc/YEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmprFhAAguM3kSjRhq6TdzDxy0tVs4NMuxQJsCG4dSIjNQBEn9muIir/\r\nUiKCIsw4cqiHkoJFanvTEMQdoQAZeG2YLX469KBHTiL4wrEMb4roAS+v5Twx\r\nuKfzqkAxRzJ4+peLa+vePQBoNmw+fY/HuM9mwwe7GIZlngC1+dJcpxsM8zWe\r\nXXDWmm+yZsfgBpIAhTRaGegbG1tXj6MaV33nNcKmFz7lniuYvN9CLHKjMB2M\r\n9ayL1rxw4wa7eJNYuBhDP53l1/cc4HAhuz6cjf30B88jTzv1yWP90sQpruN4\r\nLbDpe0m31OPkOnEmq6kiNvD94H6aWZyYVZvL4MaJSOYDV1JjANZaS3x+fAlQ\r\ngQCdBFxCKXe18bPAbikA6L10nvw9XEEqv+S1399UxI2oQWN1ee6MHI/zhicW\r\nQuIX84gMl532nOxD8KSZTAV1UYtJ8dOBNPA5yMaBQyKPePqP5gzIDThRV2ti\r\n+NaQO4FKajdlLbLDhPqqkj+Tg4+e7k2zsuzRQbeM1EO2gTJ8WULyIdAVB3r4\r\nwIT2PxR5dSN9LU3TLOati8xQcjAIJthHoGJdS5z729k+8ORkMzPmJ+s5poDh\r\naEUxVAlMwJNVLG6PSpBBozMEKRgBzxetpTjg3v066PDD+OkgRczaUM4tG8Wg\r\ngkxrMBPYOgqfGWWRf3e9exeTdxSXDWIcbU8=\r\n=qRY8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"d7cb611aaa5c278b0d2fba544f60f645be31e7bd","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/1.4.0/node@v16.14.2+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.14.2","dependencies":{"rxjs":"7.3.0","web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","sanitize-html":"2.7.0","run-time-error":"1.4.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.1.1","@hyperledger/cactus-common":"1.1.1","@hyperledger/cactus-core-api":"1.1.1"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"1.1.1","@hyperledger/cactus-plugin-keychain-memory":"1.1.1"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.1.1_1668544004197_0.7655387082572429","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.1.0","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.1.0","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"9a2b313c51ee90aaca8f599637f3deccfd67c8fa","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.1.0.tgz","fileCount":94,"integrity":"sha512-HediNQTGwth90qRBXG+rJfxXPdLYSwtzaYJIwYBIq1cBxx2i4iCOpGDnTaKG7oonLGO0/gUmR+2vj7+n7bCoKw==","signatures":[{"sig":"MEQCIDXOtoSK5/nSRbSCa9/bVSNVBZ6O3s6Y3DWfSOOM8qFkAiBKiFN/IfcBRicN7VzcbD/RUMpAWRKeOSXjvVWyIE+69A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":770022,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjc/gtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2Eg/+It0Vijt4b87wfgoxp9YwlN6eHswoRnuibxJ9KmhIoPCNooUs\r\n0tjJbDyQuaIME8hYOz/jy8j6V63v96SMY0gRLC17FQ+oTDLLEjIACOS8n/oW\r\nW995TbxLyXqXPMjq2IeivD8tOfdNJgUZ6w0w449RV+JQ4V9MVGaRZXpqafpi\r\nVIa6/HaYNKSYFVA2IVTeW8Hu83Pua2YPH2mepayWEoqj+ZZdPKu3OVKAhdR0\r\n3DJvBaik+ZVyS1dlpUWFUeuPhTzLkkpe1DD3CWzI/VQRhKAOMprjLg8IsYgm\r\n855gDv1TVl2NJLZ7o3cWwezZLRmh70DUs22FjEV0TslwXnH8MkJPNtvTjUJi\r\nQbc4z5IOQmgzZ8q1HlTzZVgTmNU2uLw7zFfzaxy7AI28ZqH/XY3FINYQoCUf\r\n23JlMwFoABZi5xzbddwSNbI34Cd9EV1Rfpp77YuQGKImcbfqPGupUmO/U21a\r\n4FVLEbSc69dv81WW4nwMp920n+uUirbcqojmdvZXNThl3n/qDu7PPuXKy01M\r\ns5Syr7zAIPLXXxJSJ2c+K7Y3pSsIINDfBHcxxnu0uHIr+d+ZeSigMYrLPR/3\r\nJaky3cR+Fqs/UKi60ZX/beqMtbT7do7ffaaANCqAaMJkgDrTvMNKV1gcy+on\r\nA14eZc7NaPQ+g9uhWEGCymJcP3fsaHx8w4M=\r\n=SoB+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"cc8deb8167ec485d7bc1e7145d8573b112775e31","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/1.4.0/node@v16.14.2+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.14.2","dependencies":{"rxjs":"7.3.0","web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","sanitize-html":"2.7.0","run-time-error":"1.4.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.1.0","@hyperledger/cactus-common":"1.1.0","@hyperledger/cactus-core-api":"1.1.0"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"1.1.0","@hyperledger/cactus-plugin-keychain-memory":"1.1.0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.1.0_1668544557268_0.2620772426593594","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"1.1.3","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@1.1.3","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cactus#readme","bugs":{"url":"https://github.com/hyperledger/cactus/issues"},"dist":{"shasum":"3bddfe989a5338035d9d1d9cc2832ea08965c5f6","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-1.1.3.tgz","fileCount":94,"integrity":"sha512-ZVUVDQmk5QFG80h0dsoKmI7j/9/le89wJycrD3uzB2NY8Ha3zMrcst0otV1r+2Ge0CpQRD6kVGUkUYg1PB5F3g==","signatures":[{"sig":"MEQCIEoBj/L8t0z8KY4k0jW3/D8JZD8qT0GfKqyAWC3jodiOAiBAw0nWMU7IkNSs1X9P8wXAsYFFW7IILUiBrnMCrmwvlw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":768946,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjmm8rACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoXYRAAnX/jCH1PObbG5ldWhlP/oBD/HiIoWrrgH7mQsB436Eb6TX2Q\r\n18hlcQuwITZ/mDYL5rhQNsAdTZ8wnQTVu1DeHc/AyDLfwqtiMAzaNLXlFHlj\r\nR9+Ysfb4mz1IqCQB/yRgKiV+ftCOFA6DvviL0jVYE5hxaxnbAdev1Oc2dJPQ\r\nsFS5yHDGKFvkX0kv+svLb/rVgEWdMn1icJiMY/oGYa2oVXGIFtpxyaLKoZOj\r\nJRS3uRdgJV7N/wGhWFQgwd45BzNiC9JYwu3enMzFJqZM5AggmF1eMVCT21ao\r\nsYvuac8flbqE9DPQ2s9SOq5E1NV/KbHJD1iwmCUjwooE0dbeKFA///rIlFkZ\r\nWs6+JqGIiSnR7cVeq3xUCCg704xxU+/gRLqGcJZckFUf6nOMn1XPvdTuUebF\r\nONXxquaMDtKktHPuTDz4/4atly9rpvABrNXgbcoR9Tza0vVCC7XszNW75py/\r\nF9K70D4oBHEaotDaVenPCX4NB+HrR7ngo+lFC9STnPguyyUNty9u8phd54Y5\r\nDyQvFacaOVucOvabWd/ZXy6MqzEJdculvg3yOhzpluiKaogrDdWWxN2jObgF\r\nyXOUaNiYOYOKr0v2qBiMp082OgYB/cYvMzNkbEFLr7SHosh0+MmJg/0KnOSF\r\ndt9z9nYK4NbDuunublOrniJ8LiZvFhIFUCA=\r\n=v7t8\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"795ee6bbd9637c2259fe92d0f56780d36121c538","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cactus.git","type":"git"},"_npmVersion":"lerna/1.4.0/node@v16.14.2+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.14.2","dependencies":{"rxjs":"7.3.0","web3":"1.5.2","axios":"0.21.4","express":"4.17.1","prom-client":"13.2.0","sanitize-html":"2.7.0","run-time-error":"1.4.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"1.1.3","@hyperledger/cactus-common":"1.1.3","@hyperledger/cactus-core-api":"1.1.3"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"1.1.3","@hyperledger/cactus-plugin-keychain-memory":"1.1.3"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_1.1.3_1671065386999_0.9670883579893494","host":"s3://npm-registry-packages"}},"2.0.0-alpha.1":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-alpha.1","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cactus","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-alpha.1","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"dist":{"shasum":"ff70aaec46dab87e5e3239a416130bcd8fc0068c","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-alpha.1.tgz","fileCount":93,"integrity":"sha512-svSTHJVIFg7p/NySWE7zKkQWqRpgS8MNXRc+Tk1PqTwtu5P5GFjwCTQjWyPcyFmEGAuMZXKsWlwU1RtzaVaJzg==","signatures":[{"sig":"MEUCIAmXxkQ912AwORzu/uOPvNz6g1wUtxodMTfM+J2aHl0cAiEAtClU35BeiBB6w3/Pl7MARYSLcSQrzCoCRIsKuDRfo2Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":766151},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"e54842d168be78a3cd327ca07c24b75ea43043f8","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p generate-sdk:*","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/2.5.0/node@v16.20.2+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"rxjs":"7.3.0","web3":"1.5.2","axios":"0.21.4","express":"4.17.3","web3-utils":"1.5.2","prom-client":"13.2.0","sanitize-html":"2.7.0","run-time-error":"1.4.0","web3-eth-contract":"1.5.2","typescript-optional":"2.0.1","@hyperledger/cactus-core":"2.0.0-alpha.1","@hyperledger/cactus-common":"2.0.0-alpha.1","@hyperledger/cactus-core-api":"2.0.0-alpha.1"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"web3-eth":"1.5.2","@types/express":"4.17.13","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"2.0.0-alpha.1","@hyperledger/cactus-plugin-keychain-memory":"2.0.0-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-alpha.1_1694280551801_0.5564810174814703","host":"s3://npm-registry-packages"}},"2.0.0-alpha.2":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-alpha.2","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-alpha.2","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"3de6f5713e3538b9eca0230da4397d90fe5e5ff1","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-alpha.2.tgz","fileCount":98,"integrity":"sha512-6eQtUvwhseQsqrrxKFbOF/UGuWrf3ZzowxTYkWJSbUXfV96s3xI9zrFN9eCs+/yyVF5RP9Ekn+92PCpGj9gLbQ==","signatures":[{"sig":"MEYCIQDtZy28GoN2YhXpjf7ZtaH9rwlF7ahbQ13QWfKIv4swywIhAPir8s+ou/Jdyixu9GFdixKBm/SAtYDwwWS1Dtqt7JTh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":818665},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"e5c7bd9c302d4addf07dd0bbb24361199940e7f4","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/2.5.1/node@v18.12.1+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"18.12.1","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"0.21.4","express":"4.17.3","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","run-time-error":"1.4.0","socket.io-client":"4.5.4","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","typescript-optional":"2.0.1","@hyperledger/cactus-core":"2.0.0-alpha.2","@hyperledger/cactus-common":"2.0.0-alpha.2","@hyperledger/cactus-core-api":"2.0.0-alpha.2"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","@types/express":"4.17.13","@types/minimist":"1.2.2","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"2.0.0-alpha.2","@hyperledger/cactus-plugin-keychain-memory":"2.0.0-alpha.2"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-alpha.2_1696402060623_0.034877407066350896","host":"s3://npm-registry-packages"}},"2.0.0-dev.93":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-dev.93","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-dev.93","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"4a24a7c2a2125e68857e05b8f708615b16fcc847","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-dev.93.tgz","fileCount":98,"integrity":"sha512-fYNvYYTmZD7GHRZ88ILXr/vAcsGmA+6TNVFwPrsBnha0baFjBP6jCWq/6M6DQC4vCaSVza9fJyIJrRfArCSmcA==","signatures":[{"sig":"MEQCIGADYl4EsJJuq8/LiZzWHZRfphZrdBNkbcmesbMVvweNAiBEa1whKrTNYL9KLMshRjHolb09PZUTG69lk8rm6QZYXQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":818955},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"df265e0b97b7c2b52587d0bcc923b9917c5c00c5","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/2.6.0/node@v20.9.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.9.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.5.1","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-dev.93+df265e0b9","@hyperledger/cactus-common":"^2.0.0-dev.93+df265e0b9","@hyperledger/cactus-core-api":"^2.0.0-dev.93+df265e0b9","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-dev.93+df265e0b9","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-dev.93+df265e0b9"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-dev.93_1700104490025_0.6034742463160332","host":"s3://npm-registry-packages"}},"2.0.0-dev.94":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-dev.94","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-dev.94","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"7a48bf9e90f5db420d438420027bcb29809aae89","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-dev.94.tgz","fileCount":98,"integrity":"sha512-ueg9EFNVWeaa30dibl7IbkY+323z0VTOMyGzSQSDwOtRsIPxbmWBtSI2TIQoE1vY4YWDlicvkeUJh7a1qZPqfQ==","signatures":[{"sig":"MEUCIQC1w20Mm0aXcILcSLngIxNwgkPXnffKDoO5XQarznhfqAIgJAjd8y6T7A7qDdnUzwqak2ydHKtftOA9ADX49jjTdVQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":818955},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"50f45779e3ad1198123b24bd2013c7eb24fb2ff2","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/2.6.0/node@v20.9.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.9.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.5.1","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-dev.94+50f45779e","@hyperledger/cactus-common":"^2.0.0-dev.94+50f45779e","@hyperledger/cactus-core-api":"^2.0.0-dev.94+50f45779e","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-dev.94+50f45779e","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-dev.94+50f45779e"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-dev.94_1700110368543_0.9461282921147434","host":"s3://npm-registry-packages"}},"2.0.0-main.91":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-main.91","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-main.91","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"16fcfd632bcca524a6cc9e8e7cbd1d319a33e02f","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-main.91.tgz","fileCount":98,"integrity":"sha512-H0DnOCunRY97LVQ3oaUQApgJFEhxpYvmP5DfzHFKJourrz4ZGHaviVBtADXWEjvfRJ0CTtuOIjkQbxkvcMzBlQ==","signatures":[{"sig":"MEUCIQD8kWx7X3Iy2GGLV66eVbGyotIo8Ymt2vNzWSeEiXgvRQIgdkM1Ui7YARiOolY14XVYWqhUpjRnYWGwcFMg5frAcng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":818961},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"89d9b93b7380477c10d8da78fcd259c95b495fa9","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/2.5.1/node@v20.9.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.9.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.5.1","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-main.91+89d9b93b7","@hyperledger/cactus-common":"^2.0.0-main.91+89d9b93b7","@hyperledger/cactus-core-api":"^2.0.0-main.91+89d9b93b7","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-main.91+89d9b93b7","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-main.91+89d9b93b7"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-main.91_1700111002404_0.10947779193626617","host":"s3://npm-registry-packages"}},"2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"15a2661ab9b483b13e303953f3a5490f49e962b1","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126.tgz","fileCount":98,"integrity":"sha512-NwBHZwuD6I25RpqFjE10M2mrhkKh4S8VCDBz78oyGeAwfgpinaH94TaPzg5aKSWSVgnDjXul7fwKEVpnkZSp1Q==","signatures":[{"sig":"MEUCIH0P1U0gNtvpDeJVmizTa9Nbh0FsGShUZQSOcpFWfSioAiEA0u4hd8hqwLJ8RI1u7hTJarYduzVZbwvGlk7wkSmHhAM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":819299},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=6","node":">=10"},"gitHead":"dae98b30c3e825e8a63f9ed5d09bc7d67c451890","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.9.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.9.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126+dae98b30c","@hyperledger/cactus-common":"^2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126+dae98b30c","@hyperledger/cactus-core-api":"^2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126+dae98b30c","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126+dae98b30c","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126+dae98b30c"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126_1702001049054_0.9637952923697863","host":"s3://npm-registry-packages"}},"2.0.0-main.159":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-main.159","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-main.159","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"f980975cfb65c0a9d1802fc7650eeb7ce746849c","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-main.159.tgz","fileCount":98,"integrity":"sha512-wA/or8lmBLMxXRA8dwL+tHq2ecNAEC5GLxDCAQEzWuOO1gyq+Ey6dSByX4/nPw/UOZaDMNW4X2CAu3BhnjwlVw==","signatures":[{"sig":"MEQCIHsGFhoc+d3fnDVN9OvSrT5MgntnY3ny+ANrLBa5W0ZjAiBSWhJlW6sGHW1935BaxRtUjNkUvhTMK/uy0dXfIR4LlQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":819023},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"1fb2551a055daf202d2def0fcb3de990a44cfb03","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.10.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.10.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-main.159+1fb2551a0","@hyperledger/cactus-common":"^2.0.0-main.159+1fb2551a0","@hyperledger/cactus-core-api":"^2.0.0-main.159+1fb2551a0","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-main.159+1fb2551a0","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-main.159+1fb2551a0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-main.159_1704759658451_0.8246753421791495","host":"s3://npm-registry-packages"}},"2.0.0-lfx-connector.163":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-lfx-connector.163","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-lfx-connector.163","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"43782ad910c0b13ae48b5d60d1d131a34d9009f7","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-lfx-connector.163.tgz","fileCount":98,"integrity":"sha512-idf062ynUEpDnSA9kybm4RXacqk/QpCr4vqTLdJxS54bHzoLTu7fLhdddq2H3whpjZS3IkfPYFvguGv842qKBA==","signatures":[{"sig":"MEUCIF/gxqeL0ukKK1+YXW42PH0R6AfYN/zrvCOb2vVir8thAiEA3YPGOgew7kpGpW8dDN27uk+eBdf/Vja4cH+tSROU4YQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":819077},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"f7e7a2a1cd9694327e4d323650bd3fad9b3b80dd","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v18.16.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"18.16.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-lfx-connector.163+f7e7a2a1c","@hyperledger/cactus-common":"^2.0.0-lfx-connector.163+f7e7a2a1c","@hyperledger/cactus-core-api":"^2.0.0-lfx-connector.163+f7e7a2a1c","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-lfx-connector.163+f7e7a2a1c","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-lfx-connector.163+f7e7a2a1c"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-lfx-connector.163_1705430838098_0.9527070672530407","host":"s3://npm-registry-packages"}},"2.0.0-lfx-connector.164":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-lfx-connector.164","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-lfx-connector.164","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"0a3917a536da84ba9df71fff297d16ded32aedb0","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-lfx-connector.164.tgz","fileCount":98,"integrity":"sha512-SzmdlquP0hnD5MtF8PnVx7XvcXzIVK73ZeBSbT0J6+7VF9hflJ5SMFxDuyw39l1mplvMUfQWVfc8uj9BT7ITKA==","signatures":[{"sig":"MEUCIQDOghnGoIg8voT0/YaZVqEXZQldCWNZ1/ZObThETjuZWQIgKH789te+rpvSD/wH0JSnpE+ydTdAu1PieeZeAoqm5cA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":819077},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"8355399ea266cf10724036d03a914186a4fd6000","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v18.16.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"18.16.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-lfx-connector.164+8355399ea","@hyperledger/cactus-common":"^2.0.0-lfx-connector.164+8355399ea","@hyperledger/cactus-core-api":"^2.0.0-lfx-connector.164+8355399ea","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-lfx-connector.164+8355399ea","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-lfx-connector.164+8355399ea"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-lfx-connector.164_1705431759419_0.5982601318520671","host":"s3://npm-registry-packages"}},"2.0.0-dev.195":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-dev.195","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-dev.195","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"97006ead802324b8031e01414602b095b4f3f071","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-dev.195.tgz","fileCount":98,"integrity":"sha512-a9aSwvY1+otM7Qq3/hDf/vCvrpjVdqlURaQp+OATakGo1gJaff3CmByEj9+XkTCMNqQ7u+TBRBZ4VNg03Pra5w==","signatures":[{"sig":"MEYCIQCCodqlGRfBA0ts+t0wScwKZ7yWGFyw0SsfQBZDDWT83gIhAL/B5oAwtKrHvBBFv09xzq/UgyQsShpBt6NcUuqaYsF9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":828515},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"065250d9bfd0a6bf735277677c4ef0f2d01b4932","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.11.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-dev.195+065250d9b","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"^2.0.0-dev.195+065250d9b","@hyperledger/cactus-core-api":"^2.0.0-dev.195+065250d9b","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"^2.0.0-dev.195+065250d9b","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-dev.195+065250d9b"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-dev.195_1706137208085_0.9870542738409338","host":"s3://npm-registry-packages"}},"2.0.0-dev.196":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-dev.196","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-dev.196","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"d939792bb955b9dfa61c543011ec75e26e48772a","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-dev.196.tgz","fileCount":98,"integrity":"sha512-6Cl8AKRG7aNOSoLDDK7zp921O+3UC9ZEZHw5V9M0o1gZU7r1Ngb7V+sabiKzKenqdeoFYjm+ud2kXPnlXiwlMw==","signatures":[{"sig":"MEUCIE7l6lubP0aoZWKn/6KbaeBgfdt9oe3HOdGFd5a9XI6qAiEAhHWwp81RStFxEc6WWpsyWLBqc7HUkFull3SiSNThCcI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":828515},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"1b9a3c27634eb1327b83b901d440d258a693dd53","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.11.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-dev.196+1b9a3c276","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"^2.0.0-dev.196+1b9a3c276","@hyperledger/cactus-core-api":"^2.0.0-dev.196+1b9a3c276","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"^2.0.0-dev.196+1b9a3c276","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-dev.196+1b9a3c276"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-dev.196_1706141000160_0.7185346053504029","host":"s3://npm-registry-packages"}},"2.0.0-dev.197":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-dev.197","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-dev.197","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"ae1ce84e01bad86123bbf1a380fa5435ebcb5694","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-dev.197.tgz","fileCount":98,"integrity":"sha512-fsGGdopY3x/DSdq1z//Nv4nFO6LZ/t941obUq9RVRFcrjOsAMQZw74ztOZmKa9OWvOy4R+1k4Cxtsn1aJImy8g==","signatures":[{"sig":"MEQCICBIy+PMAerlbM6YkdSPBwjAAZOTJe7wqZYDEJwApRVNAiBdDGL7vCMpJPKQojir+Id6Sv8RFzVfve6T6/kEYvI4tg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":828515},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"a9a16d0c877edd2dffd81765be5ccbeb826a266f","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.11.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-dev.197+a9a16d0c8","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"^2.0.0-dev.197+a9a16d0c8","@hyperledger/cactus-core-api":"^2.0.0-dev.197+a9a16d0c8","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"^2.0.0-dev.197+a9a16d0c8","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-dev.197+a9a16d0c8"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-dev.197_1706143675374_0.15239800794843594","host":"s3://npm-registry-packages"}},"2.0.0-lfx-connector.208":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-lfx-connector.208","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-lfx-connector.208","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"22f830e4869d0c7254fceaf7aa28fc66a3f2352a","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-lfx-connector.208.tgz","fileCount":98,"integrity":"sha512-A8SjThC5VQj/PHcPgVq7/noV3nLbPBvf8rHhs4cI6RcX1wadLUeS+D1Qeg2o0icVv41uRvnYcEZymemQXiqTtQ==","signatures":[{"sig":"MEYCIQCD7Vtq4tHf4rT49ABXVQOblJO0gGWNwpLtvgThbeKIngIhAIgaqFUh/ZjFBIr0grLD0HARgixfm+Y88Pp2JsOvDvyL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":828574},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"73bd58231e4e890851cb6d20c103dde76894e5d4","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.7.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-lfx-connector.208+73bd58231","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"^2.0.0-lfx-connector.208+73bd58231","@hyperledger/cactus-core-api":"^2.0.0-lfx-connector.208+73bd58231","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.6.2","@hyperledger/cactus-test-tooling":"^2.0.0-lfx-connector.208+73bd58231","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-lfx-connector.208+73bd58231"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-lfx-connector.208_1707323875670_0.054324219125304385","host":"s3://npm-registry-packages"}},"2.0.0-main.214":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-main.214","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-main.214","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"d62f0442b88c20f92aa3b3c12c2c9e90900a1916","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-main.214.tgz","fileCount":98,"integrity":"sha512-ep7L/CGdPrW6e/tiFHL5c/tLczaLPgBK1oL5uR4w5HsAO4XmWIiGI4LtV7XEb1xwnmnDzLgCiK1/8BdzCh6lWQ==","signatures":[{"sig":"MEUCIGKlRU3NpPNuGwFg7xXjpYEwoZyJLnvc8vR4k8X4Dko7AiEAnMCWQAcuU9HKoiMbOTctzMrJrg1idW2vgbwKCcbguI0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":828521},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"28e1f9b7b0bf17f880292ce8b0b7725ff521785a","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.11.0","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-main.214+28e1f9b7b","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"^2.0.0-main.214+28e1f9b7b","@hyperledger/cactus-core-api":"^2.0.0-main.214+28e1f9b7b","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.6","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"^2.0.0-main.214+28e1f9b7b","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-main.214+28e1f9b7b"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-main.214_1708021448563_0.2548354446519474","host":"s3://npm-registry-packages"}},"2.0.0-2945-supply-chain-app-build-failed.241":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-2945-supply-chain-app-build-failed.241","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-2945-supply-chain-app-build-failed.241","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"b89d1c9ccd0a4ced4c5cc256d04af96fc0aa53cc","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-2945-supply-chain-app-build-failed.241.tgz","fileCount":98,"integrity":"sha512-zPEBrlb9CJpzdwzKyD0exi/CmpAiwYrsTHYMi5R9veCgXVfsVGvqQZt9K8Bg/Fok4ihO3f+KXWHFmc0KvoglXA==","signatures":[{"sig":"MEUCIQDdqG8J50GFvRmlSHc+GGclbS9k6E9XHy9bSmg6NRR+MQIgGl7u6xTAB5DnYhhsAsDJRmSUYASl1W5sFIYfQFrBBHA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":828701},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"b2c306ea0c2029d6de14dd3c9c046b498b90a129","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.10.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.10.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.18.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.12.1","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-2945-supply-chain-app-build-failed.241+b2c306ea0","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"^2.0.0-2945-supply-chain-app-build-failed.241+b2c306ea0","@hyperledger/cactus-core-api":"^2.0.0-2945-supply-chain-app-build-failed.241+b2c306ea0","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.8","body-parser":"1.20.2","@types/express":"4.17.19","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"^2.0.0-2945-supply-chain-app-build-failed.241+b2c306ea0","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-2945-supply-chain-app-build-failed.241+b2c306ea0"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-2945-supply-chain-app-build-failed.241_1709870191206_0.11181697459453965","host":"s3://npm-registry-packages"}},"2.0.0-main.339":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-main.339","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-main.339","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"f67280098c46efa3f5e6013830ce42d84a5035e9","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-main.339.tgz","fileCount":119,"integrity":"sha512-MgK2Z/2zTyZenNVD/3ZjWJNepdHJ5rGjrex8RNiF7VaoeVPIWIhPuuA2gMcJ0R5J8q7T/0MRGqFckMs16wb/cg==","signatures":[{"sig":"MEUCIQDBEGPUfvFO1hDSFuitbLRspwaGqohhwHLYeGpJ9AfP9gIgAmDq9WDRJ0xw+S24yVjB1V98Br1iudkOSnYTt6fwsos=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1098036},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"ec8123cf954b09ba8cb213c7332dfe82224c351f","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.1+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.1","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.19.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.12.1","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"^2.0.0-main.339+ec8123cf9","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"^2.0.0-main.339+ec8123cf9","@hyperledger/cactus-core-api":"^2.0.0-main.339+ec8123cf9","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"readmeFilename":"README.md","browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.8","body-parser":"1.20.2","@types/express":"4.17.21","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"^2.0.0-main.339+ec8123cf9","@hyperledger/cactus-plugin-keychain-memory":"^2.0.0-main.339+ec8123cf9"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-main.339_1718254975567_0.19960294870093298","host":"s3://npm-registry-packages"}},"2.0.0-rc.1":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-rc.1","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-rc.1","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"eead0d27a28fbae61aa7dfcebe819e7f6ee18bf3","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-rc.1.tgz","fileCount":99,"integrity":"sha512-H3O9ooZ8HeQCB8IUA+pPCVc8xHRpTQmjz0ahk8khyGqq/UXyli1tN/73DFfsyI7WqbixhMuBlxK/IsZRnSz+4g==","signatures":[{"sig":"MEYCIQCqOqeRlXkJAEIg8iqWgf/UTPYuMfYQz/ic/tVDAuJzPgIhAPJjNjqpBBzW9T/fRzUskr1DlVgMufnmN68vJKfjYGnw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":884865},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"fff9e8647ca16458b8b0a4654036aff95b855fc0","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.6.0","express":"4.19.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.12.1","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"2.0.0-rc.1","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"2.0.0-rc.1","@hyperledger/cactus-core-api":"2.0.0-rc.1","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","ethers":"6.8.1","web3-eth":"1.6.1","socket.io":"4.5.4","web3-core":"1.6.1","@types/uuid":"9.0.8","body-parser":"1.20.2","@types/express":"4.17.21","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"2.0.0-rc.1","@hyperledger/cactus-plugin-keychain-memory":"2.0.0-rc.1"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-rc.1_1718729195194_0.4932021624527474","host":"s3://npm-registry-packages"}},"2.0.0-rc.2":{"name":"@hyperledger/cactus-plugin-ledger-connector-quorum","version":"2.0.0-rc.2","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","_id":"@hyperledger/cactus-plugin-ledger-connector-quorum@2.0.0-rc.2","maintainers":[{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},{"name":"hyperledger-ghci","email":"npm-ci@hyperledger.org"},{"name":"hyperledger-lf","email":"npm@hyperledger.org"}],"contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"homepage":"https://github.com/hyperledger/cacti#readme","bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"bin":{"cacti-quorum-connector-status":"dist/lib/scripts/get-quorum-connector-status.js"},"dist":{"shasum":"dec242dfdba65814aa4c7b596723aad0c0c7d02a","tarball":"https://registry.npmjs.org/@hyperledger/cactus-plugin-ledger-connector-quorum/-/cactus-plugin-ledger-connector-quorum-2.0.0-rc.2.tgz","fileCount":99,"integrity":"sha512-j/88NppM5aC78xa1VORBNMGUTv5r1Nm6yNwMJNuUTLdyLN7kQXXUyzhnWkTzSh6ZsIIet4osyLRsLtY2F4Q7MQ==","signatures":[{"sig":"MEUCIQDqVU8EENGvqG4Tk+Kn9yyx7thdHvdueHIae0qOBRq4qgIgTdQfR8HaTYCnT4PwU1M5Xg4bQCX+We+6AHEshuMMkqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":884620},"main":"dist/lib/main/typescript/index.js","types":"dist/lib/main/typescript/index.d.ts","watch":{"codegen:openapi":{"patterns":["./src/main/json/openapi.json"]}},"module":"dist/lib/main/typescript/index.js","browser":"dist/cactus-plugin-ledger-connector-quorum.web.umd.js","engines":{"npm":">=8","node":">=18"},"gitHead":"fc9df672cbd30a28d13cb388643b3a51f18304c0","scripts":{"watch":"npm-watch","codegen":"run-p 'codegen:*'","webpack":"npm-run-all webpack:dev","webpack:dev":"npm-run-all webpack:dev:node webpack:dev:web","generate-sdk":"run-p 'generate-sdk:*'","codegen:openapi":"npm run generate-sdk","webpack:dev:web":"webpack --env=dev --target=web --config ../../webpack.config.js","webpack:dev:node":"webpack --env=dev --target=node --config ../../webpack.config.js","generate-sdk:typescript-axios":"openapi-generator-cli generate -i ./src/main/json/openapi.json -g typescript-axios -o ./src/main/typescript/generated/openapi/typescript-axios/ --reserved-words-mappings protected=protected --ignore-file-override ../../openapi-generator-ignore"},"_npmUser":{"name":"peter.somogyvari","email":"peter.somogyvari@accenture.com"},"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"_npmVersion":"lerna/3.1.0/node@v20.11.0+x64 (linux)","description":"Allows Cactus nodes to connect to a Quorum ledger.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"rxjs":"7.8.1","web3":"1.6.1","axios":"1.7.2","ethers":"6.8.1","express":"4.19.2","minimist":"1.2.8","web3-utils":"1.6.1","prom-client":"13.2.0","sanitize-html":"2.12.1","web3js-quorum":"22.4.0","web3-core-helpers":"1.6.1","web3-eth-contract":"1.6.1","run-time-error-cjs":"1.4.0","typescript-optional":"2.0.1","@hyperledger/cactus-core":"2.0.0-rc.2","http-errors-enhanced-cjs":"2.0.0","@hyperledger/cactus-common":"2.0.0-rc.2","@hyperledger/cactus-core-api":"2.0.0-rc.2","socket.io-client-fixed-types":"4.5.4"},"mainMinified":"dist/cactus-plugin-ledger-connector-quorum.node.umd.min.js","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"browserMinified":"dist/cactus-plugin-ledger-connector-quorum.web.umd.min.js","devDependencies":{"uuid":"9.0.1","chalk":"4.1.2","web3-eth":"1.6.1","socket.io":"4.6.2","web3-core":"1.6.1","@types/uuid":"9.0.8","body-parser":"1.20.2","@types/express":"4.17.21","@types/minimist":"1.2.2","@types/body-parser":"1.19.4","@types/http-errors":"2.0.4","@types/sanitize-html":"2.9.5","@hyperledger/cactus-test-tooling":"2.0.0-rc.2","@hyperledger/cactus-plugin-keychain-memory":"2.0.0-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/cactus-plugin-ledger-connector-quorum_2.0.0-rc.2_1720114393414_0.863579116587565","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-12-01T20:02:19.313Z","modified":"2025-10-02T09:58:32.522Z","0.1.1-alpha.289":"2020-12-01T20:02:20.165Z","0.2.0":"2020-12-01T20:46:49.692Z","0.3.0":"2021-02-01T19:24:27.302Z","0.4.0":"2021-03-30T19:39:33.345Z","0.4.1":"2021-04-03T20:19:12.365Z","0.4.2-fix-quorum-contract-types.d7f00975.23":"2021-04-18T22:41:23.226Z","0.4.2-main.b067fdd.29":"2021-04-20T16:18:24.992Z","0.5.0-alpha.0":"2021-05-06T21:18:56.731Z","0.5.0":"2021-05-19T20:43:19.724Z","0.5.1-main.6d1de274.129":"2021-07-13T23:24:37.787Z","0.5.1-feat-1122.01a4d64d.130":"2021-07-14T06:45:10.065Z","0.6.0":"2021-07-20T04:09:03.676Z","0.7.0":"2021-08-10T01:46:55.353Z","0.7.1-main.57afe153.9":"2021-08-16T02:58:04.043Z","0.7.1-fix-1226.7df02452.10":"2021-08-16T04:50:55.963Z","0.8.0":"2021-08-17T16:23:10.919Z","0.8.1-vaultTransitKeychain.5ad9cac4.17":"2021-08-30T15:39:11.808Z","0.9.0":"2021-09-08T19:12:48.957Z","0.9.1-docs-1312.94850924.6":"2021-09-08T19:32:17.089Z","0.9.1-docs-1312.bcfd3c31.6":"2021-09-09T02:48:33.946Z","0.9.1-web-socket-identity-provider.845e2a3e.23":"2021-09-16T17:56:15.387Z","0.9.1-add-bluebird-dependency.a8944f63.33":"2021-09-23T23:12:26.627Z","0.9.1-fix-quorum-no-keychain-endpoints.e1eba3a4.33":"2021-09-24T21:30:04.037Z","0.9.1-ci-942.cbb849c6.35":"2021-09-27T00:14:44.107Z","0.10.0":"2021-09-28T03:59:41.467Z","0.10.1-fix-quorum-no-keychain-endpoints.bf5e0403.1":"2021-09-28T17:45:17.333Z","0.10.1-fix-quorum-api-server.0677a0e6.4":"2021-09-29T15:02:50.970Z","0.8.1-pr-brioux-1333.92b26c3a.36":"2021-10-06T18:51:20.274Z","1.0.0-rc.1":"2021-10-12T01:11:12.409Z","1.0.0-rc.2":"2021-11-02T18:02:06.197Z","1.0.0-rc.3":"2021-12-08T03:03:26.857Z","1.0.0-main.334593a7.46":"2022-01-18T01:00:02.169Z","1.0.0-jwt-supply-chain.62c7e930.0":"2022-02-03T00:25:15.429Z","1.0.0":"2022-03-17T00:07:30.055Z","1.0.1-jwt-supply-chain.9df3fe79.16":"2022-04-05T17:02:23.673Z","1.1.2":"2022-11-12T00:08:19.154Z","1.1.1":"2022-11-15T20:26:44.363Z","1.1.0":"2022-11-15T20:35:57.630Z","1.1.3":"2022-12-15T00:49:47.176Z","2.0.0-alpha.1":"2023-09-09T17:29:12.053Z","2.0.0-alpha.2":"2023-10-04T06:47:40.861Z","2.0.0-dev.93":"2023-11-16T03:14:50.304Z","2.0.0-dev.94":"2023-11-16T04:52:48.801Z","2.0.0-main.91":"2023-11-16T05:03:22.600Z","2.0.0-build-deps-upgrade-to-lerna-lite-v3-1-0-config-fix.126":"2023-12-08T02:04:09.319Z","2.0.0-main.159":"2024-01-09T00:20:58.650Z","2.0.0-lfx-connector.163":"2024-01-16T18:47:18.311Z","2.0.0-lfx-connector.164":"2024-01-16T19:02:39.589Z","2.0.0-dev.195":"2024-01-24T23:00:08.251Z","2.0.0-dev.196":"2024-01-25T00:03:20.402Z","2.0.0-dev.197":"2024-01-25T00:47:55.548Z","2.0.0-lfx-connector.208":"2024-02-07T16:37:55.827Z","2.0.0-main.214":"2024-02-15T18:24:08.996Z","2.0.0-2945-supply-chain-app-build-failed.241":"2024-03-08T03:56:31.375Z","2.0.0-main.339":"2024-06-13T05:02:55.842Z","2.0.0-rc.1":"2024-06-18T16:46:35.388Z","2.0.0-rc.2":"2024-07-04T17:33:13.629Z"},"bugs":{"url":"https://github.com/hyperledger/cacti/issues"},"author":{"url":"https://www.hyperledger.org/use/cacti","name":"Hyperledger Cactus Contributors","email":"cactus@lists.hyperledger.org"},"license":"Apache-2.0","homepage":"https://github.com/hyperledger/cacti#readme","keywords":["Hyperledger","Cactus","Integration","Blockchain","Distributed Ledger Technology"],"repository":{"url":"git+https://github.com/hyperledger/cacti.git","type":"git"},"description":"Allows Cactus nodes to connect to a Quorum ledger.","contributors":[{"url":"https://example.com","name":"Please add yourself to the list of contributors","email":"your.name@example.com"},{"url":"https://accenture.com","name":"Peter Somogyvari","email":"peter.somogyvari@accenture.com"}],"maintainers":[{"email":"npm@hyperledger.org","name":"hyperledger-lf"},{"email":"npm-ci@hyperledger.org","name":"hyperledger-ghci"},{"email":"npm@openwallet.foundation","name":"openwalletfoundation"},{"email":"npm@lfdecentralizedtrust.org","name":"lfdt-npm"},{"email":"rafael.belchior@tecnico.ulisboa.pt","name":"rafaelapb"}],"readme":"# `@hyperledger/cactus-plugin-ledger-connector-quorum`\n\nThis plugin provides `Cactus` a way to interact with Quorum networks. Using this we can perform:\n* Deploy Smart-contracts through bytecode.\n* Build and sign transactions using different keystores.\n* Invoke smart-contract functions that we have deployed on the network.\n\n## Summary\n\n  - [Getting Started](#getting-started)\n  - [Usage](#usage)\n  - [Prometheus Exporter](#prometheus-exporter)\n  - [Runing the tests](#running-the-tests)\n  - [Contributing](#contributing)\n  - [License](#license)\n  - [Acknowledgments](#acknowledgments)\n\n## Getting Started\n\nClone the git repository on your local machine. Follow these instructions that will get you a copy of the project up and running on\nyour local machine for development and testing purposes.\n\n### Prerequisites\n\nIn the root of the project to install the dependencies execute the command:\n```sh\nnpm run configure\n```\n\n## Usage\n\nTo use this import public-api and create new **PluginLedgerConnectorQuorum**.\n```typescript\n  const connector: PluginLedgerConnectorQuorum = new PluginLedgerConnectorQuorum({\n    instanceId: uuidV4(),\n    rpcApiHttpHost,\n    pluginRegistry: new PluginRegistry(),\n  });\n```\nYou can make calls through the connector to the plugin API:\n\n```typescript\nasync invokeContract(req: InvokeContractJsonObjectV1Request):Promise<InvokeContractV1Response>;\nasync transact(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactSigned(rawTransaction: string): Promise<RunTransactionResponse>;\nasync transactGethKeychain(txIn: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactPrivateKey(req: RunTransactionRequest): Promise<RunTransactionResponse>;\nasync transactCactusKeychainRef(req: RunTransactionRequest):Promise<RunTransactionResponse>;\nasync deployContract(req: DeployContractSolidityBytecodeV1Request :Promise<DeployContractSolidityBytecodeV1Response>;\nasync deployContractJsonObject(req: DeployContractSolidityBytecodeJsonObjectV1Request): Promise<DeployContractSolidityBytecodeV1Response>\nasync invokeRawWeb3EthMethod(req: InvokeRawWeb3EthMethodV1Request): Promise<any>;\nasync invokeRawWeb3EthContract(req: InvokeRawWeb3EthContractV1Request): Promise<any>;\n```\n\nCall example to deploy a contract:\n```typescript\nconst deployOut = await connector.deployContract({\n  web3SigningCredential: {\n    ethAccount: firstHighNetWorthAccount,\n    secret: \"\",\n    type: Web3SigningCredentialType.GETHKEYCHAINPASSWORD,\n  },\n  bytecode: ContractJson.bytecode,\n  gas: 1000000,\n});\n```\nThe field \"type\" can have the following values:\n```typescript\nenum Web3SigningCredentialType {\n    CACTUSKEYCHAINREF = 'CACTUS_KEYCHAIN_REF',\n    GETHKEYCHAINPASSWORD = 'GETH_KEYCHAIN_PASSWORD',\n    PRIVATEKEYHEX = 'PRIVATE_KEY_HEX',\n    NONE = 'NONE'\n}\n```\n> Extensive documentation and examples in the [readthedocs](https://readthedocs.org/projects/hyperledger-cactus/) (WIP)\n\n## QuorumApiClient\n\nAll connector API endpoints are defined in [open-api specification](./src/main/json/openapi.json). You can use [QuorumApiClient](./src/main/typescript/api-client) to call remote quorum connector functions. It also contain additional utility functions to ease integration.\n\n### REST Functions\nSee [DefaultApi](./src/main/typescript/generated/openapi/typescript-axios/api.ts) for up-to-date listing of supported endpoints.\n- deployContractSolBytecodeJsonObjectV1\n- deployContractSolBytecodeV1\n- getPrometheusMetricsV1\n- invokeContractV1\n- invokeContractV1NoKeychain\n- invokeRawWeb3EthContractV1\n- invokeRawWeb3EthMethodV1\n- runTransactionV1\n\n### Asynchronous Functions (socket.io)\n- watchBlocksV1\n\n### Send Request Methods\nBoth methods are deprecated, async version returns immediately while sync respond with Promise of a call results.\n- `sendAsyncRequest`\n- `sendSyncRequest`\n\n#### Supported Requests\n- `web3Eth`: Calls `invokeRawWeb3EthMethodV1`\n- `web3EthContract`: Calls  `invokeRawWeb3EthContractV1`\n\n#### Arguments\n- The same for both async and sync methods.\n- Arguments interpretation depends on `method.type` (i.e. request type)\n``` typescript\n// Contract definition for web3EthContract request, ignored otherwise\ncontract: {\n  abi?: AbiItem[],\n  address?: string\n},\n\n// Request definition\nmethod: {\n  type: \"web3Eth\" | \"web3EthContract\",\n  command: string // web3 method\n  function?: string; // contract function\n  params?: any[]; // contract parameters\n}\n\n// web3 method arguments\nargs: {\n  {\n    args?: any[] | Record<string, unknown>;\n  }\n},\n```\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n### Building/running the container image locally\n\nIn the Cactus project root say:\n\n```sh\nDOCKER_BUILDKIT=1 docker build -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\nBuild with a specific version of the npm package:\n```sh\nDOCKER_BUILDKIT=1 docker build --build-arg NPM_PKG_VERSION=0.4.1 -f ./packages/cactus-plugin-ledger-connector-quorum/Dockerfile . -t cplcb\n```\n\n#### Running the container\n\nLaunch container with plugin configuration as an **environment variable**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env AUTHORIZATION_PROTOCOL='NONE' \\\n  --env AUTHORIZATION_CONFIG_JSON='{}' \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\nLaunch container with plugin configuration as a **CLI argument**:\n```sh\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n   --publish 4000:4000 \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --authorization-protocol='NONE' \\\n    --authorization-config-json='{}' \\\n    --plugins='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]'\n```\n\nLaunch container with **configuration file** mounted from host machine:\n```sh\n\necho '{\"authorizationProtocol\":\"NONE\",\"authorizationConfigJson\":{},\"plugins\":[{\"packageName\":\"@hyperledger/cactus-plugin-ledger-connector-quorum\",\"type\":\"org.hyperledger.cactus.plugin_import_type.LOCAL\",\"action\":\"org.hyperledger.cactus.plugin_import_action.INSTALL\",\"options\":{\"rpcApiHttpHost\":\"http://localhost:8545\",\"instanceId\":\"some-unique-quorum-connector-instance-id\"}}]}' > cactus.json\n\ndocker run \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --mount type=bind,source=\"$(pwd)\"/cactus.json,target=/cactus.json \\\n  cplcb \\\n    ./node_modules/@hyperledger/cactus-cmd-api-server/dist/lib/main/typescript/cmd/cactus-api.js \\\n    --config-file=/cactus.json\n```\n\n#### Testing API calls with the container\n\nDon't have a quorum network on hand to test with? Test or develop against our quorum All-In-One container!\n\n**Terminal Window 1 (Ledger)**\n```sh\ndocker run -p 0.0.0.0:8545:8545/tcp  -p 0.0.0.0:8546:8546/tcp  -p 0.0.0.0:8888:8888/tcp  -p 0.0.0.0:9001:9001/tcp  -p 0.0.0.0:9545:9545/tcp hyperledger/cactus-quorum-all-in-one:latest\n```\n\n**Terminal Window 2 (Cactus API Server)**\n```sh\ndocker run \\\n  --network host \\\n  --rm \\\n  --publish 3000:3000 \\\n  --publish 4000:4000 \\\n  --env PLUGINS='[{\"packageName\": \"@hyperledger/cactus-plugin-ledger-connector-quorum\", \"type\": \"org.hyperledger.cactus.plugin_import_type.LOCAL\", \"action\": \"org.hyperledger.cactus.plugin_import_action.INSTALL\",  \"options\": {\"rpcApiHttpHost\": \"http://localhost:8545\", \"instanceId\": \"some-unique-quorum-connector-instance-id\"}}]' \\\n  cplcb\n```\n\n**Terminal Window 3 (curl - replace eth accounts as needed)**\n```sh\ncurl --location --request POST 'http://127.0.0.1:4000/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/run-transaction' \\\n--header 'Content-Type: application/json' \\\n--data-raw '{\n    \"web3SigningCredential\": {\n      \"ethAccount\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"secret\": \"c87509a1c067bbde78beb793e6fa76530b6382a4c0241e5e4a9ec0a0f44dc0d3\",\n      \"type\": \"PRIVATE_KEY_HEX\"\n    },\n    \"consistencyStrategy\": {\n      \"blockConfirmations\": 0,\n      \"receiptType\": \"NODE_TX_POOL_ACK\"\n    },\n    \"transactionConfig\": {\n      \"from\": \"627306090abaB3A6e1400e9345bC60c78a8BEf57\",\n      \"to\": \"f17f52151EbEF6C7334FAD080c5704D77216b732\",\n      \"value\": 1,\n      \"gas\": 10000000\n    }\n}'\n```\n\nThe above should produce a response that looks similar to this:\n\n```json\n{\n    \"success\": true,\n    \"data\": {\n        \"transactionReceipt\": {\n            \"blockHash\": \"0x7c97c038a5d3bd84613fe23ed442695276d5d2df97f4e7c4f10ca06765033ffd\",\n            \"blockNumber\": 1218,\n            \"contractAddress\": null,\n            \"cumulativeGasUsed\": 21000,\n            \"from\": \"0x627306090abab3a6e1400e9345bc60c78a8bef57\",\n            \"gasUsed\": 21000,\n            \"logs\": [],\n            \"logsBloom\": \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n            \"status\": true,\n            \"to\": \"0xf17f52151ebef6c7334fad080c5704d77216b732\",\n            \"transactionHash\": \"0xc7fcb46c735bdc696d500bfc70c72595a2b8c31813929e5c61d9a5aec3376d6f\",\n            \"transactionIndex\": 0\n        }\n    }\n}\n```\n\n## Prometheus Exporter\n\nThis class creates a prometheus exporter, which scrapes the transactions (total transaction count) for the use cases incorporating the use of Quorum connector plugin.\n\n### Prometheus Exporter Usage\nThe prometheus exporter object is initialized in the `PluginLedgerConnectorQuorum` class constructor itself, so instantiating the object of the `PluginLedgerConnectorQuorum` class, gives access to the exporter object.\nYou can also initialize the prometheus exporter object seperately and then pass it to the `IPluginLedgerConnectorQuorumOptions` interface for `PluginLedgerConnectoQuorum` constructor.\n\n`getPrometheusMetricsV1` function returns the prometheus exporter metrics, currently displaying the total transaction count, which currently increments everytime the `transact()` method of the `PluginLedgerConnectorQuorum` class is called.\n\n### Prometheus Integration\nTo use Prometheus with this exporter make sure to install [Prometheus main component](https://prometheus.io/download/).\nOnce Prometheus is setup, the corresponding scrape_config needs to be added to the prometheus.yml\n\n```(yaml)\n- job_name: 'quorum_ledger_connector_exporter'\n  metrics_path: api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics\n  scrape_interval: 5s\n  static_configs:\n    - targets: ['{host}:{port}']\n```\n\nHere the `host:port` is where the prometheus exporter metrics are exposed. The test cases (For example, packages/cactus-plugin-ledger-connector-quorum/src/test/typescript/integration/plugin-ledger-connector-quorum/deploy-contract/deploy-contract-from-json.test.ts) exposes it over `0.0.0.0` and a random port(). The random port can be found in the running logs of the test case and looks like (42379 in the below mentioned URL)\n`Metrics URL: http://0.0.0.0:42379/api/v1/plugins/@hyperledger/cactus-plugin-ledger-connector-quorum/get-prometheus-exporter-metrics`\n\nOnce edited, you can start the prometheus service by referencing the above edited prometheus.yml file.\nOn the prometheus graphical interface (defaulted to http://localhost:9090), choose **Graph** from the menu bar, then select the **Console** tab. From the **Insert metric at cursor** drop down, select **cactus_quorum_total_tx_count** and click **execute**\n\n### Helper code\n\n###### response.type.ts\nThis file contains the various responses of the metrics.\n\n###### data-fetcher.ts\nThis file contains functions encasing the logic to process the data points\n\n###### metrics.ts\nThis file lists all the prometheus metrics and what they are used for.\n\n## Running the tests\n\nTo check that all has been installed correctly and that the pugin has no errors, there are two options to run the tests:\n\n* Run this command at the project's root:\n```sh\nnpm run test:plugin-ledger-connector-quorum\n```\n\n## Contributing\n\nWe welcome contributions to Hyperledger Cactus in many forms, and there’s always plenty to do!\n\nPlease review [CONTIRBUTING.md](../../CONTRIBUTING.md) to get started.\n\n## License\n\nThis distribution is published under the Apache License Version 2.0 found in the [LICENSE](../../LICENSE) file.\n\n## Acknowledgments\n```","readmeFilename":"README.md"}