Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Offchain Phragmén BREAKING. #4517

Merged
merged 144 commits into from
Mar 26, 2020
Merged
Show file tree
Hide file tree
Changes from 125 commits
Commits
Show all changes
144 commits
Select commit Hold shift + click to select a range
46ecd58
Initial skeleton for offchain phragmen
kianenigma Jan 2, 2020
a830ec9
Basic compact encoding decoding for results
kianenigma Jan 6, 2020
8448ee9
add compact files
kianenigma Jan 6, 2020
5e26a68
Bring back Self::ensure_storage_upgraded();
kianenigma Jan 6, 2020
65b2df6
Make staking use compact stuff.
kianenigma Jan 7, 2020
85b726c
First seemingly working version of reduce, full of todos
kianenigma Jan 13, 2020
bf053c2
Master.into()
kianenigma Jan 13, 2020
ca68e24
Everything phragmen related works again.
kianenigma Jan 13, 2020
62e61db
Signing made easier, still issues.
kianenigma Jan 14, 2020
c4a77ac
Signing from offchain compile fine 😎
kianenigma Jan 15, 2020
31b699a
make compact work with staked asssignment
kianenigma Jan 15, 2020
c5d8c51
Evaluation basics are in place.
kianenigma Jan 15, 2020
6d4494e
Master.into()
kianenigma Jan 15, 2020
35a7872
Move reduce into crate. Document stuff
kianenigma Jan 15, 2020
0540646
move reduce into no_std
kianenigma Jan 16, 2020
da66da2
Add files
kianenigma Jan 16, 2020
d95010d
Remove other std deps. Runtime compiles
kianenigma Jan 16, 2020
3f23367
Seemingly it is al stable; cycle implemented but not integrated.
kianenigma Jan 20, 2020
3cb47fb
Add fuzzing code.
kianenigma Jan 21, 2020
a21e90b
Cleanup reduce a bit more.
kianenigma Jan 21, 2020
df7676b
a metric ton of tests for staking; wip 🔨
kianenigma Jan 22, 2020
6f4a2fe
Master.into()
kianenigma Jan 22, 2020
889b18c
Implement a lot more of the tests.
kianenigma Jan 23, 2020
50f5399
wip getting the unsigned stuff to work
kianenigma Jan 23, 2020
2bbdec4
A bit gleanup for unsigned debug
kianenigma Jan 24, 2020
c9cfcb8
Clean and finalize compact code.
kianenigma Jan 24, 2020
3633a77
Document reduce.
kianenigma Jan 27, 2020
686d263
Still problems with signing
kianenigma Jan 27, 2020
295cdd7
We officaly duct taped the transaction submission stuff. 🤓
kianenigma Jan 27, 2020
57b2b4e
Deadlock with keys again
kianenigma Jan 28, 2020
6a33fc1
Runtime builds
kianenigma Jan 28, 2020
4e951af
Unsigned test works 🙌
kianenigma Jan 28, 2020
5ab3cf0
Some cleanups
kianenigma Jan 28, 2020
c88df34
Master.into()
kianenigma Jan 28, 2020
31fd60e
Make all the tests compile and stuff
kianenigma Jan 29, 2020
2623d98
Minor cleanup
kianenigma Feb 3, 2020
c911a87
Master.into()
kianenigma Feb 3, 2020
2ed0a1d
fix more merge stuff
kianenigma Feb 3, 2020
6bef2d9
Most tests work again.
kianenigma Feb 5, 2020
201c11c
a very nasty bug in reduce
kianenigma Feb 6, 2020
eef09e5
Fix all integrations
kianenigma Feb 6, 2020
51fc865
Fix more todos
kianenigma Feb 6, 2020
aa6186c
Revamp everything and everything
kianenigma Feb 11, 2020
596bc77
Master.into()
kianenigma Feb 11, 2020
084a355
Remove bogus test
kianenigma Feb 11, 2020
817f8aa
Some review grumbles.
kianenigma Feb 11, 2020
d1e290f
Make it work with custom key type
kianenigma Feb 12, 2020
02c4e3b
Some fixes
kianenigma Feb 12, 2020
aea7ad2
Fix doc test
kianenigma Feb 12, 2020
e2210cc
loop for submission
kianenigma Feb 13, 2020
ca20033
Fix cli, keyring etc.
kianenigma Feb 13, 2020
b2c4416
Merged with the generic phragmen -- maybe not perfectly but works
kianenigma Feb 13, 2020
10e97e3
some cleanup
kianenigma Feb 14, 2020
19cf777
Master.into()
kianenigma Feb 14, 2020
54a5a35
Fix staking tests again
kianenigma Feb 14, 2020
d746fd4
fix per-things; bring patches from benchmarking
kianenigma Feb 18, 2020
2f75ea7
better score prediction
kianenigma Feb 18, 2020
2fa064b
Add fuzzer, more patches.
kianenigma Feb 19, 2020
0afbde3
Some fixes
kianenigma Feb 19, 2020
16d8c64
Fix tests
kianenigma Feb 19, 2020
b8efef4
More docs
kianenigma Feb 20, 2020
e72d642
Remove unused generics
kianenigma Feb 20, 2020
9f227f9
Remove max-nominator footgun
kianenigma Feb 20, 2020
9116285
Better fuzzer
kianenigma Feb 21, 2020
36bbf4b
Master.into()
kianenigma Feb 21, 2020
44c0a6b
Disable it ❌
kianenigma Feb 21, 2020
c3769fa
Master.into()
kianenigma Feb 21, 2020
f21df59
Bump.
kianenigma Feb 21, 2020
f9f92c4
Another round of self-review
kianenigma Feb 26, 2020
4df9ed4
Master.into()
kianenigma Feb 26, 2020
037057c
Refactor a lot
kianenigma Feb 27, 2020
2b89c0e
More major fixes in perThing
kianenigma Feb 28, 2020
4e44501
Add new fuzz file
kianenigma Feb 28, 2020
5c3fc6c
Master.into()
kianenigma Feb 28, 2020
7287c2b
Update lock
kianenigma Feb 28, 2020
ac6ce78
fix fuzzing code.
kianenigma Feb 28, 2020
7be2268
Fix nominator retain test
kianenigma Mar 2, 2020
1bd7850
Add slashing check
kianenigma Mar 2, 2020
5f9844d
Update frame/staking/src/tests.rs
kianenigma Mar 2, 2020
555007f
Some formatting nits
kianenigma Mar 2, 2020
c16ad73
Merge branch 'kiz-offchain-phragmen-4' of github.com:paritytech/subst…
kianenigma Mar 2, 2020
c8cc72f
Review comments.
kianenigma Mar 3, 2020
ceef0e6
Merge branch 'master' of github.com:paritytech/substrate into kiz-off…
kianenigma Mar 3, 2020
62d4f5e
Fix cargo file
kianenigma Mar 3, 2020
fd9816a
Master.into()
kianenigma Mar 4, 2020
85f1aa4
Almost all tests work again
kianenigma Mar 4, 2020
9b8af93
Update frame/staking/src/tests.rs
kianenigma Mar 4, 2020
58fcf27
Fix review comments
kianenigma Mar 4, 2020
7f47696
Merge branch 'kiz-offchain-phragmen-4' of github.com:paritytech/subst…
kianenigma Mar 4, 2020
ef7eab2
More review stuff
kianenigma Mar 4, 2020
5f70434
Some nits
kianenigma Mar 4, 2020
4d82b4d
Merge branch 'master' of github.com:paritytech/substrate into kiz-off…
kianenigma Mar 4, 2020
58267dc
Fix new staking / session / babe relation
kianenigma Mar 5, 2020
bee2f5d
Update primitives/phragmen/src/lib.rs
kianenigma Mar 5, 2020
3def57b
Update primitives/phragmen/src/lib.rs
kianenigma Mar 5, 2020
9590986
Update primitives/phragmen/compact/src/lib.rs
kianenigma Mar 5, 2020
6566d81
Some doc updates to slashing
kianenigma Mar 5, 2020
b01000e
Merge branch 'kiz-offchain-phragmen-4' of github.com:paritytech/subst…
kianenigma Mar 5, 2020
1667f6e
Fix derive
kianenigma Mar 5, 2020
155e9a3
Master.into()
kianenigma Mar 5, 2020
e25c103
Remove imports
kianenigma Mar 5, 2020
81ddd48
Remove unimplemented tests
kianenigma Mar 6, 2020
87bb4d1
Master.into()
kianenigma Mar 9, 2020
eda82ae
nits
kianenigma Mar 9, 2020
56d1f5e
Remove dbg
kianenigma Mar 9, 2020
0c9c20f
Better fuzzing params
kianenigma Mar 9, 2020
f308817
Master.into()
kianenigma Mar 9, 2020
f014e2c
Remove unused pref map
kianenigma Mar 9, 2020
26d9329
Deferred Slashing/Offence for offchain Phragmen (#5151)
kianenigma Mar 10, 2020
ecd042e
Fix build
kianenigma Mar 10, 2020
63eb8c4
review comments
kianenigma Mar 12, 2020
3cd2c55
fix more
kianenigma Mar 12, 2020
1e4291c
Merge branch 'master' of github.com:paritytech/substrate into kiz-off…
kianenigma Mar 12, 2020
918e58e
fix build
kianenigma Mar 12, 2020
537d6ee
Some cleanups and self-reviews
kianenigma Mar 13, 2020
98f9c1b
More minor self reviews
kianenigma Mar 13, 2020
b553cf5
Master.into()
kianenigma Mar 13, 2020
199d8fb
Final nits
kianenigma Mar 13, 2020
a424a94
Merge branch 'master' of github.com:paritytech/substrate into kiz-off…
kianenigma Mar 13, 2020
42dbf06
A holy darn big upstream merge.
kianenigma Mar 19, 2020
202db20
Some merge fixes.
kianenigma Mar 19, 2020
8372453
opt comment
kianenigma Mar 20, 2020
db50363
Master.into()
kianenigma Mar 20, 2020
2692605
Fix build
kianenigma Mar 20, 2020
2cf090c
Fix build again.
kianenigma Mar 20, 2020
ffda508
Merge branch 'master' into kiz-offchain-phragmen-4
gavofyork Mar 21, 2020
4c56e36
Master.into()
kianenigma Mar 21, 2020
18558af
Update frame/staking/fuzz/fuzz_targets/submit_solution.rs
kianenigma Mar 22, 2020
6f9a2c5
Update frame/staking/src/slashing.rs
kianenigma Mar 23, 2020
cd3df80
Update frame/staking/src/offchain_election.rs
kianenigma Mar 23, 2020
1153084
Fix review comments
kianenigma Mar 23, 2020
4c274ab
Merge branch 'kiz-offchain-phragmen-4' of github.com:paritytech/subst…
kianenigma Mar 23, 2020
c75f441
Master.into()
kianenigma Mar 23, 2020
34e3d7b
fix test
kianenigma Mar 23, 2020
ee3c4cb
=== 🔑 Revamp without staking key.
kianenigma Mar 24, 2020
3c5dd95
Master.into()
kianenigma Mar 24, 2020
5a1aa2f
Master.into()
kianenigma Mar 25, 2020
03bb2a9
final round of changes.
kianenigma Mar 26, 2020
8dd2564
Master.into()
kianenigma Mar 26, 2020
4514432
Fix cargo-deny
kianenigma Mar 26, 2020
ce2ff51
Merge branch 'master' into kiz-offchain-phragmen-4
gavofyork Mar 26, 2020
9c0f42c
Master.into()
kianenigma Mar 26, 2020
94efcff
Master.into()
kianenigma Mar 26, 2020
8182947
Update frame/staking/src/lib.rs
kianenigma Mar 26, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 20 additions & 5 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,7 @@ members = [
"primitives/offchain",
"primitives/panic-handler",
"primitives/phragmen",
"primitives/phragmen/compact",
"primitives/rpc",
"primitives/runtime-interface",
"primitives/runtime-interface/proc-macro",
Expand Down
1 change: 1 addition & 0 deletions bin/node/cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ pallet-transaction-payment = { version = "2.0.0-alpha.4", path = "../../../frame
frame-support = { version = "2.0.0-alpha.4", default-features = false, path = "../../../frame/support" }
pallet-im-online = { version = "2.0.0-alpha.4", default-features = false, path = "../../../frame/im-online" }
pallet-authority-discovery = { version = "2.0.0-alpha.4", path = "../../../frame/authority-discovery" }
pallet-staking = { version = "2.0.0-alpha.4", path = "../../../frame/staking" }

# node-specific dependencies
node-runtime = { version = "2.0.0-alpha.4", path = "../runtime" }
Expand Down
34 changes: 30 additions & 4 deletions bin/node/cli/src/chain_spec.rs
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ use sc_telemetry::TelemetryEndpoints;
use grandpa_primitives::{AuthorityId as GrandpaId};
use sp_consensus_babe::{AuthorityId as BabeId};
use pallet_im_online::sr25519::{AuthorityId as ImOnlineId};
use pallet_staking::sr25519::{AuthorityId as StakingId};
use sp_authority_discovery::AuthorityId as AuthorityDiscoveryId;
use sp_runtime::{Perbill, traits::{Verify, IdentifyAccount}};

Expand Down Expand Up @@ -70,8 +71,9 @@ fn session_keys(
babe: BabeId,
im_online: ImOnlineId,
authority_discovery: AuthorityDiscoveryId,
staking: StakingId,
) -> SessionKeys {
SessionKeys { grandpa, babe, im_online, authority_discovery }
SessionKeys { grandpa, babe, im_online, authority_discovery, staking }
}

fn staging_testnet_config_genesis() -> GenesisConfig {
Expand All @@ -81,7 +83,7 @@ fn staging_testnet_config_genesis() -> GenesisConfig {
// and
// for i in 1 2 3 4 ; do for j in session; do subkey --ed25519 inspect "$secret"//fir//$j//$i; done; done

let initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId)> = vec![(
let initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId, StakingId)> = vec![(
// 5Fbsd6WXDGiLTxunqeK5BATNiocfCqu9bS1yArVjCgeBLkVy
hex!["9c7a2ee14e565db0c69f78c7b4cd839fbf52b607d867e9e9c5a79042898a0d12"].into(),
// 5EnCiV7wSHeNhjW3FSUwiJNkcc2SBkPLn5Nj93FmbLtBjQUq
Expand All @@ -94,6 +96,8 @@ fn staging_testnet_config_genesis() -> GenesisConfig {
hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(),
// 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8
hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(),
// 5EZaeQ8djPcq9pheJUhgerXQZt9YaHnMJpiHMRhwQeinqUW8
hex!["6e7e4eb42cbd2e0ab4cae8708ce5509580b8c04d11f6758dbf686d50fe9f9106"].unchecked_into(),
),(
// 5ERawXCzCWkjVq3xz1W5KGNtVx2VdefvZ62Bw1FEuZW4Vny2
hex!["68655684472b743e456907b398d3a44c113f189e56d1bbfd55e889e295dfde78"].into(),
Expand All @@ -107,6 +111,8 @@ fn staging_testnet_config_genesis() -> GenesisConfig {
hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(),
// 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ
hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(),
// 5DhLtiaQd1L1LU9jaNeeu9HJkP6eyg3BwXA7iNMzKm7qqruQ
hex!["482dbd7297a39fa145c570552249c2ca9dd47e281f0c500c971b59c9dcdcd82e"].unchecked_into(),
),(
// 5DyVtKWPidondEu8iHZgi6Ffv9yrJJ1NDNLom3X9cTDi98qp
hex!["547ff0ab649283a7ae01dbc2eb73932eba2fb09075e9485ff369082a2ff38d65"].into(),
Expand All @@ -120,6 +126,8 @@ fn staging_testnet_config_genesis() -> GenesisConfig {
hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(),
// 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH
hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(),
// 5DhKqkHRkndJu8vq7pi2Q5S3DfftWJHGxbEUNH43b46qNspH
hex!["482a3389a6cf42d8ed83888cfd920fec738ea30f97e44699ada7323f08c3380a"].unchecked_into(),
),(
// 5HYZnKWe5FVZQ33ZRJK1rG3WaLMztxWrrNDb1JRwaHHVWyP9
hex!["f26cdb14b5aec7b2789fd5ca80f979cef3761897ae1f37ffb3e154cbcc1c2663"].into(),
Expand All @@ -133,6 +141,8 @@ fn staging_testnet_config_genesis() -> GenesisConfig {
hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(),
// 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x
hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(),
// 5C4vDQxA8LTck2xJEy4Yg1hM9qjDt4LvTQaMo4Y8ne43aU6x
hex!["00299981a2b92f878baaf5dbeba5c18d4e70f2a1fcd9c61b32ea18daf38f4378"].unchecked_into(),
)];

// generated with secret: subkey inspect "$secret"/fir
Expand Down Expand Up @@ -188,6 +198,7 @@ pub fn get_authority_keys_from_seed(seed: &str) -> (
BabeId,
ImOnlineId,
AuthorityDiscoveryId,
StakingId,
) {
(
get_account_id_from_seed::<sr25519::Public>(&format!("{}//stash", seed)),
Expand All @@ -196,12 +207,21 @@ pub fn get_authority_keys_from_seed(seed: &str) -> (
get_from_seed::<BabeId>(seed),
get_from_seed::<ImOnlineId>(seed),
get_from_seed::<AuthorityDiscoveryId>(seed),
get_from_seed::<StakingId>(seed),
)
}

/// Helper function to create GenesisConfig for testing
pub fn testnet_genesis(
initial_authorities: Vec<(AccountId, AccountId, GrandpaId, BabeId, ImOnlineId, AuthorityDiscoveryId)>,
initial_authorities: Vec<(
AccountId,
AccountId,
GrandpaId,
BabeId,
ImOnlineId,
AuthorityDiscoveryId,
StakingId,
)>,
root_key: AccountId,
endowed_accounts: Option<Vec<AccountId>>,
enable_println: bool,
Expand Down Expand Up @@ -243,7 +263,13 @@ pub fn testnet_genesis(
}),
pallet_session: Some(SessionConfig {
keys: initial_authorities.iter().map(|x| {
(x.0.clone(), x.0.clone(), session_keys(x.2.clone(), x.3.clone(), x.4.clone(), x.5.clone()))
(x.0.clone(), x.0.clone(), session_keys(
x.2.clone(),
x.3.clone(),
x.4.clone(),
x.5.clone(),
x.6.clone(),
))
}).collect::<Vec<_>>(),
}),
pallet_staking: Some(StakingConfig {
Expand Down
3 changes: 2 additions & 1 deletion bin/node/cli/src/factory_impl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ impl<Number> FactoryState<Number> {
frame_system::CheckWeight::new(),
pallet_transaction_payment::ChargeTransactionPayment::from(0),
Default::default(),
Default::default(),
)
}
}
Expand Down Expand Up @@ -122,7 +123,7 @@ impl RuntimeAdapter for FactoryState<Number> {
(*amount).into()
)
)
}, key, (version, genesis_hash.clone(), prior_block_hash.clone(), (), (), (), ()))
}, key, (version, genesis_hash.clone(), prior_block_hash.clone(), (), (), (), (), ()))
}

fn inherent_extrinsics(&self) -> InherentData {
Expand Down
3 changes: 2 additions & 1 deletion bin/node/cli/src/service.rs
Original file line number Diff line number Diff line change
Expand Up @@ -624,11 +624,12 @@ mod tests {
check_weight,
payment,
Default::default(),
Default::default(),
);
let raw_payload = SignedPayload::from_raw(
function,
extra,
(version, genesis_hash, genesis_hash, (), (), (), ())
(version, genesis_hash, genesis_hash, (), (), (), (), ())
);
let signature = raw_payload.using_encoded(|payload| {
signer.sign(payload)
Expand Down
4 changes: 3 additions & 1 deletion bin/node/executor/tests/submit_transaction.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
// along with Substrate. If not, see <http://www.gnu.org/licenses/>.

use node_runtime::{
Call, Executive, Indices, Runtime, SubmitTransaction, UncheckedExtrinsic,
Call, Executive, Indices, Runtime, TransactionSubmitterOf, UncheckedExtrinsic,
};
use sp_application_crypto::AppKey;
use sp_core::testing::KeyStore;
Expand All @@ -31,6 +31,8 @@ use codec::Decode;
pub mod common;
use self::common::*;

type SubmitTransaction = TransactionSubmitterOf<pallet_im_online::sr25519::AuthorityId>;

#[test]
fn should_submit_unsigned_transaction() {
let mut t = new_test_ext(COMPACT_CODE, false);
Expand Down
Loading