Git Product home page Git Product logo

darwinia's Introduction

mission

License CI GitHub tag (latest by date) GitHub code lines GitHub last commit

Twitter URL Telegram Medium Discord

Introduction

Implementation of a https://darwinia.network node based on the Polkadot-sdk framework.

This repo contains the following networks:

Other Projects

Project Introduction Code Activity
darwinia-msgport Msgport is unified interface for sending and receiving messages across different chains GitHub code lines GitHub last commit
ORMP Oracle and Relayer based Message Protocol GitHub code lines GitHub last commit
DIPs Darwinia Improvement Proposals Hosting Repository GitHub code lines GitHub last commit
Darwinia Document Darwinia Document GitHub code lines GitHub last commit

Roadmap

Roadmap

Security

Security

darwinia's People

Contributors

alexchien avatar aurevoirxavier avatar boundless-forest avatar clearloop avatar dependabot[bot] avatar ecj222 avatar fewensa avatar freehere107 avatar furoxr avatar hackfisher avatar hujw77 avatar jiguantong avatar readlnh avatar sekisamu avatar wi1dcard avatar wuminzhe avatar x2x4com avatar xiaoch05 avatar yanganto avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

darwinia's Issues

节点异常退出

日志如下:

2019-07-08 09:32:06 Pre-sealed block for proposal at 62199. Hash now 0xe882f14e6eeff9541ab1074e8c7392a062412191c4437c06e1cc8df1e72818d4, previously 0x6f04aac860a893b04b27842547bf299bb458b8ea1e107ab1c0d1f2fd434de084.
Hash: given=6a01ad3815635208af782d55aed3b98aaf709ede06e6bda282e783e874406ba1, expected=6457ff9f6571232b58b0bbf49298f5c8c0d5d24bc8c59ec7e0fdbf033af25a8d

====================

stack backtrace:
   0: substrate_panic_handler::set::{{closure}}::hb9086efd4a6065e1 (0x559c24bd6b60)
   1: rust_panic_with_hook (0x559c24d620f9)
             at src/libstd/panicking.rs:478
   2: std::panicking::begin_panic::h95d5f94f8a7547ad (0x559c242b5415)
   3: srml_executive::Executive<System,Block,Context,Payment,UnsignedValidator,AllModules>::execute_block::h2539172a66a28c47 (0x559c24320238)
   4: node_runtime::api::dispatch::hfef69179bfe9b40c (0x559c242c0451)
   5: std::panicking::try::do_call::h7ba3fb6d4799e972 (0x559c242a8b32)
   6: __rust_maybe_catch_panic (0x559c24d6743a)
             at src/libpanic_unwind/lib.rs:87
   7: substrate_executor::native_executor::safe_call::h4cc995b43e7e8876 (0x559c242a89da)
   8: std::thread::local::LocalKey<T>::with::h78a289a35a741370 (0x559c242a8467)
   9: <node_executor::Executor as substrate_executor::native_executor::NativeExecutionDispatch>::dispatch::hc41cdb4d8ab7dc14 (0x559c242a7fed)
  10: std::thread::local::LocalKey<T>::with::ha0389a6041e88581 (0x559c23dbc4ba)
  11: substrate_state_machine::StateMachine<H,N,B,T,O,Exec>::execute_aux::h5c08d41a09de06f3 (0x559c240773b3)
  12: substrate_state_machine::StateMachine<H,N,B,T,O,Exec>::execute_call_with_native_else_wasm_strategy::h611a9deb7979b0b7 (0x559c240c2a13)
  13: substrate_state_machine::StateMachine<H,N,B,T,O,Exec>::execute_using_consensus_failure_handler::h0d5ed3fa1bd4e154 (0x559c24080efb)
  14: <substrate_client::call_executor::LocalCallExecutor<B,E> as substrate_client::call_executor::CallExecutor<Block,substrate_primitives::hasher::blake2::Blake2Hasher>>::call_at_state::h42587a21d90c89d0 (0x559c23e05d52)
  15: <substrate_client::client::Client<B,E,Block,RA> as substrate_consensus_common::block_import::BlockImport<Block>>::import_block::h0dd299dd4b967531 (0x559c23d03a69)
  16: <substrate_finality_grandpa::import::GrandpaBlockImport<B,E,Block,RA,PRA,SC> as substrate_consensus_common::block_import::BlockImport<Block>>::import_block::hbb1283e4b7a3dbcb (0x559c2406bde6)
  17: <futures::future::map::Map<A,F> as futures::future::Future>::poll::h627c342cdf6feab1 (0x559c23e81e55)
  18: <futures::future::map_err::MapErr<A,F> as futures::future::Future>::poll::h0dfa51beacfed793 (0x559c2416afee)
  19: <futures::future::map_err::MapErr<A,F> as futures::future::Future>::poll::h6b9ed871176cecee (0x559c2416d6be)
  20: <&mut F as futures::future::Future>::poll::h344dc31e2855c4e0 (0x559c23f01b7d)
  21: std::panicking::try::do_call::h7ea1581a740f8ce2 (0x559c23e275fa)
  22: __rust_maybe_catch_panic (0x559c24d6743a)
             at src/libpanic_unwind/lib.rs:87
  23: <futures::future::poll_fn::PollFn<F> as futures::future::Future>::poll::h7d3980ebe0123d47 (0x559c23debdd7)
  24: <futures::future::select::Select<A,B> as futures::future::Future>::poll::h3abfed3022c1282d (0x559c23e873f7)
  25: futures::future::chain::Chain<A,B,C>::poll::h1b0545a2a8838144 (0x559c240e3249)
  26: futures::task_impl::std::set::h0dbee74b9c229bfa (0x559c24a76df2)
  27: futures::task_impl::Spawn<T>::poll_future_notify::h472f28e6c521a66a (0x559c24a77be6)
  28: std::panicking::try::do_call::h9334a1163aea8408 (0x559c24a7b0b1)
  29: __rust_maybe_catch_panic (0x559c24d6743a)
             at src/libpanic_unwind/lib.rs:87
  30: tokio_threadpool::task::Task::run::hd8bb022254236495 (0x559c24a7b59c)
  31: tokio_threadpool::worker::Worker::run_task::h765f41a0a50bbba8 (0x559c24a73565)
  32: tokio_threadpool::worker::Worker::run::h424b95e4eec0d070 (0x559c24a72a5e)
  33: tokio_trace_core::dispatcher::with_default::h566a73fea286aece (0x559c24a5fb17)
  34: std::thread::local::LocalKey<T>::with::h38c8151ed26097a9 (0x559c24a5c876)
  35: std::thread::local::LocalKey<T>::with::h6c40aae6796ab9ad (0x559c24a5ca3e)
  36: std::thread::local::LocalKey<T>::with::h00ff5a188919a297 (0x559c24a5c6b4)
  37: tokio::runtime::threadpool::builder::Builder::build::{{closure}}::h6422ab2946b85b1b (0x559c24a60477)
  38: std::thread::local::LocalKey<T>::with::hba1f8666e05ddba1 (0x559c24a7be93)
  39: std::thread::local::LocalKey<T>::with::hd3fecc8ba3b5e401 (0x559c24a7bfce)
  40: std::sys_common::backtrace::__rust_begin_short_backtrace::h4be1364c9cc25195 (0x559c24a7adc1)
  41: std::panicking::try::do_call::hfed7f7de37a6ad19 (0x559c24a7b0fc)
  42: __rust_maybe_catch_panic (0x559c24d6743a)
             at src/libpanic_unwind/lib.rs:87
  43: core::ops::function::FnOnce::call_once{{vtable.shim}}::hd440b11de224c567 (0x559c24a74da0)
  44: call_once<(),FnBox<()>> (0x559c24d4f7cf)
             at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702
  45: call_once<(),alloc::boxed::Box<FnBox<()>>> (0x559c24d667a0)
             at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702
      start_thread
             at src/libstd/sys_common/thread.rs:14
      thread_start
             at src/libstd/sys/unix/thread.rs:80
  46: start_thread (0x7f56e28456db)
  47: __clone (0x7f56e235688f)
  48: <unknown> (0x0)

