Skip to content

Commit 7cfa50d

Browse files
authored
Merge branch 'main' into bump_cli
2 parents d6b46ea + 135a8ad commit 7cfa50d

File tree

5 files changed

+174
-43
lines changed

5 files changed

+174
-43
lines changed

doc-site/docs/reference/types/_includes/contractlistener_description.md

Lines changed: 97 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Each filter is identified by a generated `signature` that matches a single event
4040

4141
Ethereum provides a string standard for event signatures, of the form `EventName(uint256,bytes)`. Prior to v1.3.1, the signature of each Ethereum contract listener would exactly follow this Ethereum format.
4242

43-
As of v1.3.1, Ethereum signature strings have been changed, because this format does not fully describe the event - particularly because each top-level parameter can in the ABI definition be marked as `indexed`. For example, while the following two Solidity events have the same signature, they are serialized differently due to the different placement of `indexed` parameters, and thus a listener must define both individually to be able to process them:
43+
As of v1.3.1, Ethereum format signature strings have been changed in FireFly, because this format does not fully describe the event - particularly because each top-level parameter can in the ABI definition be marked as `indexed`. For example, while the following two Solidity events have the same signature, they are serialized differently due to the different placement of `indexed` parameters, and thus a listener must define both individually to be able to process them:
4444

4545
- ERC-20 `Transfer`
4646

@@ -54,7 +54,7 @@ As of v1.3.1, Ethereum signature strings have been changed, because this format
5454
event Transfer(address indexed _from, address indexed _to, uint256 indexed _tokenId);
5555
```
5656

57-
The two above are now expressed in the following manner by the Ethereum blockchain connector:
57+
The two above are now expressed in the following manner by the FireFly Ethereum blockchain connector:
5858

5959
```solidity
6060
Transfer(address,address,uint256) [i=0,1]
@@ -65,7 +65,7 @@ The `[i=]` listing at the end of the signature indicates the position of all par
6565

6666
Building on the blockchain-specific signature format for each event, FireFly will then compute the final signature for each filter and each contract listener as follows:
6767

68-
- Each filter signature is a combination of the location and the specific connector event signature, such as `0xa5ea5d0a6b2eaf194716f0cc73981939dca26da1:Changed(address,uint256) [i=0]`
68+
- Each filter signature is a combination of the location and the specific connector event signature, such as `0xa5ea5d0a6b2eaf194716f0cc73981939dca26da1:Transfer(address,address,uint256) [i=0,1]`
6969
- Each contract listener signature is a concatenation of all the filter signatures, separated by `;`
7070

7171
#### Duplicate filters
@@ -84,7 +84,7 @@ As noted above, each listener has a generated signature. This signature - contai
8484

8585
### Backwards compatibility
8686

87-
As noted throughout this document, the behavior of listeners is changed in v1.3.1. However, the following behaviors are retained for backwards-compatibility, to ensure that code written prior to v1.3.1 should continue to function.
87+
As noted throughout this document, the behavior of listeners has changed in v1.3.1. However, the following behaviors are retained for backwards-compatibility, to ensure that code written prior to v1.3.1 should continue to function.
8888

8989
- The response from all query APIs of `listeners` will continue to populate top-level `event` and `location` fields
9090
- The first entry from the `filters` array is duplicated to these fields
@@ -93,12 +93,104 @@ As noted throughout this document, the behavior of listeners is changed in v1.3.
9393
- The `signature` field is preserved at the listener level
9494
- The format has been changed as described above
9595

96-
### Input formats
96+
## Input examples
9797

9898
The two input formats supported when creating a contract listener are shown below.
9999

100+
### With event definition
101+
102+
In these examples, the event schema in the FireFly Interface format is provided describing the event and its parameters. See [FireFly Interface Format](../firefly_interface_format.md)
103+
100104
**Muliple Filters**
105+
```json
106+
{
107+
"filters": [
108+
{
109+
"event": {
110+
"name": "Changed",
111+
"description": "",
112+
"params": [
113+
{
114+
"name": "x",
115+
"schema": {
116+
"type": "integer",
117+
"details": {
118+
"type": "uint256",
119+
"internalType": "uint256"
120+
}
121+
}
122+
}
123+
]
124+
},
125+
"location": {
126+
"address": "0xa5ea5d0a6b2eaf194716f0cc73981939dca26da1"
127+
}
128+
},
129+
{
130+
"event": {
131+
"name": "AnotherEvent",
132+
"description": "",
133+
"params": [
134+
{
135+
"name": "my-field",
136+
"schema": {
137+
"type": "string",
138+
"details": {
139+
"type": "address",
140+
"internalType": "address",
141+
"indexed": true
142+
}
143+
}
144+
}
145+
]
146+
},
147+
"location": {
148+
"address": "0xa4ea5d0b6b2eaf194716f0cc73981939dca27da1"
149+
}
150+
}
151+
],
152+
"options": {
153+
"firstEvent": "newest"
154+
},
155+
"topic": "simple-storage"
156+
}
157+
```
158+
159+
**One filter (old format)**
160+
161+
```json
162+
{
163+
"event": {
164+
"name": "Changed",
165+
"description": "",
166+
"params": [
167+
{
168+
"name": "x",
169+
"schema": {
170+
"type": "integer",
171+
"details": {
172+
"type": "uint256",
173+
"internalType": "uint256"
174+
}
175+
}
176+
}
177+
]
178+
},
179+
"location": {
180+
"address": "0xa5ea5d0a6b2eaf194716f0cc73981939dca26da1"
181+
},
182+
"options": {
183+
"firstEvent": "newest"
184+
},
185+
"topic": "simple-storage"
186+
}
187+
```
188+
189+
### With interface reference
101190

