Skip to content
This repository was archived by the owner on Nov 6, 2020. It is now read-only.

Commit 7bfbe41

Browse files
authored
2.6.1-beta (#10973)
* Add support for Energy Web Foundation's new chains (#10957) * Kaspersky AV whitelisting (#10919) * Avast whitelist script (#10900) * Docker images renaming (#10863) * Remove excessive warning (#10831) * Allow --nat extip:your.host.here.org (#10830) * When updating the client or when called from RPC, sleep should mean sleep (#10814) * added new ropsten-bootnode and removed old one (#10794) * ethkey no longer uses byteorder (#10786) * docs: Update Readme with TOC, Contributor Guideline. Update Cargo package descriptions (#10652)
1 parent e38293b commit 7bfbe41

File tree

21 files changed

+973
-394
lines changed

21 files changed

+973
-394
lines changed

.gitlab-ci.yml

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ variables:
4646
sccache --start-server
4747
- sccache -s
4848
after_script:
49-
# sccache debug info
49+
# sccache debug info
5050
- if test -e sccache_debug.log;
5151
then
5252
echo "_____All crate-types:_____";
@@ -147,7 +147,7 @@ test-linux-nightly:
147147

148148
build-android:
149149
<<: *build-on-linux
150-
image: parity/rust-parity-ethereum-android-build:stretch
150+
image: parity/parity-ci-android:stretch
151151
variables:
152152
CARGO_TARGET: armv7-linux-androideabi
153153

@@ -158,21 +158,21 @@ build-linux:
158158
build-linux-i386:
159159
<<: *build-on-linux
160160
only: *releaseable_branches
161-
image: parity/rust-parity-ethereum-build:i386
161+
image: parity/parity-ci-i386:latest
162162
variables:
163163
CARGO_TARGET: i686-unknown-linux-gnu
164164

165165
build-linux-arm64:
166166
<<: *build-on-linux
167167
only: *releaseable_branches
168-
image: parity/rust-parity-ethereum-build:arm64
168+
image: parity/parity-ci-arm64:latest
169169
variables:
170170
CARGO_TARGET: aarch64-unknown-linux-gnu
171171

172172
build-linux-armhf:
173173
<<: *build-on-linux
174174
only: *releaseable_branches
175-
image: parity/rust-parity-ethereum-build:armhf
175+
image: parity/parity-ci-armhf:latest
176176
variables:
177177
CARGO_TARGET: armv7-unknown-linux-gnueabihf
178178

@@ -310,16 +310,31 @@ publish-awss3-release:
310310
- linux-docker
311311

312312
publish-docs:
313-
stage: publish
314-
image: parity/rust-parity-ethereum-docs:xenial
313+
stage: publish
314+
image: parity/parity-ci-docs:latest
315315
only:
316316
- tags
317317
except:
318318
- nightly
319-
cache: {}
320-
dependencies: []
319+
cache: {}
320+
dependencies: []
321321
script:
322322
- scripts/gitlab/publish-docs.sh
323323
tags:
324324
- linux-docker
325325
allow_failure: true
326+
327+
publish-av-whitelist:
328+
stage: publish
329+
<<: *no_git
330+
only: *releaseable_branches
331+
except:
332+
variables:
333+
- $SCHEDULE_TAG == "nightly"
334+
cache: {}
335+
dependencies:
336+
- build-windows
337+
script:
338+
- scripts/gitlab/publish-av-whitelists.sh
339+
tags:
340+
- linux-docker

CHANGELOG.md

Lines changed: 156 additions & 135 deletions
Large diffs are not rendered by default.

Cargo.lock

Lines changed: 41 additions & 110 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
description = "Parity Ethereum client"
33
name = "parity-ethereum"
44
# NOTE Make sure to update util/version/Cargo.toml as well
5-
version = "2.6.0"
5+
version = "2.6.1"
66
license = "GPL-3.0"
77
authors = ["Parity Technologies <admin@parity.io>"]
88

docs/CHANGELOG-2.4.md

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
## Parity-Ethereum [v2.4.9](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.9)
2+
3+
Parity Ethereum v2.4.9-stable is a security update which addresses servo/rust-smallvec#148
4+
5+
The full list of included changes:
6+
7+
* cargo update -p smallvec ([#10822](https://github.com/paritytech/parity-ethereum/pull/10822))
8+
9+
## Parity-Ethereum [v2.4.8](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.8)
10+
11+
Parity-Ethereum 2.4.8-stable is a bugfix release that improves performance and stability.
12+
13+
* Blockchain: fix reset chain
14+
* State tests: treat empty accounts the same as non-existant accounts (EIP 1052)
15+
* Aura: fix Timestamp Overflow
16+
* Networking: support discovery-only peers (geth bootnodes)
17+
* Snapshotting: fix unclean shutdown while snappshotting is under way
18+
19+
The full list of included changes:
20+
21+
* ethcore/res: activate atlantis classic hf on block 8772000 ([#10766](https://github.com/paritytech/parity-ethereum/pull/10766))
22+
* fix docker tags for publishing ([#10741](https://github.com/paritytech/parity-ethereum/pull/10741))
23+
* Reset blockchain properly ([#10669](https://github.com/paritytech/parity-ethereum/pull/10669))
24+
* adds rpc error message for --no-ancient-blocks ([#10608](https://github.com/paritytech/parity-ethereum/pull/10608))
25+
* Treat empty account the same as non-exist accounts in EIP-1052 ([#10775](https://github.com/paritytech/parity-ethereum/pull/10775))
26+
* fix: aura don't add `SystemTime::now()` ([#10720](https://github.com/paritytech/parity-ethereum/pull/10720))
27+
* DevP2p: Get node IP address and udp port from Socket, if not included in PING packet ([#10705](https://github.com/paritytech/parity-ethereum/pull/10705))
28+
* Revert "fix: aura don't add `SystemTime::now()` ([#10720](https://github.com/paritytech/parity-ethereum/pull/10720))"
29+
* Add a way to signal shutdown to snapshotting threads ([#10744](https://github.com/paritytech/parity-ethereum/pull/10744))
30+
31+
## Parity-Ethereum [v2.4.7](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.7)
32+
33+
Parity-Ethereum 2.4.7-stable is a bugfix release that improves performance and stability.
34+
35+
Among others, it enables the _Atlantis_ hardfork on **Morden** and **Kotti** Classic networks.
36+
37+
The full list of included changes:
38+
39+
* [CI] allow cargo audit to fail ([#10676](https://github.com/paritytech/parity-ethereum/pull/10676))
40+
* new image ([#10673](https://github.com/paritytech/parity-ethereum/pull/10673))
41+
* Update publishing ([#10644](https://github.com/paritytech/parity-ethereum/pull/10644))
42+
* enable lto for release builds ([#10717](https://github.com/paritytech/parity-ethereum/pull/10717))
43+
* Use RUSTFLAGS to set the optimization level ([#10719](https://github.com/paritytech/parity-ethereum/pull/10719))
44+
* ethcore: enable ECIP-1054 for classic ([#10731](https://github.com/paritytech/parity-ethereum/pull/10731))
45+
46+
## Parity-Ethereum [v2.4.6](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.6)
47+
48+
Parity-Ethereum 2.4.6-stable is a bugfix release that improves performance and stability.
49+
50+
Among others, it enables the Petersburg hardfork on **Rinkeby** and **POA-Core** Network, as well as the **Kovan** Network community hardfork.
51+
52+
The full list of included changes:
53+
54+
* ci: publish docs debug ([#10638](https://github.com/paritytech/parity-ethereum/pull/10638))
55+
56+
## Parity-Ethereum [v2.4.5](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.5)
57+
58+
Parity-Ethereum 2.4.5-stable is a bugfix release that improves performance and stability. This release improves memory optimizations around timestamp handling and stabilizes the 2.4 release branch.
59+
60+
As of today, Parity-Ethereum 2.3 reaches end of life and everyone is encouraged to upgrade.
61+
62+
## Parity-Ethereum [v2.4.4](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.4)
63+
64+
Parity-Ethereum 2.4.4-beta is a bugfix release that improves performance and stability. This patch release removes the dead chain configs for Easthub and Ethereum Social.
65+
66+
The full list of included changes:
67+
68+
* fix(rpc-types): replace uint and hash with `ethereum_types v0.4` ([#10217](https://github.com/paritytech/parity-ethereum/pull/10217))
69+
* chore(bump ethereum-types) ([#10396](https://github.com/paritytech/parity-ethereum/pull/10396))
70+
* fix(light eth_gasPrice): ask network if not in cache ([#10535](https://github.com/paritytech/parity-ethereum/pull/10535))
71+
* fix(light account response): update `tx_queue` ([#10545](https://github.com/paritytech/parity-ethereum/pull/10545))
72+
* fix(bump dependencies) ([#10540](https://github.com/paritytech/parity-ethereum/pull/10540))
73+
* tx-pool: check transaction readiness before replacing ([#10526](https://github.com/paritytech/parity-ethereum/pull/10526))
74+
* fix #10390 ([#10391](https://github.com/paritytech/parity-ethereum/pull/10391))
75+
* private-tx: replace error_chain ([#10510](https://github.com/paritytech/parity-ethereum/pull/10510))
76+
77+
## Parity-Ethereum [v2.4.3](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.3)
78+
79+
Parity-Ethereum 2.4.3-beta is a bugfix release that improves performance and stability. This patch release contains a critical bug fix where serving light clients previously led to client crashes. Upgrading is highly recommended.
80+
81+
The full list of included changes:
82+
83+
* Add additional request tests ([#10503](https://github.com/paritytech/parity-ethereum/pull/10503))
84+
85+
## Parity-Ethereum [v2.4.2](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.2)
86+
87+
Parity-Ethereum 2.4.2-beta is a bugfix release that improves performance and stability.
88+
89+
The full list of included changes:
90+
91+
* Сaching through docker volume ([#10477](https://github.com/paritytech/parity-ethereum/pull/10477))
92+
* fix win&mac build ([#10486](https://github.com/paritytech/parity-ethereum/pull/10486))
93+
* fix(extract `timestamp_checked_add` as lib) ([#10383](https://github.com/paritytech/parity-ethereum/pull/10383))
94+
95+
## Parity-Ethereum [v2.4.1](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.1)
96+
97+
Parity-Ethereum 2.4.1-beta is a bugfix release that improves performance and stability.
98+
99+
The full list of included changes:
100+
101+
* Implement parity_versionInfo & parity_setChain on LC; fix parity_setChain ([#10312](https://github.com/paritytech/parity-ethereum/pull/10312))
102+
* CI publish to aws ([#10446](https://github.com/paritytech/parity-ethereum/pull/10446))
103+
* CI aws git checkout ([#10451](https://github.com/paritytech/parity-ethereum/pull/10451))
104+
* Revert "CI aws git checkout ([#10451](https://github.com/paritytech/parity-ethereum/pull/10451))" (#10456)
105+
* Revert "CI aws git checkout ([#10451](https://github.com/paritytech/parity-ethereum/pull/10451))"
106+
* Tests parallelized ([#10452](https://github.com/paritytech/parity-ethereum/pull/10452))
107+
* Ensure static validator set changes are recognized ([#10467](https://github.com/paritytech/parity-ethereum/pull/10467))
108+
109+
## Parity-Ethereum [v2.4.0](https://github.com/paritytech/parity-ethereum/releases/tag/v2.4.0)
110+
111+
Parity-Ethereum 2.4.0-beta is our trifortnightly minor version release coming with a lot of new features as well as bugfixes and performance improvements.
112+
113+
Notable changes:
114+
- Account management is now deprecated ([#10213](https://github.com/paritytech/parity-ethereum/pull/10213))
115+
- Local accounts can now be specified via CLI ([#9960](https://github.com/paritytech/parity-ethereum/pull/9960))
116+
- Chains can now be reset to a particular block via CLI ([#9782](https://github.com/paritytech/parity-ethereum/pull/9782))
117+
- Ethash now additionally implements ProgPoW ([#9762](https://github.com/paritytech/parity-ethereum/pull/9762))
118+
- The `eip1283DisableTransition` flag was added to revert EIP-1283 ([#10214](https://github.com/paritytech/parity-ethereum/pull/10214))
119+
120+
The full list of included changes:
121+
122+
* revert some changes, could be buggy ([#10399](https://github.com/paritytech/parity-ethereum/pull/10399))
123+
* 10000 > 5000 ([#10422](https://github.com/paritytech/parity-ethereum/pull/10422))
124+
* fix panic when logging directory does not exist, closes #10420 ([#10424](https://github.com/paritytech/parity-ethereum/pull/10424))
125+
* fix underflow in pip, closes #10419 ([#10423](https://github.com/paritytech/parity-ethereum/pull/10423))
126+
* ci: clean up gitlab-ci.yml leftovers from previous merge ([#10429](https://github.com/paritytech/parity-ethereum/pull/10429))
127+
* Update hardcoded headers for Foundation, Ropsten, Kovan and Classic ([#10417](https://github.com/paritytech/parity-ethereum/pull/10417))
128+

ethcore/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ ansi_term = "0.11"
1212
blooms-db = { path = "../util/blooms-db", optional = true }
1313
bn = { git = "https://github.com/paritytech/bn", default-features = false }
1414
common-types = { path = "types" }
15-
crossbeam = "0.4"
15+
crossbeam-utils = "0.6"
1616
derive_more = "0.14.0"
1717
env_logger = { version = "0.5", optional = true }
1818
ethabi = "8.0"
@@ -57,7 +57,7 @@ pod-account = { path = "pod-account" }
5757
trie-db = "0.12.4"
5858
patricia-trie-ethereum = { path = "../util/patricia-trie-ethereum" }
5959
rand = "0.6"
60-
rayon = "1.0"
60+
rayon = "1.1"
6161
rlp = "0.4.0"
6262
rlp_derive = { path = "../util/rlp-derive" }
6363
rustc-hex = "1.0"

ethcore/blockchain/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ kvdb = "0.1"
1919
log = "0.4"
2020
parity-bytes = "0.1"
2121
parking_lot = "0.7"
22-
rayon = "1.0"
22+
rayon = "1.1"
2323
rlp = "0.4.0"
2424
rlp_compress = { path = "../../util/rlp-compress" }
2525
rlp_derive = { path = "../../util/rlp-derive" }

ethcore/evm/src/interpreter/mod.rs

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,6 @@ enum InstructionResult<Gas> {
109109
Trap(TrapKind),
110110
}
111111

112-
enum Never {}
113-
114112
/// ActionParams without code, so that it can be feed into CodeReader.
115113
#[derive(Debug)]
116114
struct InterpreterParams {
@@ -168,12 +166,6 @@ pub enum InterpreterResult {
168166
Trap(TrapKind),
169167
}
170168

171-
impl From<vm::Error> for InterpreterResult {
172-
fn from(error: vm::Error) -> InterpreterResult {
173-
InterpreterResult::Done(Err(error))
174-
}
175-
}
176-
177169
/// Intepreter EVM implementation
178170
pub struct Interpreter<Cost: CostType> {
179171
mem: Vec<u8>,
@@ -306,7 +298,7 @@ impl<Cost: CostType> Interpreter<Cost> {
306298
} else if self.reader.len() == 0 {
307299
InterpreterResult::Done(Ok(GasLeft::Known(self.gasometer.as_ref().expect("Gasometer None case is checked above; qed").current_gas.as_u256())))
308300
} else {
309-
self.step_inner(ext).err().expect("step_inner never returns Ok(()); qed")
301+
self.step_inner(ext)
310302
};
311303

312304
if let &InterpreterResult::Done(_) = &result {
@@ -318,7 +310,7 @@ impl<Cost: CostType> Interpreter<Cost> {
318310

319311
/// Inner helper function for step.
320312
#[inline(always)]
321-
fn step_inner(&mut self, ext: &mut vm::Ext) -> Result<Never, InterpreterResult> {
313+
fn step_inner(&mut self, ext: &mut dyn vm::Ext) -> InterpreterResult {
322314
let result = match self.resume_result.take() {
323315
Some(result) => result,
324316
None => {
@@ -333,22 +325,28 @@ impl<Cost: CostType> Interpreter<Cost> {
333325

334326
let instruction = match instruction {
335327
Some(i) => i,
336-
None => return Err(InterpreterResult::Done(Err(vm::Error::BadInstruction {
328+
None => return InterpreterResult::Done(Err(vm::Error::BadInstruction {
337329
instruction: opcode
338-
}))),
330+
})),
339331
};
340332

341333
let info = instruction.info();
342334
self.last_stack_ret_len = info.ret;
343-
self.verify_instruction(ext, instruction, info)?;
335+
if let Err(e) = self.verify_instruction(ext, instruction, info) {
336+
return InterpreterResult::Done(Err(e));
337+
};
344338

345339
// Calculate gas cost
346-
let requirements = self.gasometer.as_mut().expect(GASOMETER_PROOF).requirements(ext, instruction, info, &self.stack, self.mem.size())?;
340+
let requirements = match self.gasometer.as_mut().expect(GASOMETER_PROOF).requirements(ext, instruction, info, &self.stack, self.mem.size()) {
341+
Ok(t) => t,
342+
Err(e) => return InterpreterResult::Done(Err(e)),
343+
};
347344
if self.do_trace {
348345
ext.trace_prepare_execute(self.reader.position - 1, opcode, requirements.gas_cost.as_u256(), Self::mem_written(instruction, &self.stack), Self::store_written(instruction, &self.stack));
349346
}
350-
351-
self.gasometer.as_mut().expect(GASOMETER_PROOF).verify_gas(&requirements.gas_cost)?;
347+
if let Err(e) = self.gasometer.as_mut().expect(GASOMETER_PROOF).verify_gas(&requirements.gas_cost) {
348+
return InterpreterResult::Done(Err(e));
349+
}
352350
self.mem.expand(requirements.memory_required_size);
353351
self.gasometer.as_mut().expect(GASOMETER_PROOF).current_mem_gas = requirements.memory_total_gas;
354352
self.gasometer.as_mut().expect(GASOMETER_PROOF).current_gas = self.gasometer.as_mut().expect(GASOMETER_PROOF).current_gas - requirements.gas_cost;
@@ -357,18 +355,19 @@ impl<Cost: CostType> Interpreter<Cost> {
357355

358356
// Execute instruction
359357
let current_gas = self.gasometer.as_mut().expect(GASOMETER_PROOF).current_gas;
360-
let result = self.exec_instruction(
358+
let result = match self.exec_instruction(
361359
current_gas, ext, instruction, requirements.provide_gas
362-
)?;
363-
360+
) {
361+
Err(x) => return InterpreterResult::Done(Err(x)),
362+
Ok(x) => x,
363+
};
364364
evm_debug!({ self.informant.after_instruction(instruction) });
365-
366365
result
367366
},
368367
};
369368

370369
if let InstructionResult::Trap(trap) = result {
371-
return Err(InterpreterResult::Trap(trap));
370+
return InterpreterResult::Trap(trap);
372371
}
373372

374373
if let InstructionResult::UnusedGas(ref gas) = result {
@@ -390,28 +389,31 @@ impl<Cost: CostType> Interpreter<Cost> {
390389
self.valid_jump_destinations = Some(self.cache.jump_destinations(&self.params.code_hash, &self.reader.code));
391390
}
392391
let jump_destinations = self.valid_jump_destinations.as_ref().expect("jump_destinations are initialized on first jump; qed");
393-
let pos = self.verify_jump(position, jump_destinations)?;
392+
let pos = match self.verify_jump(position, jump_destinations) {
393+
Ok(x) => x,
394+
Err(e) => return InterpreterResult::Done(Err(e))
395+
};
394396
self.reader.position = pos;
395397
},
396398
InstructionResult::StopExecutionNeedsReturn {gas, init_off, init_size, apply} => {
397399
let mem = mem::replace(&mut self.mem, Vec::new());
398-
return Err(InterpreterResult::Done(Ok(GasLeft::NeedsReturn {
400+
return InterpreterResult::Done(Ok(GasLeft::NeedsReturn {
399401
gas_left: gas.as_u256(),
400402
data: mem.into_return_data(init_off, init_size),
401403
apply_state: apply
402-
})));
404+
}));
403405
},
404406
InstructionResult::StopExecution => {
405-
return Err(InterpreterResult::Done(Ok(GasLeft::Known(self.gasometer.as_mut().expect(GASOMETER_PROOF).current_gas.as_u256()))));
407+
return InterpreterResult::Done(Ok(GasLeft::Known(self.gasometer.as_mut().expect(GASOMETER_PROOF).current_gas.as_u256())));
406408
},
407409
_ => {},
408410
}
409411

410412
if self.reader.position >= self.reader.len() {
411-
return Err(InterpreterResult::Done(Ok(GasLeft::Known(self.gasometer.as_mut().expect(GASOMETER_PROOF).current_gas.as_u256()))));
413+
return InterpreterResult::Done(Ok(GasLeft::Known(self.gasometer.as_mut().expect(GASOMETER_PROOF).current_gas.as_u256())));
412414
}
413415

414-
Err(InterpreterResult::Continue)
416+
InterpreterResult::Continue
415417
}
416418

417419
fn verify_instruction(&self, ext: &vm::Ext, instruction: Instruction, info: &InstructionInfo) -> vm::Result<()> {

0 commit comments

Comments
 (0)