Compare commits

...

4 commits

Author SHA1 Message Date
SurbhiAgarwal
e47561d968
Merge dfbcff3f59 into 119d3bc53f 2026-06-19 13:58:13 +00:00
Tatsuya Sato
119d3bc53f
Update Fabric to v2.5.16 and v3.1.5 (#1425)
Some checks failed
Test Network BFT Orderer 🍟 / basic (java, ca) (push) Has been cancelled
Test Network BFT Orderer 🍟 / basic (java, cryptogen) (push) Has been cancelled
Test Network BFT Orderer 🍟 / basic (javascript, ca) (push) Has been cancelled
Test Network BFT Orderer 🍟 / basic (javascript, cryptogen) (push) Has been cancelled
Test Network BFT Orderer 🍟 / basic (typescript, ca) (push) Has been cancelled
Test Network BFT Orderer 🍟 / basic (typescript, cryptogen) (push) Has been cancelled
Test Network Events 💡 / events (java, events) (push) Has been cancelled
Test Network Events 💡 / events (javascript, events) (push) Has been cancelled
Kubernetes Test Network 🍒 / ccaas-java (push) Has been cancelled
Kubernetes Test Network 🍒 / ccaas-external (push) Has been cancelled
Kubernetes Test Network 🍒 / k8s-builder (push) Has been cancelled
Kubernetes Test Network 🍒 / multi-namespace (push) Has been cancelled
Test Network HSM 🍏 / hsm (go) (push) Has been cancelled
Test Network HSM 🍏 / hsm (java) (push) Has been cancelled
Test Network HSM 🍏 / hsm (javascript) (push) Has been cancelled
Test Network HSM 🍏 / hsm (typescript) (push) Has been cancelled
Test Network Off Chain 🍔 / off-chain (go) (push) Has been cancelled
Test Network Off Chain 🍔 / off-chain (java) (push) Has been cancelled
Kubernetes Test Network 🍒 / bft-orderer (push) Has been cancelled
Test Network Ledger 🥑 / basic (go, ledger) (push) Has been cancelled
Test Network Ledger 🥑 / basic (javascript, ledger) (push) Has been cancelled
Test Network Ledger 🥑 / basic (typescript, ledger) (push) Has been cancelled
Test Network Private 🔒 / private (go, private) (push) Has been cancelled
Test Network Private 🔒 / private (java, private) (push) Has been cancelled
Test Network Off Chain 🍔 / off-chain (javascript) (push) Has been cancelled
Test Network Off Chain 🍔 / off-chain (typescript) (push) Has been cancelled
Test Network SBE 🎵 / SBE (java, sbe) (push) Has been cancelled
Test Network SBE 🎵 / SBE (typescript, sbe) (push) Has been cancelled
Test Network Private 🔒 / private (typescript, private) (push) Has been cancelled
Test Network Secured 🔔 / secured (go, secured) (push) Has been cancelled
This patch updates Fabric versions:
- Fabric v2.5.16 and v3.1.5
- Fabric CA v1.5.21

fabric-ca-client v1.5.21 appends the default port 7054 when omitted,
breaking register/enroll against the ingress (443). Make the CA URL
port explicit (:443).

Signed-off-by: Tatsuya Sato <tatsuya.sato.so@hitachi.com>
2026-06-18 10:15:24 +01:00
SurbhiAgarwal1
dfbcff3f59 Fix Issue #1179: Add connectionString and CouchDB storage to console
Signed-off-by: SurbhiAgarwal1 <agarwalsurbhi1807@gmail.com>
2026-04-14 21:47:16 +05:30
SurbhiAgarwal1
d72c60d652 docs: highlight GetHistoryForKey in ledger-queries sample
Addresses issue #1233. Adds a new README.md for the sample and updates the root README.md to include asset history and TypeScript support.

Signed-off-by: SurbhiAgarwal1 <agarwalsurbhi1807@gmail.com>
2026-04-13 14:11:19 +05:30
13 changed files with 95 additions and 25 deletions

View file

@ -12,10 +12,10 @@ inputs:
default: v0.50.15
fabric-version:
description: Version of Hyperledger Fabric
default: "2.5.15"
default: "2.5.16"
ca-version:
description: Version of Hyperledger Fabric CA
default: "1.5.15"
default: "1.5.21"
runs:
using: "composite"

View file

@ -12,10 +12,10 @@ inputs:
default: 25.x
fabric-version:
description: Version of Hyperledger Fabric
default: 2.5.15
default: 2.5.16
ca-version:
description: Version of Hyperledger Fabric CA
default: 1.5.15
default: 1.5.21
runs:
using: "composite"

View file

@ -38,7 +38,7 @@ jobs:
# Note: The default Fabric version for CI is currently the latest LTS (v2.5.x).
# To test BFT Orderers, Fabric v3.x is explicitly specified here.
with:
fabric-version: 3.1.4
fabric-version: 3.1.5
- name: Run Test Network with BFT Orderers
working-directory: test-network

View file

@ -30,14 +30,14 @@ applications on a development or CI workstation.
The asset transfer series provides a series of sample smart contracts and applications to demonstrate how to store and transfer assets using Hyperledger Fabric.
Each sample and associated tutorial in the series demonstrates a different core capability in Hyperledger Fabric. The **Basic** sample provides an introduction on how
to write smart contracts and how to interact with a Fabric network using the Fabric SDKs. The **Ledger queries**, **Private data**, and **State-based endorsement**
samples demonstrate these additional capabilities. Finally, the **Secured agreement** sample demonstrates how to bring all the capabilities together to securely
to write smart contracts and how to interact with a Fabric network using the Fabric SDKs. The **Ledger queries** (including asset history), **Private data**, and **State-based endorsement**
samples demonstrate these additional capabilities. The **Secured agreement** sample demonstrates how to bring all the capabilities together to securely
transfer an asset in a more realistic transfer scenario.
| **Smart Contract** | **Description** | **Tutorial** | **Smart contract languages** | **Application languages** |
| -----------|------------------------------|----------|---------|---------|
| [Basic](asset-transfer-basic) | The Basic sample smart contract that allows you to create and transfer an asset by putting data on the ledger and retrieving it. This sample is recommended for new Fabric users. | [Writing your first application](https://hyperledger-fabric.readthedocs.io/en/latest/write_first_app.html) | Go, JavaScript, TypeScript, Java | Go, TypeScript, Java |
| [Ledger queries](asset-transfer-ledger-queries) | The ledger queries sample demonstrates range queries and transaction updates using range queries (applicable for both LevelDB and CouchDB state databases), and how to deploy an index with your chaincode to support JSON queries (applicable for CouchDB state database only). | [Using CouchDB](https://hyperledger-fabric.readthedocs.io/en/latest/couchdb_tutorial.html) | Go, JavaScript | Java, JavaScript |
| [Ledger queries](asset-transfer-ledger-queries) | The ledger queries sample demonstrates range queries, transaction updates using range queries (applicable for both LevelDB and CouchDB state databases), retrieving asset history using GetHistoryForKey, and deploying an index with your chaincode to support JSON queries (applicable for CouchDB state database only). | [Using CouchDB](https://hyperledger-fabric.readthedocs.io/en/latest/couchdb_tutorial.html) | Go, JavaScript, TypeScript | Java, JavaScript |
| [Private data](asset-transfer-private-data) | This sample demonstrates the use of private data collections, how to manage private data collections with the chaincode lifecycle, and how the private data hash can be used to verify private data on the ledger. It also demonstrates how to control asset updates and transfers using client-based ownership and access control. | [Using Private Data](https://hyperledger-fabric.readthedocs.io/en/latest/private_data_tutorial.html) | Go, TypeScript, Java | TypeScript |
| [State-Based Endorsement](asset-transfer-sbe) | This sample demonstrates how to override the chaincode-level endorsement policy to set endorsement policies at the key-level (data/asset level). | [Using State-based endorsement](https://github.com/hyperledger/fabric-samples/tree/main/asset-transfer-sbe) | Java, TypeScript | JavaScript |
| [Secured agreement](asset-transfer-secured-agreement) | Smart contract that uses implicit private data collections, state-based endorsement, and organization-based ownership and access control to keep data private and securely transfer an asset with the consent of both the current owner and buyer. | [Secured asset transfer](https://hyperledger-fabric.readthedocs.io/en/latest/secured_asset_transfer/secured_private_asset_transfer_tutorial.html) | Go | TypeScript |

View file

@ -0,0 +1,66 @@
# Asset transfer ledger queries sample
The asset transfer ledger queries sample demonstrates the ledger query capabilities of Hyperledger Fabric, including range queries, rich queries (when using CouchDB), and retrieving asset history.
## About the sample
This sample includes smart contract and application code in multiple languages. It demonstrates several key features:
- **Range Queries**: Retrieve a range of assets from the ledger.
- **Transaction Updates with Range Queries**: Safely update assets based on the results of a range query.
- **History Queries**: Use `GetHistoryForKey` to retrieve the entire history of an asset, including all previous owners and deletions.
- **Rich Queries**: Use the state database (CouchDB) to perform complex JSON queries.
- **CouchDB Indexes**: Package indexes with your chaincode to support efficient rich queries and sorting.
- **Pagination**: Handle large result sets using bookmarks and page sizes for both range and rich queries.
For a detailed walk-through of this sample, refer to the [Using CouchDB as your state database](https://hyperledger-fabric.readthedocs.io/en/latest/couchdb_tutorial.html) tutorial in the Hyperledger Fabric documentation.
### GetAssetHistory
The `GetAssetHistory` function in the smart contract uses the `GetHistoryForKey` API to return every change made to an asset since it was first created on the ledger, providing full auditability for asset transfers.
## Running the sample
The Fabric test network is used to deploy and run this sample. Follow these steps in order:
1. Create the test network and a channel (from the `test-network` folder). Use the `-s couchdb` flag to enable rich query support.
```shell
./network.sh up createChannel -c mychannel -ca -s couchdb
```
2. Deploy one of the smart contract implementations (from the `test-network` folder).
- To deploy the **Go** chaincode implementation:
```shell
./network.sh deployCC -ccn ledger -ccp ../asset-transfer-ledger-queries/chaincode-go/ -ccl go
```
- To deploy the **JavaScript** chaincode implementation:
```shell
./network.sh deployCC -ccn ledger -ccp ../asset-transfer-ledger-queries/chaincode-javascript/ -ccl javascript
```
- To deploy the **TypeScript** chaincode implementation:
```shell
./network.sh deployCC -ccn ledger -ccp ../asset-transfer-ledger-queries/chaincode-typescript/ -ccl typescript
```
3. Run the application (from the `asset-transfer-ledger-queries/application-javascript` folder).
```shell
cd application-javascript
npm install
node app.js
```
## Clean up
When you are finished, you can bring down the test network (from the `test-network` folder). The command will remove all the nodes of the test network, and delete any ledger data that you created.
```shell
./network.sh down
```

View file

@ -27,7 +27,7 @@ write_files:
# set -o pipefail
if [ -z $1 ]; then
HLF_VERSION=2.5.15
HLF_VERSION=2.5.16
else
HLF_VERSION=$1
fi

View file

@ -29,12 +29,16 @@ spec:
couchdbTag: ${COUCHDB_IMAGE_LABEL}
networkinfo:
domain: "${CONSOLE_DOMAIN}"
usetags: true
version: 1.0.0
connectionString: http://${CONSOLE_USERNAME}:${CONSOLE_PASSWORD}@localhost:5984
storage:
console:
class: "${STORAGE_CLASS}"
size: 5Gi
usetags: true
version: 1.0.0
couchdb:
class: "${STORAGE_CLASS}"
size: 5Gi
resources:
init:
limits:

View file

@ -33,8 +33,8 @@ function context() {
export ${name}="${!override_name:-${default_value}}"
}
context FABRIC_VERSION 2.5.15
context FABRIC_CA_VERSION 1.5.15
context FABRIC_VERSION 2.5.16
context FABRIC_CA_VERSION 1.5.21
context CLUSTER_RUNTIME kind # or k3s for Rancher
context CONTAINER_CLI docker # or nerdctl for containerd

View file

@ -21,12 +21,12 @@ fabric-ca-client register \
--id.name $USERNAME \
--id.secret $PASSWORD \
--id.type client \
--url https://$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN \
--url https://$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN:443 \
--tls.certfiles $WORKSHOP_CRYPTO/cas/$ORG-ca/tls-cert.pem \
--mspdir $WORKSHOP_CRYPTO/enrollments/$ORG/users/rcaadmin/msp
fabric-ca-client enroll \
--url https://$USERNAME:$PASSWORD@$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN \
--url https://$USERNAME:$PASSWORD@$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN:443 \
--tls.certfiles $WORKSHOP_CRYPTO/cas/$ORG-ca/tls-cert.pem \
--mspdir $WORKSHOP_CRYPTO/enrollments/$ORG/users/$USERNAME/msp

View file

@ -332,12 +332,12 @@ fabric-ca-client register \
--id.name $USERNAME \
--id.secret $PASSWORD \
--id.type client \
--url https://$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN \
--url https://$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN:443 \
--tls.certfiles $WORKSHOP_CRYPTO/cas/$ORG-ca/tls-cert.pem \
--mspdir $WORKSHOP_CRYPTO/enrollments/$ORG/users/rcaadmin/msp
fabric-ca-client enroll \
--url https://$USERNAME:$PASSWORD@$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN \
--url https://$USERNAME:$PASSWORD@$WORKSHOP_NAMESPACE-$ORG-ca-ca.$WORKSHOP_INGRESS_DOMAIN:443 \
--tls.certfiles $WORKSHOP_CRYPTO/cas/$ORG-ca/tls-cert.pem \
--mspdir $WORKSHOP_CRYPTO/enrollments/$ORG/users/$USERNAME/msp

View file

@ -39,8 +39,8 @@ First, run the following command to verify that the environment variables are co
```shell
$ ./network
Fabric image versions: Peer (3.1.4), CA (1.5.15)
Fabric binary versions: Peer (3.1.4), CA (1.5.15)
Fabric image versions: Peer (3.1.5), CA (1.5.21)
Fabric binary versions: Peer (3.1.5), CA (1.5.21)
--- Fabric Information
Fabric Version : 3.1

View file

@ -1,7 +1,7 @@
# default image tag, example: "2.5.13". "default" will download the latest. (-i)
# default image tag, example: "2.5.16". "default" will download the latest. (-i)
IMAGETAG="default"
# default ca image tag, example: "1.5.15". "default" will download the latest. (-cai)
# default ca image tag, example: "1.5.21". "default" will download the latest. (-cai)
CA_IMAGETAG="default"
# Using crpto vs CA. default is cryptogen

View file

@ -17,8 +17,8 @@ function printHelp() {
println
println " Flags:"
println " Used with \033[0;32mnetwork.sh prereq\033[0m:"
println " -i FabricVersion (default: '2.5.15')"
println " -cai Fabric CA Version (default: '1.5.15')"
println " -i FabricVersion (default: '2.5.16')"
println " -cai Fabric CA Version (default: '1.5.21')"
println
elif [ "$USAGE" == "up" ]; then
println "Usage: "
@ -159,8 +159,8 @@ function printHelp() {
println
println " Flags:"
println " Used with \033[0;32mnetwork.sh prereq\033[0m"
println " -i FabricVersion (default: '2.5.15')"
println " -cai Fabric CA Version (default: '1.5.15')"
println " -i FabricVersion (default: '2.5.16')"
println " -cai Fabric CA Version (default: '1.5.21')"
println
println " Used with \033[0;32mnetwork.sh up\033[0m, \033[0;32mnetwork.sh createChannel\033[0m:"
println " -ca - Use Certificate Authorities to generate network crypto material"