From afc01df41cafd3a8b56db9f32e23da3bf0e6b7ef Mon Sep 17 00:00:00 2001 From: Sonic Date: Tue, 20 Nov 2018 14:13:53 +0800 Subject: dex: implement downloader for dex We need governance state to verify block's signature (randomness), but in ethereum fast sync mode, eth downloader only downloads the whole state of pivot block, so we don't have governance state to verify the downloaded block that is before pivot block if we don't processing transaction. To avoid running transactions, dex downloader also downloads the governance state (merkle proof and storage) at snapshot height of each round, so that we can verify blocks in fast sync mode. --- dex/governance.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'dex/governance.go') diff --git a/dex/governance.go b/dex/governance.go index db33f7820..01f39b68c 100644 --- a/dex/governance.go +++ b/dex/governance.go @@ -46,7 +46,7 @@ func NewDexconGovernance(backend *DexAPIBackend, chainConfig *params.ChainConfig return g } -func (d *DexconGovernance) getRoundHeight(ctx context.Context, round uint64) (uint64, error) { +func (d *DexconGovernance) GetRoundHeight(ctx context.Context, round uint64) (uint64, error) { state, _, err := d.b.StateAndHeaderByNumber(ctx, rpc.LatestBlockNumber) if state == nil || err != nil { return 0, err @@ -72,7 +72,7 @@ func (d *DexconGovernance) getGovStateAtRound(round uint64) *vm.GovernanceStateH round -= dexCore.ConfigRoundShift } ctx := context.Background() - blockHeight, err := d.getRoundHeight(ctx, round) + blockHeight, err := d.GetRoundHeight(ctx, round) if err != nil { return nil } -- cgit v1.2.3