Commit graph

504 commits

Author SHA1 Message Date
Daniel Liu
01e1728a94 all: add support for EIP-2718, EIP-2930 transactions (#21502) 2024-05-14 23:15:35 +08:00
Wanwiset Peerapatanapokin
2bbecdcbbc
revert https://github.com/XinFinOrg/XDPoSChain/pull/497 behavior for v1 engine (#531) 2024-05-13 19:26:26 +08:00
Daniel Liu
ec50ca36d9 core, eth, trie: use common/prque (#17508) 2024-05-09 18:38:27 +08:00
Wanwiset Peerapatanapokin
3fe54e28d3
remove uncle block handling (#523) 2024-04-23 09:44:49 +04:00
Liam
5d4ea760d5
revert rename change as change db field name and stops block chain reading from db (#517) 2024-04-08 20:40:20 +08:00
wgr523
c16bd66a8d
Merge pull request #498 from XinFinOrg/ppx-01
PPX-01 add verification of vote signer belonging to masternodes
2024-04-01 20:48:16 +08:00
Liam
d76a573cf2
PPX-01 rename NextEpochMasterNodes to NextEpochCandidates (#510) 2024-03-31 07:27:13 +11:00
Wanwiset Peerapatanapokin
77390d30ce
consensus/clique: add some missing checks (#22836) and updated to latest go-eth code (#474) 2024-03-26 13:22:24 +04:00
Banana-J
816dce9527
drop peer if received bad block data which does not include the validator field (#494)
Co-authored-by: wjrjerome <wjrjerome@babylonchain.io>
2024-03-23 09:18:21 +11:00
Gary
04c3f483b8 fix: add verification of vote signer belonging to masternodes 2024-03-19 20:40:00 +08:00
Banana-J
3051b2de41
use rlock instead of lock in v1 consensus engine (#483)
Co-authored-by: wjrjerome <wjrjerome@babylonchain.io>
2024-03-10 09:51:05 +11:00
Banana-J
c7cb63dd09
fix: error handling on x.getEpochSwitchInfo in sendTimeout should return error (#444)
Co-authored-by: wjrjerome <wjrjerome@babylonchain.io>
2024-03-09 16:25:47 +11:00
Banana-J
07d40a0038
fix: add lock for haserror variable in timeout.go (#443)
Co-authored-by: wjrjerome <wjrjerome@babylonchain.io>
2024-03-04 22:05:19 +11:00
Banana-J
e324d7d18f
fix: race condition of x.signer in v1 consensus (#445)
Co-authored-by: wjrjerome <wjrjerome@babylonchain.io>
2024-03-03 22:27:01 +11:00
Banana-J
a54a645cda
fix: always check for error value and return nil, err where possible (#426)
Co-authored-by: wjrjerome <wjrjerome@babylonchain.io>
2024-02-11 20:32:24 +11:00
Liam
54b254e25c
lower log level for pretty log (#420)
Co-authored-by: Liam Lai <liam.lai@datameshgroup.com.au>
2024-02-11 20:27:37 +11:00
Banana-J
2504961a33
fix: replace all time.after with the time.newtimer (#400) 2024-01-27 21:01:24 +11:00
Wanwiset Peerapatanapokin
aaa246f60e
PDF-01 (#397)
* replace deprecated ioutil lib calls

* fix for FileInfo type required

* fix for ioutil.Discard

* fix .Discard

* fix for go-bindata generated files
2024-01-19 15:05:03 +04:00
Liam Lai
4446931e9e change vote log level 2023-12-29 22:49:52 +11:00
Jianrong
8e1f71e86e Fix the typo missied to missed 2023-12-28 23:03:53 +11:00
Jianrong
e83c0a0954 Add tests to cover the new GetMissiedRoundsInEpochByBlockNum API 2023-12-28 17:37:30 +11:00
Jianrong
6740545358 change the API to be block num based 2023-12-28 15:13:05 +11:00
Jianrong
e28b550a24 Add a new API to help debug when there are missed rounds 2023-12-28 15:13:05 +11:00
Liam
c7a42fd7c9
resolve sync issue by passing right round number (#384) 2023-12-27 22:14:13 +11:00
Banana-J
e30d909643
Add config into network information API (#381) 2023-12-19 19:02:32 +11:00
Liam
47bfdf7635
Move masternode in v2 config (#372)
* move masternode in v2 config

* update number to meet 7 vote for current setup

* add test

* update all failed test

* fix test

* remove comment

* remove comment

* fix test
2023-11-29 11:11:58 +11:00
Liam
b4bd070837
Improve log (#368)
* improve log
2023-11-26 22:04:08 +11:00
Liam Lai
824d7b232f resolve conflict 2023-11-20 23:53:49 +11:00
Liam
c215316744
Make masternode dynamic (#356)
* make masternode dynamic

* fix all the tests

* remove cmt

* fix test again
2023-11-16 23:59:19 +11:00
Liam
84994df759
Merge pull request #351 from XinFinOrg/bump-golang-1.21
Bump golang 1.21
2023-11-07 10:35:42 +11:00
Liam
24d02fe2b4
check v2 switch block is epoch number (#342)
* check v2 switch block is epoch number

* revert sync pr

* add test

* make default block number valid

* fix log

* fix test
2023-10-30 19:03:34 +11:00
Daniel Liu
0b06bc3a5d not compare strings in func CompareSignersLists 2023-10-23 22:51:06 +08:00
Liam
45c1518ea1
Devnet fix on ci improvement (#314)
* fix ci

* update pr template
2023-08-21 10:07:00 +10:00
Liam
938db0afcc
Bug Fix: V2 getSigner API (#313) 2023-08-20 10:56:08 +10:00
Liam Lai
69c38ac490 fix broken the tests and one bug 2023-08-02 09:27:46 +10:00
Wanwiset Peerapatanapokin
a959bea092 add standbynodes in GetMasternodesByNumber similar way to subnet 2023-07-21 10:07:05 +04:00
Banana-J
2c1aba814e
add timestamp in v2 block response (#290) 2023-07-15 11:33:36 +10:00
Liam
96f28b8bc6
enhance api for subnet project (#289) 2023-07-14 20:04:01 +10:00
wgr523
d578e092cd
stop reorg at committed blocks (#276)
This PR makes committed blocks non-reorg-able inside `Blockchain` struct. This ensures V2 consensus safety property in the aspect of blockchain head: committed blocks' state will not be reorg and users will always see committed blocks (or their child blocks) as current head of the blockchain.

* stop reorg at committed blocks

* fix tests

* fix tests
2023-06-08 01:16:13 +08:00
Liam
2df16bbd37
merge waitPeriod into minePeriod (#274)
* merge waitperiod into mindePeriod

* merge waitperiod into mindePeriod
2023-05-31 23:40:50 +10:00
Liam
706292e1a1
Add debug msg and reset devnet config (#270)
* add debug msg

* remove all devnet config since we need to reset devnet
2023-05-24 14:52:58 +10:00
wgr523
cd74061ac2
Extend masternode candidate (#261)
* V2 truncate MaxMasternodes from candidates after penalty,
V1 same as before

TestUpdateMultipleMasterNodes: test V2, in snapshot we have all candidates, but at epoch switch, we pick MaxMasternodes

* code looks better
2023-05-16 21:43:56 +08:00
Liam
153f8d296d
Fix API penalty bug and add more info in api (#262)
* fix api bug

* remove cmd
2023-05-16 21:23:02 +10:00
Liam
7b657f0c4e
API: getMasternode and getPoolStatus (#258)
* API: getMasternode and getPoolStatus

* fix test
2023-05-01 23:01:39 +10:00
Liam
9552500335
xdpos API getV2Block (#227) 2023-03-05 02:17:46 +08:00
Liam Lai
814a276ae3 remove test files 2023-02-23 14:22:59 +08:00
Liam Lai
65ffdcd0a9 fix test 2023-02-23 14:22:30 +08:00
Jerome
1430b74a98
Add more log info during updateM1 and change log level on devnet to 3 (#223) 2023-01-22 22:53:22 +11:00
Jerome
2ca1d0461d
Fix issue when resync is not getting the right consensus config values (#221)
* Fix issue when resync is not getting the right consensus config values

* add test and fix log bug

* fix test

* delete temp file

Co-authored-by: Liam Lai <liam.icheng.lai@gmail.com>
2023-01-17 21:34:42 +08:00
Liam
c4f9a552e5
Multi config bug fix (#216)
* refactor multi config
remove pool cleaner
correct message and log level
2022-12-17 20:23:46 +08:00
Liam
6ffbd3e141
Xin 259 support multi v2 config (#210)
* update timeout period and waittime

* remove wrong comment

* update config for preparing test
2022-12-06 20:08:56 +08:00
Liam
f9c0c40515
change devnet switch block for large scale test (#205)
* change switch block

* use mainnet masternode

* update mining and timeout time

* add timer on round number

* remove bug code
2022-11-12 12:19:28 +08:00
Liam
a75c315eb5
fix penalty calculation bug (#189) 2022-10-09 14:06:04 +08:00
Liam
2b3e059abf
xin-244 re-snyc blocks from v1 to v2 (#186)
* xin-244 re-snyc blocks from v1 to v2

* remove log

* correct log

* constant value

* remove comment
2022-10-04 23:33:13 +08:00
Liam
dad7eff036
Xin 231 sync issues - too far messages should omit and skip to process (#177)
* omit too far v2 messages

* update error msg

* improve log

* fix test

* remove useless file
2022-09-05 10:38:45 +08:00
Jerome
c710bd98a5
Xin-200 Vote Equivocation (#111) (#172)
* Xin-200 Vote Equivocation (#111)

* add vote same round detection

add test for vote same round detect

finish process equivocate (not finish report)

* finish vote equivocation report, refactor code (vote -> forensics)

* finish process equivocate and report, and test

* add return err

Co-authored-by: wgr523 <wgr523@gmail.com>
2022-08-13 11:50:56 +05:30
Jerome
4eea723717
Add API to get latest committed blockInfo, also send it via 'block' message type to stats server (#113) 2022-07-16 16:14:36 +10:00
Liam
833f70bdb7
xin-203 fix wrong config hash and update v2 params on mainnet (#109)
* fix wrong config hash and update v2 params on mainnet

* update config and all the test

* hard code binary into code

* add default config for testing

* update test timestamp
2022-07-12 16:56:55 +02:00
Liam
90395f5423
add initial in verifyheader (#112) 2022-07-11 17:32:22 +02:00
Liam
e55fca6703
log improvement and some refactor (#110) 2022-07-10 01:11:28 +02:00
Jerome
cfb5c6ce39
pass the forensics Id at root level (#107) 2022-07-05 22:01:36 +10:00
Jerome
533fe250db
forensics shall send unique id (#106) 2022-07-05 00:31:09 +02:00
Jerome
86ec908091
add DivergingBlockNumber in forensics report (#105) 2022-06-30 15:07:09 +02:00
Jerome
3ebaea1945
update forensics proof data structure to accomedate vote type (#104)
* update forensics proof data structure to accomedate vote type

* refactor log

* change blocknum type to uint64

* fix test

Co-authored-by: Liam Lai <liam.icheng.lai@gmail.com>
2022-06-29 23:58:18 +02:00
Liam
ac5096d692
upgrade log level and log message (#102) 2022-06-19 10:59:09 +02:00
Liam
1cac82825d
xin-176 use local masternode to verify signature (#98)
* use local masternode to verify signature

* refactor verify header
2022-06-05 12:53:50 +02:00
Liam
50ae0c95fd
xin-197 xin-198 fix devnet issues (#99)
* xin-197 xin-198 fix devnet issues

* update log
2022-06-05 11:06:32 +02:00
Liam
0317e871d4
add initial function during load latest block from db (#96) 2022-05-29 11:28:08 +02:00
Jerome
7effc71547
allow forensics send msg to stats server (#95)
* allow forensics send msg to stats server

* add test for forensics reporting mechanism
2022-05-25 19:42:30 +10:00
Liam
ca6a645fca
refactor and improve log (#92)
* refactor and improve log

* fix conflict and test
2022-05-23 02:34:32 +01:00
Liam
882add50f5
bug fix for snapshot failed to load from db (#91) 2022-05-22 19:15:25 -05:00
Jerome
455cacc1b7
move XDC consensus types into core (#93) 2022-05-22 11:43:25 +10:00
wgr523
727202cac9
remove verifyQC from ProposedBlockHandler since verifyQC is already in verifyHeader (#88) 2022-05-18 11:18:10 -04:00
Liam
2b40d1337f
initial snapshot when there is no snapshot (#86) 2022-05-18 11:17:49 -04:00
Liam
5fffa0cd43
xin-188 update penalty limit epoch constant for v2 and shorter test (#87) 2022-05-18 11:17:32 -04:00
Jerome
2f40b63ca8
Re-define the forensics report format and complete the internal forensics logic (#90) 2022-05-16 17:30:45 +10:00
Jerome
ba144d898f
process forensics (#84)
* process forensics

* Found common signers at same round for forensics

* find attackers

* add test for forensics

* run setCommittedQCs after processForensics
2022-05-03 21:18:28 +10:00
Liam
98621f0993
Merge branch 'dev-upgrade' into xin-176 2022-05-02 21:55:12 -06:00
wgr523
49cecaa9af
XIN-176 fix (#85)
* fix bug in isEpochSwitchAtRound, fix penalty test TestHookPenaltyV2Mining

* fix authorised test

* fix things

* revert a test
2022-05-02 22:46:55 -05:00
Jerome
eb35d4e32e
Add set committed QC function in forensics (#83) 2022-04-23 10:33:56 +10:00
Liam Lai
d0cde5c51e fix new masternode bug 2022-04-14 02:07:26 -06:00
Jerome
6c48d5be6c
Xin 181 178 (#80)
* add skeleton forensics

* remove duplicated penalty check in verify header
2022-04-10 09:40:32 +10:00
Liam
92857e50e5
xin-177 check penalty only on epoch switch block and Add Hook on initial (#78)
* check penalty only on epoch switch block

* skip calculate penalty on first v2 block

* clean code, its doing same thing
2022-04-02 22:59:39 -06:00
Jerome
0ded664f0c
add highestSelfMinedRound to make sure we mine once per round (#79) 2022-04-03 12:45:25 +10:00
Jerome
0241d40699
verify headers shall use parent block if not present in the chain (#77) 2022-04-01 00:11:04 -06:00
Jerome
cb67e8e26a
Xin 163 (#76)
* clean up the pool old round

* add unit test to cover the vote key format

* add gapNumber to the vote pool key

* fix race condition in pool

* remove verify gap number in vote handler
2022-04-01 14:59:16 +11:00
Jerome
b98005a8dd
Xin 166 (#75)
* typo and checkYourturnWithinFinalisedMasternodes func name to yourturn

* remove redundant code from verifyQC

* Verify QC to optionally pass parent header. This is used to help verifyHeaders

* move difficulty into its own file
2022-03-27 20:39:40 +11:00
wgr523
b790b077c9
XIN-164 add GapNumber inside Vote, and tests (#74) 2022-03-25 23:22:24 +08:00
Jerome
ee025383c1
check yourturn again during prepare (#72) 2022-03-25 21:03:37 +11:00
Jerome
d55229677d
verify header including validator (#71)
* verify header including validator

* re-structure v1 v2 tests

* remove unused test function

* add test to check coinbase and validator address matches

* refactor engine v2 to group private functions into same file
2022-03-20 21:14:35 +11:00
Liam
fbb9e87251
fix error log (#70) 2022-03-14 00:14:47 +01:00
Jerome
9bb1a6e1b3
XIN-159, 160 and 161 (#69)
* XIN-159, 160 and 161

* update the bft handler to make sure we don't process dis-qualified messages

* add verify header missing checks and its tests
2022-03-13 22:00:26 +11:00
Liam
a4b362ae9a
Xin 147 initial for both first v2 block and further, also introduce getExtraField function (#64)
* refactor initial and introduce getExtraField function

* add test for initial

* refactor snapshot

* initial first snapshot only
2022-03-08 20:34:11 +01:00
Jerome
8363641b2c
check against master node list before sending out anything (#67)
* check against master node list before sending out anything

* remove duplicated signatures from QC

* add break when checking allowed to send
2022-03-08 09:12:52 +11:00
Jerome
6090b7f02e
XIN-154 fix verify header bug on Validators (#66) 2022-03-07 18:53:55 +08:00
Liam
d975ba4014
xin-153 Broadcast syncInfo when consecutive timeouts of same round (#65)
* Broadcast syncInfo when consecutive timeouts of same round

* add test

* revert test period
2022-03-05 01:52:20 +01:00
Jerome
e493ddfd6d
add verifyTC and verifyTimeoutMessage (#63)
* add verifyTC and verifyTimeoutMessage

* remove v2 func from adaptor
2022-03-02 09:17:57 +11:00
Jerome
d773e15ca8
Xin 137 (#62)
* add GapNumber

* fix broken countdown test

* add gapNumber to existing tests
2022-02-28 18:51:42 +11:00
Jerome
97985fda85
move verify QC into verify header, fix broken tests etc (#61) 2022-02-27 10:25:26 +11:00
Jerome
431c870fa0
verify vote (#50)
* verify vote

* fix vote tests and add temporary solution for initialize

* remove the drop peer comment
2022-02-26 17:42:08 +11:00
Liam
0ab7bfbcbd
Merge pull request #58 from hash-laboratories-au/XIN-125-happy-path-fix
Xin 125 happy path fix
2022-02-21 02:51:48 +03:00
Liam Lai
491dc911f3 refactor big int compare and fix 1 bug on headers 2022-02-21 01:16:33 +03:00
Jianrong
221326aafc remove isemptyhash 2022-02-20 22:10:23 +11:00
Jianrong
c77a641638 add verify blockInfo function 2022-02-20 21:06:05 +11:00
Jianrong
cddeaf2db1 add v2 verify header 2022-02-19 19:36:32 +11:00
Jianrong
5733474c14 add v1 snapshot fix 2022-02-19 16:50:00 +11:00
Jianrong
125f8a8957 Split initialise v2 into two scenarios 2022-02-19 16:17:27 +11:00
wgr523
89acbdd742
XIN-121 Reward hook (#57)
* v2 Hook Reward, need test

* test reward

* fix RewardHook due to modifying params config directly (#56)

* more test

* finish test

Co-authored-by: Jerome <wjrjerome@gmail.com>
2022-02-19 15:31:19 +11:00
wgr523
9b47146120
add calcMasternodes, HookPenalty for v2, tests (#52) 2022-02-13 22:15:23 +08:00
Liam
5a3acd173d
Xin-124 Deal with Block Time mine time (#55)
* add wait v2 period in miner

* add perido initial

* add mine and wait time

* update todo

* merge all xdc test config into 1
2022-02-13 11:40:47 +11:00
Liam
4424c7d01e
move config into code (#54)
* move config into code

* set devnet switch block number very high

* increase timeout and certThreshold for devnet config

Co-authored-by: Jianrong <wjrjerome@gmail.com>
2022-02-12 13:36:08 +11:00
Jerome
23cbf68307
fix vote and block insertion race condition (#51)
* fix vote and block insertion race condition

* fix race condition in the vote handler using multiple go routine

* check go routine race condition during ci cd

* remove race check as there are eth code that is failing

* remove unused signature list variable
2022-02-03 23:27:50 +11:00
Jerome
7cc2bef2d3
update adaptor for verify headers and fix vote handler to include +1 distance when checking rounds (#48) 2022-01-30 14:26:05 +11:00
Jerome
328d555b9b
Xin 138 (#49)
* check block header after vote pool reached

* refactor test_helper to fix issues with tests randomly failing
2022-01-30 13:00:24 +11:00
Jerome
dc15891d1f
add comment for verify steps (#45) 2022-01-27 21:15:09 +11:00
Liam
ff0fcd3951
add test and fix issue on happy path (#46)
* add test and fix issue on happy path

* add prepare test

* update comment
2022-01-25 10:51:17 +03:00
wgr523
05d315d2e3
finish YourTurn handling v1->v2 switch, add test (#44) 2022-01-23 14:26:37 +11:00
Jerome
e063f67f34
implement verify functions (#43)
* implement verify functions

* Use go routine to call verifyMsgSignature

* verify timeout msg shall use round from the msg

* add comment for verifyQC
2022-01-21 21:10:44 +11:00
Liam
646042a651
Xin 127 initial v2 function and snapshot (#42)
* initial v2 and v2 snapshot

* update based on pr feedback

* add test for initial v2 parameters

* remove comment
2022-01-20 18:27:51 +08:00
Liam
e72d4866df
Xin 118 refactor yourturn in v1 and miner (#41)
* refactor wait log into adaptor

* refactor v1 yourturn
2022-01-20 02:28:15 +11:00
Liam
aab040fd55
adjust lock (#39)
* adjust lock

* change error log

* change error log
2022-01-16 13:31:23 +03:00
Jerome
38c3582841
Add v2 yourturn (#38)
* Add v2 yourturn

* add isEpochSwitchByRound into YourTurn

Co-authored-by: Gerui Wang <wgr523@gmail.com>
2022-01-16 19:18:01 +11:00
Jerome
f8d3f9f8c6
Xin 113 is epoch switch (#37)
* add isEpochSwitch function and refactor utils

* fix broken first v2 epoch switch block

* use adaptor epoch switch function to determine v1 v2 epoch swtich block

* add test for the GetMasternodesByNumber and GetCurrentEpochSwitchBlock function

* add v2 test for isAuthroisedAddress

* Use GetCurrentEpochSwitchBlock in findNearestSignedBlock api
2022-01-14 21:38:38 +11:00
wgr523
5c326961ce
isEpochSwitch, getMasternodes (#35)
* isEpochSwitch, getMasternodes

* recursive getEpochSwitchInfo, getMasternodes

* more log, make getEpochSwitchInfo clearer
2022-01-08 00:17:21 +08:00
Jerome
ebbbf26127
add isAuthorisedAddress function for v2 consensus (#34)
* add isAuthorisedAddress function for v2 consensus

* update isAuthorisedAddress log messages
2022-01-03 17:06:04 +11:00
Jianrong
15275ded65 Commit grand grand parent block(continous rounds) if enough votes or by proposedBlockHandler 2022-01-01 16:20:33 +11:00
Liam
35eebabae0 xin-106 add generated message into its pool (#32)
* add debug log and change to contain or add for cache

* add generated message into its pool
2021-12-30 11:45:22 +11:00
Jianrong
e0d66d4ea8 add syncInfo test 2021-12-30 11:45:22 +11:00
Jianrong
5f9fd80733 add more propose block handler test 2021-12-30 11:45:22 +11:00
Jianrong
2a94cdebe5 XIN-109: Add more proposed block handler tests 2021-12-30 11:45:22 +11:00
Liam
6c5fe34615 v2 miner function implementation and happy path (#22)
* New struct in consensus/XDPoS/utils/types.go, util functions, and test. (#14)

* define vote, timeout, sync info, qc, tc, extra fields in types.go, add test in types_test.go

* add json tag in types.go, refine encoder decoder of extra fields

* refactor types.go utils.go

* re-write types, comments

* add Hash SigHash for types, and tests

* define Round type

* remove unnecessary logs

* add v2 engine functions placeholder

* typo fix on the consensus v2 function placeholders

* add countdown timer

* make initilised private to countdown

* add v2 specific config struct

* rename some config variables

* Implement BFT Message receiver (#13)

* fix or skip tests due to PR-136 changes

* add bft receiver functions

* add bft receiver functions

* rename tc to TimeoutCert

* implement more functions

* New struct in consensus/XDPoS/utils/types.go, util functions, and test. (#14)

* define vote, timeout, sync info, qc, tc, extra fields in types.go, add test in types_test.go

* add json tag in types.go, refine encoder decoder of extra fields

* refactor types.go utils.go

* re-write types, comments

* add Hash SigHash for types, and tests

* define Round type

* remove unnecessary logs

* add temp functions

* add v2 engine functions placeholder

* typo fix on the consensus v2 function placeholders

* add countdown timer

* make initilised private to countdown

* push verify function

* add test on receiving vote

* revert type change

* add async on broadcast function

* add quit initial

* fix test

Co-authored-by: Jianrong <wjrjerome@gmail.com>
Co-authored-by: wgr523 <wgr523@gmail.com>

* generate and verify timeout message

* Consensus V2 variable, timeout pool (#19)

* fill in XDPoS_v2 variables and processQC/TC

* add timeout pool, refine engine variables

* refactor type functions

* solve a small pointer bug

* create general pool and its test, refine engine

* refine pool, add xdpos v2 config cert threshold

* refine config

* vote and timeout handlers

* fix pool test

* bft miner preparation

* review comment improvement

* update

* relocate tests

* add and remove comment

* fix the syntax error

* update network layer and add handler functions (#23)

* update network layer and add handler functions

* fix test syntax error

* add ProcessQC implementation

* add ProcessQC tests

* add snapshot test

* add wait qc process

* remove testing files

* add route snapshot

* fix merge issue

* add default v2 behaviour (#24)

* add v2 ecrecover functions and refactor test

* fix all the tests

* put minimun lock variable

* debugging prepare and seal v2 blocks

* Trigger proposeBlockHandler after v2 block received and verified in fetcher

* skip snapshot apply related tests

* update test check

* rename bfter to bft handler and ignore normal behviour

* fix bugs during local 4 node run

* fix test

* fix sync info test

* fix bugs during local 4 node run

* rebase and fix bug

* remove hook validators function"

Co-authored-by: wgr523 <wgr523@gmail.com>
Co-authored-by: Jianrong <wjrjerome@gmail.com>
2021-12-30 11:45:18 +11:00
Jianrong
6e13b4d6a2 fix proposed block handler based on review comments 2021-12-30 11:12:21 +11:00
Jianrong
249d2b5b6d implemente proposeblock handler and SyncInfo handler 2021-12-30 11:12:21 +11:00
Liam
17eb4c6c65 add default v2 behaviour (#24) 2021-12-30 11:12:21 +11:00
Jianrong
163ed0fab3 add ProcessQC tests 2021-12-30 11:12:18 +11:00
Jianrong
bd60e1b0cf add ProcessQC implementation 2021-12-30 11:00:20 +11:00
Liam
b9068974f5 update network layer and add handler functions (#23)
* update network layer and add handler functions

* fix test syntax error
2021-12-30 11:00:20 +11:00
Jianrong
17f6e67f58 review comment improvement 2021-12-30 11:00:20 +11:00
Jianrong
98014936c3 fix pool test 2021-12-30 11:00:20 +11:00
Jianrong
a39612e540 vote and timeout handlers 2021-12-30 11:00:20 +11:00
wgr523
d47d9a2a99 Consensus V2 variable, timeout pool (#19)
* fill in XDPoS_v2 variables and processQC/TC

* add timeout pool, refine engine variables

* refactor type functions

* solve a small pointer bug

* create general pool and its test, refine engine

* refine pool, add xdpos v2 config cert threshold

* refine config
2021-12-30 11:00:20 +11:00
Jianrong
4addb69561 generate and verify timeout message 2021-12-30 11:00:20 +11:00
Liam
a1b77f3ca8 Implement BFT Message receiver (#13)
* fix or skip tests due to PR-136 changes

* add bft receiver functions

* add bft receiver functions

* rename tc to TimeoutCert

* implement more functions

* New struct in consensus/XDPoS/utils/types.go, util functions, and test. (#14)

* define vote, timeout, sync info, qc, tc, extra fields in types.go, add test in types_test.go

* add json tag in types.go, refine encoder decoder of extra fields

* refactor types.go utils.go

* re-write types, comments

* add Hash SigHash for types, and tests

* define Round type

* remove unnecessary logs

* add temp functions

* add v2 engine functions placeholder

* typo fix on the consensus v2 function placeholders

* add countdown timer

* make initilised private to countdown

* push verify function

* add test on receiving vote

* revert type change

* add async on broadcast function

* add quit initial

* fix test

Co-authored-by: Jianrong <wjrjerome@gmail.com>
Co-authored-by: wgr523 <wgr523@gmail.com>
2021-12-30 11:00:20 +11:00
Jianrong
521b703207 rename some config variables 2021-12-30 11:00:20 +11:00
Jianrong
1d48ed7d06 add v2 specific config struct 2021-12-30 11:00:20 +11:00
Jianrong
bcb1fea280 add countdown timer 2021-12-30 11:00:20 +11:00
Jianrong
8891cd167b typo fix on the consensus v2 function placeholders 2021-12-30 11:00:20 +11:00
Jianrong
1da080a371 add v2 engine functions placeholder 2021-12-30 11:00:20 +11:00
wgr523
4453a1e257 New struct in consensus/XDPoS/utils/types.go, util functions, and test. (#14)
* define vote, timeout, sync info, qc, tc, extra fields in types.go, add test in types_test.go

* add json tag in types.go, refine encoder decoder of extra fields

* refactor types.go utils.go

* re-write types, comments

* add Hash SigHash for types, and tests

* define Round type

* remove unnecessary logs
2021-12-30 11:00:20 +11:00
Liam Lai
5061dd9841 add few comments in code 2021-12-21 08:47:23 +03:00
Gerui Wang
db58081b8d refine race condition solution 2021-12-21 10:19:17 +08:00
Jianrong
d901d1df6e race condition caused by old eth bug where read before write. We fixing it by passing down header in the snapshot to avoid touching ETH code. This is just a precaution to avoid undiscovered bugs in XDC as a result of fundmental ETH implementation change 2021-12-21 10:32:55 +11:00
olumuyiwadad
afe58d79fc fix api trace block & Change option pending block. 2021-11-11 18:49:57 +05:30
olumuyiwadad
420a589599 ignoreSignerBlockList added. 2021-11-11 18:48:50 +05:30
Jianrong
ce4e16c7c3 replace c to x in XDPos pakage 2021-10-17 11:37:55 +11:00
Jianrong
e5a9a5ddbc replace consensus int config with string const 2021-10-17 11:31:49 +11:00
Jianrong
0eb2504db3 Add 1 test for adaptor to switch from v1 to v2 2021-10-17 11:20:57 +11:00
Jianrong
c8ee8e1936 add a simple test to verify DB is the same across different engine versions 2021-10-16 13:22:48 +11:00
Jianrong
ce106abffe fix tests related to consensus 2021-10-10 22:05:32 +11:00
Jianrong
e34311ff45 Remove unused consensus v1 methods 2021-10-10 16:04:34 +11:00
Jianrong
48be4e4ca7 Move consensus hooks to its own package 2021-10-10 16:04:32 +11:00
Jianrong
0aec2a1e9e Seperate hooks from XDPoS adaptor 2021-10-10 16:02:19 +11:00
Jianrong
fcbc5a28e1 refactor XDPoS to accommodate multiple consensus engine versions 2021-10-10 16:02:16 +11:00
olumuyiwadad
cf18ceba33 Merge branch 'forking-incident-fix' of https://github.com/hash-laboratories-au/XDPoSChain into hash-laboratories-au-forking-incident-fix 2021-09-23 17:01:19 +05:30
olumuyiwadad
b5abbfed79 new EVM Upgrade
- Solidity Upgraded up to v0.8.0
-  Fixed and Added eth_chainId
- Fix error in TransactionRecipet
- Reward halving issue fixed
2021-09-21 16:53:46 +05:30
olumuyiwadad
92ffe69ab4 Work around for the issue "return wrong list signers from snapshot"
Update signers in snapshot
Ignore signerCheck at checkpoint block 27307800
due to wrong snapshot at gap 27307799
2021-09-17 18:45:46 +05:30
olumuyiwadad
571c41f891 FIx Bad block error. 2021-09-17 17:59:06 +05:30
Jianrong
9efb89dffb fix simulator functions to choose between XDC faker and eth faker 2021-08-30 14:56:14 +10:00
Jianrong
fa2b341c9a resolving broken eth tests 2021-08-29 17:14:10 +10:00
Jianrong
7b7e34ae00 Fix XDC forking incident with tests 2021-08-29 14:20:01 +10:00
Jianrong
4d88ba22e5 rebase from dev-upgrade 2021-08-07 14:29:18 +10:00
Jianrong
0fdab2027c add linting as the first CI task 2021-08-07 14:27:08 +10:00
AnilChinchawale
916b16de71 fix masternode stop block production. 2021-01-18 10:57:22 +05:30
AnilChinchawale
a8fc240b29 remove logs & add list of authorized signers 2020-12-30 18:00:37 +05:30
dev-vadim
dbe8c9d984 upgrade XDC.Network with v1.8.27. 2020-12-23 16:32:06 +05:30
diglspacedavid
474cc37036 upgrade codebase with ethereum:v1.8.13 2020-11-23 13:40:30 +05:30
parmarrushabh
3e5f4d54a8 Hot_Fix Bad block Error 2019-04-25 12:11:30 +05:30
Martin Holst Swende
af401d03a3
all: simplify timestamps to uint64 (#19372)
* all: simplify timestamps to uint64

* tests: update definitions

* clef, faucet, mobile: leftover uint64 fixups

* ethash: fix tests

* graphql: update schema for timestamp

* ethash: remove unused variable
2019-04-08 12:00:42 +03:00
parmarrushabh
3456368fdc XDPoS unit test fixed 2019-03-27 17:18:37 +05:30
parmarrushabh
a6238b785d test output corrected 2019-03-26 14:50:50 +05:30
AnilChinchawale
8000ce3c93 move m2 for unit test 2019-03-26 14:46:39 +05:30
parmarrushabh
2d046cc16a tip block randomize 2019-03-26 14:28:13 +05:30
parmarrushabh
36d9bea7e9 created unit test for XDPoS 2019-03-25 14:20:56 +05:30
AnilChinchawale
4679c9fc74 updated xdpos.go 2019-03-25 14:15:09 +05:30
parmarrushabh
4af57cc070 case m2 down affect to m1. 2019-03-25 12:19:25 +05:30
parmarrushabh
a47c0b94e7 allow signing with m1 = m2 2019-03-25 11:38:52 +05:30
AnilChinchawale
8e89efe6a9 File Updated | XDPoS Consensus updated 2019-03-14 15:59:10 +05:30
parmarrushabh
147e1f0baf create new func penalties for hard fork 2019-02-19 17:25:31 +05:30
AnilChinchawale
b15708af5b Changes added console. 2019-01-09 08:33:22 +05:30
AnilChinchawale
bc15c48163 Fixed issue in clique | File updated 2019-01-07 08:32:55 +05:30
AnilChinchawale
cd9734b34a Fixed issue XDPoS | File updated 2019-01-07 08:32:29 +05:30
Dave McGregor
33d233d3e1
vendor, crypto, swarm: switch over to upstream sha3 package 2019-01-04 09:26:07 +02:00
parmarrushabh
4a12d746ff tmp fix ethash unittests 2018-12-04 14:25:55 +05:30
parmarrushabh
2b7010d51f add state variable to verifyHeader(), verifyHeaders() in the consensus 2018-12-02 12:21:48 +05:30
parmarrushabh
9f36d37558 Parallel process block from fetcher 2018-11-17 12:02:43 +05:30
mr_franklin
9a000601c6 consensus/clique: fix comment typo (#18103) 2018-11-14 14:50:30 +02:00
parmarrushabh
176b51f1f8 ignore faster with block no validator m2 2018-11-12 15:41:24 +05:30
AnilChinchwale
53e39d77ac fix error double validation 2018-11-09 16:42:45 +05:30
gary rong
144c1c6c52 consensus: extend getWork API with block number (#18038) 2018-11-08 17:08:57 +02:00
parmarrushabh
b0e95fcc58 fix reduce change code 2018-10-31 11:14:32 +05:30
AnilChinchawale
9bc7680c02 remove rinkby and discovery in bootnode 2018-10-31 10:56:58 +05:30
parmarrushabh
cb5a55a904 change config from flag to toml file; fix tag listenaddr 2018-10-31 10:30:25 +05:30
parmarrushabh
2e7323fdd1 Delete snapshot_test.go 2018-10-30 18:36:29 +05:30
AnilChinchwale
ae97e8e202 add again code directory clique from commit 2018-10-28 12:10:56 +05:30
parmarrushabh
ce89b6b92d making XDPoS as a separate package 2018-10-28 11:58:50 +05:30
MestryOmkar
1dba188d1d by pass difficulty check in some scenes 2018-10-28 10:45:17 +05:30
AnilChinchwale
7a7abd4f75 directly set mns to snapshot 2018-10-28 10:40:26 +05:30
parmmarrushabh
dccf2ca3e9 Add signers and finality to block status rpc api. 2018-10-27 16:28:04 +05:30
MestryOmkar
7e33e27642 hotfix: signed recently issue 2018-10-25 15:27:34 +05:30
MestryOmkar
ec421b98b1 masternode should also count to his turn in case some of his friends are down 2018-10-22 10:53:15 +05:30
AnilChinchawale
e3eeaf8807 masternode[0] will create block 1 2018-10-18 15:38:38 +05:30
AnilChinchawale
f319f5c1df in case a masternode resigns, let him continue until end of the current epoch 2018-10-14 15:08:02 +05:30
MestryOmkar
f814908442 get masternodes set from latest checkpoint block header instead of fr… … 2018-10-10 14:15:15 +05:30
parmarrushabh
9f5cba7dc7 update new set of masternodes at end of each epoch (distance = m1Gap) 2018-09-30 12:00:33 +05:30
gary rong
d6254f827b all: protect self-mined block during reorg (#17656) 2018-09-20 15:09:30 +03:00
gary rong
0b477712a1 consensus/clique: hide no transaction error (#17614) 2018-09-19 12:06:55 +03:00
gary rong
5d1d1a808d consensus, ethdb, metrics: implement forced-meter (#17667) 2018-09-17 15:32:34 +03:00
Péter Szilágyi
41ac8dd803
Merge pull request #17675 from holiman/eip1234
Eip1234
2018-09-17 15:18:17 +03:00
Martin Holst Swende
7efb12d29b
ethash: documentation + cleanup 2018-09-17 11:53:36 +02:00
Martin Holst Swende
3df7df0386
ethash: less copy-paste for EIP 1234 2018-09-15 23:54:16 +02:00
EOS Classic
0732617b65
consensus: implement Constantinople EIP 1234 2018-09-12 20:02:34 +09:00
Péter Szilágyi
4bb25042eb
consensus/clique, core: chain maker clique + error tests 2018-09-11 16:40:00 +03:00
Péter Szilágyi
bcfb7f58b9
consensus/clique: only trust snapshot for genesis or les checkpoint 2018-09-10 15:00:54 +03:00
Anton Evangelatov
cc2b39bbd1 consensus/ethash: increase timeout in test (#17526)
This is an attempt to fix the flaky consensus/ethash tests under macOS.
2018-09-03 16:59:23 +02:00
ult-bobonovski
992b77992f consensus: fix comment typo (#17562) 2018-09-03 16:49:00 +02:00
gary rong
c1c003e4ff consensus, miner: stale block mining support (#17506)
* consensus, miner: stale block supporting

* consensus, miner: refactor seal signature

* cmd, consensus, eth: add miner noverify flag

* cmd, consensus, miner: polish
2018-08-28 16:59:05 +03:00
Mymskmkt
c64d72bea2 consensus/ethash: remove unnecessary type declaration (#17529) 2018-08-28 10:05:25 +03:00
gary rong
40a71f28cf miner: fix state commit, track old work packages too (#17490)
* miner: commit state which is relative with sealing result

* consensus, core, miner, mobile: introduce sealHash interface

* miner: evict pending task with threshold

* miner: go fmt
2018-08-23 16:02:57 +03:00
Péter Szilágyi
9f036647e4
consensus/clique, light: light client snapshots on Rinkeby 2018-08-21 15:21:59 +03:00
Péter Szilágyi
251c868008
consensus/ethash: reduce notify test aggressiveness 2018-08-17 18:12:39 +03:00
Péter Szilágyi
d8541a9f99
consensus/ethash: use DAGs for remote mining, generate async 2018-08-15 14:38:39 +03:00
Péter Szilágyi
f0998415ba
cmd, consensus/ethash, eth: miner push notifications 2018-08-10 09:06:59 +03:00
parmarrushabh
bbd132c1a3 Refine comments for feature add reward to validators and signers block. 2018-08-09 14:24:16 +05:30
MestryOmkar
831626de23 Add reward for signers and validators for reward checkpoint. 2018-08-04 14:11:24 +05:30
gary rong
51db5975cc consensus/ethash: move remote agent logic to ethash internal (#15853)
* consensus/ethash: start remote ggoroutine to handle remote mining

* consensus/ethash: expose remote miner api

* consensus/ethash: expose submitHashrate api

* miner, ethash: push empty block to sealer without waiting execution

* consensus, internal: add getHashrate API for ethash

* consensus: add three method for consensus interface

* miner: expose consensus engine running status to miner

* eth, miner: specify etherbase when miner created

* miner: commit new work when consensus engine is started

* consensus, miner: fix some logics

* all: delete useless interfaces

* consensus: polish a bit
2018-08-03 11:33:37 +03:00
parmarrushabh
a88d49b1a8 Fixed only send tx sign for validators. 2018-07-24 16:54:17 +05:30
hadv
49f63deb24
consensus/clique: replace bubble sort by golang stable sort 2018-07-24 14:56:53 +07:00
Wenbiao Zheng
f6206efe5b consensus: move test use only var/func to test(#17004) 2018-07-24 02:14:15 +02:00
Ralph Caraveo III
5d30be412b all: switch out defunct set library to different one (#16873)
* keystore, ethash, eth, miner, rpc, whisperv6: tech debt with now defunct set.

* whisperv5: swap out gopkg.in/fatih/set.v0 with supported set
2018-07-16 10:54:19 +03:00
AnilChinchawale
80d66cb264 Fixed minor warning of go lint and rename checkpoint config parameter. 2018-07-15 16:47:41 +05:30
AnilChinchawale
1e59069d3a reuse Clique voting strategy for now, leave header.Coinbase empty 2018-07-12 16:24:50 +05:30
Kwuaint
facf1bc9d6 consensus/ethash: fix the algorithm of fakeBlockNumber in comments (#17166)
correct the algorithm in the comments for fakeBlockNumber, from "min" to "max".
2018-07-12 13:32:23 +03:00
AnilChinchawale
2fb2d7404d block 1 - all masternodes race to create 2018-07-10 16:20:55 +05:30
LeoLiao
0b20b1a050 consensus/clique: fixed documentation copy-paste issue (#17137) 2018-07-09 11:39:43 +03:00
AnilChinchawale
91aa7c65ef masternode takes turn (circle) to propose block 2018-07-07 16:11:13 +05:30
Zak Cole
eb794af833 consensus/ethash: fixed documentation typo (#17121)
"proot-of-work" to "proof-of-work"
2018-07-04 11:20:58 +03:00
AnilChinchawale
d06703c251 added NON-ZERO COINBASE IN BLOCK HEADER 2018-06-20 10:53:31 +05:30
AnilChinchawale
2a089900f5 added MINER-VALIDATOR 2018-06-18 10:46:57 +05:30
AnilChinchawale
aa511fb523 add BLOCK REWARD TO CLIQUE CONFIG 2018-06-09 17:20:53 +05:30
Felix Lange
3f33a7c8ce consensus/ethash: reduce keccak hash allocations (#16857)
Use Read instead of Sum to avoid internal allocations and
copying the state.

name                      old time/op  new time/op  delta
CacheGeneration-8          764ms ± 1%   579ms ± 1%  -24.22%  (p=0.000 n=20+17)
SmallDatasetGeneration-8  75.2ms ±12%  60.6ms ±10%  -19.37%  (p=0.000 n=20+20)
HashimotoLight-8          1.58ms ±11%  1.55ms ± 8%     ~     (p=0.322 n=20+19)
HashimotoFullSmall-8      4.90µs ± 1%  4.88µs ± 1%   -0.31%  (p=0.013 n=19+18)
2018-06-04 10:32:32 +03:00