Thread 'main-tokio-4' panicked at 'Storage root must match that calculated.', /home/hammerWang/.cargo/git/checkouts/substrate-7e08433d4c370a21/277e2f9/srml/executive/src/lib.rs:325

This is a bug. Please report it at:

	https://github.com/darwinia-network/darwinia/issues/new

2019-07-08 09:32:06 Imported #62199 (0xe882…18d4)
/rustc/e305df1846a6d985315917ae0c81b74af8b4e641/src/libcore/ops/arith.rs
443
45

====================

stack backtrace:
   0: substrate_panic_handler::set::{{closure}}::hb9086efd4a6065e1 (0x559c24bd6b60)
   1: rust_panic_with_hook (0x559c24d620f9)
             at src/libstd/panicking.rs:478
   2: continue_panic_fmt (0x559c24d61b92)
             at src/libstd/panicking.rs:381
   3: rust_begin_unwind (0x559c24d61a76)
   4: panic_fmt (0x559c24d7b8cd)
             at src/libcore/panicking.rs:85
   5: core::result::unwrap_failed::h319d9c1c2f69455d (0x559c2415dcee)
   6: <C as substrate_service::components::OffchainWorker<C>>::offchain_workers::h135fa292665b489a (0x559c2416304c)
   7: <futures::stream::for_each::ForEach<S,F,U> as futures::future::Future>::poll::hdadb65f4ac19b3e8 (0x559c23f2addb)
   8: <futures::future::select::Select<A,B> as futures::future::Future>::poll::hd0691669209cf712 (0x559c23e8d27c)
   9: futures::future::chain::Chain<A,B,C>::poll::haaa25159ea68be97 (0x559c240e6a59)
  10: futures::task_impl::std::set::h0dbee74b9c229bfa (0x559c24a76df2)
  11: futures::task_impl::Spawn<T>::poll_future_notify::h472f28e6c521a66a (0x559c24a77be6)
  12: std::panicking::try::do_call::h9334a1163aea8408 (0x559c24a7b0b1)
  13: __rust_maybe_catch_panic (0x559c24d6743a)
             at src/libpanic_unwind/lib.rs:87
  14: tokio_threadpool::task::Task::run::hd8bb022254236495 (0x559c24a7b59c)
  15: tokio_threadpool::worker::Worker::run_task::h765f41a0a50bbba8 (0x559c24a73565)
  16: tokio_threadpool::worker::Worker::run::h424b95e4eec0d070 (0x559c24a72c69)
  17: tokio_trace_core::dispatcher::with_default::h566a73fea286aece (0x559c24a5fb17)
  18: std::thread::local::LocalKey<T>::with::h38c8151ed26097a9 (0x559c24a5c876)
  19: std::thread::local::LocalKey<T>::with::h6c40aae6796ab9ad (0x559c24a5ca3e)
  20: std::thread::local::LocalKey<T>::with::h00ff5a188919a297 (0x559c24a5c6b4)
  21: tokio::runtime::threadpool::builder::Builder::build::{{closure}}::h6422ab2946b85b1b (0x559c24a60477)
  22: std::thread::local::LocalKey<T>::with::hba1f8666e05ddba1 (0x559c24a7be93)
  23: std::thread::local::LocalKey<T>::with::hd3fecc8ba3b5e401 (0x559c24a7bfce)
  24: std::sys_common::backtrace::__rust_begin_short_backtrace::h4be1364c9cc25195 (0x559c24a7adc1)
  25: std::panicking::try::do_call::hfed7f7de37a6ad19 (0x559c24a7b0fc)
  26: __rust_maybe_catch_panic (0x559c24d6743a)
             at src/libpanic_unwind/lib.rs:87
  27: core::ops::function::FnOnce::call_once{{vtable.shim}}::hd440b11de224c567 (0x559c24a74da0)
  28: call_once<(),FnBox<()>> (0x559c24d4f7cf)
             at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702
  29: call_once<(),alloc::boxed::Box<FnBox<()>>> (0x559c24d667a0)
             at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702
      start_thread
             at src/libstd/sys_common/thread.rs:14
      thread_start
             at src/libstd/sys/unix/thread.rs:80
  30: start_thread (0x7f56e28456db)
  31: __clone (0x7f56e235688f)
  32: <unknown> (0x0)

