mirror of
https://github.com/hyperledger/fabric-samples.git
synced 2026-06-17 15:35:09 +00:00
* Refactor Go files 1. replace deprecated ioutil functions (ioutil is deprecated since Go 1.16) 2. fix variable names that collide with imported package name 3. fix typos Also update Go version specified by Go modules to ensure a Go version is used in which ioutil is deprecated and replacement functions are available in os and io packages. Signed-off-by: Tommy TIAN <xtianae@connect.ust.hk> Co-authored-by: Mark S. Lewis <mark_lewis@uk.ibm.com> * Specify go 1.18 instead of go 1.19 in go.mod files Signed-off-by: Mark S. Lewis <mark_lewis@uk.ibm.com> Signed-off-by: Tommy TIAN <xtianae@connect.ust.hk> Signed-off-by: Mark S. Lewis <mark_lewis@uk.ibm.com> Co-authored-by: Tommy TIAN <xtianae@connect.ust.hk>
140 lines
3 KiB
Go
140 lines
3 KiB
Go
/*
|
|
Copyright 2020 IBM All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/hyperledger/fabric-sdk-go/pkg/core/config"
|
|
"github.com/hyperledger/fabric-sdk-go/pkg/gateway"
|
|
)
|
|
|
|
func main() {
|
|
os.Setenv("DISCOVERY_AS_LOCALHOST", "true")
|
|
wallet, err := gateway.NewFileSystemWallet("wallet")
|
|
if err != nil {
|
|
fmt.Printf("Failed to create wallet: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
if !wallet.Exists("appUser") {
|
|
err = populateWallet(wallet)
|
|
if err != nil {
|
|
fmt.Printf("Failed to populate wallet contents: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|
|
|
|
ccpPath := filepath.Join(
|
|
"..",
|
|
"..",
|
|
"test-network",
|
|
"organizations",
|
|
"peerOrganizations",
|
|
"org1.example.com",
|
|
"connection-org1.yaml",
|
|
)
|
|
|
|
gw, err := gateway.Connect(
|
|
gateway.WithConfig(config.FromFile(filepath.Clean(ccpPath))),
|
|
gateway.WithIdentity(wallet, "appUser"),
|
|
)
|
|
if err != nil {
|
|
fmt.Printf("Failed to connect to gateway: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
defer gw.Close()
|
|
|
|
network, err := gw.GetNetwork("mychannel")
|
|
if err != nil {
|
|
fmt.Printf("Failed to get network: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
contract := network.GetContract("fabcar")
|
|
|
|
result, err := contract.EvaluateTransaction("queryAllCars")
|
|
if err != nil {
|
|
fmt.Printf("Failed to evaluate transaction: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println(string(result))
|
|
|
|
result, err = contract.SubmitTransaction("createCar", "CAR10", "VW", "Polo", "Grey", "Mary")
|
|
if err != nil {
|
|
fmt.Printf("Failed to submit transaction: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println(string(result))
|
|
|
|
result, err = contract.EvaluateTransaction("queryCar", "CAR10")
|
|
if err != nil {
|
|
fmt.Printf("Failed to evaluate transaction: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println(string(result))
|
|
|
|
_, err = contract.SubmitTransaction("changeCarOwner", "CAR10", "Archie")
|
|
if err != nil {
|
|
fmt.Printf("Failed to submit transaction: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
result, err = contract.EvaluateTransaction("queryCar", "CAR10")
|
|
if err != nil {
|
|
fmt.Printf("Failed to evaluate transaction: %s\n", err)
|
|
os.Exit(1)
|
|
}
|
|
fmt.Println(string(result))
|
|
}
|
|
|
|
func populateWallet(wallet *gateway.Wallet) error {
|
|
credPath := filepath.Join(
|
|
"..",
|
|
"..",
|
|
"test-network",
|
|
"organizations",
|
|
"peerOrganizations",
|
|
"org1.example.com",
|
|
"users",
|
|
"User1@org1.example.com",
|
|
"msp",
|
|
)
|
|
|
|
certPath := filepath.Join(credPath, "signcerts", "cert.pem")
|
|
// read the certificate pem
|
|
cert, err := os.ReadFile(filepath.Clean(certPath))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
keyDir := filepath.Join(credPath, "keystore")
|
|
// there's a single file in this dir containing the private key
|
|
files, err := os.ReadDir(keyDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if len(files) != 1 {
|
|
return errors.New("keystore folder should have contain one file")
|
|
}
|
|
keyPath := filepath.Join(keyDir, files[0].Name())
|
|
key, err := os.ReadFile(filepath.Clean(keyPath))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
identity := gateway.NewX509Identity("Org1MSP", string(cert), string(key))
|
|
|
|
err = wallet.Put("appUser", identity)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|