modify to fit fabric 2.0.0

Signed-off-by: linqili <charlielin06@gmail.com>
This commit is contained in:
linqili 2020-04-04 00:27:09 +08:00
parent da41afabbf
commit 0eb52a0ac7
6 changed files with 98 additions and 154 deletions

View file

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

View file

@ -1 +1,4 @@
target/
.settings/
.idea
.classpath

View file

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>commercial-paper</groupId>
<artifactId>commercial-paper</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
<configuration>
<filters>
<filter>
<artifact>*:*</artifact>
<excludes>
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
</excludes>
</filter>
</filters>
</configuration>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>hyperledger</id>
<name>Hyperledger Artifactory</name>
<url>https://hyperledger.jfrog.io/hyperledger/fabric-maven</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<properties>
<fabric-chaincode-java.version>1.4.2</fabric-chaincode-java.version>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>

View file

@ -14,7 +14,9 @@
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- fabric-chaincode-java -->
<fabric-chaincode-java.version>1.4.2</fabric-chaincode-java.version>
<fabric-chaincode-java.version>2.0.0</fabric-chaincode-java.version>
<!-- fabric-gateway-java -->
<fabric-gateway-java.version>2.0.0</fabric-gateway-java.version>
</properties>
@ -61,12 +63,6 @@
</build>
<repositories>
<repository>
<id>hyperledger</id>
<name>Hyperledger Artifactory</name>
<url>https://hyperledger.jfrog.io/hyperledger/fabric-maven</url>
</repository>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
@ -75,9 +71,9 @@
<dependencies>
<dependency>
<groupId>org.hyperledger</groupId>
<groupId>org.hyperledger.fabric</groupId>
<artifactId>fabric-gateway-java</artifactId>
<version>1.4.0-SNAPSHOT</version>
<version>${fabric-gateway-java.version}</version>
</dependency>
<!-- Used for datatype annotations only -->

View file

@ -5,40 +5,64 @@ SPDX-License-Identifier: Apache-2.0
package org.magnetocorp;
import java.io.IOException;
import java.io.Reader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import org.hyperledger.fabric.gateway.GatewayException;
import java.security.InvalidKeyException;
import java.security.PrivateKey;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import org.hyperledger.fabric.gateway.Identities;
import org.hyperledger.fabric.gateway.Wallet;
import org.hyperledger.fabric.gateway.Wallet.Identity;
import org.hyperledger.fabric.gateway.Wallets;
import org.hyperledger.fabric.gateway.Identity;
public class AddToWallet {
public static void main(String[] args) {
try {
// A wallet stores a collection of identities
Path walletPath = Paths.get("..", "identity", "user", "isabella", "wallet");
Wallet wallet = Wallet.createFileSystemWallet(walletPath);
private static X509Certificate readX509Certificate(final Path certificatePath) throws IOException, CertificateException {
try (Reader certificateReader = Files.newBufferedReader(certificatePath, StandardCharsets.UTF_8)) {
return Identities.readX509Certificate(certificateReader);
}
}
// Location of credentials to be stored in the wallet
Path credentialPath = Paths.get("..", "..",".." ,".." ,"basic-network", "crypto-config",
"peerOrganizations", "org1.example.com", "users", "User1@org1.example.com", "msp");
Path certificatePem = credentialPath.resolve(Paths.get("signcerts",
"User1@org1.example.com-cert.pem"));
Path privateKey = credentialPath.resolve(Paths.get("keystore",
"c75bd6911aca808941c3557ee7c97e90f3952e379497dc55eb903f31b50abc83_sk"));
private static PrivateKey getPrivateKey(final Path privateKeyPath) throws IOException, InvalidKeyException {
try (Reader privateKeyReader = Files.newBufferedReader(privateKeyPath, StandardCharsets.UTF_8)) {
return Identities.readPrivateKey(privateKeyReader);
}
}
// Load credentials into wallet
String identityLabel = "User1@org1.example.com";
Identity identity = Identity.createIdentity("Org1MSP", Files.newBufferedReader(certificatePem), Files.newBufferedReader(privateKey));
public static void main(String[] args) {
try {
// A wallet stores a collection of identities
Path walletPath = Paths.get(".", "wallet");
Wallet wallet = Wallets.newFileSystemWallet(walletPath);
wallet.put(identityLabel, identity);
Path credentialPath = Paths.get("..", "..", "..",".." ,"test-network", "organizations",
"peerOrganizations", "org2.example.com", "users", "User1@org2.example.com", "msp");
System.out.println("credentialPath: " + credentialPath.toString());
Path certificatePath = credentialPath.resolve(Paths.get("signcerts",
"User1@org2.example.com-cert.pem"));
System.out.println("certificatePem: " + certificatePath.toString());
Path privateKeyPath = credentialPath.resolve(Paths.get("keystore",
"c7077781c776d90009b3f68a75b15109e1cb82ae5dbdcc0b79644ff47d280db8_sk"));
} catch (IOException e) {
System.err.println("Error adding to wallet");
e.printStackTrace();
}
}
X509Certificate certificate = readX509Certificate(certificatePath);
PrivateKey privateKey = getPrivateKey(privateKeyPath);
}
Identity identity = Identities.newX509Identity("Org2MSP", certificate, privateKey);
String identityLabel = "User1@org2.example.com";
wallet.put(identityLabel, identity);
System.out.println("成功写入钱包信息:" + walletPath.toString());
} catch (IOException | CertificateException | InvalidKeyException e) {
System.err.println("Error adding to wallet");
e.printStackTrace();
}
}
}