Thread 'main-tokio-6' panicked at 'called `Result::unwrap()` on an `Err` value: Execution(Wasmi(Trap(Trap { kind: Unreachable })))', src/libcore/result.rs:997

This is a bug. Please report it at:

	https://github.com/darwinia-network/darwinia/issues/new

rpc err: Priority is too low

after deposit rings(10000x36), my browser console show me the error:
屏幕快照 2019-07-11 下午1 05 42
it is from rpc return. it is a transaction pool error.

Kton的reward_paid_out 重复计算问题

持有kton的奖励会被重复计入:
屏幕快照 2019-07-03 下午12 41 30
这里的balance是用户持有的所有kton,但是update_reward_paid_out方法又是一个增量方法,那么每次调用这个方法的时候,kton都会被全量计算一遍奖励,重复计入reward_paid_out。

Storage Root must match that calculated

Hash: given=674a12c831b13093c7ba142aaf10215982b48e9b4e6044c4fca3a174b6cc9b9a, expected=840d37ac7993460dc49444d30e956810594bc0986de52b3397b7a2df91939a9c

====================

stack backtrace:
   0: backtrace::backtrace::trace::h7e913c5f872392f6 (0x1066a88fe)
   1: backtrace::capture::Backtrace::new::hf2d368ac30bb766c (0x1066a7928)
   2: substrate_panic_handler::set::{{closure}}::h7a2868c4b30b3e7e (0x10665e0d1)
   3: std::panicking::rust_panic_with_hook::hddd286a9c773fc67 (0x1067eb3a1)
   4: std::panicking::begin_panic::h6efc5327ff105ea4 (0x105d06885)
   5: srml_executive::Executive<System,Block,Context,Payment,UnsignedValidator,AllModules>::execute_block::hdcc17fb300908133 (0x105d6bb1d)
   6: node_runtime::api::dispatch::hcdeb54a52821b4b6 (0x105d0c5de)
   7: std::panicking::try::do_call::h1c88e7403d8fdc8c (0x105ce0164)
   8: __rust_maybe_catch_panic (0x1067f3d7f)
   9: substrate_executor::native_executor::safe_call::h0eb320a063ec7cdc (0x105ce01f4)
  10: std::thread::local::LocalKey<T>::with::h778484bc56c0e446 (0x105ce0694)
  11: <node_executor::Executor as substrate_executor::native_executor::NativeExecutionDispatch>::dispatch::h1a3ab732946a422b (0x105ce0e26)
  12: std::thread::local::LocalKey<T>::with::h8e5e61bc274ec44a (0x105713a0a)
  13: substrate_state_machine::StateMachine<H,N,B,T,O,Exec>::execute_aux::h008930d55b66b0fa (0x105ae40b9)
  14: substrate_state_machine::StateMachine<H,N,B,T,O,Exec>::execute_call_with_native_else_wasm_strategy::h50a09b11f13b6fe3 (0x105b418a4)
  15: substrate_state_machine::StateMachine<H,N,B,T,O,Exec>::execute_using_consensus_failure_handler::hb1a51457c3227357 (0x105b2b7c9)
  16: <substrate_client::call_executor::LocalCallExecutor<B,E> as substrate_client::call_executor::CallExecutor<Block,substrate_primitives::hasher::blake2::Blake2Hasher>>::call_at_state::h62b01d086a646524 (0x10576e5c0)
  17: <substrate_client::client::Client<B,E,Block,RA> as substrate_consensus_common::block_import::BlockImport<Block>>::import_block::h9b5457ebf0ad6b4c (0x105c6e9de)
  18: <substrate_finality_grandpa::import::GrandpaBlockImport<B,E,Block,RA,PRA,SC> as substrate_consensus_common::block_import::BlockImport<Block>>::import_block::h4fe0a4283ff2e215 (0x105a344aa)
  19: substrate_consensus_common::import_queue::BlockImportWorker<B,V>::import_a_batch_of_blocks::h84f21ce52d84f867 (0x1059ba5ff)
  20: <futures::future::poll_fn::PollFn<F> as futures::future::Future>::poll::h5f0874afda9bc112 (0x1057a6ce8)
  21: futures::task_impl::std::set::h8e00a5e14c2bf7b2 (0x1064b5ddd)
  22: std::panicking::try::do_call::h8fb69415e413b820 (0x1064b57d6)
  23: __rust_maybe_catch_panic (0x1067f3d7f)
  24: tokio_threadpool::task::Task::run::he63011aa400578f8 (0x1064b2eac)
  25: tokio_threadpool::worker::Worker::run_task::h6654906b07894b77 (0x1064ac9a2)
  26: tokio_threadpool::worker::Worker::run::h3c4600451d2c4aa3 (0x1064ac0ca)
  27: tokio_trace_core::dispatcher::with_default::hf8de731888f9cc0c (0x1064940f9)
  28: std::thread::local::LocalKey<T>::with::hc337dd64243c3c7a (0x1064978a5)
  29: std::thread::local::LocalKey<T>::with::h2450c8bb60fa6812 (0x10649756d)
  30: std::thread::local::LocalKey<T>::with::h71837bf974b480ab (0x1064976f1)
  31: tokio::runtime::threadpool::builder::Builder::build::{{closure}}::h06d9d9e2d7906c45 (0x106493f99)
  32: std::thread::local::LocalKey<T>::with::h65b4c4b6bfc69fff (0x1064b68a9)
  33: std::thread::local::LocalKey<T>::with::h89c1d75ed49d0597 (0x1064b69da)
  34: std::sys_common::backtrace::__rust_begin_short_backtrace::h6e5678a75db3ff67 (0x1064ae4d2)
  35: std::panicking::try::do_call::hd9b885f7d00fc6a6 (0x1064b5840)
  36: __rust_maybe_catch_panic (0x1067f3d7f)
  37: core::ops::function::FnOnce::call_once{{vtable.shim}}::ha78ecad86552d137 (0x1064af0c7)
  38: <alloc::boxed::Box<F> as core::ops::function::FnOnce<A>>::call_once::h184cdfe19b856bb1 (0x1067d757e)
  39: std::sys::unix::thread::Thread::new::thread_start::he418bbb505b1b1b9 (0x1067f328e)
  40: _pthread_body (0x7fff59b3e2eb)
  41: _pthread_start (0x7fff59b41249)

