Skip to content

Commit 96234cf

Browse files
authored
remove BlockDAO() from blockchain interface (iotexproject#1786)
* remove BlockDAO() from blockchain interface
1 parent bb27133 commit 96234cf

File tree

17 files changed

+177
-147
lines changed

17 files changed

+177
-147
lines changed

action/protocol/execution/protocol_test.go

+13-11
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ func NewSmartContractTest(t *testing.T, file string) {
206206
func runExecution(
207207
bc blockchain.Blockchain,
208208
sf factory.Factory,
209+
dao blockdao.BlockDAO,
209210
ecfg *ExecutionConfig,
210211
contractAddr string,
211212
) ([]byte, *action.Receipt, error) {
@@ -235,7 +236,7 @@ func runExecution(
235236
return nil, nil, err
236237
}
237238

238-
return sf.SimulateExecution(ctx, addr, exec, bc.BlockDAO().GetBlockHash)
239+
return sf.SimulateExecution(ctx, addr, exec, dao.GetBlockHash)
239240
}
240241
builder := &action.EnvelopeBuilder{}
241242
elp := builder.SetAction(exec).
@@ -267,15 +268,15 @@ func runExecution(
267268
t2 := time.Now()
268269
fmt.Println("exec time:", t1.Sub(t))
269270
fmt.Println("commit time:", t2.Sub(t1))
270-
receipt, err := bc.BlockDAO().GetReceiptByActionHash(exec.Hash(), blk.Height())
271+
receipt, err := dao.GetReceiptByActionHash(exec.Hash(), blk.Height())
271272

272273
return nil, receipt, err
273274
}
274275

275276
func (sct *SmartContractTest) prepareBlockchain(
276277
ctx context.Context,
277278
r *require.Assertions,
278-
) (blockchain.Blockchain, factory.Factory) {
279+
) (blockchain.Blockchain, factory.Factory, blockdao.BlockDAO) {
279280
cfg := config.Default
280281
defer func() {
281282
delete(cfg.Plugins, config.GatewayPlugin)
@@ -314,23 +315,24 @@ func (sct *SmartContractTest) prepareBlockchain(
314315

315316
r.NotNil(bc)
316317
bc.Validator().AddActionEnvelopeValidators(protocol.NewGenericValidator(sf.AccountState))
317-
execution := NewProtocol(bc.BlockDAO().GetBlockHash)
318+
execution := NewProtocol(dao.GetBlockHash)
318319
r.NoError(execution.Register(registry))
319320
r.NoError(bc.Start(ctx))
320321

321-
return bc, sf
322+
return bc, sf, dao
322323
}
323324

324325
func (sct *SmartContractTest) deployContracts(
325326
bc blockchain.Blockchain,
326327
sf factory.Factory,
328+
dao blockdao.BlockDAO,
327329
r *require.Assertions,
328330
) (contractAddresses []string) {
329331
for i, contract := range sct.Deployments {
330332
if contract.AppendContractAddress {
331333
contract.ContractAddressToAppend = contractAddresses[contract.ContractIndexToAppend]
332334
}
333-
_, receipt, err := runExecution(bc, sf, &contract, action.EmptyAddress)
335+
_, receipt, err := runExecution(bc, sf, dao, &contract, action.EmptyAddress)
334336
r.NoError(err)
335337
r.NotNil(receipt)
336338
if sct.InitGenesis.IsBering {
@@ -371,13 +373,13 @@ func (sct *SmartContractTest) deployContracts(
371373
func (sct *SmartContractTest) run(r *require.Assertions) {
372374
// prepare blockchain
373375
ctx := context.Background()
374-
bc, sf := sct.prepareBlockchain(ctx, r)
376+
bc, sf, dao := sct.prepareBlockchain(ctx, r)
375377
defer func() {
376378
r.NoError(bc.Stop(ctx))
377379
}()
378380

379381
// deploy smart contract
380-
contractAddresses := sct.deployContracts(bc, sf, r)
382+
contractAddresses := sct.deployContracts(bc, sf, dao, r)
381383
if len(contractAddresses) == 0 {
382384
return
383385
}
@@ -388,7 +390,7 @@ func (sct *SmartContractTest) run(r *require.Assertions) {
388390
if exec.AppendContractAddress {
389391
exec.ContractAddressToAppend = contractAddresses[exec.ContractIndexToAppend]
390392
}
391-
retval, receipt, err := runExecution(bc, sf, &exec, contractAddr)
393+
retval, receipt, err := runExecution(bc, sf, dao, &exec, contractAddr)
392394
r.NoError(err)
393395
r.NotNil(receipt)
394396

@@ -483,7 +485,7 @@ func TestProtocol_Handle(t *testing.T) {
483485
sf,
484486
blockchain.RegistryOption(registry),
485487
)
486-
exeProtocol := NewProtocol(bc.BlockDAO().GetBlockHash)
488+
exeProtocol := NewProtocol(dao.GetBlockHash)
487489
require.NoError(exeProtocol.Register(registry))
488490
bc.Validator().AddActionEnvelopeValidators(protocol.NewGenericValidator(sf.AccountState))
489491
require.NoError(bc.Start(ctx))
@@ -543,7 +545,7 @@ func TestProtocol_Handle(t *testing.T) {
543545

544546
actIndex, err := indexer.GetActionIndex(eHash[:])
545547
require.NoError(err)
546-
blkHash, err := bc.BlockDAO().GetBlockHash(actIndex.BlockHeight())
548+
blkHash, err := dao.GetBlockHash(actIndex.BlockHeight())
547549
require.NoError(err)
548550
require.Equal(blk.HashBlock(), blkHash)
549551

actpool/actpool_test.go

+26-24
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ import (
2323
"github.com/iotexproject/iotex-core/action/protocol/execution"
2424
"github.com/iotexproject/iotex-core/action/protocol/rewarding"
2525
"github.com/iotexproject/iotex-core/blockchain"
26+
"github.com/iotexproject/iotex-core/blockchain/blockdao"
2627
"github.com/iotexproject/iotex-core/config"
28+
"github.com/iotexproject/iotex-core/db"
2729
"github.com/iotexproject/iotex-core/state/factory"
2830
"github.com/iotexproject/iotex-core/test/identityset"
2931
"github.com/iotexproject/iotex-core/testutil"
@@ -167,11 +169,11 @@ func TestActPool_AddActs(t *testing.T) {
167169
cfg.Genesis.InitBalanceMap[addr2] = "10"
168170
sf, err := factory.NewFactory(cfg, factory.InMemTrieOption())
169171
require.NoError(err)
172+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfg.Chain.CompressBlock, cfg.DB)
170173
bc := blockchain.NewBlockchain(
171174
cfg,
172-
nil,
175+
dao,
173176
sf,
174-
blockchain.InMemDaoOption(),
175177
blockchain.RegistryOption(registry),
176178
)
177179
require.NoError(bc.Start(context.Background()))
@@ -200,7 +202,7 @@ func TestActPool_AddActs(t *testing.T) {
200202
tsf8, err := testutil.SignedTransfer(addr2, priKey2, uint64(4), big.NewInt(5), []byte{}, uint64(100000), big.NewInt(0))
201203
require.NoError(err)
202204

203-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
205+
ep := execution.NewProtocol(dao.GetBlockHash)
204206
require.NoError(ep.Register(registry))
205207

206208
ctx := protocol.WithBlockchainCtx(context.Background(), protocol.BlockchainCtx{Registry: registry})
@@ -336,11 +338,11 @@ func TestActPool_PickActs(t *testing.T) {
336338
cfgDefault.Genesis.InitBalanceMap[addr2] = "10"
337339
sf, err := factory.NewFactory(cfgDefault, factory.InMemTrieOption())
338340
require.NoError(err)
341+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfgDefault.Chain.CompressBlock, cfgDefault.DB)
339342
bc := blockchain.NewBlockchain(
340343
cfgDefault,
341-
nil,
344+
dao,
342345
sf,
343-
blockchain.InMemDaoOption(),
344346
blockchain.RegistryOption(registry),
345347
)
346348
require.NoError(bc.Start(context.Background()))
@@ -372,7 +374,7 @@ func TestActPool_PickActs(t *testing.T) {
372374
tsf10, err := testutil.SignedTransfer(addr2, priKey2, uint64(5), big.NewInt(5), []byte{}, uint64(100000), big.NewInt(0))
373375
require.NoError(err)
374376

375-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
377+
ep := execution.NewProtocol(dao.GetBlockHash)
376378
require.NoError(ep.Register(registry))
377379

378380
ctx := protocol.WithBlockchainCtx(context.Background(), protocol.BlockchainCtx{Registry: registry})
@@ -415,16 +417,16 @@ func TestActPool_removeConfirmedActs(t *testing.T) {
415417
cfg.Genesis.InitBalanceMap[addr1] = "100"
416418
sf, err := factory.NewFactory(cfg, factory.InMemTrieOption())
417419
require.NoError(err)
420+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfg.Chain.CompressBlock, cfg.DB)
418421
bc := blockchain.NewBlockchain(
419422
cfg,
420-
nil,
423+
dao,
421424
sf,
422-
blockchain.InMemDaoOption(),
423425
blockchain.RegistryOption(registry),
424426
)
425427
acc := account.NewProtocol(rewarding.DepositGas)
426428
require.NoError(acc.Register(registry))
427-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
429+
ep := execution.NewProtocol(dao.GetBlockHash)
428430
require.NoError(ep.Register(registry))
429431
require.NoError(bc.Start(context.Background()))
430432
// Create actpool
@@ -483,16 +485,16 @@ func TestActPool_Reset(t *testing.T) {
483485
cfg.Genesis.InitBalanceMap[addr5] = "20"
484486
sf, err := factory.NewFactory(cfg, factory.InMemTrieOption())
485487
require.NoError(err)
488+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfg.Chain.CompressBlock, cfg.DB)
486489
bc := blockchain.NewBlockchain(
487490
cfg,
488-
nil,
491+
dao,
489492
sf,
490-
blockchain.InMemDaoOption(),
491493
blockchain.RegistryOption(registry),
492494
)
493495
acc := account.NewProtocol(rewarding.DepositGas)
494496
require.NoError(acc.Register(registry))
495-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
497+
ep := execution.NewProtocol(dao.GetBlockHash)
496498
require.NoError(ep.Register(registry))
497499
require.NoError(bc.Start(context.Background()))
498500

@@ -845,16 +847,16 @@ func TestActPool_removeInvalidActs(t *testing.T) {
845847
registry := protocol.NewRegistry()
846848
sf, err := factory.NewFactory(cfg, factory.InMemTrieOption())
847849
require.NoError(err)
850+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfg.Chain.CompressBlock, cfg.DB)
848851
bc := blockchain.NewBlockchain(
849852
cfg,
850-
nil,
853+
dao,
851854
sf,
852-
blockchain.InMemDaoOption(),
853855
blockchain.RegistryOption(registry),
854856
)
855857
acc := account.NewProtocol(rewarding.DepositGas)
856858
require.NoError(acc.Register(registry))
857-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
859+
ep := execution.NewProtocol(dao.GetBlockHash)
858860
require.NoError(ep.Register(registry))
859861
require.NoError(bc.Start(context.Background()))
860862
// Create actpool
@@ -898,16 +900,16 @@ func TestActPool_GetPendingNonce(t *testing.T) {
898900
registry := protocol.NewRegistry()
899901
sf, err := factory.NewFactory(cfg, factory.InMemTrieOption())
900902
require.NoError(err)
903+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfg.Chain.CompressBlock, cfg.DB)
901904
bc := blockchain.NewBlockchain(
902905
cfg,
903-
nil,
906+
dao,
904907
sf,
905-
blockchain.InMemDaoOption(),
906908
blockchain.RegistryOption(registry),
907909
)
908910
acc := account.NewProtocol(rewarding.DepositGas)
909911
require.NoError(acc.Register(registry))
910-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
912+
ep := execution.NewProtocol(dao.GetBlockHash)
911913
require.NoError(ep.Register(registry))
912914
require.NoError(bc.Start(context.Background()))
913915
// Create actpool
@@ -947,16 +949,16 @@ func TestActPool_GetUnconfirmedActs(t *testing.T) {
947949
registry := protocol.NewRegistry()
948950
sf, err := factory.NewFactory(cfg, factory.InMemTrieOption())
949951
require.NoError(err)
952+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfg.Chain.CompressBlock, cfg.DB)
950953
bc := blockchain.NewBlockchain(
951954
cfg,
952-
nil,
955+
dao,
953956
sf,
954-
blockchain.InMemDaoOption(),
955957
blockchain.RegistryOption(registry),
956958
)
957959
acc := account.NewProtocol(rewarding.DepositGas)
958960
require.NoError(acc.Register(registry))
959-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
961+
ep := execution.NewProtocol(dao.GetBlockHash)
960962
require.NoError(ep.Register(registry))
961963
require.NoError(bc.Start(context.Background()))
962964
// Create actpool
@@ -1053,16 +1055,16 @@ func TestActPool_GetSize(t *testing.T) {
10531055
re := protocol.NewRegistry()
10541056
sf, err := factory.NewFactory(cfg, factory.InMemTrieOption())
10551057
require.NoError(err)
1058+
dao := blockdao.NewBlockDAO(db.NewMemKVStore(), nil, cfg.Chain.CompressBlock, cfg.DB)
10561059
bc := blockchain.NewBlockchain(
10571060
cfg,
1058-
nil,
1061+
dao,
10591062
sf,
1060-
blockchain.InMemDaoOption(),
10611063
blockchain.RegistryOption(re),
10621064
)
10631065
acc := account.NewProtocol(rewarding.DepositGas)
10641066
require.NoError(acc.Register(re))
1065-
ep := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
1067+
ep := execution.NewProtocol(dao.GetBlockHash)
10661068
require.NoError(ep.Register(re))
10671069
require.NoError(bc.Start(context.Background()))
10681070
// Create actpool

api/api.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func NewServer(
142142
cfg: cfg,
143143
registry: registry,
144144
chainListener: NewChainListener(),
145-
gs: gasstation.NewGasStation(chain, sf, cfg.API),
145+
gs: gasstation.NewGasStation(chain, sf.SimulateExecution, dao, cfg.API),
146146
electionCommittee: apiCfg.electionCommittee,
147147
}
148148
if _, ok := cfg.Plugins[config.GatewayPlugin]; ok {

api/api_test.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -779,7 +779,7 @@ func TestServer_GetAction(t *testing.T) {
779779
require.Equal(test.nonce, act.Action.GetCore().GetNonce())
780780
require.Equal(test.senderPubKey, hex.EncodeToString(act.Action.SenderPubKey))
781781
if !test.checkPending {
782-
blk, err := svr.bc.BlockDAO().GetBlockByHeight(test.blkNumber)
782+
blk, err := svr.dao.GetBlockByHeight(test.blkNumber)
783783
require.NoError(err)
784784
timeStamp := blk.ConvertToBlockHeaderPb().GetCore().GetTimestamp()
785785
blkHash := blk.HashBlock()
@@ -1774,7 +1774,7 @@ func setupChain(cfg config.Config) (blockchain.Blockchain, blockdao.BlockDAO, bl
17741774
}()
17751775

17761776
acc := account.NewProtocol(rewarding.DepositGas)
1777-
evm := execution.NewProtocol(bc.BlockDAO().GetBlockHash)
1777+
evm := execution.NewProtocol(dao.GetBlockHash)
17781778
p := poll.NewLifeLongDelegatesProtocol(cfg.Genesis.Delegates)
17791779
rolldposProtocol := rolldpos.NewProtocol(
17801780
genesis.Default.NumCandidateDelegates,
@@ -1876,7 +1876,7 @@ func createServer(cfg config.Config, needActPool bool) (*Server, error) {
18761876
indexer: indexer,
18771877
ap: ap,
18781878
cfg: cfg,
1879-
gs: gasstation.NewGasStation(bc, sf, cfg.API),
1879+
gs: gasstation.NewGasStation(bc, sf.SimulateExecution, dao, cfg.API),
18801880
registry: registry,
18811881
hasActionIndex: true,
18821882
}

blockchain/blockchain.go

-6
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@ type Blockchain interface {
6969
BlockFooterByHeight(height uint64) (*block.Footer, error)
7070
// BlockFooterByHash return block footer by hash
7171
BlockFooterByHash(h hash.Hash256) (*block.Footer, error)
72-
// BlockDAO returns the block dao
73-
BlockDAO() blockdao.BlockDAO
7472
// ChainID returns the chain ID
7573
ChainID() uint32
7674
// ChainAddress returns chain address on parent chain, the root chain return empty.
@@ -269,10 +267,6 @@ func NewBlockchain(cfg config.Config, dao blockdao.BlockDAO, sf factory.Factory,
269267
return chain
270268
}
271269

272-
func (bc *blockchain) BlockDAO() blockdao.BlockDAO {
273-
return bc.dao
274-
}
275-
276270
func (bc *blockchain) ChainID() uint32 {
277271
return atomic.LoadUint32(&bc.config.Chain.ID)
278272
}

0 commit comments

Comments
 (0)