View file

@ -15,59 +15,61 @@ import org.hyperledger.fabric.gateway.Gateway;
import org.hyperledger.fabric.gateway.GatewayException;
import org.hyperledger.fabric.gateway.Network;
import org.hyperledger.fabric.gateway.Wallet;
import org.hyperledger.fabric.gateway.Wallets;
import org.papernet.CommercialPaper;
public class Issue {
private static final String ENVKEY="CONTRACT_NAME";
private static final String ENVKEY="CONTRACT_NAME";
public static void main(String[] args) {
public static void main(String[] args) {
String contractName="papercontract";
// get the name of the contract, in case it is overridden
Map<String,String> envvar = System.getenv();
if (envvar.containsKey(ENVKEY)){
contractName=envvar.get(ENVKEY);
}
String contractName="papercontract";
// get the name of the contract, in case it is overridden
Map<String,String> envvar = System.getenv();
if (envvar.containsKey(ENVKEY)){
contractName=envvar.get(ENVKEY);
}
Gateway.Builder builder = Gateway.createBuilder();
Gateway.Builder builder = Gateway.createBuilder();
try {
// A wallet stores a collection of identities
Path walletPath = Paths.get("..", "identity", "user", "isabella", "wallet");
Wallet wallet = Wallet.createFileSystemWallet(walletPath);
try {
// A wallet stores a collection of identities
Path walletPath = Paths.get(".", "wallet");
Wallet wallet = Wallets.newFileSystemWallet(walletPath);
System.out.println("Read wallet info from: " + walletPath.toString());
String userName = "User1@org1.example.com";
String userName = "User1@org2.example.com";
Path connectionProfile = Paths.get("..", "gateway", "networkConnection.yaml");
Path connectionProfile = Paths.get("..", "gateway", "connection-org2.yaml");
// Set connection options on the gateway builder
builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false);
// Set connection options on the gateway builder
builder.identity(wallet, userName).networkConfig(connectionProfile).discovery(false);
// Connect to gateway using application specified parameters
try(Gateway gateway = builder.connect()) {
// Connect to gateway using application specified parameters
try(Gateway gateway = builder.connect()) {
// Access PaperNet network
System.out.println("Use network channel: mychannel.");
Network network = gateway.getNetwork("mychannel");
// Access PaperNet network
System.out.println("Use network channel: mychannel.");
Network network = gateway.getNetwork("mychannel");
// Get addressability to commercial paper contract
System.out.println("Use org.papernet.commercialpaper smart contract.");
Contract contract = network.getContract(contractName, "org.papernet.commercialpaper");
// Get addressability to commercial paper contract
System.out.println("Use org.papernet.commercialpaper smart contract.");
Contract contract = network.getContract(contractName, "org.papernet.commercialpaper");
// Issue commercial paper
System.out.println("Submit commercial paper issue transaction.");
byte[] response = contract.submitTransaction("issue", "MagnetoCorp", "00001", "2020-05-31", "2020-11-30", "5000000");
// Issue commercial paper
System.out.println("Submit commercial paper issue transaction.");
byte[] response = contract.submitTransaction("issue", "MagnetoCorp", "00002", "2020-05-31", "2020-11-30", "5000000");
// Process response
System.out.println("Process issue transaction response.");
CommercialPaper paper = CommercialPaper.deserialize(response);
System.out.println(paper);
}
} catch (GatewayException | IOException | TimeoutException | InterruptedException e) {
e.printStackTrace();
System.exit(-1);
}
}
// Process response
System.out.println("Process issue transaction response.");
CommercialPaper paper = CommercialPaper.deserialize(response);
System.out.println(paper);
}
} catch (GatewayException | IOException | TimeoutException | InterruptedException e) {
e.printStackTrace();
System.exit(-1);
}
}
}
}