Thread 'main-tokio-5' panicked at 'Storage root must match that calculated.', /Users/hammer/.cargo/git/checkouts/substrate-7e08433d4c370a21/5bf5e8f/srml/executive/src/lib.rs:325

Test fail in srml/staking

error: cannot infer an appropriate lifetime
  --> /Users/denny/.cargo/registry/src/github.com-1ecc6299db9ec823/soketto-0.2.2/src/handshake.rs:95:25
   |
94 |     pub fn drain_extensions(&mut self) -> impl Iterator<Item = Box<dyn Extension + Send>> {
   |                                           ----------------------------------------------- this return type evaluates to the `'static` lifetime...
95 |         self.extensions.drain()
   |         --------------- ^^^^^
   |         |
   |         ...but this borrow...
   |
note: ...can't outlive the anonymous lifetime #1 defined on the method body at 94:5
  --> /Users/denny/.cargo/registry/src/github.com-1ecc6299db9ec823/soketto-0.2.2/src/handshake.rs:94:5
   |
94 | /     pub fn drain_extensions(&mut self) -> impl Iterator<Item = Box<dyn Extension + Send>> {
95 | |         self.extensions.drain()
96 | |     }
   | |_____^
help: you can add a constraint to the return type to make it last less than `'static` and match the anonymous lifetime #1 defined on the method body at 94:5
   |
94 |     pub fn drain_extensions(&mut self) -> impl Iterator<Item = Box<dyn Extension + Send>> + '_ {
   |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: cannot infer an appropriate lifetime
   --> /Users/denny/.cargo/registry/src/github.com-1ecc6299db9ec823/soketto-0.2.2/src/handshake.rs:284:25
    |
283 |     pub fn drain_extensions(&mut self) -> impl Iterator<Item = Box<dyn Extension + Send>> {
    |                                           ----------------------------------------------- this return type evaluates to the `'static` lifetime...
284 |         self.extensions.drain()
    |         --------------- ^^^^^
    |         |
    |         ...but this borrow...
    |
note: ...can't outlive the anonymous lifetime #1 defined on the method body at 283:5
   --> /Users/denny/.cargo/registry/src/github.com-1ecc6299db9ec823/soketto-0.2.2/src/handshake.rs:283:5
    |
283 | /     pub fn drain_extensions(&mut self) -> impl Iterator<Item = Box<dyn Extension + Send>> {
284 | |         self.extensions.drain()
285 | |     }
    | |_____^
help: you can add a constraint to the return type to make it last less than `'static` and match the anonymous lifetime #1 defined on the method body at 283:5
    |
283 |     pub fn drain_extensions(&mut self) -> impl Iterator<Item = Box<dyn Extension + Send>> + '_ {
    |                                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: aborting due to 2 previous errors

error: could not compile `soketto`.
warning: build failed, waiting for other jobs to finish...
error: build failed

Centos 7.6环境下,运行不了

[root@iZuf69jkykx0eidbavbshmZ ~]# darwinia --help
darwinia: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by darwinia)
darwinia: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by darwinia)
darwinia: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by darwinia)

