-
Notifications
You must be signed in to change notification settings - Fork 3.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge "[FAB-12878] Add fabcar app using new prog model (TS)"
- Loading branch information
Showing
13 changed files
with
511 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
{ | ||
"name": "basic-network", | ||
"version": "1.0.0", | ||
"client": { | ||
"organization": "Org1", | ||
"connection": { | ||
"timeout": { | ||
"peer": { | ||
"endorser": "300" | ||
}, | ||
"orderer": "300" | ||
} | ||
} | ||
}, | ||
"channels": { | ||
"mychannel": { | ||
"orderers": [ | ||
"orderer.example.com" | ||
], | ||
"peers": { | ||
"peer0.org1.example.com": {} | ||
} | ||
} | ||
}, | ||
"organizations": { | ||
"Org1": { | ||
"mspid": "Org1MSP", | ||
"peers": [ | ||
"peer0.org1.example.com" | ||
], | ||
"certificateAuthorities": [ | ||
"ca.example.com" | ||
] | ||
} | ||
}, | ||
"orderers": { | ||
"orderer.example.com": { | ||
"url": "grpc://localhost:7050" | ||
} | ||
}, | ||
"peers": { | ||
"peer0.org1.example.com": { | ||
"url": "grpc://localhost:7051" | ||
} | ||
}, | ||
"certificateAuthorities": { | ||
"ca.example.com": { | ||
"url": "http://localhost:7054", | ||
"caName": "ca.example.com" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
--- | ||
name: basic-network | ||
version: 1.0.0 | ||
client: | ||
organization: Org1 | ||
connection: | ||
timeout: | ||
peer: | ||
endorser: '300' | ||
orderer: '300' | ||
channels: | ||
mychannel: | ||
orderers: | ||
- orderer.example.com | ||
peers: | ||
peer0.org1.example.com: {} | ||
organizations: | ||
Org1: | ||
mspid: Org1MSP | ||
peers: | ||
- peer0.org1.example.com | ||
certificateAuthorities: | ||
- ca.example.com | ||
orderers: | ||
orderer.example.com: | ||
url: grpc://localhost:7050 | ||
peers: | ||
peer0.org1.example.com: | ||
url: grpc://localhost:7051 | ||
certificateAuthorities: | ||
ca.example.com: | ||
url: http://localhost:7054 | ||
caName: ca.example.com |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
root = true | ||
|
||
[*] | ||
indent_style = space | ||
indent_size = 4 | ||
end_of_line = lf | ||
charset = utf-8 | ||
trim_trailing_whitespace = true | ||
insert_final_newline = true | ||
|
||
[*.md] | ||
trim_trailing_whitespace = false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
# | ||
# SPDX-License-Identifier: Apache-2.0 | ||
# | ||
|
||
# Logs | ||
logs | ||
*.log | ||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
|
||
# Runtime data | ||
pids | ||
*.pid | ||
*.seed | ||
*.pid.lock | ||
|
||
# Directory for instrumented libs generated by jscoverage/JSCover | ||
lib-cov | ||
|
||
# Coverage directory used by tools like istanbul | ||
coverage | ||
|
||
# nyc test coverage | ||
.nyc_output | ||
|
||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) | ||
.grunt | ||
|
||
# Bower dependency directory (https://bower.io/) | ||
bower_components | ||
|
||
# node-waf configuration | ||
.lock-wscript | ||
|
||
# Compiled binary addons (https://nodejs.org/api/addons.html) | ||
build/Release | ||
|
||
# Dependency directories | ||
node_modules/ | ||
jspm_packages/ | ||
|
||
# TypeScript v1 declaration files | ||
typings/ | ||
|
||
# Optional npm cache directory | ||
.npm | ||
|
||
# Optional eslint cache | ||
.eslintcache | ||
|
||
# Optional REPL history | ||
.node_repl_history | ||
|
||
# Output of 'npm pack' | ||
*.tgz | ||
|
||
# Yarn Integrity file | ||
.yarn-integrity | ||
|
||
# dotenv environment variables file | ||
.env | ||
|
||
# parcel-bundler cache (https://parceljs.org/) | ||
.cache | ||
|
||
# next.js build output | ||
.next | ||
|
||
# nuxt.js build output | ||
.nuxt | ||
|
||
# vuepress build output | ||
.vuepress/dist | ||
|
||
# Serverless directories | ||
.serverless | ||
|
||
# Compiled TypeScript files | ||
dist | ||
|
||
wallet | ||
!wallet/.gitkeep |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
{ | ||
"name": "fabcar", | ||
"version": "1.0.0", | ||
"description": "FabCar application implemented in TypeScript", | ||
"engines": { | ||
"node": ">=8", | ||
"npm": ">=5" | ||
}, | ||
"scripts": { | ||
"lint": "tslint -c tslint.json 'src/**/*.ts'", | ||
"pretest": "npm run lint", | ||
"test": "nyc mocha -r ts-node/register src/**/*.spec.ts", | ||
"build": "tsc", | ||
"build:watch": "tsc -w", | ||
"prepublishOnly": "npm run build" | ||
}, | ||
"engineStrict": true, | ||
"author": "Hyperledger", | ||
"license": "Apache-2.0", | ||
"dependencies": { | ||
"fabric-ca-client": "unstable", | ||
"fabric-client": "unstable", | ||
"fabric-network": "unstable" | ||
}, | ||
"devDependencies": { | ||
"@types/chai": "^4.1.7", | ||
"@types/mocha": "^5.2.5", | ||
"@types/node": "^10.12.10", | ||
"@types/sinon": "^5.0.7", | ||
"@types/sinon-chai": "^3.2.1", | ||
"chai": "^4.2.0", | ||
"mocha": "^5.2.0", | ||
"nyc": "^13.1.0", | ||
"sinon": "^7.1.1", | ||
"sinon-chai": "^3.3.0", | ||
"ts-node": "^7.0.1", | ||
"tslint": "^5.11.0", | ||
"typescript": "^3.1.6" | ||
}, | ||
"nyc": { | ||
"extension": [ | ||
".ts", | ||
".tsx" | ||
], | ||
"exclude": [ | ||
"coverage/**", | ||
"dist/**" | ||
], | ||
"reporter": [ | ||
"text-summary", | ||
"html" | ||
], | ||
"all": true, | ||
"check-coverage": true, | ||
"statements": 100, | ||
"branches": 100, | ||
"functions": 100, | ||
"lines": 100 | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
/* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
import * as FabricCAServices from 'fabric-ca-client'; | ||
import { FileSystemWallet, X509WalletMixin } from 'fabric-network'; | ||
import * as fs from 'fs'; | ||
import * as path from 'path'; | ||
|
||
const ccpPath = path.resolve(__dirname, '..', '..', '..', 'basic-network', 'connection.json'); | ||
const ccpJSON = fs.readFileSync(ccpPath, 'utf8'); | ||
const ccp = JSON.parse(ccpJSON); | ||
|
||
async function main() { | ||
try { | ||
|
||
// Create a new CA client for interacting with the CA. | ||
const caURL = ccp.certificateAuthorities['ca.example.com'].url; | ||
const ca = new FabricCAServices(caURL); | ||
|
||
// Create a new file system based wallet for managing identities. | ||
const walletPath = path.join(process.cwd(), 'wallet'); | ||
const wallet = new FileSystemWallet(walletPath); | ||
console.log(`Wallet path: ${walletPath}`); | ||
|
||
// Check to see if we've already enrolled the admin user. | ||
const adminExists = await wallet.exists('admin'); | ||
if (adminExists) { | ||
console.log('An identity for the admin user "admin" already exists in the wallet'); | ||
return; | ||
} | ||
|
||
// Enroll the admin user, and import the new identity into the wallet. | ||
const enrollment = await ca.enroll({ enrollmentID: 'admin', enrollmentSecret: 'adminpw' }); | ||
const identity = X509WalletMixin.createIdentity('Org1MSP', enrollment.certificate, enrollment.key.toBytes()); | ||
wallet.import('admin', identity); | ||
console.log('Successfully enrolled admin user "admin" and imported it into the wallet'); | ||
|
||
} catch (error) { | ||
console.error(`Failed to enroll admin user "admin": ${error}`); | ||
process.exit(1); | ||
} | ||
} | ||
|
||
main(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
import { FileSystemWallet, Gateway } from 'fabric-network'; | ||
import * as fs from 'fs'; | ||
import * as path from 'path'; | ||
|
||
const ccpPath = path.resolve(__dirname, '..', '..', '..', 'basic-network', 'connection.json'); | ||
const ccpJSON = fs.readFileSync(ccpPath, 'utf8'); | ||
const ccp = JSON.parse(ccpJSON); | ||
|
||
async function main() { | ||
try { | ||
|
||
// Create a new file system based wallet for managing identities. | ||
const walletPath = path.join(process.cwd(), 'wallet'); | ||
const wallet = new FileSystemWallet(walletPath); | ||
console.log(`Wallet path: ${walletPath}`); | ||
|
||
// Check to see if we've already enrolled the user. | ||
const userExists = await wallet.exists('user1'); | ||
if (!userExists) { | ||
console.log('An identity for the user "user1" does not exist in the wallet'); | ||
console.log('Run the registerUser.ts application before retrying'); | ||
return; | ||
} | ||
|
||
// Create a new gateway for connecting to our peer node. | ||
const gateway = new Gateway(); | ||
await (gateway as any).connect(ccp, { wallet, identity: 'user1', discovery: { useLocalhost: true } }); | ||
|
||
// Get the network (channel) our contract is deployed to. | ||
const network = await gateway.getNetwork('mychannel'); | ||
|
||
// Get the contract from the network. | ||
const contract = network.getContract('fabcar'); | ||
|
||
// Submit the specified transaction. | ||
// createCar transaction - requires 5 argument, ex: ('createCar', 'CAR12', 'Honda', 'Accord', 'Black', 'Tom') | ||
// changeCarOwner transaction - requires 2 args , ex: ('changeCarOwner', 'CAR10', 'Dave') | ||
await contract.submitTransaction('createCar', 'CAR12', 'Honda', 'Accord', 'Black', 'Tom'); | ||
console.log(`Transaction has been submitted`); | ||
|
||
// Disconnect from the gateway. | ||
await gateway.disconnect(); | ||
|
||
} catch (error) { | ||
console.error(`Failed to submit transaction: ${error}`); | ||
process.exit(1); | ||
} | ||
} | ||
|
||
main(); |
Oops, something went wrong.