diff --git a/consensus/XDPoS/engines/engine_v1/engine.go b/consensus/XDPoS/engines/engine_v1/engine.go index 91e9f1fde4..06ee39c9dd 100644 --- a/consensus/XDPoS/engines/engine_v1/engine.go +++ b/consensus/XDPoS/engines/engine_v1/engine.go @@ -1081,15 +1081,15 @@ func NewFaker(db ethdb.Database) *XDPoS_v1 { conf := params.TestXDPoSMockChainConfig.XDPoS // Allocate the snapshot caches and create the engine - BlockSigners, _ := lru.New(utils.BlockSignersCacheLimit) + // BlockSigners, _ := lru.New(utils.BlockSignersCacheLimit) recents, _ := lru.NewARC(utils.InmemorySnapshots) signatures, _ := lru.NewARC(utils.InmemorySnapshots) validatorSignatures, _ := lru.NewARC(utils.InmemorySnapshots) verifiedHeaders, _ := lru.NewARC(utils.InmemorySnapshots) fakeEngine = &XDPoS_v1{ - config: conf, - db: db, - BlockSigners: BlockSigners, + config: conf, + db: db, + // BlockSigners: BlockSigners, recents: recents, signatures: signatures, verifiedHeaders: verifiedHeaders, diff --git a/coverage.txt b/coverage.txt index 9d74eae87d..79b28a0b6b 100644 --- a/coverage.txt +++ b/coverage.txt @@ -1,1260 +1 @@ mode: atomic -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:96.137,100.15 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:108.2,108.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:117.2,117.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:120.2,120.15 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:123.2,123.46 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:101.30,102.38 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:103.29,104.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:105.10,106.60 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:109.30,110.36 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:111.29,112.41 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:113.10,114.56 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:117.17,119.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:120.15,122.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:129.134,132.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:135.2,141.45 4 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:147.2,149.16 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:179.2,182.22 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:185.2,190.34 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:229.2,231.12 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:318.2,318.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:345.2,345.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:132.16,134.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:141.45,143.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:143.19,145.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:149.16,152.44 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:156.3,156.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:169.3,169.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:152.44,154.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:156.39,158.20 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:161.4,161.68 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:158.20,159.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:161.68,163.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:163.19,164.11 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:169.17,170.22 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:171.32,172.68 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:173.12,174.20 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:182.22,184.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:190.34,192.13 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:192.13,196.28 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:196.28,200.50 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:220.5,220.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:200.50,202.24 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:207.6,211.20 4 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:216.6,217.51 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:202.24,203.49 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:203.49,205.8 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:211.20,214.12 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:221.26,221.26 0 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:222.30,223.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:231.12,240.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:255.3,255.75 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:240.16,244.11 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:252.4,252.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:245.23,246.158 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:247.34,248.161 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:249.12,250.145 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:255.75,257.11 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:263.4,263.42 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:273.4,274.20 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:279.4,279.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:289.4,292.18 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:297.4,298.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:302.4,302.46 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:307.4,308.24 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:312.4,313.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:258.29,259.11 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:260.12,260.12 0 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:263.42,264.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:270.5,270.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:264.24,267.6 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:267.11,269.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:274.20,276.10 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:279.23,282.12 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:287.5,287.31 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:283.133,283.133 0 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:284.30,285.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:292.18,294.10 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:298.18,300.10 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:302.46,304.10 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:308.24,310.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:318.12,323.28 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:323.28,336.62 4 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:336.62,337.58 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:340.5,341.11 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:337.58,339.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:350.140,354.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:363.2,363.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:366.2,366.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:355.30,356.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:357.29,358.44 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:359.10,360.62 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:363.18,365.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:371.132,373.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:376.2,376.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:373.18,375.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:381.121,383.65 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:386.2,386.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:383.65,385.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:391.129,393.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:396.2,396.42 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:393.16,395.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:402.128,404.94 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:407.2,408.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:411.2,412.43 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:415.2,416.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:420.2,430.24 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:433.2,433.34 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:460.2,462.25 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:484.2,488.19 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:491.2,491.21 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:404.94,406.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:408.19,410.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:412.43,414.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:416.16,418.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:430.24,432.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:433.34,435.13 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:435.13,439.27 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:439.27,442.36 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:447.5,451.19 4 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:455.5,455.54 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:442.36,443.61 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:443.61,445.7 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:451.19,453.14 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:462.25,466.21 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:472.3,477.108 5 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:482.3,482.25 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:466.21,467.46 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:467.46,469.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:477.108,479.9 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:488.19,490.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:497.133,501.16 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:508.2,511.38 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:523.2,523.16 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:532.2,537.33 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:568.2,570.32 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:501.16,503.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:503.17,505.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:511.38,513.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:516.3,516.67 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:513.19,514.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:516.67,518.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:518.18,519.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:523.16,524.21 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:525.31,526.72 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:527.11,528.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:537.33,539.41 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:544.3,544.87 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:547.3,549.17 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:552.3,553.27 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:557.3,558.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:561.3,561.45 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:564.3,566.15 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:539.41,542.4 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:544.87,546.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:549.17,551.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:553.27,555.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:558.17,560.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:561.45,563.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:575.127,578.15 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:581.2,582.43 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:585.2,586.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:590.2,590.54 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:578.15,580.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:582.43,584.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:586.16,588.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:596.164,602.9 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:630.2,634.16 4 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:638.2,638.33 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:603.45,606.28 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:612.3,612.60 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:616.3,617.13 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:621.3,621.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:623.21,624.35 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:626.10,627.48 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:606.28,607.70 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:607.70,609.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:612.60,614.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:617.13,620.4 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:634.16,636.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:639.24,645.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:647.23,648.28 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:650.10,651.51 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:656.143,659.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:662.2,663.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:666.2,667.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:671.2,672.55 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:675.2,681.44 6 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:712.2,713.104 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:659.18,661.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:663.19,665.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:667.16,669.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:672.55,674.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:681.44,683.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:697.3,698.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:702.3,702.19 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:683.21,685.22 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:690.4,691.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:694.4,695.37 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:685.22,686.47 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:686.47,688.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:691.18,693.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:698.17,700.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:702.19,704.57 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:707.4,709.54 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_tracer.go:704.57,706.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:52.43,53.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:53.43,54.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:54.13,55.8 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:55.8,56.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:57.29,58.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:60.41,63.44 3 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:75.6,75.21 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:63.44,65.97 2 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:65.97,66.103 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:66.103,68.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:68.14,70.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:71.13,73.8 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:106.73,114.2 3 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:118.81,122.2 3 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:126.54,129.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:133.39,136.44 2 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:143.2,143.22 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:136.44,138.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:141.3,141.86 1 0 -github.com/XinFinOrg/XDPoSChain/eth/bloombits.go:138.17,140.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:18.52,57.2 20 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:59.73,80.40 3 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:83.2,83.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:86.2,86.26 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:89.2,89.25 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:92.2,92.26 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:95.2,95.27 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:98.2,98.35 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:101.2,101.32 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:104.2,104.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:107.2,107.26 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:110.2,110.29 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:113.2,113.26 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:116.2,116.25 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:119.2,119.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:122.2,122.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:125.2,125.20 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:128.2,128.40 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:131.2,131.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:134.2,134.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:80.40,82.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:83.24,85.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:86.26,88.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:89.25,91.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:92.26,94.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:95.27,97.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:98.35,100.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:101.32,103.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:104.30,106.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:107.26,109.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:110.29,112.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:113.26,115.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:116.25,118.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:119.23,121.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:122.23,124.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:125.20,127.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:128.40,130.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/gen_config.go:131.24,133.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:63.67,65.2 1 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:110.284,112.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:115.2,117.22 3 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:112.16,114.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:122.236,147.78 5 26 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:151.2,151.33 1 26 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:155.2,156.43 2 26 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:189.2,189.36 1 26 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:193.2,195.48 2 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:198.2,198.28 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:201.2,201.45 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:211.2,211.44 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:220.2,222.21 2 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:147.78,150.3 2 1 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:151.33,153.3 1 4 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:156.43,158.53 1 46 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:162.3,167.55 2 43 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:158.53,159.12 1 3 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:167.55,169.12 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:170.36,173.33 3 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:174.29,175.29 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:178.33,180.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:181.51,182.69 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:185.5,185.15 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:182.69,184.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:189.36,191.3 1 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:195.48,197.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:198.28,200.3 1 74 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:201.45,203.48 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:207.3,208.47 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:203.48,206.4 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:211.44,213.48 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:217.3,218.48 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:213.48,216.4 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:225.70,227.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:228.76,230.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:231.50,234.17 2 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:237.2,241.48 3 20 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:245.2,245.17 1 20 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:234.17,236.3 1 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:241.48,243.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:245.17,247.3 1 20 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:250.48,258.25 5 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:261.2,262.27 2 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:265.2,274.20 7 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:258.25,260.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:262.27,264.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:277.35,281.26 3 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:284.2,284.28 1 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:287.2,305.39 6 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:281.26,283.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:284.28,286.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:308.85,310.2 1 30 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:314.50,316.69 1 30 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:319.2,329.76 3 30 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:333.2,333.48 1 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:337.2,338.45 2 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:342.2,343.31 2 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:373.2,373.6 1 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:316.69,318.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:329.76,332.3 2 8 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:333.48,335.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:338.45,341.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:343.31,345.72 1 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:350.3,353.63 2 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:345.72,347.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:353.63,355.83 1 6 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:359.4,359.60 1 6 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:364.4,364.17 1 6 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:355.83,357.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:359.60,362.5 2 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:364.17,365.26 1 6 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:365.26,368.6 2 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:373.6,374.41 1 138 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:374.41,377.4 2 20 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:383.53,386.16 2 138 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:389.2,389.35 1 118 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:392.2,395.9 2 118 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:815.2,815.12 1 18 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:386.16,388.3 1 18 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:389.35,391.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:396.29,398.67 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:401.38,404.44 2 74 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:407.3,415.125 3 74 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:477.3,477.37 1 74 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:479.35,482.46 2 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:486.3,486.45 1 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:506.3,507.13 2 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:525.3,525.34 1 12 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:532.37,535.45 2 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:539.3,544.75 2 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:557.3,557.38 1 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:559.34,562.46 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:566.3,569.32 3 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:574.3,575.13 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:578.3,578.57 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:585.56,588.45 2 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:592.3,597.73 2 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:610.3,610.30 1 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:612.53,615.43 2 4 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:619.3,619.67 1 4 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:623.56,626.45 2 1 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:630.3,635.79 2 1 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:657.3,657.37 1 1 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:659.53,662.47 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:666.3,666.71 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:670.37,672.48 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:676.3,676.35 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:680.3,681.35 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:686.3,686.33 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:690.31,693.46 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:696.3,710.44 6 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:722.25,724.44 1 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:728.3,729.42 2 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:732.3,734.26 2 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:748.3,748.28 1 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:750.30,752.44 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:756.3,757.42 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:760.3,762.26 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:777.3,777.26 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:781.32,783.44 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:787.3,788.42 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:791.3,793.26 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:808.3,808.28 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:812.10,813.52 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:404.44,406.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:415.125,418.16 2 1924 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:423.4,423.21 1 1924 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:426.4,431.11 4 1909 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:418.16,420.5 1 447 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:420.10,422.5 1 1477 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:423.21,424.10 1 15 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:432.63,434.44 1 410 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:443.64,449.24 2 33 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:464.23,466.44 1 410 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:472.24,474.42 1 1056 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:434.44,435.85 1 444 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:435.85,438.7 2 440 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:438.12,440.12 2 4 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:449.24,453.6 3 4 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:453.11,454.72 1 29 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:454.72,455.109 1 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:455.109,457.8 1 22 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:457.13,459.8 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:460.12,462.7 1 7 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:466.44,468.6 1 404 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:468.11,470.6 1 6 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:482.46,484.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:486.45,492.108 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:498.4,498.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:492.108,493.105 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:493.105,495.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:498.17,503.5 4 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:507.13,509.84 1 6 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:523.4,523.65 1 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:509.84,515.85 3 4 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:519.5,520.15 2 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:515.85,518.6 2 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:525.34,527.18 2 12 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:527.18,529.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:535.45,537.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:544.75,546.54 1 566 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:552.4,552.62 1 554 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:546.54,547.10 1 12 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:548.10,548.25 1 554 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:548.25,550.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:552.62,555.5 2 544 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:562.46,564.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:569.32,572.4 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:575.13,577.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:578.57,580.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:580.18,582.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:588.45,590.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:597.73,599.54 1 26 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:605.4,605.62 1 21 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:599.54,600.10 1 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:601.10,601.25 1 21 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:601.25,603.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:605.62,608.5 2 21 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:615.43,617.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:619.67,621.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:626.45,628.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:635.79,637.54 1 6 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:643.4,644.22 2 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:650.4,650.62 1 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:637.54,638.10 1 1 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:639.10,639.25 1 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:639.25,641.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:644.22,645.114 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:645.114,646.14 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:650.62,652.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:652.10,655.5 2 5 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:662.47,664.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:666.71,668.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:672.48,674.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:676.35,678.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:681.35,682.57 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:682.57,684.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:686.33,688.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:693.46,695.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:710.44,717.90 3 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:717.90,719.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:724.44,725.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:729.42,731.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:734.26,736.17 1 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:739.4,741.14 3 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:736.17,738.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:741.14,743.5 1 2 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:743.10,745.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:752.44,753.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:757.42,759.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:762.26,764.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:767.4,769.14 3 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:764.17,766.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:769.14,771.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:771.10,773.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:777.26,779.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:783.44,784.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:788.42,790.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:793.26,795.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:798.4,800.14 3 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:795.17,797.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:800.14,802.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:802.10,804.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:808.28,810.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:820.79,825.15 3 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:842.2,842.53 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:825.15,828.95 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:835.3,835.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:838.3,839.9 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:828.95,830.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:830.9,833.4 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:835.30,837.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:842.53,843.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:846.3,846.136 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:843.30,845.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:852.81,856.29 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:859.2,859.76 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:856.29,858.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:864.91,868.29 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:871.2,871.82 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:868.29,870.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:876.95,880.29 2 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:883.2,883.84 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:880.29,882.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:887.51,889.45 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:889.45,890.32 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:891.32,892.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:898.48,899.6 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:899.6,900.10 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:901.29,902.47 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:905.27,906.10 1 16 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:912.53,913.28 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:916.2,916.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:913.28,915.3 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:916.6,917.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:918.34,919.52 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:922.32,923.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:929.55,930.30 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:933.2,933.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:930.30,932.3 1 24 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:933.6,934.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:935.36,936.54 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:939.34,940.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/handler.go:956.51,965.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:75.68,88.2 2 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:91.33,99.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:103.55,109.2 4 2 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:112.55,118.2 4 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:122.44,124.52 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:127.2,127.25 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:124.52,126.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:132.50,134.46 1 2 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:137.2,137.22 1 2 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:134.46,136.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:142.55,144.56 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:147.2,147.27 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:144.56,146.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:152.57,154.60 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:157.2,157.29 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:154.60,156.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:162.63,163.25 1 60 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:166.2,166.35 1 60 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:163.25,165.3 1 600 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:171.73,172.25 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:175.2,175.40 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:172.25,174.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:180.77,181.25 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:184.2,184.42 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:181.25,183.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:189.81,190.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:193.2,194.35 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:198.2,198.51 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:190.30,192.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:194.35,197.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:202.68,204.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:204.21,206.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:206.8,208.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:212.64,213.21 1 74 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:213.21,215.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:215.8,217.3 1 74 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:221.59,222.21 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:222.21,224.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:224.8,226.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:231.64,232.21 1 16 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:232.21,234.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:234.8,236.3 1 16 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:241.50,242.21 1 5 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:242.21,244.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:244.8,246.3 1 5 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:251.63,252.21 1 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:252.21,254.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:254.8,256.3 1 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:261.57,263.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:263.21,265.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:265.8,267.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:272.99,274.21 2 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:274.21,276.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:276.8,278.3 1 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:283.96,285.21 2 17 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:285.21,287.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:287.8,289.3 1 17 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:294.58,296.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:296.21,298.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:298.8,300.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:305.60,307.21 2 4 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:307.21,309.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:309.8,311.3 1 4 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:315.60,317.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:317.21,319.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:319.8,321.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:326.100,331.12 3 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:340.2,340.12 1 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:343.2,345.25 3 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:355.2,356.12 2 22 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:331.12,339.3 1 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:340.12,342.3 1 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:345.25,346.10 1 52 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:347.22,348.18 1 52 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:351.20,352.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:348.18,350.5 1 8 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:359.96,361.16 2 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:364.2,364.27 1 30 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:367.2,367.35 1 28 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:371.2,371.44 1 28 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:374.2,374.36 1 28 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:377.2,377.33 1 26 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:380.2,380.46 1 24 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:383.2,383.12 1 22 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:361.16,363.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:364.27,366.3 1 2 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:367.35,369.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:371.44,373.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:374.36,376.3 1 2 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:377.33,379.3 1 2 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:380.46,382.3 1 2 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:387.32,391.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:402.28,406.2 1 26 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:410.44,414.15 3 22 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:417.2,417.41 1 22 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:426.2,427.12 2 22 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:414.15,416.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:417.41,418.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:421.3,424.28 4 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:418.30,420.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:432.48,436.32 3 20 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:439.2,440.12 2 20 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:436.32,438.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:444.42,449.2 3 22 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:452.30,457.2 3 64 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:461.64,466.29 4 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:471.2,471.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:466.29,467.36 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:467.36,469.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:476.61,481.29 4 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:486.2,486.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:481.29,482.33 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:482.33,484.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:491.66,496.29 4 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:501.2,501.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:496.29,497.38 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:497.38,499.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:506.68,511.29 4 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:516.2,516.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:511.29,512.40 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:512.40,514.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:520.37,528.29 4 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:533.2,533.17 1 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:528.29,529.63 1 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:529.63,531.4 1 1 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:538.28,542.29 3 16 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:545.2,545.18 1 16 -github.com/XinFinOrg/XDPoSChain/eth/peer.go:542.29,544.3 1 6 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:82.34,84.2 1 16 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:169.54,170.32 1 91 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:173.2,173.20 1 38 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:176.2,176.31 1 37 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:170.32,172.3 1 53 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:173.20,175.3 1 1 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:181.56,184.16 3 78 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:194.2,194.12 1 78 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:184.16,185.10 1 78 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:186.19,187.43 1 37 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:188.18,189.45 1 41 -github.com/XinFinOrg/XDPoSChain/eth/protocol.go:190.11,191.62 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:46.54,49.32 3 22 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:52.2,52.19 1 22 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:55.2,55.9 1 6 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:49.32,51.3 1 6 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:52.19,54.3 1 16 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:56.38,56.38 0 6 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:57.21,57.21 0 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:65.41,74.26 2 24 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:95.2,95.25 1 24 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:108.2,108.6 1 24 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:74.26,79.60 4 60 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:84.3,85.22 2 60 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:89.3,91.13 3 60 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:79.60,82.4 2 600 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:85.22,87.4 1 6 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:91.13,91.58 1 60 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:95.25,96.24 1 60 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:99.3,100.29 2 58 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:105.3,105.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:96.24,98.4 1 2 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:100.29,101.19 1 104 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:101.19,103.5 1 58 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:108.6,109.10 1 90 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:110.27,112.16 2 6 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:115.22,118.18 2 60 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:123.4,123.29 1 60 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:126.22,127.10 1 16 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:112.16,114.5 1 2 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:118.18,121.5 2 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:123.29,125.5 1 58 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:134.37,144.6 6 24 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:144.6,145.10 1 52 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:146.23,148.44 1 28 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:151.4,151.42 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:153.22,155.42 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:157.25,158.10 1 16 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:148.44,149.10 1 28 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:164.52,166.17 1 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:170.2,173.22 4 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:177.2,178.42 2 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:191.2,191.33 1 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:199.2,199.77 1 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:202.2,202.42 1 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:206.2,206.38 1 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:166.17,168.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:173.22,175.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:178.42,181.3 1 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:181.8,181.94 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:181.94,189.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:191.33,193.87 1 1 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:193.87,195.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:199.77,201.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/sync.go:202.42,205.3 2 1 -github.com/XinFinOrg/XDPoSChain/eth/api.go:48.59,50.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:53.67,55.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:58.66,60.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:63.57,65.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:75.53,80.2 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:83.42,85.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:89.98,91.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:97.57,98.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:103.2,104.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:107.2,107.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:98.24,99.51 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:99.51,101.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:104.16,106.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:113.89,116.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:125.55,127.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:133.55,135.20 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:140.2,143.43 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:148.2,148.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:157.2,157.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:135.20,137.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:137.8,137.26 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:137.26,139.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:143.43,146.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:148.24,156.3 5 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:161.41,165.43 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:168.2,169.13 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:165.43,167.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:173.66,174.62 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:177.2,177.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:174.62,176.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:181.68,188.2 5 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:191.73,194.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:197.50,199.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:209.57,211.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:214.68,217.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:220.2,223.36 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:229.2,229.60 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:232.2,232.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:217.16,219.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:223.36,226.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:229.60,231.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:235.67,236.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:242.2,242.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:236.23,237.47 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:237.47,239.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:246.68,249.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:252.2,255.36 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:262.2,265.28 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:291.2,291.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:249.16,251.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:255.36,256.55 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:256.55,258.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:265.28,267.33 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:277.3,277.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:281.3,281.49 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:286.3,286.69 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:289.3,289.22 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:267.33,269.50 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:274.4,275.11 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:269.50,270.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:271.10,271.25 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:271.25,273.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:277.23,278.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:281.49,283.12 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:286.69,288.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:302.55,304.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:307.83,308.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:315.2,316.38 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:321.2,321.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:324.2,325.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:328.2,328.31 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:308.39,314.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:316.38,318.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:318.8,320.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:321.18,323.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:325.16,327.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:340.85,342.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:345.100,348.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:352.92,354.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:370.200,372.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:375.2,376.15 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:379.2,379.48 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:372.16,374.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:376.15,378.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:382.93,385.46 3 5 -github.com/XinFinOrg/XDPoSChain/eth/api.go:398.2,398.15 1 5 -github.com/XinFinOrg/XDPoSChain/eth/api.go:402.2,402.20 1 5 -github.com/XinFinOrg/XDPoSChain/eth/api.go:385.46,387.17 2 12 -github.com/XinFinOrg/XDPoSChain/eth/api.go:390.3,391.53 2 12 -github.com/XinFinOrg/XDPoSChain/eth/api.go:395.3,395.49 1 12 -github.com/XinFinOrg/XDPoSChain/eth/api.go:387.17,389.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:391.53,394.4 2 12 -github.com/XinFinOrg/XDPoSChain/eth/api.go:398.15,401.3 2 3 -github.com/XinFinOrg/XDPoSChain/eth/api.go:410.116,414.23 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:418.2,418.19 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:430.2,430.54 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:414.23,416.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:418.19,421.24 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:421.24,423.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:424.8,426.22 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:426.22,428.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:438.126,441.23 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:445.2,445.20 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:457.2,457.54 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:441.23,443.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:445.20,448.24 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:448.24,450.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:451.8,453.22 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:453.22,455.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:460.110,461.64 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:465.2,466.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:469.2,470.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:474.2,478.18 4 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:485.2,485.19 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:461.64,463.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:466.16,468.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:470.16,472.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:478.18,480.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:483.3,483.52 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:480.17,482.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:488.56,490.92 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:493.2,493.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:490.92,492.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:497.145,499.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:502.2,502.40 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api.go:499.16,501.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:114.47,117.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:121.126,122.45 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:125.2,125.32 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:128.2,129.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:132.2,133.79 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:137.2,154.21 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:157.2,157.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:160.2,162.32 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:169.2,173.34 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:182.2,183.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:187.2,187.62 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:192.2,194.33 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:197.2,200.115 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:219.2,219.212 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:222.2,227.30 5 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:230.2,235.34 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:591.2,591.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:122.45,124.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:125.32,127.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:129.16,131.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:133.79,135.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:154.21,156.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:157.24,159.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:162.32,164.60 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:167.3,167.63 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:164.60,166.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:173.34,175.50 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:178.3,178.53 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:175.50,177.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:178.53,180.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:183.16,185.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:187.62,191.3 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:194.33,196.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:200.115,204.51 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:210.3,210.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:204.51,205.158 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:205.158,207.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:210.23,212.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:212.18,215.5 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:219.212,221.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:227.30,229.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:235.34,237.46 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:255.3,255.78 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:287.3,295.170 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:349.3,349.93 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:395.3,395.112 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:441.3,441.149 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:549.3,549.99 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:561.3,561.89 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:577.3,577.59 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:237.46,239.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:243.4,244.11 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:247.4,247.98 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:252.4,252.14 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:239.18,242.5 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:244.11,246.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:247.98,248.124 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:248.124,250.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:255.78,257.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:261.4,262.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:265.4,266.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:269.4,269.16 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:284.4,284.28 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:257.18,260.5 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:262.18,264.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:266.18,268.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:269.16,271.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:275.5,277.37 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:281.5,282.102 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:271.19,274.6 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:277.37,280.6 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:295.170,299.50 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:303.4,304.90 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:342.4,342.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:299.50,302.5 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:304.90,315.19 7 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:318.5,320.19 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:324.5,325.25 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:339.5,340.128 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:315.19,317.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:320.19,322.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:325.25,326.52 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:326.52,328.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:331.7,331.27 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:336.7,336.37 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:328.21,330.8 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:331.27,332.44 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:332.44,334.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:349.93,351.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:354.4,356.18 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:359.4,368.18 5 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:371.4,371.47 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:381.4,381.47 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:384.4,384.29 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:387.4,388.41 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:391.4,391.22 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:351.18,353.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:356.18,358.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:368.18,370.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:371.47,373.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:376.5,376.73 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:373.19,375.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:376.73,378.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:381.47,383.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:384.29,386.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:388.41,390.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:395.112,397.43 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:400.4,401.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:437.4,437.34 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:397.43,399.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:401.21,405.28 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:434.5,435.27 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:405.28,407.50 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:407.50,408.87 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:408.87,412.31 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:412.31,414.23 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:417.9,417.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:414.23,416.10 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:417.39,419.51 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:419.51,420.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:420.43,421.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:421.30,424.13 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:428.14,429.14 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:441.149,445.47 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:448.4,448.21 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:546.4,546.34 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:445.47,447.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:448.21,458.61 7 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:474.5,477.42 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:483.5,483.41 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:491.5,492.25 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:505.5,506.56 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:539.5,541.53 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:544.5,544.29 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:458.61,462.15 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:467.6,470.35 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:462.15,464.7 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:464.12,466.7 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:477.42,478.50 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:478.50,481.7 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:483.41,484.46 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:484.46,487.7 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:492.25,495.41 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:495.41,496.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:496.39,497.28 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:497.28,499.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:506.56,507.31 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:507.31,510.49 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:513.7,514.14 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:519.7,521.30 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:510.49,512.8 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:514.14,518.8 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:521.30,524.33 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:524.33,525.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:525.43,526.26 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:526.26,529.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:534.12,535.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:541.53,543.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:549.99,552.18 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:555.4,557.26 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:552.18,554.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:561.89,563.59 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:574.4,574.14 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:563.59,567.19 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:570.5,570.52 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:567.19,569.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:570.52,572.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:577.59,583.27 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:587.4,587.65 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:583.27,586.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:594.41,595.21 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:604.2,604.54 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:608.2,608.14 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:595.21,603.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:604.54,607.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:612.94,614.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:617.2,617.16 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:614.16,616.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:621.146,623.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:628.2,628.9 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:623.30,625.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:629.41,631.27 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:632.41,634.28 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:635.43,637.28 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:638.10,648.16 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:654.37,707.2 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:709.59,711.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:713.63,718.37 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:721.2,721.63 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:733.2,733.79 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:718.37,720.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:721.63,722.59 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:722.59,731.4 6 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:737.62,743.2 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:746.55,748.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:751.2,751.32 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:763.2,763.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:748.16,750.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:751.32,756.18 3 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:756.18,759.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:760.8,762.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:767.62,769.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:772.2,772.32 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:775.2,780.32 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:785.2,785.19 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:769.16,771.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:772.32,774.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:780.32,781.14 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:781.14,783.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:788.51,790.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:794.2,794.46 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:802.2,802.11 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:809.2,810.12 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:790.16,793.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:794.46,796.34 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:800.3,800.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:796.34,799.4 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:802.11,808.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:813.34,815.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:816.41,816.68 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:817.41,817.59 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:819.56,819.83 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:820.56,820.79 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:821.56,821.75 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:822.56,822.77 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:823.56,823.75 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:824.56,824.76 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:825.56,825.71 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:826.56,826.113 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:827.56,827.78 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:828.56,828.95 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:832.47,833.24 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:836.2,836.75 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:833.24,835.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:841.50,850.28 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:857.2,858.24 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:861.2,861.12 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:850.28,851.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:854.3,854.34 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:851.43,853.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:858.24,860.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:863.31,865.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:869.33,873.24 4 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:876.2,883.12 6 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:873.24,875.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:886.87,887.30 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:890.2,891.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:897.2,898.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:901.2,902.20 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:917.2,917.32 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:887.30,889.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:891.16,893.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:898.16,900.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:902.20,903.36 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:911.3,912.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:915.3,915.49 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:903.36,905.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:908.4,908.43 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:905.18,907.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:912.17,914.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:920.118,921.91 1 100 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:925.2,925.57 1 100 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:928.2,928.30 1 100 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:932.2,932.20 1 100 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:921.91,923.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:925.57,927.3 1 30 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:928.30,930.3 1 50 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:935.34,937.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:939.41,941.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:943.48,945.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:947.58,949.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/backend.go:952.52,954.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/config.go:60.13,62.16 2 1 -github.com/XinFinOrg/XDPoSChain/eth/config.go:67.2,67.31 1 1 -github.com/XinFinOrg/XDPoSChain/eth/config.go:62.16,63.46 1 0 -github.com/XinFinOrg/XDPoSChain/eth/config.go:63.46,65.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/config.go:67.31,69.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/config.go:69.8,71.3 1 1 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:68.66,69.22 1 30 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:72.2,72.49 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:69.22,71.3 1 30 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:77.51,79.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:81.60,84.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:88.2,89.9 2 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:107.2,110.17 3 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:84.16,86.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:90.35,91.70 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:92.34,93.66 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:95.54,96.68 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:97.54,98.72 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:100.37,101.68 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:102.31,103.70 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:104.25,105.66 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:113.61,116.9 2 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:134.2,138.39 3 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:117.35,118.72 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:119.34,120.68 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:122.54,123.70 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:124.54,125.74 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:127.37,128.70 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:129.31,130.72 1 0 -github.com/XinFinOrg/XDPoSChain/eth/metrics.go:131.25,132.68 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:62.59,64.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:66.53,68.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:70.48,73.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:75.109,77.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:82.2,82.38 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:85.2,85.65 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:77.39,80.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:82.38,84.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:88.107,90.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:95.2,95.38 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:98.2,98.64 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:90.39,93.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:95.38,97.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:101.133,103.39 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:108.2,109.33 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:112.2,113.29 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:103.39,106.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:109.33,111.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:116.100,118.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:120.105,122.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:124.101,126.21 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:129.2,130.35 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:133.2,133.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:126.21,128.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:130.35,132.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:136.63,138.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:140.203,142.26 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:144.2,145.85 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:142.26,142.40 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:148.103,150.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:152.91,154.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:156.99,158.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:160.99,162.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:164.87,166.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:168.88,170.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:173.98,175.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:178.102,180.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:182.75,184.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:187.2,188.32 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:191.2,191.17 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:184.16,186.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:188.32,190.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:194.81,196.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:198.96,200.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:202.59,204.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:206.120,208.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:210.135,212.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:213.64,215.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:217.91,219.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:221.61,223.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:225.47,227.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:229.77,231.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:233.50,235.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:237.51,239.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:241.60,243.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:245.56,248.2 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:250.95,251.42 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:251.42,253.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:256.67,258.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:262.2,262.20 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:258.16,260.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:265.54,267.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:269.101,271.19 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:290.2,290.56 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:271.19,273.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:273.17,276.18 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:276.18,278.5 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:279.9,281.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:281.18,284.19 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:284.19,286.6 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:301.101,312.16 10 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:317.2,317.48 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:322.2,322.118 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:328.2,333.16 5 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:338.2,339.16 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:344.2,344.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:349.2,350.48 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:362.2,362.21 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:312.16,315.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:317.48,320.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:322.118,324.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:333.16,336.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:339.16,342.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:344.23,346.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:350.48,351.31 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:351.31,353.18 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:357.4,358.9 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:353.18,356.5 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:367.139,372.16 4 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:377.2,378.34 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:382.2,382.18 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:372.16,375.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:378.34,381.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:387.53,397.2 8 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:400.90,404.16 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:409.2,412.39 3 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:416.2,416.23 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:404.16,407.3 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:412.39,414.3 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:419.74,421.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:423.84,425.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:428.76,430.24 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:441.2,441.50 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:430.24,432.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:435.3,436.17 2 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:439.3,439.42 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:432.17,434.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:436.17,438.4 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:444.50,446.2 1 0 -github.com/XinFinOrg/XDPoSChain/eth/api_backend.go:448.63,450.2 1 0 diff --git a/eth/api_backend.go b/eth/api_backend.go index cb249b67ab..e7c102f67e 100644 --- a/eth/api_backend.go +++ b/eth/api_backend.go @@ -46,6 +46,7 @@ import ( "github.com/XinFinOrg/XDPoSChain/core/vm" "github.com/XinFinOrg/XDPoSChain/eth/downloader" "github.com/XinFinOrg/XDPoSChain/eth/gasprice" + "github.com/XinFinOrg/XDPoSChain/eth/util" "github.com/XinFinOrg/XDPoSChain/ethdb" "github.com/XinFinOrg/XDPoSChain/event" "github.com/XinFinOrg/XDPoSChain/log" @@ -327,7 +328,7 @@ func (b *EthApiBackend) GetVotersRewards(masternodeAddr common.Address) map[comm // Get signers in blockSigner smartcontract. // Get reward inflation. chainReward := new(big.Int).Mul(new(big.Int).SetUint64(chain.Config().XDPoS.Reward), new(big.Int).SetUint64(params.Ether)) - chainReward = rewardInflation(chain, chainReward, number, common.BlocksPerYear) + chainReward = util.RewardInflation(chain, chainReward, number, common.BlocksPerYear) totalSigner := new(uint64) signers, err := contracts.GetRewardForCheckpoint(engine, chain, lastCheckpointBlock.Header(), rCheckpoint, totalSigner) diff --git a/eth/backend.go b/eth/backend.go index dedebe7cb8..e0fbf2ffb8 100644 --- a/eth/backend.go +++ b/eth/backend.go @@ -22,21 +22,16 @@ import ( "fmt" "math/big" "runtime" - "sort" "sync" "sync/atomic" - "time" "github.com/XinFinOrg/XDPoSChain/XDCxlending" - "github.com/XinFinOrg/XDPoSChain/accounts/abi/bind" "github.com/XinFinOrg/XDPoSChain/common/hexutil" - "github.com/XinFinOrg/XDPoSChain/core/state" "github.com/XinFinOrg/XDPoSChain/eth/filters" + "github.com/XinFinOrg/XDPoSChain/eth/hooks" "github.com/XinFinOrg/XDPoSChain/rlp" - "bytes" - "github.com/XinFinOrg/XDPoSChain/accounts" "github.com/XinFinOrg/XDPoSChain/common" "github.com/XinFinOrg/XDPoSChain/consensus" @@ -44,7 +39,6 @@ import ( "github.com/XinFinOrg/XDPoSChain/consensus/XDPoS/utils" "github.com/XinFinOrg/XDPoSChain/consensus/ethash" "github.com/XinFinOrg/XDPoSChain/contracts" - contractValidator "github.com/XinFinOrg/XDPoSChain/contracts/validator/contract" "github.com/XinFinOrg/XDPoSChain/core" "github.com/XinFinOrg/XDPoSChain/core/bloombits" @@ -290,289 +284,7 @@ func New(ctx *node.ServiceContext, config *Config, XDCXServ *XDCx.XDCX, lendingS /* XDPoS1.0 Specific hooks */ - - // Hook calculates reward for masternodes - c.EngineV1.HookReward = func(chain consensus.ChainReader, stateBlock *state.StateDB, parentState *state.StateDB, header *types.Header) (error, map[string]interface{}) { - number := header.Number.Uint64() - rCheckpoint := chain.Config().XDPoS.RewardCheckpoint - foundationWalletAddr := chain.Config().XDPoS.FoudationWalletAddr - if foundationWalletAddr == (common.Address{}) { - log.Error("Foundation Wallet Address is empty", "error", foundationWalletAddr) - return errors.New("Foundation Wallet Address is empty"), nil - } - rewards := make(map[string]interface{}) - if number > 0 && number-rCheckpoint > 0 && foundationWalletAddr != (common.Address{}) { - start := time.Now() - // Get signers in blockSigner smartcontract. - // Get reward inflation. - chainReward := new(big.Int).Mul(new(big.Int).SetUint64(chain.Config().XDPoS.Reward), new(big.Int).SetUint64(params.Ether)) - chainReward = rewardInflation(chain, chainReward, number, common.BlocksPerYear) - - totalSigner := new(uint64) - signers, err := contracts.GetRewardForCheckpoint(c, chain, header, rCheckpoint, totalSigner) - - log.Debug("Time Get Signers", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) - if err != nil { - log.Crit("Fail to get signers for reward checkpoint", "error", err) - } - rewards["signers"] = signers - rewardSigners, err := contracts.CalculateRewardForSigner(chainReward, signers, *totalSigner) - if err != nil { - log.Crit("Fail to calculate reward for signers", "error", err) - } - // Add reward for coin holders. - voterResults := make(map[common.Address]interface{}) - if len(signers) > 0 { - for signer, calcReward := range rewardSigners { - err, rewards := contracts.CalculateRewardForHolders(foundationWalletAddr, parentState, signer, calcReward, number) - if err != nil { - log.Crit("Fail to calculate reward for holders.", "error", err) - } - if len(rewards) > 0 { - for holder, reward := range rewards { - stateBlock.AddBalance(holder, reward) - } - } - voterResults[signer] = rewards - } - } - rewards["rewards"] = voterResults - log.Debug("Time Calculated HookReward ", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) - } - return nil, rewards - } - - /* - HookGetSignersFromContract return list masternode for current state (block) - This is a solution for work around issue return wrong list signers from snapshot - */ - c.EngineV1.HookGetSignersFromContract = func(block common.Hash) ([]common.Address, error) { - client, err := eth.blockchain.GetClient() - if err != nil { - return nil, err - } - addr := common.HexToAddress(common.MasternodeVotingSMC) - validator, err := contractValidator.NewXDCValidator(addr, client) - if err != nil { - return nil, err - } - opts := new(bind.CallOpts) - var ( - candidateAddresses []common.Address - candidates []utils.Masternode - ) - - stateDB, err := eth.blockchain.StateAt(eth.blockchain.GetBlockByHash(block).Root()) - candidateAddresses = state.GetCandidates(stateDB) - - if err != nil { - return nil, err - } - for _, address := range candidateAddresses { - v, err := validator.GetCandidateCap(opts, address) - if err != nil { - return nil, err - } - if address.String() != "0x0000000000000000000000000000000000000000" { - candidates = append(candidates, utils.Masternode{Address: address, Stake: v}) - } - } - // sort candidates by stake descending - sort.Slice(candidates, func(i, j int) bool { - return candidates[i].Stake.Cmp(candidates[j].Stake) >= 0 - }) - if len(candidates) > 150 { - candidates = candidates[:150] - } - result := []common.Address{} - for _, candidate := range candidates { - result = append(result, candidate.Address) - } - return result, nil - } - - // Hook scans for bad masternodes and decide to penalty them - c.EngineV1.HookPenalty = func(chain consensus.ChainReader, blockNumberEpoc uint64) ([]common.Address, error) { - canonicalState, err := eth.blockchain.State() - if canonicalState == nil || err != nil { - log.Crit("Can't get state at head of canonical chain", "head number", eth.blockchain.CurrentHeader().Number.Uint64(), "err", err) - } - prevEpoc := blockNumberEpoc - chain.Config().XDPoS.Epoch - if prevEpoc >= 0 { - start := time.Now() - prevHeader := chain.GetHeaderByNumber(prevEpoc) - penSigners := c.GetMasternodes(chain, prevHeader) - if len(penSigners) > 0 { - // Loop for each block to check missing sign. - for i := prevEpoc; i < blockNumberEpoc; i++ { - if i%common.MergeSignRange == 0 || !chainConfig.IsTIP2019(big.NewInt(int64(i))) { - bheader := chain.GetHeaderByNumber(i) - bhash := bheader.Hash() - block := chain.GetBlock(bhash, i) - if len(penSigners) > 0 { - signedMasternodes, err := contracts.GetSignersFromContract(canonicalState, block) - if err != nil { - return nil, err - } - if len(signedMasternodes) > 0 { - // Check signer signed? - for _, signed := range signedMasternodes { - for j, addr := range penSigners { - if signed == addr { - // Remove it from dupSigners. - penSigners = append(penSigners[:j], penSigners[j+1:]...) - } - } - } - } - } else { - break - } - } - } - } - log.Debug("Time Calculated HookPenalty ", "block", blockNumberEpoc, "time", common.PrettyDuration(time.Since(start))) - return penSigners, nil - } - return []common.Address{}, nil - } - - // Hook scans for bad masternodes and decide to penalty them - c.EngineV1.HookPenaltyTIPSigning = func(chain consensus.ChainReader, header *types.Header, candidates []common.Address) ([]common.Address, error) { - prevEpoc := header.Number.Uint64() - chain.Config().XDPoS.Epoch - combackEpoch := uint64(0) - comebackLength := (common.LimitPenaltyEpoch + 1) * chain.Config().XDPoS.Epoch - if header.Number.Uint64() > comebackLength { - combackEpoch = header.Number.Uint64() - comebackLength - } - if prevEpoc >= 0 { - start := time.Now() - - listBlockHash := make([]common.Hash, chain.Config().XDPoS.Epoch) - - // get list block hash & stats total created block - statMiners := make(map[common.Address]int) - listBlockHash[0] = header.ParentHash - parentnumber := header.Number.Uint64() - 1 - parentHash := header.ParentHash - for i := uint64(1); i < chain.Config().XDPoS.Epoch; i++ { - parentHeader := chain.GetHeader(parentHash, parentnumber) - miner, _ := c.RecoverSigner(parentHeader) - value, exist := statMiners[miner] - if exist { - value = value + 1 - } else { - value = 1 - } - statMiners[miner] = value - parentHash = parentHeader.ParentHash - parentnumber-- - listBlockHash[i] = parentHash - } - - // add list not miner to penalties - prevHeader := chain.GetHeaderByNumber(prevEpoc) - preMasternodes := c.GetMasternodes(chain, prevHeader) - penalties := []common.Address{} - for miner, total := range statMiners { - if total < common.MinimunMinerBlockPerEpoch { - log.Debug("Find a node not enough requirement create block", "addr", miner.Hex(), "total", total) - penalties = append(penalties, miner) - } - } - for _, addr := range preMasternodes { - if _, exist := statMiners[addr]; !exist { - log.Debug("Find a node don't create block", "addr", addr.Hex()) - penalties = append(penalties, addr) - } - } - - // get list check penalties signing block & list master nodes wil comeback - penComebacks := []common.Address{} - if combackEpoch > 0 { - combackHeader := chain.GetHeaderByNumber(combackEpoch) - penalties := common.ExtractAddressFromBytes(combackHeader.Penalties) - for _, penaltie := range penalties { - for _, addr := range candidates { - if penaltie == addr { - penComebacks = append(penComebacks, penaltie) - } - } - } - } - - // Loop for each block to check missing sign. with comeback nodes - mapBlockHash := map[common.Hash]bool{} - for i := common.RangeReturnSigner - 1; i >= 0; i-- { - if len(penComebacks) > 0 { - blockNumber := header.Number.Uint64() - uint64(i) - 1 - bhash := listBlockHash[i] - if blockNumber%common.MergeSignRange == 0 { - mapBlockHash[bhash] = true - } - signData, ok := c.GetCachedSignerData(bhash) - if !ok { - block := chain.GetBlock(bhash, blockNumber) - txs := block.Transactions() - signData = c.CacheSigningTxs(bhash, txs) - } - txs := signData.([]*types.Transaction) - // Check signer signed? - for _, tx := range txs { - blkHash := common.BytesToHash(tx.Data()[len(tx.Data())-32:]) - from := *tx.From() - if mapBlockHash[blkHash] { - for j, addr := range penComebacks { - if from == addr { - // Remove it from dupSigners. - penComebacks = append(penComebacks[:j], penComebacks[j+1:]...) - break - } - } - } - } - } else { - break - } - } - - log.Debug("Time Calculated HookPenaltyTIPSigning ", "block", header.Number, "hash", header.Hash().Hex(), "pen comeback nodes", len(penComebacks), "not enough miner", len(penalties), "time", common.PrettyDuration(time.Since(start))) - penalties = append(penalties, penComebacks...) - if chain.Config().IsTIPRandomize(header.Number) { - return penalties, nil - } - return penComebacks, nil - } - return []common.Address{}, nil - } - // Hook prepares validators M2 for the current epoch at checkpoint block - c.EngineV1.HookValidator = func(header *types.Header, signers []common.Address) ([]byte, error) { - start := time.Now() - validators, err := getValidators(eth.blockchain, signers) - if err != nil { - return []byte{}, err - } - header.Validators = validators - log.Debug("Time Calculated HookValidator ", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) - return validators, nil - } - - // Hook verifies masternodes set - c.EngineV1.HookVerifyMNs = func(header *types.Header, signers []common.Address) error { - number := header.Number.Int64() - if number > 0 && number%common.EpocBlockRandomize == 0 { - start := time.Now() - validators, err := getValidators(eth.blockchain, signers) - log.Debug("Time Calculated HookVerifyMNs ", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) - if err != nil { - return err - } - if !bytes.Equal(header.Validators, validators) { - return utils.ErrInvalidCheckpointValidators - } - } - return nil - } + hooks.AttachConsensusV1Hooks(c, eth.blockchain, chainConfig) eth.txPool.IsSigner = func(address common.Address) bool { currentHeader := eth.blockchain.CurrentHeader() @@ -883,55 +595,6 @@ func (s *Ethereum) Stop() error { return nil } -func getValidators(bc *core.BlockChain, masternodes []common.Address) ([]byte, error) { - if bc.Config().XDPoS == nil { - return nil, core.ErrNotXDPoS - } - client, err := bc.GetClient() - if err != nil { - return nil, err - } - // Check m2 exists on chaindb. - // Get secrets and opening at epoc block checkpoint. - - var candidates []int64 - if err != nil { - return nil, err - } - lenSigners := int64(len(masternodes)) - if lenSigners > 0 { - for _, addr := range masternodes { - random, err := contracts.GetRandomizeFromContract(client, addr) - if err != nil { - return nil, err - } - candidates = append(candidates, random) - } - // Get randomize m2 list. - m2, err := contracts.GenM2FromRandomize(candidates, lenSigners) - if err != nil { - return nil, err - } - return contracts.BuildValidatorFromM2(m2), nil - } - return nil, core.ErrNotFoundM1 -} - -func rewardInflation(chain consensus.ChainReader, chainReward *big.Int, number uint64, blockPerYear uint64) *big.Int { - if chain != nil && chain.Config().IsTIPNoHalvingMNReward(new(big.Int).SetUint64(number)) { - return chainReward - } - - if blockPerYear*2 <= number && number < blockPerYear*5 { - chainReward.Div(chainReward, new(big.Int).SetUint64(2)) - } - if blockPerYear*5 <= number { - chainReward.Div(chainReward, new(big.Int).SetUint64(4)) - } - - return chainReward -} - func (s *Ethereum) GetPeer() int { return len(s.protocolManager.peers.peers) } diff --git a/eth/backend_test.go b/eth/backend_test.go index dde66b130e..dd787d7986 100644 --- a/eth/backend_test.go +++ b/eth/backend_test.go @@ -4,6 +4,7 @@ import ( "math/big" "testing" + "github.com/XinFinOrg/XDPoSChain/eth/util" "github.com/XinFinOrg/XDPoSChain/params" ) @@ -11,7 +12,7 @@ func TestRewardInflation(t *testing.T) { for i := 0; i < 100; i++ { // the first 2 years chainReward := new(big.Int).Mul(new(big.Int).SetUint64(250), new(big.Int).SetUint64(params.Ether)) - chainReward = rewardInflation(nil, chainReward, uint64(i), 10) + chainReward = util.RewardInflation(nil, chainReward, uint64(i), 10) // 3rd year, 4th year, 5th year halfReward := new(big.Int).Mul(new(big.Int).SetUint64(125), new(big.Int).SetUint64(params.Ether)) diff --git a/eth/hooks/engine_v1_hooks.go b/eth/hooks/engine_v1_hooks.go new file mode 100644 index 0000000000..8087526e2e --- /dev/null +++ b/eth/hooks/engine_v1_hooks.go @@ -0,0 +1,343 @@ +package hooks + +import ( + "bytes" + "errors" + "math/big" + "sort" + "time" + + "github.com/XinFinOrg/XDPoSChain/accounts/abi/bind" + "github.com/XinFinOrg/XDPoSChain/common" + "github.com/XinFinOrg/XDPoSChain/consensus" + "github.com/XinFinOrg/XDPoSChain/consensus/XDPoS" + "github.com/XinFinOrg/XDPoSChain/consensus/XDPoS/utils" + "github.com/XinFinOrg/XDPoSChain/contracts" + contractValidator "github.com/XinFinOrg/XDPoSChain/contracts/validator/contract" + "github.com/XinFinOrg/XDPoSChain/core" + "github.com/XinFinOrg/XDPoSChain/core/state" + "github.com/XinFinOrg/XDPoSChain/core/types" + "github.com/XinFinOrg/XDPoSChain/eth/util" + "github.com/XinFinOrg/XDPoSChain/log" + "github.com/XinFinOrg/XDPoSChain/params" +) + +func AttachConsensusV1Hooks(adaptor *XDPoS.XDPoS, bc *core.BlockChain, chainConfig *params.ChainConfig) { + // Hook scans for bad masternodes and decide to penalty them + adaptor.EngineV1.HookPenalty = func(chain consensus.ChainReader, blockNumberEpoc uint64) ([]common.Address, error) { + canonicalState, err := bc.State() + if canonicalState == nil || err != nil { + log.Crit("Can't get state at head of canonical chain", "head number", bc.CurrentHeader().Number.Uint64(), "err", err) + } + prevEpoc := blockNumberEpoc - chain.Config().XDPoS.Epoch + if prevEpoc >= 0 { + start := time.Now() + prevHeader := chain.GetHeaderByNumber(prevEpoc) + penSigners := adaptor.GetMasternodes(chain, prevHeader) + if len(penSigners) > 0 { + // Loop for each block to check missing sign. + for i := prevEpoc; i < blockNumberEpoc; i++ { + if i%common.MergeSignRange == 0 || !chainConfig.IsTIP2019(big.NewInt(int64(i))) { + bheader := chain.GetHeaderByNumber(i) + bhash := bheader.Hash() + block := chain.GetBlock(bhash, i) + if len(penSigners) > 0 { + signedMasternodes, err := contracts.GetSignersFromContract(canonicalState, block) + if err != nil { + return nil, err + } + if len(signedMasternodes) > 0 { + // Check signer signed? + for _, signed := range signedMasternodes { + for j, addr := range penSigners { + if signed == addr { + // Remove it from dupSigners. + penSigners = append(penSigners[:j], penSigners[j+1:]...) + } + } + } + } + } else { + break + } + } + } + } + log.Debug("Time Calculated HookPenalty ", "block", blockNumberEpoc, "time", common.PrettyDuration(time.Since(start))) + return penSigners, nil + } + return []common.Address{}, nil + } + + // Hook scans for bad masternodes and decide to penalty them + adaptor.EngineV1.HookPenaltyTIPSigning = func(chain consensus.ChainReader, header *types.Header, candidates []common.Address) ([]common.Address, error) { + prevEpoc := header.Number.Uint64() - chain.Config().XDPoS.Epoch + combackEpoch := uint64(0) + comebackLength := (common.LimitPenaltyEpoch + 1) * chain.Config().XDPoS.Epoch + if header.Number.Uint64() > comebackLength { + combackEpoch = header.Number.Uint64() - comebackLength + } + if prevEpoc >= 0 { + start := time.Now() + + listBlockHash := make([]common.Hash, chain.Config().XDPoS.Epoch) + + // get list block hash & stats total created block + statMiners := make(map[common.Address]int) + listBlockHash[0] = header.ParentHash + parentnumber := header.Number.Uint64() - 1 + parentHash := header.ParentHash + for i := uint64(1); i < chain.Config().XDPoS.Epoch; i++ { + parentHeader := chain.GetHeader(parentHash, parentnumber) + miner, _ := adaptor.RecoverSigner(parentHeader) + value, exist := statMiners[miner] + if exist { + value = value + 1 + } else { + value = 1 + } + statMiners[miner] = value + parentHash = parentHeader.ParentHash + parentnumber-- + listBlockHash[i] = parentHash + } + + // add list not miner to penalties + prevHeader := chain.GetHeaderByNumber(prevEpoc) + preMasternodes := adaptor.GetMasternodes(chain, prevHeader) + penalties := []common.Address{} + for miner, total := range statMiners { + if total < common.MinimunMinerBlockPerEpoch { + log.Debug("Find a node not enough requirement create block", "addr", miner.Hex(), "total", total) + penalties = append(penalties, miner) + } + } + for _, addr := range preMasternodes { + if _, exist := statMiners[addr]; !exist { + log.Debug("Find a node don't create block", "addr", addr.Hex()) + penalties = append(penalties, addr) + } + } + + // get list check penalties signing block & list master nodes wil comeback + penComebacks := []common.Address{} + if combackEpoch > 0 { + combackHeader := chain.GetHeaderByNumber(combackEpoch) + penalties := common.ExtractAddressFromBytes(combackHeader.Penalties) + for _, penaltie := range penalties { + for _, addr := range candidates { + if penaltie == addr { + penComebacks = append(penComebacks, penaltie) + } + } + } + } + + // Loop for each block to check missing sign. with comeback nodes + mapBlockHash := map[common.Hash]bool{} + for i := common.RangeReturnSigner - 1; i >= 0; i-- { + if len(penComebacks) > 0 { + blockNumber := header.Number.Uint64() - uint64(i) - 1 + bhash := listBlockHash[i] + if blockNumber%common.MergeSignRange == 0 { + mapBlockHash[bhash] = true + } + signData, ok := adaptor.GetCachedSignerData(bhash) + if !ok { + block := chain.GetBlock(bhash, blockNumber) + txs := block.Transactions() + signData = adaptor.CacheSigningTxs(bhash, txs) + } + txs := signData.([]*types.Transaction) + // Check signer signed? + for _, tx := range txs { + blkHash := common.BytesToHash(tx.Data()[len(tx.Data())-32:]) + from := *tx.From() + if mapBlockHash[blkHash] { + for j, addr := range penComebacks { + if from == addr { + // Remove it from dupSigners. + penComebacks = append(penComebacks[:j], penComebacks[j+1:]...) + break + } + } + } + } + } else { + break + } + } + + log.Debug("Time Calculated HookPenaltyTIPSigning ", "block", header.Number, "hash", header.Hash().Hex(), "pen comeback nodes", len(penComebacks), "not enough miner", len(penalties), "time", common.PrettyDuration(time.Since(start))) + penalties = append(penalties, penComebacks...) + if chain.Config().IsTIPRandomize(header.Number) { + return penalties, nil + } + return penComebacks, nil + } + return []common.Address{}, nil + } + + // Hook prepares validators M2 for the current epoch at checkpoint block + adaptor.EngineV1.HookValidator = func(header *types.Header, signers []common.Address) ([]byte, error) { + start := time.Now() + validators, err := getValidators(bc, signers) + if err != nil { + return []byte{}, err + } + header.Validators = validators + log.Debug("Time Calculated HookValidator ", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) + return validators, nil + } + + // Hook verifies masternodes set + adaptor.EngineV1.HookVerifyMNs = func(header *types.Header, signers []common.Address) error { + number := header.Number.Int64() + if number > 0 && number%common.EpocBlockRandomize == 0 { + start := time.Now() + validators, err := getValidators(bc, signers) + log.Debug("Time Calculated HookVerifyMNs ", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) + if err != nil { + return err + } + if !bytes.Equal(header.Validators, validators) { + return utils.ErrInvalidCheckpointValidators + } + } + return nil + } + + /* + HookGetSignersFromContract return list masternode for current state (block) + This is a solution for work around issue return wrong list signers from snapshot + */ + adaptor.EngineV1.HookGetSignersFromContract = func(block common.Hash) ([]common.Address, error) { + client, err := bc.GetClient() + if err != nil { + return nil, err + } + addr := common.HexToAddress(common.MasternodeVotingSMC) + validator, err := contractValidator.NewXDCValidator(addr, client) + if err != nil { + return nil, err + } + opts := new(bind.CallOpts) + var ( + candidateAddresses []common.Address + candidates []utils.Masternode + ) + + stateDB, err := bc.StateAt(bc.GetBlockByHash(block).Root()) + candidateAddresses = state.GetCandidates(stateDB) + + if err != nil { + return nil, err + } + for _, address := range candidateAddresses { + v, err := validator.GetCandidateCap(opts, address) + if err != nil { + return nil, err + } + if address.String() != "0x0000000000000000000000000000000000000000" { + candidates = append(candidates, utils.Masternode{Address: address, Stake: v}) + } + } + // sort candidates by stake descending + sort.Slice(candidates, func(i, j int) bool { + return candidates[i].Stake.Cmp(candidates[j].Stake) >= 0 + }) + if len(candidates) > 150 { + candidates = candidates[:150] + } + result := []common.Address{} + for _, candidate := range candidates { + result = append(result, candidate.Address) + } + return result, nil + } + + // Hook calculates reward for masternodes + adaptor.EngineV1.HookReward = func(chain consensus.ChainReader, stateBlock *state.StateDB, parentState *state.StateDB, header *types.Header) (error, map[string]interface{}) { + number := header.Number.Uint64() + rCheckpoint := chain.Config().XDPoS.RewardCheckpoint + foundationWalletAddr := chain.Config().XDPoS.FoudationWalletAddr + if foundationWalletAddr == (common.Address{}) { + log.Error("Foundation Wallet Address is empty", "error", foundationWalletAddr) + return errors.New("Foundation Wallet Address is empty"), nil + } + rewards := make(map[string]interface{}) + if number > 0 && number-rCheckpoint > 0 && foundationWalletAddr != (common.Address{}) { + start := time.Now() + // Get signers in blockSigner smartcontract. + // Get reward inflation. + chainReward := new(big.Int).Mul(new(big.Int).SetUint64(chain.Config().XDPoS.Reward), new(big.Int).SetUint64(params.Ether)) + chainReward = util.RewardInflation(chain, chainReward, number, common.BlocksPerYear) + + totalSigner := new(uint64) + signers, err := contracts.GetRewardForCheckpoint(adaptor, chain, header, rCheckpoint, totalSigner) + + log.Debug("Time Get Signers", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) + if err != nil { + log.Crit("Fail to get signers for reward checkpoint", "error", err) + } + rewards["signers"] = signers + rewardSigners, err := contracts.CalculateRewardForSigner(chainReward, signers, *totalSigner) + if err != nil { + log.Crit("Fail to calculate reward for signers", "error", err) + } + // Add reward for coin holders. + voterResults := make(map[common.Address]interface{}) + if len(signers) > 0 { + for signer, calcReward := range rewardSigners { + err, rewards := contracts.CalculateRewardForHolders(foundationWalletAddr, parentState, signer, calcReward, number) + if err != nil { + log.Crit("Fail to calculate reward for holders.", "error", err) + } + if len(rewards) > 0 { + for holder, reward := range rewards { + stateBlock.AddBalance(holder, reward) + } + } + voterResults[signer] = rewards + } + } + rewards["rewards"] = voterResults + log.Debug("Time Calculated HookReward ", "block", header.Number.Uint64(), "time", common.PrettyDuration(time.Since(start))) + } + return nil, rewards + } +} + +func getValidators(bc *core.BlockChain, masternodes []common.Address) ([]byte, error) { + if bc.Config().XDPoS == nil { + return nil, core.ErrNotXDPoS + } + client, err := bc.GetClient() + if err != nil { + return nil, err + } + // Check m2 exists on chaindb. + // Get secrets and opening at epoc block checkpoint. + + var candidates []int64 + if err != nil { + return nil, err + } + lenSigners := int64(len(masternodes)) + if lenSigners > 0 { + for _, addr := range masternodes { + random, err := contracts.GetRandomizeFromContract(client, addr) + if err != nil { + return nil, err + } + candidates = append(candidates, random) + } + // Get randomize m2 list. + m2, err := contracts.GenM2FromRandomize(candidates, lenSigners) + if err != nil { + return nil, err + } + return contracts.BuildValidatorFromM2(m2), nil + } + return nil, core.ErrNotFoundM1 +} diff --git a/eth/util/util.go b/eth/util/util.go new file mode 100644 index 0000000000..317f8d2079 --- /dev/null +++ b/eth/util/util.go @@ -0,0 +1,22 @@ +package util + +import ( + "math/big" + + "github.com/XinFinOrg/XDPoSChain/consensus" +) + +func RewardInflation(chain consensus.ChainReader, chainReward *big.Int, number uint64, blockPerYear uint64) *big.Int { + if chain != nil && chain.Config().IsTIPNoHalvingMNReward(new(big.Int).SetUint64(number)) { + return chainReward + } + + if blockPerYear*2 <= number && number < blockPerYear*5 { + chainReward.Div(chainReward, new(big.Int).SetUint64(2)) + } + if blockPerYear*5 <= number { + chainReward.Div(chainReward, new(big.Int).SetUint64(4)) + } + + return chainReward +}