c++的版本不对。

[root@iZuf69jkykx0eidbavbshmZ ~]# yum install libstdc++
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Package libstdc++-4.8.5-36.el7_6.2.x86_64 already installed and latest version
Nothing to do

Slash Review: is punishment too heavy

Description

if a validator's unstake_threshold is n, the global offline_grace is g, so when a validator has been offline for n+g times, it will be slashed 2**(n+g)* base_ratio, up to 100%.

considered the base_ratio is now 1/1000, it is easy to be slashed 100%.

Solution:

  1. lower the base_ratio
  2. optimize the slashing algorithm

Can not load module page in Extrinsic in web wallet.

react.66d4c7a5.js:37934 Uncaught TypeError: Cannot read property 'section' of undefined
    at InputStorage.onKeyChange (main.72c3ea41.js:101922)
    at Dropdown.onChange (main.72c3ea41.js:98932)
    at Dropdown.componentDidUpdate (main.72c3ea41.js:98961)
    at commitLifeCycles (react.66d4c7a5.js:34971)
    at commitAllLifeCycles (react.66d4c7a5.js:36358)
    at HTMLUnknownElement.callCallback (react.66d4c7a5.js:17771)
    at Object.invokeGuardedCallbackDev (react.66d4c7a5.js:17821)
    at invokeGuardedCallback (react.66d4c7a5.js:17878)
    at commitRoot (react.66d4c7a5.js:36570)
    at react.66d4c7a5.js:38040

RewardPaidOut疑似有双重意义

第一重:记录用户持有kton的奖励

用户获得了kton后,系统根据这些新的kton奖励用户ring,但是只是记下账,记在reward_paid_out,这个时候并没有将奖励实际打到用户账户

第二重:

用户claim reward时,用于记录 实际打币数量

这两者似有冲突,其中之一的逻辑是错误的。

希望加一个可配置的警报功能

节点目前会出现莫名其妙会挂掉的情况,希望能加一个警报功能通知重新启动,并附带错误日志。虽然也能自动重启,但是需要找到问题所在并解决

Trilobita Testnet node crash.

          at src/libcore/panicking.rs:85
   5: core::result::unwrap_failed::h319d9c1c2f69455d (0x55a73fdb5cee)
   6: <C as substrate_service::components::OffchainWorker<C>>::offchain_workers::h135fa292665b489a (0x55a73fdbb04c)
   7: <futures::stream::for_each::ForEach<S,F,U> as futures::future::Future>::poll::hdadb65f4ac19b3e8 (0x55a73fb82ddb)
   8: <futures::future::select::Select<A,B> as futures::future::Future>::poll::hd0691669209cf712 (0x55a73fae527c)
   9: futures::future::chain::Chain<A,B,C>::poll::haaa25159ea68be97 (0x55a73fd3ea59)
  10: futures::task_impl::std::set::h0dbee74b9c229bfa (0x55a7406cedf2)
  11: futures::task_impl::Spawn<T>::poll_future_notify::h472f28e6c521a66a (0x55a7406cfbe6)
  12: std::panicking::try::do_call::h9334a1163aea8408 (0x55a7406d30b1)
  13: __rust_maybe_catch_panic (0x55a7409bf43a)
             at src/libpanic_unwind/lib.rs:87
  14: tokio_threadpool::task::Task::run::hd8bb022254236495 (0x55a7406d359c)
  15: tokio_threadpool::worker::Worker::run_task::h765f41a0a50bbba8 (0x55a7406cb565)
  16: tokio_threadpool::worker::Worker::run::h424b95e4eec0d070 (0x55a7406cac69)
  17: tokio_trace_core::dispatcher::with_default::h566a73fea286aece (0x55a7406b7b17)
  18: std::thread::local::LocalKey<T>::with::h38c8151ed26097a9 (0x55a7406b4876)
  19: std::thread::local::LocalKey<T>::with::h6c40aae6796ab9ad (0x55a7406b4a3e)
  20: std::thread::local::LocalKey<T>::with::h00ff5a188919a297 (0x55a7406b46b4)
  21: tokio::runtime::threadpool::builder::Builder::build::{{closure}}::h6422ab2946b85b1b (0x55a7406b8477)
  22: std::thread::local::LocalKey<T>::with::hba1f8666e05ddba1 (0x55a7406d3e93)
  23: std::thread::local::LocalKey<T>::with::hd3fecc8ba3b5e401 (0x55a7406d3fce)
  24: std::sys_common::backtrace::__rust_begin_short_backtrace::h4be1364c9cc25195 (0x55a7406d2dc1)
  25: std::panicking::try::do_call::hfed7f7de37a6ad19 (0x55a7406d30fc)
  26: __rust_maybe_catch_panic (0x55a7409bf43a)
             at src/libpanic_unwind/lib.rs:87
  27: core::ops::function::FnOnce::call_once{{vtable.shim}}::hd440b11de224c567 (0x55a7406ccda0)
  28: call_once<(),FnBox<()>> (0x55a7409a77cf)
             at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702
  29: call_once<(),alloc::boxed::Box<FnBox<()>>> (0x55a7409be7a0)
             at /rustc/3c235d5600393dfe6c36eeed34042efad8d4f26e/src/liballoc/boxed.rs:702
      start_thread
             at src/libstd/sys_common/thread.rs:14
      thread_start
             at src/libstd/sys/unix/thread.rs:80
  30: start_thread (0x7f58061eb6db)
  31: __clone (0x7f5805cfc88f)
  32: <unknown> (0x0)

