Skip to content

Commit 40fd8dd

Browse files
authored
Merge pull request #332 from iotexproject/release/v2.4.3
Add v2.4.3 release note and bump version
2 parents 19d1826 + 15ce48d commit 40fd8dd

4 files changed

Lines changed: 62 additions & 11 deletions

File tree

CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ This is the **IoTeX Delegate Manual** repository - configuration and operational
1313

1414
## Version Alignment
1515

16-
This repository is versioned in sync with [iotex-core](https://github.com/iotexproject/iotex-core). The current release is **v2.4.2**. When iotex-core releases a new version:
16+
This repository is versioned in sync with [iotex-core](https://github.com/iotexproject/iotex-core). The current release is **v2.4.3**. When iotex-core releases a new version:
1717
1. Update version references in README.md, config files, and scripts
1818
2. Add a release note in `changelog/`
1919
3. Create a PR but do NOT merge until the final release is tagged in iotex-core

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
Here are the software versions we use:
2222

23-
- MainNet: v2.4.2
23+
- MainNet: v2.4.3
2424

2525
## <a name="testnet"/>Join TestNet
2626
To start and run a testnet node, please click [**Join Testnet**](https://github.com/iotexproject/iotex-bootstrap/blob/master/README_testnet.md)
@@ -33,7 +33,7 @@ This is the recommended way to start an IoTeX node
3333
1. Pull the docker image:
3434

3535
```
36-
docker pull iotex/iotex-core:v2.4.2
36+
docker pull iotex/iotex-core:v2.4.3
3737
```
3838

3939
2. Set the environment with the following commands:
@@ -48,9 +48,9 @@ mkdir -p $IOTEX_HOME/data
4848
mkdir -p $IOTEX_HOME/log
4949
mkdir -p $IOTEX_HOME/etc
5050
51-
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.2/config_mainnet.yaml > $IOTEX_HOME/etc/config.yaml
52-
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.2/genesis_mainnet.yaml > $IOTEX_HOME/etc/genesis.yaml
53-
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.2/trie.db.patch > $IOTEX_HOME/data/trie.db.patch
51+
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.3/config_mainnet.yaml > $IOTEX_HOME/etc/config.yaml
52+
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.3/genesis_mainnet.yaml > $IOTEX_HOME/etc/genesis.yaml
53+
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.3/trie.db.patch > $IOTEX_HOME/data/trie.db.patch
5454
```
5555

5656
3. Edit `$IOTEX_HOME/etc/config.yaml`, look for `externalHost` and `producerPrivKey`, uncomment the lines and fill in your external IP and private key. If you leave `producerPrivKey` empty, your node will be assgined with a random key.
@@ -94,7 +94,7 @@ docker run -d --restart on-failure --name iotex \
9494
-v=$IOTEX_HOME/log:/var/log:rw \
9595
-v=$IOTEX_HOME/etc/config.yaml:/etc/iotex/config_override.yaml:ro \
9696
-v=$IOTEX_HOME/etc/genesis.yaml:/etc/iotex/genesis.yaml:ro \
97-
iotex/iotex-core:v2.4.2 \
97+
iotex/iotex-core:v2.4.3 \
9898
iotex-server \
9999
-config-path=/etc/iotex/config_override.yaml \
100100
-genesis-path=/etc/iotex/genesis.yaml
@@ -115,7 +115,7 @@ docker run -d --restart on-failure --name iotex \
115115
-v=$IOTEX_HOME/log:/var/log:rw \
116116
-v=$IOTEX_HOME/etc/config.yaml:/etc/iotex/config_override.yaml:ro \
117117
-v=$IOTEX_HOME/etc/genesis.yaml:/etc/iotex/genesis.yaml:ro \
118-
iotex/iotex-core:v2.4.2 \
118+
iotex/iotex-core:v2.4.3 \
119119
iotex-server \
120120
-config-path=/etc/iotex/config_override.yaml \
121121
-genesis-path=/etc/iotex/genesis.yaml \
@@ -139,7 +139,7 @@ Same as [Join MainNet](#mainnet) step 2
139139
```
140140
git clone https://github.com/iotexproject/iotex-core.git
141141
cd iotex-core
142-
git checkout v2.4.2
142+
git checkout v2.4.3
143143
144144
// optional
145145
export GOPROXY=https://goproxy.io
@@ -301,7 +301,7 @@ The upgrade script supports a non-interactive mode for use with AI agents, CI/CD
301301
|---|---|
302302
| `--auto` | Non-interactive mode, skip all prompts |
303303
| `--home=/path` | Set `$IOTEX_HOME` directory |
304-
| `--version=v2.4.2` | Target version (default: latest release) |
304+
| `--version=v2.4.3` | Target version (default: latest release) |
305305
| `--force` | Reinstall even if already running the same version |
306306
| `--snapshot` | Download blockchain snapshot (recommended for fresh install) |
307307
| `--monitor` | Enable monitoring |
@@ -315,7 +315,7 @@ bash setup_fullnode.sh --auto --home=/path/to/iotex-var --snapshot
315315
bash setup_fullnode.sh --auto --home=/path/to/iotex-var
316316

317317
# Upgrade to a specific version
318-
bash setup_fullnode.sh --auto --home=/path/to/iotex-var --version=v2.4.2
318+
bash setup_fullnode.sh --auto --home=/path/to/iotex-var --version=v2.4.3
319319
```
320320

321321
**Notes:**

changelog/v2.4.3-release-note.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# v2.4.3 Release Note
2+
3+
## Summary
4+
5+
v2.4.3 is a **recommended** security patch release on top of v2.4.2. It closes a transaction-log integrity issue where a contract could cause the node to record an `IN_CONTRACT_TRANSFER` transaction log for a native-token transfer that never happened, and adds an optional startup-loaded patch mechanism to correct such records in already-synced databases. No hardfork, no genesis change, and no config schema change is required for existing operators; a new optional `chain.patchTransactionLogPath` is available for operators who choose to apply the transaction-log patch.
6+
7+
> Transaction logs are not part of any receipt root or state root, so both the fix and the patch are **consensus-neutral**: block hashes are unchanged and nodes on mixed versions do not fork. On-chain balances were never affected by the issue.
8+
9+
## Changes
10+
11+
### Security
12+
13+
- **Record in-contract transfer logs from MakeTransfer directly** (#4868) — The node records native-token transfers that occur inside contract execution as `IN_CONTRACT_TRANSFER` transaction logs, marked with a reserved log topic. Previously any EVM log carrying that reserved topic was turned into a transaction log, so a contract could emit a crafted `LOG` and have the node record an in-contract transfer with attacker-chosen sender/recipient/amount for a transfer that never occurred. Systems that reconstruct balances from transaction logs (indexers, wallets, exchanges) could be misled by such entries. `MakeTransfer` now records the transfer log directly through a node-only path that a contract cannot reach, and `AddLog` no longer converts the reserved topic into a transaction log. Because such logs were never part of `receipt.Logs`, the change leaves `receipt.Logs`, the receipt root, and the block hash unchanged. The change is not height-gated; forged historical logs are dropped on re-execution.
14+
15+
### Feat
16+
17+
- **Startup-loaded transaction-log patch (`TransactionLogIndexer`)** (#4870) — Adds a read-only, startup-loaded override for block transaction logs, controlled by the new optional `chain.patchTransactionLogPath` config. A node loads a small key-value file keyed by block height that overrides the transaction logs served for a sparse set of heights, letting operators correct already-recorded forged records without re-syncing. Heights that are not in the patch fall through to the main block store; the set of patched heights is preloaded into memory at startup so that queries for unpatched heights (the common case) avoid a database lookup. Only nodes that configure `patchTransactionLogPath` are affected — the default is unset. Patch files are produced with the `tools/txlogpatch` utility in iotex-core.
18+
19+
## Upgrade Priority
20+
21+
v2.4.3 is **recommended** for all node types, in particular API / gateway / archive nodes that serve `GetTransactionLogByActionHash` and `GetTransactionLogByBlockHeight`.
22+
23+
| Node type | Action |
24+
| ------------- | ----------------- |
25+
| Delegate | **Recommended** |
26+
| Fullnode | **Recommended** |
27+
| API node | **Recommended** |
28+
| Archive node | **Recommended** |
29+
30+
No genesis or config schema changes are required; v2.4.3 is Go-only and introduces no new activation heights.
31+
32+
To also correct already-recorded forged transaction logs on API/archive nodes, download the transaction-log patch file and enable it:
33+
34+
```
35+
curl https://raw.githubusercontent.com/iotexproject/iotex-bootstrap/v2.4.3/txlog.db.patch > $IOTEX_HOME/data/txlog.db.patch
36+
```
37+
38+
then add to the `chain` section of `config.yaml`:
39+
40+
```yaml
41+
chain:
42+
patchTransactionLogPath: /var/data/txlog.db.patch
43+
```
44+
45+
and restart the node. Applying the patch is optional and only affects the transaction logs served for the patched heights; it does not change balances, receipts, or block hashes.
46+
47+
> **Important:** only set `patchTransactionLogPath` if the file is present at that path — a node configured with a missing patch file will fail to start. Leave the setting unset (the default) to run without the patch.
48+
49+
## Commits
50+
51+
https://github.com/iotexproject/iotex-core/compare/v2.4.2...v2.4.3

txlog.db.patch

128 KB
Binary file not shown.

0 commit comments

Comments
 (0)