| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
A node is now quailified only if it has no pending fine and staked >=
minstake.
|
|
|
|
|
|
|
|
| |
* vendor: sync to latest core
* core: merge notarySet and dkgSet
* dex: optimize network traffic for finalized block
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Since a qualified node might fail stopped, we need to remove them from
qualified nodes to maintain network integrity. We do this by inspect the
previous round to see if there are dead nodes. A dead node is a notary
set node that does not propose any block in the previous round. We
disqualify them by fining them so their staked value is 1 wei below
minStake. This make them unqualified for being notary set in the follow
on rounds.
|
| |
|
| |
|
|
|
|
| |
Add two maps to check the uniqueness of DKGMasterPublicKey and DKGComplaints to
prevent malicious actors from spamming it.
|
| |
|
|
|
|
|
|
|
|
|
| |
* dex: implement recovery mechanism
The DEXON recovery protocol allows us to use the Ethereum blockchain as a
fallback consensus chain to coordinate recovery.
* fix
|
| |
|
| |
|
|
|
|
|
| |
Since the VM might be called from different source (downloader, RPC,
etc.). We need to make the call state separate. Modify the calling
sequence so a new oracle contract instance is used on each run.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current delegation mechanism are prone to unstaking attack. i.e. a
malicious attacker could unstake a small amount from a lot of node it
staked before and make them unqualified, which leads to potential
failure of the network.
Since DEXON does not use consensus like DPoS, node is required to have
at least MinStake in order to become a node. Voting mechanism is not
required in our system since qualified node does not depends on the
number of votes. Instead of managing the delegation mechanism in
governance contract, we should let the owner manage the delegation and
reward distribution mechanism on their own.
|
| |
|
|
|
|
|
|
| |
There are two keys in the system: one is the owner's key which is used
for stake / unstake. The other is the node key which is used for DKG
related operations. We need to allow them to be different so fund
renmains safe even if the the node key is lost.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
* core/vm: update abi
* core/vm: add MinGasPrice to gov
* params: Add MinGasPrice to Config
* dex: SuggestPrice from Governance
* test: add minGasPrice to genesis.json
* core: check underpriced tx
* dex: verify with gas price
|
|
|
|
|
|
| |
* change default sync_core.sh
* vendor: sync to latest core
* core: Remove K, Phi and NumChain
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* vm: Update gov abi
* vm: Add DKGResetCount to state helper
* vm: add getter
* vm: Add DKGReset event
* vm: Add resetDKG method
* vm: check resetDKG criteria
* vm: Add new CRS
* vm: add helper pop2DByteArray
* vm: emit event
* vm: Add CoreMock to GovernanceContract
* vm: bug fix
* add test for resetDKG
* vm: Add test
* fix test
* Modify mock interface
|
|
|