Thread 'main-tokio-1' panicked at 'called `Result::unwrap()` on an `Err` value: Execution(Wasmi(Trap(Trap { kind: MemoryAccessOutOfBounds })))', src/libcore/result.rs:997

This is a bug. Please report it at:

        https://github.com/darwinia-network/darwinia/issues/new

record: ugly hacking in staking

Problem Discription

use 10**9 instead of some constant like COIN to represent the unit of RING. Really ugly hacking.

constant COIN is defined in node_runtime, it can not be used in staking because of cycling dependency.

Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"

2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"
2019-07-02 11:06:11 Rejected log entry because queue is full for "/dns4/telemetry.polkadot.io/tcp/1024/ws"

Failed to stake

According to 3-2 STAKING, I stake the stash account ACC02.

image
and the controller account is 5G3n3xxxxxxx, and that means I stake successfully.

image
But the bonded amount is 0 here. So I stake unsuccessfully?

When catches events, happened error.

my apps node modules polkadot-js version is 0.82.0-beta.34

I happened error below.

RPC-CORE: subscribeStorage (keys: Vec<StorageKey>): StorageChangeSet:: createType(Vec<EventRecord>):: U8a: failed on 'EventRecord_0_76':: U8a: failed on 'EventRecord_0_76':: U8a: failed on 'Phase':: U8a: failed on 'Event':: Unable to decode 0x0008

Unable to decode storage system.events: createType(Vec<EventRecord>):: U8a: failed on 'EventRecord_0_76':: U8a: failed on 'EventRecord_0_76':: U8a: failed on 'Phase':: U8a: failed on 'Event':: Unable to decode 0x0008

These issues are caused by substrate nodeSpecs version is less then 77, polkadot.js will handle eventRecord by <EventRecord_0_76>

const types: Array<Compat> = [
  {
    nodeSpecs: [
      ['node', 77],
      ['polkadot', 1000],
      ['node-template', ANY_VERSION]
    ],
    types: {
      'EventRecord': EventRecord_0_76
    }
  }
];

export default function injectNodeCompat ({ specName, specVersion }: RuntimeVersion): void {
  types
    .filter(({ nodeSpecs }) =>
      nodeSpecs.some(([name, version]) =>
        specName.eq(name) &&
        specVersion.ltn(version)
      )
    )
    .forEach(({ types }) => {
      getTypeRegistry().register(types);
    });
}

Develop branch client get panic

