Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
09967329af | ||
|
|
459a1a02a4 | ||
|
|
a716eb3871 | ||
|
|
0fd7c59724 | ||
|
|
aa41520dd1 | ||
|
|
4bffab6715 | ||
|
|
5709dbc3e0 | ||
|
|
5fdedf0858 | ||
|
|
3317797285 | ||
|
|
327c4bcb14 | ||
|
|
f143ddb75a | ||
|
|
187c81b3f1 |
12
CHANGELOG.md
12
CHANGELOG.md
@@ -1,3 +1,15 @@
|
||||
## OpenEthereum v3.2.4
|
||||
|
||||
* Fix for Typed transaction broadcast.
|
||||
|
||||
## OpenEthereum v3.2.3
|
||||
|
||||
* Hotfix for berlin consensus error.
|
||||
|
||||
## OpenEthereum v3.2.1
|
||||
|
||||
Hot fix issue, related to initial sync:
|
||||
* Initial sync gets stuck. (#318)
|
||||
## OpenEthereum v3.2.0
|
||||
|
||||
Bug fixes:
|
||||
|
||||
4
Cargo.lock
generated
4
Cargo.lock
generated
@@ -2825,7 +2825,7 @@ checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c"
|
||||
|
||||
[[package]]
|
||||
name = "openethereum"
|
||||
version = "3.2.0"
|
||||
version = "3.2.4"
|
||||
dependencies = [
|
||||
"ansi_term 0.10.2",
|
||||
"atty",
|
||||
@@ -3188,7 +3188,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "parity-version"
|
||||
version = "3.2.0"
|
||||
version = "3.2.4"
|
||||
dependencies = [
|
||||
"parity-bytes",
|
||||
"rlp 0.3.0",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
description = "OpenEthereum"
|
||||
name = "openethereum"
|
||||
# NOTE Make sure to update util/version/Cargo.toml as well
|
||||
version = "3.2.0"
|
||||
version = "3.2.4"
|
||||
license = "GPL-3.0"
|
||||
authors = [
|
||||
"OpenEthereum developers",
|
||||
|
||||
@@ -297,9 +297,9 @@ Caching, Importing Blocks, and Block Information
|
||||
|
||||
In addition to the OpenEthereum client, there are additional tools in this repository available:
|
||||
|
||||
- [evmbin](./evmbin) - OpenEthereum EVM Implementation.
|
||||
- [ethstore](./accounts/ethstore) - OpenEthereum Key Management.
|
||||
- [ethkey](./accounts/ethkey) - OpenEthereum Keys Generator.
|
||||
- [evmbin](./bin/evmbin) - OpenEthereum EVM Implementation.
|
||||
- [ethstore](./crates/accounts/ethstore) - OpenEthereum Key Management.
|
||||
- [ethkey](./crates/accounts/ethkey) - OpenEthereum Keys Generator.
|
||||
|
||||
The following tools are available in a separate repository:
|
||||
- [ethabi](https://github.com/openethereum/ethabi) - OpenEthereum Encoding of Function Calls. [Docs here](https://crates.io/crates/ethabi)
|
||||
|
||||
BIN
artifacts/openethereum-windows-v3.2.3.zip
Normal file
BIN
artifacts/openethereum-windows-v3.2.3.zip
Normal file
Binary file not shown.
@@ -43,7 +43,6 @@
|
||||
"eip1706Transition": "0x0",
|
||||
"eip1884Transition": "0x0",
|
||||
"eip2028Transition": "0x0",
|
||||
"eip2315Transition": "0x0",
|
||||
"eip2929Transition": "0x0",
|
||||
"eip2930Transition": "0x0"
|
||||
},
|
||||
@@ -203,4 +202,4 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Submodule crates/ethcore/res/json_tests updated: 31d663076b...e431795bf7
@@ -281,7 +281,9 @@ impl Importer {
|
||||
// t_nb 6.0 This is triggered by a message coming from a block queue when the block is ready for insertion
|
||||
pub fn import_verified_blocks(&self, client: &Client) -> usize {
|
||||
// Shortcut out if we know we're incapable of syncing the chain.
|
||||
if !client.enabled.load(AtomicOrdering::Relaxed) {
|
||||
trace!(target: "block_import", "fn import_verified_blocks");
|
||||
if !client.enabled.load(AtomicOrdering::SeqCst) {
|
||||
self.block_queue.reset_verification_ready_signal();
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -303,6 +305,8 @@ impl Importer {
|
||||
let _import_lock = self.import_lock.lock();
|
||||
let blocks = self.block_queue.drain(max_blocks_to_import);
|
||||
if blocks.is_empty() {
|
||||
debug!(target: "block_import", "block_queue is empty");
|
||||
self.block_queue.resignal_verification();
|
||||
return 0;
|
||||
}
|
||||
trace_time!("import_verified_blocks");
|
||||
@@ -315,6 +319,13 @@ impl Importer {
|
||||
|
||||
let is_invalid = invalid_blocks.contains(header.parent_hash());
|
||||
if is_invalid {
|
||||
debug!(
|
||||
target: "block_import",
|
||||
"Refusing block #{}({}) with invalid parent {}",
|
||||
header.number(),
|
||||
header.hash(),
|
||||
header.parent_hash()
|
||||
);
|
||||
invalid_blocks.insert(hash);
|
||||
continue;
|
||||
}
|
||||
@@ -323,7 +334,7 @@ impl Importer {
|
||||
Ok((closed_block, pending)) => {
|
||||
imported_blocks.push(hash);
|
||||
let transactions_len = closed_block.transactions.len();
|
||||
|
||||
trace!(target:"block_import","Block #{}({}) check pass",header.number(),header.hash());
|
||||
// t_nb 8.0 commit block to db
|
||||
let route = self.commit_block(
|
||||
closed_block,
|
||||
@@ -332,6 +343,7 @@ impl Importer {
|
||||
pending,
|
||||
client,
|
||||
);
|
||||
trace!(target:"block_import","Block #{}({}) commited",header.number(),header.hash());
|
||||
import_results.push(route);
|
||||
client
|
||||
.report
|
||||
@@ -365,6 +377,7 @@ impl Importer {
|
||||
|
||||
{
|
||||
if !imported_blocks.is_empty() {
|
||||
trace!(target:"block_import","Imported block, notify rest of system");
|
||||
let route = ChainRoute::from(import_results.as_ref());
|
||||
|
||||
// t_nb 10 Notify miner about new included block.
|
||||
@@ -393,11 +406,12 @@ impl Importer {
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
trace!(target:"block_import","Flush block to db");
|
||||
let db = client.db.read();
|
||||
db.key_value().flush().expect("DB flush failed.");
|
||||
|
||||
self.block_queue.resignal_verification();
|
||||
trace!(target:"block_import","Resignal verifier");
|
||||
imported
|
||||
}
|
||||
|
||||
|
||||
@@ -240,7 +240,6 @@ impl<'a> CallCreateExecutive<'a> {
|
||||
if schedule.eip2929 {
|
||||
let mut substate = Substate::from_access_list(¶ms.access_list);
|
||||
substate.access_list.insert_address(params.address);
|
||||
substate.access_list.insert_address(params.sender);
|
||||
substate
|
||||
} else {
|
||||
Substate::default()
|
||||
@@ -1145,8 +1144,11 @@ impl<'a, B: 'a + StateBackend> Executive<'a, B> {
|
||||
let mut access_list = AccessList::new(schedule.eip2929);
|
||||
|
||||
if schedule.eip2929 {
|
||||
for (address, _) in self.machine.builtins() {
|
||||
access_list.insert_address(*address);
|
||||
access_list.insert_address(sender);
|
||||
for (address, builtin) in self.machine.builtins() {
|
||||
if builtin.is_active(self.info.number) {
|
||||
access_list.insert_address(*address);
|
||||
}
|
||||
}
|
||||
if schedule.eip2930 {
|
||||
// optional access list
|
||||
@@ -1232,6 +1234,7 @@ impl<'a, B: 'a + StateBackend> Executive<'a, B> {
|
||||
&nonce,
|
||||
&t.tx().data,
|
||||
);
|
||||
access_list.insert_address(new_address);
|
||||
let params = ActionParams {
|
||||
code_address: new_address.clone(),
|
||||
code_hash: code_hash,
|
||||
@@ -1255,6 +1258,7 @@ impl<'a, B: 'a + StateBackend> Executive<'a, B> {
|
||||
(res, out)
|
||||
}
|
||||
Action::Call(ref address) => {
|
||||
access_list.insert_address(address.clone());
|
||||
let params = ActionParams {
|
||||
code_address: address.clone(),
|
||||
address: address.clone(),
|
||||
|
||||
@@ -683,6 +683,11 @@ impl<K: Kind> VerificationQueue<K> {
|
||||
}
|
||||
}
|
||||
|
||||
/// Reset verification ready signal so that it allows other threads to send IoMessage to Client
|
||||
pub fn reset_verification_ready_signal(&self) {
|
||||
self.ready_signal.reset();
|
||||
}
|
||||
|
||||
/// Returns true if there is nothing currently in the queue.
|
||||
pub fn is_empty(&self) -> bool {
|
||||
let v = &self.verification;
|
||||
|
||||
@@ -238,15 +238,15 @@ impl SyncPropagator {
|
||||
for tx in &transactions {
|
||||
let hash = tx.hash();
|
||||
if to_send.contains(&hash) {
|
||||
let appended =
|
||||
packet.append_raw_checked(&tx.encode(), 1, MAX_TRANSACTION_PACKET_SIZE);
|
||||
if !appended {
|
||||
tx.rlp_append(&mut packet);
|
||||
pushed += 1;
|
||||
// this is not hard limit and we are okay with it. Max default tx size is 300k.
|
||||
if packet.as_raw().len() >= MAX_TRANSACTION_PACKET_SIZE {
|
||||
// Maximal packet size reached just proceed with sending
|
||||
debug!(target: "sync", "Transaction packet size limit reached. Sending incomplete set of {}/{} transactions.", pushed, to_send.len());
|
||||
to_send = to_send.into_iter().take(pushed).collect();
|
||||
break;
|
||||
}
|
||||
pushed += 1;
|
||||
}
|
||||
}
|
||||
packet.complete_unbounded_list();
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "parity-version"
|
||||
# NOTE: this value is used for OpenEthereum version string (via env CARGO_PKG_VERSION)
|
||||
version = "3.2.0"
|
||||
version = "3.2.4"
|
||||
authors = ["Parity Technologies <admin@parity.io>"]
|
||||
build = "build.rs"
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM alpine:3.12.3 AS builder
|
||||
FROM alpine:3.13.2 AS builder
|
||||
|
||||
# show backtraces
|
||||
ENV RUST_BACKTRACE 1
|
||||
@@ -18,7 +18,7 @@ COPY . /openethereum
|
||||
RUN cargo build --release --features final --target x86_64-alpine-linux-musl --verbose
|
||||
RUN strip target/x86_64-alpine-linux-musl/release/openethereum
|
||||
|
||||
FROM alpine:3.12.3
|
||||
FROM alpine:3.13.2
|
||||
|
||||
# show backtraces
|
||||
ENV RUST_BACKTRACE 1
|
||||
|
||||
Reference in New Issue
Block a user