191+
These examples use an `interface` reference when creating the filters, the `eventPath` field is used to reference an event defined within the interface provided. In this case, we do not need to provide the event schema as the section above shows. See an example of creating a [FireFly Interface](../../tutorials/custom_contracts/ethereum.md/#the-firefly-interface-format) for an EVM smart contract.
192+
193+
**Muliple Filters**
102194
```json
103195
{
104196
"filters": [

doc-site/docs/reference/types/contractlistener.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,9 @@ title: ContractListener
121121

122122
| Field Name | Description | Type |
123123
|------------|-------------|------|
124-
| `event` | The definition of the event, either provided in-line when creating the listener, or extracted from the referenced FFI | [`FFISerializedEvent`](#ffiserializedevent) |
124+
| `event` | The definition of the event, either provided in-line when creating the listener, or extracted from the referenced FFI when supplied | [`FFISerializedEvent`](#ffiserializedevent) |
125125
| `location` | A blockchain specific contract identifier. For example an Ethereum contract address, or a Fabric chaincode name and channel | [`JSONAny`](simpletypes.md#jsonany) |
126-
| `interface` | A reference to an existing FFI, containing pre-registered type information for the event | [`FFIReference`](#ffireference) |
126+
| `interface` | A reference to an existing FFI, containing pre-registered type information for the event, used in combination with eventPath | [`FFIReference`](#ffireference) |
127127
| `signature` | The stringified signature of the event and location, as computed by the blockchain plugin | `string` |
128128

129129

doc-site/docs/releasenotes/index.md

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,35 @@
22
title: Release Notes
33
---
44

5+
# Release Notes
6+
57
[Full release notes](https://github.com/hyperledger/firefly/releases)
68

9+
## [v1.3.3 - Mar 24, 2025](https://github.com/hyperledger/firefly/releases/tag/v1.3.3)
10+
11+
What's New:
12+
- Add new interface for blockchain plugins to stream receipt notifications in transactional batches
13+
- For blockchain connectors that have an `ack` based reliable receipt stream (or other checkpoint system)
14+
- Allows strictly ordered delivery of receipts from blockchain plugins that support it
15+
- Allows resilience on receipt delivery to core, against a checkpoint maintained in the connector
16+
- Changes in metrics:
17+
- Added new metrics for Data Exchange for monitoring by a timeseries and alerting system.
18+
- `ff_multiparty_node_identity_dx_mismatch` notify that the certificate in FireFly Core is different to the one stored in Data Exchange
19+
- `ff_multiparty_node_identity_dx_expiry_epoch` emit the timestamp of the certificate of Data Exchange useful for SREs to monitor before it expires
20+
- Added a namespace label to existing metrics to separate metrics more easily
21+
- Added HTTP Response Time and Complete Gauge Support to `firefly-common`
22+
- Allow the `metrics` server to host additional routes such as status endpoints
23+
- This resulted in a new configuration section of `monitoring` to be more appropriate than `metrics` which has now be deprecated.
24+
- Fix to issue that resulted in retried private messages using local namespace rather than the network namespace
25+
- Fix to issue that could result in messages being marked `Pending` on re-delivery of a batch over the network
26+
- Miscellaneous bug fixes and minor improvements
27+
- Documentation updates, new troubleshooting section for multiparty messages
28+
- CVE fixes and adoption of OpenSSF scorecard on key repositories
29+
30+
### Migration consideration
31+
32+
As part of the changes to the metrics to add the new `namespace` label, we changed from using a Prometheus `Counter` to a `CounterVec`. As a result there is no default value of `0` on the counter, which means when users query for a specific metric such as `ff_message_rejected_total` it will not be available until the `CounterVec` associated with that metric is incremented. This has been determined to be an easy upgrade for SRE monitoring these metrics, hence inclusion in a patch release.
33+
734
## [v1.3.2 - Oct 3, 2024](https://github.com/hyperledger/firefly/releases/tag/v1.3.2)
835

936
What's New:
@@ -24,7 +51,7 @@ What's New:
2451
See [Contract Listeners](../reference/types/contractlistener.md) for details
2552
- New multiparty status API at `/status/multiparty`
2653

27-
## [v1.3.0 - April 25, 2024](https://github.com/hyperledger/firefly/releases/tag/v1.1.0)
54+
## [v1.3.0 - April 25, 2024](https://github.com/hyperledger/firefly/releases/tag/v1.3.0)
2855

2956
[Migration guide](1.3_migration_guide.md)
3057

@@ -50,9 +77,6 @@ What's New:
5077
- Custom HTTP headers can be passed through to FireFly dependency microservices
5178
- Evmconnect is now the default blockchain connector for Ethereum based FireFly stacks
5279

53-
# Release Notes
54-
55-
[Full release notes](https://github.com/hyperledger/firefly/releases)
5680

5781
## [v1.1.0 - September 12, 2022](https://github.com/hyperledger/firefly/releases/tag/v1.1.0)
5882

0 commit comments

Comments
 (0)