0|darwinia-alice | 2019-11-21 01:36 +00:00: 2019-11-21 01:36:12 Pre-sealed block for proposal at 253968. Hash now 0x9a706423dc49df5316c183758389fbed1871e74223d44a01d626e3eba15fc5b0, previously 0xdad40453a38eab2c365844cd6893fb6be23b962c38e6bb06b9b1a1ca8c4b63eb.
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00: ====================
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00: Version:
0|darwinia-alice | 2019-11-21 01:36 +00:00: 0.3.2-0c88d53-x86_64-linux-gnu
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00: stack backtrace:
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00: 0
0|darwinia-alice | 2019-11-21 01:36 +00:00: :
0|darwinia-alice | 2019-11-21 01:36 +00:00: substrate_panic_handler::set::{{closure}}
0|darwinia-alice | 2019-11-21 01:36 +00:00: 1: std::panicking::rust_panic_with_hook
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libstd/panicking.rs:477
0|darwinia-alice | 2019-11-21 01:36 +00:00: 2: std::panicking::continue_panic_fmt
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libstd/panicking.rs:380
0|darwinia-alice | 2019-11-21 01:36 +00:00: 3: std::panicking::begin_panic_fmt
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libstd/panicking.rs:335
0|darwinia-alice | 2019-11-21 01:36 +00:00: 4: node_runtime::api::dispatch
0|darwinia-alice | 2019-11-21 01:36 +00:00: 5: std::panicking::try::do_call
0|darwinia-alice | 2019-11-21 01:36 +00:00: 6: __rust_maybe_catch_panic
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libpanic_unwind/lib.rs:80
0|darwinia-alice | 2019-11-21 01:36 +00:00: 7: substrate_executor::native_executor::safe_call
0|darwinia-alice | 2019-11-21 01:36 +00:00: 8: std::thread::local::LocalKey::with
0|darwinia-alice | 2019-11-21 01:36 +00:00: 9: <node_executor::Executor as substrate_executor::native_executor::NativeExecutionDispatch>::dispatch
0|darwinia-alice | 2019-11-21 01:36 +00:00: 10: std::thread::local::LocalKey::with
0|darwinia-alice | 2019-11-21 01:36 +00:00: 11: substrate_state_machine::StateMachine<B,H,N,T,Exec>::execute_aux
0|darwinia-alice | 2019-11-21 01:36 +00:00: 12: substrate_state_machine::StateMachine<B,H,N,T,Exec>::execute_call_with_native_else_wasm_strategy
0|darwinia-alice | 2019-11-21 01:36 +00:00: 13: substrate_state_machine::StateMachine<B,H,N,T,Exec>::execute_using_consensus_failure_handler
0|darwinia-alice | 2019-11-21 01:36 +00:00: 14: <substrate_client::call_executor::LocalCallExecutor<B,E> as substrate_client::call_executor::CallExecutor<Block,substrate_primitives::hasher::blake2::Blake2Hasher>>::call_at_state
0|darwinia-alice | 2019-11-21 01:36 +00:00: Block,RA> as substrate_consensus_common::block_import::BlockImport>::import_block
0|darwinia-alice | 2019-11-21 01:36 +00:00: 16: <substrate_finality_grandpa::import::GrandpaBlockImport<B,E,Block,RA,SC> as substrate_consensus_common::block_import::BlockImport>::import_block
0|darwinia-alice | 2019-11-21 01:36 +00:00: 17: <substrate_consensus_babe::BabeBlockImport<B,E,Block,I,RA,PRA> as substrate_consensus_common::block_import::BlockImport>::import_block
0|darwinia-alice | 2019-11-21 01:36 +00:00: 18: core::task::poll::Poll::map
0|darwinia-alice | 2019-11-21 01:36 +00:00: 19: <futures_util::try_future::map_ok::MapOk<Fut,F> as core::future::future::Future>::poll
0|darwinia-alice | 2019-11-21 01:36 +00:00: 20: futures_util::try_future::try_chain::TryChain<Fut1,Fut2,Data>::poll
0|darwinia-alice | 2019-11-21 01:36 +00:00: 21: <futures_util::future::then::Then<Fut1,Fut2,F> as core::future::future::Future>::poll
0|darwinia-alice | 2019-11-21 01:36 +00:00: 22: <futures_util::compat::compat03as01::Compat as futures::future::Future>::poll
0|darwinia-alice | 2019-11-21 01:36 +00:00: 23: <futures::future::map_err::MapErr<A,F> as futures::future::Future>::poll
0|darwinia-alice | 2019-11-21 01:36 +00:00: 24: <futures::future::select::Select<A,B> as futures::future::Future>::poll
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00: 25: futures::future::chain::Chain<A,B,C>::poll
0|darwinia-alice | 2019-11-21 01:36 +00:00: 26: futures::task_impl::std::set
0|darwinia-alice | 2019-11-21 01:36 +00:00: 27: std::panicking::try::do_call
0|darwinia-alice | 2019-11-21 01:36 +00:00: 28: __rust_maybe_catch_panic
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libpanic_unwind/lib.rs:80
0|darwinia-alice | 2019-11-21 01:36 +00:00: 29: tokio_threadpool::task::Task::run
0|darwinia-alice | 2019-11-21 01:36 +00:00: 30: tokio_threadpool::worker::Worker::run_task
0|darwinia-alice | 2019-11-21 01:36 +00:00: 31: tokio_threadpool::worker::Worker::run
0|darwinia-alice | 2019-11-21 01:36 +00:00: 32: std::thread::local::LocalKey::with
0|darwinia-alice | 2019-11-21 01:36 +00:00: 33: std::thread::local::LocalKey::with
0|darwinia-alice | 2019-11-21 01:36 +00:00: 34: std::thread::local::LocalKey::with
0|darwinia-alice | 2019-11-21 01:36 +00:00: 35: tokio::runtime::threadpool::builder::Builder::build::{{closure}}
0|darwinia-alice | 2019-11-21 01:36 +00:00: 36: std::thread::local::LocalKey::with
0|darwinia-alice | 2019-11-21 01:36 +00:00: 37: std::thread::local::LocalKey::with
0|darwinia-alice | 2019-11-21 01:36 +00:00: 38: std::sys_common::backtrace::__rust_begin_short_backtrace
0|darwinia-alice | 2019-11-21 01:36 +00:00: 39: std::panicking::try::do_call
0|darwinia-alice | 2019-11-21 01:36 +00:00: 40: __rust_maybe_catch_panic
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libpanic_unwind/lib.rs:80
0|darwinia-alice | 2019-11-21 01:36 +00:00: 41: core::ops::function::FnOnce::call_once{{vtable.shim}}
0|darwinia-alice | 2019-11-21 01:36 +00:00: A>>::call_once
0|darwinia-alice | 2019-11-21 01:36 +00:00: at /rustc/6ef275e6c3cb1384ec78128eceeb4963ff788dca/src/liballoc/boxed.rs:922
0|darwinia-alice | 2019-11-21 01:36 +00:00: 43: <alloc::boxed::Box as core::ops::function::FnOnce>::call_once
0|darwinia-alice | 2019-11-21 01:36 +00:00: at /rustc/6ef275e6c3cb1384ec78128eceeb4963ff788dca/src/liballoc/boxed.rs:922
0|darwinia-alice | 2019-11-21 01:36 +00:00: std::sys_common::thread::start_thread
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libstd/sys_common/thread.rs:13
0|darwinia-alice | 2019-11-21 01:36 +00:00: std::sys::unix::thread::Thread::new::thread_start
0|darwinia-alice | 2019-11-21 01:36 +00:00: at src/libstd/sys/unix/thread.rs:79
0|darwinia-alice | 2019-11-21 01:36 +00:00: 44: start_thread
0|darwinia-alice | 2019-11-21 01:36 +00:00: 45: __clone
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00:
0|darwinia-alice | 2019-11-21 01:36 +00:00: Thread 'main-tokio-1' panicked at 'Bad input data provided to execute_block: Error decoding field Block.extrinsics', node/runtime/src/lib.rs:484

节点地址与session key绑定丢失

第一开始部署时候 账号5FFRMCGBkuBv4S31nVJZ6HatHe3egNh6qhVwCCt6BGCTN3xy绑定了一个session-key为5DMCtHLA6kQdbThbrg7ofREDtmFseDXfbCZuPn8tAAqBP491
在某时间,关联丢失,导致无法出块,查验后账号绑定的session-key变空
尝试再次绑定这个session-key,均失败
重新生成一个session-key 即可绑定成功,新的session-key为5GiQ6KVeCZCRwwLK8QyrPvyqtw6BPzBLwiujRrfVk17U7d8B

问题出现流程:
将controller账号的余额全部转出,session-key绑定即丢失。

Failed testcase: tests::inflation_should_be_correct

test tests::time_deposit_ring_unbond_and_withdraw_should_work ... ok
test tests::inflation_should_be_correct ... FAILED
test tests::test_inflation ... ok

failures:

---- tests::inflation_should_be_correct stdout ----
thread 'tests::inflation_should_be_correct' panicked at 'assertion failed: `(left == right)`
  left: `8800000000000000`,
 right: `8000000000000000`', srml/staking/src/tests.rs:328:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.


failures:
    tests::inflation_should_be_correct

test result: FAILED. 10 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out

error: test failed, to rerun pass '-p evo-staking --lib'

kton deposit/deposit extra 失败

QQ20190702-001
QQ20190702-002
QQ20190702-003
QQ20190702-004
以上为失败的操作过程截图
之前第一次操作成功,之后连续失败,多次操作中,有一次50万12个月成功,之后再为成功兑换kton。

节点feilun提交

Branch 'develop' compile error

cargo build fail with this error:

error: proc-macro derive panicked
  --> /Users/wuminzhe/.cargo/registry/src/github.com-1ecc6299db9ec823/hex-literal-0.1.4/src/lib.rs:38:1
   |
38 | / proc_macro_expr_decl! {
39 | |     /// Macro for converting hex string to byte array at compile time
40 | |     hex! => hex_impl
41 | | }
   | |_^
   |
   = help: message: assertion failed: `(left == right)`
             left: `Some("#[allow(unused,")`,
            right: `Some("#[allow(unused")`

Time record when depositing RING in BlockNumber or Timestamp

Bug description

For now, time in depositing ring is measured in seconds(timestamp).
But when it is set in genesis config, it comes with a problem that timestamp in genesis status is 0.
Even if 'genesis' users have locked ring for 3 years, he/she immediately can withdraw the 'locked' ring without any punishment.

How to fix

It can be fixed in 2 ways:

  1. time is measured in block number rather than in timestamp;
  2. no depositing in genesis config. It depends on user behavior design.

Stop bancor on Ethereum and Tron.

  1. For the liquidation solution, using uniswap instead.
  2. The current swap can directly replaced by new design which is burn on old chain and mint on new chain. The old Atlantis Bridge and its fees will be deprecated.
  3. Setup testnet contracts for testing and intergrating with Darwinia POC-2 testnet.

Proposals for kton module code refactoring

After understanding the kton module code, I think it involves too many responsibilities and can be separated more clearly:

  1. move lock rings logic to balances module, and then
  2. increase kton balance in kton module through rings locked event.
  3. move reward logic to a separate module maybe named "rewarding". (dividend-sharing logic here)
  4. after kton balance changed, notify rewarding module to do reward.
  5. SystemCurrency trait? I think this is not a general behavior.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.